1en indeks (tidligere navn: sekundær indeks) gir midler til å få tilgang til data i Cassandra ved hjelp av andre ikke-primærnøkkelfelt enn partisjonsnøkkelen. Fordelen er rask, effektiv oppslag av data som samsvarer med en gitt tilstand. Faktisk, hvis det ikke er noen indeks på en vanlig kolonne, er det ikke engang tillatt å betinget spørre etter kolonnen.
en indeks indekserer kolonneverdier i en separat, skjult kolonnefamilie (tabell) fra den som inneholder verdiene som indekseres. Dataene i en indeks er bare lokale, noe som betyr at den ikke vil bli replikert til andre noder. Dette betyr også, for dataspørring av indeksert kolonne, forespørsler må videresendes til alle noder, venter på alle resonses, og deretter resultatene slås sammen og returneres. Så hvis du har mange noder, reduseres spørringsresponsen etter hvert som flere maskiner legges til i klyngen.Med Den gjeldende versjonen (2.0.7) Av Apache Cassandra, kan Du bare spørre etter en indeksert kolonne med likestillingssammenligningsbetingelse. Range select eller order-by av en indeksert kolonne støttes ikke. Årsaken er at tastene som er lagret i den skjulte kolonnefamilien, er usorterte.
når Skal Man Bruke En Indeks?
2Cassandra innebygde indekser er best på et bord som har mange rader som inneholder indeksert verdi. Jo mer unike verdier som finnes i en bestemt kolonne, jo mer overhead vil du ha for spørring og vedlikehold av indeksen. Anta for eksempel at du hadde en spillelistetabell med en milliard sanger og ønsket å slå opp sanger av artisten. Mange sanger vil dele samme kolonneverdi for artist. Artistkolonnen er en god kandidat til en indeks.
når Skal Du Ikke Bruke En Indeks?
2ikke bruk en indeks i disse situasjonene:
- på kolonner med høy kardinalitet fordi du spør et stort antall poster for et lite antall resultater
- i tabeller som bruker en tellerkolonne
- på en ofte oppdatert eller slettet kolonne
- for å se etter en rad i en stor partisjon med mindre det er snevert spurt