概要
時々どっちがどっちか混乱してしまうので、メモを残す。
シャーディングとパーティショニングの違い
| 項目 | シャーディング | パーティショニング |
|---|---|---|
| データの分割方法 | 水平方向(≒水平パーティショニング) ex. 行 | 垂直方向 ex. テーブル、データベース、カラム |
| メリット | パフォーマンスの向上、スケーラビリティの向上 | パフォーマンスの向上、データの検索性向上 |
| デメリット | データや管理の複雑化 | データの分離・整合性の問題 |
| 適したアプリケーション | データベースのサイズが大きく、パフォーマンスが低下しているアプリケーション | データベースのアクセスパターンが特定のカラムに偏っているアプリケーション |
使い分け
パーティショニングとシャーディングは、解決する課題が異なる。
- パーティショニングは、単一のデータベース内でデータを分割する手法である。水平パーティショニングは行を分割する。垂直パーティショニングは列を分割する。運用が複雑になりにくいため、まず検討したい。
- シャーディングは、分割したデータ(シャード)を複数のサーバーへ分散する手法である。イメージとしては、水平パーティショニングをサーバー間へ広げた構成に近い。単一サーバーで容量や書き込み性能が限界に達したら選ぶ。
判断の目安は次のとおり。
- 単一サーバーで容量と性能をまかなえるなら、パーティショニングが適する。
- データ量や書き込み負荷が単一サーバーの限界に達したら、シャーディングを検討する。
- シャーディングはルーティングや再分散、シャードをまたぐクエリなど運用コストが増えるため、必要になるまで選ばない。
関連記事
参考
- Database sharding vs partitioning
shardingとpartitioningの違いは?【分散データベース】