分散データベースとは?
分散データベースは、異なる場所にある複数のサーバー(ノード)にデータを分散させます。CAP定理によれば、3つの特性のうち2つしか保証できません:整合性(すべての読み取りが最新の書き込みを参照する)、可用性(すべてのリクエストに応答が返される)、分断耐性(ネットワーク分断時もシステムが動作する)。
なぜ重要なのか?GoogleからNetflixまで、すべての主要なインターネットサービスは分散データベースに依存しています。整合性と可用性のトレードオフを理解することは、数十億のユーザーにサービスを提供する信頼性の高いスケーラブルなシステムを構築するために不可欠です。
📖 詳細分析
例え 1
5 つの都市に支店があり、すべてが同じカタログを共有している図書館システムを想像してください。誰かが支店 A で書籍をチェックアウトすると、他のすべての支店はレコードを更新する必要があります。支店 C への電話回線がダウンした場合 (ネットワークの分断)、支店 C では依然として書籍が利用可能であると表示される可能性があります。これは一貫性の問題です。ブランチ C が再接続するまですべての融資をロックすることも (一貫性を選択)、各ブランチが個別に融資を継続し、後で調整するようにすることもできます (可用性を選択)。
例え 2
さまざまな国の友達とのグループチャットを考えてみましょう。メッセージを送信するときは、全員が同じ順序でメッセージを閲覧できるようにする必要があります。しかし、誰かのインターネットが切断されると、メッセージを見逃したり、古い情報に返信したりする可能性があり、矛盾した会話スレッドが作成されます。分散データベースは、大規模な規模でまさにこの問題に直面しており、ベクトル クロックや CRDT などの技術を使用して、全員が再接続したときの混乱を解決します。
🎯 シミュレーターのヒント
初心者
5 つのノードとレプリケーション ファクター 3 から開始します。これは、各データが 5 つのノードのうち 3 つに保存されることを意味します。
中級者
書き込みの一貫性を ALL と ONE で比較します。ALL は遅いですが、すべてのレプリカに最新のデータが含まれることが保証されます。
上級者
ベクトル クロックを無効にし、パーティション中に同時書き込みをトリガーして、未解決の競合を観察します。
📚 用語集
🏆 主要人物
Eric Brewer (2000)
カリフォルニア大学バークレー校で CAP 定理を策定し、一貫性、可用性、およびパーティション耐性を同時に保証することは不可能であることを証明することで、分散データベース設計を根本的に形成しました。
Leslie Lamport (1998)
Paxos コンセンサス アルゴリズムを作成し、論理クロック、ランポート タイムスタンプ、ビザンチン将軍問題などの概念を使用して分散システム理論を開拓しました。
Diego Ongaro (2014)
スタンフォード大学で Raft コンセンサス アルゴリズムを設計し、etcd や CockroachDB などの実世界のシステムで分散型コンセンサスを理解可能かつ実用的なものにしました
Werner Vogels (2007)
Amazon の Dynamo の設計を主導し、一貫性のあるハッシュ、ベクトル クロック、ずさんなクォーラムを導入し、Cassandra、Riak、そして NoSQL 運動全体に影響を与えました
Jeff Dean & Wilson Hsieh (2012)
Google Spanner は、TrueTime API と GPS/原子時計同期を使用した外部で一貫したトランザクションを備えた初のグローバル分散型データベースとして共同設計されました。
Marc Shapiro (2011)
INRIA で競合のない複製データ型 (CRDT) を開発し、調整のない結果整合性のための数学的基盤を提供
🎓 学習リソース
- Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services [paper]
CAP 定理の正式な証明、分散システムの基本的に不可能な結果を確立 (ACM SIGACT News、2002) - Dynamo: Amazon's Highly Available Key-value Store [paper]
一貫したハッシュ、ベクトル クロック、ずさんなクォーラムを使用した結果的に整合性のある分散ストレージに関する Amazon の影響力のある論文 (SOSP 2007) - Spanner: Google's Globally Distributed Database [paper]
Google の TrueTime ベースのグローバルに一貫したデータベースは、GPS と原子時計の同期を通じて外部一貫性を実現します (OSDI 2012) - In Search of an Understandable Consensus Algorithm (Raft) [paper]
理解しやすいように設計された Raft コンセンサス アルゴリズム。現在は etcd、CockroachDB、TiKV で使用されています (USENIX ATC 2014) - Designing Data-Intensive Applications [article]
Martin Kleppmann による分散システムの基礎、レプリケーション、パーティショニング、一貫性モデルに関する包括的なガイド - Jepsen.io [article]
Kyle Kingsbury による、実際の障害状況下での分散データベースの正当性主張の厳密なテストと分析 - The Raft Consensus Algorithm Visualization [article]
ステップバイステップのリーダー選出とログ複製による Raft コンセンサス アルゴリズムのインタラクティブな視覚化