Transactions muInterSystems IRIS globals

Transactions muInterSystems IRIS globalsIyo InterSystems IRIS DBMS inotsigira zvinonakidza zvimiro zvekuchengeta data - globals. Chaizvoizvo, aya makiyi e-multi-level ane zvimwe zvakasiyana-siyana zvekuwedzera muchimiro chekutengeserana, kukurumidza mabasa ekupfuura nemiti yedata, makiyi nemutauro wayo weObjectScript.

Verenga zvakawanda nezvepasi rose munhevedzano yezvinyorwa "Globals ipfuma- minondo yekuchengetedza data":

Miti. Chikamu 1
Miti. Chikamu 2
Sparse arrays. Chikamu 3

Ndakatanga kufarira mabatirwo anoitwa mupasi rose, ndeapi maficha aripo. Mushure mezvose, ichi chimiro chakasiyana zvachose chekuchengeta data kupfuura matafura akajairwa. Yakanyanya pasi mwero.

Sezvinozivikanwa kubva mudzidziso yehukama dhatabhesi, kuita kwakanaka kwekutengeserana kunofanirwa kugutsa zvinodiwa. ACID:

Atomic (atomicity). Shanduko dzese dzakaitwa mukutengeserana kana hapana zvachose dzakarekodhwa.

C - Kusagadzikana. Mushure mekunge kutengeserana kwapera, iyo inonzwisisika mamiriro edhatabhesi inofanirwa kuenderana mukati. Munzira dzakawanda chinodiwa ichi chine chekuita nemugadziri, asi kana iri SQL dhatabhesi inewo makiyi ekunze.

Ini - Isolate. Transactions iri kufamba mukuwirirana haifanire kukanganisa mumwe nemumwe.

D - Durable. Mushure mekubudirira kupedzwa kwekutengeserana, matambudziko pamazinga akaderera (kukundikana kwesimba, somuenzaniso) haafaniri kukanganisa data yakashandurwa nekutengeserana.

Globals isiri-yehukama data zvimiro. Iwo akagadzirwa kuti amhanye zvakanyanya pane shoma Hardware. Ngatitarisei kuitiswa kwekutengeserana mupasi rose uchishandisa official IRIS docker mufananidzo.

Kutsigira kutengeserana muIRIS, mirairo inotevera inoshandiswa: TSTART, TCOMMIT, TROLLBACK.

1. Atomicity

Nzira iri nyore yekutarisa ndeye atomicity. Isu tinotarisa kubva kune database console.

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

Zvadaro tinopedzisa:

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

Tinowana:

1 2 3

Zvese zvakanaka. Atomicity inochengetedzwa: shanduko dzese dzakarekodhwa.

Ngatiomese basa, suma chikanganiso uye tione kuti kutengeserana kunochengetwa sei, zvishoma kana kwete zvachose.

Ngationgororei atomicity zvakare:

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

Ipapo isu tichamisa nechisimba chigadziko chacho, tochivhura uye ona.

docker kill my-iris

Uyu murairo wakada kuenzana nechisimba kuvhara, sezvo inotumira SIGKILL siginecha kumisa maitiro nekukasika.

Zvichida kutengeserana kwakachengetedzwa zvishoma?

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

- Kwete, haina kupona.

Ngatiedzei rollback command:

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)

Hapana chakapona kana.

2. Kuwirirana

Sezvo mumadhatabhesi akavakirwa papasi rose, makiyi anogadzirwawo papasi rose (regai ndikuyeuchidzei kuti pasi rose chimiro chepasi chekuchengetedza data pane tafura yehukama), kusangana nezvinodiwa zvekuenderana, shanduko yekiyi inofanirwa kuverengerwa. mukutengeserana kwakafanana nekushanduka kwepasi rose.

Semuenzaniso, tine ^munhu wepasi rose, watinochengeta hunhu uye tinoshandisa TIN sekiyi.

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

Kuti tiwane kutsvaga nekukurumidza nezita rekupedzisira uye rekutanga, takagadzira ^index kiyi.

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

Kuti dhatabhesi rienderane, isu tinofanirwa kuwedzera iyo persona seizvi:

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

Saizvozvo, pakudzima isu tinofanirawo kushandisa kutengeserana:

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

