メインコンテンツへスキップ
DevOpsMar 28, 2026

Deep EVM #26:シャーディング vs パーティショニング — 大規模テーブルのアーキテクチャ

OS
Open Soft Team

Engineering Team

パーティショニング vs シャーディング:根本的な違い

パーティショニングは同一データベースサーバー上でテーブルを分割。シャーディングは複数のサーバーにデータを分割。

ルール:パーティショニングから始め、単一サーバーで不十分な場合のみシャーディングに移行

コンシステントハッシング

単純なモジュロハッシングはシャード追加/削除時にほぼすべてのキーを再マッピング。コンシステントハッシングで1/Nのキーのみ再分配。

クロスシャードクエリ

すべてのシャードにヒットし、ネットワーク越しにデータ転送し、メモリでマージ。シャードキーの設計でクロスシャードクエリを最小化。

ハイブリッドアプローチ

シャード間はアプリケーションシャーディング、各シャード内はPostgreSQLパーティショニング。最大のスケーラビリティ。

まとめ

PostgreSQLネイティブパーティショニングから始め、単一サーバーの書き込みスループット、データ量、クエリ負荷が不十分な場合のみアプリケーションレベルシャーディングに移行してください。