1un index (fostul nume: index secundar) oferă mijloace de acces la date în Cassandra folosind câmpuri cheie non-primare, altele decât cheia de partiție. Beneficiul este rapid, căutare eficientă a datelor de potrivire o anumită condiție. De fapt, dacă nu există un index pe o coloană normală, chiar nu este permisă interogarea condiționată de coloană.
un index indexează valorile coloanelor într-o familie de coloane separată, ascunsă (tabel) de cea care conține valorile indexate. Datele unui index sunt doar locale, ceea ce înseamnă că nu vor fi reproduse la alte noduri. Aceasta înseamnă, de asemenea, că, pentru interogarea datelor după coloana indexată, cererile trebuie redirecționate către toate nodurile, așteptând toate rezonanțele, iar apoi rezultatele sunt îmbinate și returnate. Deci, dacă aveți mai multe noduri, răspunsul la interogare încetinește pe măsură ce mai multe mașini sunt adăugate la cluster.
atenție:
prin versiunea curentă (2.0.7) a Apache Cassandra, puteți interoga numai printr-o coloană indexată cu condiția comparării egalității. Range select sau order-by de către o coloană indexată nu este acceptată. Motivul este că cheile stocate în familia coloanei ascunse sunt nesortate.
când se utilizează un Index?
2indicii încorporați de cassandra sunt cei mai buni pe un tabel cu multe rânduri care conțin valoarea indexată. Cu cât există mai multe valori unice într-o anumită coloană, cu atât veți avea mai multe cheltuieli pentru interogarea și menținerea indexului. De exemplu, să presupunem că aveți un tabel de liste de redare cu un miliard de melodii și doriți să căutați melodii ale artistului. Multe melodii vor împărtăși aceeași valoare coloană pentru artist. Coloana artist este un bun candidat pentru un index.
când să nu folosiți un Index?
2NU utilizați un index în aceste situații:
- pe coloane cu cardinalitate ridicată, deoarece interogați apoi un volum imens de înregistrări pentru un număr mic de rezultate
- în tabele care utilizează o coloană contra
- pe o coloană actualizată sau ștearsă frecvent
- pentru a căuta un rând într-o partiție mare, cu excepția