2013-06-04 14 views
5

Haben Sie einen Tisch mit etwa 20 Millionen Zeilen in Cassandra. Die Tabelle ist nach einer primary_key Spalte sortiert, die eine Zeichenfolge ist. Wir verwenden 'ByteOrderedPartitioner', also sind die Zeilen nach der primary_key und nicht nach einem Hash der primary_key Spalte geordnet.Holen Sie sich den letzten Datensatz in Cassandra

Was ist ein guter Weg, um den allerletzten Datensatz in der Tabelle zu bekommen?

Vielen Dank!

+0

Sie sind wegen der Wartung dringend empfohlen, nicht die ByteOrderedPartitioner verwenden erforderlich, wenn Sie Ihre Änderungen Verteilungsdaten oder Sie Ihren Cluster zu skalieren. Wenn möglich, sollten Sie Ihr Datenmodell ändern, damit Sie stattdessen Spaltenbereichsabfragen verwenden können. – Richard

Antwort

1

Wenn für "allerletzten Datensatz" Sie die eine als letzte bestellt, ich glaube nicht, dass Sie es tun können, wie ein "GET", müssen Sie Zeilen scannen. Das Beste, was Sie tun können, afaik, ist eine gute Auswahl zum Scannen (guter Startschlüssel) entsprechend Ihrem Primärschlüssel.

Von DataStax docs.

„Verwendung der bestellten Partitionierungs von Primärschlüssel bestellt Scans ermöglicht Das heißt, Sie Zeilen scannen kann, als ob Sie einen Cursor durch einen traditionellen Index bewegten Wenn zum Beispiel. Ihre Anwendung hat Benutzer Namen als Zeilenschlüssel, können Sie Zeilen für Benutzer, deren Namen zwischen Jake und Joe fallen.Dieser Typ der Abfrage ist nicht möglich mit zufällig partitionierte Zeilenschlüssel, weil die Schlüssel in der Reihenfolge ihrer gespeichert sind MD5-Hash (nicht sequenziell). "

Wenn Sie eine bessere Lösung finden, lassen Sie es mich wissen.

Grüße, Carlo

Verwandte Themen