IT用語: シャーディングとは|大規模DBを水平分割してスケールアウトする手法
ユーザーIDや地域などのキーでデータを複数DBに分割するシャーディングの仕組みとデメリットを解説。
シャーディングとは
シャーディング(Sharding)は、1台のデータベースに収まりきらない大規模なデータを、**シャードキー(分割の基準となる値)**に基づいて複数のDBサーバーに水平分割する手法です。Twitterの「ユーザーIDの末尾数字でDBを振り分ける」や「地域別に異なるDBを使う」などが典型例です。
シャーディングと垂直分割の違い
| 手法 | 内容 | 限界 |
|---|---|---|
| 垂直スケールアップ | 1台のサーバーを高性能化 | ハードウェアの上限がある |
| 垂直分割(テーブル分割) | 列を複数テーブルに分割 | 1台のサーバーの上限がある |
| 水平分割(シャーディング) | 行を複数サーバーに分割 | 理論上無制限にスケール |
シャーディングのデメリット
- クロスシャードクエリが複雑: 異なるシャードのデータをJOINするには、アプリ側で集約が必要
- 再シャーディングのコスト: データが増えてシャードを追加する際、データの再分散が必要
- トランザクション管理: 複数シャードをまたぐ分散トランザクションは非常に複雑
実践的なアドバイス
シャーディングは最終手段です。まずはリードレプリカ・キャッシュ・インデックス最適化・垂直スケールアップで対処し、それでも限界が来たときに検討します。MongoDBやVitessはシャーディングを抽象化して提供しています。
関連する用語 (データベース)
全23件を見るSQL
リレーショナルデータベース(RDB)を操作・検索するための標準言語。
IT用語: MySQLとは|世界最多採用のオープンソースリレーショナルデータベース
WordPress・ECサイト・SNSに広く使われるMySQL(MariaDB)の特徴・ストレージエンジン・チューニングを解説。
IT用語: MongoDBとは|JSONライクなドキュメント型NoSQLデータベース
スキーマレスなJSONドキュメントを格納するMongoDBの仕組み・集計パイプライン・RDBとの使い分けを解説。
IT用語: Redisとは|高速インメモリデータストアの仕組みと活用パターン
メモリ上にデータを保存し高速なキャッシュ・セッション管理・Pub/Subを実現するRedisの仕組みと主要データ型を解説。
IT用語: データベース正規化とは|データの重複をなくすテーブル設計の基本
第1〜第3正規形(1NF・2NF・3NF)を使いデータの冗長性を排除するデータベース正規化の手順を解説。
データベースマイグレーション
データベースのスキーマ(テーブル構造)変更をバージョン管理し、順序立てて適用する仕組み。Prisma Migrate・Flyway・Liquibaseが代表的なツール。