1et indeks (tidligere navn: sekundært indeks) giver mulighed for at få adgang til data i Cassandra ved hjælp af andre ikke-primære nøglefelter end partitionstasten. Fordelen er hurtig, effektiv opslag af data, der matcher en given tilstand. Faktisk, hvis der ikke er noget indeks på en normal kolonne, er det endda ikke tilladt at betingelsesmæssigt forespørge efter kolonnen.
et indeks indekserer kolonneværdier i en separat, skjult kolonnefamilie (tabel) fra den, der indeholder de værdier, der indekseres. Dataene i et indeks er kun lokale, hvilket betyder, at det ikke vil blive replikeret til andre noder. Dette betyder også, for dataforespørgsel efter indekseret kolonne, anmodningerne skal videresendes til alle noder, venter på alle resonserne, og derefter flettes resultaterne og returneres. Så hvis du har mange noder, sænkes forespørgselsresponsen, da flere maskiner føjes til klyngen.
forsigtig:
Ved den aktuelle version (2.0.7) af Apache Cassandra, kan du kun forespørge ved en indekseret kolonne med ligestilling sammenligning betingelse. Range select eller order-by af en indekseret kolonne understøttes ikke. Årsagen er, at nøglerne, der er gemt i den skjulte kolonnefamilie, er usorterede.
Hvornår skal man bruge et indeks?
2cassandra indbyggede indekser er bedst på et bord med mange rækker, der indeholder den indekserede værdi. Jo mere unikke værdier der findes i en bestemt kolonne, jo mere overhead har du til at spørge og vedligeholde indekset. Antag for eksempel, at du havde en spillelistetabel med en milliard sange og ønskede at slå sange op af kunstneren. Mange sange vil dele den samme kolonne værdi for kunstner. Kunstnerkolonnen er en god kandidat til et indeks.
Hvornår skal man ikke bruge et indeks?
2brug ikke et indeks i disse situationer:
- på kolonner med høj kardinalitet, fordi du derefter forespørger et stort antal poster for et lille antal resultater
- i tabeller, der bruger en tællerkolonne
- på en Ofte opdateret eller slettet kolonne
- for at se efter en række i en stor partition, medmindre du snævert forespørges