我的應用程序功能與Cassandra集成時遇到了一些問題。我正在嘗試爲我的users
創建內容Feed。用戶可以創建帖子,反過來,該帖子的字段爲user_id
。我將Redis用於整個社交圖,並僅將Cassandra列用於對象。在Redis中,用戶1擁有一組名爲user:1:followers
的所有他/她的關注者ID。這些關注者id與posts表中的users表和user_ids中的Cassandra id相對應。Cassandra/Redis:創建沒有Cassandra'IN'二級索引的feed的方法?
我的目標本來是簡單地從這個Redis的設置成將使用FROM posts WHERE user_id IN (user_ids here)
並抓住所有的職位從二級索引user_id
查詢插上所有的user_id
S的。問題在於Cassandra故意在二級索引中沒有supportIN
運算符,因爲該索引會強制Cassandra搜索其所有節點的值。我剩下的只有兩個選項,我可以看到:爲郵件ID創建一個user:1:follow_feed
的Redis列表,然後在單個查詢中爲這些帖子搜索Cassandra的主索引,或者按照現在的方式保留它,並運行單個查詢每user_id
在user:1:follower
集。
由於我已經在Redis中擁有大量的圖形數據,並且這個選項會爲每個用戶添加一個新列表,所以我真的偏向第一個選項。第二種方式更糟糕。我會對Cassandra施加大量的讀取負載,並且需要很長時間才能爲一組ID標記運行單個查詢。據我所知,我被困在一塊岩石和一塊堅硬的地方之間。有沒有辦法用多個值查詢二級索引?如果沒有,與更多的Redis列表或多個Cassandra查詢的選項相比,是否有更高效的方式來加載這些內容提要(RAM和速度方面)?提前致謝。
有趣,所以主鍵可以是user_id和post_id? – user3181113
主鍵可以是分區鍵的組合(任何PRIMARY KEY子句中的第一項*和*集羣鍵(所有PRIMARY KEY子句中的其餘項)。 –