シャーディング 【sharding】

概要

シャーディング(sharding)とは、データベースの負荷分散の手法の一つで、一つの表(テーブル)を複数の物理コンピュータに分割して記録する方式。

論理的には一つのテーブルを、「シャード」(shard)と呼ばれる複数の断片的なデータ集合に分割して管理する手法である。分割は行(レコード)単位で行われ、これを「水平分割」という。シャードは同じDBMSを運用する複数のデータベースサーバに分散して記録される。

データベース管理システムDBMS)上では、複数のサーバを透過的に連携させて単一のテーブルとして扱うため、アクセス時に分割を意識する必要はない。各シャードには異なるレコードが記録されているため、バックアップや信頼性向上の効果はない。

各サーバは共有資源がなく互いに独立(シェアードナッシング)しており、データが増大しても見合うだけの台数を新たに追加していけば問題なく格納することができる。一部のサーバが故障などで停止すると、そのサーバに格納されたデータにはアクセスできなくなるが、他のサーバのデータには影響しない。

どの行がどのサーバに記録されているかをシステム側で把握する必要があり、指定した列(カラム)の値から特定の計算を行うことで、どのサーバに格納されているかを求めることができる「ハッシュ分割」などの手法が用いられる。同じテーブルのデータが複数のサーバにまたがって格納されるため、任意の列の値に条件を指定して抽出や検索を行ったり、テーブルの結合(JOIN)などを行うのは困難となる。

(2025.8.30更新)

他の用語辞典による「シャーディング」の解説 (外部サイト)