InterSystems IRIS DBMS waxay taageertaa qaabdhismeedka xiisaha leh ee lagu kaydinayo xogta - globals. Asal ahaan, kuwani waa furayaal heerar badan leh oo leh waxyaabo dheeraad ah oo kala duwan oo ah qaab macaamil ganacsi, hawlo degdeg ah oo loogu talagalay geedaha xogta, qufulyada iyo luuqadeeda ObjectScript.
Ka akhriso wax badan oo ku saabsan caalamka taxanaha maqaallada "Globals are treasure-swords for kaydinta xogta":
Waxaan xiiseeyay sida wax kala iibsiga looga fuliyo caalamka, maxay yihiin sifooyinka jira. Ka dib oo dhan, tani waa qaab gebi ahaanba ka duwan kaydinta xogta marka loo eego miisaska caadiga ah. Heer hoose oo aad u hooseeya.
Sida laga og yahay aragtida xogta xogta la xidhiidha, hirgelinta wanaagsan ee wax kala iibsiga waa in ay buuxisaa shuruudaha :
A - Atomic (atomicity). Dhammaan isbeddellada lagu sameeyay wax kala iibsiga ama midnaba lama diiwaangeliyo.
C - Joogteynta. Kadib marka wax kala iibsigu dhamaado, xaalada macquulka ah ee xog ururintu waa inay ahaato mid gudaha ah oo joogto ah. Siyaabo badan ayaa shardigani khuseeyaa programmer-ka, laakiin marka laga hadlayo xogta SQL waxa kale oo ay khusaysaa furayaasha shisheeye.
I - Go'doomin. Wax kala iibsiga oo is barbar socda waa in aanu midba midka kale saamayn.
D - Waarta. Ka dib marka si guul leh loo dhammeeyo macaamil ganacsi, dhibaatooyinka heerarka hoose (kuwa korantada, tusaale ahaan) waa in aysan saameynin xogta ay beddeshay macaamilka.
Globals waa qaab-dhismeedka xogta aan xiriir la lahayn. Waxaa loo qorsheeyay inay si xawli ah ugu shaqeeyaan qalab aad u xaddidan. Aynu eegno hirgelinta wax kala iibsiga ee caalamka isticmaalaya .
Si loo taageero wax kala iibsiga gudaha IRIS, amarada soo socda ayaa la isticmaalaa: , , .
1. Atomity
Habka ugu fudud ee lagu hubin karo waa atomicity. Waxaan ka hubinaa konsole-ka keydka macluumaadka.
Kill ^a
TSTART
Set ^a(1) = 1
Set ^a(2) = 2
Set ^a(3) = 3
TCOMMITKa dib waxaan ku soo gabagabeyneynaa:
Write ^a(1), “ ”, ^a(2), “ ”, ^a(3)Waxaan helnaa:
1 2 3Wax walba waa fiican yihiin. Atomity waa la ilaaliyaa: dhammaan isbeddellada waa la duubay.
Aynu adkeyno hawsha, soo bandhigno qalad oo aragno sida macaamilka loo badbaadiyay, qayb ahaan ama maahan gebi ahaanba.
Aan mar kale hubinno atomiga:
Kill ^A
TSTART
Set ^a(1) = 1
Set ^a(2) = 2
Set ^a(3) = 3Kadibna si xoog ah ayaanu ku joojin doonaa weelka, soo daadin doonaa oo aragnaa.
docker kill my-irisAmarkani wuxuu ku dhow yahay inuu u dhigmo xidhidh xoog leh, maadaama uu soo dirayo calaamad SIGKILL ah si loo joojiyo hawsha isla markaaba.
Ma laga yaabaa in wax kala iibsiga qayb ahaan la badbaadiyay?
WRITE ^a(1), ^a(2), ^a(3)
^
<UNDEFINED> ^a(1)- Maya, ma ay badbaaday.
Aynu isku dayno amarka dib-u-celinta:
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)Sidoo kale ma jiraan wax ka badbaaday.
2. Joogteynta
Maaddaama xogta ku salaysan xogta caalamiga ah, furayaasha ayaa sidoo kale lagu sameeyaa caalamka (aan ku xasuusiyo in caalamigu yahay qaab-dhismeed hoose oo loogu talagalay kaydinta xogta marka loo eego miiska xiriirka), si loo buuxiyo shuruudaha joogtada ah, isbeddelka furaha waa in lagu daraa. isla macaamilka sida isbeddelka caalamiga ah.
Tusaale ahaan, waxaan leenahay ^ qof caalami ah, kaas oo aan ku kaydinno shakhsiyaadka oo aan u isticmaalno TIN fure ahaan.
^person(1234567, ‘firstname’) = ‘Sergey’
^person(1234567, ‘lastname’) = ‘Kamenev’
^person(1234567, ‘phone’) = ‘+74995555555
...Si aad si degdeg ah u raadiso magaca dambe iyo magaca hore, waxaanu samaynay furaha ^index.
^index(‘Kamenev’, ‘Sergey’, 1234567) = 1Si xogtu u noqoto mid joogto ah, waa in aan qofka ku darnaa sidan:
TSTART
^person(1234567, ‘firstname’) = ‘Sergey’
^person(1234567, ‘lastname’) = ‘Kamenev’
^person(1234567, ‘phone’) = ‘+74995555555
^index(‘Kamenev’, ‘Sergey’, 1234567) = 1
TCOMMITSidaas awgeed, marka la tirtirayo waa inaan sidoo kale isticmaalnaa wax kala beddelasho:
TSTART
Kill ^person(1234567)
ZKill ^index(‘Kamenev’, ‘Sergey’, 1234567)
TCOMMITSi kale haddii loo dhigo, buuxinta shuruudaha joogtaynta waxay gebi ahaanba saaran tahay garbaha barnaamijka. Laakiin marka ay timaado caalamka, tani waa wax iska caadi ah, sababtoo ah dabeecadooda hoose.
3. Go'doon
Tani waa meesha ay duurjoogtu ka bilaabmaan. Isticmaalayaal badan ayaa isku mar ku shaqeeya xog isku mid ah, iyagoo bedelaya xog isku mid ah.
Xaaladdu waxay la mid tahay marka isticmaaleyaal badani ay isku mar la shaqeeyaan isla kaydka koodka oo ay isku dayaan inay isku mar ku sameeyaan isbedel faylal badan hal mar.
Xog-ururinta waa in ay wada xalisaa wakhtiga dhabta ah. Iyadoo la tixgelinayo in shirkadaha halista ah ay jiraan xitaa qof gaar ah oo mas'uul ka ah xakamaynta version (isku-dhafka laamaha, xallinta khilaafaadka, iwm.), iyo database-ku waa inuu sameeyaa wax walba waqtiga dhabta ah, kakanaanta hawsha iyo saxnaanta database design iyo code u adeegaya.
Xogta xogta ma fahmi karto macnaha ficilada ay sameeyeen isticmaalayaashu si looga fogaado isku dhacyada haddii ay ku shaqeynayaan xog isku mid ah. Waxa kaliya oo ay dib u celin kartaa hal macaamil ganacsi oo khilaafsan mid kale, ama u fulin kara si isku xigta.
Dhibaato kale ayaa ah in inta lagu jiro fulinta macaamil ganacsi (ka hor intaan la samayn), xaaladda database-ku waxay noqon kartaa mid aan iswaafajin, sidaas darteed waxaa la jecel yahay in macaamilada kale aysan marin u helin xaaladda aan waafaqsanayn xogta xogta, taas oo lagu gaaro xogta macluumaadka ee xiriirka la leh. siyaabo badan: abuurista sawir-qaadis, safaf kala-noqosho badan iyo iwm.
Marka la fulinayo wax kala iibsiga si isbarbar socda, waxaa muhiim noo ah in aysan faragelin midba midka kale. Tani waa hantida go'doominta.
SQL wuxuu qeexayaa 4 heerar go'doon:
- AKHRISO LAGU QABO
- AKHRISO LAGU QABO
- AKHRISO LA SOO NOQON KARO
- SERIALIZABLE
Aynu si gaar ah u eegno heer kasta. Kharashyada hirgelinta heer kasta waxay u koraan ku dhawaad si xad dhaaf ah.
AKHRISO LAGU QABO - tani waa heerka ugu hooseeya ee go'doominta, laakiin isla markaa waa kan ugu dhaqsaha badan. Macaamilyadu waxay akhriyi karaan isbeddelada midba midka kale sameeyo.
AKHRISO LAGU QABO waa heerka xiga ee go'doominta, taas oo ah tanaasul. Ganacsiyadu ma akhrin karaan isbadelada midba midka kale ka hor ballan-qaadka, laakiin waxay akhriyi karaan isbeddel kasta oo la sameeyo ballan-qaadka ka dib.
Haddii aan haysano xawaalad dheer oo T1 ah, inta lagu gudajiro taas oo ay ka dhacday macaamilada T2, T3 ... Tn, kuwaas oo la shaqeeyay xog isku mid ah sida T1, ka dibna marka la codsado xogta T1 waxaan heli doonaa natiijo ka duwan mar kasta. Dhacdadan waxa loo yaqaan akhrin aan soo noqnoqon karin.
AKHRISO LA SOO NOQON KARO - heerkan go'doominta ah ma hayno ifafaale ah akhrinta aan soo noqnoqon karin, sababtoo ah xaqiiqda ah in codsi kasta oo lagu akhriyo xogta, sawirka xogta natiijada ayaa la abuurayaa iyo marka dib loo isticmaalo isla macaamilka, xogta laga helay sawirka sawirka. loo isticmaalo. Si kastaba ha ahaatee, waxaa suurtagal ah in la akhriyo xogta khiyaanada leh heerkan go'doominta. Tani waxa ay tilmaamaysaa akhrinta safaf cusub oo ay ku soo kordhiyeen macaamilo is barbar socda.
SERIALIZABLE - heerka ugu sarreeya ee dahaarka. Waxaa lagu gartaa xaqiiqda ah in xogta loo isticmaalo si kasta oo macaamil ganacsi ah (akhrinta ama beddelka) ay noqoto mid la heli karo macaamilada kale kaliya ka dib marka la dhammeeyo macaamilka ugu horreeya.
Marka hore, aynu ogaano haddii ay jirto go'doomin hawlgallada macaamil ganacsi ee dunta ugu weyn. Aynu furno 2 daaqadood oo terminal ah.
Kill ^t
Write ^t(1)
2
TSTART
Set ^t(1)=2Go'doon ma jirto. Mid ka mid ah dunta ayaa arkaysa waxa uu qabanayo kii labaad ee furay macaamil ganacsi.
Aynu aragno haddii macaamil ganacsiyada dunta kala duwan ay arkaan waxa ka dhacaya gudaha.
Aan furno 2 daaqadood oo terminal ah oo aan furno 2 macaamil oo isbarbar socda.
kill ^t
TSTART
Write ^t(1)
3
TSTART
Set ^t(1)=3
Wax kala beddelashada isbarbar-dhigga waxay arkayaan xogta midba midka kale. Marka, waxaan helnay heerka ugu fudud, laakiin sidoo kale heerka go'doominta ugu dhaqsaha badan, AKHRISO AAN LAGU DHAQAMIN.
Mabda 'ahaan, tan waxaa laga filan karaa caalamka, kuwaas oo waxqabadku had iyo jeer ahaa mudnaanta.
Maxaa dhacaya haddii aan u baahanno go'doon heer sare ah ee hawlgallada caalamiga ah?
Halkan waxaad u baahan tahay inaad ka fikirto sababta heerarka go'doominta loogu baahan yahay gabi ahaanba iyo sida ay u shaqeeyaan.
Heerka go'doominta ee ugu sarreeya, SERIALIZE, macneheedu waxa weeye in natiijada wax kala iibsiga ee barbar socda la fuliyo ay la mid tahay fulintooda isku xigta, taas oo dammaanad qaadaysa maqnaanshaha shilalka.
Waxaan ku samayn karnaa tan anagoo adeegsanayna qufulo caqli badan oo ku jira ObjectScript, kuwaas oo leh adeegsiyo badan oo kala duwan: waxaad samayn kartaa mid joogto ah, kordhinaysa, quful badan amarka .
Heerarka go'doominta hoose waa ganacsi-offs loogu talagalay in lagu kordhiyo xawaaraha xogta.
Aan aragno sida aan ku gaari karno heerar kala duwan oo go'doon ah iyadoo la adeegsanayo qufullo.
Hawlwadeenkani wuxuu kuu ogolaanayaa inaad qaadato oo keliya ma aha quful gaar ah oo loo baahan yahay si loo beddelo xogta, laakiin waxa loogu yeero quful la wadaago, kuwaas oo qaadan kara dhowr qaybood oo isku mid ah marka ay u baahan yihiin inay akhriyaan xogta aan ahayn in la beddelo hababka kale inta lagu jiro habka akhriska.
Macluumaad dheeraad ah oo ku saabsan habka xannibista labada waji ee Ruushka iyo Ingiriisiga:
→
→
Dhibaatadu waxay tahay in inta lagu jiro wax kala iibsiga xaaladda xogta xogta ayaa laga yaabaa inay noqoto mid aan iswaafajin, laakiin xogtan aan waafaqsanayn waxay u muuqataa hababka kale. Sidee looga fogaado tan?
Isticmaalka qufullada, waxaanu abuuri doonaa daaqadaha muuqalka kaas oo xaalada xog ururintu ay ahaan doonto mid joogto ah. Iyo dhammaan gelitaanka daaqadaha muuqaalka ah ee gobolka lagu heshiiyey waxaa lagu xakameyn doonaa qufullo.
Qufulada la wadaago ee isla xogta ayaa ah dib loo isticmaali karo — dhowr habab ayaa qaadan kara. Qufulyadani waxay ka hortagaan hababka kale inay beddelaan xogta, i.e. waxaa loo isticmaalaa in lagu sameeyo daaqadaha xogta xogta ee joogtada ah.
Quful gaar ah ayaa loo isticmaalaa isbeddelada xogta - hal hab oo kaliya ayaa qaadi kara quful noocaas ah. Quful gaar ah waxaa qaadi kara:
- Nidaam kasta haddii xogtu ay xor tahay
- Kaliya nidaamka leh quful la wadaago oo ku saabsan xogtan oo ahayd tii ugu horreysay ee codsata quful gaar ah.

