分散DB・2相コミット・NoSQL・DWH 重要度:★★出題: AM2・PM1・PM2
レプリケーション・シャーディング(水平分割)とCAP/スケールアウト設計
れぷりけーしょんとしゃーでぃんぐ / Replication & Sharding (Horizontal Scaling)
同一データの複製を複数ノードに保持して参照負荷分散と可用性を高める「レプリケーション」と、データをキー単位で複数ノードに分散配置して書込み・容量をスケールアウトする「シャーディング」。
3行速習ポイント
- 同期レプリケーションは全レプリカへの反映完了を待ってコミットするためデータ喪失がないが応答時間が増加し、非同期レプリケーションはプライマリのみで即コミットするため高速だが直後の参照で古いデータが見えるラグが生じ得る
- シャーディング(水平分割)ではテナントIDや会員番号のハッシュ値・範囲でノードを分けることで、書込み負荷とストレージ容量を線形にスケールアウトできる
- 複数シャードに跨がる結合(クロスシャードJOIN)や分散トランザクションは高コストになるため、シャードキー選定が設計の生命線となる
図解
図レプリケーションとシャーディング(水平分割)の役割分担
レプリケーション(複製)参照スケール・HA
プライマリからリードレプリカへデータを複製し、参照クエリ(SELECT)の負荷分散と冗長化を実現
シャーディング(水平分割)書込みスケール
シャードキーで行単位に複数ノードへ分散格納し、書込みスループットとデータ容量を拡張
概要と本質
クラウドネイティブ時代の大規模データベース設計において不可欠な知識です。午前IIでは同期・非同期レプリケーションや分散DBの透過性(位置に対する透過性、分割に対する透過性、複製に対する透過性)として出題されます。
重要ポイント・コア概念
- 分散データベースの透過性:利用者やAPがデータの物理的な所在(位置)、分割状態(水平・垂直分割)、複製(レプリカ)を意識せずに単一DBのようにアクセスできる性質
- 半同期(準同期)レプリケーション:複数のレプリカのうち少なくとも1台がログを受信した時点でコミットを完了し、可用性と性能のバランスをとる方式
- リードレプリカ活用:更新系(INSERT/UPDATE/DELETE)はプライマリDBへ、大量の参照・集計系(SELECT)はリードレプリカへ振り分けることで負荷を分離する
午後I・午後II記述試験での攻略ポイント
午前IIでは「分散DBの透過性の種類」「水平分割(行単位の分割)と垂直分割(列単位の分割:射影と結合で復元)の違い」「同期レプリケーションと非同期レプリケーションの特徴」を確実に押さえましょう。
午後記述で使える加点キーワード(クリックでコピー)
この用語が出題された過去問を解く(1分演習)
即時アウトプットで定着データベーススペシャリスト 過去問演習で実践力を鍛える