# Dynamo
Dynamo は [[Amazon]] が内部サービス向けに開発した高可用分散キーバリューストアである。[[@2007__SOSP__Dynamo - Amazon's Highly Available Key-value Store]](SOSP 2007)で設計と実装が公開された。
## 概要
Dynamo は `get(key)` と `put(key, context, object)` のみを公開するシンプルなインタフェースを持ち、「常に書き込み可能」(always writeable)を設計原則とする。可用性を最優先し、[[結果整合性]]を採用することで、ネットワーク分断やノード障害の最中でも書き込みを拒否しない。
主要技術:
- [[一貫性ハッシュ法]]と仮想ノードによるパーティショニング
- ベクタクロックによるバージョン管理
- スロッピークォーラム(sloppy quorum)とヒンテッドハンドオフによる一時障害処理
- マークル木(Merkle trees)によるレプリカ同期
- ゴシッププロトコルによるメンバーシップ管理
パラメータ `(N, R, W)` により、サービスオーナーが整合性・可用性・耐久性のトレードオフを個別に制御できる。標準構成は `(3, 2, 2)` である。
## 本番実績
Amazon のショッピングカート、セッション管理、ベストセラーリスト、商品カタログなどの本番サービスで運用された。成功応答率 99.9995%、データ損失イベントゼロの実績を報告している。後の Apache Cassandra、Amazon DynamoDB、Riak などの分散データストアに多大な影響を与えた。
## リーダーレスレプリケーションの原点
[[@2026__OReilly__Designing Data-Intensive Applications 2E - Chapter 6 Replication]]は、Dynamoを[[リーダーレスレプリケーション]]という設計思想を2007年に再興したシステムとして位置づける。初期の複製データシステムの一部はリーダーレスだったが、リレーショナルデータベースの時代に一度廃れ、AmazonがDynamoで採用したことで再び注目された。この系統は今日 *Dynamo-style* と呼ばれ、Riak・Apache Cassandra・ScyllaDBがその設計に着想を得たOSS実装である。なお同名の Amazon DynamoDB は Dynamo の思想的後継だが、内部実装はMulti-Paxos合意アルゴリズムに基づく単一リーダーレプリケーションであり、アーキテクチャは全く異なる点に注意が必要。(Source: [[@2026__OReilly__Designing Data-Intensive Applications 2E - Chapter 6 Replication]] "Leaderless Replication")
## 2011年時点での実務者による参照(ウェブオペレーション第15章)
『ウェブオペレーション』第15章(2011年、[[Eric Florenzano]])は、Cassandra・Riak双方の設計思想の由来として Dynamo 論文を明示的に引用する。訳注として、Amazon がデータストレージ要件に合わせて作ったデータストアの論文であるという説明とともに、Werner Vogels のブログ記事(All Things Distributed, "Amazon's Dynamo", 2007年10月)へのURLが付されている。同章は Dynamo 由来の技術として、コンシステントハッシュ(consistent hashing)でデータの保存先を決定すること、読み取り時にデータの不一致を修正する read repair、ダウンしたノードが可用性低下の原因にならないことを保証する hinted handoff の3つを名指しで挙げ、この3つの用語([[一貫性ハッシュ法]]・read repair・hinted handoff)は DDIA(第6章)がリーダーレスレプリケーションの復旧機構として体系化する用語とほぼ同一である。DDIA(2026年)による理論的整理より15年早い2011年の実務書が、既にこの3語をDynamo論文由来の術語として正確に使っていたことになる。(Source: [[@2011__OReillyJapan__ウェブオペレーション - Chapter 15 非リレーショナルデータベース]] §15.2.1)
## 関連
- ソース: [[@2007__SOSP__Dynamo - Amazon's Highly Available Key-value Store]] / [[@2026__OReilly__Designing Data-Intensive Applications 2E - Chapter 6 Replication]] / [[@2011__OReillyJapan__ウェブオペレーション - Chapter 15 非リレーショナルデータベース]]
- エンティティ: [[Amazon]] / [[Werner Vogels]] / [[Giuseppe DeCandia]] / [[Riak]] / [[Apache Cassandra]]
- 概念: [[結果整合性]] / [[一貫性ハッシュ法]] / [[インターネットスケールサービス設計]] / [[リーダーレスレプリケーション]] / [[クォーラムベースレプリケーション]]
## 出典
- [[@2007__SOSP__Dynamo - Amazon's Highly Available Key-value Store]](Dynamoの設計・実装・本番実績)
- [[@2026__OReilly__Designing Data-Intensive Applications 2E - Chapter 6 Replication]](リーダーレスレプリケーションの起源としての位置づけ・DynamoDBとのアーキテクチャの違い)
- [[@2011__OReillyJapan__ウェブオペレーション - Chapter 15 非リレーショナルデータベース]] §15.2.1(2011年時点のCassandra/Riakの設計思想における参照元としての位置づけ)