Mune mamwe mazwi, kuzadzisa chinodiwa chekuenderana kunotsamira zvachose pamapfudzi emugadziri. Asi kana zvasvika kune zvepasi rose, izvi zvakajairika, nekuda kwehunhu hwadzo hwepasi.

3. Kuzviparadzanisa nevamwe

Apa ndipo panotangira sango. Vazhinji vashandisi vanoshanda panguva imwe chete pane imwechete database, vachichinja iyo yakafanana data.

Mamiriro acho akafanana neapo vashandisi vazhinji vanoshanda panguva imwe chete neiyo kodhi kodhi repository uye kuyedza kuita panguva imwe chete shanduko kune akawanda mafaera kamwechete.

Iyo dhatabhesi inofanirwa kuzvigadzirisa zvese munguva chaiyo. Tichifunga kuti mumakambani akakomba kune kunyange munhu akakosha ane basa rekutonga kweshanduro (yekubatanidza matavi, kugadzirisa kusawirirana, nezvimwewo), uye dhatabhesi inofanirwa kuita zvese izvi munguva chaiyo, kuoma kwebasa uye kurongeka kweiyo. dhizaini yedatabase uye kodhi inoishandira.

Iyo dhatabhesi haigone kunzwisisa zvinorehwa nezviito zvinoitwa nevashandisi kuitira kudzivirira kukakavara kana vari kushanda pane imwechete data. Inogona chete kugadzirisa kutengeserana kumwe kunopokana neimwe, kana kuzviita zvakatevedzana.

Rimwe dambudziko nderekuti panguva yekuitwa kwekutengeserana (kusati kwaitwa), iyo dhatabhesi inogona kunge isingaenderane, saka zvinoshuvira kuti mamwe madhipatimendi arege kuwana iyo isingaenderane mamiriro eiyo dhatabhesi, iyo inowanikwa mune zvehukama dhatabhesi. nenzira dzakawanda: kugadzira snapshots, multi-versioning mitsara uye nezvimwe.

Paunenge uchiita kutengeserana kwakafanana, zvakakosha kwatiri kuti varege kupindirana. Iyi ndiyo pfuma yekuzviparadzanisa nevamwe.

SQL inotsanangura 4 nhanho dzekuzviparadzanisa nevamwe:

  • VERENGA UNCOMMTTED
  • VERENGA KUZVIPIRA
  • ZVINODZORERWA VERENGA
  • SERIALIZABLE

Ngatitarisei padanho rega rega zvakasiyana. Mari yekushandisa nhanho imwe neimwe inokura zvakanyanya.

VERENGA UNCOMMTTED - iyi ndiyo yakaderera nhanho yekuzviparadzanisa nevamwe, asi panguva imwechete inokurumidza. Transactions inogona kuverenga shanduko dzakaitwa nemumwe.

VERENGA KUZVIPIRA ndiyo nhanho inotevera yekuzviparadzanisa nevamwe, inova chibvumirano. Transaction haigone kuverenga shanduko yemumwe nemumwe isati yaita, asi vanogona kuverenga chero shanduko dzakaitwa mushure mekuita.

Kana tine kutengeserana kwenguva refu T1, panguva iyo kuzvipira kwakaitika mukutengeserana T2, T3 ... Tn, iyo yakashanda ne data yakafanana neT1, zvino kana tichikumbira data muT1 tichawana mhinduro yakasiyana nguva imwe neimwe. Chiitiko ichi chinodaidzwa kuti kuverenga kusingadzokororwe.

ZVINODZORERWA VERENGA - mune iyi nhanho yekuzviparadzanisa isu hatina chiitiko chekuverenga kusingadzokororwe, nekuda kwekuti pachikumbiro chega chega kuverenga data, mufananidzo weiyo data data inogadzirwa uye kana ikashandiswazve mukutengeserana kumwe chete, iyo data kubva muchidimbu. inoshandiswa. Nekudaro, zvinokwanisika kuverenga data yephantom padanho rino rekuzviparadzanisa nevamwe. Izvi zvinoreva kuverenga mitsetse mitsva iyo yakawedzerwa neparallel zvakaitwa kutengeserana.

SERIALIZABLE - iyo yepamusoro-soro yekudzivirira. Iyo inoratidzirwa nenyaya yekuti data inoshandiswa nenzira ipi neipi mukutengeserana (kuverenga kana kuchinja) inowanika kune mamwe maitiro chete mushure mekupedzwa kwekutanga kwekutanga.

