首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更新分布式哈希表中的条目

如何更新分布式哈希表中的条目
EN

Stack Overflow用户
提问于 2012-08-01 18:27:14
回答 2查看 1.1K关注 0票数 3

我知道数据(理论上)是如何存储在分布式哈希表中的。然而,我不确定如何更新与键相关的数据。这个是可能的吗?另外,在分布式哈希表中如何处理冲突。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-02 05:03:14

分布式哈希表只定义了put(key,value)get(key)操作,各种分布式哈希表算法的核心是如何定位负责特定键的节点。

这些节点对已经存储的值的传入put请求做什么在很大程度上取决于分布式哈希表网络的目的和实现,而不是算法本身。

例如,一个节点可能会选择给所有传入的值加上时间戳,并返回带有多个单独的时间戳问题的列表。或者,它可能返回还包括每个值的源地址的列表。或者,它们可能只是覆盖存储的值。

如果密钥和值中的签名或源ID或类似的东西之间存在某种关系,则可以将足够的智能放入节点中,以加密方式验证数据,从而允许节点通过替换旧数据为每个密钥保留一个规范值。

在bittorrent的分布式哈希表的情况下,你不会希望这样。许多不同的bittorrent对等体从不同的源地址向单个密钥宣告它们的存在。因此,节点实际上存储了惟一的<key,IP,port>元组,其中可以将<IP,port>视为值。这意味着它将在每次查找时返回IP和端口列表。由于分布式哈希表将有多个节点负责一个键,因此实际上会有K (存储桶大小)节点使用不同的列表进行响应。

TL;DR:依赖于实现

票数 2
EN

Stack Overflow用户

发布于 2012-08-01 23:30:50

这是可能的。我研究过pastrys。可以更改存储在给定键下的数据,但pastrys开发人员建议不要这样做,因为它可能会产生严重的副作用,主要是复制存储在其他节点上的更改后的数据片段。(请参阅freepastrys主页上的FAQ )。

但是,我不确定它会如何影响其他dht,比如chord或tapestry。

关于冲突,我再一次只有糕点的经验。如果您尝试将数据存储在已在使用的键下,将会抛出异常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11757278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档