Iiglobals ngamakrele okugcina idatha. Imithi. Icandelo lesi-2

Iiglobals ngamakrele okugcina idatha. Imithi. Icandelo lesi-2Ukuqalisa - jonga icandelo 1.

3. Ukwahluka kwezakhiwo xa usebenzisa iiglobals

Isakhiwo esifana nomthi oodolweyo sineemeko ezizodwa ezahlukeneyo. Makhe siqwalasele ezo ziluncedo xa usebenza neglobals.

3.1 Imeko ekhethekileyo 1. Indawo enye engenamasebe


Iiglobals ngamakrele okugcina idatha. Imithi. Icandelo lesi-2Iiglobals zingasetyenziswa nje kuphela njenge-array, kodwa njengezinto eziguquguqukayo eziqhelekileyo. Umzekelo, njengekhawuntari:

Set ^counter = 0  ; установка счётчика
Set id=$Increment(^counter) ;  атомарное инкрементирование

Kule meko, umhlaba jikelele, ukongeza kwintsingiselo yawo, unokuba namasebe. Omnye akamkhupheli ngaphandle omnye.

3.2 Imeko ekhethekileyo 2. I-vertex enye kunye namasebe amaninzi

Ngokubanzi, esi sisiseko se-classic key-value. Kwaye ukuba sigcina i-tuple yamaxabiso njengexabiso, siya kufumana itafile eqhelekileyo eneqhosha lokuqala.

Iiglobals ngamakrele okugcina idatha. Imithi. Icandelo lesi-2

Ukuphumeza itheyibhile kwiiglobals, kuya kufuneka sivelise imiqolo ngokwethu ukusuka kumaxabiso ekholamu, kwaye emva koko siyigcine kwihlabathi jikelele sisebenzisa isitshixo sokuqala. Ukwenza kube lula ukwahlula umtya kwimiqolo kwakhona xa ufunda, ungasebenzisa:

  1. abalinganiswa be-delimiter.
    Set ^t(id1) = "col11/col21/col31"
    Set ^t(id2) = "col12/col22/col32"
  2. iskimu esiqinileyo apho indawo nganye ithatha inani elimiselweyo leebhayithi. Njengoko kusenziwa kwiziko ledatha elinxulumeneyo.
  3. umsebenzi okhethekileyo $LB (ekhoyo kwiCache), eyenza uluhlu lwamaxabiso.
    Set ^t(id1) = $LB("col11", "col21", "col31")
    Set ^t(id2) = $LB("col12", "col22", "col32")

Okubangela umdla kukuba, akukho nzima ukusebenzisa iiglobals ukwenza into efana nezalathisi zesibini kwiziko ledatha. Masibize ezo zakhiwo zisalathiso ngokuba ziiglobals. Isalathisi sehlabathi ngumthi oncedisayo wokukhangela ngokukhawuleza iindawo ezingeyonxalenye yesitshixo esiphambili sehlabathi jikelele. Ukuyigcwalisa kwaye uyisebenzise, ​​kufuneka ubhale ikhowudi eyongezelelweyo.

Masenze isalathiso sehlabathi jikelele kumhlathi wokuqala.

Set ^i("col11", id1) = 1
Set ^i("col12", id2) = 1

Ngoku, ukukhangela ngokukhawuleza ulwazi kwikholamu yokuqala, kufuneka sijonge kwihlabathi jikelele ^i kwaye ufumane izitshixo eziphambili (id) ezihambelana nexabiso elifunwayo loluhlu lokuqala.

Xa ufaka ixabiso, singenza ngoko nangoko zombini ixabiso kunye nesalathisi sehlabathi jikelele kwimihlaba efunekayo. Kwaye ngenxa yokuthembeka, masiyibophe yonke into kwintengiselwano.

TSTART
Set ^t(id1) = $LB("col11", "col21", "col31")
Set ^i("col11", id1) = 1
TCOMMIT

Iinkcukacha malunga nendlela yokwenza kwi-M iitafile kwiiglobals, ukulinganisa izalathisi zesibini.

Iitheyibhile ezinjalo ziya kusebenza ngokukhawuleza njengolwazi lwemveli (okanye ngokukhawuleza) ukuba imisebenzi yokufaka / ukuhlaziya / ukucima imiqolo ibhalwe kwi-COS / M kwaye ihlanganiswe.Ndihlolisise le nkcazo ngeemvavanyo kwi-bulk INSERT kwaye KHETHA kwitafile enye yeekholamu ezimbini, kuquka ukusebenzisa i-TSTART kunye ne-TCOMMIT imiyalelo (intengiselwano).

