データベース
データベースのシャーディング(sharding)に関する記述として、最も適切なものはどれか。
ア.シャーディングはテーブルの列を分割して別テーブルに格納する垂直分割の手法で、列ごとに別のDBサーバへ配置することである。
イ.シャーディングはマスタ・スレーブ構成によりreadを分散するだけの仕組みで、データ自体の分割は行わない。
ウ.シャーディングはバックアップを複数世代保持するための分割保管方式で、書き込み分散には寄与しない。
エ.シャーディングはテーブルの行を複数のサーバに水平分割する手法で、シャードキー(例:user_id % N)に基づいてデータを各シャードに振り分ける。書き込み・読み込み負荷とデータ量を複数台に分散できるが、シャード横断クエリやリバランスが難しいという課題があり、シャードキー設計が極めて重要になる。正解
解説
シャーディングは「巨大な図書館を地域ごとに分館化」する方式。利用者IDで本棚を割り当てれば各分館の負荷が分散しますが、「全分館を横断検索」したいときが鬼門。鍵となる司書ルール(シャードキー)の設計で運命が決まります。
なぜ エ が正解か
エが正解。シャーディングは水平分割(horizontal partitioning)の一形態で、テーブルの行をシャードキー(user_id, region等)に基づいて複数の物理DBサーバに分散配置する。各シャードは独立したDBインスタンスとして動作するため、書き込み負荷もディスク容量も水平スケールできる。一方でシャード横断JOINや集計、シャードの追加(リバランス)が複雑になり、シャードキー設計が後から変更しづらいため初期設計が極めて重要。Twitter、Instagram、ゲーム業界等で採用例多数。
出典: AI生成問題(学習用)