So erhalten Sie die Liste aller Tabellen eines Schlüsselbereichs in Cassandra
Frage
Ich bin neu bei Cassandra und verwende derzeit CassandraCSharpDriver in einer Dummy-Anwendung.Ich möchte die Liste aller Tabellen erhalten, die ein Benutzer in einem bestimmten Schlüsselbereich beschrieben hat.
Cluster cluster = Cluster.Builder().AddContactPoints("IPAddress").Build();
Session session = cluster.Connect("MyKeySpace");
In diesem Code möchte ich die Liste aller Tabellen von MyKeySpace abrufen
Lösung
Ich werde durchgehen, wie ich diese Tabellenliste mit dem DataStax Cassandra C#-Treiber vorbereiten würde:
Stellen Sie eine Verbindung zu Ihrem Cluster her:
Cluster cluster = Cluster.Builder().AddContactPoints("IPAddress").Build();
Session session = cluster.Connect();
Ich werde eine erstellen List<String>
und verwenden Sie eine vorbereitete Anweisung (denn das ist einfach eine gute Idee), um den Namen Ihres Schlüsselraums zu binden.Meine CQL-Anweisung wählt nur aus columnfamily_name
, das sollte das sein, was Sie brauchen.
List<String> tableList = new List<String>();
String strCQL = "SELECT columnfamily_name "
+ "FROM system.schema_columnfamilies WHERE keyspace_name=? ";
PreparedStatement pStatement = _session.Prepare(strCQL);
BoundStatement boundStatement = new BoundStatement(pStatement);
boundStatement.Bind("MyKeySpace");
Jetzt führe ich die Anweisung aus, iteriere die Ergebnisse und füge jeden Tabellennamen der Liste hinzu, die ich oben erstellt habe.
RowSet results = session.Execute(boundStatement);
foreach (Row result in results.GetRows())
{
tableName = result.GetValue<String>("columnfamily_name");
tableList.Add(tableName);
}
Jetzt sollten Sie über eine Liste von Tabellen verfügen, die Sie Ihrer Benutzeroberfläche hinzufügen können.
Andere Tipps
Sie können ausführen:
generasacodicetagpre.es läuft gegen das "System"-Keyspace.
- .
-
Holen Sie sich
Spaltennamen : SELECT column_name FROM system.schema_columns WHERE keyspace_name = 'KeySpaceName' AND columnfamily_name = 'TableName';
-
Holen Sie sich Spalten-Familiennamen , d. H. Tabellennamen:
select columnfamily_name from system.schema_columnfamilies where keyspace_name='KeySpaceName';
Es gibt die Möglichkeit, Cluster-Metadaten zu verwenden, um eine Zeichenfolgenliste von KeySpaces wie so
zu erhalten generasacodicetagpre.