GlobalĂ«t — shkurtime tĂ« ndryshme pĂ«r ruajtjen e tĂ« dhĂ«nave. PemĂ«t. Pjesa 1

GlobalĂ«t — shkurtime tĂ« ndryshme pĂ«r ruajtjen e tĂ« dhĂ«nave. PemĂ«t. Pjesa 1 Meçal e vĂ«rteta tĂ« bazave tĂ« tĂ« dhĂ«nave – globalĂ«t – janĂ« tĂ« njohura prej kohĂ«sh, por ende shumĂ« pak njerĂ«z 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 për të zgjidhur problemet ku ata janë vërtet të mirë, mund të arrini rezultate të shkëlqyera. Ose në performancë, ose në përmirësimin e zgjidhjes së problemit (1, 2).

GlobalĂ«t janĂ« njĂ« mĂ«nyrĂ« speciale e ruajtjes dhe pĂ«rpunimit tĂ« tĂ« dhĂ«nave, krejtĂ«sisht ndryshe nga tabelat nĂ« SQL. Ata u shfaqĂ«n nĂ« vitin 1966 nĂ« gjuhĂ«n M(UMPS) (evolucioni – CachĂ© ObjectScript, mĂ« pas COS) nĂ« bazat e tĂ« dhĂ«nave mjekĂ«sore dhe ende atje pĂ«rdoren aktivisht, si dhe kanĂ« depĂ«rtuar nĂ« disa fusha tĂ« tjera ku kĂ«rkohet besueshmĂ«ri dhe performancĂ« e lartĂ«: financa, tregtimi etj.

Globalët në sistemet moderne të menaxhimit të të dhënave mbështesin transaksionet, regjistrimin, replikimin, dhe ndarjen. Pra, mbi ta mund të ndërtohen sisteme moderne, të besueshme, të shpërndara dhe të shpejta.

Globalët nuk ju kufizojnë brenda kufijve të modelit relacionar. Ata ofrojnë liri për zhvillimin e strukturave të të dhënave, të optimizuara për detyra specifike. Për shumicën e aplikacioneve, përdorimi i arsyeshëm i globalëve mund të jetë me të vërtetë arma e fshehtë, duke ofruar performancën për të cilën zhvilluesit e aplikacioneve relacionale mund të ëndërrojnë.

Globalët si një mënyrë për të ruajtur të dhënat mund të përdoren në shumë gjuhë moderne programimi, si në ato të nivelit të lartë ashtu edhe në ato të nivelit të ulët. Prandaj, në këtë artikull do të fokusohëm pikërisht te globalët, dhe jo në gjuhën nga e cila ata janë nxjerrë dikur.

2. Si funksionojnë globalët

Le të kuptojmë së pari se si funksionojnë globalët dhe cili është forca e tyre. Globalët mund të shihen nga këndvështrime të ndryshme. Në këtë pjesë të artikullit ne do t'i shohim ata si pemë. Ose si depo të hierarkizuara të të dhënave.

Thënë thjeshtë, një global është një masiv i qëndrueshëm. Një masiv që ruhet automatikisht në disk.
ËshtĂ« e vĂ«shtirĂ« tĂ« imagjinosh diçka mĂ« tĂ« thjeshtĂ« pĂ«r ruajtjen e tĂ« dhĂ«nave. NĂ« kod (nĂ« gjuhĂ«t COS/M) ai dallon nga njĂ« masiv asociativ tĂ« zakonshĂ«m vetĂ«m me simbolet ^ para emrit.

Për të ruajtur të dhënat në një global, nuk është e nevojshme të mësosh gjuhën e pyetjeve SQL, komandat për të punuar me to janë shumë të thjeshtë. Mund të mësohen brenda një ore.

Të fillojmë me shembullin më të thjeshtë. Një pemë një-niveli me 2 degë. Shembujt janë shkruar në COS.

GlobalĂ«t — shkurtime tĂ« ndryshme pĂ«r ruajtjen e tĂ« dhĂ«nave. PemĂ«t. Pjesa 1

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



