Globaalit ovat aarremiekkoja tietojen tallentamiseen. puut. Osa 1

Globaalit ovat aarremiekkoja tietojen tallentamiseen. puut. Osa 1 Todelliset tietokantamiekat - globaalit - ovat olleet tiedossa jo kauan, mutta harva osaa käyttää niitä tehokkaasti tai ei omista tätä superasetta ollenkaan.

Jos käytät globaaleja ratkaisuja niiden ongelmien ratkaisemiseen, joissa he ovat todella hyviä, voit saavuttaa erinomaisia ​​tuloksia. Joko tuottavuudessa tai ongelman ratkaisun yksinkertaistamisessa (1, 2).

Globaalit ovat erityinen tapa tallentaa ja käsitellä tietoja, täysin erilainen kuin SQL:n taulukot. Ne ilmestyivät vuonna 1966 kielellä SIKOTAUTI) (evoluution kehitys - Välimuisti ObjectScript, jäljempänä COS) lääketieteellisessä tietokannassa ja on edelleen siellä aktiivisesti käytössä, ja tunkeutui myös joillekin muille alueille, joilla vaaditaan luotettavuutta ja korkeaa suorituskykyä: rahoitus, kauppa jne.

Nykyaikaisten DBMS-järjestelmien globaalit tukevat tapahtumia, kirjaamista, replikointia ja osiointia. Nuo. Niitä voidaan käyttää nykyaikaisten, luotettavien, hajautettujen ja nopeiden järjestelmien rakentamiseen.

Globaalit eivät rajoita sinua relaatiomalliin. Ne antavat sinulle vapauden kehittää tietorakenteita, jotka on optimoitu tiettyihin tehtäviin. Monissa sovelluksissa globaalien älykäs käyttö voi todella olla salainen ase, joka tuottaa suorituskykyä, josta relaatiosovellusten kehittäjät voivat vain haaveilla.

Globaleja tiedon tallentamiseen voidaan käyttää monissa nykyaikaisissa ohjelmointikielissä, sekä korkealla että matalalla tasolla. Siksi tässä artikkelissa keskityn erityisesti globaaleihin, enkä kieleen, josta ne kerran tulivat.

2. Kuinka globaalit toimivat

Ymmärrämme ensin kuinka globaalit toimivat ja mitkä ovat niiden vahvuudet. Globaaleja voidaan tarkastella eri näkökulmista. Tässä artikkelin osassa tarkastelemme niitä puita. Tai kuten hierarkkiset tietovarastot.

Yksinkertaisesti sanottuna globaali on pysyvä taulukko. Taulukko, joka tallennetaan automaattisesti levylle.
On vaikea kuvitella jotain yksinkertaisempaa tietojen tallentamiseen. Koodissa (COS/M-kielillä) se eroaa tavallisesta assosiatiivisesta taulukosta vain symbolin suhteen ^ ennen nimeä.

Tietojen tallentamiseen globaalisti sinun ei tarvitse opetella SQL-kyselykieltä, vaan komennot niiden kanssa työskentelemiseen ovat hyvin yksinkertaisia. Ne voidaan oppia tunnissa.

Aloitetaan yksinkertaisimmalla esimerkillä. Yksitasoinen puu, jossa 2 oksaa. Esimerkit on kirjoitettu COS-kielellä.

Globaalit ovat aarremiekkoja tietojen tallentamiseen. puut. Osa 1

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



Kun lisäät tietoja globaaliin (Set-komento), tapahtuu automaattisesti kolme asiaa:

  1. Tietojen tallennus levylle.
  2. Indeksointi. Suluissa on avain (englanninkielisessä kirjallisuudessa - "alaindeksi"), ja yhtäläisten oikealla puolella on arvo ("solmun arvo").
  3. Lajittelu. Tiedot lajitellaan avaimen mukaan. Jatkossa taulukon läpi kulkiessa ensimmäinen elementti on "Sergey Smith" ja toinen "John Sidorov". Kun tietokanta vastaanottaa käyttäjäluettelon globaalista, se ei tuhlaa aikaa lajitteluun. Lisäksi voit pyytää lajitellun listan tulostamista mistä tahansa avaimesta, myös olemattomasta (tulostus alkaa ensimmäisestä oikeasta avaimesta, joka tulee olemattoman avaimen jälkeen).

