Cleddyfau trysor ar gyfer storio data yw byd-eang. Coed. Rhan 1

Cleddyfau trysor ar gyfer storio data yw byd-eang. Coed. Rhan 1 Mae cleddyfau cronfa ddata go iawn - byd-eang - wedi bod yn hysbys ers tro, ond ychydig iawn sy'n gwybod sut i'w defnyddio'n effeithiol neu nad ydyn nhw'n berchen ar yr arf super hwn o gwbl.

Os ydych chi'n defnyddio byd-eang i ddatrys y problemau hynny y maen nhw'n dda iawn yn eu gwneud, gallwch chi gyflawni canlyniadau rhagorol. Naill ai mewn cynhyrchiant neu wrth symleiddio datrysiad y broblem (1, 2).

Mae byd-eang yn ffordd arbennig o storio a phrosesu data, sy'n hollol wahanol i dablau yn SQL. Ymddangoson nhw yn 1966 yn yr iaith M(UMPS) (datblygiad esblygiadol - ObjectScript Cache, o hyn ymlaen COS) yn y gronfa ddata feddygol ac mae'n dal i fod yno a ddefnyddir yn weithredol, a hefyd wedi treiddio i rai meysydd eraill lle mae angen dibynadwyedd a pherfformiad uchel: cyllid, masnachu, ac ati.

Mae byd-eang mewn DBMSs modern yn cefnogi trafodion, logio, dyblygu a rhaniad. Y rhai. gellir eu defnyddio i adeiladu systemau modern, dibynadwy, gwasgaredig a chyflym.

Nid yw byd-eang yn eich cyfyngu i'r model perthynol. Maent yn rhoi'r rhyddid i chi ddatblygu strwythurau data sydd wedi'u optimeiddio ar gyfer tasgau penodol. I lawer o gymwysiadau, gall defnydd craff o fyd-eang fod yn arf cyfrinachol mewn gwirionedd, gan gyflawni perfformiad na all datblygwyr cymwysiadau perthynol ond breuddwydio amdano.

Gellir defnyddio byd-eang fel ffordd o storio data mewn llawer o ieithoedd rhaglennu modern, lefel uchel a lefel isel. Felly, yn yr erthygl hon byddaf yn canolbwyntio'n benodol ar fyd-eang, ac nid ar yr iaith y daethant ohoni ar un adeg.

2. Sut mae byd-eang yn gweithio

Yn gyntaf, gadewch i ni ddeall sut mae byd-eang yn gweithio a beth yw eu cryfderau. Gellir edrych ar fyd-eang o wahanol safbwyntiau. Yn y rhan hon o'r erthygl byddwn yn edrych arnynt fel coed. Neu fel warysau data hierarchaidd.

Yn syml, mae byd-eang yn amrywiaeth barhaus. Arae sy'n cael ei gadw'n awtomatig ar ddisg.
Mae'n anodd dychmygu rhywbeth symlach ar gyfer storio data. Mewn cod (mewn ieithoedd COS/M) mae'n wahanol i arae cysylltiadol arferol yn y symbol yn unig ^ cyn yr enw.

I arbed data mewn byd-eang, nid oes angen i chi ddysgu iaith ymholiad SQL; mae'r gorchmynion ar gyfer gweithio gyda nhw yn syml iawn. Gellir eu dysgu mewn awr.

Gadewch i ni ddechrau gyda'r enghraifft symlaf. Coeden un lefel gyda 2 gangen. Mae'r enghreifftiau wedi'u hysgrifennu yn COS.

Cleddyfau trysor ar gyfer storio data yw byd-eang. Coed. Rhan 1

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



Wrth fewnosod gwybodaeth i fyd-eang (Gosod gorchymyn), mae 3 pheth yn digwydd yn awtomatig:

  1. Arbed data i ddisg.
  2. Mynegeio. Yr hyn sydd mewn cromfachau yw’r allwedd (mewn llenyddiaeth Saesneg – “subscript”), ac i’r dde i gydraddolion yw’r gwerth (“node value”).
  3. Didoli. Mae'r data yn cael ei ddidoli yn ôl allwedd. Yn y dyfodol, wrth groesi'r arae, yr elfen gyntaf fydd "Sergey Smith", a'r ail "John Sidorov". Wrth dderbyn rhestr o ddefnyddwyr o'r byd-eang, nid yw'r gronfa ddata yn gwastraffu amser yn didoli. Ar ben hynny, gallwch ofyn am allbwn rhestr wedi'i didoli, gan ddechrau o unrhyw allwedd, hyd yn oed un nad yw'n bodoli (bydd yr allbwn yn cychwyn o'r allwedd real gyntaf, sy'n dod ar ôl yr un nad yw'n bodoli).

