当使用RandomPartioner和Hector作为客户端时,如何从cassandra中获取已排序的行?

Rub*_*ski 2 sorting cassandra hector

为了提高我对Hector和cassandra的技能,我正在尝试使用不同的方法从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}
];
Run Code Online (Sandbox Code Playgroud)

我不确定我是否应该使用DataType或long作为索引列,但我认为这对于这个问题并不重要.

那么如何才能对数据进行排序?如果可能的话,我想知道如何完成CQL语法和whitout.

提前致谢.

DNA*_*DNA 6

在使用RandomPartitioner时,我认为没有一种完全简单的方法可以做到这一点.

每行中的列自动按排序顺序存储,因此您可以将每条消息存储为一列,以时间戳为基础.

很快,当然,你的行会变大.所以,你需要将邮件拆分为行(按天,小时或分钟等),您的客户将需要哪些行(时间段)工作了访问.

另请参阅Cassandra时间序列数据http://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/