# 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 などの分散データストアに多大な影響を与えた。 ## 関連 - ソース: [[@2007__SOSP__Dynamo - Amazon's Highly Available Key-value Store]] - エンティティ: [[Amazon]] / [[Werner Vogels]] / [[Giuseppe DeCandia]] - 概念: [[結果整合性]] / [[一貫性ハッシュ法]] / [[インターネットスケールサービス設計]]