【发布时间】:2014-11-04 06:22:06
【问题描述】:
我正在尝试理解复合列键和复合行键的概念,但无法理解。我认为它用于获取一系列值,但我们不能为此目的使用时间戳列作为集群键吗?什么是用例,优点,缺点和实现。请使用 CQL 3 进行解释。
【问题讨论】:
标签: cassandra cql3 cassandra-2.0 datastax
我正在尝试理解复合列键和复合行键的概念,但无法理解。我认为它用于获取一系列值,但我们不能为此目的使用时间戳列作为集群键吗?什么是用例,优点,缺点和实现。请使用 CQL 3 进行解释。
【问题讨论】:
标签: cassandra cql3 cassandra-2.0 datastax
您可能会混淆这两个术语,即 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
如果您想检索 john 购买的汽车,您可以确保将两个寄存器存储在一起并按时间排序。
对于查询,您始终必须设置分区键字段 ( = ),如果您想将集群键的顺序与 ( ) 进行比较,您可以设置。
例子:
希望对你有帮助。
【讨论】: