シャーディング(データベース水平分割)
データを複数のサーバー(シャード)に水平分割して分散させる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用語: データベースレプリケーションとは|読み取り分散と冗長化の仕組み
プライマリDBの変更をレプリカに同期するレプリケーションの仕組み・同期/非同期の違い・活用パターンを解説。
IT用語: MongoDBとは|JSONライクなドキュメント型NoSQLデータベース
スキーマレスなJSONドキュメントを格納するMongoDBの仕組み・集計パイプライン・RDBとの使い分けを解説。
IT用語: データベーストランザクションとは|ACID特性で保証するデータ整合性
DBの一連の操作をまとめて原子的に扱うトランザクションのACID特性(原子性・一貫性・独立性・持続性)を解説。
PostgreSQL(ポストグレSQL)
オープンソースのリレーショナルデータベース。ACID準拠・豊富な機能・強力なSQL拡張・JSONサポートを持ち、企業向けから個人プロジェクトまで幅広く使われる高信頼性DBMSの代表格。
IT用語: PostgreSQLとは|拡張性と標準準拠で選ばれるオープンソースRDBMS
高度な機能・拡張性・SQL標準への準拠で知られるオープンソースのリレーショナルデータベースPostgreSQLを解説。
ORM(オブジェクト関係マッピング)
プログラミング言語のオブジェクトとデータベースのテーブルを対応付け、SQLを書かずにDBを操作できるようにするライブラリ。Prisma・TypeORM・Sequelize等が代表的。