Daaqadda muuqaalka oo cidhiidhi ah, geeddi-socodyada kale ayaa dheereeya inay sugaan, laakiin inta badan xaaladda xogta xogta ee ku dhex jirta ayaa noqon karta.
AKHRISO_GUUL - Nuxurka heerkani waa in aan aragno oo kaliya xogta la go'aamiyay ee mawduucyada kale. Haddii xogta ku jirta macaamil kale aan wali la samayn, markaa waxaan aragnaa noockeedii hore.
Tani waxay noo ogolaanaysaa inaan is barbar dhigno shaqada halkii aan sugi lahayn in qufulka la sii daayo.
La'aanteed khiyaano gaar ah, ma awoodi doono inaan aragno nuqulkii hore ee xogta IRIS, markaa waa inaan sameynaa qufullo.
Sidaa darteed, waa inaan isticmaalnaa qufulo la wadaago si aan ugu oggolaanno in xogta la akhriyo oo keliya waqtiyada joogtada ah.
Aynu nidhaahno waxaan leennahay user base ^qof lacag isu wareejinaya.
Daqiiqadii ka soo wareejinta qofka 123 ilaa qof 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)Xilliga codsashada qaddarka lacagta ee qofka 123 ka hor inta aan la jarin waa in ay la socotaa xannibaad gaar ah (caadi ahaan):
LOCK +^person(123)
Write ^person(123)Oo haddii aad u baahan tahay inaad muujiso heerka koontada akoonkaaga gaarka ah, markaa waxaad isticmaali kartaa quful la wadaago ama ha isticmaalin gabi ahaanba:
LOCK +^person(123)#”S”
Write ^person(123)Si kastaba ha noqotee, haddii aan u maleyno in hawlgallada keydka macluumaadka la sameeyo isla markiiba (aan ku xasuusiyo in caalamiyadu ay yihiin qaab-dhismeed heer hoose ah oo aad u hooseeya marka loo eego miiska xiriirka), markaa baahida heerkan ayaa hoos u dhacda.
AKHRISO LA SOO NOQON KARO - Heerkan go'doonku wuxuu ogolaanayaa in la akhriyo xogta badan oo lagu beddeli karo wax kala iibsiga.
Sidaas awgeed, waa in aan xidhno quful la wadaago akhrinta xogta aan beddelno iyo quful gaar ah oo ku saabsan xogta aan beddelno.
Nasiib wanaag, hawlwadeenka LOCK wuxuu kuu oggolaanayaa inaad si faahfaahsan u taxdo dhammaan qufullada lagama maarmaanka ah, kuwaas oo ay jiri karaan wax badan, hal bayaan.
LOCK +^person(123, amount)#”S”
чтение ^person(123, amount)hawlgallada kale (waqtigan dunta isbarbar-bar yaacaysa waxay isku dayaan inay beddelaan ^qof(123, qaddar), laakiin ma awoodaan)
LOCK +^person(123, amount)
изменение ^person(123, amount)
LOCK -^person(123, amount)
чтение ^person(123, amount)
LOCK -^person(123, amount)#”S”Marka la qorayo qufullada ay kala soocaan rido, waxaa loo qaataa si isdaba joog ah, laakiin haddii aad sidan sameyso:
LOCK +(^person(123),^person(242))markaas ayaa hal mar la wada qaataa atomically.
SERIALISEY - Waa inaan dejinnaa quful si ugu dambeyntii dhammaan wax kala iibsiga ee xogta guud loo fuliyo si isdaba joog ah. Habkan, inta badan qufulada waa in ay ahaadaan kuwo gaar ah oo laga soo qaatay meelaha ugu yar ee waxqabadka.
Haddii aan ka hadalno lacag-bixinnada ^ qof caalami ah, markaa kaliya heerka go'doominta SERIALIZE waa la aqbali karaa, maadaama lacagta ay tahay in si adag loo isticmaalo, haddii kale waxaa suurtagal ah in la isticmaalo qadar isku mid ah dhowr jeer.
4. Waarta
Waxaan sameeyay baaritaanno si adag loo gooyay weelka anigoo isticmaalaya
docker kill my-irisSaldhiggu si wanaagsan ayuu ugu dul-qaatay. Wax dhibaato ah lama aqoonsan
gunaanad
Caalamka, InterSystems IRIS waxay leedahay taageero wax kala iibsiga. Runtii waa atomic waana la isku halayn karaa. Si loo hubiyo joogtaynta xogta ku salaysan caalamka, dadaalada barnaamijka iyo isticmaalka wax kala iibsiga ayaa loo baahan yahay, maadaama aysan lahayn dhismayaal adag oo la dhisay sida furayaasha shisheeye.
Heerka go'doominta ee caalamiga ah iyada oo aan la isticmaalin qufullo waa AKHRISO AAN LAGU QABAN karin, marka la isticmaalayo qufulada waxaa la hubin karaa ilaa heerka SERIALIZE.
Saxnaanta iyo xawliga wax kala iibsiga ee caalamka in badan waxa ay ku xidhan tahay xirfada barnaamij-qaadaha: mar kasta oo la isticmaalo qufulo badan oo la wadaago marka wax la akhrinayo, waxa sare u kaca heerka go'doominta, iyo inta si cidhiidhi ah loo qaato qufulada gaarka ah, ayaa si dhakhso ah u hawlgasha.
Source: www.habr.com
