我是Cassandra的新手,我正在试图弄清楚如何存储数据以便能够并行执行快速读取。我读过分区数据会给性能带来问题吗?是否可以并行读取同一分区中的Cassandra表中的数据?
答案 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
}
至于在同一分区内查询数据,当然可以。我假设你的意思是使用不同的聚类键(否则没有意义),这应该与上面列出的方式类似。