Eventualy一致的分布式数据库与幂等增加运算符?

use*_*408 5 database high-availability eventual-consistency cassandra nosql

是否存在分布式高可用性,最终是一致的db,它支持标量值的幂等操作?

如果我们使用正常更新,那么我们可能会在不同节点上有2个不同的值,并且没有一个值是正确的,因为我们需要通过两个事务值来增加金额.

是否有分布式数据库,我可以发送命令增加(键,属性[列],差异),以便当我收到响应时,我可以确定该操作将在其他副本上执行,无论帐户的当前值如何?通过这种方式,即使两个不同的节点增加了不同的值,我也将具有增加操作的最终一致性,因为该增加将传播到其他副本.

我不是在讨论条件更新,因为它不适用于cassandra这样的高可用性db(这就是为什么它们没有这个功能),我对原子增加操作感兴趣.

谢谢.

PS在幂等增加的情况下,我会有一个命令增加(key,attribute,diff,lock_key),这样如果db已经收到相同的lock_key相同的命令,db就不会增加

TL;博士:

有没有办法在分布式AP类数据库中制作精确的计数器?2个问题:1)如果我发送操作来增加一个计数器并且我没有得到响应,我会再次发送该请求,但不想两次增加计数器.2)如果该计数器在另一个副本上同时更新,我希望最终合并这个增加,而不是覆盖这些值.那么是否有像增加("John的余额",+ 5.67,"sdfsdfas")这样的命令,其中sdfsdfas是用于丢弃重复更新的字符串.是否有一个db复制这种命令?

use*_*408 1

好的,我看到问题 2 已在 cassandra 中得到解决https://issues.apache.org/jira/browse/CASSANDRA-1072 分布式计数器将结合增加操作,因此最终一切都会保持一致。

问题 1(幂等性)是一个悬而未决的问题:https ://issues.apache.org/jira/browse/CASSANDRA-4775

至少我知道人们会考虑这一点,这对我的场景来说非常重要,所以我会尽力帮助解决这个问题。

我希望这有助于澄清我的问题。