Globals huma teżor-xwabel għall-ħażna tad-data. Siġar. Parti 1

Globals huma teżor-xwabel għall-ħażna tad-data. Siġar. Parti 1 Ix-xwabel tad-database reali - globali - ilhom magħrufa, iżda għadhom ftit jafu kif jużawhom b'mod effettiv jew ma għandhom din is-superweapon xejn.

Jekk tuża globali biex issolvi dawk il-problemi li huma verament tajba fihom, tista 'tikseb riżultati eċċellenti. Jew fil-produttività jew fis-simplifikazzjoni tas-soluzzjoni tal-problema (1, 2).

Globals huma mod speċjali ta 'ħażna u proċessar ta' data, kompletament differenti mit-tabelli fl-SQL. Dehru fl-1966 fil-lingwa M(UMPS) (żvilupp evoluzzjonarju - Cache ObjectScript, minn hawn 'il quddiem COS) fid-database medika u għadu hemm użati b'mod attiv, u ppenetrat ukoll f'xi oqsma oħra fejn huma meħtieġa affidabbiltà u prestazzjoni għolja: finanzi, kummerċ, eċċ.

Globals fid-DBMSs moderni jappoġġjaw it-tranżazzjonijiet, il-qtugħ, ir-replikazzjoni u l-qsim. Dawk. jistgħu jintużaw biex jinbnew sistemi moderni, affidabbli, distribwiti u veloċi.

Globals ma jillimitawx inti għall-mudell relazzjonali. Huma jagħtuk il-libertà li tiżviluppa strutturi tad-dejta li huma ottimizzati għal kompiti speċifiċi. Għal ħafna applikazzjonijiet, l-użu intelliġenti ta 'globals jista' jkun verament arma sigrieta, li tagħti prestazzjoni li l-iżviluppaturi ta 'applikazzjonijiet relazzjonali jistgħu biss joħolmu biha.

Globals bħala mod biex tinħażen id-dejta jistgħu jintużaw f'ħafna lingwi moderni ta 'programmazzjoni, kemm ta' livell għoli kif ukoll ta 'livell baxx. Għalhekk, f'dan l-artiklu se niffoka speċifikament fuq globali, u mhux fuq il-lingwa li minnha ġew.

2. Kif jaħdmu l-globals

Ejja l-ewwel nifhmu kif jaħdmu l-globals u x'inhuma s-saħħiet tagħhom. Il-globali jistgħu jitqiesu minn perspettiva differenti. F'din il-parti tal-artiklu se nħarsu lejhom bħala siġar. Jew bħall-imħażen tad-dejta ġerarkiċi.

Fi kliem sempliċi, globali hija firxa persistenti. Array li jiġi ffrankat awtomatikament fuq disk.
Huwa diffiċli li wieħed jimmaġina xi ħaġa aktar sempliċi għall-ħażna tad-data. Fil-kodiċi (fil-lingwi COS/M) hija differenti minn firxa assoċjattiva regolari biss fis-simbolu ^ qabel l-isem.

Biex tiffranka d-dejta f'globali, m'għandekx bżonn titgħallem il-lingwa tal-mistoqsija SQL, il-kmandi biex taħdem magħhom huma sempliċi ħafna. Jistgħu jitgħallmu f'siegħa.

Nibdew bl-aktar eżempju sempliċi. Siġra b'livell wieħed b'2 fergħat. L-eżempji huma miktuba f'COS.

Globals huma teżor-xwabel għall-ħażna tad-data. Siġar. Parti 1

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



Meta ddaħħal l-informazzjoni f'globali (kmand Issettja), awtomatikament jiġru 3 affarijiet:

  1. Iffrankar tad-data fuq disk.
  2. Indiċjar. Dak li jinsab fil-parentesi huwa ċ-ċavetta (fil-letteratura Ingliża - "subscript"), u fuq il-lemin ta 'ugwali hemm il-valur ("valur node").
  3. Issortja. Id-data hija magħżula skond iċ-ċavetta. Fil-futur, meta jaqsmu l-firxa, l-ewwel element se jkun "Sergey Smith", u t-tieni "John Sidorov". Meta tirċievi lista ta 'utenti mill-globali, id-database ma jaħlix ħin issortjar. Barra minn hekk, tista 'titlob l-output ta' lista magħżula, li tibda minn kwalunkwe ċavetta, anke waħda ineżistenti (l-output se jibda mill-ewwel ċavetta reali, li tiġi wara dik ineżistenti).

Dawn l-operazzjonijiet kollha jseħħu oerhört malajr. Fuq il-kompjuter tad-dar tiegħi kont qed nikseb valuri sa 750 inserzjoni/sek fi proċess wieħed. Fuq proċessuri multi-core il-valuri jistgħu jilħqu għexieren ta’ miljuni inserzjonijiet/sek.

Naturalment, il-veloċità tal-inserzjoni nnifisha ma tgħidx ħafna. Tista', pereżempju, tikteb informazzjoni malajr ħafna f'fajls ta' test - bħal dan skond xnigħat Xogħlijiet ta' pproċessar ta' viża. Iżda fil-każ ta 'globals, niksbu ħażna indiċjata strutturata bħala riżultat, li tista' tinħadem faċilment u malajr fil-futur.

Globals huma teżor-xwabel għall-ħażna tad-data. Siġar. Parti 1

  • L-akbar saħħa tal-globals hija l-veloċità li biha jistgħu jiddaħħlu nodi ġodda.
  • Id-dejta fid-dinja hija dejjem indiċjata. It-traversing tagħhom, kemm f'livell wieħed kif ukoll fil-fond fis-siġra, huwa dejjem mgħaġġel.

Ejja nżidu ftit fergħat oħra tat-tieni u t-tielet livelli mad-dinja.

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 huma teżor-xwabel għall-ħażna tad-data. Siġar. Parti 1

Huwa ovvju li siġar f'diversi livelli jistgħu jinbnew ibbażati fuq globali. Barra minn hekk, l-aċċess għal kwalunkwe nodu huwa kważi istantanju minħabba l-indiċjar awtomatiku waqt l-inserzjoni. U fi kwalunkwe livell tas-siġra, il-fergħat kollha huma magħżula skond iċ-ċavetta.

Kif tistgħu taraw, l-informazzjoni tista 'tinħażen kemm f'ċavetta kif ukoll f'valur. It-tul totali taċ-ċavetta (is-somma tat-tulijiet ta 'l-indiċi kollha) jista' jilħaq 511 bytes, u l-valuri 3.6 MB għal Cache. In-numru ta 'livelli fis-siġra (numru ta' dimensjonijiet) huwa 31.

Punt ieħor interessanti. Tista 'tibni siġra mingħajr ma tispeċifika l-valuri tan-nodi tal-livelli ta' fuq.

Globals huma teżor-xwabel għall-ħażna tad-data. Siġar. Parti 1

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

Ċrieki vojta huma nodi li m'għandhom l-ebda valur assenjat.

Sabiex nifhmu aħjar il-globals, ejja nqabbluhom ma 'siġar oħra: siġar tal-ġnien u siġar tal-ismijiet tas-sistema tal-fajls.

Ejja nqabblu siġar fuq globali bl-istrutturi ġerarkiċi l-aktar familjari lilna: ma 'siġar ordinarji li jikbru fil-ġonna u għelieqi, kif ukoll ma' sistemi ta 'fajls.

Globals huma teżor-xwabel għall-ħażna tad-data. Siġar. Parti 1

Kif naraw fis-siġar tal-ġnien, il-weraq u l-frott jinstabu biss fit-truf tal-fergħat.
Sistemi ta 'fajls - l-informazzjoni tinħażen biss fit-truf tal-fergħat, li huma ismijiet ta' fajls kwalifikati bis-sħiħ.

U hawn hija l-istruttura tad-dejta globali.

Globals huma teżor-xwabel għall-ħażna tad-data. Siġar. Parti 1Differenzi:

  1. Nodi interni: informazzjoni f'globali tista 'tinħażen f'kull node, mhux biss fit-truf tal-fergħat.
  2. Nodi esterni: Il-globali għandu jkollu valuri definiti fit-truf tal-fergħat, filwaqt li FS u siġar tal-ġnien m'għandhomx.



F'termini ta 'nodi interni, nistgħu ngħidu li l-istruttura tal-globali hija superset tal-istruttura tas-siġar tal-ismijiet f'sistemi ta' fajls u siġar tal-ġnien. Dawk. aktar flessibbli.

B'mod ġenerali, il-globali huwa siġra ordnata bil-kapaċità li taħżen data f'kull node.

Biex tifhem aħjar ix-xogħol tal-globals, immaġina x'jiġri kieku l-ħallieqa tas-sistemi tal-fajls użaw approċċ simili għal globals biex jaħżnu l-informazzjoni?

  1. It-tħassir ta' fajl wieħed f'direttorju awtomatikament iħassar id-direttorju, kif ukoll id-direttorji kollha ta' fuq li fihom biss id-direttorju wieħed li għadu kemm tħassar.
  2. Ma jkun hemm l-ebda ħtieġa għal direttorji. Sempliċement ikun hemm fajls b'subfiles u fajls mingħajr subfiles. Jekk imqabbla ma 'siġra ordinarja, allura kull fergħa ssir frotta.

    Globals huma teżor-xwabel għall-ħażna tad-data. Siġar. Parti 1

  3. Affarijiet bħall-fajls README.txt jistgħu ma jkunux meħtieġa. Dak kollu li kien jeħtieġ li jingħad dwar il-kontenut tad-direttorju jista 'jinkiteb fil-fajl tad-direttorju innifsu. Fl-ispazju tal-mogħdija, l-isem tal-fajl huwa indistingwibbli mill-isem tad-direttorju, u għalhekk kien possibbli li tgħaddi minn fajls biss.
  4. Il-veloċità tat-tħassir tad-direttorji b'subdirectory u fajls nested tiżdied b'mod drammatiku. Ħafna drabi fuq Habré kien hemm artikli dwar kemm huwa twil u diffiċli li tħassar miljuni ta’ fajls żgħar (1, 2). Madankollu, jekk tagħmel sistema psewdo-fajl fuq globali, tieħu sekondi jew frazzjonijiet tagħha. Meta ttestjajt it-tħassir tas-subtrees fuq kompjuter tad-dar, neħħiet 1-96 miljun node minn siġra b'żewġ saffi fuq HDD (mhux SSD) f'sekonda 341. Barra minn hekk, qed nitkellmu dwar it-tħassir ta 'parti mis-siġra, u mhux biss il-fajl kollu bil-globals.

Globals huma teżor-xwabel għall-ħażna tad-data. Siġar. Parti 1
It-tneħħija tas-subtrees huwa punt qawwi ieħor tal-globals. M'għandekx bżonn rikorsi għal dan. Dan jiġri oerhört malajr.

Fis-siġra tagħna dan jista 'jsir bil-kmand Joqtlu.

Kill ^a("+7926X")

Globals huma teżor-xwabel għall-ħażna tad-data. Siġar. Parti 1

Għal fehim aħjar ta 'x'azzjonijiet huma disponibbli għalina fuq globali, ser nipprovdu tabella qasira.

Kmandi bażiċi u funzjonijiet biex taħdem ma 'globals f'COS

Irranġa
L-issettjar ta' fergħat għal nodu (jekk għadu mhux definit) u valuri ta' nodi

Jingħaqdu
L-ikkupjar ta' subtree

Joqtlu
Tneħħija ta' subtree

ZKill
Tħassir tal-valur ta 'node speċifiku. Is-subtree li toħroġ min-node ma tintmessx

$Query
Traversazzjoni kompleta tas-siġra, nidħlu fil-fond fis-siġra

$Ordni
Traversing fergħat ta 'node speċifiku

$Data
Iċċekkjar jekk node huwiex definit

$Inkrement
Inkrementazzjoni atomika ta' valur ta' nodu. Biex tevita li tagħmel jaqra u tikteb, għal ACID. Riċentement ġie rakkomandat li tinbidel għal $Sekwenza

Grazzi għall-attenzjoni tiegħek, aħna lesti li nwieġbu l-mistoqsijiet tiegħek.

Ċaħda ta 'responsabbiltà: Dan l-artikolu u l-kummenti tiegħi għalih huma l-opinjoni tiegħi u m'għandhom l-ebda relazzjoni mal-pożizzjoni uffiċjali ta' InterSystems Corporation.

Estensjoni Globals huma teżor-xwabel għall-ħażna tad-data. Siġar. Parti 2. Inti ser titgħallem liema tipi ta 'dejta tista' tintwera fuq globali u fuq liema kompiti jipprovdu l-benefiċċju massimu.

Sors: www.habr.com

Żid kumment