Khange ndivavanye iimeko ezintsokothileyo ngokufikelela okufanayo kunye neentengiselwano ezinxuseneyo.

Ngaphandle kokusebenzisa iintengiselwano, izinga lokufakwa kwaba yi-778 yokufaka/yesibini kwixabiso lesigidi.
Ngamaxabiso ezigidi ezingama-300 - ama-422 afaka / okwesibini.

Xa usebenzisa ukuthengiselana - i-572 ifaka / isibini kwi-082M yokufaka. Yonke imisebenzi yenziwa kwikhowudi enguM ehlanganisiweyo.
Ii-hard drives ziqhelekileyo, kungekhona i-SSD. I-RAID5 enoBhala-umva. Phenom II 1100T iprosesa.

Ukuvavanya isiseko sedatha ye-SQL ngendlela efanayo, kufuneka ubhale inkqubo egciniweyo eya kwenza ukufakwa kwi-loop. Xa uvavanya i-MySQL 5.5 (ukugcinwa kwe-InnoDB), usebenzisa le ndlela ndifumene amanani angabikho ngaphezu kokufakwa kwe-11K ngomzuzwana.
Ewe, ukuphunyezwa kweetheyibhile kwiiglobals kukhangeleka kuntsonkothile ngakumbi kunoko kugcino-lwazi olunxulumeneyo. Ke ngoko, oovimba beenkcukacha zoshishino kwiiglobals banokufikelela kwiSQL ukwenza lula umsebenzi ngedatha yetheyibhile.

Iiglobals ngamakrele okugcina idatha. Imithi. Icandelo lesi-2Ngokubanzi, ukuba i-schema yedatha ayiyi kutshintsha rhoqo, isantya sofakelo asibalulekanga kwaye yonke i-database inokumelwa ngokulula ngendlela yeetafile eziqhelekileyo, ngoko kulula ukusebenza kunye ne-SQL, kuba ibonelela ngenqanaba eliphezulu lokukhupha. .

Iiglobals ngamakrele okugcina idatha. Imithi. Icandelo lesi-2Kule meko bendifuna ukubonisa ukuba iiglobals zinokusebenza njengomakhi wokwenza ezinye iidatabase. Njenge-assembler apho ezinye iilwimi zinokubhalwa khona. Nantsi imizekelo yendlela onokwenza ngayo ii-analogues kwiiglobals isitshixo-ixabiso, uluhlu, iiseti, itheyibhile, ugcino-lwazi olujolise kuxwebhu.

Ukuba ufuna ukwenza uhlobo oluthile lwesiseko sedatha esingenamgangatho ngomzamo omncinci, kuya kufuneka ujonge kwiiglobals.

3.3 Imeko ekhethekileyo 3. Umthi onemigangatho emibini, indawo nganye yenqanaba lesibini inenani eliqingqiweyo lamasebe.

Iiglobals ngamakrele okugcina idatha. Imithi. Icandelo lesi-2Mhlawumbi uyiqikelele: olu lolunye ukuphunyezwa kweetheyibhile kwiiglobals. Masithelekise olu phunyezo kunye noludlulileyo.

Iitheyibhile kumthi onemigangatho emibini vs. kumthi onenqanaba elinye.

Минусы
Плюсы

  1. Ufakelo olucothayo, kuba ufuna ukuseta inani leenodi ezilingana nenani leekholamu.
  2. Ukusetyenziswa kwendawo yedisk eninzi. Ekubeni izalathisi zehlabathi (ziqondwa njengezalathisi zoluhlu) ezinamagama omhlathi athatha isithuba sedisk kwaye aphindwa kumqolo ngamnye.

  1. Ukufikelela ngokukhawuleza kumaxabiso eekholamu zomntu ngamnye, kuba akukho mfuneko yokwahlulahlula umtya. Ngokweemvavanyo zam, i-11,5% ngokukhawuleza kwiikholamu ze-2 kwaye ngaphezulu kwinani elikhulu leekholomu.
  2. Kulula ukutshintsha i-schema yedatha
  3. Ikhowudi ecacileyo ngakumbi

