代码之家  ›  专栏  ›  技术社区  ›  MOZGIII

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

  •  0
  • MOZGIII  · 技术社区  · 7 年前

    2P set允许从集合中移除元素,但不允许释放那些移除元素所占用的空间。事实上,移除元素会消耗空间,而不是释放空间。

    我想知道在实践中使用CRDT结构有哪些问题。由于没有释放空间的方法,2P CRDT结构对于实际任务的使用似乎非常有限。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Bartosz Sypytkowski    7 年前

    虽然我不能为2P集说话-因为我还没有找到一个实际的用例。然而,通常我们可以应用一些技巧:

    1. CRDT使用的元数据压缩 OR-Set 重新安装在 虚线矢量版本 Here
    2. 修剪 当某些副本不再需要时,例如,因为我们减少了节点数量或这些节点不再可用,这些副本可能会很有用。在这种情况下,我们可以将有效负载与元数据合并,就好像它是由另一个副本生成的一样。例子: G-Counter 用地图表示 {A:1,B:2,C:1} B B {A:3,C:1} 因此,在保持正确值的同时减小其大小。问题是剪枝算法必须保证,所有副本必须独立地收敛到这个决策中。
    推荐文章