Global yo se trezò-nepe pou estoke done. Pye bwa. Pati 1

Global yo se trezò-nepe pou estoke done. Pye bwa. Pati 1 Epe baz done reyèl yo - globals - yo te konnen depi lontan, men yo toujou kèk konnen ki jan yo sèvi ak yo efektivman oswa yo pa posede superweapon sa a ditou.

Si ou sèvi ak global nan rezoud pwoblèm sa yo ke yo vrèman bon nan, ou ka reyalize rezilta eksepsyonèl. Swa nan pwodiktivite oswa nan senplifye solisyon an nan pwoblèm nan (1, 2).

Global yo se yon fason espesyal pou estoke ak trete done, konplètman diferan de tab nan SQL. Yo te parèt an 1966 nan lang lan M(UMPS) (devlopman evolisyonè - Cache ObjectScript, apre sa COS) nan baz done medikal la epi li toujou la aktivman itilize, epi tou li antre nan kèk lòt zòn kote yo mande fyab ak pèfòmans segondè: finans, komès, elatriye.

Globals nan DBMS modèn sipòte tranzaksyon, antre, replikasyon, ak patisyon. Moun sa yo. yo ka itilize pou konstwi sistèm modèn, serye, distribiye ak rapid.

Global yo pa limite ou nan modèl relasyon an. Yo ba ou libète pou devlope estrikti done ki optimize pou travay espesifik. Pou anpil aplikasyon, itilizasyon entelijan global yo ka vrèman yon zam sekrè, ki bay pèfòmans ke devlopè aplikasyon relasyon yo ka sèlman rèv.

Globals kòm yon fason pou estoke done yo ka itilize nan anpil lang modèn pwogramasyon, tou de wo nivo ak ba nivo. Se poutèt sa, nan atik sa a mwen pral konsantre espesyalman sou global, epi yo pa sou lang ki yon fwa yo soti.

2. Ki jan global yo travay

Ann premye konprann ki jan global yo travay ak sa ki fòs yo ye. Global yo ka gade nan diferan pwen de vi. Nan pati sa a nan atik la nou pral gade yo kòm pye bwa. Oswa tankou depo done yerarchize.

Pou mete li tou senpleman, yon global se yon etalaj ki pèsistan. Yon etalaj ki otomatikman sove sou disk.
Li difisil imajine yon bagay ki pi senp pou estoke done. Nan kòd (nan lang COS/M) li diferan de yon etalaj asosyasyon regilye sèlman nan senbòl la ^ anvan non an.

Pou sove done nan yon global, ou pa bezwen aprann lang rechèch SQL la; kòmandman yo pou travay avèk yo trè senp. Yo ka aprann nan yon èdtan.

Ann kòmanse ak egzanp ki pi senp la. Yon sèl-nivo pye bwa ak 2 branch. Egzanp yo ekri nan COS.

Global yo se trezò-nepe pou estoke done. Pye bwa. Pati 1

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



Lè w ap mete enfòmasyon nan yon global (Set lòd), 3 bagay otomatikman rive:

  1. Ekonomize done sou disk.
  2. Indexing. Ki sa ki nan parantèz se kle a (nan literati angle - "subscript"), ak adwat la nan egal se valè a ("valè ne").
  3. Klasman. Done yo klase pa kle. Nan tan kap vini an, lè travèse etalaj la, premye eleman yo pral "Sergey Smith", ak dezyèm "John Sidorov". Lè w ap resevwa yon lis itilizatè ki soti nan mondyal la, baz done a pa pèdi tan klasman. Anplis, ou ka mande pwodiksyon an nan yon lis Ranje, kòmanse nan nenpòt kle, menm yon sèl ki pa-inexistant (pwodiksyon an ap kòmanse soti nan premye kle reyèl la, ki vini apre yon sèl ki pa-inexistant).

Tout operasyon sa yo rive ekstrèmman byen vit. Sou òdinatè lakay mwen mwen te resevwa valè jiska 750 foure / sec nan yon sèl pwosesis. Sou processeur milti-nwayo valè yo ka rive jwenn dè dizèn de milyon foure/sec.

Natirèlman, vitès la ensèsyon tèt li pa di anpil. Ou ka, pou egzanp, trè byen vit ekri enfòmasyon nan dosye tèks - tankou sa a dapre rimè Pwosesis viza ap travay. Men, nan ka global, nou jwenn yon depo endis estriktire kòm yon rezilta, ki ka fasil epi byen vit travay ak nan lavni an.

Global yo se trezò-nepe pou estoke done. Pye bwa. Pati 1

  • Pi gwo fòs global yo se vitès kote nouvo nœuds yo ka mete.
  • Done nan mondyal la toujou endis. Travèse yo, tou de nan yon nivo ak byen fon nan pye bwa a, se toujou vit.

Ann ajoute kèk lòt branch nan dezyèm ak twazyèm nivo mondyal la.

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

Global yo se trezò-nepe pou estoke done. Pye bwa. Pati 1

Li evidan ke pye bwa milti-nivo ka bati ki baze sou globals. Anplis, aksè nan nenpòt ne se prèske enstantane akòz oto-indexing pandan ensèsyon. Ak nan nenpòt nivo nan pye bwa a, tout branch yo klase pa kle.

Kòm ou ka wè, enfòmasyon yo ka estoke nan tou de yon kle ak yon valè. Longè total kle a (som total longè tout endèks) ka rive 511 bytes, ak valè yo 3.6 MB pou Cache. Kantite nivo nan pye bwa a (kantite dimansyon) se 31.

