分散データI(レプリケーション)
10 問同じデータを複数ノードに複製する方式には、単一リーダー・複数リーダー・リーダーレスがあり、それぞれ耐久性・可用性・整合性の取り方が違います。同期と非同期のトレードオフ、複製ラグの下で何が保証されるか、フェイルオーバー時のデータ損失、そしてquorumやチェーン複製の設計判断を、公式ドキュメントと原論文に沿って理解します。
分散データII(パーティショニング)
10 問1台のノードに収まらない容量やスループットを、データをキーで分割して複数ノードに散らす「パーティショニング(シャーディング)」の設計を扱います。範囲分割とハッシュ分割の使い分け、ホットスポットの緩和、コンシステントハッシュによる再配置の最小化、そしてセカンダリインデックスの分割方式まで、なぜその設計を選ぶのかというトレードオフを一次ソースから理解します。
分散データIII(分散トランザクションと整合回復)
10 問複数のノードやサービスにまたがる更新を、2PCのように全員をロックで待たせずにどう整合させるかを学びます。Saga(ローカルトランザクションと補償)・Outbox・TCC・重複排除といった実務パターンが、それぞれ何を諦めて何を守るのかを、原子性・分離性・二重書き込みという具体的な観点で理解します。
分散データIV(競合解決とCRDT)
10 問複数のレプリカが調整なしに同じデータを並行更新すると、単純な「後勝ち」では負けた更新が黙って消えてしまいます。並行をどう検出し、兄弟として残してアプリで解決するか、削除の墓標(tombstone)がなぜ要るのか、そして可換・結合・冪等という数学的性質で自動収束するCRDTが何を自動化でき何は守れないのかを、一次情報に沿って理解します。
分散データV(バッチとストリームによる導出データ)
10 問索引・キャッシュ・集計といった「導出データ」は、記録のシステム(真実の源)から作り直せることが強みです。バッチ処理とストリーム処理がどう入力を扱い、イベントログを真実の源にする発想(イベントソーシング・CDC・カッパ)でどう再構築するのか、そして遅延データや厳密に1回の効果をどう扱うのかを、仕組みから理解します。
分散データVI(分散ストレージエンジンの内部)
10 問分散DBや大規模書き込み向けDBの中身を扱います。LSMツリーの削除(トゥームストーン)と読み取り経路、コンパクションの3つの増幅トレードオフ、ブルームフィルタ、WALのグループコミット、スナップショット分離が許すライトスキュー、分散環境でのID採番(Snowflake/ULID)、SpannerのTrueTimeによる外部一貫性まで、エンジン内部の設計判断をなぜそうするかで理解します。単一ノードのB木索引や、LSM・WAL・MVCCの入り口(既出のデータベースIV)とは重ならないよう、分散・大規模書き込み特有の深い仕組みに絞っています。