シャーディング 【sharding】
概要
シャーディング(sharding)とは、データベースの負荷分散の手法の一つで、一つの表(テーブル)を複数の物理コンピュータに分割して記録する方式。分割された断片的なデータ集合を「シャード」(shard)という。データベース管理システム(DBMS)上では論理的に単一のデータベースとして扱うが、実際のデータは行(レコード)単位で水平分割され、同じDBMSを運用する複数のデータベースサーバに分散して記録される。各サーバには同じ構成のデータベース(シャード)があるが、それぞれ異なるデータを格納している。
各サーバは共有資源がなく互いに独立(シェアードナッシング)しており、データが増大しても見合うだけの台数を新たに追加していけば問題なく格納することができる。一部のサーバが故障などで停止すると、そのサーバに格納されたデータにはアクセスできなくなるが、他のサーバのデータには影響しない。
どの行がどのサーバに記録されているかをシステム側で把握する必要があり、指定した列(カラム)の値から特定の計算を行うことで、どのサーバに格納されているかを求めることができるハッシュ分割などの手法が用いられる。同じテーブルのデータが複数のサーバにまたがって格納されるため、任意の列の値に条件を指定して抽出や検索を行ったり、テーブルの結合(JOIN)などを行うのは困難となる。
(2021.11.7更新)