シャーディングは、データベースの「水平スケーリング(スケールアウト)」を実現するためのアプローチです。これに対し、データベースのスペックを上げることを「垂直スケーリング(スケールアップ)」と呼びます。シャーディングを設計する上で最も重要なのが「シャードキー(分散キー)」の決定です。データの偏り(ホットスポット)が生じないよう、均等にデータを分散できるキーを選ぶ必要があります。分散の手法には、シャードキーをハッシュ関数にかけて保存先を決める「ハッシュベース・シャーディング」や、IDの範囲(例:1〜100万、100万1〜200万)で分ける「レンジベース・シャーディング」などがあります。シャーディングの課題として、複数のシャードにまたがるデータ結合(JOIN)や、トランザクションの制御が極めて複雑になり処理パフォーマンスが低下する点が挙げられます。
試験でのポイント