Kaikki nämä toiminnot tapahtuvat uskomattoman nopeasti. Kotitietokoneellani sain arvoja jopa 750 000 lisäystä sekunnissa yhdellä prosessilla. Moniytimisissä prosessoreissa arvot voivat saavuttaa kymmeniä miljoonia insertit/sek.

Itse lisäysnopeus ei tietenkään kerro paljon. Voit esimerkiksi kirjoittaa tietoja erittäin nopeasti tekstitiedostoihin - näin huhuttiin Viisumin käsittely toimii. Mutta globaalien tapauksessa saamme tuloksena strukturoidun indeksoidun tallennustilan, jota voidaan helposti ja nopeasti työstää tulevaisuudessa.

Globaalit ovat aarremiekkoja tietojen tallentamiseen. puut. Osa 1

  • Globaalien suurin vahvuus on nopeus, jolla uusia solmuja voidaan lisätä.
  • Globaalin tiedot indeksoidaan aina. Niiden läpikulku sekä yhdellä tasolla että syvälle puuhun on aina nopeaa.

Lisätään vielä muutama toisen ja kolmannen tason haara globaaliin.

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

Globaalit ovat aarremiekkoja tietojen tallentamiseen. puut. Osa 1

On selvää, että monitasoisia puita voidaan rakentaa globaalien pohjalta. Lisäksi pääsy mihin tahansa solmuun on lähes välitön lisäyksen aikana tapahtuvan automaattisen indeksoinnin ansiosta. Ja millä tahansa puun tasolla kaikki oksat lajitellaan avaimen mukaan.

Kuten näet, tietoa voidaan tallentaa sekä avaimeen että arvoon. Avaimen kokonaispituus (kaikkien indeksien pituuksien summa) voi saavuttaa 511 tavuaja arvot 3.6 MB välimuistille. Puun tasojen lukumäärä (ulottuvuuksien lukumäärä) on 31.

Toinen mielenkiintoinen kohta. Voit rakentaa puun määrittelemättä ylempien tasojen solmujen arvoja.

Globaalit ovat aarremiekkoja tietojen tallentamiseen. puut. Osa 1

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

Tyhjät ympyrät ovat solmuja, joille ei ole määritetty arvoa.

Ymmärtääksemme paremmin globaaleja, verrataan niitä muihin puihin: puutarhapuihin ja tiedostojärjestelmän nimipuihin.

Verrataan globaalien puita meille tutuimpiin hierarkkisiin rakenteisiin: tavallisiin puutarhoissa ja pelloilla kasvaviin puihin sekä tiedostojärjestelmiin.

Globaalit ovat aarremiekkoja tietojen tallentamiseen. puut. Osa 1

Kuten näemme puutarhapuissa, lehtiä ja hedelmiä löytyy vain oksien päistä.
Tiedostojärjestelmät - tiedot tallennetaan vain haarojen päihin, jotka ovat täydellisiä tiedostonimiä.

Ja tässä on globaali tietorakenne.

Globaalit ovat aarremiekkoja tietojen tallentamiseen. puut. Osa 1eroja:

  1. Sisäiset solmut: Globaalin tiedot voidaan tallentaa jokaiseen solmuun, ei vain haarojen päihin.
  2. Ulkoiset solmut: Globaalilla on oltava määritellyt arvot oksien päissä, kun taas FS:llä ja puutarhapuilla ei ole.



Sisäisten solmujen osalta voidaan sanoa, että globaalin rakenne on tiedostojärjestelmien ja puutarhapuiden nimipuiden rakenteen superjoukko. Nuo. joustavampi.

