2016-05-31 8 views
0

Cassandra Datenbankcassandra, um durch Nicht-Primärschlüssel Abhilfe

Es scheint, dass es keine Möglichkeit gibt, auf alles andere als Primärschlüssel zu bestellen.

Ich habe zwei Spalten: ID und Zeitstempel.

Ich möchte nur eine (!) Zeile pro ID, aber ich möchte filtern (im Grunde gleich wie Sortieren?) Meine Ergebnisse basierend auf Timestamp.

Ich möchte diesen Befehl auszuführen:

SELECT id, timestamp FROM " + TableName + " WHERE timestamp < ? ALLOW FILTERING; 

Wie kann ich dies tun, während sichergestellt wird, habe ich nur eine einzige Zeile pro-ID (was nicht möglich ist, wenn meine Primärschlüssel sowohl besteht aus (ID und Zeitstempel

)
+0

Warum möchten Sie * 'ALLOW FILTERING' verwenden? "ALLOW FILTERING" sagt im Grunde Cassandra "Hey, es ist mir egal, wie viel Leistung saugt, lassen Sie mich fragen, wie ich in einer relationalen Datenbank bin." – Aaron

+0

Werfen Sie einen Blick auf diesen Link, sollte es für Ihre Zwecke genügen: https://academy.datastax.com/resources/getting-started-time-series-data-modeling –

+0

@Aaron Ich habe versucht, es irgendwann zu entfernen und habe einen Fehler bekommen, der besagt, dass ich ohne sie nicht sortieren konnte. Meine Abfrage wurde nicht ausgeführt. Auch die Leistung ist nicht wirklich wichtig für die Programme, die das verwenden (nächtliche Jobs und ähnliches). – Nixxon

Antwort

0

ich habe noch gründlich diese Methode zu testen. Aber ich denke, dass ich eine Abhilfe gefunden habe.

I Zeitstempel ermöglicht einen Teil des Primärschlüssels

zu sein

Aber bevor UPDATE/PUT Aufruf werde ich alle Zeilen löschen

WHERE id = ? 

, dass sie den aktuellen Zeitstempel für diese ID ersetzt. Auf diese Weise sollte ich immer noch Zeitstempel sortieren können, während ich eine Zeile pro ID behalten muss.

Verwandte Themen