【问题标题】:Multi-Keyspace with Cassandra's Java Driver on fly使用 Cassandra 的 Java 驱动程序的多键空间
【发布时间】:2023-03-11 21:10:01
【问题描述】:

目前,我们使用 Cassandra 的 Java 驱动程序根据属性文件中定义的属性配置会话,如下所示:

Cluster cluster = Cluster.builder()
            .addContactPoints(contactPoints)
            .withPort(environment.getRequiredProperty("cassandra.port", Integer.class))
            .withCredentials(username, password)
            .build();

Session session = cluster.connect(environment.getRequiredProperty("cassandra.keyspace"));

我们现在想要实现的是动态使用多键空间,如果有办法做到这一点,能够检测给定请求的 cassandra 连接,而无需对现有逻辑进行太多更改(除了配置)。对此的任何建议或帮助都是一个很好的开始

【问题讨论】:

    标签: java cassandra datastax-enterprise datastax-java-driver


    【解决方案1】:

    实现这一点的最佳方法是在所有查询中将表指定为keyspace.table,并且不要依赖会话中设置的键空间。您当然可以拥有多个会话对象 - 每个键空间一个,但不建议这样做,因为每个会话都非常重量级,并且至少打开 2 个到集群中每个节点的连接。

    Java 驱动程序的最新版本支持通过 setKeyspace function of the SimpleStatement class 设置键空间,但它也需要 Cassandra 端的支持(虽然不记得是哪个版本,但至少 DSE 6.0 支持)。

    (更新):查询级别的设置keyspace没有合并到OSS Java驱动中,available only in DSE Java driver.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-28
      • 2020-01-08
      • 2014-04-05
      • 1970-01-01
      • 2016-08-04
      • 2022-01-01
      • 1970-01-01
      • 2015-05-13
      相关资源
      最近更新 更多