Kur shtoni informacion në global (komanda Set) ndodhin automatikisht 3 gjëra:

  1. Ruajtja e të dhënave në disk.
  2. Indeksimi. ÇfarĂ« Ă«shtĂ« nĂ« kllapa vepron si çelĂ«s (nĂ« literaturĂ«n anglisht - "subscript"), ndĂ«rsa djathtas nga barazimi Ă«shtĂ« vlera ("node value").
  3. Klasifikimi. Të dhënat klasifikohen sipas çelësit. Në vijim, gjatë kalimit të masës, elementi i parë do të jetë "Sergey Smith", dhe i dyti "John Sidorov". Kur merrni një listë përdoruesish nga global, baza nuk e shpenzon kohën për klasifikim. Për më tepër, është e mundur të kërkoni shfaqjen e një liste të klasifikuar, duke filluar nga çdo çelës, madje edhe ai që nuk ekziston (shfaqja do të fillojë nga çelësi real i parë që vjen pas atij që nuk ekziston).

Të gjitha këto operacione ndodhin jashtëzakonisht shpejt. Në kompjuterin tim shtëpiak kam marrë deri në 750,000 futje/sekon në një proces. Në procesorë multinivel, vlerat mund të arrijnë dhjetra miliona futje/sekon.

Natyrisht, shpejtësia e futjes vetvetiu nuk tregon shumë. Për shembull, është shumë e shpejtë të shkruani informacion në skedarë tekstualë - kështu sipas thashethemeve funksionon procesimi i Visa. Por në rastin e globalëve, ne marrim një depo të strukturuar të indeksuar, me të cilin më pas është e lehtë dhe shpejt të punojmë.

GlobalĂ«t — shkurtime tĂ« ndryshme pĂ«r ruajtjen e tĂ« dhĂ«nave. PemĂ«t. Pjesa 1

  • Pika mĂ« e fortĂ« e globalĂ«ve Ă«shtĂ« shpejtĂ«sia e futjes sĂ« nyjave tĂ« reja.
  • TĂ« dhĂ«nat nĂ« global janĂ« gjithmonĂ« tĂ« indeksuara. Kalimi i tyre si nĂ« njĂ« nivel, ashtu edhe thellĂ« nĂ« pemĂ«, Ă«shtĂ« gjithmonĂ« i shpejtĂ«.

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

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 — shkurtime tĂ« ndryshme pĂ«r ruajtjen e tĂ« dhĂ«nave. PemĂ«t. Pjesa 1

Èshtë e qartë se mbi bazën e globalëve mund të ndërtohen pemë me shumë nivele. Dhe aksesin në çdo nyje është praktikisht momental për shkak të autoindeksimit gjatë futjes. Dhe në çdo nivel të pemës, të gjitha degët janë të klasifikuara sipas çelësit.

Siç duket, informacioni mund të ruhet si në çelës ashtu edhe në vlerë. Gjatësia totale e çelësit (shuma e gjatësi të gjitha indekset) mund të arrijë 511 byte, ndërsa vlerat 3.6 MB për Caché. Numri i niveleve në pemë (numri i dimensioneve) është 31.

Një pikë tjetër interesante. Mund të ndërtoni një pemë, pa përcaktuar vlerat e nyjave të niveleve të sipërme.

GlobalĂ«t — shkurtime tĂ« ndryshme 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

Rrethet e zbrazët janë nyje të cilëve nuk u është caktuar asnjë vlerë.

Për të kuptuar më mirë globalët, le të krahasojmë ata me struktura të tjera: me pemë kopështesh dhe me pemët e sistemeve të skedarëve.

Le të krahasojmë pemët në globalë 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 — shkurtime tĂ« ndryshme pĂ«r ruajtjen e tĂ« dhĂ«nave. PemĂ«t. Pjesa 1

Siç e shohim te pemët e kopshteve, gjethet dhe frutat ndodhen vetëm në fundin e degëve.
Sistemet e skedarĂ«ve – informacioni ruhet vetĂ«m nĂ« fundet e degĂ«ve, tĂ« cilat janĂ« emra tĂ« plotĂ« skedarĂ«sh.

Ja struktura e të dhënave në global.

GlobalĂ«t — shkurtime tĂ« ndryshme pĂ«r ruajtjen e tĂ« dhĂ«nave. PemĂ«t. Pjesa 1Dallimet:

  1. Nyjet e brendshme: informacioni në global mund të ruhet në çdo nyje, dhe jo vetëm në fundet e degëve.
  2. Nyjet e jashtme: nĂ« global, Ă«shtĂ« e domosdoshme qĂ« tĂ« jenĂ« tĂ« caktuara vlerat nĂ« fundet e degĂ«ve, ndĂ«rsa te pemĂ«t e FS dhe atyre tĂ« kopshteve – jo.



