5

この質問がばかげている場合は申し訳ありませんが、私はコンシステント ハッシュについて学び始めており、Tom White のブログ投稿をここで読んだ後、ほとんどのデフォルトのハッシュ関数が十分に混合されていないことに気づき、任意のハッシュ関数が十分に混合されています。

私の考えは、次のような例を使用して最もよく説明されています。

Bucket 1: 11000110
Bucket 2: 11001110
Bucket 3: 11010110
Bucket 4: 11011110

これらのバケット全体で一貫したキャッシングを行うための標準的なハッシュ リングの実装では、パフォーマンスが著しく低下し、ほぼすべてのエントリがバケット 1 にまとめられます。混合され、新しいオブジェクトをキャッシュに割り当てることは簡単になり、2 ビットを調べるだけで済みます。

私の考えでは、この概念は、複数のノードにまたがる分散ネットワークを構築するときに非常に簡単に拡張できます。私の特定のケースでは、これを使用して、特定のデータを配置するキャッシュを決定します。配置速度の向上は実際の懸念事項ではありませんが、キャッシュが適切に混合されていることを確認することは重要であり、特定のキャッシュに最適に混合されたいくつかのビットを選択することを検討していました. 後で索引付けされる情報は、同じビットに基づいて索引付けされます。

私の素朴な考えでは、これは仮想ノードを導入したり、より優れたハッシュ関数を構築したりするよりもはるかに簡単なソリューションです。そうは言っても、このようなアプローチについての言及は見られず、ハッシュの無知のために、ここで何か間違ったことをしていて、意図しない結果をもたらしているのではないかと心配しています。

このアプローチは安全ですか?使うべきですか?このアプローチは以前に使用されたことがありますか?ビットの最小の一意のグループを決定するための確立されたアルゴリズムはありますか?

4

0 に答える 0