Globals eru fjársjóðssverð til að geyma gögn. Tré. 1. hluti

Globals eru fjársjóðssverð til að geyma gögn. Tré. 1. hluti Hin raunverulegu gagnagrunnssverð - hnattræn - hafa lengi verið þekkt, en samt vita fáir hvernig á að nota þau á áhrifaríkan hátt eða eiga alls ekki þetta ofurvopn.

Ef þú notar hnattræna tækni til að leysa þau vandamál sem þau eru mjög góð í, geturðu náð framúrskarandi árangri. Annað hvort í framleiðni eða til að einfalda lausn vandans (1, 2).

Globals eru sérstök leið til að geyma og vinna úr gögnum, allt öðruvísi en töflur í SQL. Þeir birtust árið 1966 á tungumálinu M(UMPS) (þróunarþróun - Skyndiminni ObjectScript, hér eftir COS) í læknagagnagrunninum og er þar enn virkur notaður, og einnig komist inn á nokkur önnur svið þar sem krafist er áreiðanleika og mikillar frammistöðu: fjármál, viðskipti o.s.frv.

Globals í nútíma DBMS styðja viðskipti, skráningu, afritun og skiptingu. Þeir. þau geta verið notuð til að byggja upp nútímaleg, áreiðanleg, dreifð og hröð kerfi.

Alheimsmenn takmarka þig ekki við tengslamódelið. Þeir gefa þér frelsi til að þróa gagnaskipulag sem er fínstillt fyrir ákveðin verkefni. Fyrir mörg forrit getur snjöll notkun á hnattrænum tækjum sannarlega verið leyndarmál vopn, sem skilar afköstum sem forritarar fyrir samskiptaforrit geta aðeins látið sig dreyma um.

Globals sem leið til að geyma gögn er hægt að nota í mörgum nútíma forritunarmálum, bæði á háu og lágu stigi. Þess vegna mun ég í þessari grein einbeita mér sérstaklega að hnattrænum hlutum, en ekki tungumálinu sem þeir komu einu sinni frá.

2. Hvernig alþjóðlegir virka

Við skulum fyrst skilja hvernig alþjóðlegir aðilar virka og hverjir eru styrkleikar þeirra. Hægt er að líta á heimsbyggðina frá mismunandi sjónarhornum. Í þessum hluta greinarinnar munum við líta á þau sem tré. Eða eins og stigveldisgagnageymslur.

Til að setja það einfaldlega, alþjóðlegt er viðvarandi fylki. Fylki sem er sjálfkrafa vistað á disk.
Það er erfitt að ímynda sér eitthvað einfaldara til að geyma gögn. Í kóða (á COS/M tungumálum) er það aðeins frábrugðið venjulegu tengifylki í tákninu ^ á undan nafninu.

Til að vista gögn á heimsvísu þarftu ekki að læra SQL fyrirspurnarmálið; skipanirnar til að vinna með þau eru mjög einfaldar. Hægt er að læra þau á klukkutíma.

Við skulum byrja á einfaldasta dæminu. Einhæðar tré með 2 greinum. Dæmin eru skrifuð í COS.

Globals eru fjársjóðssverð til að geyma gögn. Tré. 1. hluti

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



Þegar upplýsingar eru settar inn í alþjóðlegt (Setja skipun) gerast 3 hlutir sjálfkrafa:

  1. Vistar gögn á disk.
  2. Verðtrygging. Það sem er innan sviga er lykillinn (í enskum bókmenntum - „áskrift“), ​​og hægra megin við jafningja er gildið („hnútgildi“).
  3. Flokkun. Gögnin eru flokkuð eftir lyklum. Í framtíðinni, þegar farið er yfir fylkið, verður fyrsti þátturinn „Sergey Smith“ og sá seinni „John Sidorov“. Þegar þú færð notendalista frá hnattrænu, eyðir gagnagrunnurinn ekki tíma í flokkun. Þar að auki geturðu beðið um úttak á flokkuðum lista, byrjað á hvaða lykli sem er, jafnvel þeim sem ekki er til (úttakið byrjar frá fyrsta raunverulega lyklinum, sem kemur á eftir þeim sem ekki er til).

Allar þessar aðgerðir gerast ótrúlega hratt. Í heimatölvunni minni var ég að fá gildi allt að 750 innlegg/sek í einu ferli. Á fjölkjarna örgjörvum geta gildin náð tugum milljóna innskot/sek.

Auðvitað segir innsetningarhraðinn sjálfur ekki mikið. Þú getur til dæmis skrifað upplýsingar mjög fljótt í textaskrár - svona samkvæmt sögusögnum Afgreiðsla vegabréfsáritunar virkar. En í tilviki hnattrænna fáum við skipulagða verðtryggða geymslu fyrir vikið, sem hægt er að vinna með auðveldlega og fljótt í framtíðinni.

Globals eru fjársjóðssverð til að geyma gögn. Tré. 1. hluti

  • Stærsti styrkur hnattrænna er hraðinn sem hægt er að setja nýja hnúta inn á.
  • Gögn á heimsvísu eru alltaf verðtryggð. Það er alltaf hratt að fara yfir þá, bæði á einu stigi og djúpt inn í tréð.

Við skulum bæta nokkrum greinum í viðbót af öðru og þriðja þrepi við hnattrænt.

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

Globals eru fjársjóðssverð til að geyma gögn. Tré. 1. hluti

Það er augljóst að hægt er að byggja fjölþrepa tré sem byggjast á hnattrænum. Þar að auki er aðgangur að hvaða hnút sem er næstum samstundis vegna sjálfvirkrar flokkunar við innsetningu. Og á hvaða stigi trésins sem er, eru allar greinar flokkaðar eftir lyklum.

