gpt4 book ai didi

java - 如何知道 Cassandra(CQL) 中受影响的行?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:13:02 25 4
gpt4 key购买 nike

似乎没有任何直接的方法可以知道更新和删除语句在 cassandra 中受影响的行。

例如,如果我有这样的查询:

DELETE FROM xyztable WHERE PKEY IN (1,2,3,4,5,6);

现在,当然,因为我已经传递了 6 个键,所以显然有 6 行会受到影响。

但是,就像在 RDBMS 世界中一样,是否有任何方法可以了解 datastax-driver 中更新/删除语句中受影响的行?

我读过 cassandra 没有对写入操作提供反馈 here .

除了我无法通过谷歌看到关于这个主题的任何其他讨论。

如果这不可能,我能否确定使用上面给出的查询类型,它将全部删除或无法全部删除?

最佳答案

在最终一致的世界中,您可以将这些操作看作是在保存删除请求,并根据请求的一致性级别,等待来自多个节点的确认该请求已被接受。然后将请求异步传递到其他节点。由于不依赖于诸如外键之类的任何东西,因此如果请求被集群成功接受,则没有什么可以阻止数据被删除。

但是,有很多如果。例如,删除一致性级别为 1 的数据,成功地被一个节点接受,然后立即发生节点硬故障,如果在故障之前没有复制它,可能会导致删除丢失。

另一个例子——在删除过程中,一个节点宕机了,并且宕机了很长一段时间,超过了 gc_grace_period,也就是说,超过了用删除的数据删除墓碑所需的时间。然后,如果这个节点恢复了,那么所有突然从集群的其余部分删除的所有数据,但不是从这个节点删除的,都将被带回集群。

因此,为了避免这些情况,并考虑操作成功和最终,cassandra 管理员需要实现一些措施,包括定期修复作业(以确保所有节点都是最新的)。应用程序还需要决定什么是更好的 - 以可能的数据丢失为代价的一致性级别 1 的更快性能与具有更高一致性级别但数据丢失可能性较小的较低性能。

关于java - 如何知道 Cassandra(CQL) 中受影响的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28611459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com