2016-08-15 7 views
0

Ich habe ein bisschen spezielle Anfrage.Cassandra: Sortiert nach Anfrage

Konstellation: Ich verwende eine Redis DB um Geodaten zu speichern und benutze georedius, um sie zurück zu bekommen, sortiert nach Entfernung. Mit diesen Tasten suche ich die Daten in Cassandra. Aber das Ergebnis von Cassandra ist in den Schlüssel oder etwas anderes sortiert.

Was ich will ist, um die Inforamtions in der gleichen Reihenfolge zurück zu bekommen, die ich angefordert habe. Der Partitionsschlüssel wird von ID (Ich bekomme Form redis) und einem Status erstellt.

Kann ich Cassandra nach ID-Array sortieren?

Antwort

0

Partitionsschlüssel sind so entworfen, dass sie zufällig auf verschiedene Knoten verteilt sind. Sie können ByteOrderedPartitioner verwenden, um geordnete Abfragen auszuführen. Aber BOP gelten als Anti-Pattern ist Cassandra und ich werde es sehr empfehlen. Sie können mehr darüber hier lesen Cassandra ByteOrderedPartitioner.

Sie können dem Primärschlüssel weitere Parameter hinzufügen, die festlegen, wie Daten auf dem Datenträger gespeichert werden. Diese werden als Clustering-Schlüssel bezeichnet. Sie können Order-by-Abfragen für Clustering-Schlüssel durchführen. Dies ist ein gutes Dokument zum Clustering von Schlüsseln https://docs.datastax.com/en/cql/3.1/cql/ddl/ddl_compound_keys_c.html.

Wenn Sie mehr Schemadetails teilen können, kann ich vorschlagen, was als Clustering-Schlüssel verwendet werden soll.

+0

Danke. OK. Ich habe gehofft, dass es eine Funktion geben wird, die es danach sortiert. Also muss ich das in meinem Code machen. Ich habe eine Länge und einen Breitengrad, aber es gibt keine Informationen in der Cassandra-Tabelle, um die Entfernung zwischen Such- und Ergebnispunkt zu erhalten. – CordlessWool