是否存在支持对标量值进行幂等操作的分布式高可用性、最终一致的数据库?
如果我们使用正常更新,那么我们有可能在不同的节点上有 2 个不同的值,并且没有一个值是正确的,因为我们需要增加两个交易值的金额。
是否有一个分布式数据库,我可以在其中发送命令 increase(key, attribute[column], diff) 以便当我收到响应时,我可以确定无论帐户的当前值如何,该操作都会在其他副本上执行? 这样,即使 2 个不同的节点增加了不同的值,我也会对增加操作具有最终一致性,因为这种增加会传播到其他副本。
我不是在谈论条件更新,因为它不适用于像 cassandra 这样的高可用性数据库(这就是他们没有该功能的原因),我对原子增加操作感兴趣。
谢谢。
PS在幂等增加的情况下,我将有一个命令增加(key,attribute,diff,lock_key),这样如果db已经收到具有相同lock_key的相同命令,它就不会增加
tl;博士:
有没有办法在分布式 AP 类数据库中进行精确计数器?2 个问题: 1)如果我发送操作以增加计数器但我没有得到响应,我会再次发送该请求但不想增加计数器两次。2)如果该计数器在另一个副本上同时更新,我想最终结合这个增加,而不是覆盖这些值。那么是否有像 increase("John's balance", +5.67, "sdfsdfas") 这样的命令,其中 sdfsdfas 是一个用于丢弃重复更新的字符串。有没有复制这种命令的数据库?