随着 CQL3 的出现,术语与旧的节俭术语略有不同。
基本上
Create Table foo (a int , b int, c int, d int, PRIMARY KEY ((a,b),c))
将制作一个 CQL3 表。 a 和 b 中的信息用于制作分区键,这描述了信息将驻留在哪个节点上。这就是 20 亿单元限制中所说的“分区”。
在该分区内,信息将由 c 组织,称为集群键。 a、b 和 c 一起定义了 d 的唯一值。在这种情况下,分区中的单元数将为 c * d。所以在这个例子中,对于任何给定的 a 和 b 对,c 和 d 的组合只能有 20 亿个
因此,当您对数据进行建模时,您希望确保主键会发生变化,以便您的数据将随机分布在 Cassandra 中。然后使用集群键确保您的数据以您想要的方式可用。
观看此视频,了解有关 cassandra 中的数据建模的更多信息
The Datamodel is Dead, Long live the datamodel
编辑:来自 cmets 的另一个示例
Create Table foo (a int , b int, c int, d int, e int, f int, PRIMARY KEY ((a,b),c,d))
分区将由 a 和 b 的组合唯一标识。
在分区内 c 和 d 将用于对分区内的单元格进行排序,因此布局将
有点像:
(a1,b1) --> [c1,d1 : e1], [c1,d1 :f1], [c1,d2 : e2] ....
所以在这个例子中你可以有 20 亿个单元格,每个单元格包含:
所以 20 亿的限制是指 (c,d,e) 和 (c,d,f) 的唯一元组之和。