我正在尝试理解复合柱键的概念。复合行键但无法获取它。我认为它用于获取一系列值,但我们不能将timestamp列用作群集密钥用于此目的吗?用例,优点,缺点和用途是什么?实现。请使用CQL 3进行解释。
答案 0 :(得分:3)
也许你会混淆两个引用cassandra如何存储复合主键的术语。我将解释复合键的工作原理以及如何使用Cassandra 2.0和CQL3轻松存储。
Cassandra将所有逻辑行与相同的分区键存储为单个物理宽行。分区键分为(partition_key,clustering_key)。
想象一下,您购买的表格具有以下定义:
CREATE TABLE purchase(
user text,
item text,
time timestamp,
PRIMARY KEY ((user, item), time)
);
这个数据
john car 09/01/14...
john car 09/05/13...
john house 09/07/11...
penny laptop 09/08/08...
penny laptop 09/03/11...
rachel tv 09/01/09...
Cassandar将存储该数据
john || car || 09/05/13 - 09/01/14
john || house || 09/07/11
penny || laptop || 09/08/08 - 09/03/11
rachel || tv || 09/01/09
如果您想要检索约翰购买的汽车,您可以确保两个寄存器一起存储并按时间排序。
对于查询,您始终必须设置分区键字段(=),如果您希望将聚类键的比较顺序与(<或>)进行比较,则可以。
示例:
希望它有所帮助。