我正在从事使用 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/