Globalët janë shpata thesare për ruajtjen e të dhënave. Pemët. Pjesa 1

Globalët janë shpata thesare për ruajtjen e të dhënave. Pemët. Pjesa 1 Shpatat e vërteta të bazës së të dhënave - globalët - janë njohur prej kohësh, por ende pak dinë t'i përdorin ato në mënyrë efektive ose nuk e zotërojnë fare këtë superarmë.

Nëse përdorni globalët në zgjidhjen e atyre problemeve për të cilat ata janë vërtet të mirë, mund të arrini rezultate të jashtëzakonshme. Ose në produktivitet ose në thjeshtimin e zgjidhjes së problemit (1, 2).

Globalët janë një mënyrë e veçantë e ruajtjes dhe përpunimit të të dhënave, krejtësisht e ndryshme nga tabelat në SQL. Ata u shfaqën në vitin 1966 në gjuhë M(UMPS) (zhvillimi evolucionar - Cache ObjectScript, më tej COS) në bazën e të dhënave mjekësore dhe është ende atje përdoret në mënyrë aktive, dhe gjithashtu depërtoi në disa fusha të tjera ku kërkohet besueshmëri dhe performancë e lartë: financa, tregtia, etj.

Globalët në DBMS-të moderne mbështesin transaksionet, regjistrimin, replikimin dhe ndarjen. Ato. ato mund të përdoren për të ndërtuar sisteme moderne, të besueshme, të shpërndara dhe të shpejta.

Globalët nuk ju kufizojnë në modelin relacional. Ato ju japin lirinë për të zhvilluar struktura të dhënash që janë të optimizuara për detyra specifike. Për shumë aplikacione, përdorimi i zgjuar i globaleve mund të jetë vërtet një armë sekrete, duke ofruar performancë që zhvilluesit e aplikacioneve relacionale mund të ëndërrojnë vetëm.

Globalet si një mënyrë për të ruajtur të dhënat mund të përdoren në shumë gjuhë programimi moderne, të nivelit të lartë dhe të ulët. Prandaj, në këtë artikull do të fokusohem në mënyrë specifike te globalët, dhe jo te gjuha nga e cila kanë ardhur dikur.

2. Si funksionojnë globalët

Le të kuptojmë fillimisht se si funksionojnë globalët dhe cilat janë pikat e tyre të forta. Globalët mund të shikohen nga këndvështrime të ndryshme. Në këtë pjesë të artikullit do t'i shohim ato si pemë. Ose si magazinat hierarkike të të dhënave.

Për ta thënë thjesht, një global është një grup i vazhdueshëm. Një grup që ruhet automatikisht në disk.
Është e vështirë të imagjinohet diçka më e thjeshtë për ruajtjen e të dhënave. Në kod (në gjuhët COS/M) ai ndryshon nga një grup i rregullt shoqërues vetëm në simbol ^ para emrit.

Për të ruajtur të dhënat në një global, nuk keni nevojë të mësoni gjuhën e pyetjes SQL, komandat për të punuar me to janë shumë të thjeshta. Ato mund të mësohen brenda një ore.

Le të fillojmë me shembullin më të thjeshtë. Pemë me një nivel me 2 degë. Shembujt janë shkruar në COS.

Globalët janë shpata thesare për ruajtjen e të dhënave. Pemët. Pjesa 1

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



Kur futni informacion në një global (komandë Set), ndodhin automatikisht 3 gjëra:

  1. Ruajtja e të dhënave në disk.
  2. Indeksimi. Ajo që është në kllapa është çelësi (në literaturën angleze - "nënshkrimi"), dhe në të djathtë të të barabartëve është vlera ("vlera e nyjës").
  3. Renditja. Të dhënat renditen sipas çelësit. Në të ardhmen, kur përshkohet grupi, elementi i parë do të jetë "Sergey Smith", dhe i dyti "John Sidorov". Kur merrni një listë të përdoruesve nga globali, baza e të dhënave nuk humb kohë duke renditur. Për më tepër, mund të kërkoni daljen e një liste të renditur, duke filluar nga çdo çelës, qoftë edhe inekzistent (dalja do të fillojë nga çelësi i parë real, që vjen pas atij që nuk ekziston).