Chekutanga, ngationei kana paine kuparadzaniswa kwemaitiro mukutengeserana kubva kune huru shinda. Ngativhure 2 terminal windows.

Kill ^t

Write ^t(1)
2

TSTART
Set ^t(1)=2

Hapana kuparadzaniswa. Imwe shinda inoona zviri kuitwa nemumwe wechipiri akavhura transaction.

Ngationei kana matransactions eshinda dzakasiyana achiona zviri kuitika mukati mavo.

Ngativhure 2 terminal windows uye tivhure 2 transactions mune yakafanana.

kill ^t
TSTART
Write ^t(1)
3

TSTART
Set ^t(1)=3

Parallel transactions ona data yemumwe nemumwe. Saka, isu takawana iyo yakapfava, asi zvakare inokurumidza danho rekuzviparadzanisa nevamwe, VERENGA USINA KUPIRWA.

Muchidimbu, izvi zvinogona kutarisirwa pasi rose, izvo kuita kwagara kuri kwekutanga.

Ko kana tichida mwero wepamusoro wekuzviparadzanisa nevamwe mukushanda pane zvepasirese?

Pano iwe unofanirwa kufunga nezve nei mazinga ekuzviparadzanisa achidiwa zvachose uye kuti anoshanda sei.

Iyo yepamusoro yekuzviparadzanisa nhanho, SERIALIZE, inoreva kuti mhedzisiro yekutengeserana kunoitwa nenzira yakafanana yakaenzana nekuita kwavo kutevedzana, izvo zvinovimbisa kusavapo kwekudhumhana.

Tinogona kuita izvi tichishandisa makiyi akangwara muObjectScript, ane akawanda akasiyana mashandisiro: unogona kuita nguva dzose, kuwedzera, kukiya kwakawanda nemurairo. LOCK.

Akaderera ega ega mazinga ekutengesa akagadzirirwa kuwedzera dhatabhesi kumhanya.

Ngationei kuti tingaite sei nhanho dzakasiyana dzekuzviparadzanisa nevamwe tichishandisa makiyi.

Uyu opareta anotendera iwe kuti utore kwete chete ega makiyi anodiwa kuti uchinje data, asi anonzi akagovaniswa makiyi, ayo anogona kutora akati wandei tambo dzakafanana paanoda kuverenga data risingafanirwe kuchinjwa nemamwe maitiro panguva yekuverenga.

Ruzivo rwakawanda nezve nzira yekuvhara-chikamu muRussia neChirungu:

Kuvhara kwezvikamu zviviri
Kuvhara kwezvikamu zviviri

Dambudziko nderokuti panguva yekutengeserana mamiriro e database angave asinganzwisisiki, asi iyi data isingaenderani inoonekwa kune mamwe maitiro. Nzira yekudzivirira sei izvi?

Tichishandisa makiyi, tichagadzira mahwindo ekuonekwa umo mamiriro edhatabhesi achaenderana. Uye kuwanika kwese kune mahwindo akadaro ekuonekwa kwehurumende yakabvumiranwa ichadzorwa nekiyi.

Makiyi akagovaniswa pane imwechete data anogona kushandiswazve - akati wandei maitiro anogona kuvatora. Aya makiyi anodzivirira mamwe maitiro kubva pakuchinja data, i.e. ivo vanoshandiswa kugadzira mahwindo ezvinoenderana database state.

Exclusive kukiya anoshandiswa pakuchinja data - chete maitiro anogona kutora kukiya kwakadaro. Kukiya kwakasarudzika kunogona kutorwa ne:

  1. Chero maitiro kana data iri yemahara
  2. Iyo chete maitiro ane kiyi yakagovaniswa pane iyi data uye yaive yekutanga kukumbira yakasarudzika kiyi.

Transactions muInterSystems IRIS globals

Iyo yakatetepa hwindo rekuonekwa, iyo yakareba mamwe maitiro anofanirwa kuimirira, asi zvakanyanya kuenderana mamiriro eiyo dhatabhesi mukati mayo anogona kuve.

VERENGA_COMMITTED - chakakosha chenhanho iyi ndechekuti isu tinongoona yakazvipira data kubva kune dzimwe tambo. Kana iyo data mune imwe kutengeserana isati yaitwa, saka tinoona yayo yekare vhezheni.