Isiphelo: hayi wonke umntu. Kuba isantya sesinye sezona zibonelelo ziphambili zeglobals, akukho nqaku lincinci ekusebenziseni olu phumezo, kuba alunakusebenza ngokukhawuleza kunetafile kuluhlu lwedatha olunxulumeneyo.

3.4 Ityala ngokubanzi. Imithi kunye nemithi eodolweyo

Naluphi na ulwakhiwo lwedatha olunokumelwa njengomthi luhambelana ngokugqibeleleyo nehlabathi jikelele.

3.4.1 Izinto ezinezihloko

Iiglobals ngamakrele okugcina idatha. Imithi. Icandelo lesi-2

Le yindawo yokusetyenziswa ngokwesiko kweglobals. Kwicandelo lezonyango kukho inani elikhulu lezifo, amayeza, iimpawu, kunye neendlela zonyango. Akukho ngqiqweni ukwenza itafile enamasimi esigidi kwisigulane ngasinye. Ngaphezu koko, i-99% yamasimi aya kuba engenanto.

Khawucinge ngesiseko sedatha ye-SQL yeetheyibhile: "isigulane" ~ 100 amasimi, "Unyango" - imimandla ye-000, "Unyango" - imimandla ye-100, "Iingxaki" - imimandla ye-000, njl. kwaye nangokunjalo. Okanye ungenza uvimba wedatha wamawaka amaninzi eetafile, nganye yohlobo oluthile lwesigulana (kwaye ziyakwazi ukugqithana!), Amayeza, amayeza, kunye namawaka eetafile ezongezelelekileyo zonxibelelwano phakathi kwezi tafile.

Ii-Globals zilungele amayeza, njengoko zikuvumela ukuba udale isigulane ngasinye inkcazo echanekileyo yembali yakhe yonyango, iindlela ezahlukeneyo zonyango, kunye nezenzo zamachiza, ngendlela yomthi, ngaphandle kokuchitha indawo eyongezelelweyo yediski kwiikholamu ezingenanto, njengoko bekuya kuba njalo. yiba njalo kwimeko yobudlelwane.

Iiglobals ngamakrele okugcina idatha. Imithi. Icandelo lesi-2Ukusebenzisa iiglobals kukulungele ukwenza idatabase eneenkcukacha malunga nabantu, xa kubalulekile ukuqokelela kunye nokucwangcisa ubuninzi beenkcukacha ezahlukeneyo malunga nomxhasi. Oku kufunwa ngamayeza, iibhanki, ukuthengisa, ukugcina amaxwebhu kunye nezinye iindawo

.
Ewe kunjalo, kwiSQL ungalinganisa umthi ngeetafile nje ezimbalwa (EAV, 1,2,3,4,5,6,7,8,9,10), nangona kunjalo oku kunzima kakhulu kwaye kuya kucotha. Ngokusisiseko, kuya kufuneka ubhale i-global esebenza kwiitafile kwaye ufihle wonke umsebenzi ngeetafile phantsi komaleko wokuthatha. Akulunganga ukulinganisa ubuchwephesha obukwinqanaba elisezantsi (iiglobals) usebenzisa ubuchwephesha obuphezulu (SQL). Ayifanelekanga.

Akusiyo imfihlo ukuba ukutshintsha i-schema yedatha kwiitafile ezinkulu (ALTER TABLE) kunokuthatha ixesha elifanelekileyo. I-MySQL, umzekelo, yenza i-ALTER TABLE ADD | DROP COLUMN ngokukhuphela ngokupheleleyo ulwazi olusuka kwitafile endala ukuya kwitafile entsha (ihlolwe i-MyISAM, iinjini ze-InnoDB). Enokuxhoma i-database esebenzayo kunye neebhiliyoni zeerekhodi iintsuku, ukuba kungekhona iiveki.

Iiglobals ngamakrele okugcina idatha. Imithi. Icandelo lesi-2Ukutshintsha ubume bedatha ukuba sisebenzisa iiglobals akusibizi nto. Ngalo naliphi na ixesha singongeza naziphi na iipropati ezintsha esizidingayo kuyo nayiphi na into, nakweyiphi na inqanaba le-hierarchy. Utshintsho olunxulunyaniswa namasebe okuthiya ngokutsha lungenziwa ngasemva kwisiseko sedatha esisebenzayo.


Ke ngoko, xa kufikwa ekugcineni izinto ezinenani elikhulu leepropathi ozikhethelayo, iiglobals lukhetho olukhulu.

