BRIN

BRIN ( Block  Range Index ) on tietojen indeksointitekniikka , joka on suunniteltu käsittelemään suuria [1] taulukoita, joissa indeksoidun sarakkeen arvolla on luonnollinen korrelaatio taulukon rivin fyysisen sijainnin kanssa . Niillä on sellaisia ​​osioitujen taulukoiden ominaisuuksia kuin nopea rivien lisäys, nopea indeksin luominen ilman tarvetta ilmoittaa osiot erikseen. [2]

Voidaan käyttää maantieteellisille tiedoille [3] , aikasarjoille [4] , lokeille tai kaupan tilaushistorialle, jotka kirjoitetaan peräkkäin, ja siksi osa sarakkeista (päivämäärä, kellonaika, numero) on jo osittain järjestetty fyysisellä tasolla ja Samat aikataulukot tällaisilla tiedoilla kasvavat yleensä jättimäisiksi. Nopeuttaa vertailuoperaattoreita, mutta ei vaikuta vastaaviin kyselyihin. [5] . BRIN ei ole ainutkertainen indeksi [6] , joten sitä ei voida käyttää ensisijaisena avainindeksinä. [7]

Alvaro Herrera 2ndQuadrantista ehdotti BRIN-indeksiä ensimmäisen kerran vuonna 2013 nimellä "Minmax-indeksit". PostgreSQL :n tuesta on ilmoitettu versiosta 9.5 lähtien [8] . Muilla DBMS-järjestelmillä on samanlaiset ominaisuudet, kuten Oracle [9] [10] , Netezza ("vyöhykekartat"), en:Infobright ("tietopaketit"), en:MonetDBand , Apache Hive ja ORC/Parquet.

Arkkitehtuuri

BRIN toimii suurten tietolohkojen kuvauksilla, joihin on tallennettu lohkon indeksoidun sarakkeen minimi- ja maksimiarvot. Pyyntöjen aikana lohkot suodatetaan ensin (kyselyehtoja sovelletaan lohkon kuvaukseen). Näin ollen pienessä määrässä tarkastuksia tietojoukko, joka on tarkistettava rivi riviltä, ​​pienenee. [yksitoista]

PostgreSQL DBMS tallentaa tiedot "sivuille", jokainen taulukko tai hakemisto on sivusarja. Sivun vakiokoko on 8 kilotavua. [12] Lohko tai lohkoalue on ryhmä sivuja (ei rivejä), jotka seuraavat toisiaan taulukossa. Lohko on tässä tapauksessa osa indeksiä, ei taulukkoa: sen koko voidaan määrittää, kun indeksi luodaan parametrilla pages_per_range. [13]

Kun sivut täyttyvät tiedoilla, lohkotiedot päivitetään. Jokainen sivu ei vastaa lohkoa, äskettäin luoduilla sivuilla ei välttämättä ole lohkoa (uusien lohkojen luominen hakemistoon tapahtuu esimerkiksi VACUUMtaulukon toiminnon aikana).

BRIN on niin kompakti, että se mahtuu kokonaan RAM-muistiin, mikä vähentää levytoimintojen määrää kyselyn aikana. Tämä ei aina päde B-puuindekseille, jotka tarvitsevat puusolmun noin jokaiselle N taulukkoriville, missä N on yhden solmun kapasiteetti. B-puun indeksin koko on merkittävä ja sitä voidaan verrata indeksoidun taulukon sarakkeen tietomäärään.

Katso myös

Muistiinpanot

  1. Suuri rivien lukumäärän suhteen, ei kenttien koon tai taulukon absoluuttisen koon tavuina.
  2. Mark Wong. Taulukoiden lataaminen ja B-puu- ja Block Range -indeksien luominen . AXLE-projekti (10.10.2014). Käyttöpäivä: 7. helmikuuta 2018. Arkistoitu alkuperäisestä 4. maaliskuuta 2016.
  3. Arkistoitu kopio (linkki ei saatavilla) . Haettu 7. elokuuta 2017. Arkistoitu alkuperäisestä 7. elokuuta 2017. 
  4. BRIN-indeksit, mitä ne ovat ja miten käytät niitä? . Haettu 7. helmikuuta 2018. Arkistoitu alkuperäisestä 8. helmikuuta 2018.
  5. Taulukko 62-1. Sisäänrakennetut BRIN-käyttäjäluokat . Haettu 7. elokuuta 2017. Arkistoitu alkuperäisestä 7. elokuuta 2017.
  6. Milloin minun pitäisi käyttää BRIN-indeksejä? : PostgreSQL . Haettu 8. helmikuuta 2018. Arkistoitu alkuperäisestä 8. huhtikuuta 2021.
  7. Nykyisen indeksin ylentäminen ensisijaiseksi avaimeksi PostgreSQL - Database Administrators Stack Exchange -ohjelmassa . Haettu 8. helmikuuta 2018. Arkistoitu alkuperäisestä 9. helmikuuta 2018.
  8. PostgreSQL: Dokumentaatio: 9.5: Julkaisu 9.5 . Käyttöpäivä: 7. helmikuuta 2018. Arkistoitu alkuperäisestä 9. maaliskuuta 2018.
  9. Arup Nanda. Smart Scans Meet Storage Indexes  (uuspr.)  // Oracle Magazine. — Oracle Corp. Arkistoitu alkuperäisestä 8. helmikuuta 2018.
  10. Oracle Sun -tietokantakonesovellusten parhaat käytännöt tietovarastointiin . Oraakkeli. Käyttöpäivä: 7. helmikuuta 2018. Arkistoitu alkuperäisestä 15. maaliskuuta 2016.
  11. Herrera, Alvaro commitdiff - BRIN: Block Range Indexes . git.postgresql.org (7. marraskuuta 2014). Haettu 3. lokakuuta 2017. Arkistoitu alkuperäisestä 19. tammikuuta 2019.
  12. PostgreSQL: Dokumentaatio: 8.0: Tietokantasivun asettelu . Käyttöpäivä: 7. helmikuuta 2018. Arkistoitu alkuperäisestä 9. maaliskuuta 2018.
  13. PostgreSQL: Dokumentaatio: 9.5: Johdanto . Haettu 7. elokuuta 2017. Arkistoitu alkuperäisestä 7. elokuuta 2017.
  14. Ero GiST- ja GIN-indeksin välillä . www.stackoverflow.com Käyttöönottopäivä: 11.4.2018.

Linkit