Merkle 树(又名哈希树)用于“Cassandra”和“Dynamo”中的数据同步。
与任何散列函数一样,不同的数据有可能具有相同的散列值:
存在 x 和 y,其中 [y!=x] 但 [hash(x) = hash(y)]
随着 NOSQL 中“大数据”的增长,遇到此类数据的概率也越来越高。
这意味着随着数据集变得越来越大,几乎可以肯定 Merkle 树中的不同节点将产生相同的父哈希。
在这种情况下,当集群中的两台不同的机器遍历它们的默克尔树时,它们会得到一个误报,认为它们的数据是一致的。如果没有更多数据写入树的该分支,则机器将永远保持不同步。
这是如何处理的?