Yleisesti ottaen globaali on järjestetty puu, jossa on mahdollisuus tallentaa tietoja jokaiseen solmuun.

Ymmärtääksesi paremmin globaalien työtä, kuvittele, mitä tapahtuisi, jos tiedostojärjestelmien luojat käyttäisivät globaalien kaltaista lähestymistapaa tietojen tallentamiseen?

  1. Yhden tiedoston poistaminen hakemistosta poistaisi automaattisesti hakemiston, samoin kuin kaikki päällä olevat hakemistot, jotka sisältävät vain yhden juuri poistetun hakemiston.
  2. Hakemistoja ei tarvittaisi. Siellä olisi yksinkertaisesti tiedostoja alitiedostoja ja tiedostoja ilman alatiedostoja. Jos verrataan tavalliseen puuhun, jokaisesta oksasta tulisi hedelmä.

    Globaalit ovat aarremiekkoja tietojen tallentamiseen. puut. Osa 1

  3. README.txt-tiedostoja ei ehkä tarvita. Kaikki mitä hakemiston sisällöstä piti sanoa, voitiin kirjoittaa itse hakemistotiedostoon. Polkutilassa tiedoston nimeä ei voi erottaa hakemiston nimestä, joten pelkillä tiedostoilla oli mahdollista tulla toimeen.
  4. Sisäkkäisiä alihakemistoja ja tiedostoja sisältävien hakemistojen poistamisnopeus kasvaisi dramaattisesti. Habressa on monta kertaa ollut artikkeleita siitä, kuinka kauan ja vaikeaa on poistaa miljoonia pieniä tiedostoja (1, 2). Kuitenkin, jos teet pseudotiedostojärjestelmän globaalille, se kestää sekunteja tai murto-osia siitä. Kun testasin alipuiden poistamista kotitietokoneella, se poisti 1-96 miljoonaa solmua kiintolevyn (ei SSD:n) kaksitasoisesta puusta yhdessä sekunnissa. Lisäksi puhumme osan puusta poistamisesta, ei vain koko tiedoston poistamisesta globaaleilla.

Globaalit ovat aarremiekkoja tietojen tallentamiseen. puut. Osa 1
Alipuiden poistaminen on toinen globaalien vahvuus. Et tarvitse rekursiota tähän. Tämä tapahtuu uskomattoman nopeasti.

Puussamme tämä voidaan tehdä komennolla Tappaa.

Kill ^a("+7926X")

Globaalit ovat aarremiekkoja tietojen tallentamiseen. puut. Osa 1

Annan lyhyen taulukon saadakseni paremman käsityksen siitä, mitä toimia meillä on saatavilla maailmanlaajuisesti.

Peruskomennot ja -toiminnot globaalien kanssa työskentelyyn COS:ssä

Asettaa
Haarojen asettaminen solmulle (jos ei vielä määritetty) ja solmuarvot

mennä
Alipuun kopioiminen

Tappaa
Alipuun poistaminen

ZKill
Tietyn solmun arvon poistaminen. Solmusta tulevaan alipuuhun ei kosketa

$Query
Täydellinen puun läpikulku, meneminen syvälle puuhun

$Tilaa
Tietyn solmun haarojen läpikulku

$Data
Tarkistetaan, onko solmu määritetty

$lisäys
Solmun arvon atomin lisääminen. Lukemisen ja kirjoittamisen välttämiseksi ACIDille. Viime aikoina on suositeltu vaihtamista $Sequence

Kiitos huomiosta, olemme valmiita vastaamaan kysymyksiisi.

Vastuun kieltäminen: Tämä artikkeli ja siihen liittyvät kommentit ovat minun mielipiteitäni, eivätkä ne liity InterSystems Corporationin viralliseen kantaan.

Laajentaminen Globaalit ovat aarremiekkoja tietojen tallentamiseen. puut. Osa 2. Opit millaisia ​​tietoja globaaleilla voidaan näyttää ja missä tehtävissä niistä on eniten hyötyä.

Lähde: will.com

Lisää kommentti