logo

Indeksering i databaser – sett 1

Indeksering forbedrer databaseytelsen ved å minimere antallet platebesøk som kreves for å oppfylle en spørring. Det er en datastrukturteknikk som brukes til å finne og raskt få tilgang til data i databaser. Flere databasefelt brukes til å generere indekser. Hovednøkkelen eller kandidatnøkkelen til tabellen dupliseres i den første kolonnen, som er søkenøkkelen. For å fremskynde datainnhentingen holdes verdiene også i sortert rekkefølge. Det skal fremheves at sortering av data ikke er nødvendig. Den andre kolonnen er datareferansen eller pekeren som inneholder et sett med pekere som holder adressen til diskblokken der den spesielle nøkkelverdien kan finnes.

Struktur av indeks i database

Attributter til indeksering

  • Tilgangstyper: Dette refererer til typen tilgang som verdibasert søk, rekkeviddetilgang osv.
  • Tilgangstid: Det refererer til tiden det tar å finne et bestemt dataelement eller sett med elementer.
  • Innsettingstid: Det refererer til tiden det tar å finne riktig plass og sette inn nye data.
  • Slettingstid: Tid det tar å finne et element og slette det samt oppdatere indeksstrukturen.
  • Space Overhead: Det refererer til den ekstra plassen som kreves av indeksen.

Struktur av indeks i database



Generelt er det to typer filorganiseringsmekanismer som følges av indekseringsmetodene for å lagre dataene:

Sekvensiell filorganisering eller bestilt indeksfil

I denne er indeksene basert på en sortert rekkefølge av verdiene. Disse er generelt raske og en mer tradisjonell type lagringsmekanisme. Disse ordnede eller sekvensielle filorganisasjonene kan lagre dataene i et tett eller sparsomt format.

  • Tett indeks
    • For hver søkenøkkelverdi i datafilen er det en indekspost.
    • Denne posten inneholder søkenøkkelen og også en referanse til den første dataposten med den søkenøkkelverdien.

Tett indeks

  • Sparsom indeks
    • Indeksposten vises bare for noen få elementer i datafilen. Hvert element peker på en blokk som vist.
    • For å finne en post finner vi indeksposten med den største søkenøkkelverdien mindre enn eller lik søkenøkkelverdien vi leter etter.
    • Vi starter på den posten som indeksposten peker på, og fortsetter med pekerne i filen (det vil si sekvensielt) til vi finner den ønskede posten.
    • Antall påkrevde tilganger=log₂(n)+1, (her n=antall blokker innhentet av indeksfil)

Sparsom indeks

Hash-filorganisasjon

Indeksene er basert på at verdiene fordeles jevnt over en rekke bøtter. Bøttene som en verdi er tildelt, bestemmes av en funksjon som kalles en hash-funksjon. Det er hovedsakelig tre metoder for indeksering:

  • Klynget indeksering : Når mer enn to poster er lagret i samme fil, er denne typen lagring kjent som klyngeindeksering. Ved å bruke klyngeindeksering kan vi redusere kostnadene ved å søke etter grunn ved at flere poster relatert til samme ting er lagret på ett sted, og det gir også hyppig sammenføyning av mer enn to tabeller (poster).
    Klyngeindeksen er definert på en ordnet datafil. Datafilen er bestilt på et ikke-nøkkelfelt. I noen tilfeller opprettes indeksen på ikke-primære nøkkelkolonner som kanskje ikke er unike for hver post. I slike tilfeller, for å identifisere postene raskere, vil vi gruppere to eller flere kolonner sammen for å få de unike verdiene og lage en indeks ut av dem. Denne metoden er kjent som klyngeindeksen. I hovedsak blir poster med lignende egenskaper gruppert sammen, og indekser for disse grupperingene dannes.
    Studenter som studerer hvert semester, for eksempel, er gruppert sammen. Førstesemesterstudenter, andresemesterstudenter, tredjesemesterstudenter og så videre er kategorisert.

Klynget indeksering

  • Primær indeksering: Dette er en type Clustered Indexing der dataene er sortert i henhold til søkenøkkelen og primærnøkkelen til databasetabellen brukes til å lage indeksen. Det er et standardformat for indeksering der det induserer sekvensiell filorganisering . Siden primærnøkler er unike og lagres på en sortert måte, er ytelsen til søkeoperasjonen ganske effektiv.
  • Ikke-gruppert eller sekundær indeksering : En ikke-klynget indeks forteller oss bare hvor dataene ligger, det vil si at den gir oss en liste over virtuelle pekere eller referanser til stedet der dataene faktisk er lagret. Data lagres ikke fysisk i rekkefølgen til indeksen. I stedet er data tilstede i bladnoder. For f.eks. innholdssiden i en bok. Hver oppføring gir oss sidenummeret eller plasseringen av informasjonen som er lagret. De faktiske dataene her (informasjon på hver side i boken) er ikke organisert, men vi har en ordnet referanse (innholdsside) til hvor datapunktene faktisk ligger. Vi kan bare ha tett rekkefølge i den ikke-grupperte indeksen, da sparsom rekkefølge ikke er mulig fordi data ikke er fysisk organisert deretter.
    Det krever mer tid sammenlignet med den grupperte indeksen fordi det gjøres noe ekstra arbeid for å trekke ut dataene ved å følge pekeren videre. Når det gjelder en gruppert indeks, er data direkte til stede foran indeksen.
Ikke-klynget indeksering

