Cassandra CQL:如何检查键空间是否存在?
我需要检查Cassandra数据库中是否存在某些键空间。我需要这样写smth:Cassandra CQL:如何检查键空间是否存在?,cassandra,cql,Cassandra,Cql,我需要检查Cassandra数据库中是否存在某些键空间。我需要这样写smth: if (keyspace KEYSPACE_NAME not exists) create keyspace KEYSPACE_NAME; 有一个描述键空间的命令,但我能在cql脚本中以某种方式从中检索信息吗?截至目前,如果不存在,则不提供创建键空间。可能在将来,他们会添加此功能。一个接近这个,可能是这个,也许他们也会加入创建键空间。耸耸肩 您可能可以在python或任何Cassandra客户机中使用CQL执行类似
if (keyspace KEYSPACE_NAME not exists) create keyspace KEYSPACE_NAME;
有一个描述键空间的命令,但我能在cql脚本中以某种方式从中检索信息吗?截至目前,如果不存在,则不提供创建键空间。可能在将来,他们会添加此功能。一个接近这个,可能是这个,也许他们也会加入创建键空间。耸耸肩
您可能可以在python或任何Cassandra客户机中使用CQL执行类似的操作。我有一个简单的createkeyspace,如果不存在的话,它是用java编写的
try
{
if (cluster.describeKeyspace("new_keyspace") == null)
{
System.out.println("create new keyspace");
KeyspaceDefinition ksdef = HFactory.createKeyspaceDefinition("new_keyspace");
cluster.addKeyspace(ksdef);
}
else
{
System.out.println("keyspace exists");
}
}
catch (HectorException e)
{
}
根据:,从Cassandra 1.1开始,您现在可以执行以下操作:
USE system;
SELECT * FROM schema_keyspaces;
只是提供新的信息。在创建键空间时,您可以像下面这样添加if语句
CREATE KEYSPACE IF NOT EXISTS Test
WITH replication = {'class': 'SimpleStrategy',
'replication_factor' : 3}
对不起,我刚才误按了接受编辑
。请不要添加会改变编辑问题上下文的内容。使用系统建议编辑中的code>就是这样一个例子。问题是系统表往往会随着时间的推移(很快)发生变化。支持这样的代码可能是一场噩梦,特别是当您必须为各种用户提供遗留支持时。在cql3.x中,信息现在位于名为system\u schema
的键空间中。请注意,据我所知,descripe*
函数的速度相当慢。希望你不必经常使用它。这在2012年得到了回答。。。除非在写这篇文章的时候,你还在使用古老的卡桑德拉,否则你真的应该阅读当前的文档。