Mae'r holl lawdriniaethau hyn yn digwydd yn rhyfeddol o gyflym. Ar fy nghyfrifiadur cartref roeddwn i'n cael gwerthoedd hyd at 750 o fewnosodiadau / eiliad mewn un broses. Ar broseswyr aml-graidd gall y gwerthoedd gyrraedd degau o filiynau mewnosod/eiliad.

Wrth gwrs, nid yw'r cyflymder mewnosod ei hun yn dweud llawer. Gallwch, er enghraifft, ysgrifennu gwybodaeth yn gyflym iawn i ffeiliau testun - fel hyn yn ôl sibrydion Gwaith prosesu fisa. Ond yn achos byd-eang, rydym yn cael storfa strwythuredig wedi'i mynegeio o ganlyniad, y gellir gweithio gydag ef yn hawdd ac yn gyflym yn y dyfodol.

Cleddyfau trysor ar gyfer storio data yw byd-eang. Coed. Rhan 1

  • Cryfder mwyaf byd-eang yw'r cyflymder y gellir gosod nodau newydd.
  • Mae data yn y byd-eang bob amser yn cael ei fynegeio. Mae eu croesi, ar un lefel ac yn ddwfn i'r goeden, bob amser yn gyflym.

Gadewch i ni ychwanegu ychydig mwy o ganghennau'r ail a'r trydydd lefel i'r byd-eang.

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

Cleddyfau trysor ar gyfer storio data yw byd-eang. Coed. Rhan 1

Mae'n amlwg y gellir adeiladu coed aml-lefel yn seiliedig ar fyd-eang. Ar ben hynny, mae mynediad i unrhyw nod bron ar unwaith oherwydd mynegeio awto wrth fewnosod. Ac ar unrhyw lefel o'r goeden, mae pob cangen yn cael ei ddidoli yn ôl allwedd.

Fel y gwelwch, gellir storio gwybodaeth mewn allwedd a gwerth. Gall cyfanswm hyd y bysell (swm hyd pob mynegrif) gyrraedd Beit 511, a'r gwerthoedd 3.6 MB ar gyfer Cache. Nifer y lefelau yn y goeden (nifer y dimensiynau) yw 31.

Pwynt diddorol arall. Gallwch chi adeiladu coeden heb nodi gwerthoedd nodau'r lefelau uchaf.

Cleddyfau trysor ar gyfer storio data yw byd-eang. Coed. Rhan 1

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

Mae cylchoedd gwag yn nodau nad oes ganddynt werth wedi'i neilltuo.

Er mwyn deall byd-eang yn well, gadewch i ni eu cymharu â choed eraill: coed gardd a choed enw system ffeiliau.

Gadewch i ni gymharu coed ar fyd-eang â'r strwythurau hierarchaidd mwyaf cyfarwydd i ni: gyda choed cyffredin sy'n tyfu mewn gerddi a chaeau, yn ogystal â systemau ffeiliau.

Cleddyfau trysor ar gyfer storio data yw byd-eang. Coed. Rhan 1

Fel y gwelwn mewn coed gardd, dim ond ar bennau'r canghennau y ceir dail a ffrwythau.
Systemau ffeil - dim ond ar ddiwedd canghennau y mae gwybodaeth yn cael ei storio, sy'n enwau ffeiliau cwbl gymwys.

A dyma'r strwythur data byd-eang.

Cleddyfau trysor ar gyfer storio data yw byd-eang. Coed. Rhan 1Gwahaniaethau:

  1. Nodau mewnol: gellir storio gwybodaeth mewn byd-eang ym mhob nod, nid dim ond ar bennau canghennau.
  2. Nodau allanol: Rhaid i'r byd-eang fod â gwerthoedd diffiniedig ar bennau'r canghennau, tra nad oes gan FS a choed gardd.



O ran nodau mewnol, gallwn ddweud bod strwythur y byd-eang yn uwchset o strwythur coed enw mewn systemau ffeiliau a choed gardd. Y rhai. yn fwy hyblyg.

