3

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

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

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

我错过了什么?

4

1 回答 1

5

查看 DataStax 文档中的教程,您应该能够想出一种方法来做到这一点。第一部分说明如何连接到数据库集群。它会引导您connect提出一种不特定于键空间的简单方法。

private Cluster cluster;

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

下一部分讨论如何使用session对象来执行 CQL 语句。您可能可以通过以下方式查询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};");

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

于 2014-01-21T21:41:53.290 回答