Kas yra įdėtojo rinkinio modelis?

Įdėtas rinkinio modelis taip pat žinomas kaip modifikuotas išankstinio užsakymo medžio perėjimo algoritmas ir yra būdas saugoti hierarchinius duomenis reliacinėse duomenų bazėse. Šio modelio pranašumas yra tai, kad jis suteikia labai greitą prieigą ir yra geriausiai įgyvendinamas hierarchijose, kurios skaitomos dažniau nei rašomos. Kiekvienam informacinio modelio mazgui priskiriami du numeriai, kurie saugomi kaip atributai. Pateikti užklausą dėl įdėto rinkinio modelio yra gana paprasta, nes abi reikšmės gali būti naudojamos norint gauti reikiamus duomenis. Tačiau įterpti, ištrinti, perkelti ir atnaujinti yra daug sudėtingiau, nes gali reikėti pernumeruoti mazgus.

Paprastai naudojamas įdėtiesiems rinkiniams arba hierarchinei informacijai pateikti medžių pavidalu, įdėto rinkinio modelį pristatė Joe Celko. Šiuo atveju medis yra duomenų struktūra, kurioje yra daug susietų mazgų. Pavyzdžiui, pirminis mazgas gali prisijungti prie kelių antrinių mazgų ir ši struktūra kartojama medyje keliais lygiais.

Medžiai yra puikus būdas tam tikra tvarka saugoti informaciją reliacinėje duomenų bazėje, kuri yra duomenų rinkinys, kuriame saugomi duomenys, atsižvelgiant į bendras charakteristikas. Pavyzdžiui, parduotuvės maisto skyriuje informacija apie produktą gali prasidėti nuo maisto, išsišakodama į vaisius, daržoves ir mėsą. Vaisiai gali būti toliau skirstomi į uogas, melionus, obuolius ir daržoves į gumbus, žalumynus ir kitus, o mėsą į kiaulieną, avieną ir veršieną.

Reliacinė duomenų bazė saugo visą šią informaciją lengvai suprantama forma, o įdėtas rinkinio modelis leidžia efektyviai valdyti medžio struktūrą. Naudojant pirmiau pateiktą pavyzdį, šakninis mazgas būtų maistas, kuris vaizduojamas dviem reikšmėmis. Kai maisto produkto kairėje reikšmė yra 1, kitiems medžio elementams priskiriamas skaičius kairėje eilės tvarka. Vaisiai gautų 2 reikšmę kairėje, uogos – 3 ir pan. Tada vertės priskiriamos dešinėje pusėje, veikiant per visą medį, iš apačios į viršų, per kiekvieną šaką, kol bus priskirta paskutinė vertė maistui dešinėje.

Kiekvienas medžio elementas baigiasi dviem reikšmėmis, tarkime, lft (kairė) ir rgt (dešinė), kurias galima naudoti norint juos identifikuoti ir nurodyti jų ryšį su kitais elementais. Pavyzdžiui, jei vaisių reikšmės yra 2 ir 15, tada visi mazgai, kurių kairiosios reikšmės yra didesnės nei 2, o dešinės – mažesnės nei 15, yra vaismedžio 2–15 palikuonys. Ištraukti informaciją apie visus vaisius tampa lengva vienu ypu, nes šias reikšmes galima nurodyti vienoje duomenų bazės užklausoje.

Šis modelis puikiai tinka dažnai pasiekiamai informacijai saugoti, tačiau informacijos įterpimas, trynimas ir pertvarkymas įdėtųjų rinkinių modelyje tampa labai varginantis. Perrašant indeksus ir pernumeravus informaciją, duomenų bazė gali sugesti, ypač jei medis išauga ir apima šimtus tūkstančių mazgų. Įdėto rinkinio modelis geriausiai tinka lengvoms turinio valdymo sistemoms, kuriose įterpimai ir pakeitimai yra minimalūs. Įterpti galima daug greičiau įdėtųjų intervalų modelyje, nes jis išsaugo kiekvieno mazgo vietą medyje, naudodamas slankiojo kablelio dešimtainę dalį, kartu užkoduodamas kelio informaciją.