Globaale — andmete salvestamise mÔÔgad-ladenetsed. Puud. Osa 1.

Globaale — andmete salvestamise mÔÔgad-ladenetsed. Puud. Osa 1. Tegelikud andmebaasi globaalsed globaalid on ammu tuntud, kuid siiani oskab neist tĂ”husalt kasutada vaid vĂ€hesed vĂ”i keegi ei valda seda superrelva.

Kui kasutada gloobuseid ĂŒlesannete lahendamiseks, milles nad tĂ”eliselt head on, on vĂ”imalik saavutada silmapaistvaid tulemusi. Olgu need siis jĂ”udluses vĂ”i lahenduste lihtsustamises (1, 2).

Globaalsed globaalid on andmete salvestamise ja töötlemise spetsiaalne viis, mis erineb SQL-i tabelitest. Need ilmusid 1966. aastal keeles M(UMPS) (evolutsiooniline areng — CachĂ© ObjectScript, hiljem COS) meditsiinilistes andmebaasides ja on seal endiselt aktiivselt kasutusel, samuti on nad levinud mitmetesse teistesse valdkondadesse, kus on vajalik usaldusvÀÀrsus ja kĂ”rge jĂ”udlus: rahandus, kauplemine jne.

Globaalsed globaalid toetavad kaasaegsetes andmebaasisĂŒsteemides tehingute, logimise, replikatsiooni ja partitsioneerimise vĂ”imalusi. St. nende pĂ”hjal saab luua kaasaegseid, usaldusvÀÀrseid, hajutatud ja kiireid sĂŒsteeme.

Globaalsed globaalid ei piira teid relaatsiooni mudeli piiridega. Need annavad vabaduse arendada andmestruktuure, mis on optimeeritud konkreetsete ĂŒlesannete jaoks. Paljude rakenduste jaoks vĂ”ib globaalide mĂ”istlik kasutamine olla tĂ”eliselt salajane relv, pakkudes jĂ”udlust, millest suhteliste rakenduste arendajad vĂ”ivad vaid unistada.

Globaalsed globaalid andmete salvestamise viisina on kasutatavad paljudes kaasaegsetes programmeerimiskeeltes, nii kÔrgetasemelistes kui ka madalatemelistes. SeetÔttu keskendun selles artiklis just globaalsele, mitte keelele, millest need kunagi alguse said.

2. Kuidas globaalsed globaalid töötavad

Alustame sellest, kuidas globaalsed globaalid töötavad ja milles on nende tugevused. Globaalseid mundosid saab vaadata erinevatest vaatenurkadest. KÀesolevas artiklis vaatleme neid kui puid. VÔi kui hierarhilisi andmesalvestusi.

Lihtsustatult öeldes on globaalsed globaalid pĂŒsivamad massiivid. Massiiv, mis salvestatakse automaatselt kettale.
Raske on vĂ€lja mĂ”elda midagi lihtsamat andmete salvestamiseks. Koodis (COS/M keeles) erineb see tavalisest assotsiatiivsest massiivist ainult sĂŒmboliga ^ nime ees.

Andmete salvestamiseks globaalses andmebaasis ei ole vaja Ôppida SQL-pÀringute keelt, kÀsud nende töötlemiseks on vÀga lihtsad. Need on vÔimalik Ôppida tunni ajaga.

Alustame kĂ”ige lihtsama nĂ€itega. Ühe tasandi puu kahe oksaga. NĂ€idised on kirjutatud COS-is.

Globaale — andmete salvestamise mÔÔgad-ladenetsed. Puud. Osa 1.

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