Izvi zvinotibvumira kuenzanisa basa pane kumirira kukiya kusunungurwa.

Pasina matipi akakosha, hatizokwanisi kuona iyo yekare vhezheni yedata muIRIS, saka isu tichafanirwa kuita nemakiyi.

Saizvozvo, isu tichafanirwa kushandisa makiyi akagovaniswa kuti tibvumire data kuverengwa chete panguva dzekuenderana.

Ngatitii tine mushandisi base ^munhu anoendesa mari kune mumwe nemumwe.

Nguva yekufambisa kubva kumunhu 123 kuenda kumunhu 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)

Iyo nguva yekukumbira huwandu hwemari kubva kumunhu 123 usati wadhibhita inofanirwa kuperekedzwa neiyo yakasarudzika block (nekusagadzika):

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

Uye kana iwe uchida kuratidza chimiro cheakaundi muakaundi yako pachako, saka unogona kushandisa kiyi yakagovaniswa kana kusaishandisa zvachose:

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

Nekudaro, kana isu tikafungidzira kuti dhatabhesi mashandiro anoitwa kanenge ipapo (rega ndikuyeuchidze kuti pasi rose chimiro chakaderera pane tafura yehukama), ipapo kudiwa kwedanho iri kunodzikira.

ZVINODZORERWA VERENGA -Iri nhanho yekuzviparadzanisa nevamwe inobvumira kuverenga kwakawanda kwedata iro rinogona kugadziridzwa nekuita pamwe chete.

Saizvozvo, isu tichafanirwa kuisa kiyi yakagovaniswa pakuverenga iyo data yatinoshandura uye yakasarudzika makiyi pane data ratinochinja.

Neraki, iyo LOCK opareta inobvumidza iwe kunyora zvakadzama makiyi ese anodiwa, ayo anogona kuve akawanda, mune chimwe chirevo.

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

mamwe maoperation (panguva ino tambo dzakafanana dzinoedza kushandura ^munhu(123, huwandu), asi hazvigone)

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

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

Kana uchinyora makiyi akaparadzaniswa nemakoma, anotorwa zvakatevedzana, asi ukaita izvi:

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

zvino vanotorwa maatomu ese kamwechete.

SERIALIZE - isu tichafanirwa kuseta makiyi kuitira kuti pakupedzisira zvese zvekutengesa zvine data zvakajairika zviitwe zvakatevedzana. Kune iyi nzira, makiyi mazhinji anofanirwa kuve ega uye anotorwa munzvimbo diki dzepasirese kuti dziite.

Kana isu tichitaura nezve kudhibhita mari mupasi rose ^munhu, saka chete iyo SERIALIZE yekuzviparadzanisa mwero inogamuchirwa kwairi, sezvo mari ichifanirwa kushandiswa zvakanyatsoteerana, zvikasadaro zvinokwanisika kushandisa mari yakafanana kakawanda.

4. Kugara kwenguva refu

Ndakaita bvunzo nekucheka kwakaoma kwegaba ndichishandisa

docker kill my-iris

Chigadziko chakavashivirira zvakanaka. Hapana matambudziko akaonekwa.

mhedziso

Zvepasi rose, InterSystems IRIS ine tsigiro yekutengeserana. Iwo atomic zvechokwadi uye akavimbika. Kuti ive nechokwadi chekuenderana kwedhatabhesi yakavakirwa papasi rose, kuedza kwevagadziri uye kushandiswa kwekutengeserana kunodiwa, sezvo isina yakaoma yakavakirwa-mukati makiyi ekunze.

Iyo yekuzviparadzanisa nhanho yepasirese pasina kushandisa makiyi VERENGA USINA KUPIRWA, uye kana uchishandisa makiyi inogona kuvimbiswa kusvika pachiyero cheSERIALIZE.

Iko kurongeka uye kumhanya kwekutengeserana papasirese zvakanyanya kunoenderana nehunyanzvi hwemugadziri: iyo yakawanda yakagovaniswa makiyi anoshandiswa pakuverenga, iyo yakakwirira mwero wekuzviparadzanisa nevamwe, uye iyo yakanyanya kuvharika makiyi anotorwa, ndiko kukurumidza kuita.

Source: www.habr.com

Voeg