当前位置: 首页 > 知识库问答 >
问题:

卡桑德拉 - 批次太大

鄢英哲
2023-03-14

我有一个必须添加到采购订单的产品列表。采购订单具有序列号,添加产品后,应更改其状态以指示这些产品已出货。

1 个采购订单中处理的典型产品数为 500。

在DB上-我有2张桌子-

各方面的建议告诉我应该使用多个异步查询。然而,我关心的是整个操作的原子性。鉴于我的要求,请建议什么是最好的前进方式。

先谢谢你。

共有2个答案

陈志
2023-03-14

然而,我担心的是整个操作的原子性。鉴于我的要求,请建议什么是最好的前进方向。

请注意,Cassandra批次不提供隔离(http://www.datastax.com/dev/blog/atomic-batches-in-cassandra-1-2):

请注意,我们在数据库意义上的意思是“原子”,即如果批处理的任何部分成功,那么所有部分都会成功。未暗示其他担保;特别是没有隔离;其他客户端将能够从批处理中读取第一个更新的行,而其他客户端正在进行中。

因此,如果您需要隔离,正如@xmas79回答的那样,您应该将产品和采购订单一起存储在一个表中。

如果隔离和性能不重要,可以尝试调整Cassandra yaml并增加batch_size_fail_threshold_in_kb参数的值

任何超过此值的批次都将失败。默认为50kb (10x警告阈值)。

姬俊能
2023-03-14

这很有趣。插入大量插入物(

因为Cassandra也在单行级别管理原子性,所以您可以通过添加一个表来“标记”您的采购订单,在一行中只将采购订单id和商品存储到一个映射中,从而在您的查询中实现幂等性。然后,您可以展开或后期处理此表,以根据需要继续您的工作流程。

 类似资料:
  • 我使用的是spring数据cassandra,需要使用jpa映射一个字段,在cassandra中,该字段的类型为

  • 我们运行的cassandra集群有3个节点,复制因子为2。 我们的nodejs服务器是查询这个集群的唯一地方。 是否有其他任何地方的参数设置可能导致不一致的查询? cassandra v2.2.4 nodejs驱动程序v3.0.0 编辑-添加我正在做的事情的示例: 1)检查用户名是否被占用 2)创建用户

  • 我们一直在使用Spark RDD API(Spark 2.0)来处理在Cassandra.Note中建模的数据,这些数据在Cassandra中建模以实现高效的读写。 然而,现在还有SparkSQLAPI,Spark DataFrame API,它也是一种替代的数据访问方法-http://spark.apache.org/docs/latest/sql-programming-guide.html

  • 我用Spring Data Cassandra 2.2.1开发了一个新的应用程序,想在Cassandra 2.1.9服务器上运行它(旧的,我知道)。但是我们得到了错误 Spring数据卡桑德拉手册声称Spring数据2.2.1至少需要卡桑德拉2.1,所以这应该有效,但它没有。我们包含的唯一特定于卡桑德拉的依赖项是 我怎样才能让这个工作?

  • 我有这个代码: 我得到以下异常: 所有主机尝试查询失败(已尝试:/127.0.0.1:9042(com.datastax.driver.core.TransportException:[/127.0.0.1:9042]无法连接)),堆栈跟踪:com.datastax.driver.core.exceptions.NoHostAvailableException:所有主机尝试查询失败(已尝试:/12

  • 我们有这个Cassandra集群,想知道当前的性能是否正常,我们可以做些什么来改善它。 集群由位于同一数据中心的3个节点组成,每个节点的总容量为465GB,堆容量为2GB。每个节点有8个内核和8GB或RAM。不同组件的版本为 工作量描述如下: 空格键使用org.apache.cassandra.locator。SimpleStrategy布局策略和复制因子为3(这对我们非常重要) 工作负载主要由写