The 2P-Set Conflict-Free Replicated Data Type (CRDT) supports two phases for each possible element: in the first phase an element can be added to the set and the subsequent additions are ignored; in the second phase an element can be removed after which it will stay removed forever regardless of subsequent additions and removals. We generalize the 2P-Set to support an infinite sequence of alternating additions and removals of the same element. In the presence of concurrent additions and removals on different replicas, all replicas will eventually converge to the longest sequence of alternating additions and removals that follows causal history. The idea of converging on the longest-causal sequence of opposite operations had already been suggested in the context of an undo-redo framework but the design was neither given a name nor fully developed. In this paper, we present the full design directly, using nothing more than the basic formulation of state-based CRDTs. We also show the connection between the set-based definition of 2P-Set and the counter-based definition of the $\infty$P-Set with simple reasoning. We then give detailed proofs of convergence. The underlying \textit{grow-only dictionary of grow-only counters} on which the $\infty$P-Set is built may be used to build other state-based CRDTs. In addition, this paper should be useful as a pedagogical example for designing state-based CRDTs, and might help raise the profile of CRDTs based on \textit{longest sequence wins}.


翻译:2P-Set冲突无关复制数据类型支持每个可能元素有两个阶段:第一个阶段可以将元素添加到集合中,会忽略后续添加;第二个阶段可以将元素删除,之后不管有没有后续添加或删除,该元素都将永远被删除。本文将2P-Set进行扩展,支持对同一元素进行无限次的交替添加和删除。在不同副本同时进行添加和删除的情况下,所有副本最终会收敛于根据因果历史遵循最长交替添加和删除序列。在撤销-重做框架中提出了在相反操作的最长序列上进行收敛的想法,但该设计没有被命名或完全开发。本文直接展示该设计的完整设计,仅使用基本的状态CRDTs公式,因此本文也可以作为设计状态CRDTs的教学示例,还可以帮助提升基于“最长序列获胜”的CRDTs的知名度。我们还展示了2P-Set的基于集合的定义与$\infty$P-Set的基于计数器的定义之间的联系,并给出了详细的收敛证明。基于$\infty$P-Set构建的潜在的“只增不减的计数器的只增不减的字典”可以用于构建其他基于状态的CRDTs。

0
下载
关闭预览

相关内容

【2023新书】使用Python进行统计和数据可视化,554页pdf
专知会员服务
125+阅读 · 2023年1月29日
专知会员服务
44+阅读 · 2020年10月31日
5个步骤,轻松设计出用户操作日志
人人都是产品经理
1+阅读 · 2022年10月15日
使用 GraphQL 和 Ballerina 操作多个数据源
InfoQ
0+阅读 · 2022年7月21日
图机器学习 2.2-2.4 Properties of Networks, Random Graph
图与推荐
10+阅读 · 2020年3月28日
Hierarchically Structured Meta-learning
CreateAMind
23+阅读 · 2019年5月22日
Transferring Knowledge across Learning Processes
CreateAMind
25+阅读 · 2019年5月18日
逆强化学习-学习人先验的动机
CreateAMind
15+阅读 · 2019年1月18日
Unsupervised Learning via Meta-Learning
CreateAMind
41+阅读 · 2019年1月3日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
16+阅读 · 2018年12月24日
disentangled-representation-papers
CreateAMind
26+阅读 · 2018年9月12日
【推荐】RNN/LSTM时序预测
机器学习研究会
25+阅读 · 2017年9月8日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
3+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
1+阅读 · 2011年12月31日
Arxiv
0+阅读 · 2023年5月25日
Arxiv
0+阅读 · 2023年5月24日
Arxiv
0+阅读 · 2023年5月23日
Arxiv
0+阅读 · 2023年5月23日
VIP会员
相关资讯
5个步骤,轻松设计出用户操作日志
人人都是产品经理
1+阅读 · 2022年10月15日
使用 GraphQL 和 Ballerina 操作多个数据源
InfoQ
0+阅读 · 2022年7月21日
图机器学习 2.2-2.4 Properties of Networks, Random Graph
图与推荐
10+阅读 · 2020年3月28日
Hierarchically Structured Meta-learning
CreateAMind
23+阅读 · 2019年5月22日
Transferring Knowledge across Learning Processes
CreateAMind
25+阅读 · 2019年5月18日
逆强化学习-学习人先验的动机
CreateAMind
15+阅读 · 2019年1月18日
Unsupervised Learning via Meta-Learning
CreateAMind
41+阅读 · 2019年1月3日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
16+阅读 · 2018年12月24日
disentangled-representation-papers
CreateAMind
26+阅读 · 2018年9月12日
【推荐】RNN/LSTM时序预测
机器学习研究会
25+阅读 · 2017年9月8日
相关基金
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
3+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
1+阅读 · 2011年12月31日
Top
微信扫码咨询专知VIP会员