Për pjesën e nyjeve të brendshme, mund të themi se struktura e global është një nënkuptim i strukturës së pemëve të emrave në sistemet e skedarëve dhe pemëve të kopshteve. Domethënë, më fleksibile.

Në rastin më të përgjithshëm, globali përfaqëson një pemë të renditur me mundësi për ruajtjen e të dhënave në çdo nyje..

Për të kuptuar më mirë funksionimin e globalëve, le të imagjinojmë se çfarë do të kishte ndodhur, nëse krijuesit e sistemeve të skedarëve do të kishin përdorur një qasje të ngjashme me atë të globalëve për ruajtjen e informacionit?

  1. Me fshirjen e një skedari të vetëm në një dosje, automatikisht do të fshiheshin edhe dosja dhe të gjitha dosjet mbi të që përmbanin vetëm atë dosje të sapofshirë.
  2. Nevojën për dosje do ta humbisnim. Thjesht do të ishim skedarë me nënskedare dhe skedarë pa nënskedare. Nëse e krahasojmë me një pemë të zakonshme, secila degë do të bëhej një frut.

    GlobalĂ«t — shkurtime tĂ« ndryshme pĂ«r ruajtjen e tĂ« dhĂ«nave. PemĂ«t. Pjesa 1

  3. GjĂ«rat si skedari README.txt, ndoshta, do tĂ« ishin eliminuar. Çdo gjĂ« qĂ« duhej tĂ« thoshte rreth pĂ«rmbajtjes sĂ« dosjes mund tĂ« ishte shkruar brenda skedarit tĂ« dosjes. NĂ« hapĂ«sirĂ«n e rrugĂ«ve, emri i skedarit nuk Ă«shtĂ« i diferencueshĂ«m nga emri i dosjes, kĂ«shtu qĂ« mund tĂ« shkonim vetĂ«m me skedarĂ«.
  4. Shpejtësia e fshirjes së dosjeve me nën-dosje dhe skedarë do të rritej ndjeshëm. Shumë herë në Habrë kanë kaluar artikuj rreth sa e gjatë dhe e vështirë është të fshijmë miliona skedarë të vegjël.1, 2). Megjithatë, nëse krijoni një sistem pseudo-fajllor në global, kjo do të marrë sekonda ose disa pjesë të tyre. Kur testova fshirjen e nënpjerrjeve në kompjuterin tim të shtëpisë, 96-341 milion nyje në një pemë me dy nivele fshiheshin për 1 sekondë nga HDD (jo SSD). Dhe është fjala për fshirjen e një pjese të pemës, jo thjesht të gjithë skedarit me globalet.

GlobalĂ«t — shkurtime tĂ« ndryshme pĂ«r ruajtjen e tĂ« dhĂ«nave. PemĂ«t. Pjesa 1
Fshirja e nënpjerrjeve është një tjetër pikë e fortë e globalëve. Për këtë nuk nevojitet rekursivitet. Kjo ndodh jashtëzakonisht shpejt.

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

Kill ^a("+7926X")

GlobalĂ«t — shkurtime tĂ« ndryshme pĂ«r ruajtjen e tĂ« dhĂ«nave. PemĂ«t. Pjesa 1

Për një kuptim më të mirë të veprimeve që na janë në dispozicion mbi globalet, do të jap një tabelë të shkurtër.

Komandat dhe funksionet kryesore për punën me globalet në COS

Caktoni
Vendosja e degeve deri në nyje (nëse ende nuk janë të përcaktuara) dhe vlera e nyjes

Merge
Kopjimi i nënpjerrjeve

Kill
Fshirja e nënpjerrjes

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

$Query
Shfrytëzimi i plotë i pemës me futje në thellësi

$Order
Përshkimin e degëve të një nyjeje specifike

$Data
Kontrolli nëse nyja është e përcaktuar

$Increment
Inkrementimi atomik i vlerës së nyjes. Për të mos bërë lexime dhe shkrime, për ACID. Së fundmi rekomandohet ta ndërroni në $Sequence

Faleminderit për vëmendjen, jemi të gatshëm të përgjigjemi për pyetjet tuaja.

Kufizimi: Ky artikull dhe komentet e mia për të janë mendimi im dhe nuk kanë të bëjnë me pozitat zyrtare të kompanisë InterSystems.

Vazhdimi Globalët - shpata të fshehura për ruajtjen e të dhënave. Pemët. Pjesa 2. Ju do të mësoni se cilat lloje të të dhënave mund të shfaqen në global dhe për cilat detyra ato ofrojnë përfitimin maksimal.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster