Utshintshiselwano kwi-InterSystems IRIS jikelele

Utshintshiselwano kwi-InterSystems IRIS jikeleleI-InterSystems IRIS DBMS ixhasa izakhiwo ezinomdla zokugcina idatha - iiglobals. Ngokusisiseko, ezi zizitshixo zamanqanaba amaninzi kunye nezinto ezongezelelweyo ezongezelelweyo ngendlela yentengiselwano, imisebenzi ekhawulezayo yokunqumla imithi yedatha, izitshixo kunye nolwimi lwayo lwe-ObjectScript.

Funda ngakumbi malunga neeglobals kuthotho lwamanqaku "Iiglobals ngamakrele obutyebi bokugcina idatha":

Imithi. Icandelo loku-1
Imithi. Icandelo loku-2
Uluhlu olunqabileyo. Icandelo lesi-3

Ndibe nomdla kwindlela utshintshiselwano oluphunyezwa ngayo kwihlabathi, zeziphi iimpawu ezikhoyo. Ngapha koko, esi sisakhiwo esahluke ngokupheleleyo sokugcina idatha kuneetafile eziqhelekileyo. Inqanaba elisezantsi kakhulu.

Njengoko kusaziwa kwithiyori yolwazi lweenkcukacha zonxibelelwano, ukuphunyezwa kakuhle kwentengiselwano kufuneka kwanelise iimfuno. I-ACID:

A - Atomic (atomic). Lonke utshintsho olwenziwe kwintengiselwano okanye akukho nanye lurekhodwa.

C - Ukuhambelana. Emva kokugqitywa kwentengiselwano, imeko enengqiqo yesiseko sedatha kufuneka ihambelane ngaphakathi. Ngeendlela ezininzi le mfuneko ichaphazela umdwelisi wenkqubo, kodwa kwimeko yogcino-lwazi lwe-SQL ikwachaphazela nezitshixo zangaphandle.

Ndi-Zodwa. Iintengiselwano ezihamba ngokunxuseneyo akufuneki zichaphazele enye kwenye.

D - Ihlala ixesha elide. Emva kokugqitywa ngempumelelo kwentengiselwano, iingxaki kumanqanaba aphantsi (ukungaphumeleli kwamandla, umzekelo) akufanele kuchaphazele idatha etshintshiweyo yintengiselwano.

Ii-Globals zizinto zedatha ezinganxulumananga. Zaziyilelwe ukuba zibaleke ngokukhawuleza kakhulu kwi-hardware encinci kakhulu. Makhe sijonge ukuphunyezwa kwentengiselwano kwiglobals usebenzisa umfanekiso osemthethweni we-IRIS docker.

Ukuxhasa intengiselwano kwi-IRIS, le miyalelo ilandelayo isetyenziswa: TSTART, TCOMMIT, I-TROLLBACK.

1. Iathom

Eyona ndlela ilula yokukhangela i-atomicity. Sijonga kwi-console yedatha.

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

Emva koko sigqibezela:

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

Sifumana:

1 2 3

Yonke into iilungile. I-atomicity iyagcinwa: zonke iinguqu zirekhodwa.

Masiwuxakekise umsebenzi, sazise impazamo kwaye sibone ukuba intengiselwano igcinwa njani, ngokuyinxenye okanye hayi kwaphela.

Makhe sijonge iatomicity kwakhona:

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

Emva koko siya kumisa ngenkani isikhongozeli, siqalise kwaye sibone.

docker kill my-iris

Lo myalelo uphantse ulingane nokuvalwa kwamandla, njengoko uthumela uphawu lwe-SIGKILL ukumisa inkqubo ngokukhawuleza.

Mhlawumbi intengiselwano igcinwe ngokuyinxenye?

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

- Hayi, ayizange iphile.

Makhe sizame umyalelo wokubuyela umva:

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 nto isindayo nayo.

2. Ukungqinelana

Ekubeni kwi-database esekelwe kwii-globals, izitshixo zenziwe kwakhona kwii-globals (makhe ndikukhumbuze ukuba i-global yisakhiwo esisezantsi sokugcina idatha kunetafile yobudlelwane), ukuhlangabezana nemfuneko yokuhambelana, utshintsho kwisitshixo kufuneka lufakwe. kwintengiselwano efanayo njengotshintsho kwihlabathi.

Umzekelo, sinomntu jikelele ^umntu, apho sigcina ubuntu kwaye sisebenzisa i-TIN njengesitshixo.

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

Ukuze ube nophendlo olukhawulezayo ngefani kunye negama lokuqala, senze i ^isitshixo sesalathisi.

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

Ukuze i-database ihambelane, kufuneka songeze umntu onje:

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

Ngokufanelekileyo, xa ucima kufuneka sisebenzise intengiselwano:

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

