gpt4 book ai didi

merge - 当 KEY 已作为批处理存在时,Cassandra 更新或插入

转载 作者:行者123 更新时间:2023-12-04 03:37:48 26 4
gpt4 key购买 nike

我想用 Cassandra 2.0 + 使用 CQL,这看起来像

BATCH BEGIN;
UPDATE keyspace.Table SET column = "value" IF EXISTS
INSERT keyspace.Table (...) VALUES (...) IF NOT EXISTS
BATCH END;

对于要插入/更新的每个项目,基本上有两个语句;这基本上应该模仿 T-SQL 的 MERGE 行为

这是我想要执行的任务的正确假设吗?

最佳答案

INSERTUPDATE在 CQL 中,幕后调用是相同的,因为在存储层上,无论如何你只有真正的更新。在 CQL 中,INSERTUPDATE被暴露为语法糖,让 CQL 感觉更像 SQL。有细微的差别,例如 UPDATE声明采取 WHERE子句,也用于增加计数器表,但当 CQL 转换到存储层时,它们并没有真正影响底层 PUT 语义。
IF NOT EXISTSINSERT 一起使用或 IFUPDATE 一起使用在 CQL 中告诉 Cassandra 在后端执行比较和交换操作。这意味着只有满足前提条件才会执行操作。这需要共识,因此在分布式设置中(例如超过 1 个 Cassandra 节点),这可能会导致性能损失。

因此,鉴于此,我不认为这反射(reflect)了 SQL MERGE 行为。它的共同点是两种变体都需要服务器获取行锁才能以原子方式执行操作。

关于merge - 当 KEY 已作为批处理存在时,Cassandra 更新或插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23595585/

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