シャーディング(データベース水平分割)
データを複数のサーバー(シャード)に水平分割して分散させる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用語: データベースインデックスとは|検索を高速化するB-Tree構造の仕組み
フルテーブルスキャンを避けてクエリを高速化するDBインデックスの仕組み・種類・設計の注意点を解説。
IT用語: データベース正規化とは|データの重複をなくすテーブル設計の基本
第1〜第3正規形(1NF・2NF・3NF)を使いデータの冗長性を排除するデータベース正規化の手順を解説。
IT用語: MySQLとは|世界最多採用のオープンソースリレーショナルデータベース
WordPress・ECサイト・SNSに広く使われるMySQL(MariaDB)の特徴・ストレージエンジン・チューニングを解説。
データベースインデックス(索引)
データベースの検索速度を向上させるためのデータ構造。B木・ハッシュ・全文検索等の種類があり、適切なインデックス設計はクエリパフォーマンスを劇的に改善する。
データベースマイグレーション
データベースのスキーマ(テーブル構造)変更をバージョン管理し、順序立てて適用する仕組み。Prisma Migrate・Flyway・Liquibaseが代表的なツール。
MongoDB(モンゴDB)
ドキュメント型NoSQLデータベースの代表格。JSONに似たBSON形式でデータを格納し、スキーマレスで柔軟なデータ管理と水平スケーリングを実現する。Node.jsとの親和性が高い。