DATABASE, python list에 접근하기, git stash
python에서 for이나 while문에서 list에 접근하기
python에서 list에 for 문을 사용할 때, javascript처럼 Array의 각 요소별로 접근하는 방법이 있다.
python에서 for를 사용할 경우
for i in range(0, n):
이렇게 하면 javascript의
for (i=0; i<=n; i++) {
}
와 같다.
while을 사용하는 경우에는
number = 0
while number <= n:
~ logic ~
number += 1
처럼 만들면 된다.
git stash TIP
가끔 github를 통해 프로젝트를 진행하다보면, master branch로 바꿔야하는 상황이 생겼을 때, 수정사항이 있어서 branch checkout이 안되는 경우가 있다.
이때 commit을 하지않고 수정사항을 임시 저장하는 방법이 있는데, 그게 stash이다.
git stash
를 하면 임시로 수정사항을 저장해 놓을 수가 있어서 marter branch에서 merge도 가능하다.
임시 저장된 목록을 보고싶다면 git stash list
를 입력,
임시 저장된 수정사항을 불러 올때는 git stash pop
을 입력하면 된다.
DATABASE 정리
- 영구보존 : 디스크에 ,파일에 저장
- 데이터베이스는 파일과는 다르게 검색 및 다양한 관리기능이 가능하기 때문에 데이터베이스에 저장한다.
관계형 데이터베이스
ex) 왜 트윗은 유저에 넣지않을까?
트윗은 여러개기때문에 유저 테이블에 들어가면 한개밖에안됨
포린키로 연결함
-
왜 굳이 이런식으로 연결 하는가?
-
데이터 저장공간
-
데이터 완전성
-
데이터 소스가 정해져있고 거기에 따른 id로만 하기때문에 잘못 입력될 경우가 없다.
-
데이터 변할때 편리하게
-
One to One
-
One to Many
-
Many to Many ex) user1이 다양한 옷에 heart를 표시할 수 있다.
다양한 옷을 다양한 user들이 heart를 표시할 수 있다.
중요한 속성
-
ACID
- 원자성, 일관성, 고립성, 지속성
-
트랜잭션
- 과정중 하나라도 실패하면 롤백해서 복구시키는 것, 모두다 성공해야 저장
- ex)오늘 뭐입지 프로젝트에서 유저 설정을 다 지우고 덮어씌우는 형식
NoSQL 데이터베이스
- 다른 말로 문서 데이터베이스라고도 말함 column 자체가 없음, 아무거나 저장 가능.
- 일반적으로 트랜잭션 서포트가 안됨.
내 시스템에서 어느 것이 더 적당하냐의 차이일 뿐이지 뭐가 더 좋고 나쁨은 없다
NoSQL DB 팁
-
천명 유저만 가용할 수 있는 DB에 만명이 더들어와서 포용할수가없다 -> DB확장 scale out!
-
관계형 DB의 경우 1000개 쓰다 만명 받는 경우, NoSQL처럼 10개를 더 붙인다고 해서 동일한 효과를 나타내지 못한다.
- 이유는? 테이블 구조는 똑같으나 데이터는 모두 나누어서 들어가있기 때문에, 아무리 서버가 많아도 트랜잭션이 걸려있기 때문이다.
- 그럼 어떻게 scale 을 키울까? -> scale up을 해준다 ->서버를 멈출 수 없기 때문에 같은걸 만들어서 그걸로 임시로 돌리고 원본을 키우고 다시 교체하는 형식, 그 사이 간극으로 데이터가 생기면 그것도 매꿔줘야한다.
- 돌아가는 cpu에 확장하면 감전걸림
- AWS사용해서 다른기능으로 쓰다가 필요할때 더해주고 더해주고하는 방식도 존재한다.
SQL 기초
- CONSTRAINT란? 넣는 값이 아무값이나 넣는것이아닌, 포린키로 걸어주는 해당 id값 외에는 들어가지못하게 제한하는 것