有什麼辦法從列系列或關鍵空間獲取所有數據?Hector Cassandra數據檢索
我不知道如何在不知道爲數據庫中的每個條目輸入單個關鍵字的情況下做到這一點的方法。
我的問題是,我試圖創建一個Twitter克隆,其中每個消息都有自己的ID,並將它們存儲在相同列家族中的相同鍵空間中。
但是我怎麼讓他們回來?我將不得不跟蹤每一個身份證,這是不可能的。
任何幫助/想法,將不勝感激。
有什麼辦法從列系列或關鍵空間獲取所有數據?Hector Cassandra數據檢索
我不知道如何在不知道爲數據庫中的每個條目輸入單個關鍵字的情況下做到這一點的方法。
我的問題是,我試圖創建一個Twitter克隆,其中每個消息都有自己的ID,並將它們存儲在相同列家族中的相同鍵空間中。
但是我怎麼讓他們回來?我將不得不跟蹤每一個身份證,這是不可能的。
任何幫助/想法,將不勝感激。
我一直在尋找的答案是CQL,Cassandra的查詢語言。它的工作原理類似於SQL這正是我需要後的功能IM。
這個link有一些優秀的教程。
您可以使用get_range_slices
檢索列族中的所有數據,將範圍的開始和結束設置爲相同的值以指示您需要所有數據。
現在還沒有找到一個方便的赫克託的例子,但我認爲它使用RangeSlicesQuery ...
可是,爲什麼你要做到這一點並不清楚 - 對於這種應用,你通常會擡頭按ID標識消息,並使用索引來確定您需要哪些ID。例如,爲每個列出所有消息的用戶存儲一行。例如在消息列族,你可能有這樣的:
MsgID0001 -> time text
1234567 Hello world
MsgID0300 -> time text
3456789 LOL ROTFL
,然後在「user2msg」列族,存儲消息,可能使用時間戳列的名稱,以便將信息存儲在排序的時間順序:
UserID001 -> 1234567 3456789
MsgID0001 MsgID0300
然後這可以用來查找特定用戶的消息,可能按時間過濾。
你會那麼還需要進一步列家庭存儲用戶配置文件等
也許你需要更多的細節添加到你的問題?
更新回覆評論:是的,如果每行有一條消息,則必須單獨檢索每條消息。但你有什麼選擇?檢索全部消息僅用於對消息進行批處理,而不用於(例如)向用戶顯示其最近的消息。請記住,檢索所有消息可能需要很長時間 - 您尚未解釋爲什麼要檢索所有消息以及您將如何處理這些消息。你期望有多少條消息?
一種可能性是denormalise,即在一排的每個用戶,存儲整個消息,因此不必做用於每個消息的單獨的查找步驟。不過,這會使存儲量增加一倍。
你是對的,我讀過它,一種方法是爲進入數據庫的消息添加一個索引,然後搜索符合某些用戶發佈的標準的消息。 但是,如果我使用的密鑰不會意味着生病只獲取與該密鑰的一條消息的數據? – 2012-02-22 23:53:15
請注意,CQL具有與Thrift接口相同的功能 - 它只是以不同的方式公開。 – DNA 2012-03-26 20:49:46
問題是我是新手,沒有什麼經驗,CQL和Astyanax(NetFlix庫)比Hector更好,主要是因爲它們有很好的文檔記錄和清晰的用法,但是hector確實提供了最強大的界面。 – 2012-03-26 20:52:17