嗨 剛開始對Cassandra進行調查並且有點困惑。 你可以建議架構如下:需要卡桑德拉模式
模式:email, city, items1[], items2[]
輸入:cityId, item1, item2
我需要:
select email
where city=cityId
and item1 is NOT in items1[]
and item2 is NOT in items2[]
這可能嗎?
嗨 剛開始對Cassandra進行調查並且有點困惑。 你可以建議架構如下:需要卡桑德拉模式
模式:email, city, items1[], items2[]
輸入:cityId, item1, item2
我需要:
select email
where city=cityId
and item1 is NOT in items1[]
and item2 is NOT in items2[]
這可能嗎?
您可能需要詳細一點才能得到徹底的答案。
在Cassandra 0.7以後,您可以使用二級索引根據列值選擇行(即選擇city = cityId的行)。您需要通過在列元數據中設置「index_type:KEYS」在Cassandra模式中啓用此功能。
有關更多詳細信息,請參閱http://www.datastax.com/dev/blog/whats-new-cassandra-07-secondary-indexes。
Cassandra不提供否定,因此您的「NOT in items1 []」條件可能需要由客戶端測試,而不是由Cassandra節點測試。你的物品1和物品2有多少可能的價值(只有少數或幾千個?)。
您可能需要設置純粹用於回答此特定類型查詢的列族,即具有基於item1和item2的某種複合關鍵字的查找表。但是,如果item1和item2有很多潛在的值,並且檢索客戶端的代價很高,那麼維護服務器端可能會很困難!