スケーラビリティ

レプリケーション、シャーディング、コネクションプール

データベースのスケーラビリティには垂直スケール(スペックアップ)と水平スケール(ノード追加)があります。 レプリケーション、シャーディング、コネクションプールは水平スケールの基盤技術です。

スケール方法

垂直スケール(Scale Up)

  • • CPU、メモリ、ストレージを増強
  • • シンプルで管理が容易
  • • 物理的・コスト的な限界がある
  • • 単一障害点のリスク

水平スケール(Scale Out)

  • • ノードを追加して分散
  • • 理論上は無限にスケール可能
  • • 設計・運用が複雑
  • • 高可用性を実現しやすい

技術の使い分け

レプリケーション

目的: 高可用性、読み取り負荷分散、災害対策
適用: 読み取り多、書き込み少ないワークロード

シャーディング

目的: 書き込みスケール、データ量の分散
適用: 大量データ、書き込み多いワークロード

コネクションプール

目的: 接続のオーバーヘッド削減、接続数制限
適用: 多数のアプリケーションサーバー

典型的なアーキテクチャ

大規模Webアプリケーション

App Servers (多数)
Connection Pool (PgBouncer等)
Shard 1
Primary + Replicas
Shard 2
Primary + Replicas
Shard N
Primary + Replicas

詳細トピック