[DB] 샤딩
·
DATABASE
정의 한 테이블의 row들을 여러 개의 서로 다른 테이블, 즉 파티션으로 분리하는 것 키를 분리하여 나눠서 저장함 수평분할(Horizontal Partitioning)이라고 볼 수 있음 (예시. 회원테이블을 성별로 나눔 남성테이블, 여성테이블) 샤딩하게 되면 기존에 하나로 구성될 스키마를 다수의 복제본으로 구성하고 각각의 샤드에 어떤 데이터가 저장될지를 샤드키를 기준으로 분리함 구현 주로 Application Level에서 이루어짐 (어떤 Shards에 읽기, 쓰기를 전송할지 정의) DBMS에 따라 샤딩이 내장되어 있는 경우, Database Level에서도 가능함 장단점 장점 수평적 확장(Scaling out)이 가능함 스캔 범위가 줄어서 쿼리 속도 향상됨 단점 운영적인 복잡도가 커짐, 잘못 사용할 경..
[DB] 트랜잭션
·
DATABASE
정의 데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위, 한꺼번에 모두 수행되어야하는 일련의 연산 ACID라 하는 원자성, 일관성, 격리성, 지속성을 보장해야함 ACID 원자성(Atomicity) : 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공 or 모두 실패 해야함 일관성(Consistency) : 모든 트랙잭션은 일관성 있는 데이터베이스 상태를 유지해야함 (무결성 제약조건을 항상 만족해야함) 격리성(Isolation) : 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리 (동시에 같은 데이터를 수정하지 못하도록 함, 격리성은 동시성과 관련된 성능 이슈로 인해 격리수준을 선택할 수 있음) 지속성(Durability) : 트랜잭션을 성..