コンシステントハッシュ(こんしすてんとはっしゅ)
最終更新:2026/4/27
コンシステントハッシュは、キーをハッシュ関数で数値に変換し、ハッシュ環上の位置に対応させることで、ノードの追加・削除時のデータ再配置を最小限に抑えるハッシュ手法である。
別名・同義語 一貫性ハッシュConsistent Hashing
ポイント
分散システムにおいて、キャッシュサーバーやデータベースのシャーディングなど、データの分散管理に広く用いられる。ノードの変更による影響範囲を局所化できる。
概要
コンシステントハッシュは、分散ハッシュテーブル(DHT)の基盤技術として知られ、大規模な分散システムにおけるデータ配置や負荷分散に利用される。従来のハッシュ関数では、ノードの追加や削除が発生した場合、全てのキーに対して再ハッシュ処理が必要となり、システム全体に大きな負荷がかかる。コンシステントハッシュは、この問題を解決するために考案された。
原理
コンシステントハッシュでは、ハッシュ空間を環状に表現する。各ノード(サーバーなど)は、ハッシュ環上のいくつかの点(バーチャルノード)に対応付けられる。キーはハッシュ関数によって数値に変換され、ハッシュ環上の位置が決定される。キーは、ハッシュ環上で時計回りに次のノードに割り当てられる。ノードが追加・削除された場合、影響を受けるのは、そのノードの近傍のキーのみであるため、データ再配置の範囲を局所化できる。
利点
- スケーラビリティ: ノードの追加・削除が容易で、システムのスケーラビリティが高い。
- 負荷分散: バーチャルノードを用いることで、ノード間の負荷を均等に分散できる。
- 可用性: 一部のノードがダウンしても、システム全体への影響を最小限に抑えられる。