第6章 · データベース応用·v1.0.0·更新 2026/7/10·読了目安 約17分
変更要約: 初版
6.1分散データベースとレプリケーション
この節の要点
複数のサイトにデータを分割配置する水平分割・垂直分割、同じデータを複製するレプリケーション(同期レプリケーション・非同期レプリケーション)、分散透過性を実現する6つの透過性、スケールアウトのためのシャーディング、そして分散システムの限界を示すCAP定理・BASE・結果整合性を学びます。
サービスの成長に伴いデータ量・アクセス量が単一サーバの限界を超えると、データベースを複数のサイトやノードに分散させる設計判断が避けられなくなります。しかし分散は無償ではありません——一貫性・可用性・応答性能のどれを優先し、どれを犠牲にするかというトレードオフが常に付きまといます。データベース設計者・データ基盤担当には、業務要件(金融取引のように一貫性が最優先か、SNSのフィードのように可用性・応答性が優先か)に応じて、分割方式・レプリケーション方式・整合性モデルを的確に選定する能力が求められます。この節では分散DBの仕組みを踏まえた上で、その設計判断の型を身につけます。
6.1.1データの分割:水平分割と垂直分割
- 水平分割(行分割)=1つの表を行単位で複数のサイト・ノードに分割配置する方式。例えば顧客表を「地域」や「顧客ID範囲」で分けて各拠点・ノードに配置する。各断片の表構造(列)は同一のまま行が分かれるため、負荷分散やスケールアウトに向く。
- 垂直分割(列分割)=1つの表を列単位で分割する方式。例えば頻繁にアクセスされる列(氏名・ステータス等)と、めったにアクセスされない列(詳細な履歴・大きなテキスト等)を別の表・別のストレージに分けることで、よく使う列だけを高速なストレージに載せるなどの最適化ができる。分割後も各断片は元の行の主キーで対応付けられる。
- 分割の判断基準は「アクセスパターンの偏り」にある。特定地域・特定顧客層へのアクセスが集中するなら水平分割でその範囲だけを高速化でき、特定列への集中アクセスがあるなら垂直分割でその列だけを最適化できる。両方を組み合わせる混合分割も実務では用いられる。

