スケーラビリティ
レプリケーション、シャーディング、コネクションプール
データベースのスケーラビリティには垂直スケール(スペックアップ)と水平スケール(ノード追加)があります。 レプリケーション、シャーディング、コネクションプールは水平スケールの基盤技術です。
スケール方法
垂直スケール(Scale Up)
- • CPU、メモリ、ストレージを増強
- • シンプルで管理が容易
- • 物理的・コスト的な限界がある
- • 単一障害点のリスク
水平スケール(Scale Out)
- • ノードを追加して分散
- • 理論上は無限にスケール可能
- • 設計・運用が複雑
- • 高可用性を実現しやすい
技術の使い分け
レプリケーション
目的: 高可用性、読み取り負荷分散、災害対策
適用: 読み取り多、書き込み少ないワークロード
シャーディング
目的: 書き込みスケール、データ量の分散
適用: 大量データ、書き込み多いワークロード
コネクションプール
目的: 接続のオーバーヘッド削減、接続数制限
適用: 多数のアプリケーションサーバー
典型的なアーキテクチャ
大規模Webアプリケーション
App Servers (多数)
↓
Connection Pool (PgBouncer等)
↓
Shard 1
Primary + Replicas
Primary + Replicas
Shard 2
Primary + Replicas
Primary + Replicas
Shard N
Primary + Replicas
Primary + Replicas