Okwenziwayo kuma-InterSystems IRIS globals

Okwenziwayo kuma-InterSystems IRIS globalsI-InterSystems IRIS DBMS isekela izakhiwo ezithokozisayo zokugcina idatha - ama-globals. Empeleni, laba okhiye bamaleveli amaningi abanezinto ezihlukahlukene ezengeziwe ngendlela yokwenza, imisebenzi esheshayo yokunqamula izihlahla zedatha, izingidi kanye nolimi lwayo lwe-ObjectScript.

Funda kabanzi mayelana nomhlaba ochungechungeni lwezihloko ezithi “Ama-Globals angamagugu okugcina idatha”:

Izihlahla. Ingxenye 1
Izihlahla. Ingxenye 2
Amalungu afanayo amancane. Ingxenye 3

Ngaba nentshisekelo yokuthi ukuthengiselana kwenziwa kanjani emhlabeni jikelele, yiziphi izici ezikhona. Phela, lesi isakhiwo esihluke ngokuphelele sokugcina idatha kunamathebula avamile. Izinga eliphansi kakhulu.

Njengoba kwaziwa ngethiyori yemininingwane yokuxhumana, ukuqaliswa okuhle kokuthengiselana kufanele kwenelise izidingo. I-ACID:

A - Atomic (i-athomu). Zonke izinguquko ezenziwe kumsebenzi noma azikho nhlobo ziyarekhodwa.

C - Ukuvumelana. Ngemva kokuqedwa kokwenziwayo, isimo esinengqondo sesizindalwazi kufanele silingane ngaphakathi. Ngezindlela eziningi le mfuneko ithinta umklami, kodwa endabeni yolwazi lwe-SQL iphinde ithinte okhiye bakwamanye amazwe.

I - Izolate. Okwenziwayo okwenzeka ngokufana akufanele kuthintane.

D - Ihlala isikhathi eside. Ngemva kokuphothula ngempumelelo umsebenzi, izinkinga emazingeni aphansi (ukwehluleka kwamandla, isibonelo) akufanele kuthinte idatha eshintshwe umsebenzi.

Ama-Global ayizakhiwo zedatha ezingahlobene. Zaziklanyelwe ukusebenza ngokushesha okukhulu kuhadiwe okulinganiselwe kakhulu. Ake sibheke ukuqaliswa kokuthengiselana emhlabeni jikelele kusetshenziswa isithombe sedokodo se-IRIS esisemthethweni.

Ukusekela ukuthengiselana ku-IRIS, kusetshenziswa imiyalo elandelayo: TSTART, I-TCOMMIT, I-TROLLBACK.

1. I-athomu

Indlela elula yokuhlola i-atomicity. Sibheka kukhonsoli yedatha.

Kill ^a
TSTART
Set ^a(1) = 1
Set ^a(2) = 2
Set ^a(3) = 3
TCOMMIT

Bese siphetha ngokuthi:

Write ^a(1), “ ”, ^a(2), “ ”, ^a(3)

Sithola:

1 2 3

Konke kuhamba kahle. I-atomicity iyagcinwa: zonke izinguquko zirekhodwa.

Masihlanganise umsebenzi, sethule iphutha futhi sibone ukuthi okwenziwayo kugcinwa kanjani, kancane noma cha.

Ake sihlole i-athomu futhi:

Kill ^A
TSTART
Set ^a(1) = 1
Set ^a(2) = 2
Set ^a(3) = 3

Khona-ke sizokumisa ngenkani isitsha, sisethule futhi sibone.

docker kill my-iris

Lo myalo ucishe ulingane nokuvala shaqa, njengoba uthumela isignali ye-SIGKILL ukuze imise inqubo ngokushesha.

Mhlawumbe umsebenzi ulondolozwe kancane?

WRITE ^a(1), ^a(2), ^a(3)
^
<UNDEFINED> ^a(1)

- Cha, ayikasinda.

Ake sizame umyalo wokubuyisela emuva:

Kill ^A
TSTART
Set ^a(1) = 1
Set ^a(2) = 2
Set ^a(3) = 3
TROLLBACK