Kui teavet lisatakse globaali (kÀsk Set), toimub automaatselt kolm asja:

  1. Andmete salvestamine kettale.
  2. Indekseerimine. See, mis on sulgudes, on vÔti (ingliskeelses kirjanduses - «subscript»), ja kui on kujutatud vÔrduse paremal pool - vÀÀrtus («node value»).
  3. Sorteerimine. Andmeid sorteeritakse vĂ”tme alusel. Hiljem, kui massiivi lĂ€bida, on esimene element «Sergey Smith» ja teine «John Sidorov». Kui kĂŒsitakse globaali kasutajate loendit, ei raiska andmebaas aega sorteerimisele. Nii et saate kĂŒsida sorteeritud loendi vĂ€ljundit, alustades mis tahes vĂ”tmega, isegi mitteeksisteeriva (vĂ€ljund algab esimesest tegelikust vĂ”tme, mis tuleb pĂ€rast mitteeksisteerivat).

KĂ”ik need toimingud toimuvad uskumatult kiiresti. KĂ”igepealt, kodu arvutis sain tulemusi kuni 750 000 sisestust/sec ĂŒhes protsessis. Mitme sĂŒdamikuga protsessorites vĂ”ivad tulemused ulatuda kĂŒmmnete miljonite sisestust/sec.

Muidugi, endast kiirus kirjutamine ei ĂŒtle palju. NĂ€iteks saab teavet vĂ€ga kiiresti salvestada tekstifailidesse - niimoodi kuuldavasti töötleb Visa. Kuid globaali puhul saame vĂ€ljundiks struktureeritud indekseeritud salvestusruumi, millega saab hiljem lihtsalt ja kiiresti töötada.

Globaale — andmete salvestamise mÔÔgad-ladenetsed. Puud. Osa 1.

  • Globaali kĂ”ige tugevam kĂŒlg on uute sĂ”lmede sisestamise kiirus.
  • Andmed globaalis on alati indekseeritud. Nende lĂ€bimine on nii ĂŒhel tasandil kui ka sĂŒgavale puusse alati kiire.

Lisame globaali veel mÔned teise ja kolmanda tasandi oksad.

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

Globaale — andmete salvestamise mÔÔgad-ladenetsed. Puud. Osa 1.

On ilmne, et globaali pÔhjal on vÔimalik ehitada mitme tasandi puid. Ligi kummalegi sÔlmele on peaaegu kohene juurdepÀÀs, kuna indeksitaktika toimub sisestamisel. Igal tasandil on kÔik oksad sorteeritud vÔtme alusel.

Nagu nÀha, saab teavet sÀilitada nii vÔtmes kui ka vÀÀrtuses. VÀikseim vÔtme pikkus (kÔik indeksid kokku) vÔib ulatuda 511 baitini, ja vÀÀrtused 3.6 MB Caché jaoks. Puus on tasandeid (mÔÔtmeid) - 31.

Veel huvitav punkt. Puud saab ehitada, mÀÀramata ĂŒlemise tasandi sĂ”lmede vÀÀrtusi.

Globaale — andmete salvestamise mÔÔgad-ladenetsed. Puud. Osa 1.

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

TĂŒhjad sĂ”lmed on need, millele ei ole mÀÀratud vÀÀrtust.

Et paremini mĂ”ista globaale, vĂ”rrelgem neid teiste puudega: aiapuude ja failisĂŒsteemide puude vahel.

VĂ”rreldes globaale puid meile tuntud hierarhiliste struktuuridega: tavalised puud, mis kasvavad aedades ja pĂ”ldudel, samuti failisĂŒsteemid.

Globaale — andmete salvestamise mÔÔgad-ladenetsed. Puud. Osa 1.

Nagu me nÀeme aiapuudel, asuvad lehed ja viljad ainult oksade otstes.
FailisĂŒsteemides on teave salvestatud ainult oksade otstes, mis on failide tĂ€ielikud nimed.

Siin on globaali andmestruktuur.

Globaale — andmete salvestamise mÔÔgad-ladenetsed. Puud. Osa 1.Erinevused:

  1. Sisemised sÔlmed: globaali sises vÔib hoida teavet igas sÔlmes, mitte ainult oksade otstes.
  2. VĂ€limised sĂ”lmed: globaalis peavad oksade otstes olema vÀÀrtused, failisĂŒsteemide ja aiapuude puhul ei pea need olema.



