我遇到过 CRDT,我对它们的潜力感到兴奋,但我担心它不能很好地与我所知道的数据库配合使用。每当我必须更新我的数据库状态时,我仍然需要在写入数据之前进行某种锁定,无论是悲观的还是乐观的。除非有一个数据库接受 CRDT、OT 或某种补丁集作为其 DSL 的一部分并且它在内部处理并发?有没有这样的数据库?
1 回答
1
我知道有几个。从相当可靠的开始:
还有一些不太成熟的案例,比如AntidoteDB,它提供了很大的希望,但它的开发过程相当缓慢(目前)。
一些分布式数据库为某些 CRDT 类型提供有限的支持,例如。RavenDB和Cassandra计数器类型。
Azure CosmosDB 允许您配置多主复制,您可以在其中定义自己的“存储过程”(在 JavaScript 中),该过程将负责处理并发写入期间发生的冲突。这样您就可以编写自己的 CRDT。
还有一些产品设计为在客户端设备上用作 CRDT。这些不是严格意义上的数据库,而是可以嵌入应用程序本身的框架。它们支持持久性,但通常设计用于处理较小量的数据。这些包括Yjs、automerge和ditto。
于 2021-08-14T04:32:21.197 回答