Globalak datuak gordetzeko altxor-ezpatak dira. Zuhaitzak. 1. zatia

Globalak datuak gordetzeko altxor-ezpatak dira. Zuhaitzak. 1. zatia Benetako datu-baseko ezpatak - globalak - aspalditik ezagutzen dira, baina oraindik gutxik dakite eraginkortasunez erabiltzen edo ez dute superarma honen jabe.

Oso onak diren arazo horiek konpontzeko globalak erabiltzen badituzu, emaitza bikainak lor ditzakezu. Edo produktibitatean edo arazoaren konponbidea erraztean (1, 2).

Globalak datuak gordetzeko eta prozesatzeko modu berezi bat dira, SQL-ko tauletatik guztiz desberdinak. 1966an agertu ziren hizkuntzan M (UMPS) (garapen ebolutiboa - Cache ObjectScript, aurrerantzean COS) datu-base medikoan eta oraindik hor dago aktiboki erabiltzen da, eta fidagarritasuna eta errendimendu handia behar diren beste zenbait arlotan ere barneratu zen: finantzak, merkataritza, etab.

DBMS modernoetako globalek transakzioak, erregistroak, erreplikazioak eta partizioak onartzen dituzte. Horiek. sistema modernoak, fidagarriak, banatuak eta azkarrak eraikitzeko erabil daitezke.

Globalek ez zaituzte eredu erlazionalera mugatzen. Askatasuna ematen dizute zeregin zehatzetarako optimizatuta dauden datu-egiturak garatzeko. Aplikazio askorentzat, globalen erabilera adimentsua benetan arma sekretua izan daiteke, erlazio-aplikazioen garatzaileek amestu dezaketen errendimendua emanez.

Globalak datuak gordetzeko modu gisa programazio-lengoaia moderno askotan erabil daitezke, maila altuko zein behe-mailatan. Hori dela eta, artikulu honetan globaletan zentratuko naiz bereziki, eta ez garai batean zetozen hizkuntzan.

2. Globalek nola funtzionatzen duten

Uler dezagun lehenik globalak nola funtzionatzen duen eta zeintzuk diren haien indarguneak. Globalak ikuspuntu ezberdinetatik ikus daitezke. Artikuluaren zati honetan zuhaitz gisa ikusiko ditugu. Edo datu-biltegi hierarkikoak bezala.

Erraz esateko, global bat array iraunkor bat da. Diskoan automatikoki gordetzen den array bat.
Zaila da datuak gordetzeko zerbait sinpleagoa imajinatzea. Kodean (COS/M lengoaietan) array asoziatibo arrunt batetik bereizten da sinboloan soilik ^ izenaren aurretik.

Datuak global batean gordetzeko, ez duzu SQL kontsulta-lengoaia ikasi behar; haiekin lan egiteko komandoak oso sinpleak dira. Ordubetean ikas daitezke.

Has gaitezen adibiderik errazena. Maila bakarreko zuhaitza 2 adarrekin. Adibideak COSn idatzita daude.

Globalak datuak gordetzeko altxor-ezpatak dira. Zuhaitzak. 1. zatia

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



Informazioa global batean sartzean (Ezarri komandoa), 3 gauza gertatzen dira automatikoki:

  1. Datuak diskoan gordetzea.
  2. Indexatzea. Parentesi artean dagoena gakoa da (ingelesezko literaturan - "azpiindize"), eta berdinen eskuinean balioa ("nodoaren balioa").
  3. Ordenatzeko. Datuak gakoen arabera ordenatzen dira. Etorkizunean, array-a zeharkatzean, lehenengo elementua "Sergey Smith" izango da eta bigarrena "John Sidorov". Globaletik erabiltzaileen zerrenda jasotzean, datu-baseak ez du denbora galtzen ordenatzen. Gainera, ordenatutako zerrenda baten irteera eska dezakezu, edozein gakotik hasita, baita existitzen ez den batetik ere (irteera lehen gako errealetik hasiko da, existitzen ez denaren ondoren datorrena).

