Globaalid on andmete salvestamiseks mõeldud aardemõõgad. puud. 1. osa

Globaalid on andmete salvestamiseks mõeldud aardemõõgad. puud. 1. osa Tõelised andmebaasimõõgad – globaalsed – on ammu teada, kuid siiski oskavad vähesed neid tõhusalt kasutada või ei oma seda superrelva üldse.

Kui kasutate globaale nende probleemide lahendamisel, milles nad tõesti osavad, võite saavutada silmapaistvaid tulemusi. Kas tootlikkuses või probleemi lahendamise lihtsustamises (1, 2).

Globaalsed andmed on andmete salvestamise ja töötlemise eriline viis, mis erineb täielikult SQL-i tabelitest. Need ilmusid keeles 1966. aastal M(UMPS) (evolutsiooniline areng - Vahemällu ObjectScript, edaspidi COS) meditsiiniandmebaasis ja on seal siiani aktiivselt kasutatud, ning tunginud ka mõnesse muusse valdkonda, kus on vaja usaldusväärsust ja kõrget jõudlust: rahandus, kauplemine jne.

Moodsate DBMS-ide globaalsed funktsioonid toetavad tehinguid, logimist, replikatsiooni ja partitsioonide jagamist. Need. neid saab kasutada kaasaegsete, töökindlate, hajutatud ja kiirete süsteemide ehitamiseks.

Globaalid ei piira teid relatsioonimudeliga. Need annavad teile vabaduse töötada välja konkreetsete ülesannete jaoks optimeeritud andmestruktuure. Paljude rakenduste jaoks võib globaalsete rakenduste nutikas kasutamine olla tõesti salarelv, pakkudes jõudlust, millest relatsioonirakenduste arendajad võivad vaid unistada.

Globaale andmete salvestamise viisina saab kasutada paljudes kaasaegsetes programmeerimiskeeltes, nii kõrgel kui ka madalal tasemel. Seetõttu keskendun selles artiklis konkreetselt globaalidele, mitte keelele, millest need kunagi pärinevad.

2. Kuidas globaalsed toimivad

Kõigepealt mõistame, kuidas globaalsed inimesed töötavad ja millised on nende tugevad küljed. Globaale saab vaadelda erinevatest vaatenurkadest. Artikli selles osas vaatleme neid kui puid. Või nagu hierarhilised andmelaod.

Lihtsamalt öeldes on globaalne massiiv püsiv massiiv. Massiiv, mis salvestatakse automaatselt kettale.
Midagi lihtsamat andmete salvestamiseks on raske ette kujutada. Koodis (COS/M keeltes) erineb see tavalisest assotsiatiivsest massiivist ainult sümboli poolest ^ enne nime.

Andmete globaalsesse salvestamiseks ei pea te õppima SQL-i päringukeelt, nendega töötamise käsud on väga lihtsad. Neid saab õppida tunniga.

Alustame kõige lihtsama näitega. Ühetasandiline 2 oksaga puu. Näited on kirjutatud COS-is.

Globaalid on andmete salvestamiseks mõeldud aardemõõgad. puud. 1. osa

Set ^a("+7926X") = "John Sidorov"
Set ^a("+7916Y") = "Sergey Smith"



Globaalsesse teabe sisestamisel (käsk Set) juhtub automaatselt kolm asja:

  1. Andmete salvestamine kettale.
  2. Indekseerimine. Sulgudes on võti (ingliskeelses kirjanduses - "alamindeks") ja võrdsetest paremal on väärtus ("sõlme väärtus").
  3. Sorteeri. Andmed sorteeritakse võtme järgi. Tulevikus on massiivi läbimisel esimene element “Sergey Smith” ja teine ​​“John Sidorov”. Globaalsest kasutajate nimekirja saades ei raiska andmebaas aega sorteerimisele. Lisaks saate taotleda sorteeritud loendi väljundit, alustades mis tahes võtmest, isegi olematust võtmest (väljund algab esimesest reaalvõtmest, mis tuleb pärast olematut).

Kõik need toimingud toimuvad uskumatult kiiresti. Oma koduarvutis sain ühe protsessiga kuni 750 000 sisestust sekundis. Mitmetuumalistel protsessoritel võivad väärtused ulatuda kümneid miljoneid lisad/sek.

Sisestuskiirus ise muidugi palju ei ütle. Saate näiteks väga kiiresti teavet tekstifailidesse kirjutada - niimoodi kuulujutud Viisa vormistamine töötab. Aga globaalsete puhul saame tulemuseks struktureeritud indekseeritud salvestusruumi, millega saab edaspidi lihtsalt ja kiiresti töötada.

Globaalid on andmete salvestamiseks mõeldud aardemõõgad. puud. 1. osa

  • Globaalide suurim tugevus on uute sõlmede sisestamise kiirus.
  • Globaalsed andmed on alati indekseeritud. Nende läbimine nii ühel tasandil kui sügavale puusse on alati kiire.

Lisame globaalsele veel mõned teise ja kolmanda taseme harud.

Set ^a("+7926X", "city") = "Moscow"
Set ^a("+7926X", "city", "street") = "Req Square"
Set ^a("+7926X", "age") = 25
Set ^a("+7916Y", "city") = "London"
Set ^a("+7916Y", "city", "street") = "Baker Street"
Set ^a("+7916Y", "age") = 36

Globaalid on andmete salvestamiseks mõeldud aardemõõgad. puud. 1. osa

On ilmne, et mitmetasandilisi puid saab ehitada globaalide põhjal. Veelgi enam, juurdepääs mis tahes sõlmele on sisestamise ajal toimuva automaatse indekseerimise tõttu peaaegu hetkeline. Ja igal puu tasemel sorteeritakse kõik oksad võtme järgi.

