Cassandra com.datastax.driver 打开 session 到可能不存在的 key 空间

标签 cassandra datastax-java-driver java

我正在从事使用 cassandra 作为 NoSql 数据库的项目。我正在尝试设置我的测试框架,以便能够使用任意键空间,以避免同时运行的不同测试之间发生冲突。

我希望能够针对可能不存在的键空间创建 session 。本质上我想要的是首先检查它是否存在,如果不存在则创建它,然后进行连接。

似乎 Api 已捕获 22,因为为了执行命令(可能创建键空间),我已经必须连接到现有键空间。

我错过了什么?

最佳答案

查看 DataStax 文档中的教程,您应该能够想出一种方法来执行此操作。第一部分说明如何connect to the database cluster .它会引导您提出一个不特定于键空间的简单 connect 方法。

private Cluster cluster;

public void connect(String node) {
   cluster = Cluster.builder()
         .addContactPoint(node)
         .build();
}

下一部分讨论如何use a session object to execute CQL statements .您可能会查询 schema_keyspaces 表以查看所讨论的键空间是否存在,如下所示:

Session session = cluster.connect();
ResultSet results = session.execute("SELECT * FROM system.schema_keyspaces " +
    "WHERE keyspace_name = 'myKeyspaceNameGoesHere';");

教程随后具体展示了如何通过 Java 驱动程序创建新的键空间。

session.execute("CREATE KEYSPACE myKeyspaceNameGoesHere WITH replication " + 
      "= {'class':'SimpleStrategy', 'replication_factor':3};");

请注意,我已从文档中的示例中提取代码。您需要替换您自己的键空间名称、复制策略和因子。

关于Cassandra com.datastax.driver 打开 session 到可能不存在的 key 空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21268104/

相关文章:

cassandra - 升级到 Cassandra Java 驱动程序 4.x,出现错误 "You specified dc1 as the local DC, but some contact points are from a different DC"

cassandra - 如何获取 cql 查询的墓碑计数?

Cassandra:向表中添加新列

java - 使用改造向请求添加 header 时如何避免在主线程上等待?

java - JVM中的最大线程数?

java - 使用java从cassandra读取数据

sql - 使用像 MonetDB 这样的列式数据库来避免维度建模?

Cassandra 编写语义

java - 在 View 之间传递对象

java - 列删除会增加 Cassandra 中的读取延迟吗?