Ngamanye amazwi, ukuzalisekisa imfuno yokungaguquguquki kuxhomekeke ngokupheleleyo kumagxa omdwebi wenkqubo. Kodwa xa kufikwa kwiiglobals, oku kuqhelekile, ngenxa yomgangatho wabo ophantsi.

3. Ukuba wedwa

Apha kulapho amadlelo aqala khona. Abasebenzisi abaninzi ngaxeshanye basebenza kwi-database efanayo, betshintsha idatha efanayo.

Imeko ifaniswa naxa abasebenzisi abaninzi ngaxeshanye basebenza kunye nekhowudi yokugcina ikhowudi kwaye bazame ukwenza utshintsho kwiifayile ezininzi ngaxeshanye.

Isiseko sedatha kufuneka siyilungise yonke ngexesha lokwenyani. Ukuqwalasela ukuba kwiinkampani ezinzulu kukho umntu okhethekileyo ojongene nolawulo loguqulelo (ukudibanisa amasebe, ukuxazulula iingxabano, njl.), kwaye i-database kufuneka yenze konke oku ngexesha langempela, ubunzima bomsebenzi kunye nokuchaneka kwe uyilo lwesiseko sedatha kunye nekhowudi eyisebenzelayo.

I-database ayikwazi ukuqonda intsingiselo yezenzo ezenziwa ngabasebenzisi ukwenzela ukuphepha iingxabano ukuba basebenza kwidatha efanayo. Ingahlehlisa kuphela intengiselwano enye engqubana nenye, okanye izenze ngokulandelelanayo.

Enye ingxaki kukuba ngexesha lokwenziwa kwentengiselwano (ngaphambi kokuzibophelela), imeko yogcino-lwazi inokungahambelani, ngoko ke kunqweneleka ukuba ezinye iintengiselwano azikwazi ukufikelela kwisimo esingahambelaniyo sesiseko sedatha, esiphunyezwa kwiinkcukacha zolwazi olunxulumeneyo. ngeendlela ezininzi: ukwenza izifinyezo, iirowu ezininzi zeenguqulelo kunye njl.

Xa kusenziwa intengiselwano ngokuhambelanayo, kubalulekile kuthi ukuba bangaphazamisi omnye nomnye. Le yipropati yokuba yedwa.

I-SQL ichaza amanqanaba ama-4 okuzahlula:

  • FUNDA UNGAQINISEKILE
  • FUNDA UKUZINIKELA
  • OKUPHINDA UKUFUNDWA
  • SERIALIZABLE

Masijonge kwinqanaba ngalinye ngokwahlukeneyo. Iindleko zokuphumeza inqanaba ngalinye zikhula phantse ngokukhawuleza.

FUNDA UNGAQINISEKILE - eli lelona nqanaba liphantsi lokuzihlukanisa, kodwa ngexesha elifanayo ngokukhawuleza. Iintengiselwano zinokufunda utshintsho olwenziwe ngabanye.

FUNDA UKUZINIKELA linqanaba elilandelayo lokuzihlukanisa, nto leyo evumelanayo. Utshintshiselwano alukwazi ukufunda utshintsho lomnye nomnye ngaphambi kokuzibophelela, kodwa banokufunda naluphi na utshintsho olwenziwe emva kokuzinikela.

Ukuba sinexesha elide lokuthengiselana i-T1, ngexesha lokuzibophelela kwenzeka kwiintengiselwano T2, T3 ... Tn, esebenza kunye nedatha efanayo ne-T1, ngoko xa ucela idatha kwi-T1 siya kufumana umphumo ohlukeneyo ngexesha ngalinye. Lo mcimbi ubizwa ngokuba kukufunda okungaphindi kuphindeke.

OKUPHINDA UKUFUNDWA - Kweli nqanaba lokuzihlukanisa asinalo isenzeko sokufunda okungaphindi, ngenxa yokuba kwisicelo ngasinye sokufunda idatha, i-snapshot yedatha yesiphumo yenziwe kwaye xa iphinda isetyenziswe kwintengiselwano efanayo, idatha evela kwi-snapshot iyasetyenziswa. Nangona kunjalo, kunokwenzeka ukufunda idatha ye-phantom kweli nqanaba lokuzihlukanisa. Oku kubhekiselele ekufundeni imiqolo emitsha eyongezwe yintengiselwano eyenziwe ngaxeshanye.

SERIALIZABLE - elona nqanaba liphezulu lokugquma. Ibonakaliswa yinyaniso yokuba idatha esetyenziswe nangayiphi na indlela kwintengiselwano (ukufunda okanye ukutshintsha) ifumaneka kwezinye iintengiselwano kuphela emva kokugqitywa kwentengiselwano yokuqala.

