CQL:comment vérifier si l'espace existe?
Question
J'ai besoin de vérifier si certaines clés existe dans la base de données Cassandra.J'ai besoin d'écrire qch comme ceci:
if (keyspace KEYSPACE_NAME not exists) create keyspace KEYSPACE_NAME;
Il y a une commande décrire les clés, mais je peux en quelque sorte en extraire des informations dans cql script?
La solution
En ce moment, cql grammaire ne pas fournir create keyspace if not exists
.Probablement dans l'avenir, ils vont ajouter cette fonctionnalité.L'un se rapprochent de ce, ne serait-ce l'amélioration de la, peut-être qu'ils vont ajouter pour créer des clés trop. haussements d'épaules
Vous pouvez probablement faire quelque chose de similaire à l'aide de CQL en python ou en tout Cassandra clients.J'ai un simple de créer des clés si n'existe pas écrit en 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)
{
}
Autres conseils
Fournir simplement de nouvelles informations.AS de CQL3 Tout en créant un espace de frappe que vous pouvez ajouter si cette déclaration comme celle-ci
CREATE KEYSPACE IF NOT EXISTS Test
WITH replication = {'class': 'SimpleStrategy',
'replication_factor' : 3}
Selon: https://issues.apache.org/jira/browse/cassandra-2477, à partir de Cassandra 1.1, vous pouvez maintenant faire:
USE system;
SELECT * FROM schema_keyspaces;