IT用語: シャーディングとは|大規模DBを水平分割してスケールアウトする手法
ユーザーIDや地域などのキーでデータを複数DBに分割するシャーディングの仕組みとデメリットを解説。
シャーディングとは
シャーディング(Sharding)は、1台のデータベースに収まりきらない大規模なデータを、**シャードキー(分割の基準となる値)**に基づいて複数のDBサーバーに水平分割する手法です。Twitterの「ユーザーIDの末尾数字でDBを振り分ける」や「地域別に異なるDBを使う」などが典型例です。
シャーディングと垂直分割の違い
| 手法 | 内容 | 限界 |
|---|---|---|
| 垂直スケールアップ | 1台のサーバーを高性能化 | ハードウェアの上限がある |
| 垂直分割(テーブル分割) | 列を複数テーブルに分割 | 1台のサーバーの上限がある |
| 水平分割(シャーディング) | 行を複数サーバーに分割 | 理論上無制限にスケール |
シャーディングのデメリット
- クロスシャードクエリが複雑: 異なるシャードのデータをJOINするには、アプリ側で集約が必要
- 再シャーディングのコスト: データが増えてシャードを追加する際、データの再分散が必要
- トランザクション管理: 複数シャードをまたぐ分散トランザクションは非常に複雑
実践的なアドバイス
シャーディングは最終手段です。まずはリードレプリカ・キャッシュ・インデックス最適化・垂直スケールアップで対処し、それでも限界が来たときに検討します。MongoDBやVitessはシャーディングを抽象化して提供しています。
関連する用語 (データベース)
全23件を見るIT用語: MySQLとは|世界最多採用のオープンソースリレーショナルデータベース
WordPress・ECサイト・SNSに広く使われるMySQL(MariaDB)の特徴・ストレージエンジン・チューニングを解説。
IT用語: データベーストランザクションとは|ACID特性で保証するデータ整合性
DBの一連の操作をまとめて原子的に扱うトランザクションのACID特性(原子性・一貫性・独立性・持続性)を解説。
データベースインデックス(索引)
データベースの検索速度を向上させるためのデータ構造。B木・ハッシュ・全文検索等の種類があり、適切なインデックス設計はクエリパフォーマンスを劇的に改善する。
IT用語: ORM(オブジェクトリレーショナルマッパー)とは|SQLを書かずにDBを操作
プログラミング言語のオブジェクトとDBのテーブルを対応付けるORMの仕組みとN+1問題を解説。
ACID特性(トランザクション4要件)
データベーストランザクションの信頼性を保証する4つの特性。原子性(Atomicity)・一貫性(Consistency)・独立性(Isolation)・永続性(Durability)の頭文字をとった概念。
IT用語: データベースインデックスとは|検索を高速化するB-Tree構造の仕組み
フルテーブルスキャンを避けてクエリを高速化するDBインデックスの仕組み・種類・設計の注意点を解説。