2012-08-06 130 views
1

我調查卡桑德拉,卻找不到任何文檔,下面的答案。卡桑德拉和查詢層次

我需要跨越深層次查詢範圍。我已經確定表示層次結構最簡單的方法是將每個層次都作爲一個列。例如:

Origin   Manufacturer Price ID 
Europe.Germany VW Group.Audi 20000 1 
Europe.Germany VW Group.Porshe 21000 2 
Europe.Germany BMW    19000 3 

這裏是一個僞SQL例如:

SELECT ID FROM CompositeTable WHERE (Origin STARTS WITH 'Europe') 
AND (Manufacturer STARTS WITH 'VW Group' AND IS NOT 'VW Group.Porshe' OR IS 'BMW') 
AND (Price BETWEEN 18000 AND 22000) 

結果:

ID = [1, 3] 

能卡桑德拉跨越綜合指數進行這種類型的搜索?

回答

2

Cassandra中的複合鍵是DBMS中的一種multiple-column index,其中在c1,c2和c3的索引中,c1,c2和c3的索引是從c1到c6的列。 DB總是會嘗試使用您索引查詢是否爲=, > , <, >=, <=操作上(C1),(C1,C2)或(C1,C2,C3),而不是(C2),(C2,C3),(C3)或(c1,c3)。目前,此案在卡桑德拉相同的,但在這裏你有C1上多列索引,以C6 [自第一款基於C1列進行排序和碰撞延續到C2和遵循上]

+0

好了,所以一)卡桑德拉做通過二級索引支持複合索引?和b)它會支持跨這些列的範圍查詢嗎?一些成熟的數據庫甚至不支持後者。 – IamIC 2012-08-06 13:08:24

+0

我檢查了Datastax文檔,並沒有提及組合索引。但是,它也沒有提到複合鍵,它肯定存在。我的方案是複合鑰匙的好例子嗎? – IamIC 2012-08-06 13:12:58

+1

查看二級索引完全不同於組合鍵。基本上在cassandra中,你不能根據它們的值來過濾列。爲了實現這一點,您需要在列上創建二級索引。但複合鍵是不同的。它是一個結構,可以幫助我們毫不費力地實現自動索引,但僅僅通過對數據進行建模 – Tamil 2012-08-06 13:35:56