Okokuqala, makhe sibone ukuba kukho ukwahlulwa kwemisebenzi kwintengiselwano ukusuka kumsonto oyintloko. Masivule iifestile ezi-2 zetheminali.

Kill ^t

Write ^t(1)
2

TSTART
Set ^t(1)=2

Akukho kubekwa wedwa. Omnye umsonto ubona into eyenziwa ngomnye wesibini ovule intengiselwano.

Makhe sibone ukuba iintengiselwano zemisonto eyahlukeneyo ziyakubona okwenzekayo ngaphakathi kwazo.

Masivule iifestile ze-terminal ezi-2 kwaye sivule iintengiselwano ezi-2 ngokuhambelanayo.

kill ^t
TSTART
Write ^t(1)
3

TSTART
Set ^t(1)=3

Iintengiselwano ezinxuseneyo zibona idatha yomnye. Ke, sifumene eyona ilula, kodwa kunye nelona nqanaba likhawulezayo lokuzahlula, FUNDA ONGAQINISEKILEYO.

Ngokomgaqo, oku kunokulindeleka kwiiglobals, apho ukusebenza bekusoloko kuphambili.

Kuthekani ukuba sifuna inqanaba eliphezulu lokuzikhetha kwimisebenzi yehlabathi?

Apha kufuneka ucinge malunga nokuba kutheni amanqanaba okuzihlukanisa afuneka kuzo zonke kunye nendlela asebenza ngayo.

Elona nqanaba liphezulu lokuzikhethela, iSERIALIZE, lithetha ukuba isiphumo sentengiselwano eyenziwe ngokunxuseneyo silingana nokuphunyezwa kwazo ngokulandelelanayo, okuqinisekisa ukungabikho kongquzulwano.

Singakwenza oku sisebenzisa izitshixo ezihlakaniphileyo kwi-ObjectScript, enosetyenziso oluninzi olwahlukileyo: unokwenza rhoqo, unyuse, utshixe kaninzi ngomyalelo. LOCK.

Amanqanaba asezantsi okuzihlukanisa zizinto zokurhweba eziyilelwe ukunyusa isantya sedatabase.

Makhe sibone ukuba singafikelela njani kumanqanaba ahlukeneyo okuba wedwa sisebenzisa izitshixo.

Lo mqhubi ikuvumela ukuba ungathathi kuphela izitshixo ezikhethekileyo ezifunekayo ukutshintsha idatha, kodwa okubizwa ngokuba yi-locks ekwabelwana ngayo, enokuthi ithathe imisonto emininzi ngokuhambelanayo xa kufuneka ifunde idatha engafanele iguqulwe ngezinye iinkqubo ngexesha lenkqubo yokufunda.

Ulwazi oluthe kratya malunga nendlela yokuthintela izigaba ezibini kwisiRashiya nesiNgesi:

Ukuthintela izigaba ezibini
Ukutshixa kwezigaba ezibini

Ubunzima kukuba ngexesha lokuthengiselana imeko yesiseko sedatha inokungahambelani, kodwa le datha engahambelaniyo ibonakala kwezinye iinkqubo. Ukuphepha njani oku?

Ukusebenzisa izitshixo, siya kudala iifestile zokubonakala apho imeko yesiseko sedatha iya kuhambelana. Kwaye konke ukufikelela kwiifestile ezinjalo zokubonakala kwelizwe elivunyelweneyo kuya kulawulwa ngokukhiya.

Izitshixo ekwabelwana ngazo kwidatha efanayo ziphinda zisebenziseke-iinkqubo ezininzi zinokuzithatha. Ezi zitshixo zithintela ezinye iinkqubo ekutshintsheni idatha, okt. zisetyenziselwa ukwenza iifestile zesimo sesiseko sesiseko esingaguqukiyo.

Izitshixo ezikhethekileyo zisetyenziselwa utshintsho lwedatha - yinkqubo enye kuphela enokuthatha isitshixo esinjalo. Isitshixo esikhethekileyo sinokuthathwa ngu:

  1. Nayiphi na inkqubo ukuba idatha ikhululekile
  2. Kuphela yinkqubo eneqhaga ekwabelwana ngalo kule datha kwaye yayingowokuqala ukucela iqhaga elikhethekileyo.

Utshintshiselwano kwi-InterSystems IRIS jikelele

Incinci iwindow yokubonakala, ixesha elide ezinye iinkqubo kufuneka zilinde, kodwa imo ehambelanayo yesiseko sedatha ngaphakathi kwayo ingaba.

FUNDA_COMMITTED - undoqo weli nqanaba kukuba sibona kuphela idatha ezinikeleyo evela kweminye imisonto. Ukuba idatha kwenye intengiselwano ayikenziwa, ngoko sibona inguqu yayo endala.

