Hajautusindeksointi
Tietyissä tilanteissa tarvitsemme indeksiä tiedon tehokkaaseen hakemiseen, mutta B-puu-indeksin käyttäminen voi olla liian monimutkaista ja tarpeetonta. Näissä tapauksissa hajautusindeksi voi olla sopivampi vaihtoehto.
Hajautusindeksi on tietokantaindeksin tyyppi, joka käyttää hajautusfunktiota indeksoitujen arvojen sijoittamiseen hajautustauluun.
Tässä indeksityypissä kohdesarakkeen arvot hajautetaan, eli ne muunnetaan kiinteän kokoiseksi arvoksi tai hajautuskoodiksi, jota käytetään indeksinä tietorivien hakemiseen.
Miten se toimii?
Hajautusindeksissä hajautusprosessi muuntaa indeksin avainarvon hajautuskoodiksi hajautusfunktion avulla. Tätä hajautuskoodia käytetään määrittämään sijainti eli "bucket", jossa vastaava tieto tallennetaan indeksissä.
Lisätietoja hajautuksesta löydät Algorithms and Data Structures Overview -kurssilta.
Tarkastellaan hajautusindeksiä kirjaston luettelointijärjestelmässä, jossa jokainen kirjan nimi indeksoidaan ISBN-tunnuksen (International Standard Book Number) perusteella.
Tässä esimerkissä käytämme hajautusfunktiota, joka muuntaa kirjan ISBN-tunnuksen heksadesimaaliseksi hajautuskoodiksi, kuten 0x7FA4
, suorittamalla joukon matemaattisia operaatioita ISBN-numeroille.
Tämä hajautuskoodi toimii yksilöllisenä tunnisteena, määrittäen paikan hajautustaulussa, jossa on linkki kyseisen kirjan kaikki tiedot sisältävään taulun riviin.
Keskeiset ominaisuudet
-
Nopea haku: Hajautusindeksit mahdollistavat nopeat haut yhtäsuuruusvertailuissa. Kun etsitään tiettyä arvoa, PostgreSQL laskee arvon hajautusarvon ja pääsee suoraan vastaavaan sijaintiin indeksissä, mikä tekee hausta erittäin tehokkaan;
-
Rajoitettu operaattorituki: Toisin kuin B-puu-indeksit, hajautusindeksit tukevat vain yhtäsuuruusvertailuja (
=
), eivät aluekyselyitä (<
,>
,<=
,>=
) tai lajittelua. Tämä rajoitus tekee hajautusindekseistä vähemmän monipuolisia verrattuna B-puu-indekseihin; -
Nopeampi tietyissä käyttötapauksissa: Tilanteissa, joissa työkuorma sisältää suuren määrän yhtäsuuruushakuja, kuten pääavaimen tai yksilöllisyysrajoitteen valvonnassa, hajautusindeksit voivat olla nopeampia kuin B-puu-indeksit. Kuitenkin niiden suorituskykyetu heikkenee aluekyselyissä tai kun data ei sovi hyvin hajautusalgoritmille.
Toteutus
Hajautusindeksin voi toteuttaa SQL:ssä seuraavalla lauseella:
CREATE INDEX hash_index_name ON table_name USING HASH (column_name1, column_name2,... );
Tämän seurauksena sarakkeiden column_name1, column_name2,...
arvot hajautetaan ja luodaan hajautustaulu. Tämä mahdollistaa vaadittujen tietorivien nopeamman haun.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
What are the main differences between hash indexes and B-tree indexes?
Can you give more real-world examples where hash indexes are preferred?
Are there any drawbacks or limitations to using hash indexes?
Awesome!
Completion rate improved to 4.35
Hajautusindeksointi
Pyyhkäise näyttääksesi valikon
Tietyissä tilanteissa tarvitsemme indeksiä tiedon tehokkaaseen hakemiseen, mutta B-puu-indeksin käyttäminen voi olla liian monimutkaista ja tarpeetonta. Näissä tapauksissa hajautusindeksi voi olla sopivampi vaihtoehto.
Hajautusindeksi on tietokantaindeksin tyyppi, joka käyttää hajautusfunktiota indeksoitujen arvojen sijoittamiseen hajautustauluun.
Tässä indeksityypissä kohdesarakkeen arvot hajautetaan, eli ne muunnetaan kiinteän kokoiseksi arvoksi tai hajautuskoodiksi, jota käytetään indeksinä tietorivien hakemiseen.
Miten se toimii?
Hajautusindeksissä hajautusprosessi muuntaa indeksin avainarvon hajautuskoodiksi hajautusfunktion avulla. Tätä hajautuskoodia käytetään määrittämään sijainti eli "bucket", jossa vastaava tieto tallennetaan indeksissä.
Lisätietoja hajautuksesta löydät Algorithms and Data Structures Overview -kurssilta.
Tarkastellaan hajautusindeksiä kirjaston luettelointijärjestelmässä, jossa jokainen kirjan nimi indeksoidaan ISBN-tunnuksen (International Standard Book Number) perusteella.
Tässä esimerkissä käytämme hajautusfunktiota, joka muuntaa kirjan ISBN-tunnuksen heksadesimaaliseksi hajautuskoodiksi, kuten 0x7FA4
, suorittamalla joukon matemaattisia operaatioita ISBN-numeroille.
Tämä hajautuskoodi toimii yksilöllisenä tunnisteena, määrittäen paikan hajautustaulussa, jossa on linkki kyseisen kirjan kaikki tiedot sisältävään taulun riviin.
Keskeiset ominaisuudet
-
Nopea haku: Hajautusindeksit mahdollistavat nopeat haut yhtäsuuruusvertailuissa. Kun etsitään tiettyä arvoa, PostgreSQL laskee arvon hajautusarvon ja pääsee suoraan vastaavaan sijaintiin indeksissä, mikä tekee hausta erittäin tehokkaan;
-
Rajoitettu operaattorituki: Toisin kuin B-puu-indeksit, hajautusindeksit tukevat vain yhtäsuuruusvertailuja (
=
), eivät aluekyselyitä (<
,>
,<=
,>=
) tai lajittelua. Tämä rajoitus tekee hajautusindekseistä vähemmän monipuolisia verrattuna B-puu-indekseihin; -
Nopeampi tietyissä käyttötapauksissa: Tilanteissa, joissa työkuorma sisältää suuren määrän yhtäsuuruushakuja, kuten pääavaimen tai yksilöllisyysrajoitteen valvonnassa, hajautusindeksit voivat olla nopeampia kuin B-puu-indeksit. Kuitenkin niiden suorituskykyetu heikkenee aluekyselyissä tai kun data ei sovi hyvin hajautusalgoritmille.
Toteutus
Hajautusindeksin voi toteuttaa SQL:ssä seuraavalla lauseella:
CREATE INDEX hash_index_name ON table_name USING HASH (column_name1, column_name2,... );
Tämän seurauksena sarakkeiden column_name1, column_name2,...
arvot hajautetaan ja luodaan hajautustaulu. Tämä mahdollistaa vaadittujen tietorivien nopeamman haun.
Kiitos palautteestasi!