Cleddyfau trysor ar gyfer storio data yw byd-eang. Araeau gwasgaredig. Rhan 3

Cleddyfau trysor ar gyfer storio data yw byd-eang. Araeau gwasgaredig. Rhan 3Mewn rhannau blaenorol (1, 2) buom yn siarad am fyd-eang fel coed, yn yr un hwn byddwn yn edrych ar fyd-eang fel araeau prin.

Arae gwasgarog yn fath o arae lle mae'r rhan fwyaf o'r gwerthoedd yn cymryd yr un gwerth.

Yn ymarferol, mae araeau tenau yn aml mor enfawr fel nad oes diben meddiannu cof gydag elfennau unfath. Felly, mae'n gwneud synnwyr i weithredu araeau tenau yn y fath fodd fel nad yw cof yn cael ei wastraffu ar storio gwerthoedd union yr un fath.
Mewn rhai ieithoedd rhaglennu, mae araeau prin wedi'u cynnwys yn yr iaith ei hun, er enghraifft yn J, Matlab. Mae gan ieithoedd rhaglennu eraill lyfrgelloedd arbennig sy'n caniatáu ichi eu gweithredu. Ar gyfer C++ - Yn berchen ac ati

Mae byd-eang yn ymgeiswyr da ar gyfer gweithredu araeau tenau oherwydd:

  1. Maent yn storio gwerthoedd nodau penodol yn unig ac nid ydynt yn storio gwerthoedd rhai heb eu diffinio;
  2. Mae'r rhyngwyneb ar gyfer cyrchu gwerth nod yn hynod o debyg i faint o ieithoedd rhaglennu sy'n gweithredu mynediad i elfen arae aml-ddimensiwn.
    Set ^a(1, 2, 3)=5
    Write ^a(1, 2, 3)

  3. Mae Global yn strwythur lefel eithaf isel ar gyfer storio data, felly mae ganddo nodweddion cyflymder rhagorol (o gannoedd o filoedd i ddegau o filiynau o drafodion yr eiliad, yn dibynnu ar y caledwedd, gweler isod). 1)

Gan fod y byd-eang yn strwythur parhaus, mae'n gwneud synnwyr i greu araeau tenau arnynt pan wyddys ymlaen llaw na fydd faint o RAM yn ddigon.

Un o briodweddau gweithrediadau araeau tenau yw dychwelyd rhywfaint o werth rhagosodedig os gwneir mynediad i gell anniffiniedig.

Gellir gweithredu hyn gan ddefnyddio'r swyddogaeth $GET yn COS. Mae'r enghraifft hon yn ystyried arae 3-dimensiwn.

SET a = $GET(^a(x,y,z), defValue)

Pa dasgau sy'n gofyn am araeau tenau a sut gall byd-eang helpu?

Matrics cyfagosrwydd (cysylltedd).

Matricsau o'r fath a ddefnyddir i gynrychioli graffiau:

Cleddyfau trysor ar gyfer storio data yw byd-eang. Araeau gwasgaredig. Rhan 3

Yn amlwg, po fwyaf yw'r graff, y mwyaf o seroau fydd yn y matrics. Er enghraifft, os byddwn yn cymryd graff rhwydwaith cymdeithasol ac yn ei gyflwyno ar ffurf matrics tebyg, yna bydd bron yn gyfan gwbl yn cynnwys sero, h.y. bydd araU gwasgaredig.

Set ^m(id1, id2) = 1 
Set ^m(id1, id3) = 1 
Set ^m(id1, id4) = 1 
Set ^m(id1) = 3 
Set ^m(id2, id4) = 1 
Set ^m(id2, id5) = 1 
Set ^m(id2) = 2
....

