Skip to content
> giho's blog
Go back

~/posts/dynamo-paper-notes

Dynamo 논문 읽고 정리 — 항상 쓸 수 있는 키-값 저장소

· 2 min read
-- contents

DynamoDB의 뿌리인 “Dynamo: Amazon’s Highly Available Key-value Store”(2007)를 읽고 핵심만 정리했다. 이후의 수많은 분산 저장소(Cassandra, Riak 등)가 여기서 아이디어를 빌려왔다.

설계 철학: 가용성 우선

Dynamo는 “장바구니는 항상 담겨야 한다” 는 요구에서 출발한다. CAP에서 AP 를 택했다 — 네트워크 분할 상황에서도 항상 쓰기 가능(always writeable), 대신 일관성은 최종 일관성(eventual consistency) 으로 양보한다. 충돌은 나중에 해소한다.

일관된 해싱 + 가상 노드

데이터를 어느 노드에 둘지는 consistent hashing(링)으로 정한다.

복제와 preference list

각 키는 링에서 시계방향 N개 노드에 복제된다. 그 노드 목록이 preference list(장애 노드는 건너뛰어 물리적으로 서로 다른 노드로).

정족수 N / R / W

충돌: 벡터 클록

동시 쓰기로 버전이 갈리면 벡터 클록(vector clock) 으로 인과관계를 추적한다.

장애 대응

정리

DynamoDB를 쓸 때 왜 그런 모델(파티션 키, 최종 일관 읽기 옵션 등)인지 이해하는 데 이 논문이 바탕이 된다.



-- related


Previous Post
NoSQL Workbench로 DynamoDB 데이터 모델링하기
Next Post
개발자를 위한 스키마 탐색 UX — ERD를 넘어서
giho=#searchesc