Globaalid — andmete salvestamise mÔÔgad. Puud. Osa 1

Globaalid — andmete salvestamise mÔÔgad. Puud. Osa 1 Andmebaaside tĂ”elised globaalid on juba pikka aega tuntud, kuid siiani oskab neid tĂ”husalt kasutada vaid vĂ€hesed vĂ”i ei valdagi seda superrelva.

Kui kasutada globaale nendes ĂŒlesannetes, kus nad tĂ”eliselt head on, saab saavutada silmapaistvaid tulemusi. Olgu see siis tootlikkuses vĂ”i ĂŒlesande lahendamise lihtsustamises (1, 2).

Globaale on eriline andmete salvestamise ja töötlemise viis, mis erineb SQL-i tabelitest. Need ilmusid 1966. aastal keeles M(UMPS) (evolutsiooniline areng — CachĂ© ObjectScript, hiljem COS) meditsiinilistes andmebaasides ja neid kasutatakse siiani aktiivselt, samuti on need leidnud tee teistesse valdkondadesse, kus on vajalik usaldusvÀÀrsus ja kĂ”rge jĂ”udlus: finantssektor, kauplemine jne.TĂ€napĂ€evased andmebaasisĂŒsteemid toetavad globaalide puhul tehingute töötlemist, ajalugu, replikatsiooni ja partitsioneerimist. See tĂ€hendab, et nende pĂ”hjal saab luua kaasaegseid, usaldusvÀÀrseid, jaotatud ja kiireid sĂŒsteeme.

Globaalid tĂ€napĂ€evastes andmebaasides toetavad tehingute lĂ€biviimist, logimist, replikatsiooni ja partitsioneerimist. See tĂ€hendab, et nende peal saab ĂŒles ehitada kaasaegseid, usaldusvÀÀrseid, jaotatud ja kiireid sĂŒsteeme.

Globaalid ei piira teid relatsioonilise mudeli piirides. Need pakuvad vabadust arendada andmestruktuure, mis on optimeeritud konkreetsete ĂŒlesannete jaoks. Paljude rakenduste puhul vĂ”ib ratsionaalne globaalide kasutamine olla tĂ”eliselt saladuslik relv, mis tagab jĂ”udluse, millest relatsiooniliste rakenduste arendajad saavad ainult unistada.

Globaalide andmete salvestamise viisina saab kasutada paljusid kaasaegseid programmeerimiskeeli, nii kÔrgetasemelisi kui ka madalat. Seega keskendun selles artiklis just globaalidele, mitte keelele, millest nad kunagi pÀrinesid.

2. Kuidas globaalid töötavad

Alustame sellest, kuidas globaalid töötavad ja milles on nende tugevused. Globaalidele saab lĂ€heneda erinevatest vaatenurkadest. Selles artiklis vaatleme neid kui puudele. VĂ”i kui hierarhilisi andmete salvestamise sĂŒsteeme.

Lihtsustatult öeldes on globaal persisteeriv massiiv. Massiiv, mis salvestatakse automaatselt kettale.
Rask on raske ette kujutada midagi lihtsamat andmete salvestamiseks. Koodis (COS/M keeles) erineb see tavalisest assotsiatiivsusmassiivist ainult sĂŒmbolite poolest ^ nime ees.

Globaalsetes andmetes pole vaja Ôppida SQL pÀringute keelt, kÀsud nende kÀitlemiseks on vÀga lihtsad. Need saab Àra Ôppida tunni ajaga.

Alustame kĂ”ige lihtsamast nĂ€itest. Ühe tasandi puu kahe oksaga. NĂ€ited on kirjutatud COS-i keeles.

Globaalid — andmete salvestamise mÔÔgad. Puud. Osa 1

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



Kui teavet globaali sisestatakse (kÀsk Set), juhtub automaatselt 3 asja:

  1. Andmete salvestamine kettale.
  2. Indekseerimine. See, mis sulgudes on, on vĂ”ti (ingliskeelses kirjanduses — «subscript»), ja vĂ”rdusmĂ€rkide paremal pool on vÀÀrtus («node value»).
  3. Sorteerimine. Andmed sorteeritakse vĂ”tme jĂ€rgi. Tulevikus, kui massiivi lĂ€bitakse, saab esimeseks elemendiks «Sergey Smith» ja teiseks «John Sidorov». Kui pĂ”hjal on globaalset kasutajate loendit, ei kuluta andmebaas aega sorteeringule. Samuti vĂ”ib kĂŒsida sorteeritud nimekirja vĂ€ljundit, alustades mistahes vĂ”tmes, isegi mitteeksisteerivast (vĂ€ljund algab esimesest tegelikust vĂ”tmekoha, mis jĂ€rgneb mitteeksisteerivale).

