IT用語: シャーディングとは|大規模DBを水平分割してスケールアウトする手法
ユーザーIDや地域などのキーでデータを複数DBに分割するシャーディングの仕組みとデメリットを解説。
シャーディングとは
シャーディング(Sharding)は、1台のデータベースに収まりきらない大規模なデータを、**シャードキー(分割の基準となる値)**に基づいて複数のDBサーバーに水平分割する手法です。Twitterの「ユーザーIDの末尾数字でDBを振り分ける」や「地域別に異なるDBを使う」などが典型例です。
シャーディングと垂直分割の違い
| 手法 | 内容 | 限界 |
|---|---|---|
| 垂直スケールアップ | 1台のサーバーを高性能化 | ハードウェアの上限がある |
| 垂直分割(テーブル分割) | 列を複数テーブルに分割 | 1台のサーバーの上限がある |
| 水平分割(シャーディング) | 行を複数サーバーに分割 | 理論上無制限にスケール |
シャーディングのデメリット
- クロスシャードクエリが複雑: 異なるシャードのデータをJOINするには、アプリ側で集約が必要
- 再シャーディングのコスト: データが増えてシャードを追加する際、データの再分散が必要
- トランザクション管理: 複数シャードをまたぐ分散トランザクションは非常に複雑
実践的なアドバイス
シャーディングは最終手段です。まずはリードレプリカ・キャッシュ・インデックス最適化・垂直スケールアップで対処し、それでも限界が来たときに検討します。MongoDBやVitessはシャーディングを抽象化して提供しています。
関連する用語 (データベース)
全23件を見るACID特性(トランザクション4要件)
データベーストランザクションの信頼性を保証する4つの特性。原子性(Atomicity)・一貫性(Consistency)・独立性(Isolation)・永続性(Durability)の頭文字をとった概念。
SQL
リレーショナルデータベース(RDB)を操作・検索するための標準言語。
データベースマイグレーション
データベースのスキーマ(テーブル構造)変更をバージョン管理し、順序立てて適用する仕組み。Prisma Migrate・Flyway・Liquibaseが代表的なツール。
IT用語: PostgreSQLとは|拡張性と標準準拠で選ばれるオープンソースRDBMS
高度な機能・拡張性・SQL標準への準拠で知られるオープンソースのリレーショナルデータベースPostgreSQLを解説。
PostgreSQL(ポストグレSQL)
オープンソースのリレーショナルデータベース。ACID準拠・豊富な機能・強力なSQL拡張・JSONサポートを持ち、企業向けから個人プロジェクトまで幅広く使われる高信頼性DBMSの代表格。
Redis(リモートディクショナリサーバー)
インメモリ型のキーバリューストア。超高速な読み書きを実現し、キャッシュ・セッション管理・リアルタイム処理に広く使われるOSSデータベース。