首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用2P CRDT数据结构(例如2P-set)时,如何释放空间?

当使用2P CRDT数据结构(例如2P-set)时,如何释放空间?
EN

Stack Overflow用户
提问于 2018-12-20 01:57:14
回答 1查看 161关注 0票数 1

2P-set允许从集合中删除元素,但不允许释放这些删除的元素占用的空间。事实上,删除元素会消耗空间,而不是释放空间。为2P结构释放空间的算法是什么?

我正在尝试理解在实践中我可以使用CRDT结构来解决什么问题。如果没有释放空间的方法,2P CRDT结构在实际任务中的使用似乎非常有限。

EN

回答 1

Stack Overflow用户

发布于 2018-12-27 20:14:06

虽然我不能为2P-Set说话-因为我还没有想出它的实际用例。然而,我们通常可以应用几种技术:

CRDT使用的元数据的

  1. Compaction :很多CRDT最初通过非常简单的设计实现,后来经过优化以满足行业标准。这样的例子可以是在点向量版本上重新实现的OR-Set。在这个实现中,您不需要将删除的元素保存在内存中:相反,我们可以使用最终压缩为向量时钟的点来跟踪添加/删除的元素。我在more detail.
  2. Prunning Here中描述了这个问题,一旦不再需要一些副本,例如。因为我们减少了节点数量,或者这些节点不再可用。在这种情况下,我们可以将有效负载与元数据合并,就像它是由另一个副本生成的一样。例如:给定由G-Counter {A:1,B:2,C:1}和死节点B (不能再增加其状态)表示的G-Counter,我们可以通过将B__的条目合并到形状{A:3,C:1}中来修剪它,从而在减小其大小的同时保持正确的值。问题是修剪算法必须保证所有副本都必须收敛到这个决策independently.

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

https://stackoverflow.com/questions/53856808

复制
相关文章

相似问题

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