MĂ”nede sisemiste sĂ”lmede osas vĂ”ib öelda, et globaali struktuur on ĂŒlekompleksne failisĂŒsteemide nimedepuude struktuurist. See on paindlikum.

Üldiselt esindab globaali jĂ€rjekindel puu, millel on vĂ”imalus salvestada andmeid igas sĂ”lmes.

Kuna me tahame paremini mĂ”ista globaale, kujutame ette, kuidas oleks, kui failisĂŒsteemi loojad oleksid kasutanud sarnast lĂ€henemist nagu globaalsed?

  1. Ainukese faili kustutamine kaustast kustutaks automaatselt ka kausta ja kĂ”ik ĂŒlemised kaustad, mis sisaldaksid ainult Ă€sja kustutatud kausta.
  2. Kaustade vajadus oleks kadunud. Lihtsalt oleks faile alafailidega ja faile ilma alafaile. Kui vÔrrelda tavalise puudega, muutuks iga oks viljaks.

    Globaale — andmete salvestamise mÔÔgad-ladenetsed. Puud. Osa 1.

  3. Sellised asjad nagu README.txt failid oleksid vÔib-olla kadunud. KÔik, mida oli vaja öelda kausta sisu kohta, oleks vÔinud salvestada kausta enda faili. Tee ruumis ei saa faili nime eristada kausta nimest, seega oleks saanud hakkama ainult failidega.
  4. Kaustade kustutamise kiirus koos alamkaustade ja failidega oleks oluliselt suurenenud. Palju kordi on Habr's ilmunud artikleid selle kohta, kui kaua ja raske on kustutada miljoneid vĂ€ikeseid faile (1, 2). Kuid kui luua globaalsetesse sĂŒsteemidesse pseudofailide sĂŒsteem, siis see vĂ”tab sekundeid vĂ”i murdosakesi. Kui ma testisin alampuidu kustutamist koduarvutis, kustutati 1 sekundiga 96-341 miljonit sĂ”lme kahetasandilisest puust HDD-l (mitte SSD). Ja jutt on osa puu kustutamisest, mitte lihtsalt kogu faili globaalsest kustutamisest.

Globaale — andmete salvestamise mÔÔgad-ladenetsed. Puud. Osa 1.
Alampuidu kustutamine on globaalide veel ĂŒks tugev kĂŒlg. Selleks ei ole vaja rekursiooni. See juhtub uskumatu kiirusel.

Meie puus vÔiks selle teha kÀsuga Tapa.

Tapa ^a("+7926X")

Globaale — andmete salvestamise mÔÔgad-ladenetsed. Puud. Osa 1.

Parima arusaamiseks, millised toimingud on globaalide ĂŒle teostatavad, toon vĂ€lja lĂŒhikese tabeli.

Peamised kÀsud ja funktsioonid globaalide haldamiseks COS-is

Seada
Harude seadmine sÔlme (kui veel mÀÀratlemata) ja sÔlme vÀÀrtuse seadmine

Merge
Alampuidu kopeerimine

Tapa
Alampuidu kustutamine

ZKill
Konkreetse sÔlme vÀÀrtuse kustutamine. SÔlmest vÀlja ulatuvaid alampuidu ei puututa.

$KĂŒsi
Kogu puu lĂ€bimine sĂŒgavale sisse minnes

$KĂ€sk
Konkreetse sÔlme harude lÀbimine

$Andmed
Kontrollige, kas sÔlm on mÀÀratud

$Inkrementeeri
Aatomaarne sÔlme vÀÀrtuse suurendamine. Et mitte teha lugemisi ja kirjutamisi, ACID-i jaoks. Viimastel aegadel soovitatakse vahetada $JÀrjekord

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

MĂ€rkus: See artikkel ja minu kommentaarid sellele on minu arvamus ning ei kajasta InterSystems korporatsiooni ametlikku seisukohta.

JĂ€tkub Globaalid — andmete salvestamise mÔÔgad. Puud. Osa 2. Saate teada, milliseid andmetĂŒĂŒpe saab globaalidel kuvada ja millistel ĂŒlesannetel need annavad maksimaalse kasu.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster