从Cassandra并行读取数据的最佳方法是什么?

时间:2016-04-18 10:00:34

标签: cassandra

我是Cassandra的新手,我正在试图弄清楚如何存储数据以便能够并行执行快速读取。我读过分区数据会给性能带来问题吗?是否可以并行读取同一分区中的Cassandra表中的数据?

1 个答案:

答案 0 :(得分:4)

DataStax的Oliver Michallat有一篇很好的博客文章讨论了这个:

Asynchronous queries with the Java Driver

在那篇文章中,他描述了如何编写并行查询以解决与多分区键查询相关的问题。

他使用的示例不是运行单个查询(来自Java),而是这样:

SELECT * FROM users WHERE id IN (
    e6af74a8-4711-4609-a94f-2cbfab9695e5,
    281336f4-2a52-4535-847c-11a4d3682ec1);

更好的方法是使用async" future"像这样:

Future<List<ResultSet>> future = ResultSets.queryAllAsList(session,
    "SELECT * FROM users WHERE id = ?",
      UUID.fromString("e6af74a8-4711-4609-a94f-2cbfab9695e5"),
      UUID.fromString("281336f4-2a52-4535-847c-11a4d3682ec1")
);

for (ResultSet rs : future.get()) {
    ... // here is where you process the result set    
}

至于在同一分区内查询数据,当然可以。我假设你的意思是使用不同的聚类键(否则没有意义),这应该与上面列出的方式类似。