Ich möchte eine Tabelle mit breiten Partitionen erstellen (oder, anders gesagt, eine Tabelle, die keine Wertespalten (Nicht-Primärschlüsselspalten) hat), die die effiziente Beschaffung von Zeilen in jeder seiner Partitionen ermöglicht. Hier ist eine einfache Definition einer solchen TabelleIst diese Art der Zählertabellendefinition gültig?
CREATE TABLE IF NOT EXISTS test_table
(
partitionKeyCol timestamp
clusteringCol timeuuid
partitionRowCountCol counter static
PRIMARY KEY (partitionKeyCol, clusteringCol)
)
Das Problem bei dieser Definition, und andere wie es strukturiert ist, ist, dass ihre Gültigkeit nicht klar von der in der Dokumentation enthaltenen Informationen abgeleitet werden.
Was die Dokumentation tun Zustand (in Bezug auf Zähler):
Ein Zähler Spalte kann weder als Teil einer Tabelle die angegeben werden
PRIMARY KEY
, noch verwendet, um eineINDEX
zu erstellen Eine Zählersäule kann nur in einer eigenen Zählertabelle definiert werden (die ich für eine Tabelle halte, die ausschließlich Zählerspalten als ihre Wertespalten definiert hat)
Was die Dokumente beschreiben nicht (in Bezug auf Zähler):
Die Fähigkeit einer Tabelle eine statische Zählerspalte für sie (angesichts der einzigartigen Schreibpfad von Zählern definiert haben glaube ich, dass dies ist erwähnenswert)
die Fähigkeit einer Tabelle, die für sie Nullwert Spalten definiert (es eine gewidmet Zähler Tabelle, da mein Verständnis des Wortes), so dass auch eine haben statische Cou nter Spalte definiert dafür
die Informationen zu diesem Thema gegeben, dass in vorhanden ist (und außerhalb des) die Dokumente, eine solche Definition scheint gültig zu sein. Ich bin mir jedoch nicht sicher, wie das möglich ist, da die Aktualisierungen von partitionRowCountCol
die Verwendung eines Schreibpfads erfordern, der sich von dem unterscheidet, der zum Einfügen von (partitionKeyCol, clusteringCol)
Tupeln verwendet wird.
Ist diese Art von Zähler-Tabelle-Definition gültig? Wenn ja, wie werden Schreibvorgänge in die Tabelle ausgeführt?
Ich versuche, eine Zeitreihe auf eine Tag-basierte Weise zu partitionieren, und Weise eine Möglichkeit zur Verfügung zu stellen, um die Anzahl der Einträge an einem bestimmten Tag zu erhalten, ohne das Aggregat "COUNT" zu verwenden, von dem ich glaube, dass es einen Zeilenscan durchführt gibt das Ergebnis zurück. Die Zählung und die Tupel werden jedoch niemals gleichzeitig abgerufen, so dass die Aufnahme des Zählers in die Tabelle streng durch den Wunsch motiviert war, die Erstellung einer Tabelle nur dafür zu vermeiden. – Kevin
Bei einer etwas verwandten Anmerkung finde ich es seltsam, dass eine nicht-lebensfähige Tabelle erfolgreich erstellt werden kann. Kann dies als Fehler angesehen werden? – Kevin
Es ist seltsam. Ich könnte vorschlagen, ein JIRA-Ticket mit [Cassandra] (https://issues.apache.org/jira/browse/CASSANDRA) zu öffnen, wenn du denkst, dass es sich lohnt, es zu knöpfen. –