是否有 CRDT 支持的数据库?

dav*_*ler 3 database database-design crdt

我遇到过 CRDT,并且对它们的潜力感到兴奋,但我担心它与我所知道的数据库不能很好地配合。每当我必须更新数据库状态时,我仍然需要在写入数据之前进行某种锁定(无论是悲观锁定还是乐观锁定)。除非有一个数据库接受 CRDT、OT 或某种补丁集作为其 DSL 的一部分,并且在内部处理并发?有这样的数据库吗?

\n

Bar*_*ski 8

我所知道的有几个。从相当扎实的开始:

  • RiakDB可能是最受欢迎的一种,用于许多大批量生产系统。
  • Redis Enterprise 为其大多数类型提供异地复制插件。

还有一些不太成熟的案例,例如AntidoteDB,它提供了很大的希望,但它的开发过程相当缓慢(目前)。

一些分布式数据库对某些 CRDT 类型提供有限的支持,例如。RavenDBCassandra计数器类型。

Azure CosmosDB 允许您配置多主复制,您可以在其中定义自己的“存储过程”(在 JavaScript 中),该存储过程将负责处理并发写入期间发生的冲突。这样您就可以编写自己的 CRDT。

还有一些产品设计为在客户端设备上用作 CRDT。这些不是严格意义上的数据库,而是可以嵌入到应用程序本身中的框架。它们支持持久性,但通常设计用于处理较小的数据量。其中包括Yjsautomerge同上