シャーディング | 応用情報技術者試験
シャーディングとは
シャーディング(水平分割)とは、データベースの規模が大きくなりすぎた際に、1つの巨大なテーブルに保存されているデータを、行単位(横方向)で細かく分割し、複数の異なるデータベースサーバーに分散して保存する技術です。
データ量が数億件に達すると、いくらサーバーの性能を上げても検索や書き込みに時間がかかるようになります。シャーディングでは、例えばユーザーIDの奇数・偶数や、住んでいる地域といった特定のルールに従って、データを「シャード」と呼ばれる小さなデータベースに切り分けます。これにより、それぞれのサーバーが扱うデータ量が軽くなり、アクセスも分散されるため、データベース全体の処理能力を大きく向上させることができます。
具体例
世界中で利用されるSNSアプリのユーザーデータベースを考えます。全ユーザーのデータを1台の巨大なサーバーに詰め込むのではなく、ユーザーIDの末尾が「0〜3」「4〜6」「7〜9」の3グループに分け、それぞれ別のサーバーA、B、Cに分けて保存します。ユーザーがログインする際は、自分のIDに応じたサーバーだけにアクセスするため、スムーズに通信が行われます。
もう少し詳しく