1indeks (dawna nazwa: indeks wtórny) zapewnia dostęp do danych w Cassandrze przy użyciu innych niż podstawowe pól klucza niż klucz partycji. Zaletą jest szybkie, efektywne wyszukiwanie danych pasujących do danego warunku. W rzeczywistości, jeśli w zwykłej kolumnie nie ma indeksu, nie można warunkowo kwerendować przez kolumnę.
indeks indeksuje wartości kolumn w oddzielnej, ukrytej rodzinie kolumn (tabeli) od tej, która zawiera wartości indeksowane. Dane indeksu są tylko lokalne, co oznacza, że nie będą replikowane do innych węzłów. Oznacza to również, że dla zapytania o dane przez indeksowaną kolumnę, żądania muszą być przekazywane do wszystkich węzłów, czekając na wszystkie Rezonanse, a następnie wyniki są scalane i zwracane. Więc jeśli masz wiele węzłów, odpowiedź na zapytanie spowalnia, gdy więcej maszyn jest dodawanych do klastra.
Uwaga:
w bieżącej wersji (2.0.7) Apache Cassandra można było odpytywać tylko za pomocą zindeksowanej kolumny z warunkiem porównania równości. Wybór zakresu lub kolejność-by przez indeksowana kolumna nie jest obsługiwana. Powodem jest to, że klucze przechowywane w rodzinie kolumn ukrytych są nieposortowane.
kiedy używać indeksu?
2cassandra ’ s wbudowane indeksy są najlepsze w tabeli z wieloma wierszami, które zawierają indeksowaną wartość. Im więcej unikalnych wartości znajduje się w danej kolumnie, tym więcej narzutu na zapytania i utrzymanie indeksu. Załóżmy na przykład, że masz tabelę playlist z miliardem utworów i chcesz wyszukać utwory artysty. Wiele utworów będzie miało tę samą wartość kolumny dla wykonawcy. Artist column jest dobrym kandydatem do indeksu.
kiedy nie używać indeksu?
2nie używaj indeksu w takich sytuacjach:
- w kolumnach o wysokiej cardinalności, ponieważ następnie odpytywasz ogromną ilość rekordów o niewielką liczbę wyników
- w tabelach, które używają kolumny licznika
- W często aktualizowanej lub usuniętej kolumnie
- , aby wyszukać wiersz na dużej partycji, chyba że zostanie wąsko zapytany