理解和定义 Cassandra 中的主键
Understanding and Defining Primay Keys in Cassandra
在 Cassandra 中,假设我有一个名为 cats
的 table
在table猫中,假设一只猫只能根据猫的颜色和猫的名字来唯一识别,例如;
color: blue, name: henry
然而,可能有很多猫是蓝色的。同样,可能有很多猫叫亨利。然而,只有一只名叫亨利的猫是蓝色的。
我的问题是,我应该将什么定义为主键以及如何定义。例如,我应该将名称作为分区键,还是应该将颜色作为分区键,还是应该将这两个字段都作为分区键的一部分?添加颜色 and/or 名称作为聚类键是否有益?我还阅读了关于散列值作为分区键的内容;将单独的散列值作为分区键并将名称和颜色添加为二级索引会在这里提供任何好处吗?
这里的性能影响是什么?哪种类型的 table 设置性能最高?
用户将按名称和颜色或仅按颜色进行搜索,而绝不会仅按名称进行搜索。
提前致谢。
要从 table 检索数据,必须提供 分区键 中定义的所有列的值。因为在你的情况下用户
可以只查询颜色,也可以查询颜色和名称,你需要遵循定义
PRIMARY KEY (color, name);
有了这个,你可以只用颜色查询,因为它是一个分区键,也可以用两个键查询
在 Cassandra 中,假设我有一个名为 cats
在table猫中,假设一只猫只能根据猫的颜色和猫的名字来唯一识别,例如;
color: blue, name: henry
然而,可能有很多猫是蓝色的。同样,可能有很多猫叫亨利。然而,只有一只名叫亨利的猫是蓝色的。
我的问题是,我应该将什么定义为主键以及如何定义。例如,我应该将名称作为分区键,还是应该将颜色作为分区键,还是应该将这两个字段都作为分区键的一部分?添加颜色 and/or 名称作为聚类键是否有益?我还阅读了关于散列值作为分区键的内容;将单独的散列值作为分区键并将名称和颜色添加为二级索引会在这里提供任何好处吗?
这里的性能影响是什么?哪种类型的 table 设置性能最高?
用户将按名称和颜色或仅按颜色进行搜索,而绝不会仅按名称进行搜索。
提前致谢。
要从 table 检索数据,必须提供 分区键 中定义的所有列的值。因为在你的情况下用户 可以只查询颜色,也可以查询颜色和名称,你需要遵循定义
PRIMARY KEY (color, name);
有了这个,你可以只用颜色查询,因为它是一个分区键,也可以用两个键查询