建议在cassandra中围绕查询进行数据建模。但是,如果我模型将列设置为聚类列以进行基于它的排序,并且该对象是动态的,因为它是聚类列,我无法更新其值,因为它现在属于该表的主键。在这种情况下,有两个选项
在Cassandra数据建模中还有其他有效的方法吗?
EG。我有table_A和查询获取具有特定状态的所有行table_A_by_state。但是,由于状态将是动态的,并且您需要更新table_A_by_state中的状态,该状态带有我上面提到的选项。有其他人遇到过同样的问题,还是有其他方法可以解决这个问题?
TABLE_A: 列:id(K),名称,状态
table_A_by_state: 列:id(K),state(C),name
答案 0 :(得分:3)
根据您在每个分区中的记录数量,您可以尝试使用索引编制,并查看可以使用它们进行缩放的距离。
不幸的是没有其他选择。例如,如果您正在使用Cassandra 3.0+并且想要使用Materialized Views以满足您的订购要求,那么您实际上是在您的选项2中,因为C *隐藏了它将创建另一个表并且在场景下插入/更新/删除该表。所以,是的,它会为你创建墓碑。
但是,选项1也不是那么糟糕(如果你管理相对少量的记录,因为获取大量的行是一种反模式),假设你必须在某处执行命令 。是的,存储和检索已经订购的数据是大加,但更好的是对客户端进行排序,而不是必须成为具有墓碑和写/读超时的魔术师......