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

Cra*_*per 3 cassandra

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

Aar*_*ron 5

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

使用 Java 驱动程序进行异步查询

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

他使用的示例不是运行单个查询(来自 Java),如下所示:

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

更好的方法是使用异步“未来”,如下所示:

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    
}
Run Code Online (Sandbox Code Playgroud)

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