シャーディング(データベース水平分割)
データを複数のサーバー(シャード)に水平分割して分散させるDBスケーリング手法。1台のサーバーに収まらない大規模データの処理に使われる。モンゴDBやCassandraが得意とする。
シャーディングとは?
シャーディング(Sharding)は、データベースのデータを「シャードキー」に基づいて複数のサーバー(シャード)に水平分割して分散させる手法です。1台のサーバーでは処理しきれない大規模なデータとリクエストを捌くために使われます。
レプリケーションとの違い
| 項目 | レプリケーション | シャーディング |
|---|---|---|
| データの配置 | 同じデータを複数に複製 | 異なるデータを分割して配置 |
| 目的 | 可用性・読み取り分散 | 書き込みスケール・大容量対応 |
| 複雑さ | 低〜中 | 高い |
シャーディングの例
ユーザーID 1〜1000万のデータを3シャードに分割:
- シャード1: ユーザーID 1〜333万
- シャード2: ユーザーID 333万〜666万
- シャード3: ユーザーID 666万〜1000万
シャードキーの選び方
シャードキーの選択がパフォーマンスを左右します:
- 良いシャードキー: 値が均等に分散する・クエリと関連性が高い
- 悪いシャードキー: 特定の値に偏る(ホットスポット)・頻繁に変わる
課題とデメリット
- クロスシャードクエリ: 複数シャードをまたぐJOINは難しい
- 再シャーディング: データが増えた際の再分割は複雑で停止が必要
- アプリの複雑化: シャードを意識したアプリ設計が必要
まとめ
シャーディングは最終手段として検討してください。まずはインデックス最適化・キャッシュ・レプリケーションで解決を試み、それでも不足した場合にシャーディングを導入するのが適切な順序です。
関連する用語 (データベース)
全23件を見るACID特性(トランザクション4要件)
データベーストランザクションの信頼性を保証する4つの特性。原子性(Atomicity)・一貫性(Consistency)・独立性(Isolation)・永続性(Durability)の頭文字をとった概念。
IT用語: データベース正規化とは|データの重複をなくすテーブル設計の基本
第1〜第3正規形(1NF・2NF・3NF)を使いデータの冗長性を排除するデータベース正規化の手順を解説。
IT用語: ORM(オブジェクトリレーショナルマッパー)とは|SQLを書かずにDBを操作
プログラミング言語のオブジェクトとDBのテーブルを対応付けるORMの仕組みとN+1問題を解説。
MongoDB(モンゴDB)
ドキュメント型NoSQLデータベースの代表格。JSONに似たBSON形式でデータを格納し、スキーマレスで柔軟なデータ管理と水平スケーリングを実現する。Node.jsとの親和性が高い。
IT用語: データベースインデックスとは|検索を高速化するB-Tree構造の仕組み
フルテーブルスキャンを避けてクエリを高速化するDBインデックスの仕組み・種類・設計の注意点を解説。
データベースインデックス(索引)
データベースの検索速度を向上させるためのデータ構造。B木・ハッシュ・全文検索等の種類があり、適切なインデックス設計はクエリパフォーマンスを劇的に改善する。