데이터베이스

반응형

데이터베이스

 

RDBMS 

 ACID-ity. 정해진 스키마에 따라야 함. 테이블 간 조인 기능. 확장에 어려움이 있다.(Vertical Scaling. 서버 내 메모리 등 서버 자체의 성능향상만 가능)

 

NoSQL 

  스키마 없음. 관계 없음(No relation). 성능은 끌어올렸지만 일관성 보장 못함. 중복된 데이터를 허용 -> 업데이트 시 전부 업뎃해줘야 함. Horizontal Scaling. 확장성이 뛰어나다. 여러 서버를 추가할 수 있음. key-value / column-based / document

 

Atomicity : All or nothing. 커밋되거나 롤백하거나

Consistency : 항상 일관되게 처리되어야됨. 1+1 = 3이 되면 안됨

Isolation : 주변 영향없이 단독으로 처리되듯이 작동되어야 함.

Durability : 한번 Commit되면 반드시 디스크에 반영되어야 함.

 

삽입/삭제/갱신 이상 -> 정규화로 중복 값 줄이며 해결. -> 성능 저하되면 역정규화 (자주 조회되는 범위, 테이블, 조인 -> 중복해서 만듬)

 

트랜잭션 -> serializable하게 만들어 성능 높임. 병행제어의 필요(locking)

Shared Lock : 읽을 때 Lock을 걸음. write 불가. read는 가능.

Exclusive Lock : 쓸 때 Lock을 걸음. wirte 불가. read 불가

 

의도잠금 : 특정행에 대해서만 락을 걸면 외부에서 접근 시 테이블 내부에 대해 일일히 락을 검사해야하므로 성능이 저하된다.

테이블 전체에 락을 걸어 성능을 높임.

IS : shared lock 걸린 행이 속한 테이블 전체에 대해 Lock. 읽기 가능. 쓰기 불가능

IX : exclusive lock 걸린 행이 속한 테이블 전체에 대해 Lock. 읽기 불가능. 일부행에 대해서 쓰기 가능

docs.microsoft.com/ko-kr/sql/relational-databases/sql-server-transaction-locking-and-row-versioning-guide?view=sql-server-ver15

 

인덱스로 빠른 접근이 가능. 그러나 별도의 용량을 차지하고 insert, delete시 마다 인덱스가 변경됨.

clustered / unclusterd index.  

인덱스 : select에는 좋지만 insert/delete/update엔 안좋음

 

DDL : ALTER, CREATE, DROP, TRUNCATE

DCL : COMMIT, ROLLBACK, GRANT, REVOKE

DML : SELECT, INSERT, DELETE, UPDATE

 

데이터베이스 Sharding(Partitioning) -> 부하를 분산시키기는게 가능해짐

Horizontal 

Vertical : 조인 힘들어짐

Range : 테이블 간 불균형해질 수도.

Hash : resizing시 다시 할당해야 함. consistent hashing으로 부담 최소화.

반응형

'DevOps' 카테고리의 다른 글

인성질문  (0) 2020.11.22
기타  (0) 2020.11.21
컴퓨터 네트워크  (0) 2020.11.20
운영체제(OS) / 컴퓨터구조  (0) 2020.11.20
자료구조, 알고리즘  (0) 2020.11.20