logo

Indeksering i databaser – sæt 1

Indeksering forbedrer databasens ydeevne ved at minimere antallet af diskbesøg, der kræves for at opfylde en forespørgsel. Det er en datastrukturteknik, der bruges til at lokalisere og hurtigt få adgang til data i databaser. Adskillige databasefelter bruges til at generere indekser. Tabellens hovednøgle eller kandidatnøgle er duplikeret i den første kolonne, som er søgenøglen. For at fremskynde datahentning holdes værdierne også i sorteret rækkefølge. Det skal fremhæves, at sortering af data ikke er påkrævet. Den anden kolonne er datareferencen eller pointeren, som indeholder et sæt pointere, der holder adressen på diskblokken, hvor den pågældende nøgleværdi kan findes.

Struktur af indeks i database

Indekseringsegenskaber

  • Adgangstyper: Dette refererer til typen af ​​adgang såsom værdibaseret søgning, rækkeviddeadgang osv.
  • Adgangstid: Det refererer til den tid, det tager at finde et bestemt dataelement eller sæt af elementer.
  • Indsættelsestid: Det refererer til den tid, det tager at finde den passende plads og indsætte nye data.
  • Sletningstid: Tid det tager at finde et element og slette det samt opdatere indeksstrukturen.
  • Rum overhead: Det henviser til den ekstra plads, der kræves af indekset.

Struktur af indeks i database



Generelt er der to typer filorganiseringsmekanismer, der efterfølges af indekseringsmetoderne til at gemme dataene:

Sekventiel filorganisation eller bestilt indeksfil

Heri er indeksene baseret på en sorteret rækkefølge af værdierne. Disse er generelt hurtige og en mere traditionel form for opbevaringsmekanisme. Disse ordnede eller sekventielle filorganisationer kan gemme dataene i et tæt eller sparsomt format.

  • Tæt indeks
    • For hver søgenøgleværdi i datafilen er der en indekspost.
    • Denne post indeholder søgenøglen og også en reference til den første datapost med denne søgenøgleværdi.

Tæt indeks

  • Sparsomt Indeks
    • Indeksposten vises kun for nogle få elementer i datafilen. Hvert element peger på en blok som vist.
    • For at finde en post finder vi indeksposten med den største søgenøgleværdi mindre end eller lig med den søgenøgleværdi, vi leder efter.
    • Vi starter ved den post, der peges på af indeksposten, og fortsætter sammen med pointerne i filen (det vil sige sekventielt), indtil vi finder den ønskede post.
    • Antal nødvendige adgange=log₂(n)+1, (her n=antal blokke erhvervet af indeksfil)

Sparsomt Indeks

Hash-filorganisation

Indeks er baseret på, at værdierne er fordelt ensartet over en række buckets. De buckets, som en værdi er tildelt, bestemmes af en funktion kaldet en hash-funktion. Der er primært tre metoder til indeksering:

  • Klynget indeksering : Når mere end to poster er gemt i den samme fil, er denne type lagring kendt som klyngeindeksering. Ved at bruge klyngeindeksering kan vi reducere omkostningerne ved at søge, fordi flere poster relateret til den samme ting er gemt på ét sted, og det giver også den hyppige sammenføjning af mere end to tabeller (poster).
    Klyngeindekset er defineret på en ordnet datafil. Datafilen er bestilt på et ikke-nøglefelt. I nogle tilfælde oprettes indekset på ikke-primære nøglekolonner, som muligvis ikke er unikke for hver post. I sådanne tilfælde vil vi, for at identificere posterne hurtigere, gruppere to eller flere kolonner sammen for at få de unikke værdier og skabe et indeks ud af dem. Denne metode er kendt som klyngeindekset. I det væsentlige er poster med lignende egenskaber grupperet sammen, og indekser for disse grupperinger dannes.
    Studerende, der studerer hvert semester, for eksempel, er grupperet sammen. Førstesemesterstuderende, andetsemesterstuderende, tredjesemesterstuderende og så videre er kategoriseret.

Klynget indeksering

  • Primær indeksering: Dette er en type Clustered Indexing, hvor dataene sorteres i henhold til søgenøglen, og den primære nøgle i databasetabellen bruges til at oprette indekset. Det er et standardformat for indeksering, hvor det inducerer sekventiel filorganisation . Da primære nøgler er unikke og lagres på en sorteret måde, er udførelsen af ​​søgeoperationen ret effektiv.
  • Ikke-klynget eller sekundær indeksering : Et ikke-klynget indeks fortæller os bare, hvor dataene ligger, dvs. det giver os en liste over virtuelle pointere eller referencer til det sted, hvor dataene faktisk er gemt. Data gemmes ikke fysisk i rækkefølgen af ​​indekset. I stedet er data til stede i bladknuder. For fx. indholdssiden i en bog. Hver post giver os sidenummeret eller placeringen af ​​de gemte oplysninger. De faktiske data her (information på hver side i bogen) er ikke organiseret, men vi har en ordnet reference (indholdsside) til, hvor datapunkterne rent faktisk ligger. Vi kan kun have tæt rækkefølge i det ikke-klyngede indeks, da sparsom rækkefølge ikke er mulig, fordi data ikke er fysisk organiseret i overensstemmelse hermed.
    Det kræver mere tid sammenlignet med det klyngede indeks, fordi der udføres en vis mængde ekstra arbejde for at udtrække dataene ved yderligere at følge markøren. I tilfælde af et klynget indeks er data direkte til stede foran indekset.
Ikke-klynget indeksering

