当我使用cassandra时,我遇到了cassandra阅读的性能瓶颈。
有两种方法可以读取我的数据,其中包含大量的行键。第一个是通过索引切片查询api使用索引和查询。第二个是使用rangelicequery api,因为行是序列。
当我使用索引时,它总是抛出timeoutexception。然后我想知道rangelicequery是否表现更好?
具有200k行和3m列的cf。查询检索20k行。
密钥缓存为30000。
答案 0 :(得分:2)
我认为在这种情况下,使用range_slice_query可能会更好。它以块的形式从磁盘上传输数据,而不是为每个索引条目进行随机读取(我认为这就是get_indexed_slices的工作原理)。唯一可以确定的方法是尝试两种方法并进行比较。
要停止超时,您可以减少每次查询返回的行数(“count”http://wiki.apache.org/cassandra/API/)或增加使用hector的超时长度。
您是否考虑过使用hadoop来做您想做的事情? 20k行是相当多的,它可能更适合您的任务。有一个可以使用的cassandra源代码提供的InputFormat。它使用下面的范围查询,预先检查哪个节点查询每个令牌范围。这可能是您查询的最快方式。以下是http://wiki.apache.org/cassandra/HadoopSupport的文档。