WRITE ^a(1), ^a(2), ^a(3)
^
<UNDEFINED> ^a(1)

Akukho lutho olusindile futhi.

2. Ukungaguquguquki

Njengoba kusizindalwazi esisekelwe kuma-globals, okhiye benziwa futhi kuma-globals (ake ngikukhumbuze ukuthi i-global isakhiwo sezinga eliphansi lokugcina idatha kunetafula lobudlelwane), ukuhlangabezana nemfuneko yokuvumelana, ushintsho kukhiye kufanele lufakwe. ekuhwebeni okufanayo njengoshintsho emhlabeni jikelele.

Isibonelo, sinomuntu ^womhlaba, lapho sigcina khona abantu futhi sisebenzisa i-TIN njengokhiye.

^person(1234567, ‘firstname’) = ‘Sergey’
^person(1234567, ‘lastname’) = ‘Kamenev’
^person(1234567, ‘phone’) = ‘+74995555555
...

Ukuze ube nokusesha okusheshayo ngesibongo nesibongo, senze ^ukhiye wenkomba.

^index(‘Kamenev’, ‘Sergey’, 1234567) = 1

Ukuze isizindalwazi silingane, kufanele sengeze umuntu kanje:

TSTART
^person(1234567, ‘firstname’) = ‘Sergey’
^person(1234567, ‘lastname’) = ‘Kamenev’
^person(1234567, ‘phone’) = ‘+74995555555
^index(‘Kamenev’, ‘Sergey’, 1234567) = 1
TCOMMIT

Ngokufanelekile, lapho sisusa kufanele futhi sisebenzise umsebenzi:

TSTART
Kill ^person(1234567)
ZKill ^index(‘Kamenev’, ‘Sergey’, 1234567)
TCOMMIT

Ngamanye amazwi, ukufeza imfuneko yokuvumelana kuncike ngokuphelele emahlombe omhleli. Kodwa uma kukhulunywa ngama-globals, lokhu kujwayelekile, ngenxa yezinga lawo eliphansi.

3. Ukuzihlukanisa

Yilapho-ke amahlathi aqala khona. Abasebenzisi abaningi ngesikhathi esisodwa basebenza kusizindalwazi esifanayo, beshintsha idatha efanayo.

Isimo sifaniswa nalapho abasebenzisi abaningi ngesikhathi esisodwa besebenza nekhosombe yekhodi efanayo futhi bezama ukwenza izinguquko ngesikhathi esisodwa kumafayela amaningi ngesikhathi esisodwa.

Isizindalwazi kufanele sikulungise konke ngesikhathi sangempela. Uma kucatshangelwa ukuthi ezinkampanini ezibucayi kukhona ngisho nomuntu okhethekile obhekele ukulawulwa kwenguqulo (yokuhlanganisa amagatsha, ukuxazulula izingxabano, njll.), futhi i-database kufanele yenze konke lokhu ngesikhathi sangempela, ubunzima bomsebenzi kanye nokunemba kwe i-database design kanye nekhodi esebenzayo.

Isizindalwazi asikwazi ukuqonda incazelo yezenzo ezenziwa abasebenzisi ukuze kugwenywe izingxabano uma besebenza kudatha efanayo. Ingahlehlisa kuphela okwenziwayo okushayisanayo nokunye, noma kukwenze ngokulandelana.

Enye inkinga ukuthi ngesikhathi sokwenziwa kokuthengiselana (ngaphambi kokuzibophezela), isimo sedathabhesi singase singahambisani, ngakho-ke kuyafiseleka ukuthi okunye ukuthengiselana akukwazi ukufinyelela isimo esingahambisani sedathabhesi, ezuzwa kudathabhethi yokuxhumana. ngezindlela eziningi: ukudala izifinyezo, imigqa enezinguqulo eziningi nokunye.

Lapho senza okwenziwayo ngokufana, kubalulekile kithi ukuthi bangaphambanisi. Lesi yisici sokuzihlukanisa.

