2014-09-10 124 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