2P-set允许从集合中删除元素,但不允许释放那些删除的元素占用的空间。实际上,删除元素会消耗空间,而不是释放空间。 释放2P结构空间的算法是什么?
我试图了解在实践中我可以使用CRDT结构遇到哪些问题。如果没有释放空间的方法,那么2P CRDT结构似乎在现实世界中的任务用途非常有限。
答案 0 :(得分:1)
虽然我不能为2P-Set发言-因为我仍然没有找到一个实用的用例。但是通常我们只能应用一些技巧:
OR-Set
。在此实现中,您无需将删除的元素保留在内存中:相反,我们可以使用最终可以压缩为矢量时钟的点来跟踪添加/删除的元素。 Here我更详细地描述了这个问题。G-Counter
由映射{A:1,B:2,C:1}
和一个死节点B
表示(无法再增加其状态),我们可以通过合并B
'来修剪它形状{A:3,C:1}
,因此减小了尺寸,同时仍保留了正确的值。问题在于,修剪算法必须保证,所有副本都必须独立地收敛到该决策中。