2014-09-10 85 views

回答

3

也许你分不清哪个是指卡桑德拉如何存储化合物的主键这两个词。我将解释复合键的工作原理以及如何使用Cassandra 2.0和CQL3轻松存储物理内容。

卡桑德拉存储所有具有相同的分区键作为一个单一的物理宽行的逻辑行。分区密钥分为(partition_key,clustering_key)。

  • partition_key:标识Cassandra中的行。所有具有相同partition_key的寄存器都将存放在同一台机器上,并且会一起存储。您可以复合partition_key。
  • clustering_key:保持数据与命令相同partition_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 

如果你想要检索约翰给你买的车可以保证有两个登记册存储在一起并按时间排序。

对于查询,您总是必须设置分区键字段(=),并且如果要将集群键的比较顺序与(<或>)进行比较,则可以使用。

实例:

  • SELECT * FROM购买其中用户= '便士' 和项= '膝上型'。返回2个寄存器。
  • SELECT * FROM购买其中user = '约翰' 和项目= '车',其中日期14年1月1日。返回1个寄存器。

希望它有帮助。

+0

当然把它添加到我所知它如何存储的主键,但我要问的东西在数据存储在形式的上述PIC链接作为列名/键(复合列名/键)如下所示:http://www.ebaytechblog.com/wp-content/uploads/2012/07/optionbest.png – 2014-09-10 22:00:13

+1

该链接仅显示某种查询的建模方法。 – gasparms 2014-09-11 07:35:05

+0

请帮忙,ddmmyyhh |事件类型在http://i.stack.imgur.com/xA6Hz.png中用作行键。 – 2014-09-11 20:48:47