Java-Cassandra,包含大量参数;在;
我正在用Cassandra DB编写一个Java应用程序。我在“in”子句中提出了一个包含大量(超过100000个)参数的请求:Java-Cassandra,包含大量参数;在;,java,cassandra,query-optimization,datastax-java-driver,Java,Cassandra,Query Optimization,Datastax Java Driver,我正在用Cassandra DB编写一个Java应用程序。我在“in”子句中提出了一个包含大量(超过100000个)参数的请求: SELECT country, gender FROM persons WHERE person_id IN (1,7,18, 34,...,) 但我认为,在“in”中加入许多参数看起来很糟糕 我也可以提出很多这样的请求(再次超过100000次迭代): 也没什么好处,时间太长了 在我的案例中,是否有任何API、模式可以遵循 谢谢如果个人id是分区键(从查询中可以看到
SELECT country, gender FROM persons WHERE person_id IN (1,7,18, 34,...,)
但我认为,在“in”中加入许多参数看起来很糟糕
我也可以提出很多这样的请求(再次超过100000次迭代):
也没什么好处,时间太长了
在我的案例中,是否有任何API、模式可以遵循
谢谢如果
个人id
是分区键(从查询中可以看到),那么使用IN将导致很多问题,因为它会使协调器节点过载,需要从其他节点收集结果
在这种情况下,最有效的方法是触发单个请求,但通过
executeAsync
执行它们,因此它们将被发送到不同的节点。在这种情况下,您需要控制发送了多少请求,例如通过计算信号量,另外您可能需要对控制飞行中请求数量的连接池参数计时:存在间隙。我刚刚举了一个小例子,BETWEEN
是无效的CQL。person\u id
列是表的分区键吗?
for (Integer id : ids) {
ResultSet res = session.execute(preparedStatement(id));
//processing with data from Cassandra
}