Të gjitha këto operacione ndodhin jashtëzakonisht shpejt. Në kompjuterin tim të shtëpisë po merrja vlera deri në 750 inserte/sek në një proces të vetëm. Në procesorët me shumë bërthama, vlerat mund të arrijnë dhjetra miliona fut/sek.

Sigurisht, shpejtësia e futjes në vetvete nuk thotë shumë. Për shembull, mund të shkruani shumë shpejt informacion në skedarë teksti - si kjo sipas thashethemeve Punon përpunimi i vizave. Por në rastin e globalëve, si rezultat kemi një ruajtje të strukturuar të indeksuar, me të cilën mund të punohet lehtësisht dhe shpejt në të ardhmen.

Globalët janë shpata thesare për ruajtjen e të dhënave. Pemët. Pjesa 1

  • Fuqia më e madhe e globalëve është shpejtësia me të cilën mund të futen nyjet e reja.
  • Të dhënat në globale janë gjithmonë të indeksuara. Përshkimi i tyre, si në një nivel ashtu edhe thellë në pemë, është gjithmonë i shpejtë.

Le të shtojmë disa degë të tjera të nivelit të dytë dhe të tretë në atë global.

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

Globalët janë shpata thesare për ruajtjen e të dhënave. Pemët. Pjesa 1

Është e qartë se pemët me shumë nivele mund të ndërtohen bazuar në globale. Për më tepër, qasja në çdo nyje është pothuajse e menjëhershme për shkak të indeksimit automatik gjatë futjes. Dhe në çdo nivel të pemës, të gjitha degët janë të renditura sipas çelësit.

Siç mund ta shihni, informacioni mund të ruhet si në një çelës ashtu edhe në një vlerë. Gjatësia totale e çelësit (shuma e gjatësive të të gjithë indekseve) mund të arrijë 511 bajt, dhe vlerat 3.6 MB për cache. Numri i niveleve në pemë (numri i dimensioneve) është 31.

Një tjetër pikë interesante. Ju mund të ndërtoni një pemë pa specifikuar vlerat e nyjeve të niveleve të sipërme.

Globalët janë shpata thesare për ruajtjen e të dhënave. Pemët. Pjesa 1

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

Rrathët e zbrazët janë nyje që nuk kanë vlerë të caktuar.

Për të kuptuar më mirë globalët, le t'i krahasojmë ato me pemët e tjera: pemët e kopshtit dhe pemët e emrave të sistemit të skedarëve.

Le të krahasojmë pemët në globale me strukturat hierarkike më të njohura për ne: me pemët e zakonshme që rriten në kopshte dhe fusha, si dhe me sistemet e skedarëve.

Globalët janë shpata thesare për ruajtjen e të dhënave. Pemët. Pjesa 1

Siç e shohim në pemët e kopshtit, gjethet dhe frutat gjenden vetëm në skajet e degëve.
Sistemet e skedarëve - informacioni ruhet vetëm në skajet e degëve, të cilat janë emra skedarësh plotësisht të kualifikuar.

Dhe këtu është struktura globale e të dhënave.

Globalët janë shpata thesare për ruajtjen e të dhënave. Pemët. Pjesa 1dallimet:

  1. Nyjet e brendshme: informacioni në një global mund të ruhet në çdo nyje, jo vetëm në skajet e degëve.
  2. Nyjet e jashtme: Globali duhet të ketë vlera të përcaktuara në skajet e degëve, ndërsa FS dhe pemët e kopshtit jo.



Për sa i përket nyjeve të brendshme, mund të themi se struktura e globales është një superbashkësi e strukturës së pemëve të emrave në sistemet e skedarëve dhe pemët e kopshtit. Ato. më fleksibël.

Në përgjithësi, globalja është pemë e porositur me aftësinë për të ruajtur të dhënat në secilën nyje.

