DevOpsMar 28, 2026
Deep EVM #26:シャーディング vs パーティショニング — 大規模テーブルのアーキテクチャ
OS
Open Soft Team
Engineering Team
パーティショニング vs シャーディング:根本的な違い
パーティショニングは同一データベースサーバー上でテーブルを分割。シャーディングは複数のサーバーにデータを分割。
ルール:パーティショニングから始め、単一サーバーで不十分な場合のみシャーディングに移行。
コンシステントハッシング
単純なモジュロハッシングはシャード追加/削除時にほぼすべてのキーを再マッピング。コンシステントハッシングで1/Nのキーのみ再分配。
クロスシャードクエリ
すべてのシャードにヒットし、ネットワーク越しにデータ転送し、メモリでマージ。シャードキーの設計でクロスシャードクエリを最小化。
ハイブリッドアプローチ
シャード間はアプリケーションシャーディング、各シャード内はPostgreSQLパーティショニング。最大のスケーラビリティ。
まとめ
PostgreSQLネイティブパーティショニングから始め、単一サーバーの書き込みスループット、データ量、クエリ負荷が不十分な場合のみアプリケーションレベルシャーディングに移行してください。