Eragiketa hauek guztiak izugarri azkar gertatzen dira. Nire etxeko ordenagailuan 750 txertatze/seg arteko balioak lortzen ari nintzen prozesu bakarrean. Nukleo anitzeko prozesadoreetan balioak irits daitezke dozenaka milioi txertaketak/seg.

Noski, txertatzeko abiadurak berak ez du asko esaten. Adibidez, oso azkar idatz dezakezu informazioa testu-fitxategietan - honela zurrumurrua Bisa prozesatzeko funtzionatzen du. Baina globalen kasuan, biltegiratze indexatu egituratua lortzen dugu ondorioz, etorkizunean erraz eta azkar lan egin daitekeena.

Globalak datuak gordetzeko altxor-ezpatak dira. Zuhaitzak. 1. zatia

  • Globalen indarrik handiena nodo berriak txertatzeko abiadura da.
  • Globaleko datuak beti indexatzen dira. Horiek zeharkatzea, bai maila batean bai zuhaitzean sakonduz, beti da azkarra.

Gehi ditzagun bigarren eta hirugarren mailetako adar batzuk gehiago globalari.

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

Globalak datuak gordetzeko altxor-ezpatak dira. Zuhaitzak. 1. zatia

Begi bistakoa da maila anitzeko zuhaitzak eraiki daitezkeela globaletan oinarrituta. Gainera, edozein nodorako sarbidea ia berehalakoa da txertatzean indexazio automatikoa dela eta. Eta zuhaitzaren edozein mailatan, adar guztiak gakoen arabera ordenatzen dira.

Ikus dezakezunez, informazioa gako batean zein balio batean gorde daiteke. Gakoen luzera osoa (indize guztien luzeren batura) irits daiteke 511 byteak, eta balioak 3.6 MB Cacherako. Zuhaitzeko maila kopurua (dimentsio kopurua) 31 da.

Beste puntu interesgarri bat. Zuhaitz bat eraiki dezakezu goiko mailetako nodoen balioak zehaztu gabe.

Globalak datuak gordetzeko altxor-ezpatak dira. Zuhaitzak. 1. zatia

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

Zirkulu hutsak esleitutako baliorik ez duten nodoak dira.

Globalak hobeto ulertzeko, aldera ditzagun beste zuhaitz batzuekin: lorategiko zuhaitzekin eta fitxategi-sistemaren izenen zuhaitzekin.

Konpara ditzagun egitura hierarkiko ezagunenak dituzten globalen zuhaitzak: lorategietan eta soroetan hazten diren zuhaitz arruntekin, baita fitxategi-sistemekin ere.

Globalak datuak gordetzeko altxor-ezpatak dira. Zuhaitzak. 1. zatia

Lorategiko zuhaitzetan ikusten dugunez, hostoak eta fruituak adarren muturretan bakarrik aurkitzen dira.
Fitxategi-sistemak - informazioa adarren muturretan soilik gordetzen da, fitxategi-izen guztiz kualifikatuak direnak.

Eta hona hemen datuen egitura globala.

Globalak datuak gordetzeko altxor-ezpatak dira. Zuhaitzak. 1. zatiaAldeak:

  1. Barne nodoak: global batean informazioa nodo guztietan gorde daiteke, ez bakarrik adarren muturretan.
  2. Kanpoko nodoak: Globalak definitutako balioak izan behar ditu adarren muturretan, FS eta lorategiko zuhaitzek ez.



Barne-nodoei dagokienez, globalaren egitura fitxategi-sistemetako eta lorategietako zuhaitzen izenen egituraren gain-multzo bat dela esan dezakegu. Horiek. malguagoa.

Oro har, globala da nodo bakoitzean datuak gordetzeko gaitasuna duen zuhaitz ordenatua.