Ikke-klynget indeksering

  • Indeksering på flere niveauer: Med væksten i størrelsen af ​​databasen vokser indeks også. Da indekset er lagret i hovedhukommelsen, kan et enkelt-niveau indeks blive for stor til at gemme med flere diskadgange. Indekseringen på flere niveauer adskiller hovedblokken i forskellige mindre blokke, så den samme kan gemmes i en enkelt blok. De ydre blokke er opdelt i indre blokke, som igen peger på datablokkene. Dette kan nemt gemmes i hovedhukommelsen med færre omkostninger.

Indeksering på flere niveauer

Fordele ved indeksering

  • Forbedret forespørgselsydeevne: Indeksering muliggør hurtigere datahentning fra databasen. Databasen kan hurtigt opdage rækker, der matcher en bestemt værdi eller samling af værdier, ved at generere et indeks på en kolonne, hvilket minimerer den tid, det tager at udføre en forespørgsel.
  • Effektiv dataadgang: Indeksering kan forbedre dataadgangseffektiviteten ved at sænke mængden af ​​disk I/O, der kræves for at hente data. Databasen kan vedligeholde datasiderne for ofte besøgte kolonner i hukommelsen ved at generere et indeks på disse kolonner, hvilket mindsker kravet om at læse fra disk.
  • Optimeret datasortering: Indeksering kan også forbedre udførelsen af ​​sorteringsoperationer. Ved at oprette et indeks på de kolonner, der bruges til sortering, kan databasen undgå at sortere hele tabellen og i stedet kun sortere de relevante rækker.
  • Konsistent dataydelse: Indeksering kan hjælpe med at sikre, at databasen fungerer konsekvent, selvom mængden af ​​data i databasen stiger. Uden indeksering kan forespørgsler tage længere tid at køre, efterhånden som antallet af rækker i tabellen vokser, mens indeksering opretholder en nogenlunde ensartet hastighed.
  • Ved at sikre, at kun unikke værdier indsættes i kolonner, der er blevet indekseret som unikke, kan indeksering også bruges til at sikre dataintegriteten. Dette undgår at gemme duplikerede data i databasen, hvilket kan føre til problemer ved udførelse af forespørgsler eller rapporter.

Generelt giver indeksering i databaser betydelige fordele for at forbedre forespørgselsydeevne, effektiv dataadgang, optimeret datasortering, ensartet dataydeevne og håndhævet dataintegritet

Ulemper ved indeksering

  • Indeksering kræver mere lagerplads til at holde indeksdatastrukturen, hvilket kan øge databasens samlede størrelse.
  • Øget databasevedligeholdelsesomkostning: Indekser skal vedligeholdes, når data tilføjes, destrueres eller ændres i tabellen, hvilket kan øge databasevedligeholdelsesomkostningerne.
  • Indeksering kan reducere indsættelses- og opdateringsydelsen, da indeksdatastrukturen skal opdateres, hver gang data ændres.
  • Det kan være svært at vælge et indeks: Det kan være udfordrende at vælge de rigtige indekser til en specifik forespørgsel eller applikation og kan kræve en detaljeret undersøgelse af data og adgangsmønstre.

Funktioner ved indeksering

  • Udvikling af datastrukturer, som f.eks B-træer eller De vigtigste kolonner til indeksering af kolonner vælges ud fra, hvor ofte de bruges, og den slags forespørgsler, de udsættes for. Det kardinalitet , selektivitet og unikhed af indekseringskolonnerne kan tages i betragtning.
  • Der er flere forskellige indekstyper, der bruges af databaser, herunder primære, sekundære, klyngede og ikke-klyngede indekser. Baseret på databasesystemets særlige behov giver hver form for indeks fordele og ulemper.
  • For at databasesystemet skal fungere bedst muligt kræves periodisk indeksvedligeholdelse. Ifølge ændringer i data og brugsmønstre involverer vedligeholdelsesarbejde opbygning, opdatering og fjernelse af indekser.
  • Optimering af databaseforespørgsler involverer indeksering, hvilket er vigtigt. Forespørgselsoptimeringsværktøjet bruger indekserne til at vælge den bedste udførelsesstrategi for en bestemt forespørgsel baseret på omkostningerne ved at få adgang til dataene og indekseringskolonnernes selektivitet.
  • Databaser gør brug af en række indekseringsstrategier, herunder dækning af indekser, kun indeksscanninger og delvise indekser. Disse teknikker maksimerer udnyttelsen af ​​indekser til bestemte typer forespørgsler og dataadgang.
  • Når ikke-sammenhængende datablokke er gemt i et indeks, kan det resultere i indeksfragmentering, hvilket gør indekset mindre effektivt. Regelmæssig indeksvedligeholdelse, såsom defragmentering og omorganisering, kan falde fragmentering .

Konklusion

Indeksering er en meget nyttig teknik, der hjælper med at optimere søgetiden i database forespørgsler. Tabellen over databaseindeksering består af en søgenøgle og pointer . Der er fire typer indeksering: Primær, Sekundær Clustering og Multivalued Indexing. Primær indeksering er opdelt i to typer, tæt og sparsom. Tæt indeksering bruges, når indekstabellen indeholder poster for hver søgenøgle. Sparse indeksering bruges, når indekstabellen ikke bruger en søgenøgle for hver post. Indeksering på flere niveauer B+ træ . Hovedformålet med indeksering er at give bedre ydeevne til datahentning.

Ofte stillede spørgsmål om indeksering

Q.1: Hvad er indeksering i databaser?

Svar:

Indeksering er dybest set en teknik, der hjælper med at reducere søgetiden for en databaseforespørgsel, eller den hjælper med at få hurtigere adgang til databasen.

Q.2: Hvad er eksemplerne på indekseringsdatabaser?

Svar:

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

For flere detaljer, kan du henvise til Introduktion til B+ Tree og Typer af nøgler i databasen artikel.