Algorithm 比较慢速网络上的巨树

Algorithm 比较慢速网络上的巨树,algorithm,hash,tree,comparison,Algorithm,Hash,Tree,Comparison,我有一个树状的数据结构: 我有一份工作单 每个工单都有几个操作 每个操作都有几个角色 每个角色都有几个资源节点 每个工单、操作、角色和资源节点都有许多属性 我有两个这样的数据结构实例:主数据结构和从数据结构。我希望定期更新slave并使其与master同步。我的问题是:我如何做到真正快速 问题是: 这两个例子是巨大的 这两个实例位于单独的网络上,由低吞吐量网络连接 速度是关键参数 [编辑]4。我并没有访问主服务器上的事务日志的权限,只是此时主服务器的状态(我只有对SQL视图的读取权限,仅此而

我有一个树状的数据结构:

  • 我有一份工作单
  • 每个工单都有几个操作
  • 每个操作都有几个角色
  • 每个角色都有几个资源节点
每个工单、操作、角色和资源节点都有许多属性

我有两个这样的数据结构实例:主数据结构和从数据结构。我希望定期更新slave并使其与master同步。我的问题是:我如何做到真正快速

问题是:

  • 这两个例子是巨大的
  • 这两个实例位于单独的网络上,由低吞吐量网络连接
  • 速度是关键参数
  • [编辑]4。我并没有访问主服务器上的事务日志的权限,只是此时主服务器的状态(我只有对SQL视图的读取权限,仅此而已)[/edit]

    我当时的想法是通过将节点ID、节点属性和子节点的哈希(显然是自下而上的)散列在一起,在两侧创建Merkle树

    然后通过以下方式比较这些树:

  • 通过网络传输顶级哈希列表
  • 确定不相等的节点
  • 递归地重复不匹配节点的过程
  • 因此,我得到一个不同步的节点列表,然后更新它们

    我在这里看到的问题是,每次比较实例时,我都必须重新创建两个Merkle树,这需要花费时间


    因此,我想知道是否还有其他算法可以尝试?

    您想同步这两种算法(这样在主服务器和从服务器上都可以写入),还是只想将从服务器与主服务器同步?我想将从服务器与主服务器同步。所以,这是一种单向通信。那么,为什么不在从机上异步地对主机执行相同的操作(例如,通过另一个线程中的RPC)?为什么不保留差异的本地副本呢?如果可以假设在某个时间点它们是同步的,只需从该时间点跟踪传入的更改,直到知道它们再次同步为止。没有来回的理由,只要使用网络来维护对远程的更改。@ThomasJungblut:因为我无法访问双方的事务日志。我所拥有的只是对主服务器上SQL视图的读访问权限和对从服务器上SQL表的读/写访问权限。是的,我应该提一下。