Globalen lana hobeto ulertzeko, imajinatu zer gertatuko litzateke fitxategi-sistemen sortzaileek globalaren antzeko ikuspegia erabiliko balute informazioa gordetzeko?

  1. Direktorio bateko fitxategi bakarra ezabatzeak automatikoki ezabatuko luke direktorioa, baita ezabatu berri den direktorio bakarra duten gaineko direktorio guztiak ere.
  2. Ez litzateke direktorioen beharrik izango. Besterik gabe, azpifitxategiak dituzten fitxategiak eta azpifitxategirik gabeko fitxategiak egongo lirateke. Zuhaitz arrunt batekin alderatuz gero, adar bakoitza fruitu bihurtuko litzateke.

    Globalak datuak gordetzeko altxor-ezpatak dira. Zuhaitzak. 1. zatia

  3. Baliteke README.txt fitxategiak bezalako gauzak behar ez izatea. Direktorioaren edukiei buruz esan behar dena direktorio fitxategian bertan idatz zitekeen. Bide-espazioan, fitxategi-izena ez da direktorio-izenatik bereizten, beraz, fitxategiekin bakarrik atera daiteke.
  4. Azpidirektorio eta fitxategi habiaratuekin direktorioak ezabatzeko abiadura izugarri handituko litzateke. Askotan Habré-n milioika fitxategi txiki ezabatzea zenbat denbora eta zaila den artikuluak agertu dira (1, 2). Hala ere, sasi-fitxategi sistema global batean egiten baduzu, segundoak edo zatikiak hartuko ditu. Etxeko ordenagailu batean azpizuhaitzak ezabatzen probatu nuenean, 1-96 milioi nodo kendu zituen HDD bateko (ez SSD) bi mailatako zuhaitz batetik segundo batean. Gainera, zuhaitzaren zati bat ezabatzeaz ari gara, eta ez fitxategi osoa globalekin soilik.

Globalak datuak gordetzeko altxor-ezpatak dira. Zuhaitzak. 1. zatia
Azpizuhaitzak kentzea globalen beste puntu indartsu bat da. Ez duzu errekurtsiorik behar horretarako. Hau izugarri azkar gertatzen da.

Gure zuhaitzean hau komandoarekin egin liteke Kill.

Kill ^a("+7926X")

Globalak datuak gordetzeko altxor-ezpatak dira. Zuhaitzak. 1. zatia

Globaletan zein ekintza ditugun eskuragarri hobeto ulertzeko, taula labur bat emango dut.

COS-en globalekin lan egiteko oinarrizko komandoak eta funtzioak

Ezarri
Adarrak nodo bati (oraindik definituta ez badago) eta nodoen balioak ezartzea

Batu
Azpizuhaitz bat kopiatzea

Kill
Azpizuhaitz bat kentzea

ZKill
Nodo zehatz baten balioa ezabatzea. Nodotik ateratzen den azpizuhaitza ez da ukitzen

$Query
Zuhaitzaren zeharkaldi osoa, zuhaitzean sakonduz

$Order
Nodo zehatz baten adarrak zeharkatzea

$Data
Nodo bat definitu den egiaztatzea

$ gehikuntza
Nodoaren balio bat atomikoki gehitzea. Irakurketa eta idazketa ez egiteko, ACID-erako. Berriki hona aldatzea gomendatu da $Sekuentzia

Eskerrik asko zure arretagatik, zure galderei erantzuteko prest gaude.

Lege-oharra: Artikulu hau eta nire iruzkinak nire iritzia dira eta ez dute zerikusirik InterSystems Corporation-en posizio ofizialarekin.

Extension Globalak datuak gordetzeko altxor-ezpatak dira. Zuhaitzak. 2. zatia. Globaletan zein datu-mota bistaratu daitezkeen eta zein zereginen onurarik handiena ematen duten ikasiko duzu.

Iturria: www.habr.com

Gehitu iruzkin berria