CQL: как проверить, существует ли пространство ключей?
Мне нужно проверить, существует ли определенное пространство ключей в базе данных Cassandra. Мне нужно написать smth так:
if (keyspace KEYSPACE_NAME not exists) create keyspace KEYSPACE_NAME;
есть команда описать пространство ключей, но могу ли я каким-то образом получить информацию из него в скрипте cql?
3 ответов
в настоящий момент грамматика cql не дает create keyspace if not exists
. Вероятно, в будущем они добавят эту функцию. Тот, кто приблизится к этому, будет этим улучшение, возможно, они добавят для создания keyspace тоже. пожимает
вы, вероятно, можете сделать что-то подобное, используя CQL в python или в любых клиентах Cassandra. У меня есть простой create keyspace, если он не существует, написанный на 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)
{
}
просто предоставление свежей информации. По состоянию на CQL3 при создании пространства ключей вы можете добавить оператор if, подобный этому
CREATE KEYSPACE IF NOT EXISTS Test
WITH replication = {'class': 'SimpleStrategy',
'replication_factor' : 3}
согласно:https://issues.apache.org/jira/browse/CASSANDRA-2477, как Кассандра 1.1, теперь вы можете сделать:
USE system;
SELECT * FROM schema_keyspaces;