我正在使用datastax enterprise 4.5。在任何性能方面,定义复合分区键是否有任何缺点而不是单个列分区键?如果一列复合分区具有高基数但复合材料的另一个库具有低基数会怎么样?
答案 0 :(得分:3)
复合键用于增加分区的基数。例如,具有5个x值和10个y值的PRIMARY KEY ((x,y))
之类的密钥将最终创建50个不同的分区。如果您需要更多地分发数据,这是有用的,但如果您有一个具有足够高基数的单个变量,则这是不必要的。
更现实的示例可能是创建PRIMARY KEY ((Gender, ZipCode), age, userid)
的复合键。如果您仅使用Gender作为分区键,则最终只能使用2个分区来存储数据!添加邮政编码允许总共所有99999个邮政编码或(zip + 4甚至更多),同时仍允许您按性别分隔数据。这对于按位置或类似的方式查看人口统计信息非常理想。
基本上,经验法则是您需要大量分区来避免群集中的热点,而复合键可以通过组合字段的基数来轻松增加分区数。