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

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

似乎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};");

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

09-15 20:53