Ngaphezu koko, mandikukhumbuze ukuba ukufikelela kuyo nayiphi na ipropati ngokukhawuleza, kuba kwihlabathi jikelele zonke iindlela ziyi-B-trees.

Ugcino-lwazi lwehlabathi, ngokubanzi, luhlobo lwesiseko sedatha esekwe kuxwebhu olukwaziyo ukugcina ulwazi olukwinqanaba eliphezulu. Ke ngoko, oovimba beenkcukacha ezisekelwe kuxwebhu banokukhuphisana nehlabathi jikelele kwicandelo lokugcinwa kweerekhodi zonyango. Kodwa ayikafani ncamMasithathe iMongoDB ukuze sithelekise. Kulo mmandla iyaphulukana neglobals ngenxa yezi zizathu zilandelayo:

  1. Ubungakanani boxwebhu. Iyunithi yokugcina isicatshulwa kwifomathi ye-JSON (ngokuchanekileyo ngakumbi i-BSON) kunye nomthamo omkhulu malunga ne-16MB. Uthintelo lwenziwa ngokukodwa ukuze i-database ye-JSON ingacothi ngexesha lokwahlula-hlula ukuba uxwebhu olukhulu lwe-JSON lugcinwe kulo kwaye lufikelelwe ngamasimi. Olu xwebhu kufuneka luqulathe lonke ulwazi malunga nesigulana. Sonke siyazi ukuba iirekhodi zesigulana zinokuba ngqindilili kangakanani na. Ubungakanani bekhadi eliphezulu le-16MB ngokukhawuleza liphelisa izigulane ezinekhadi lesifo libandakanya iifayile ze-MRI, i-X-ray scans kunye nezinye izifundo. Kwisebe elinye lehlabathi unokuba neegigabhayithi kunye neeterabytes zolwazi. Ngokomgaqo, sinokuyiphelisa le nto, kodwa ndiya kuqhubeka.
  2. Ixesha lokuqonda / utshintsho / ukususwa kweempawu ezintsha kwitshati yesigulane. Isiseko sedatha esinjalo kufuneka sifunde yonke imephu kwimemori (esi sixa esikhulu!), Chaza i-BSON, yongeza / tshintsha / cima i-node entsha, i-indexes yokuhlaziya, ipakishe kwi-BSON, kwaye uyigcine kwidiski. Ihlabathi lifuna kuphela ukufikelela kwipropathi ethile kunye nokuyilawula.
  3. Ukufikelela ngokukhawuleza kwiipropati zomntu ngamnye. Ngeepropati ezininzi kuxwebhu kunye nolwakhiwo lwamanqanaba amaninzi, ukufikelela kwiipropati zomntu ngamnye kuya kukhawuleza ngenxa yokuba indlela nganye yehlabathi i-B-tree. Kwi-BSON, kufuneka ucazulule ngomgca uxwebhu ukuze ufumane ipropati efunekayo.

3.3.2 Izintlu ezidibanisayo

I-Associative arrays (kwanakunye noluhlu lwendlwane) lungena ngokugqibeleleyo kwiiglobals. Ngokomzekelo, uluhlu olunjalo oluvela kwi-PHP luya kuboniswa kumfanekiso wokuqala 3.3.1.

$a = array(
  "name" => "Vince Medvedev",
  "city" => "Moscow",
  "threatments" => array(
    "surgeries" => array("apedicectomy", "biopsy"),
    "radiation" => array("gamma", "x-rays"),
    "physiotherapy" => array("knee", "shoulder")
  )
);

3.3.3 Amaxwebhu eHierarchical: XML, JSON

Kwakhona igcinwe ngokulula kwiiglobals. Inokubekwa ngeendlela ezahlukeneyo zokugcina.

XML
Eyona ndlela ilula yokubola i-XML kwiglobals kukugcina iimpawu zethegi kwiinodi. Kwaye ukuba ukufikelela ngokukhawuleza kwiimpawu zethegi kuyadingeka, ngoko sinokuzihambisa kumasebe ahlukeneyo.

Iiglobals ngamakrele okugcina idatha. Imithi. Icandelo lesi-2

<note id=5>
<to>Вася</to>
<from>Света</from>
<heading>Напоминание</heading>
<body>Позвони мне завтра!</body>
</note>

Kwi-COS oku kuya kuhambelana nekhowudi:

