"Cassandra" & "Dynamo"と両方のデータ同期にMerkleツリー(別名ハッシュツリー)が使用されています。任意のハッシュ関数と同様Merkleツリーのデータ同期偽陽性
は、異なるデータが同じハッシュ値を持つことができる可能性がある:
xおよびy [!Y = X]が、[ハッシュ(X)=ハッシュ(存在しますy)]
NOSQLの「ビッグデータ」が大きくなると、そのようなデータに遭遇する確率が高くなります。
これは、データセットが大きくなるにつれて、Merkleツリー内の異なるノードが同じ親ハッシュを生成することがほぼ確実になります。
このような場合、クラスタ内の2つの異なるマシンがMerkleツリーを横断すると、データが一貫していると誤った肯定的な結果になります。ツリーのそのブランチにそれ以上データが書き込まれないと、マシンは永久に非同期になります。
これはどのように処理されますか?
最終的にここに入る別の同期メカニズムはありますか?あるいは、これらのデータベースは、単に均等に分布するハッシュ関数に依存していますか?私は、カッサンドラの場合、ほとんどのユーザーはデフォルトのハッシュ関数を使用していることに気付きます。おそらく最適な分布はありません。 – eshalev
ほとんどのシステムでは、ハッシュ関数が一様に分布しています([SUHA](http://en.wikipedia.org/wiki/SUHA_(computer_science))に依存しています)、カサンドラのデフォルトのハッシュ関数 – kokx
カサンドラは、どうやってそれらのデータではないデータに対して均等な分布を取ることができますか?ユーザーは常にハッシュ関数でうまくいっていないデータを書き込むことができます – eshalev