Nosql

如何在 Apache Cassandra 中查詢實體的屬性

  • July 17, 2015

我是 Apache Cassandra 的新手,我想知道如何創建一個可以按非鍵列過濾行的表。

在關係數據庫中,我會簡單地創建一個以 ID 作為主鍵的表,然後執行 a SELECT,按非鍵列條目進行過濾。然而,在 Cassandra 中,我不能做這樣的事情。

我已經閱讀了 Cassandra 中的二級索引。我知道我可以將索引添加到屬性列,然後執行一個簡單的 CQL SELECT,類似於關係數據庫,這會產生我想要的行,但這將是低效的。沒有更好的方法嗎?

據我所知,在 Cassandra 中,對於SELECT按非關鍵屬性進行過濾,您只有三個選項:

**(1)**應用端過濾。也就是說,如果您從 CQL 獲取結果SELECT,請使用您的應用程序來過濾結果。對於除最小數據集之外的所有數據集,這是不明智的。

**(2)**咬緊牙關,創建那些二級索引。

**(3)**可能是最常見的選項,通過由鍵組成的行來複製數據。也就是說,對於您要應用的任何過濾條件,請在數據庫中創建一個新條目,在其中儲存與過濾器匹配的所有相關行條目的鍵。

請注意,雖然第三個選項最常見,但由於固有的反規範化,您幾乎最終會產生一些數據不一致。Apache Cassandra 並不是萬能的,它只是很好地處理了一些應用程序。

祝你好運!

PS: 這裡有一些不錯的部落格文章,可以解釋邏輯數據模型級別的一些理論。 第 1部分和第 2 部分

引用自:https://dba.stackexchange.com/questions/107409