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.
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.