我了解了CRDTs并对其潜力感到兴奋,但我担心它与我所知道的数据库不太兼容。每当我需要更新我的数据库状态时,写入数据之前仍然必须进行某种形式的锁定,无论是悲观锁定还是乐观锁定。除非有一种数据库可以接受CRDTs、OTs或某种补丁集作为其DSL的一部分,并在内部处理并发?是否有这样的数据库?
我了解了CRDTs并对其潜力感到兴奋,但我担心它与我所知道的数据库不太兼容。每当我需要更新我的数据库状态时,写入数据之前仍然必须进行某种形式的锁定,无论是悲观锁定还是乐观锁定。除非有一种数据库可以接受CRDTs、OTs或某种补丁集作为其DSL的一部分,并在内部处理并发?是否有这样的数据库?
我知道几个相关的内容。以下是一些比较可靠的选择:
还有像 AntidoteDB 这样不太成熟的案例,它提供了巨大希望,但开发进程非常缓慢(目前为止)。
一些分布式数据库对某些 CRDT 类型提供有限支持,如 RavenDB 和 Cassandra 计数器类型。
Azure CosmosDB允许您配置多主复制,您可以定义自己的“存储过程”(使用JavaScript),负责处理并发写入期间发生的冲突。这样,您就可以编写自己的CRDT。