2016-04-14 16 views
1

In Cassandra db, habe ich eine Tabelle mit 10 Millionen Zeilen. Wenn ich normale Auswahlabfrage verwende, kann ich nur 1 Verbindung zu Cassandra haben, um Daten zu holen. Ist es möglich, eine Abfrage mit Zeilennummer auszuwählen?Fetch Daten von Cassandra von Teil

E.g. Select * from abc where row = x to row = y ? 

So kann ich 10 verschiedene Themen haben, so dass jeder von ihnen wird verantwortlich sein 1 Million Zeilen zu holen. Wenn das möglich ist, sollte die Anzahl der Threads der Anzahl der Knoten in meinem Cluster entsprechen?

Ich verbinde mit meinem Cassandra-Cluster, indem ich den Java-Datastax-Treiber verwende.

Antwort

2

Ist es möglich, eine Abfrage mit Zeilennummer auszuwählen?

Nein, aber es ist möglich, eine Bereichsabfrage basierend auf dem Wert des Hash-Tokens Ihres Partitionsschlüssels auszuführen.

Angenommen, Sie haben einen Cluster mit sechs Knoten. Die Murmur3 primäre Token reicht für einen 6-Knoten-Cluster wie folgt aussehen:

node start range    end range 
1)  9223372036854775808 to -9223372036854775808 
2) -9223372036854775807 to -5534023222112865485 
3) -5534023222112865484 to -1844674407370955162 
4) -1844674407370955161 to 1844674407370955161 
5)  1844674407370955162 to 5534023222112865484 
6)  5534023222112865485 to 9223372036854775807 

Wenn ich eine Tabelle abc mit einer Partition Schlüssel pkey genannt haben, und wollte alle Zeilen für die Tabelle auf Knoten 2, meine Abfrage abfragen wie folgt aussehen würde:

SELECT * FROM abc 
    WHERE token(pkey) > 9223372036854775808 
    AND token(pkey) <= -5534023222112865485; 

Wenn eines im wert gesamte Zeile zu viele (und ich vermute, dass es sein wird), können Sie arbeiten auf Halbierungs Ihr Token Bereich, bis die Anzahl der Zeilen überschaubar wird. Denken Sie daran, dass die Auswahl von 10 Millionen Zeilen nichts ist, für das Cassandra besonders gut geeignet ist. Es könnte also ein paar Versuche dauern.

Was die Anzahl der Threads betrifft, kann dies auch einige Versuche erfordern. Aber ein Thread pro Knoten klingt wie ein vernünftiger Startpunkt.