【问题标题】:Multiple statements in single transaction with phantom带有幻影的单个事务中的多个语句
【发布时间】:2018-12-24 22:15:19
【问题描述】:

是否可以使用幻像在一个事务中执行多个查询?我不是指批量插入/更新,而是根据另一个查询的结果执行一个查询。
在文档中没有找到任何关于此事的内容。猜一猜,由于 Cassandra 和 NoSQL 的特殊性,它的意思是这样的。

【问题讨论】:

  • 这是不可能的。您需要执行两个查询。
  • @Laxmikant 谢谢
  • @jsi 答案是正确的,不幸的是这是不可能的,但这是因为 Cassandra。批处理通常用于保证原子性,因此在可能的情况下使用批处理,这就是它们存在的真正原因。 docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlBatch.html

标签: scala cassandra phantom-dsl


【解决方案1】:

正如@Laxmikant 所指出的,我后来发现,由于最终的一致性,这对 Cassandra 来说是不可能的。这是一致性 - 可用性 - 分区容错性 的权衡。

【讨论】:

    【解决方案2】:

    作为项目负责人回答幻影。

    我认为您在批量生产方面很赚钱。它们有一些限制,它们不是你想要的 100%,但肯定有可能实现其中的一些。

    结合了多种数据修改语言 (DML) 语句(例如 INSERT、UPDATE 和 DELETE)来实现原子性和隔离性 针对单个分区,或仅针对原子性 多个分区。

    一个批次在之前的单个分区中应用所有 DML 语句 数据可用,确保原子性和隔离性。一种 针对单个分区构建良好的批处理可以减少 客户端-服务器流量,更有效地使用 单行突变。

    从最严格的意义上说,您不能以原子方式依赖先前查询的结果,但如果可能的话,我会尝试在批处理中复制该功能,因为这可能是您实现的唯一选择类似 SQL 的保证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-18
      • 2021-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多