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

最佳答案

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

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

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

08-04 02:50