KĂ”ik need protsessid toimuvad uskumatu kiirusel. Isiklikul arvutil saavutasin ĂŒhe protsessi jooksul vÀÀrtusi kuni 750 000 sisestust/s. Mitme tuuma protsessoritel vĂ”ivad vÀÀrtused ulatuda kĂŒmnete miljoniteni sisestust/s.

Muidugi, sisestamiskiirus iseenesest ei ĂŒtle midagi. NĂ€iteks vĂ”ib teavet vĂ€ga kiiresti kirjutada tekstifailidesse — nii kuuldavasti toimib Visa töötlemine. Kuid globaalses kontekstis saame vĂ€ljundiks struktureeritud indekseeritud salvestuse, millega on edaspidi lihtne ja kiire töötada.

Globaalid — andmete salvestamise mÔÔgad. Puud. Osa 1

  • Globaalsete sĂŒsteemide kĂ”ige tugevam kĂŒlg on uute sĂ”lmede kiire sisestamine.
  • Andmed globaalses sĂŒsteemis on alati indekseeritud. Nende lĂ€bimine on alati kiire, nii tasandil kui ka sĂŒgavale puusse.

Lisame globaalsetele sĂŒsteemidele veel mĂ”ned teise ja kolmanda taseme oksad.

Set ^a("+7926X", "linn") = "Moskva"
Set ^a("+7926X", "linn", "tÀnav") = "Req Square"
Set ^a("+7926X", "vanus") = 25
Set ^a("+7916Y", "linn") = "London"
Set ^a("+7916Y", "linn", "tÀnav") = "Baker Street"
Set ^a("+7916Y", "vanus") = 36

Globaalid — andmete salvestamise mÔÔgad. Puud. Osa 1

Ilmselt on globaalide pÔhjal vÔimalik ehitada mitme tasandi puid. Lisaks vÔimaldab automaatne indekseerimine lisamisel peaaegu kohest juurdepÀÀsu igale sÔlmele. Ja igal puu tasemel on kÔik oksad sorteeritud vÔtme jÀrgi.

Kuidas nĂ€ha, saab teavet hoida nii vĂ”tmes kui vÀÀrtuses. VĂ”tme kogupikkus (kĂ”igi indeksite pikkuste summa) vĂ”ib ulatuda 511 baitini, vÀÀrtuste jaoks 3,6 MB CachĂ© jaoks. Puude tasemete arv (mÔÔtmete arv) — 31.

Veel ĂŒks huvitav punkt. Saab ehitada puu, mÀÀramata ĂŒlemiste tasemete sĂ”lmede vÀÀrtusi.

Globaalid — andmete salvestamise mÔÔgad. Puud. Osa 1

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

TĂŒhjad ringid — need on sĂ”lmed, millele ei ole vÀÀrtust omistatud.

Globaalide paremini mĂ”istmiseks vĂ”rrelgem neid teiste puudega: aiapuudega ja failisĂŒsteemide puudega.

VĂ”rreldes puid globaalidega meie tuntud hierarhiliste struktuuridega: tavapĂ€raste puude, mis kasvavad aedades ja pĂ”ldudel, ning failisĂŒsteemidega.

Globaalid — andmete salvestamise mÔÔgad. Puud. Osa 1

Kuna nÀeme, on aiapuude lehed ja viljad ainult okste otstes.
FailisĂŒsteemides — teave salvestatakse ainult okste otstes, mis on failide tĂ€isnimed.

Siin on globaalsete andmete struktuur.

Globaalid — andmete salvestamise mÔÔgad. Puud. Osa 1Erinevused:

  1. Sisemised sÔlmed: Teavet globaalses keskkonnas saab salvestada igas sÔlmes, mitte ainult harude otstes.
  2. VÀlimised sÔlmed: Globaalidel peavad otsades olema mÀÀratletud vÀÀrtused, FS-puudel ja aiapuudel seda ei ole.



