목록DataBase (4)
Log4KJS
Distributed Transactions at Scale in Amazon DynamoDB 위 논문을 읽고 DynamoDB 의 트랜잭션에 쓰인 timestamp ordering 에 대해 이해한 바를 정리하려고 합니다. 먼저 DynamoDB 의 구현을 보기 전에 일반적인 Timestamp ordering 기법에 대한 이해가 필요합니다. DynamoDB 역시 이를 기본으로 trade-off 를 취한 형태를 사용하고 있기 때문입니다. Timestamp ordering 의 보장?단일 머신의 Timestamp 는 단조 증가하지만, 분산 시스템에서 여러 머신의 시계를 정확하게 동기화하는 것은 불가능합니다. 따라서 Timestamp ordering 은 오퍼레이션에 전체 순서 (total order) 를 부여하..

데이터베이스를 구성할 때 복제 (replication) 은 중요한 요소입니다. 데이터의 복제는 성능, 가용성, 내결함성과 밀접한 연관이 있기 때문입니다. 이 포스팅에서는 데이터를 복제하는 방법과 일관성 (Consistency) 를 연관지어 살펴보도록 하겠습니다. Leaderless replication Dynamo paper Medium Leaderless Replication In Distributed System Introduction medium.com 리더 없는 복제 (Leaderless replication) 에서는 단일 리더가 쓰기를 핸들링하지 않습니다. 대신 모든 레플리카가 동일한 데이터에 대한 쓰기를 수행할 수 있으며 정족수 일관성(Quorum Consistency) 를 이용해 serial..

Undo log Undo log 는 데이터 변경시 변경 이전 데이터를 기록하는 데에 사용되는 로그로, 구체적으로는 다음과 같은 상황에서 이용된다. 1. 운영 중 트랜잭션의 rollback 2. 장애 후 복구 시 트랜잭션의 rollback 3. MVCC (Multi Version Concurrency Control) DBMS 는 수정된 페이지를 바로 디스크에 쓰는 것이 아니라 메모리의 Buffer Pool 에 기록하고 checkpoint 연산이 수행될 때 dirty page 들을 디스크에 기록한다. 이에 관해 두가지 정책이 존재한다. STEAL: 수정된 페이지를 언제든지 디스크에 쓸 수 있는 정책 ~STEAL: 수정된 페이지들을 최소한 트랜잭션 종료 시점(EOT, End of Transaction)까지는 ..

RDB 가 보장하는 ACID 속성 중 트랜잭션 격리(Isolation) 는, 트랜잭션이 다른 트랜잭션에 영향을 받지 않고 수행되어야 함을 의미합니다. '영향을 받지 않는다' 라는 말은 곧 동시성 문제를 일으켜서는 안된다는 뜻입니다. (Dirty read, Unrepeatable read, Phantom read, Lost update, Write skew 등) 데이터베이스는 이를 보장하기 위해 비관적/낙관적 locking, MVCC (Multi Version Concurrency Control) 등을 이용합니다. 하지만 이러한 격리성 보장이 확실할수록 성능 면에서의 불이익은 더 커집니다. 이를 해결하기 위해 여러 격리 수준이 제공되지만 각 격리 수준마다 보장해 주지 못하는 문제점들이 존재합니다. 따라서,..