Cassandra驱动程序用多个键查询

时间:2019-05-17 02:11:47

标签: c++ cassandra cassandra-2.0

我正在尝试从C ++应用程序查询cassandra,并返回一组键的值。我正在使用此处描述的datastax驱动程序:http://datastax.github.io/cpp-driver/api/

cassandra查询字符串是这样的:

SELECT value from my_table WHERE key IN (?);

如果我为每个参数数量准备一个单独的查询字符串,则可以使用cass_statement_bind_string_n,但是有一种方法可以使用一个字符串,而不管我要查询的键的数量如何?

1 个答案:

答案 0 :(得分:1)

这里有几件事:

  1. 语法IN (?)意味着您总是只询问一项-您的列表中只有一项;
  2. 如果要查询多个项目,则需要将语法更改为IN ?,并使用ass_statement_bind_collection_by_name将其绑定到具有LIST类型的值。 See doc on how you can create collection types;
  3. 使用IN来查询分区键确实是一种反模式-它会增加正在执行查询的节点的负载,并使查询变慢,因为协调节点将需要向其他节点发送请求,并且等待结果,收集它们,然后发送回去。如果您对每个分区键分别发出请求,并在应用程序中收集答案,则会更快。