讓我們假設用戶擁有博客帖子的數據模型。每篇文章都有一個獨特的標題和許多屬性。Cassandra中的二級索引將導致兩個DB讀取
我有一個柱族「帖子」,其中每行是這樣的:
posts = {
"yersterday" : {
date : 03-04-2012
userID : abfe222234
tags : "beatles,paul"
}
}
我要編制索引的帖子用戶,所以我有另一個專欄家庭:
user_posts = {
abfe222234 : {
yesterday : null
....
}
}
這個模型經過了大量有關Cassandra二次索引的研究,其中我來到這些幻燈片:http://www.slideshare.net/edanuff/indexing-in-cassandra,並且瞭解到超級列族越來越少使用。
我的問題:
如果希望所有有關用戶帖子的細節,這意味着我要讀的DB兩次:一次獲得所有帖子的ID,並一次獲取所有文章的這些ID的詳細信息。
我錯過了什麼?
謝謝, Issahar。
編輯:
另一種選擇,就是讓「user_posts」是一個超級CF,並使其包含所有在裏面「上崗」的數據。
優點:您必須只提取一次所有數據。
缺點:1.您將複製所有數據。 2.您不能搜索一次帖子的屬性。
你說什麼?
而如果有數百個帖子呢?你如何獲取它?用'KEY'('a','b',...)「構建一個非常非常長的CQL?它似乎並不正確! – 2012-03-04 16:23:48
慢慢地,我想象。嚴重的是,使用謂詞似乎是合乎邏輯的方法。例如,請參見http://prettyprint.me/2010/01/20/introduction-to-nosql-and-cassandra-part-2/,具體來說「讀取或寫入數據時,可以讀取/寫入一組列一個特定的鍵(行),這組列可以是列表列名稱指定的,也可以是切片謂詞,假設列以某種方式排序(這是一個配置參數)「 – 2012-03-04 16:27:35
但它們不是完全排序。你有用戶A的帖子,然後是用戶B的帖子,然後是用戶A的帖子。BTW,我說希伯來語,所以謝謝你的指針...... :) – 2012-03-04 16:30:57