I-SQL ichaza amazinga ama-4 wokuzihlukanisa:

  • FUNDA UNGANQUNYIWE
  • FUNDA UKUZINIKELA
  • OKUPHINDA OKUFUNDILE
  • SERIALIZABLE

Ake sibheke izinga ngalinye ngokwehlukana. Izindleko zokusebenzisa izinga ngalinye zikhula cishe ngokukhuphukayo.

FUNDA UNGANQUNYIWE - leli izinga eliphansi kakhulu lokuzihlukanisa, kodwa ngesikhathi esifanayo esheshayo. Okwenziwayo kungafunda izinguquko ezenziwe omunye nomunye.

FUNDA UKUZINIKELA izinga elilandelayo lokuzihlukanisa, okuwukuyekethisa. Okwenziwayo akukwazi ukufunda izinguquko zomunye nomunye ngaphambi kwesivumelwano, kodwa bangafunda noma yiziphi izinguquko ezenziwe ngemva kokuzibophezela.

Uma sinomsebenzi omude we-T1, lapho kwenziwa khona ukuthengiselana kwe-T2, T3 ... Tn, esebenze nedatha efanayo ne-T1, khona-ke lapho sicela idatha ku-T1 sizothola umphumela ohlukile isikhathi ngasinye. Lesi simo sibizwa ngokuthi ukufunda okungaphindi.

OKUPHINDA OKUFUNDILE - kuleli zinga lokuzihlukanisa asinawo umkhuba wokufunda okungaphindi, ngenxa yokuthi esicelweni ngasinye sokufunda idatha, kwakhiwa isifinyezo sedatha yomphumela futhi lapho sisetshenziswa kabusha kumsebenzi ofanayo, idatha evela esifinyezweni. iyasetshenziswa. Nokho, kuyenzeka ukufunda idatha ye-phantom kuleli zinga lokuzihlukanisa. Lokhu kubhekisela ekufundeni imigqa emisha eyengezwe ngokuthengiselana okwenziwe okufanayo.

SERIALIZABLE - Izinga eliphezulu kakhulu le-insulation. Kubonakala yiqiniso lokuthi idatha esetshenziswe nganoma iyiphi indlela ekwenziweni (ukufunda noma ukushintsha) itholakala kwezinye izinkokhelo kuphela ngemva kokuqedwa kokwenziwayo kokuqala.

Okokuqala, ake sithole ukuthi kukhona yini ukwehlukaniswa kwemisebenzi ekuthengiseni emculweni oyinhloko. Masivule amafasitela amatheminali angu-2.

Kill ^t

Write ^t(1)
2

TSTART
Set ^t(1)=2

Akukho ukuhlukaniswa. Omunye uchungechunge ubona ukuthi owesibili ovule umsebenzi wenzani.

Ake sibone ukuthi ukuthengiselana kwemicu eyahlukene kuyakubona yini okwenzeka ngaphakathi kwakho.

Masivule amafasitela amatheminali angu-2 futhi sivule okwenziwayo okungu-2 ngokuhambisana.

kill ^t
TSTART
Write ^t(1)
3

TSTART
Set ^t(1)=3

Okwenziwayo okufanayo kubona idatha yomunye nomunye. Ngakho-ke, sithole okulula kakhulu, kodwa nezinga lokuzihlukanisa elisheshayo, FUNDA UNGAZIBOMI.

Empeleni, lokhu kungalindelwa emazweni omhlaba, ukusebenza kwawo okuhlale kuyinto ebaluleke kakhulu.

Kuthiwani uma sidinga izinga eliphezulu lokuzihlukanisa emisebenzini yomhlaba?

Lapha udinga ukucabanga ngokuthi kungani amazinga okuzihlukanisa edingeka nhlobo nokuthi asebenza kanjani.

Izinga eliphakeme kakhulu lokuzihlukanisa, i-SERIALIZE, lisho ukuthi umphumela wemisebenzi eyenziwa ngokufana ulingana nokwenza kwazo ngokulandelana kwazo, okuqinisekisa ukungabi khona kokungqubuzana.