Oku kusivumela ukuba sihambisane nomsebenzi endaweni yokulinda ukuba kukhululwe iqhaga.

Ngaphandle kwamaqhinga akhethekileyo, asiyi kukwazi ukubona inguqu yakudala yedatha kwi-IRIS, ngoko kuya kufuneka senze ngezitshixo.

Ngokufanelekileyo, kuya kufuneka sisebenzise izitshixo ekwabelwana ngazo ukuvumela idatha ukuba ifundwe kuphela ngamaxesha okuhambelana.

Masithi sinesiseko somsebenzisi ^umntu odlulisela imali komnye nomnye.

Umzuzu wokudluliselwa ukusuka kumntu 123 ukuya kumntu 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)

Umzuzu wokucela isixa-mali kumntu ongu-123 phambi kokuba utsalwe kufuneka ukhatshwe yibhloko ekhethekileyo (ngokusilela):

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

Kwaye ukuba ufuna ukubonisa isimo seakhawunti kwiakhawunti yakho yobuqu, ungasebenzisa isitshixo ekwabelwana ngaso okanye ungasisebenzisi kwaphela:

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

Nangona kunjalo, ukuba sicinga ukuba imisebenzi yogcino lwedatha yenziwa phantse ngoko nangoko (makhe ndikukhumbuze ukuba iiglobals zinobume bezinga elisezantsi kakhulu kunetafile yobudlelwane), ngoko imfuno yalo mgangatho iyancipha.

OKUPHINDA UKUFUNDWA - Eli nqanaba lokuzihlukanisa livumela ukufundwa okuninzi kwedatha enokuguqulwa ngokuthengiselana okufanayo.

Ngokufanelekileyo, kuya kufuneka sibeke isitshixo ekwabelwana ngaso ekufundeni idatha esiyitshintshayo kunye nezitshixo ezikhethekileyo kwidatha esiyitshintshayo.

Ngethamsanqa, umqhubi we-LOCK ikuvumela ukuba udwelise ngokweenkcukacha zonke izitshixo eziyimfuneko, apho kunokubakho okuninzi, kwingxelo enye.

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

eminye imisebenzi (ngeli xesha imisonto enxuseneyo izama ukutshintsha ^umntu(123, isixa), kodwa ayikwazi)

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

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

Xa udwelisa izitshixo ezahlulwe ngeekoma, zithathwa ngokulandelelanayo, kodwa ukuba wenza oku:

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

ke zithathwa atomically zonke ngaxeshanye.

I-SERIALIZE - Kuya kufuneka sisete izitshixo ukuze ekugqibeleni zonke iintengiselwano ezinedatha efanayo zenziwe ngokulandelelana. Ngale ndlela, uninzi lokutshixa kufuneka lube lodwa kwaye luthathwe kwezona ndawo zincinci zehlabathi ukuze zisebenze.

Ukuba sithetha malunga ne-debiting funds kwihlabathi jikelele ^umntu, ngoko kuphela inqanaba lokuzihlukanisa le-SERIALIZE liyamkeleka kuyo, ekubeni imali kufuneka isetyenziswe ngokungqongqo ngokulandelelana, ngaphandle koko kunokwenzeka ukuba uchithe isixa esifanayo ngamaxesha amaninzi.

4. Ukuqina

Ndenze iimvavanyo ngokusikwa kanzima kwesikhongozeli ndisebenzisa

docker kill my-iris

Isiseko sibanyamezele kakuhle. Akukho zingxaki zichongiwe.

isiphelo

Kwihlabathi jikelele, i-InterSystems IRIS inenkxaso yokuthengiselana. Ziyi-athomu ngokwenene kwaye zithembekile. Ukuqinisekisa ukuhambelana kwesiseko sedatha esekelwe kwii-globals, iinzame zomdwelisi kunye nokusetyenziswa kweentengiselwano ziyafuneka, ekubeni ingenalo ulwakhiwo oluntsonkothileyo olwakhelwe ngaphakathi olufana nezitshixo zangaphandle.

Inqanaba lokuzihlukanisa lehlabathi ngaphandle kokusebenzisa izitshixo FUNDA NGENXA, kwaye xa usebenzisa izitshixo unokuqinisekiswa ukuya kwinqanaba le-SERIALIZE.

Ukuchaneka kunye nesantya sentengiselwano kwiiglobals kakhulu kuxhomekeke kwisakhono somdwelisi wenkqubo: xa kusetyenziswa izitshixo ekwabelwana ngazo xa kufundwa, kokukhona inqanaba lokuzikhetha liphezulu, kwaye okukhona kuthathwa izitshixo ezikhethekileyo, kokukhona ukusebenza ngokukhawuleza.

umthombo: www.habr.com

Yongeza izimvo