我想用CQL3查詢具有類似的結構在卡桑德拉創建表:在卡桑德拉CQL3創建複合列鍵/名
myTable
myTable_uuid
<key_1|second_key_1> : <value_1>,
<key_1|second_key_2> : <value_2>,
<key_1|second_key_3> : <value_3>,
<key_2|second_key_4> : <value_4>,
<key_2|second_key_5> : <value_5>,
<key_2|second_key_6> : <value_6>
PRIMARY KEY(myTable_uuid, first_key_1, first_key_2, second_key_1)
表/ CF的名字是「mytable的」和myTable_uuid是行鍵。此外,我想使用CQL3創建組合列鍵,以便能夠對數據進行分組(key_1和key_2組成組)。這是否支持?如果是的話,有人可以用示例CQL3查詢或語法來幫助我。
目的:我試圖設計CFs,使得數據/值在邏輯上分組,就像在Cassandra在ebay博客(http://www.ebaytechblog.com/2012/07/16/cassandra-data-modeling-best-practices-part-1/)中解釋的數據模型。
UPDATE
我設計牢記我的申請,需要查詢。我應該用現實生活中的查詢,而不是假的,但在這裏就是我想實現:
myTable
myTable_uuid
<email|fname> : <value_1>,
<email|lname> : <value_2>,
<email|age> : <value_3>,
<email|timestamp> : <value_4>,
<shool_id|school_name> : <value_5>,
<shool_id|zip_code> : <value_6>
PRIMARY KEY(myTable_uuid, email, school_id, school_name)
的<email|fname> , <email|lname>, <email|age>, <shool_id|school_name> and <shool_id|zip_code>
將表現爲「組合柱鍵」,而不是行鍵,表中有「myTable_uuid '因爲它是行鍵。這種方法將幫助我將數據分組爲「email」和「school_id」。我如何創建'複合列鍵'並且僅支持基於複合CK中的1個查詢?例如:
SELECT fname, age WHERE email = '[email protected]'
我使用卡桑德拉1.2.6和CQL3。任何幫助表示讚賞。
如果你想創建一個複合主鍵,例如爲了避免出現熱點,你可以把這個鍵放到括號裏,如下所示: 'PRIMARY KEY((myId,myId2)key_1,key_2)' – omnibear
謝謝@omnibear,if我提到'((myId,myId2)key_1,key_2)'定義了一個主要組合鍵,我仍然可以使用只有myID查詢而不指定myId2嗎?或者,CQL3會迫使我使用兩個組合鍵的鍵? – user988544
您不會這樣做,因爲您正在分佈式環境中工作,在寫入期間保留了訂單。實際上,這意味着: 1)如果給出其他密鑰,則總是需要給出分區密鑰。 2)用於查詢組合鍵:行鍵中的第一部分需要an =運算符,second an =或「IN」;如果你再看看ebay博客,他們會提出「桶」,預定義的整數值,你可以將它添加到使用「IN」運算符進行查詢。祝你好運! – omnibear