Lokhu singakwenza sisebenzisa izikhiya ezihlakaniphile ku-ObjectScript, ezinokusetshenziswa okuningi okuhlukile: ungenza okujwayelekile, okukhulayo, ukukhiya okuningi ngomyalo. LOCK.

Amazinga aphansi okuzihlukanisa awokuhweba okuklanyelwe ukukhulisa isivinini sesizindalwazi.

Ake sibone ukuthi singawafinyelela kanjani amazinga ahlukene okuzihlukanisa sisebenzisa izingidi.

Lo opharetha ikuvumela ukuthi ungathathi kuphela izingidi ezikhethekile ezidingekayo ukuze ushintshe idatha, kodwa lokho okubizwa ngokuthi izingidi ezabiwe, ezingathatha imicu eminingana ngokuhambisana lapho zidinga ukufunda idatha okungafanele ishintshwe ezinye izinqubo phakathi nenqubo yokufunda.

Ulwazi olwengeziwe mayelana nendlela yokuvimbela izigaba ezimbili ngesiRashiya nesiNgisi:

Ukuvinjwa kwezigaba ezimbili
Ukukhiya kwezigaba ezimbili

Ubunzima buwukuthi ngesikhathi sokuthengiselana isimo sesizindalwazi singase singavumelani, kodwa le datha engahambisani ibonakala kwezinye izinqubo. Ungakugwema kanjani lokhu?

Sisebenzisa izingidi, sizodala amawindi okubonakala lapho isimo sesizindalwazi sizovumelana. Futhi konke ukufinyelela kulawo mafasitela okubonakala kwesimo okuvunyelwene ngaso kuzolawulwa izingidi.

Izikhiya ezabiwe kudatha efanayo ziyasebenziseka kabusha—izinqubo ezimbalwa zingathatha. Lezi zikhiya zivimbela ezinye izinqubo ekuguquleni idatha, i.e. zisetshenziselwa ukwakha amawindi wesimo sesizindalwazi esingaguquki.

Izikhiya ezikhethekile zisetshenziselwa izinguquko zedatha - inqubo eyodwa kuphela engathatha ilokhi enjalo. Ukukhiya okukhethekile kungathathwa ngu:

  1. Noma iyiphi inqubo uma idatha imahhala
  2. Inqubo kuphela enokhiye owabiwe kule datha futhi ebe ingeyokuqala ukucela ukukhiya okukhethekile.

Okwenziwayo kuma-InterSystems IRIS globals

Lapho iwindi lokubonakala liba lincane, ezinye izinqubo kufanele zililinde isikhathi eside, kodwa lapho isimo sedatha egciniwe singaba njalo.

READ_COMMITTED - ingqikithi yaleli zinga ukuthi sibona kuphela idatha ezinikele evela kweminye imicu. Uma idatha ekomunye umsebenzi ingakenziwa, khona-ke sibona inguqulo yayo endala.

Lokhu kusivumela ukuthi sihambisane nomsebenzi esikhundleni sokulinda ukuthi kukhishwe ingidi.

Ngaphandle kwamaqhinga akhethekile, ngeke sikwazi ukubona inguqulo yakudala yedatha ku-IRIS, ngakho-ke kuzodingeka senze okuthile ngezingidi.

Ngokufanelekile, kuzodingeka sisebenzise izingidi ezabiwe ukuze sivumele idatha ukuthi ifundwe kuphela ngezikhathi zokungaguquguquki.

Ake sithi sinesisekelo somsebenzisi ^umuntu odlulisela imali komunye nomunye.

Isikhathi sokudlulisa ukusuka kumuntu 123 kuye kumuntu 242:

LOCK +^person(123), +^person(242)
Set ^person(123, amount) = ^person(123, amount) - amount
Set ^person(242, amount) = ^person(242, amount) + amount
LOCK -^person(123), -^person(242)

Isikhathi sokucela inani lemali kumuntu ongu-123 ngaphambi kokudonswa kwemali kufanele sihambisane nebhulokhi ekhethekile (ngokuzenzakalelayo):

