使用多个键查询的 Cassandra 驱动程序

Cassandra driver querying with multiple keys

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

cassandra 查询字符串是这样的:

SELECT value from my_table WHERE key IN (?);

如果我为每个参数准备一个单独的查询字符串,我可以使用 cass_statement_bind_string_n ,但是有没有办法不管我想查询多少个键都使用一个字符串?

这里有几件事:

  1. 语法 IN (?) 意味着您始终只要求一项 - 您的列表只有一项;
  2. 如果要查询多个项目,需要将语法更改为IN ?并使用ass_statement_bind_collection_by_name to the value has LIST type. See doc on how you can create collection types;
  3. 绑定
  4. 使用 IN 查询分区键实际上是 anti-pattern - 它会增加执行查询的节点的负载,并使您的查询变慢,因为协调节点需要将请求发送到其他节点,并等待结果,收集它们并发回。如果您为每个分区键发出单独的请求,并在您的应用程序中收集答案,将会更快。