Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-Cassandra,包含大量参数;在;_Java_Cassandra_Query Optimization_Datastax Java Driver - Fatal编程技术网

Java-Cassandra,包含大量参数;在;

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是分区键(从查询中可以看到

我正在用Cassandra DB编写一个Java应用程序。我在“in”子句中提出了一个包含大量(超过100000个)参数的请求:

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
}