Nosql
如何在 Apache Cassandra 中查詢實體的屬性
我是 Apache Cassandra 的新手,我想知道如何創建一個可以按非鍵列過濾行的表。
在關係數據庫中,我會簡單地創建一個以 ID 作為主鍵的表,然後執行 a
SELECT
,按非鍵列條目進行過濾。然而,在 Cassandra 中,我不能做這樣的事情。我已經閱讀了 Cassandra 中的二級索引。我知道我可以將索引添加到屬性列,然後執行一個簡單的 CQL
SELECT
,類似於關係數據庫,這會產生我想要的行,但這將是低效的。沒有更好的方法嗎?
據我所知,在 Cassandra 中,對於
SELECT
按非關鍵屬性進行過濾,您只有三個選項:**(1)**應用端過濾。也就是說,如果您從 CQL 獲取結果
SELECT
,請使用您的應用程序來過濾結果。對於除最小數據集之外的所有數據集,這是不明智的。**(2)**咬緊牙關,創建那些二級索引。
**(3)**可能是最常見的選項,通過由鍵組成的行來複製數據。也就是說,對於您要應用的任何過濾條件,請在數據庫中創建一個新條目,在其中儲存與過濾器匹配的所有相關行條目的鍵。
請注意,雖然第三個選項最常見,但由於固有的反規範化,您幾乎最終會產生一些數據不一致。Apache Cassandra 並不是萬能的,它只是很好地處理了一些應用程序。
祝你好運!