请求被发送到协调器节点协调器节点为每个id找到一个副本,并向它们发送单独的请求等待每个节点的结果,将它们收集到结果集 &发回结果:您的所有子查询都需要等待最慢的副本你有一个额外的网络希望,从协调者到副本您给协调器节点施加了更大的压力,因为它需要将结果保存在内存中如果您对来自应用程序的每个 id 值进行大量并行异步请求,那么您:避免额外的跃点 - 如果您使用带有令牌感知负载平衡的准备好的语句,则查询将直接发送到副本你可能会在得到结果时开始处理,而不是等待一切因此发送并行异步请求可能比使用 IN 发送一个请求更快...I am implementing a feature which requires looking up Cassandra by a list of primary keys.Below is an example data where id is primary keymytableid column11 4232 5423 6784 455345 4356346 24357 6788 45649 546Most of my queries a lookup by id, but for some special cases I would like to get data for a list of ids.The way I am currently doing is a follows:public Object fetchFromCassandraForId(int id);int ids[] = {1, 3, 5, 7, 9};List<Object> results;for(int id: ids) { results.add(fetchFromCassandraForId(id));}This results in issuing multiple network call to cassandra, Is it possible to batch this somehow, therefore i would like to know if cassandra supports fast lookup by list of idsselect coulmn1 from mytable where id in (1, 3, 5, 7, 9);?Any help or pointers would be appreciated? 解决方案 If the id is the full primary key, then Cassandra supports this, although it's not recommended from performance point of view:request is sent to coordinator nodecoordinator node finds a replica for each of the id, and send individual request to themwait for results from every node, collect them to result set & send backAs result:all your sub-queries need to wait for slowest of the replicasyou have an additional network hope from coordinator to replicayou put more pressure to the coordinator node as it need to keep results in memoryIf you do a lot of parallel, asynchronous requests for each of the id values from application, then you:avoid an additional hop - if you're using prepared statements with token-aware load balancing, then query is sent directly to replicasyou may start to process results as you get them, not waiting for everythingSo sending parallel asynchronous requests could be faster than sending one request with IN... 这篇关于通过java中的主键列表进行cassandra查找的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
09-05 05:51
查看更多