Yon lòt pwen enteresan. Ou ka bati yon pye bwa san yo pa espesifye valè yo nan nœuds yo nan nivo siperyè yo.

Global yo se trezò-nepe pou estoke done. Pye bwa. Pati 1

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

Sèk vid yo se nœuds ki pa gen okenn valè asiyen.

Yo nan lòd yo pi byen konprann globals, se pou yo konpare yo ak lòt pye bwa: pye bwa jaden ak pye bwa non sistèm dosye.

Ann konpare pye bwa sou global ak estrikti yerarchize ki pi abitye pou nou: ak pye bwa òdinè ki grandi nan jaden ak jaden, osi byen ke ak sistèm dosye.

Global yo se trezò-nepe pou estoke done. Pye bwa. Pati 1

Kòm nou wè nan pye bwa jaden yo, fèy ak fwi yo jwenn sèlman nan pwent branch yo.
Sistèm fichye - enfòmasyon yo estoke sèlman nan pwent branch yo, ki se non fichye konplètman kalifye.

Ak isit la se estrikti nan done mondyal.

Global yo se trezò-nepe pou estoke done. Pye bwa. Pati 1Diferans:

  1. Nœuds entèn yo: enfòmasyon nan yon global ka estoke nan chak ne, pa sèlman nan bout branch yo.
  2. Nœuds ekstèn: Global la dwe gen valè defini nan pwent branch yo, pandan y ap FS ak pye bwa jaden pa fè sa.



An tèm de nœuds entèn yo, nou ka di ke estrikti nan global la se yon superset nan estrikti a nan pye bwa non nan sistèm dosye ak pye bwa jaden. Moun sa yo. pi fleksib.

An jeneral, mondyal la se òdone pye bwa ak kapasite nan magazen done nan chak ne.

Pou pi byen konprann travay global yo, imajine kisa ki ta rive si kreyatè sistèm fichye yo te itilize yon apwòch ki sanble ak global yo pou estoke enfòmasyon?

  1. Efase yon sèl fichye nan yon anyè ta otomatikman efase anyè a, osi byen ke tout anyè ki anlè a ki gen sèlman yon sèl anyè ki jis efase.
  2. Pa ta gen okenn nesesite pou répertoires. Ta tou senpleman gen dosye ak subfiles ak dosye san subfiles. Si yo konpare ak yon pye bwa òdinè, Lè sa a, chak branch ta vin yon fwi.

    Global yo se trezò-nepe pou estoke done. Pye bwa. Pati 1

  3. Bagay tankou dosye README.txt ta ka pa bezwen. Tout sa ki te bezwen di sou sa ki nan anyè a ta ka ekri nan dosye a anyè tèt li. Nan espas chemen, non fichye a pa distenge ak non anyè a, kidonk li te posib pou w ale avèk jis fichye yo.
  4. Vitès la nan efase repèrtwar ak subdirectory nich ak dosye ta ogmante dramatikman. Anpil fwa sou Habré te gen atik sou konbyen tan li difisil pou efase dè milyon de ti fichye (1, 2). Sepandan, si ou fè yon sistèm pseudo-fichye sou yon global, li pral pran segonn oswa fraksyon ladan l. Lè mwen teste efase subtrees sou yon òdinatè lakay ou, li retire 1-96 milyon dola nan yon pye bwa de-niveau sou yon HDD (pa SSD) nan 341 segonn. Anplis, nou ap pale sou efase yon pati nan pye bwa a, epi yo pa sèlman fichye a tout antye ak globals.

Global yo se trezò-nepe pou estoke done. Pye bwa. Pati 1
Retire subtrees se yon lòt pwen fò nan globals. Ou pa bezwen recursion pou sa. Sa rive ekstrèmman byen vit.

Nan pye bwa nou an, sa ka fèt ak kòmandman an Touye.

Kill ^a("+7926X")

Global yo se trezò-nepe pou estoke done. Pye bwa. Pati 1

Pou yon pi bon konpreyansyon sou ki aksyon ki disponib pou nou sou global, mwen pral bay yon tablo kout.

Kòmandman debaz ak fonksyon pou travay ak global nan COS

Mete
Mete branch nan yon ne (si yo poko defini) ak valè ne

Vin fè yon sèl
Kopye yon subtree

Touye
Retire yon subtree

ZKill
Efase valè yon ne espesifik. Subtree ki soti nan ne a pa manyen

$Query
Ranpli travèse nan pye bwa a, ale byen fon nan pye bwa a

$Lòd
Travèse branch nan yon ne espesifik

$Done
Tcheke si wi ou non yon ne defini

$Ogmante
Enkreman atomik yon valè ne. Pou evite fè lekti ak ekri, pou ACID. Dènyèman li te rekòmande pou chanje a $Sekans

Mèsi pou atansyon ou, nou pare pou reponn kesyon ou yo.

Avètisman: Atik sa a ak kòmantè mwen yo sou li yo se opinyon mwen epi yo pa gen okenn relasyon ak pozisyon ofisyèl la nan InterSystems Corporation.

Ekstansyon Global yo se trezò-nepe pou estoke done. Pye bwa. Pati 2. Ou pral aprann ki kalite done yo ka parèt sou global yo ak sou ki travay yo bay benefis maksimòm nan.

Sous: www.habr.com

Add nouvo kòmantè