Globālie ir dārgumu zobeni datu glabāšanai. Koki. 1. daļa

Globālie ir dārgumu zobeni datu glabāšanai. Koki. 1. daļa Īstie datubāzes zobeni – globālie – ir zināmi jau sen, taču joprojām retais prot tos efektīvi izmantot vai arī viņiem šis superierocis nemaz nepieder.

Ja izmantojat globālos risinājumus to problēmu risināšanā, kurās viņi patiešām padodas, jūs varat sasniegt izcilus rezultātus. Vai nu produktivitātē, vai problēmas risinājuma vienkāršošanā (1, 2).

Globālie ir īpašs datu glabāšanas un apstrādes veids, kas pilnīgi atšķiras no tabulām SQL. Tie parādījās valodā 1966. gadā M(UMPS) (evolūcijas attīstība - Kešatmiņa ObjectScript, turpmāk COS) medicīnas datubāzē un joprojām tur atrodas aktīvi izmantots, kā arī iekļuva dažās citās jomās, kur nepieciešama uzticamība un augsta veiktspēja: finanses, tirdzniecība utt.

Globālie elementi mūsdienu DBVS atbalsta transakcijas, reģistrēšanu, replikāciju un sadalīšanu. Tie. tās var izmantot, lai izveidotu modernas, uzticamas, izplatītas un ātras sistēmas.

Globālie faktori neierobežo jūs ar relāciju modeli. Tie sniedz jums brīvību izstrādāt datu struktūras, kas ir optimizētas konkrētiem uzdevumiem. Daudzām lietojumprogrammām gudra globālo elementu izmantošana patiešām var būt slepens ierocis, nodrošinot veiktspēju, par kādu relāciju lietojumprogrammu izstrādātāji var tikai sapņot.

Globālos datus kā datu glabāšanas veidu var izmantot daudzās modernās programmēšanas valodās gan augsta, gan zema līmeņa. Tāpēc šajā rakstā es pievērsīšos tieši globālajiem, nevis valodai, no kuras tie kādreiz cēlušies.

2. Kā darbojas globālie

Vispirms sapratīsim, kā globālie darbojas un kādas ir viņu stiprās puses. Globālos var aplūkot no dažādiem skatu punktiem. Šajā raksta daļā mēs tos aplūkosim kā kokus. Vai kā hierarhiskas datu noliktavas.

Vienkārši sakot, globālais ir pastāvīgs masīvs. Masīvs, kas tiek automātiski saglabāts diskā.
Ir grūti iedomāties kaut ko vienkāršāku datu glabāšanai. Kodā (COS/M valodās) tas atšķiras no parastā asociatīvā masīva tikai ar simbolu ^ pirms vārda.

Lai saglabātu datus globālā formātā, jums nav jāapgūst SQL vaicājumu valoda; komandas darbam ar tiem ir ļoti vienkāršas. Tos var apgūt stundas laikā.

Sāksim ar vienkāršāko piemēru. Vienlīmeņa koks ar 2 zariem. Piemēri ir rakstīti COS.

Globālie ir dārgumu zobeni datu glabāšanai. Koki. 1. daļa

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



Ievietojot informāciju globālajā (komanda Set), automātiski notiek 3 lietas:

  1. Datu saglabāšana diskā.
  2. Indeksēšana. Iekavās ir atslēga (angļu literatūrā - “apakšraksts”), un pa labi no vienāda ir vērtība (“mezgla vērtība”).
  3. Kārtot. Dati tiek sakārtoti pēc atslēgas. Nākotnē, šķērsojot masīvu, pirmais elements būs “Sergey Smith”, bet otrais “Džons Sidorovs”. Saņemot lietotāju sarakstu no globālā, datu bāze netērē laiku šķirošanai. Turklāt jūs varat pieprasīt sakārtota saraksta izvadi, sākot no jebkuras atslēgas, pat neesošas (izvade sāksies no pirmās reālās atslēgas, kas nāk pēc neesošās).

Visas šīs operācijas notiek neticami ātri. Manā mājas datorā vienā procesā ieguvu vērtības līdz 750 000 ieliktņu sekundē. Daudzkodolu procesoros vērtības var sasniegt desmitiem miljonu ieliktņi/sek.

Protams, pats ievietošanas ātrums neko daudz neizsaka. Jūs, piemēram, varat ļoti ātri ierakstīt informāciju teksta failos - kā šis baumoja Vīzu noformēšanas darbi. Bet globālo ierīču gadījumā mēs iegūstam strukturētu indeksētu krātuvi, ar kuru var viegli un ātri strādāt nākotnē.

Globālie ir dārgumu zobeni datu glabāšanai. Koki. 1. daļa

  • Globālo ierīču lielākā stiprā puse ir jaunu mezglu ievietošanas ātrums.
  • Globālie dati vienmēr tiek indeksēti. To šķērsošana gan vienā līmenī, gan dziļi kokā vienmēr ir ātra.

Pievienosim globālajam vēl dažus otrā un trešā līmeņa atzarus.

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

Globālie ir dārgumu zobeni datu glabāšanai. Koki. 1. daļa

Ir skaidrs, ka daudzlīmeņu kokus var veidot, pamatojoties uz globāliem. Turklāt piekļuve jebkuram mezglam ir gandrīz tūlītēja, pateicoties automātiskai indeksācijai ievietošanas laikā. Un jebkurā koka līmenī visi zari tiek sakārtoti pēc atslēgas.

