【问题标题】:Cassandra update value in one of the clustering columnCassandra 更新集群列之一中的值
【发布时间】:2017-04-22 20:32:37
【问题描述】:

建议在 cassandra 中围绕查询进行数据建模。但是,如果我将一个列建模为聚类列以便基于它进行排序,并且如果该对象是动态的,因为它是聚类列,我无法更新它的值,因为它现在属于该表的主键。在这种情况下,两个选项是

  1. 在客户端排序(这很糟糕)
  2. 删除完整行并插入新行(这将创建墓碑)

在 Cassandra 数据建模中还有其他有效的方法来实现这一点吗?

例如。我有table_A,用于查询具有特定状态的所有行,table_A_by_state。但是,由于状态将是动态的,因此您需要更新 table_A_by_state 中的状态,它带有我上面提到的选项。是否有其他人遇到过同样的问题,或者是否有其他方法可以针对此问题进行数据建模?

表_A: 列:id (K)、名称、状态

table_A_by_state: 列:id (K)、state (C)、name

【问题讨论】:

    标签: database cassandra data-modeling


    【解决方案1】:

    根据您在每个分区中的记录数量,您可以尝试使用索引,看看您可以使用它们扩展多远。

    很遗憾,没有其他选择。例如,如果您使用 Cassandra 3.0+ 并且想要使用 Materialized Views 来满足您的订购要求,那么您实际上属于您的选项 2,因为 C* 向您隐藏了它将创建另一个表并插入/在幕后更新/删除该表。所以,是的,它会为你创建墓碑。

    但是,选项 1 也不是那么糟糕(如果您管理相对少量的记录,因为获取大量行是一种反模式),假设您必须执行订单某处 .是的,存储和检索已经排序的数据是一个加分项,但最好在客户端排序而不是成为具有墓碑和写入/读取超时的魔术师......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 2017-12-20
      • 2019-11-13
      • 2018-07-30
      • 2018-10-28
      • 2020-11-16
      • 1970-01-01
      相关资源
      最近更新 更多