Merkle Tree算法详解
来源:互联网 发布:机智股票自动交易软件 编辑:程序博客网 时间:2024/05/18 21:42
1、数据结构是一个树,可以是二叉树,也可以是多叉树(本BLOG以二叉树来分析)
2、Merkle Tree的叶子节点的value是数据集合的单元数据或者单元数据HASH。
3、Merke Tree非叶子节点value是其所有子节点value的HASH值。
为了更好的理解,我们假设有A和B两台机器,A需要与B相同目录下有8个文件,文件分别是f1 f2 f3 ....f8。这个时候我们就可以通过Merkle Tree来进行快速比较。假设我们在文件创建的时候每个机器都构建了一个Merkle Tree。具体如下图:
从上图可得知,叶子节点node7的value = hash(f1),是f1文件的HASH;而其父亲节点node3的value = hash(v7, v8),也就是其子节点node7 node8的值得HASH。就是这样表示一个层级运算关系。root节点的value其实是所有叶子节点的value的唯一特征。
假如A上的文件5与B上的不一样。我们怎么通过两个机器的merkle treee信息找到不相同的文件? 这个比较检索过程如下:
1、首先比较v0是否相同,如果不同,检索其孩子node1和node2.
2、v1 相同,v2不同。检索node2的孩子node5 node6;
3、v5不同,v6相同,检索比较node5的孩子node 11 和node 12
4、v11不同,v12相同。node 11为叶子节点,获取其目录信息。
5、检索比较完毕。
以上过程的理论复杂度是Log(N)。实际过程是大于这个复杂度的,因为不同value的节点需要每个子节点进行比较。过程描述图如下:
从上图可以得知真个过程可以很快的找到对应的不相同的文件。
如果A机器的目录下增加了一个文件f9。整个merkle tree就会变成这样的:
其中红色字体是需要进行运算的步骤,整个过程是从叶子节点发起的,直接回溯到root节点为止。
假如目录下的f1被删除。整树的运算变化图如下:
红色字体是需要进行的运算。
从上可以得知,merkle tree在大数据集合校验可以提高校验的效率的。从Dynamo论文中可以看出,大量使用merkle tree来同步分布式节点的文件和写操作,尤其是在服务节点异常后的情况,具体细节可以参看Dynamo论文中的描述。
转载网址:http://blog.csdn.net/yuanrxdu/article/details/22474697?utm_source=tuicool
- Merkle Tree算法详解
- Merkle Tree算法详解
- Merkle tree算法
- Merkle Tree算法
- Merkle Tree
- Merkle Tree
- Merkle Tree
- merkle tree
- Merkle Tree
- Merkle Tree
- Merkle Tree
- Merkle Tree(默克尔树)算法解析
- Merkle Tree(默克尔树)算法解析
- Merkle Tree(梅克尔树)算法解析
- Merkle Hash Tree
- Merkle Hash Tree
- Merkle Hash Tree
- Merkle Tree 简介
- 15第六周项目三——人数不定的工资类
- Face alignment at 3000 FPS via Regressing Local Binary Features
- 使用JSONKit可能出现的问题
- POJ2411: Mondriaan's Dream(1*2铺地砖,DP)
- About UiScrollView/NSTime/UIPageControl(2015411)
- Merkle Tree算法详解
- 02 Filter
- [android] 架构原理
- 03 Function
- 滑动窗口
- 第七题:奇怪的国家
- Python快速入门-简介和执行
- Candy Java
- 用java程序将数据写入到Excel中