Kā redzat, informāciju var saglabāt gan atslēgā, gan vērtībā. Kopējais atslēgas garums (visu indeksu garumu summa) var sasniegt 511 baitiun vērtības 3.6 МБ kešatmiņai. Līmeņu skaits kokā (dimensiju skaits) ir 31.

Vēl viens interesants punkts. Jūs varat izveidot koku, nenorādot augšējo līmeņu mezglu vērtības.

Globālie ir dārgumu zobeni datu glabāšanai. Koki. 1. daļa

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

Tukšie apļi ir mezgli, kuriem nav piešķirta vērtība.

Lai labāk izprastu globālos, salīdzināsim tos ar citiem kokiem: dārza kokiem un failu sistēmas nosaukumu kokiem.

Salīdzināsim globālos kokus ar mums vispazīstamākajām hierarhiskajām struktūrām: ar parastajiem kokiem, kas aug dārzos un laukos, kā arī ar failu sistēmām.

Globālie ir dārgumu zobeni datu glabāšanai. Koki. 1. daļa

Kā redzam dārza kokos, lapas un augļi ir sastopami tikai zaru galos.
Failu sistēmas - informācija tiek glabāta tikai zaru galos, kas ir pilnībā kvalificēti failu nosaukumi.

Un šeit ir globālā datu struktūra.

Globālie ir dārgumu zobeni datu glabāšanai. Koki. 1. daļaAtšķirības:

  1. Iekšējie mezgli: Globālā informācija var tikt glabāta katrā mezglā, ne tikai zaru galos.
  2. Ārējie mezgli: Globālajam ir jābūt noteiktām vērtībām zaru galos, savukārt FS un dārza kokiem nav.



Runājot par iekšējiem mezgliem, mēs varam teikt, ka globālā struktūra ir failu sistēmu un dārza koku nosaukumu koku struktūras superkopa. Tie. elastīgāks.

Vispār globālais ir sakārtots koks ar iespēju uzglabāt datus katrā mezglā.

Lai labāk izprastu globālo darbu, iedomājieties, kas notiktu, ja failu sistēmu veidotāji informācijas glabāšanai izmantotu pieeju, kas ir līdzīga globālajiem?

  1. Dzēšot vienu failu direktorijā, tiek automātiski izdzēsts direktorijs, kā arī visi pārklājošie direktoriji, kuros ir tikai viens tikko izdzēstais direktorijs.
  2. Katalogi nebūtu vajadzīgi. Vienkārši būtu faili ar apakšfailiem un faili bez apakšfailiem. Ja salīdzinātu ar parastu koku, tad katrs zars kļūtu par augli.

    Globālie ir dārgumu zobeni datu glabāšanai. Koki. 1. daļa

  3. Tādas lietas kā README.txt faili var nebūt vajadzīgas. Visu, kas bija jāsaka par direktorijas saturu, varēja ierakstīt pašā direktoriju failā. Ceļa telpā faila nosaukums nav atšķirams no direktorija nosaukuma, tāpēc bija iespējams iztikt tikai ar failiem.
  4. Katalogu ar ligzdotiem apakšdirektorijiem un failiem dzēšanas ātrums ievērojami palielināsies. Daudzas reizes vietnē Habré ir bijuši raksti par to, cik ilgi un grūti ir izdzēst miljoniem mazu failu (1, 2). Tomēr, ja izveidojat pseido failu sistēmu globālā līmenī, tas prasīs sekundes vai to daļas. Kad es pārbaudīju apakškoku dzēšanu mājas datorā, tas 1 sekundē noņēma 96–341 miljonus mezglu no HDD (nevis SSD) divu līmeņu koka. Turklāt mēs runājam par koka daļas, nevis tikai visa faila ar globālajiem failiem dzēšanu.

Globālie ir dārgumu zobeni datu glabāšanai. Koki. 1. daļa
Apakškoku noņemšana ir vēl viena globālā stiprā puse. Šim nolūkam jums nav nepieciešama rekursija. Tas notiek neticami ātri.

Mūsu kokā to var izdarīt ar komandu nogalināt.

Kill ^a("+7926X")

Globālie ir dārgumu zobeni datu glabāšanai. Koki. 1. daļa

Lai labāk izprastu, kādas darbības mums ir pieejamas globālā līmenī, es sniegšu īsu tabulu.

Pamatkomandas un funkcijas darbam ar globālajām sistēmām COS

Noteikt
Nozaru iestatīšana mezglam (ja vēl nav definēta) un mezgla vērtības

Apvienot
Apakškoka kopēšana

nogalināt
Apakškoka noņemšana

ZKill
Konkrēta mezgla vērtības dzēšana. Apakškoks, kas parādās no mezgla, netiek aizskarts

$Query
Pilnīga koka šķērsošana, iedziļinoties kokā

$Pasūtījums
Konkrēta mezgla zaru šķērsošana

$Dati
Pārbauda, ​​vai mezgls ir definēts

$Pieaugums
Mezgla vērtības atomu palielināšana. Lai izvairītos no lasīšanas un rakstīšanas, ACID. Nesen tika ieteikts mainīt uz $Sequence

Paldies par uzmanību, mēs esam gatavi atbildēt uz jūsu jautājumiem.

Atbildības noraidīšana: Šis raksts un mani komentāri par to ir mans viedoklis, un tiem nav nekādas saistības ar InterSystems Corporation oficiālo nostāju.

Pagarināšana Globālie ir dārgumu zobeni datu glabāšanai. Koki. 2. daļa. Jūs uzzināsiet, kāda veida datus var attēlot globālajos attēlos un kādiem uzdevumiem tie sniedz maksimālu labumu.

Avots: www.habr.com

Pievieno komentāru