# 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の設計思想における参照元としての位置づけ)