2017-07-20 4 views
0

Wir haben eine Anforderung, wo wir eine relationale Datenbanktabelle T1 mit 20 Feldern haben. Wir erfassen alle in dieser Tabelle erfolgten Änderungen/Aktualisierungen in verschiedenen Feldern (Commit-Protokolle) und nehmen diese in der entsprechenden Tabelle CT1 in Cassandra auf bzw. wenden sie an, d. H. Die Cassandra-Tabelle CT1 hat exakt dieselben Schemata/Felder wie T1 (relationale DB-Tabelle).Cassandra und historische Daten Zeit weise

Für Cassandra Tabelle CT1 haben wir zusätzliche Anforderung, dass wir alle geänderten Werte aller Felder erfassen/speichern/abrufen wollen, dh, wenn Feld f1 20-mal geändert wurde, sollten alle seine geänderten Werte mit dem entsprechenden Änderungs-Zeitstempel gespeichert werden. Wenn das Feld f3 100 Mal geändert wurde, sollten alle Werte gespeichert werden. Hinweis: Verschiedene Felder ändern sich zu unterschiedlichen Zeiten und jedes Feld ändert die Anzahl der Variablen, was bedeutet, dass ein Feld 1000 Mal am Tag geändert werden kann, während sich ein anderes Feld niemals ändert.

Dies ist eine Art Zeitreihendaten für jedes Feld. Also möchte ich wissen, wie man ein solches Datenmodell in Cassandra effizient darstellt? Eine weitere Anforderung ist, dass ich den neuesten Wert aller Felder in der Tabelle effizient abrufen möchte.

Zum Beispiel:

wenn f1 geändert 10 Mal an einem Tag, für f1 mich seinen letzten Wert will zurückgegeben werden. Wenn f2 zuletzt eine Woche zurück geändert wurde, dann sollte für f2 der neueste Wert zurückgegeben werden, usw. für andere Felder.

Antwort

0

Sie können mehr Details über Zeitserienspeicher in Cassandra finden, indem Sie this und this Artikel lesen. So leicht die zuletzt Werte zu finden, können Sie die Tabellenstruktur wie folgt erstellen:

CREATE TABLE table1_history (
column_name text, 
change_time timestamp, 
column_value text, 
PRIMARY KEY (column_name, change_time), 
) WITH CLUSTERING ORDER BY (change_time DESC) 

So können Sie den aktuellen Wert mit einer gemeinsamen Auswahldatum aus Ihrer Tabelle finden.

Verwandte Themen