LOCK +^person(123)
Write ^person(123)

Futhi uma udinga ukukhombisa isimo se-akhawunti ku-akhawunti yakho yomuntu siqu, ungasebenzisa isikhiya esabiwe noma ungasisebenzisi nhlobo:

LOCK +^person(123)#”S”
Write ^person(123)

Kodwa-ke, uma sicabanga ukuthi imisebenzi egciniwe yenziwa cishe ngokuphazima kweso (ake ngikukhumbuze ukuthi ama-globals ayisakhiwo sezinga eliphansi kakhulu kunetafula lobudlelwane), isidingo saleli zinga siyehla.

OKUPHINDA OKUFUNDILE - Leli zinga lokuzihlukanisa livumela ukufundwa okuningi kwedatha okungashintshwa ngokwenziwa ngesikhathi esisodwa.

Ngokufanelekile, kuzodingeka sibeke isikhiya esihlanganyelwe ekufundeni idatha esiyishintshayo kanye nezikhiya ezikhethekile kudatha esiyishintshayo.

Ngenhlanhla, u-opharetha we-LOCK ikuvumela ukuthi ubhale ngokuningiliziwe zonke izingidi ezidingekayo, okungaba khona okuningi, esitatimendeni esisodwa.

LOCK +^person(123, amount)#”S”
чтение ^person(123, amount)

eminye imisebenzi (ngalesi sikhathi imicu ehambisanayo izama ukushintsha ^umuntu(123, inani), kodwa ayikwazi)

LOCK +^person(123, amount)
изменение ^person(123, amount)
LOCK -^person(123, amount)

чтение ^person(123, amount)
LOCK -^person(123, amount)#”S”

Uma ufaka izingidi kuhlu zihlukaniswa ngokhefana, zithathwa ngokulandelana, kodwa uma wenza lokhu:

LOCK +(^person(123),^person(242))

bese zithathwa nge-athomu zonke ngasikhathi sinye.

SERIALIZE - kuzodingeka simise izingidi ukuze ekugcineni yonke imisebenzi enedatha evamile yenziwe ngokulandelana. Ngale ndlela, izingidi eziningi kufanele zikhetheke futhi zithathwe ezindaweni ezincane kakhulu zomhlaba ukuze zisebenze.

Uma sikhuluma ngezimali zokudonswa kwemali kumuntu womhlaba wonke, khona-ke izinga lokuhlukaniswa le-SERIALIZE kuphela elamukelekayo kulo, njengoba imali kufanele isetshenziswe ngokulandelana ngokuqinile, ngaphandle kwalokho kungenzeka ukusebenzisa inani elifanayo izikhathi eziningana.

4. Ukuqina

Ngenza izivivinyo ngokusika kanzima kwesitsha ngisebenzisa

docker kill my-iris

Isisekelo sababekezelela kahle. Azikho izinkinga ezihlonziwe.

isiphetho

Kwamazwe omhlaba, i-InterSystems IRIS inokwesekwa kokuthengiselana. Ziyi-athomu ngempela futhi zithembekile. Ukuqinisekisa ukuvumelana kwesizindalwazi esisekelwe emhlabeni wonke, imizamo yomhleli kanye nokusetshenziswa kokwenziwe kuyadingeka, njengoba ingenazo izinto eziyinkimbinkimbi ezakhelwe ngaphakathi ezifana nokhiye bangaphandle.

Izinga lokuhlukaniswa lomhlaba wonke ngaphandle kokusebenzisa izingidi FUNDA OKUNGAZINIKELE, futhi uma usebenzisa izikhiya lingaqinisekiswa kuze kufike kuleveli ye-SERIALIZE.

Ukunemba nesivinini sokwenziwa kwezinto emhlabeni wonke kuncike kakhulu ekhonweni lomhleli: lapho kusetshenziswa izingidi eziningi ezabiwe lapho kufundwa, izinga lokuzihlukanisa liphakeme, futhi lapho kuthathwa amalokhi akhethekile, ukusebenza kushesha.

Source: www.habr.com

Engeza amazwana