Nagu näete, saab teavet salvestada nii võtmesse kui ka väärtusesse. Võtme kogupikkus (kõikide indeksite pikkuste summa) võib ulatuda 511 baitija väärtused 3.6 MB vahemälu jaoks. Puu tasemete arv (mõõtmete arv) on 31.

Veel üks huvitav punkt. Saate ehitada puu ilma ülemiste tasemete sõlmede väärtusi täpsustamata.

Globaalid on andmete salvestamiseks mõeldud aardemõõgad. puud. 1. osa

Set ^b("a", "b", "c", "d") = 1
Set ^b("a", "b", "c", "e") = 2
Set ^b("a", "b", "f", "g") = 3

Tühjad ringid on sõlmed, millele pole väärtust määratud.

Globaalide paremaks mõistmiseks võrdleme neid teiste puudega: aiapuude ja failisüsteemi nimepuudega.

Võrrelgem puid globaalidel meile kõige tuttavamate hierarhiliste struktuuridega: tavaliste aedades ja põldudel kasvavate puudega, aga ka failisüsteemidega.

Globaalid on andmete salvestamiseks mõeldud aardemõõgad. puud. 1. osa

Nagu aiapuudel näeme, leidub lehti ja vilju vaid okste otstes.
Failisüsteemid - teavet salvestatakse ainult harude otstesse, mis on täielikult kvalifitseeritud failinimed.

Ja siin on globaalne andmestruktuur.

Globaalid on andmete salvestamiseks mõeldud aardemõõgad. puud. 1. osaErinevused:

  1. Sisemised sõlmed: Globaalset teavet saab salvestada igasse sõlme, mitte ainult harude otstesse.
  2. Välised sõlmed: Globaalsel peab olema okste otstes määratletud väärtused, FS-il ja aiapuudel aga mitte.



Sisemiste sõlmede osas võime öelda, et globaalse struktuur on failisüsteemide ja aiapuude nimepuude struktuuri superkomplekt. Need. paindlikumaks.

Üldiselt globaalne on järjestatud puu, mis võimaldab salvestada andmeid igasse sõlme.

Globaalide töö paremaks mõistmiseks kujutage ette, mis juhtuks, kui failisüsteemide loojad kasutaksid teabe salvestamiseks globaalsetele sarnast lähenemist?

  1. Ühe faili kustutamine kataloogist kustutab automaatselt kataloogi ja ka kõik peal olevad kataloogid, mis sisaldavad ainult ühte äsja kustutatud kataloogi.
  2. Katalooge poleks vaja. Seal oleks lihtsalt alamfailidega failid ja alamfailideta failid. Kui võrrelda tavalise puuga, siis saaks igast oksast vili.

    Globaalid on andmete salvestamiseks mõeldud aardemõõgad. puud. 1. osa

  3. Selliseid asju nagu failid README.txt ei pruugi vaja minna. Kõik, mida oli vaja kataloogi sisu kohta öelda, sai kirjutada kataloogifaili endasse. Teeruumis on failinimi katalooginimest eristamatu, seega sai hakkama ka pelgalt failidega.
  4. Pesastatud alamkataloogide ja failidega kataloogide kustutamise kiirus suureneks järsult. Mitu korda on Habré lehel olnud artikleid selle kohta, kui kaua ja keeruline on miljonite väikeste failide kustutamine (1, 2). Kui teete pseudofailisüsteemi globaalsel pinnal, võtab see aga sekundeid või selle murdosa. Kui testisin koduarvutis alampuude kustutamist, eemaldas see HDD (mitte SSD) kahetasandilisest puust 1–96 miljonit sõlme 341 sekundiga. Veelgi enam, me räägime osa puu kustutamisest, mitte ainult kogu failist koos globaalsete failidega.

Globaalid on andmete salvestamiseks mõeldud aardemõõgad. puud. 1. osa
Alampuude eemaldamine on teine ​​​​globaalide tugev külg. Selleks pole vaja rekursiooni. See juhtub uskumatult kiiresti.

Meie puus saab seda teha käsuga tapma.

Kill ^a("+7926X")

Globaalid on andmete salvestamiseks mõeldud aardemõõgad. puud. 1. osa

Paremaks mõistmiseks selle kohta, millised toimingud on meil globaalsetes tingimustes saadaval, esitan lühikese tabeli.

Põhikäsud ja -funktsioonid COS-is globaalidega töötamiseks

komplekt
Harude määramine sõlmele (kui pole veel määratletud) ja sõlme väärtuste määramine

Merge
Alampuu kopeerimine

tapma
Alampuu eemaldamine

ZKill
Konkreetse sõlme väärtuse kustutamine. Sõlmest väljuvat alampuud ei puudutata

$Query
Täielik puu läbimine, sügavale puusse minemine

$Order
Konkreetse sõlme harude läbimine

$Data
Kontrollimine, kas sõlm on määratletud

$ juurdekasv
Sõlme väärtuse aatomiline suurendamine. Et vältida lugemist ja kirjutamist, ACID jaoks. Viimasel ajal on soovitatud vahetada vastu $Sequence

Täname tähelepanu eest, oleme valmis teie küsimustele vastama.

Kaebused: See artikkel ja minu kommentaarid sellele on minu arvamus ega ole seotud InterSystems Corporationi ametliku seisukohaga.

Laiendamine Globaalid on andmete salvestamiseks mõeldud aardemõõgad. puud. 2. osa. Saate teada, mis tüüpi andmeid saab globaalsetel andmetel kuvada ja milliste ülesannete puhul need annavad maksimaalset kasu.

Allikas: www.habr.com

Lisa kommentaar