Eins og þú sérð er hægt að geyma upplýsingar bæði í lykli og gildi. Heildarlykillengd (summan af lengdum allra vísitalna) getur náð 511 bæti, og gildin 3.6 MB fyrir skyndiminni. Fjöldi stiga í trénu (fjöldi stærða) er 31.

Annar áhugaverður punktur. Þú getur byggt tré án þess að tilgreina gildi hnúta á efri stigum.

Globals eru fjársjóðssverð til að geyma gögn. Tré. 1. hluti

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

Tómir hringir eru hnútar sem hafa ekkert gildi úthlutað.

Til þess að skilja hnattrænt betur, skulum við bera þau saman við önnur tré: garðtré og nafnatré skráarkerfis.

Við skulum bera saman tré á hnattrænum svæðum með kunnuglegustu stigveldisskipulagi fyrir okkur: við venjuleg tré sem vaxa í görðum og ökrum, sem og við skráarkerfi.

Globals eru fjársjóðssverð til að geyma gögn. Tré. 1. hluti

Eins og við sjáum í garðatrjám finnast lauf og ávextir aðeins á endum greinanna.
Skráarkerfi - upplýsingar eru aðeins geymdar í endum útibúa, sem eru fullgild skráarnöfn.

Og hér er alþjóðleg gagnauppbygging.

Globals eru fjársjóðssverð til að geyma gögn. Tré. 1. hlutiMismunur:

  1. Innri hnútar: upplýsingar á heimsvísu er hægt að geyma í hverjum hnút, ekki bara í endum útibúa.
  2. Ytri hnútar: Alheimurinn verður að hafa skilgreind gildi á endum greinanna, en FS og garðtré gera það ekki.



Hvað varðar innri hnúta, getum við sagt að uppbygging hnattræns sé ofurmengi af uppbyggingu nafnatrjáa í skráakerfum og garðatrjám. Þeir. sveigjanlegri.

Almennt séð er hið alþjóðlega pantað tré með getu til að geyma gögn í hverjum hnút.

Til að skilja betur verk hnattrænna aðila, ímyndaðu þér hvað myndi gerast ef höfundar skráakerfa notuðu svipaða nálgun og hnattrænir til að geyma upplýsingar?

  1. Að eyða einni skrá í möppu myndi sjálfkrafa eyða möppunni, sem og öllum yfirliggjandi möppum sem innihalda aðeins eina möppu sem nýlega var eytt.
  2. Það væri engin þörf fyrir möppur. Það væru einfaldlega skrár með undirskrám og skrár án undirskráa. Ef borið er saman við venjulegt tré, þá myndi hver grein verða að ávexti.

    Globals eru fjársjóðssverð til að geyma gögn. Tré. 1. hluti

  3. Hlutir eins og README.txt skrár gætu ekki verið nauðsynlegar. Allt sem segja þurfti um innihald möppunnar var hægt að skrifa inn í möppuskrána sjálfa. Í slóðarými er skráarnafnið óaðgreinanlegt frá möppuheitinu, svo það var hægt að komast af með bara skrár.
  4. Hraðinn við að eyða möppum með hreiðri undirmöppum og skrám myndi aukast verulega. Margoft á Habré hafa verið greinar um hversu lengi og erfitt það er að eyða milljónum lítilla skráa (1, 2). Hins vegar, ef þú býrð til gerviskráakerfi á heimsvísu, mun það taka sekúndur eða brot af því. Þegar ég prófaði að eyða undirtré á heimilistölvu, fjarlægði hún 1-96 milljón hnúta úr tveggja hæða tré á HDD (ekki SSD) á 341 sekúndu. Þar að auki erum við að tala um að eyða hluta af trénu, en ekki bara allri skránni með globals.

Globals eru fjársjóðssverð til að geyma gögn. Tré. 1. hluti
Að fjarlægja undirtré er annar sterkur punktur hnattrænna. Þú þarft ekki endurtekningu fyrir þetta. Þetta gerist ótrúlega fljótt.

Í trénu okkar gæti þetta verið gert með skipuninni Kill.

Kill ^a("+7926X")

Globals eru fjársjóðssverð til að geyma gögn. Tré. 1. hluti

Til að fá betri skilning á því hvaða aðgerðir eru í boði fyrir okkur á heimsvísu mun ég gefa stutta töflu.

Grunnskipanir og aðgerðir til að vinna með hnattrænar einingar í COS

Setja
Stilla greinar á hnút (ef ekki enn skilgreint) og hnútgildi

Sameina
Að afrita undirtré

Kill
Fjarlægir undirtré

ZKill
Eyðir gildi tiltekins hnúts. Undirtréð sem kemur út úr hnútnum er ekki snert

$Query
Fullkomið yfir tréð, farið djúpt inn í tréð

$ Order
Farið yfir greinar tiltekins hnúts

$ Gögn
Athugar hvort hnútur sé skilgreindur

$ Aukning
Atómahækkandi hnútgildi. Til að forðast að lesa og skrifa, fyrir ACID. Nýlega hefur verið mælt með því að breyta til $ Röð

Þakka þér fyrir athygli þína, við erum tilbúin til að svara spurningum þínum.

Afneitun ábyrgðar: Þessi grein og athugasemdir mínar við hana eru mín skoðun og hafa engin tengsl við opinbera stöðu InterSystems Corporation.

Framlenging Globals eru fjársjóðssverð til að geyma gögn. Tré. 2. hluti. Þú munt læra hvaða tegundir af gögnum er hægt að birta á alþjóðlegum gögnum og hvaða verkefni þau veita hámarks ávinning.

Heimild: www.habr.com

Bæta við athugasemd