Set ^xml("note")="id=5"
Set ^xml("note","to")="Саша"
Set ^xml("note","from")="Света"
Set ^xml("note","heading")="Напоминание"
Set ^xml("note","body")="Позвони мне завтра!"

Igalelo: Kwi-XML, i-JSON, i-associative arrays, unokuza neendlela ezininzi ezahlukeneyo zokubonisa kwiiglobals. Kule meko, asizange sibonise ulandelelwano lwee-subtags kwithegi yenqaku. Kwihlabathi jikelele ^xml ii-subtags ziya kuboniswa ngolandelelwano lwealfabhethi. Ukubonisa ngokungqongqo ucwangco, ungasebenzisa, umzekelo, lo mboniso ulandelayo:

Iiglobals ngamakrele okugcina idatha. Imithi. Icandelo lesi-2
JSON.
Umfanekiso wokuqala ovela kwicandelo 3.3.1 ubonisa umboniso wolu xwebhu lwe-JSON:

var document = {
  "name": "Vince Medvedev",
  "city": "Moscow",
  "threatments": {
    "surgeries": ["apedicectomy", "biopsy"],
    "radiation": ["gamma", "x-rays"],
    "physiotherapy": ["knee", "shoulder"]
  },
};

3.3.4 Ulwakhiwo olufanayo oludityaniswe lubudlelwane boluhlu lwemigangatho

Imizekelo: isakhiwo seeofisi zokuthengisa, indawo yabantu kwisakhiwo seMLM, isiseko sedatha yokuvula kwi-chess.

Debuts database. Ungasebenzisa i-stroke force estimate njengexabiso lesalathisi se-node yehlabathi. Emva koko, ukuze ukhethe ukuhamba okunamandla, kuya kukwanela ukukhetha isebe elinobunzima obukhulu. Kwihlabathi jikelele, onke amasebe kwinqanaba ngalinye aya kuhlelwa ngokwamandla okushukuma.

Iiglobals ngamakrele okugcina idatha. Imithi. Icandelo lesi-2

Ubume beeofisi zentengiso, ubume babantu kwiMLM. Ii-Nodes zinokugcina amaxabiso athile e-caching abonisa iimpawu ze-subtree yonke. Umzekelo, umthamo wokuthengisa we-subtree enikiweyo. Nangawuphi na umzuzu sinokufumana umzobo obonisa impumelelo yalo naliphi na isebe.

Iiglobals ngamakrele okugcina idatha. Imithi. Icandelo lesi-2

4. Kweziphi iimeko apho kuluncedo kakhulu ukusebenzisa iiglobals?

Ikholamu yokuqala ibonisa iimeko apho uya kufumana inzuzo ebalulekileyo yesantya ngokusebenzisa iiglobals, kwaye okwesibini xa uyilo okanye imodeli yedatha iya kwenziwa lula.

Ukukhawuleza
Ukulula kokusetyenzwa/ukunikezelwa kwedatha

  1. Ufakelo [ngokuhlelwa ngokuzenzekelayo kwinqanaba ngalinye], [ukufakwa kwesalathisi ngeqhosha elikhulu]
  2. Ukususa i-subtrees
  3. Izinto ezineepropati ezininzi ezihlala kwindlwane ezifuna ukufikelela komntu ngamnye
  4. Ubume be-Hierarchical kunye nokukwazi ukudlula amasebe abantwana kulo naliphi na isebe, kwanalawo angekhoyo
  5. Ubunzulu-ukuhamba phambili kweminye imithi
  1. Izinto/amaqumrhu anenani elikhulu leepropathi ezikhethwayo [kunye/okanye ezakhiweyo]/amaziko
  2. Idatha engaphantsi kweSchema. Xa iipropati ezintsha zihlala zivela kwaye ezindala zinyamalale.
  3. Kufuneka wenze i-database yesiko.
  4. Iziseko zendlela kunye nemithi yesigqibo. Xa kulungele ukumela iindlela njengomthi.
  5. Ukususwa kwezakhiwo ze-hierarchical ngaphandle kokusebenzisa ukuphindaphinda

Ukuqhubeka “Iihlabathi zibubutyebi bokugcina inkcazelo. Uluhlu olunqabileyo. Icandelo 3".

isikhanyeli: Eli nqaku kunye nezimvo zam kulo ngumbono wam kwaye akukho nto inxulumene nesikhundla esisemthethweni se-InterSystems Corporation.

umthombo: www.habr.com

Yongeza izimvo