【问题标题】:cassandra batch statement to insert same values while only one column is mismatchingcassandra 批处理语句在只有一列不匹配时插入相同的值
【发布时间】:2017-05-19 23:42:03
【问题描述】:

我有一个批量插入语句。

假设我有一个查询:

BEGIN BATCH
INSERT INTO abc (col1,col2,col3,col4) VALUES (1,'xyz',99,632);
INSERT INTO abc (col1,col2,col3,col4) VALUES (1,'xyz',79,632);
APPLY BATCH;

它只是插入第一条语句,而不是插入第二条语句中存在的值。

注意:col1 是集群键,col4 是分区键。

我们如何确保最后一个插入语句保存在 db 中?

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    我在这里回答了类似的问题:Cassandra batch statement - Execution order

    基本上,您不能在批处理语句中强制执行任何操作顺序(除非您强制写入时间戳)。如果col1col4 确实是您的键,那么您应该只期望写入一行(因为它们具有相同的键值,并且Cassandra 中的主键是唯一的)。所以看起来你的第一个语句必须每次都“赢得”“最后写入获胜”的比赛。

    此外,BATCH 语句旨在以原子方式将相同的数据写入多个表。它们并不是真正设计为支持将不同的数据写入 same 表。在这种情况下,您将新的 col2col3 值写入同一个主键,所以我不确定您要在这里完成什么。

    I.E.如果在col3col4=632col1=1 中79 确实是您想要的值,那么为什么还要将99 写到col3 呢?

    【讨论】:

      猜你喜欢
      • 2018-08-11
      • 2016-01-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2015-07-30
      • 2017-01-07
      • 1970-01-01
      • 2012-07-08
      相关资源
      最近更新 更多