MĂ”nede sisemiste sĂ”lmede osas vĂ”ib öelda, et globaali struktuur on failisĂŒsteemide ja aedade puude nimekirja ĂŒlemkogum. St, see on paindlikum.

Üldiselt esindab globaal jĂ€rjestatud puu, kus andmeid saab salvestada igas sĂ”lmes..

Kuna globaali toimimist paremini mĂ”ista, kujutame ette, et failisĂŒsteemide loojad oleksid kasutanud teavet salvestamiseks lahendust, mis sarnaneb globaalidega.

  1. Kui kaustast kustutatakse ainus fail, kustutataks automaatselt ka see kaust ning kĂ”ik ĂŒlespoole jÀÀvad kaustad, mis sisaldavad ainult just kustutatud kausta.
  2. Kaustade vajadus kaoks. Lihtsalt oleksid failid alafailega ja failid ilma alafaileta. Kui vÔrrelda seda tavalise puuga, muutuks iga haru viljaks.

    Globaalid — andmete salvestamise mÔÔgad. Puud. Osa 1

  3. Asjad nagu README.txt failid vĂ”ivad kaduda. KĂ”ik, mida kausta sisu kohta öelda, vĂ”iks salvestada kausta faili endasse. Faili nimi teede ruumis ei eristu kausta nimest, seega vĂ”iks piirduda ainuĂŒksi failidega.
  4. Kaustade eemaldamise kiirus koos alamkaustade ja failidega suureneks dramaatiliselt. Palju kordi on Habril ilmunud artikleid selle kohta, kui kaua ja keeruline on eemaldada miljoneid vĂ€ikeseid faile (1, 2). Siiski, pseudo-failisĂŒsteemi loomisel globaalide jaoks vĂ”taks see sekundeid vĂ”i isegi osakesi sekundi. Kui ma testisin alampuude eemaldamist kodu arvutis, siis ĂŒhe sekundiga eemaldati 96-341 miljonit sĂ”lme kaheharulises puus HDD-l (mitte SSD-l). RÀÀkides on juttu puu osa eemaldamisest, mitte lihtsalt kĂ”igi failide globaalidest.

Globaalid — andmete salvestamise mÔÔgad. Puud. Osa 1
Alampuude eemaldamine on veel ĂŒks globaalide tugevus. Selleks ei ole vajalik rekursioon. See toimub uskumatult kiiresti.

Meie puus saaks selle teha kÀsklusega Tappa.

Tappa ^a("+7926X")

Globaalid — andmete salvestamise mÔÔgad. Puud. Osa 1

Parema arusaama saamiseks globaalide ĂŒle toimingute kohta, toon lĂŒhikese tabeli.

PÔhijuhised ja funktsioonid globaalide töötamiseks COS-is

Set
Filiaalide seadistamine sÔlme (kui need pole veel mÀÀratud) ja sÔlme vÀÀrtus

Ühenda
Alampuu kopeerimine

Tappa
Alampuu eemaldamine

ZKill
Konkreetse sÔlme vÀÀrtuse eemaldamine. SÔlmest vÀljuvat alampuud ei puudutata

$Query
TĂ€ielik puu lĂ€bimine sĂŒgavusse minnes

$Order
Konkreetse sÔlme harude lÀbimine

$Data
Kontrolli, kas sÔlm on mÀÀratud

$Increment
SÔlme vÀÀrtuse aatomiline suurendamine. Et vÀltida lugemist ja kirjutamist, ACID jaoks. Viimasel ajal soovitatakse muuta $Sequence

AitĂ€h tĂ€helepanu eest, oleme valmis teie kĂŒsimustele vastama.

MĂ€rkus: Antud artikkel ja minu kommentaarid sellele on minu arvamus ja ei oma seost InterSystems korporatsiooni ametliku positsiooniga.

JĂ€tk Globaalid – andmete salvestamiseks mĂ”eldud mÔÔgad-kalad. Puud. Osa 2. Te Ă”pite, milliseid andmetĂŒĂŒpe saab globaalides kuvada ja millistel ĂŒlesannetel need toovad maksimaalse kasu.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster