Cassandra 4.0 使用 java 驱动程序进行多选

Posted

技术标签:

【中文标题】Cassandra 4.0 使用 java 驱动程序进行多选【英文标题】:Cassandra 4.0 using java driver for multiple select 【发布时间】:2022-01-01 04:45:40 【问题描述】:

尝试在单个批次中发送多个选择失败并显示错误消息:

批处理中的无效语句:仅 UPDATE、INSERT 和 DELETE 语句 是允许的。

发送多个不同查询(例如 id=x、id=y、id=z)的最佳方式是什么。

【问题讨论】:

【参考方案1】:

您不能为选择执行此操作,恕我直言,这真的没有意义。将每个查询作为单独的请求发送并收集结果。

如果 where 条件“相同”,您可以使用 IN 运算符,尽管它可能会增加协调器的负载。喜欢,where id IN (x, y, z)

【讨论】:

为什么不呢?我可以使用 Dynamodb(我试图从中迁移)来做到这一点我只想发送一堆选择,实际上它是一个主键列表(分区键 + 一个集群键)并在一次调用中取回记录 查看关于 IN 的更新。但它不适用于多列。另外,单独的查询会更快,因为请求将被发送到保存数据的节点 谢谢亚历克斯,只是为了确定下来,根据您的经验,与使用 id IN (id1, id2... id100) 进行选择相比,使用单选发送 100 个单独的请求应该更具可扩展性? 是的,单选可能会更好 - 但在实施方面更难。在引擎盖下 IN 工作如下 - 查询被发送到随机节点(因为没有路由密钥),该节点将其拆分为发送到相应节点的单独查询,等待所有结果,将数据返回给驱动程序。所以没有必要的网络跃点和等待时间

以上是关于Cassandra 4.0 使用 java 驱动程序进行多选的主要内容,如果未能解决你的问题,请参考以下文章

cassandra使用java驱动读取大量数据

Cassandra的Java驱动程序?

Cassandra:使用 DataStax Java 驱动程序选择一系列 TimeUUID

无法使用 datastax java 驱动程序通过 UDT 键从 cassandra 检索

从 Apache cassandra 3.11.4 迁移到 4.0 beta 版本时出现问题

NoClassDefFoundError - Cassandra 的 datastax java 驱动程序