Yn yr enghraifft hon, rydym yn arbed yn fyd-eang ^m matrics cysylltedd, yn ogystal â nifer yr ymylon ar bob nod (pwy sy'n ffrindiau gyda phwy a nifer y ffrindiau).

Os nad yw nifer yr elfennau yn y graff yn fwy na 29 miliwn (cymerir y rhif hwn fel lluoswm 8 * maint llinell uchaf), hynny yw, mae ffordd hyd yn oed yn fwy darbodus i storio matricsau o'r fath yn llinynnau bit, gan fod eu gweithrediad yn gwneud y gorau o fylchau mawr mewn ffordd arbennig.

Mae manipulations gyda llinynnau did yn cael eu perfformio gan y ffwythiant $ BIT.

; установка бита
SET $BIT(rowID, positionID) = 1
; получение бита
Write $BIT(rowID, positionID)

Tabl trawsnewid peiriant y wladwriaeth

Gan fod graff trawsnewid awtomaton meidraidd yn graff cyffredin, yna mae tabl trawsnewid yr awtomaton meidraidd yr un matrics cyfagosrwydd a drafodwyd uchod.

Automata cellog

Cleddyfau trysor ar gyfer storio data yw byd-eang. Araeau gwasgaredig. Rhan 3

Yr automaton cellog enwocaf yw gêm "Bywyd", sydd, oherwydd ei reolau (pan fydd gan gell lawer o gymdogion, mae'n marw) yn amrywiaeth denau.

Stephen Wolfram yn credu bod automata cellog yn maes gwyddoniaeth newydd. Yn 2002, cyhoeddodd lyfr 1280 tudalen, A New Kind of Science, lle mae'n dadlau'n fras nad yw datblygiadau mewn awtomata cellog yn ynysig, ond eu bod yn barhaus a bod iddynt oblygiadau mawr i bob maes gwyddoniaeth.

Mae wedi'i brofi y gellir gweithredu unrhyw algorithm gweithredadwy ar gyfrifiadur gan ddefnyddio automaton cellog. Defnyddir awtomata cellog i fodelu amgylcheddau a systemau deinamig, i ddatrys problemau algorithmig ac at ddibenion eraill.

Os oes gennym faes enfawr a bod angen i ni gofnodi holl gyflwr canolradd awtomaton cellog, yna mae'n gwneud synnwyr i ddefnyddio byd-eang.

Cartograffeg

Y peth cyntaf sy'n dod i'm meddwl pan ddaw'n fater o ddefnyddio araeau prin yw tasgau mapio.

Fel rheol, mae llawer o le gwag ar fapiau. Os yw'r map yn cael ei gynrychioli fel picsel mawr, yna bydd 71% o bicseli'r Ddaear yn cael eu meddiannu gan y cefnfor. Arae gwasgaredig. Ac os ydych chi'n defnyddio gweithiau dwylo dynol yn unig, yna bydd y lle gwag yn fwy na 95%.

Wrth gwrs, nid oes neb yn storio mapiau ar ffurf araeau raster; defnyddir cynrychioliad fector.
Ond beth yw mapiau fector? Mae hwn yn fath o ffrâm a polylines a pholygonau sy'n cynnwys pwyntiau.
Yn ei hanfod cronfa ddata o bwyntiau a chysylltiadau rhyngddynt.

Un o'r teithiau mapio mwyaf uchelgeisiol yw taith Telesgop Gaia i fapio ein galaeth. Yn ffigurol, mae ein galaeth, fel y bydysawd cyfan, yn amrywiaeth denau barhaus: gofodau enfawr o wacter lle mae pwyntiau bach prin - sêr. Lle gwag yw 99,999999…….%. Er mwyn storio'r map o'n galaeth, dewiswyd cronfa ddata fyd-eang - Caché.

Nid wyf yn gwybod union strwythur byd-eang yn y prosiect hwn, gallaf gymryd ei fod yn rhywbeth tebyg i:

Set ^galaxy(b, l, d) = 1; Номер звезды по каталогу, если есть
Set ^galaxy(b, l, d, "name") = "Sun"
Set ^galaxy(b, l, d, "type") = "normal" ; варианты blackhole, quazar, red_dwarf и т.д.
Set ^galaxy(b, l, d, "weight") = 14E50
Set ^galaxy(b, l, d, "planetes") = 7
Set ^galaxy(b, l, d, "planetes", 1) = "Mercury"
Set ^galaxy(b, l, d, "planetes", 1, weight) = 1E20
...

Lle mae b, l, d cyfesurynnau galaethol lledred, hydred a phellter i'r Haul.

Mae strwythur hyblyg byd-eang yn eich galluogi i arbed unrhyw nodweddion angenrheidiol o sêr a phlanedau, gan fod y seiliau ar fyd-eang yn llai cynllun.

Er mwyn storio'r map o'n bydysawd, dewiswyd Caché nid yn unig oherwydd ei hyblygrwydd, ond hefyd oherwydd ei allu i storio llif o ddata yn gyflym iawn, gan greu mynegai byd-eang ar yr un pryd ar gyfer chwiliadau cyflym.

Os byddwn yn dychwelyd i'r Ddaear, yna crëwyd prosiectau cartograffig ar fyd-eang OpenStreetMap XAPI a fforc o OpenStreetMap - FOSM.

Yn ddiweddar ymlaen hackathon Caché rhoddwyd mynegeion geo-ofodol ar waith Geo-ofodol. Rydym yn aros am erthygl gan yr awduron gyda manylion gweithredu.

Gweithredu mynegeion gofodol ar fyd-eang yn OpenStreetMap XAPI

Lluniau wedi eu cymryd o y cyflwyniad hwn.

Rhennir y glôb cyfan yn sgwariau, yna is-sgwariau, ac is-sgwariau yn is-sgwariau, ac ati. Yn gyffredinol, rydym yn cael strwythur hierarchaidd ar gyfer storio pa fyd-eang sy'n cael eu creu.

Cleddyfau trysor ar gyfer storio data yw byd-eang. Araeau gwasgaredig. Rhan 3

Ar unrhyw adeg, gallwn bron yn syth ofyn am y sgwâr dymunol neu ei glirio, a bydd yr holl is-sgwariau hefyd yn cael eu dychwelyd neu eu clirio.

Gellir gweithredu cynllun tebyg ar fyd-eang mewn sawl ffordd.

Opsiwn 1:

Set ^m(a, b, a, c, d, a, b,c, d, a, b, a, c, d, a, b,c, d, a, 1) = idПервойТочки
Set ^m(a, b, a, c, d, a, b,c, d, a, b, a, c, d, a, b,c, d, a, 2) = idВторойТочки
...

Opsiwn 2:

Set ^m('abacdabcdabacdabcda', 1) = idПервойТочки
Set ^m('abacdabcdabacdabcda', 2) = idВторойТочки
...

Yn y ddau achos, nid yw'n anodd defnyddio COS/M i ofyn am bwyntiau sydd wedi'u lleoli mewn sgwâr o unrhyw lefel. Bydd ychydig yn haws glanhau darnau sgwâr o ofod ar unrhyw lefel yn yr opsiwn cyntaf, ond anaml y bydd angen hyn.

Enghraifft o un o'r sgwariau lefel is:

Cleddyfau trysor ar gyfer storio data yw byd-eang. Araeau gwasgaredig. Rhan 3

A dyma sawl byd-eang o brosiect XAPI: cynrychioli mynegai ar fyd-eang:

Cleddyfau trysor ar gyfer storio data yw byd-eang. Araeau gwasgaredig. Rhan 3

byd-eang ^ffordd a ddefnyddir i storio pwyntiau polylines (ffyrdd, afonydd bach, ac ati) a pholygonau (mannau caeedig: adeiladau, coedwigoedd, ac ati).

Dosbarthiad bras o'r defnydd o araeau tenau ar fyd-eang.

  1. Rydym yn storio cyfesurynnau rhai gwrthrychau a'u cyflyrau (mapio, automata cellog)
  2. Rydym yn storio matricsau prin.

Ar gyfer achos 2) wrth ofyn am gyfesuryn penodol lle na roddir gwerth i'r elfen, rhaid inni gael gwerth yr elfen arae denau ddiofyn.

Bonysau a dderbyniwn wrth storio matricsau amlddimensiwn mewn byd-eang

Tynnwch yn gyflym a / neu dewiswch ddarnau o ofod sy'n luosrifau o resi, awyrennau, ciwbiau, ac ati. Mewn achosion lle defnyddir mynegeion cyfanrif, gall y gallu i dynnu a/neu nôl talpiau o ofod sy'n luosrifau o resi, awyrennau, ciwbiau, ac ati fod yn ddefnyddiol.

Tîm Kill gallwn ddileu naill ai un elfen neu res, neu hyd yn oed awyren gyfan. Diolch i briodweddau byd-eang, mae hyn yn digwydd yn gyflym iawn - filoedd o weithiau'n gyflymach na thynnu elfen-wrth-elfen.

Mae'r ffigur yn dangos arae tri dimensiwn mewn byd-eang ^a a gwahanol fathau o ddileu.

Cleddyfau trysor ar gyfer storio data yw byd-eang. Araeau gwasgaredig. Rhan 3

I ddewis darnau o ofod gan ddefnyddio mynegeion hysbys, gallwch ddefnyddio'r gorchymyn Cyfuno.

Dewis colofn matrics i'r newidyn Colofn:

; Зададим трёхмерный разреженный массив 3x3x3
Set ^a(0,0,0)=1,^a(2,2,0)=1,^a(2,0,1)=1,^a(0,2,1)=1,^a(2,2,2)=1,^a(2,1,2)=1
Merge Column = ^a(2,2)
; Выведем переменную Column
Zwrite Column

Casgliad:

Column(0)=1
Column(2)=1

Yr hyn sy'n ddiddorol am y newidyn Colofn yw bod gennym ni hefyd arae denau, y mae'n rhaid ei chyrchu trwy $GET, gan nad yw gwerthoedd rhagosodedig yn cael eu storio ynddo.

Gellir dewis darnau o ofod hefyd trwy raglen fach gan ddefnyddio'r swyddogaeth $Gorchymyn. Mae hyn yn arbennig o gyfleus ar fannau nad yw eu mynegeion wedi'u meintioli (cartograffeg).

Casgliad

Mae'r amseroedd presennol yn creu tasgau uchelgeisiol newydd. Gall graffiau gynnwys biliynau o fertigau, mapiau sy'n cynnwys biliynau o bwyntiau, ac efallai y bydd rhai hyd yn oed eisiau rhedeg eu bydysawd eu hunain ar awtomata cellog (1, 2).

Pan na all maint y data o araeau prin bellach ffitio i mewn i RAM, ond mae angen i chi weithio gyda nhw, yna mae'n werth ystyried y posibilrwydd o weithredu prosiectau tebyg ar fyd-eang a COS.

Diolch am eich sylw! Rydym yn aros am eich cwestiynau a'ch dymuniadau yn y sylwadau.

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

Ffynhonnell: hab.com

Ychwanegu sylw