Për të kuptuar më mirë punën e globalëve, imagjinoni se çfarë do të ndodhte nëse krijuesit e sistemeve të skedarëve do të përdornin një qasje të ngjashme me ato globale për të ruajtur informacionin?

  1. Fshirja e një skedari të vetëm në një direktori do të fshinte automatikisht drejtorinë, si dhe të gjitha drejtoritë mbi të cilat përmbajnë vetëm një direktori të sapo fshirë.
  2. Nuk do të kishte nevojë për drejtori. Thjesht do të kishte skedarë me nën-skedarë dhe skedarë pa nën-skedarë. Nëse krahasohet me një pemë të zakonshme, atëherë çdo degë do të bëhej një frut.

    Globalët janë shpata thesare për ruajtjen e të dhënave. Pemët. Pjesa 1

  3. Gjëra të tilla si skedarët README.txt mund të mos nevojiten. Çdo gjë që duhej thënë për përmbajtjen e drejtorisë mund të shkruhet në vetë skedarin e drejtorisë. Në hapësirën e shtigjeve, emri i skedarit është i padallueshëm nga emri i drejtorisë, kështu që ishte e mundur të dilnim vetëm me skedarë.
  4. Shpejtësia e fshirjes së drejtorive me nëndrejtori dhe skedarë të ndërthurur do të rritej në mënyrë dramatike. Shumë herë në Habré ka pasur artikuj rreth asaj se sa e gjatë dhe e vështirë është të fshish miliona skedarë të vegjël (1, 2). Megjithatë, nëse krijoni një sistem pseudo-skedari në një global, do të duhen sekonda ose fraksione të tij. Kur testova fshirjen e nënpemëve në një kompjuter shtëpiak, ai hoqi 1-96 milion nyje nga një pemë me dy nivele në një HDD (jo SSD) në 341 sekondë. Për më tepër, ne po flasim për fshirjen e një pjese të pemës, dhe jo vetëm të gjithë skedarit me globalët.

Globalët janë shpata thesare për ruajtjen e të dhënave. Pemët. Pjesa 1
Heqja e nënpemëve është një tjetër pikë e fortë e globalëve. Ju nuk keni nevojë për rekursion për këtë. Kjo ndodh tepër shpejt.

Në pemën tonë kjo mund të bëhet me komandën vras.

Kill ^a("+7926X")

Globalët janë shpata thesare për ruajtjen e të dhënave. Pemët. Pjesa 1

Për të kuptuar më mirë se çfarë veprimesh janë në dispozicion për ne mbi globalët, unë do të jap një tabelë të shkurtër.

Komandat dhe funksionet bazë për të punuar me globalët në COS

Set
Vendosja e degëve në një nyje (nëse nuk është përcaktuar ende) dhe vlerat e nyjeve

Shkrihet
Kopjimi i një nënpeme

vras
Heqja e një nënpeme

ZKill
Fshirja e vlerës së një nyje specifike. Nënpema që del nga nyja nuk preket

$Query
Kalimi i plotë i pemës, duke shkuar thellë në pemë

$Pord
Përshkimi i degëve të një nyje specifike

$Data
Kontrollimi nëse një nyje është përcaktuar

$Rritje
Rritja atomike e një vlere nyje. Për të shmangur leximin dhe shkrimin, për ACID. Kohët e fundit është rekomanduar të ndryshohet në $Sequence

Faleminderit për vëmendjen tuaj, ne jemi të gatshëm t'u përgjigjemi pyetjeve tuaja.

Mohim përgjegjësie: Ky artikull dhe komentet e mia për të janë mendimi im dhe nuk përfaqësojnë qëndrimin zyrtar të InterSystems Corporation.

zgjerim Globalët janë shpata thesare për ruajtjen e të dhënave. Pemët. Pjesa 2. Do të mësoni se çfarë lloje të të dhënave mund të shfaqen në globale dhe në cilat detyra ato ofrojnë përfitimin maksimal.

Burimi: www.habr.com

Shto një koment