Falsche Zählung (*) mit cassandra-cql

8

Ich habe versucht, einige Benutzer für meine Tests zu erstellen. Ich erstellte Benutzer in einer Schleife von 0..100000 mit dem cassandra-cql Juwel für Ruby on Rails, und dann zählte ich die Benutzer in meiner Datenbank und es gab nur 10000 Benutzer als Ergebnis. Wenn ich 9000 erstelle, funktioniert alles gut. Zuerst dachte ich, die Benutzer existierten nicht, aber ich benutzte die Apollo WebUI für Cassandra, und ich konnte den Benutzer mit der ID 100000 und Benutzern unten finden. Warum passiert das?

Ich weiß, dass ich eine Zählerspalte verwenden sollte, um die Anzahl der Benutzer in meiner Anwendung anzugeben, aber ich möchte wissen, ob dies ein Fehler oder ein Fehler von mir ist.

%Vor%     
user934801 09.01.2012, 22:16
quelle

1 Antwort

23

CQL-Operationen begrenzen sowohl die Anzahl der Zeilen als auch die Anzahl der Spalten, die an den Benutzer zurückgegeben werden. Standardmäßig ist dieses Limit 10.000. Da die count (*) -Operation tatsächlich alle Zeilen abrufen muss, um die Anzahl zu erhalten, ist sie auch durch den Standardwert von 10.000 Zeilen begrenzt. Sie könnten das Limit für die Abfrage erhöhen (obwohl ich es nicht empfehle):

%Vor%

Beachten Sie, dass dies eine teure Operation ist, besonders wenn Sie viele Zeilen haben. Sie sollten davon ausgehen, dass diese Art der Abfrage für jedes mittelgroße oder große Dataset sehr lange dauern kann. Wenn es überhaupt möglich ist, sollten Sie diese Zählung in einen Zähler oder eine andere Form denormalisieren, die nicht alle Zeilen in Ihrer Spaltenfamilie abruft.

    
psanford 10.01.2012, 02:27
quelle

Tags und Links