Yn gyffredinol, mae'r byd-eang yn coeden wedi'i harchebu gyda'r gallu i storio data ym mhob nod.

Er mwyn deall gwaith byd-eang yn well, dychmygwch beth fyddai'n digwydd pe bai crewyr systemau ffeiliau yn defnyddio dull tebyg i fyd-eang i storio gwybodaeth?

  1. Byddai dileu un ffeil mewn cyfeiriadur yn dileu'r cyfeiriadur yn awtomatig, yn ogystal â'r holl gyfeiriaduron dros ben sy'n cynnwys dim ond yr un cyfeiriadur sydd newydd ei ddileu.
  2. Ni fyddai angen cyfeiriaduron. Yn syml, byddai ffeiliau gydag is-ffeiliau a ffeiliau heb is-ffeiliau. O'i chymharu â choeden gyffredin, yna byddai pob cangen yn dod yn ffrwyth.

    Cleddyfau trysor ar gyfer storio data yw byd-eang. Coed. Rhan 1

  3. Efallai na fydd angen pethau fel ffeiliau README.txt. Gellid ysgrifennu popeth yr oedd angen ei ddweud am gynnwys y cyfeiriadur yn y ffeil cyfeiriadur ei hun. Yng ngofod y llwybr, nid oes modd gwahaniaethu rhwng enw'r ffeil ac enw'r cyfeiriadur, felly roedd yn bosibl mynd heibio gyda dim ond ffeiliau.
  4. Byddai cyflymder dileu cyfeiriaduron gydag is-gyfeiriaduron a ffeiliau nythu yn cynyddu'n ddramatig. Lawer gwaith ar Habré bu erthyglau am ba mor hir ac anodd yw dileu miliynau o ffeiliau bach (1, 2). Fodd bynnag, os gwnewch system ffug-ffeil ar fyd-eang, bydd yn cymryd eiliadau neu ffracsiynau ohono. Pan brofais ddileu is-goed ar gyfrifiadur cartref, fe dynodd nodau 1-96 miliwn o goeden dwy haen ar HDD (nid SSD) mewn 341 eiliad. Ar ben hynny, rydym yn sôn am ddileu rhan o'r goeden, ac nid dim ond y ffeil gyfan gyda byd-eang.

Cleddyfau trysor ar gyfer storio data yw byd-eang. Coed. Rhan 1
Mae cael gwared ar is-goed yn bwynt cryf arall o fyd-eang. Nid oes angen ailadrodd ar gyfer hyn. Mae hyn yn digwydd yn rhyfeddol o gyflym.

Yn ein coeden ni gellid gwneud hyn gyda'r gorchymyn Kill.

Kill ^a("+7926X")

Cleddyfau trysor ar gyfer storio data yw byd-eang. Coed. Rhan 1

Er mwyn deall yn well pa gamau gweithredu sydd ar gael inni dros fyd-eang, byddaf yn darparu tabl byr.

Gorchmynion a swyddogaethau sylfaenol ar gyfer gweithio gyda byd-eang yn COS

Gosod
Gosod canghennau i nod (os nad ydynt wedi'u diffinio eto) a gwerthoedd nodau

Cyfuno
Copïo is-goeden

Kill
Cael gwared ar is-goeden

ZKill
Dileu gwerth nod penodol. Nid yw'r is-goeden sy'n dod allan o'r nod yn cael ei chyffwrdd

$ Ymholiad
Tramwyo'r goeden yn llwyr, gan fynd yn ddwfn i'r goeden

$Gorchymyn
Croesi canghennau o nod penodol

$Data
Gwirio a yw nod wedi'i ddiffinio

$cynnydd
Cynyddiad atomig gwerth nod. Er mwyn osgoi darllen ac ysgrifennu, ar gyfer ACID. Yn ddiweddar, argymhellwyd newid i $ Dilyniant

Diolch am eich sylw, rydym yn barod i ateb eich cwestiynau.

Ymwadiad: Yr erthygl hon a fy sylwadau iddi yw fy marn i ac nid oes ganddynt unrhyw berthynas â sefyllfa swyddogol InterSystems Corporation.

Parhad Cleddyfau trysor ar gyfer storio data yw byd-eang. Coed. Rhan 2. Byddwch yn dysgu pa fathau o ddata y gellir eu harddangos ar fyd-eang ac ar ba dasgau y maent yn darparu'r budd mwyaf posibl.

Ffynhonnell: hab.com

Ychwanegu sylw