Ikke-klynget indeksering

  • Indeksering på flere nivåer: Med veksten i størrelsen på databasen vokser også indeksene. Ettersom indeksen er lagret i hovedminnet, kan en enkeltnivåindeks bli for stor til å lagre med flere disktilganger. Flernivåindekseringen segregerer hovedblokken i forskjellige mindre blokker slik at den samme kan lagres i en enkelt blokk. De ytre blokkene er delt inn i indre blokker som igjen peker mot datablokkene. Dette kan enkelt lagres i hovedminnet med færre kostnader.

Indeksering på flere nivåer

Fordeler med indeksering

  • Forbedret søkeytelse: Indeksering muliggjør raskere datahenting fra databasen. Databasen kan raskt oppdage rader som samsvarer med en bestemt verdi eller samling av verdier ved å generere en indeks på en kolonne, noe som minimerer tiden det tar å utføre en spørring.
  • Effektiv datatilgang: Indeksering kan forbedre datatilgangseffektiviteten ved å redusere mengden disk I/O som kreves for å hente data. Databasen kan vedlikeholde datasidene for ofte besøkte kolonner i minnet ved å generere en indeks på disse kolonnene, noe som reduserer behovet for å lese fra disk.
  • Optimalisert datasortering: Indeksering kan også forbedre ytelsen til sorteringsoperasjoner. Ved å lage en indeks på kolonnene som brukes til sortering, kan databasen unngå å sortere hele tabellen og i stedet sortere kun de aktuelle radene.
  • Konsekvent dataytelse: Indeksering kan bidra til å sikre at databasen fungerer konsekvent selv når datamengden i databasen øker. Uten indeksering kan det ta lengre tid å kjøre spørringer ettersom antall rader i tabellen vokser, mens indeksering opprettholder en omtrent konstant hastighet.
  • Ved å sikre at kun unike verdier settes inn i kolonner som er indeksert som unike, kan indeksering også brukes til å sikre integriteten til data. Dette unngår å lagre dupliserte data i databasen, noe som kan føre til problemer når du utfører spørringer eller rapporter.

Generelt gir indeksering i databaser betydelige fordeler for å forbedre søkeytelse, effektiv datatilgang, optimalisert datasortering, konsistent dataytelse og håndhevet dataintegritet

Ulemper med indeksering

  • Indeksering krever mer lagringsplass for å holde indeksdatastrukturen, noe som kan øke den totale størrelsen på databasen.
  • Økt databasevedlikeholdskostnader: Indekser må vedlikeholdes når data legges til, ødelegges eller endres i tabellen, noe som kan øke databasevedlikeholdskostnadene.
  • Indeksering kan redusere innsettings- og oppdateringsytelsen siden indeksdatastrukturen må oppdateres hver gang data endres.
  • Å velge en indeks kan være vanskelig: Det kan være utfordrende å velge de riktige indeksene for en spesifikk spørring eller applikasjon og kan kreve en detaljert undersøkelse av dataene og tilgangsmønstrene.

Funksjoner ved indeksering

  • Utvikling av datastrukturer, som f.eks B-trær eller De viktigste kolonnene for indeksering av kolonner velges basert på hvor ofte de brukes og hva slags spørringer de blir utsatt for. De kardinalitet , selektivitet og unikhet til indekseringskolonnene kan tas i betraktning.
  • Det finnes flere forskjellige indekstyper som brukes av databaser, inkludert primære, sekundære, grupperte og ikke-klyngede indekser. Basert på de spesielle behovene til databasesystemet, tilbyr hver form for indeks fordeler og ulemper.
  • For at databasesystemet skal fungere best mulig, kreves periodisk indeksvedlikehold. I henhold til endringer i data og bruksmønstre innebærer vedlikeholdsarbeid å bygge, oppdatere og fjerne indekser.
  • Optimalisering av databasespørringer innebærer indeksering, noe som er viktig. Spørringsoptimereren bruker indeksene til å velge den beste utførelsesstrategien for et bestemt søk basert på kostnadene for å få tilgang til dataene og selektiviteten til indekseringskolonnene.
  • Databaser bruker en rekke indekseringsstrategier, inkludert dekker indekser, kun indeksskanninger og delvise indekser. Disse teknikkene maksimerer utnyttelsen av indekser for bestemte typer søk og datatilgang.
  • Når ikke-sammenhengende datablokker er lagret i en indeks, kan det resultere i indeksfragmentering, noe som gjør indeksen mindre effektiv. Regelmessig indeksvedlikehold, som defragmentering og omorganisering, kan reduseres fragmentering .

Konklusjon

Indeksering er en veldig nyttig teknikk som hjelper til med å optimalisere søketiden i database forespørsler. Tabellen over databaseindeksering består av en søkenøkkel og pekeren . Det er fire typer indeksering: Primær, Sekundær Clustering og Multivalued Indexing. Primærindeksering er delt inn i to typer, tett og sparsom. Tett indeksering brukes når indekstabellen inneholder poster for hver søkenøkkel. Sparsom indeksering brukes når indekstabellen ikke bruker en søkenøkkel for hver post. Multilevel indeksering bruker B+ tre . Hovedformålet med indeksering er å gi bedre ytelse for datainnhenting.

Vanlige spørsmål om indeksering

Q.1: Hva er indeksering i databaser?

Svar:

Indeksering er i utgangspunktet en teknikk som hjelper til med å redusere søketiden til en databasespørring, eller den hjelper til med raskere tilgang til databasen.

Q.2: Hva er eksemplene på indekseringsdatabaser?

Svar:

Noen vanlige eksempler på indekseringsdatabaser er Web of Science, DOAJ ( Directory of Open Access Journals)

For flere detaljer kan du se Introduksjon til B+ Tree og Typer nøkler i databasen artikkel.