Cassandra - 不同表中的相同分区键 - 何时正确?

Udi*_*Udi 3 partition cassandra-2.0 scylla cassandra-3.0

我以一种方式模拟了我的Cassandra,我有几个具有相同分区键的表--Uuid.

每个表都有它的分区键,其他列表示我想要询问的特定查询的数据.

例如 - 1个表有Uuid和列关于它的状态(此表中没有其他聚类键),表2将包含相同的Uuid(也没有聚类键)但是具有表示此Uuid数据的不同列.

这是正确的建模吗?在表格周围复制相同的分区键是否错误,以便将每个表分组以保存特定用例的相关列?或者它更喜欢只使用1个表并查询它们并在代码中获取特定用例的相关数据?

Nad*_*'El 6

这种建模没有任何问题.无论是好,还是坏,不必与数据的两件只是一个表有明显的选择,取决于你的工作负载:例如,如果您经常需要阅读这两个相同的UUID的状态和数据列,那么这些读如果两个东西都在同一个表中,只需要查询一次,效率会更高.如果您总是只阅读一个而不是两个,那么从单独的表中读取将更有效.此外,如果这个工作负载不是主要读取而是主要是写入,那么写入一个表而不是两个表将更有效.

  • 我不知道你在寻找什么样的参考,谷歌可能会比我更好地帮助你.但一个很好的起点是https://www.datastax.com/dev/blog/basic-rules-of-cassandra-data-modeling.它提到了诸如"重复数据是卡桑德拉生活中的事实."不要害怕它.但是"当你发出一个读取查询时,你想要从尽可能少的分区读取行.",但请阅读整个内容.当然,当您注意到"规则"冲突时,您需要选择与您的特定用例最相关的一个. (3认同)