【问题标题】:will composite partition & compound key affect perfomance in cassandra?复合分区和复合键会影响 cassandra 的性能吗?
【发布时间】:2014-06-10 02:20:31
【问题描述】:

如下所示,3 个表的 CQL。 两者具有相同的列结构,但设置 PRIMARY KEY 不同。

tab1:没有复合主键

CREATE TABLE tab1
(
key1 text,
key2 text,
key3 text,
key4 text,
data1 text,
data2 text,
data3 int,
PRIMARY KEY(key1,key2,key3,key4));

tab2: (key1,key2) 形成复合主键

CREATE TABLE tab2
(
key1 text,
key2 text,
key3 text,
key4 int,
data1 text,
data2 text,
data3 text,
PRIMARY KEY((key1,key2),key3,key4));

tab3: (key1,key2,key3) 形成复合主键

 CREATE TABLE tab3
    (
    key1 text,
    key2 text,
    key3 text,
    key4 int,
    data1 text,
    data2 text,
    data3 text,
    PRIMARY KEY((key1,key2,key3),key4));

虽然查询 value1,value2,value3 是已知的,并且 key4 被指定为一个范围。 示例 CQL 查询,

select data1,data2,data3 from tab3 where key1='value1' and key2='value2' and key3='value3' and key4 > 1000 and key4 < 1000000 ;

key4 可能有大约 50,000 条记录。

哪种表设计更好?

哪种设计的读/写性能更好?

【问题讨论】:

  • Tab3 是阅读的最佳设计。您的写入性能没有太大变化。写入很大程度上取决于您使用的一致性。找出这一点的最佳方法是加载样本数据并针对您的用例进行测试。数据大小对任何类型的性能都很重要。

标签: cassandra cql3


【解决方案1】:

如果你需要支持key4的范围查询,那么它需要是一个聚类列,这样就排除了tab1。由于您始终为 key3 指定精确值,因此无需将其设为集群列,因此 tab3 是比 tab2 更好的选择。将 key3 保留在分区键中将使您的数据在集群中更均匀地分区。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 2012-12-05
    • 2014-09-16
    • 2016-08-20
    • 2017-02-10
    • 1970-01-01
    相关资源
    最近更新 更多