シャーディング(データベース水平分割)
データを複数のサーバー(シャード)に水平分割して分散させるDBスケーリング手法。1台のサーバーに収まらない大規模データの処理に使われる。モンゴDBやCassandraが得意とする。
シャーディングとは?
シャーディング(Sharding)は、データベースのデータを「シャードキー」に基づいて複数のサーバー(シャード)に水平分割して分散させる手法です。1台のサーバーでは処理しきれない大規模なデータとリクエストを捌くために使われます。
レプリケーションとの違い
| 項目 | レプリケーション | シャーディング |
|---|---|---|
| データの配置 | 同じデータを複数に複製 | 異なるデータを分割して配置 |
| 目的 | 可用性・読み取り分散 | 書き込みスケール・大容量対応 |
| 複雑さ | 低〜中 | 高い |
シャーディングの例
ユーザーID 1〜1000万のデータを3シャードに分割:
- シャード1: ユーザーID 1〜333万
- シャード2: ユーザーID 333万〜666万
- シャード3: ユーザーID 666万〜1000万
シャードキーの選び方
シャードキーの選択がパフォーマンスを左右します:
- 良いシャードキー: 値が均等に分散する・クエリと関連性が高い
- 悪いシャードキー: 特定の値に偏る(ホットスポット)・頻繁に変わる
課題とデメリット
- クロスシャードクエリ: 複数シャードをまたぐJOINは難しい
- 再シャーディング: データが増えた際の再分割は複雑で停止が必要
- アプリの複雑化: シャードを意識したアプリ設計が必要
まとめ
シャーディングは最終手段として検討してください。まずはインデックス最適化・キャッシュ・レプリケーションで解決を試み、それでも不足した場合にシャーディングを導入するのが適切な順序です。
関連する用語 (データベース)
全23件を見るIT用語: MongoDBとは|JSONライクなドキュメント型NoSQLデータベース
スキーマレスなJSONドキュメントを格納するMongoDBの仕組み・集計パイプライン・RDBとの使い分けを解説。
データベースマイグレーション
データベースのスキーマ(テーブル構造)変更をバージョン管理し、順序立てて適用する仕組み。Prisma Migrate・Flyway・Liquibaseが代表的なツール。
PostgreSQL(ポストグレSQL)
オープンソースのリレーショナルデータベース。ACID準拠・豊富な機能・強力なSQL拡張・JSONサポートを持ち、企業向けから個人プロジェクトまで幅広く使われる高信頼性DBMSの代表格。
IT用語: シャーディングとは|大規模DBを水平分割してスケールアウトする手法
ユーザーIDや地域などのキーでデータを複数DBに分割するシャーディングの仕組みとデメリットを解説。
IT用語: データベースインデックスとは|検索を高速化するB-Tree構造の仕組み
フルテーブルスキャンを避けてクエリを高速化するDBインデックスの仕組み・種類・設計の注意点を解説。
IT用語: Redisとは|高速インメモリデータストアの仕組みと活用パターン
メモリ上にデータを保存し高速なキャッシュ・セッション管理・Pub/Subを実現するRedisの仕組みと主要データ型を解説。