2016-07-21 10 views

Antwort

0

Sekundärindizes in Cassandra werden gespeichert und auf jedem beibehalten Knoten. Wenn Sie also nach einem Sekundärindex filtern, muss Cassandra die Suche auf jedem Knoten durchführen und dann die kombinierten Ergebnisse zurückgeben. Daher kann die Filterung durch Sekundärindizes erheblich langsamer sein als die Filterung nach Partitionsschlüssel (gemäß meinen Tests kann sie je nach Daten und Topologie 10 Mal langsamer sein).

Die Wartung Ihrer eigenen Indextabelle ist für die meisten Anwendungsfälle effizienter, Sie müssen sich jedoch selbst um die Aktualisierung der Indextabelle kümmern. Außerdem müssen Sie zwei Abfragen zum Abrufen Ihrer Daten ausführen: eine, die die Indextabelle abfragt, und eine weitere, um die tatsächlichen Daten abzurufen.

Eine andere Lösung wäre, Ihre Daten vollständig zu duplizieren und zwei Tabellen mit derselben Struktur, aber unterschiedlichen Schlüsseln zu erstellen.

Wenn die Leistung Ihr wichtigstes Anliegen ist, dann gehen Sie zu einer Indextabelle oder einer duplizierten Tabelle. Wenn Sie Einfachheit benötigen und sich eine Leistungseinbuße leisten können, verwenden Sie sekundäre Indizes, aber ich empfehle, vorher einige Leistungstests durchzuführen.

Verwandte Themen