IT用語: シャーディングとは|大規模DBを水平分割してスケールアウトする手法
ユーザーIDや地域などのキーでデータを複数DBに分割するシャーディングの仕組みとデメリットを解説。
シャーディングとは
シャーディング(Sharding)は、1台のデータベースに収まりきらない大規模なデータを、**シャードキー(分割の基準となる値)**に基づいて複数のDBサーバーに水平分割する手法です。Twitterの「ユーザーIDの末尾数字でDBを振り分ける」や「地域別に異なるDBを使う」などが典型例です。
シャーディングと垂直分割の違い
| 手法 | 内容 | 限界 |
|---|---|---|
| 垂直スケールアップ | 1台のサーバーを高性能化 | ハードウェアの上限がある |
| 垂直分割(テーブル分割) | 列を複数テーブルに分割 | 1台のサーバーの上限がある |
| 水平分割(シャーディング) | 行を複数サーバーに分割 | 理論上無制限にスケール |
シャーディングのデメリット
- クロスシャードクエリが複雑: 異なるシャードのデータをJOINするには、アプリ側で集約が必要
- 再シャーディングのコスト: データが増えてシャードを追加する際、データの再分散が必要
- トランザクション管理: 複数シャードをまたぐ分散トランザクションは非常に複雑
実践的なアドバイス
シャーディングは最終手段です。まずはリードレプリカ・キャッシュ・インデックス最適化・垂直スケールアップで対処し、それでも限界が来たときに検討します。MongoDBやVitessはシャーディングを抽象化して提供しています。
関連する用語 (データベース)
全23件を見るNoSQL
表形式(リレーショナル)ではない、柔軟なデータ構造を持つデータベースの総称。大量データの高速処理に強い。
IT用語: データベースレプリケーションとは|読み取り分散と冗長化の仕組み
プライマリDBの変更をレプリカに同期するレプリケーションの仕組み・同期/非同期の違い・活用パターンを解説。
SQL
リレーショナルデータベース(RDB)を操作・検索するための標準言語。
IT用語: データベースインデックスとは|検索を高速化するB-Tree構造の仕組み
フルテーブルスキャンを避けてクエリを高速化するDBインデックスの仕組み・種類・設計の注意点を解説。
レプリケーション(データベース複製)
データベースのデータを複数のサーバーに自動的にコピーする仕組み。読み取り負荷の分散・障害時のフェイルオーバー・バックアップ目的で使われる。プライマリ/レプリカ構成が一般的。
シャーディング(データベース水平分割)
データを複数のサーバー(シャード)に水平分割して分散させるDBスケーリング手法。1台のサーバーに収まらない大規模データの処理に使われる。モンゴDBやCassandraが得意とする。