使用Cassandra的Java驱动程序进行多键空间开发

时间:2018-08-13 14:37:40

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

当前,我们使用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连接,而无需对现有逻辑(配置除外)进行太多更改。任何建议或帮助都将是一个很好的起点

1 个答案:

答案 0 :(得分:1)

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

Java驱动程序的最新版本支持通过setKeyspace function of the SimpleStatement class设置键空间,但是它也需要在Cassandra方面进行支持(尽管至少DSE 6.0支持该版本,所以不记得了)。

(更新):查询级别的设置键空间未合并到OSS Java驱动程序和available only in DSE Java driver中。