A partire da 1.1, è possibile interrogare lo spazio chiavi system
, famiglia di colonne schema_columnfamilies
. Se si sa quale spazio delle chiavi si desidera controllare, questo CQL dovrebbe elencare tutte le famiglie delle colonne in uno spazio delle chiavi:
SELECT columnfamily_name
FROM schema_columnfamilies WHERE keyspace_name='myKeyspaceName';
Il rapporto descrive questa funzionalità è qui: https://issues.apache.org/jira/browse/CASSANDRA-2477
Anche se, fanno notare che alcuni dei i nomi delle colonne di sistema sono cambiati tra 1.1 e 1.2. Quindi potresti dover fare un po 'di fatica per ottenere i risultati desiderati.
Modifica 20.160.523 - Cassandra 3.x Aggiornamento:
Si noti che per Cassandra 3.0 in su, è necessario fare qualche aggiustamento alla query di cui sopra:
SELECT table_name
FROM system_schema.tables WHERE keyspace_name='myKeyspaceName';
Funziona con CQL 3 ma non con CQL 1 o 2: SELECT columnfamily_name FROM System.schema_columnfamilies WHERE keyspace_name = 'myKeyspaceName'; – Datageek
Se qualcuno controlla se esiste una tabella e, in caso contrario, se la crea, allora questo metodo non è sicuro per i thread. Se più thread/client eseguono questo tipo di azione contemporaneamente, selezionare potrebbe non restituire alcun risultato, ma l'istruzione CREATE potrebbe già fallire. In tal caso è meglio andare con una soluzione basata su eccezioni. –
non funzionerà con il driver Datastax v3.0. Usa KeyspaceMetadata/TableMetadata per quello –