2011-11-07 20 views
2

爲了提高我對赫克託和卡桑德拉的技能,我嘗試使用不同的方法來查詢卡桑德拉的數據。如何在使用RandomPartioner和Hector作爲客戶端時將已排序的行從cassandra中取出?

目前我正在嘗試製作一個簡單的消息系統。我想按照時間順序將最新發布的消息先發送到最後發佈的消息。

在普通的sql中可以使用'order by'。我知道如果您使用OrderPreservingPartitioner,但可以使用此分區器,並且效率低於RandomPartioner,則可以使用此分區器。我想創建一個具有時間戳als值的輔助列上的索引,但我無法弄清楚如何獲取數據。我相信我必須至少使用兩個查詢。

我列的家庭是這樣的:

create column family messages 
with comparator = UTF8Type 
and key_validation_class=LongType 
and compression_options = 
{sstable_compression:SnappyCompressor, chunk_length_kb:64} 
and column_metadata = [ 
{column_name: message, validation_class: UTF8Type} 
{column_name: index, validation_class: DateType, index_type: KEYS} 
]; 

我不知道我是否應該使用數據類型或長的索引列,但我認爲這不是對這個問題很重要。

那麼我怎樣才能得到數據排序?如果可能的話,我想知道它已經完成了白色的CQL語法和白屏。

在此先感謝。

回答

6

我不認爲有一個完全簡單的方法來使用RandomPartitioner做到這一點。

每行內的列都按照排序順序自動存儲,因此您可以將每條消息存儲爲一列,並以時間戳記爲鍵。

很快,當然,你的排會變大。因此,您需要將消息分成幾行(按天,小時或分鐘等),並且客戶需要計算出要訪問的行(時間段)。

又見Cassandra time series datahttp://rubyscale.com/2011/basic-time-series-with-cassandra/https://www.cloudkick.com/blog/2010/mar/02/4_months_with_cassandra/http://pkghosh.wordpress.com/2011/03/02/cassandra-secondary-index-patterns/

+0

感謝@DNA上http://rubyscale.com/2011/basic-time-series-with-cassandra/後幫助了我很多! – Rubenski

相關問題