Zochita mu InterSystems IRIS padziko lonse lapansi

Zochita mu InterSystems IRIS padziko lonse lapansiInterSystems IRIS DBMS imathandizira zida zosangalatsa zosungirako deta - globals. M'malo mwake, awa ndi makiyi amitundu yambiri okhala ndi zinthu zina zowonjezera monga ma transaction, ntchito zachangu zodutsa mitengo ya data, maloko ndi chilankhulo chake cha ObjectScript.

Werengani zambiri zapadziko lonse lapansi pamutu wakuti “Padziko Lonse ndi malupanga amtengo wapatali osunga deta”:

Mitengo. Gawo 1
Mitengo. Gawo 2
Zosanjikiza pang'ono. Gawo 3

Ndidachita chidwi ndi momwe ma transaction amagwiritsidwira ntchito padziko lonse lapansi, zomwe zilipo. Kupatula apo, iyi ndi njira yosiyana kwambiri yosungira deta kuposa matebulo wamba. Mulingo wotsika kwambiri.

Monga zimadziwika kuchokera ku chiphunzitso cha nkhokwe zaubwenzi, kukhazikitsidwa bwino kwa zochitika kuyenera kukwaniritsa zofunikira. ACID:

Atomiki (atomiki). Zosintha zonse zomwe zachitika pakugulitsako kapena palibe konse zimalembedwa.

C - kusasinthasintha. Ntchito ikatha, zomveka za nkhokwe ziyenera kukhala zogwirizana mkati. Munjira zambiri izi zimakhudza wopanga mapulogalamu, koma pankhani ya SQL databases imakhudzanso makiyi akunja.

Ine - Kudzipatula. Zochita zoyendera limodzi siziyenera kukhudzana.

D - Chokhazikika. Pambuyo pomaliza bwino ntchitoyo, mavuto omwe ali m'munsi (kulephera kwa mphamvu, mwachitsanzo) sayenera kusokoneza deta yomwe yasinthidwa ndi malonda.

Padziko lonse lapansi ndizinthu zopanda ubale. Iwo anapangidwa kuti azithamanga kwambiri pa hardware yochepa kwambiri. Tiyeni tiwone kukhazikitsidwa kwa ma transactions padziko lonse lapansi chithunzi chovomerezeka cha IRIS docker.

Kuthandizira zochitika mu IRIS, malamulo otsatirawa amagwiritsidwa ntchito: TSTART, TCOMMIT, TROLLBACK.

1. Atomiki

Njira yosavuta yowonera ndi atomiki. Timayang'ana kuchokera ku database console.

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

Kenako timamaliza:

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

Timapeza:

1 2 3

Zonse zili bwino. Atomicity imasungidwa: zosintha zonse zimalembedwa.

Tiyeni tiwunikire ntchitoyi, yambitsani cholakwika ndikuwona momwe ntchitoyo imasungidwira, pang'ono kapena ayi.

Tiyeni tionenso mphamvu ya atomiki:

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

Kenako tidzayimitsa chidebecho mwamphamvu, ndikuyambitsa ndikuwona.

docker kill my-iris

Lamuloli limakhala lofanana ndi kutseka mwamphamvu, chifukwa limatumiza chizindikiro cha SIGKILL kuyimitsa ntchitoyi nthawi yomweyo.

Mwina ntchitoyo idasungidwa pang'ono?

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

- Ayi, sichinapulumuke.

Tiyeni tiyese 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)

Palibe chomwe chapulumuka.

2. Kusasinthasintha

Popeza m'madawunidwe okhudzana ndi zinthu zapadziko lonse lapansi, makiyi amapangidwanso padziko lonse lapansi (ndiroleni ndikukumbutseni kuti padziko lonse lapansi ndi gawo laling'ono losungira deta kuposa tebulo lachiyanjano), kuti mukwaniritse zofunikira, kusintha kwa kiyi kuyenera kuphatikizidwa. muzochitika zofanana ndi kusintha kwapadziko lonse lapansi.

Mwachitsanzo, tili ndi ^munthu wapadziko lonse, momwe timasungiramo umunthu ndipo timagwiritsa ntchito TIN ngati kiyi.

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

Kuti tifufuze mwachangu ndi dzina lomaliza ndi dzina, tidapanga ^index key.

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

Kuti database ikhale yofanana, tiyenera kuwonjezera munthu motere:

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

Chifukwa chake, pochotsa tiyenera kugwiritsanso ntchito:

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

Mwa kuyankhula kwina, kukwaniritsa kufunikira kwa kusasinthasintha kumakhazikika pamapewa a wopanga mapulogalamu. Koma zikafika zapadziko lonse lapansi, izi ndizabwinobwino, chifukwa cha kutsika kwawo.

3. Kudzipatula

Apa ndi pamene zilombo zimayambira. Ogwiritsa ntchito ambiri nthawi imodzi amagwira ntchito pa database yomweyo, akusintha deta yomweyo.

Mkhalidwewu ndi wofanana ndi pamene ogwiritsa ntchito ambiri nthawi imodzi amagwira ntchito ndi chikhomo chomwecho ndikuyesera kupanga zosintha pamafayilo ambiri nthawi imodzi.

Dongosolo la database liyenera kukonza zonse munthawi yeniyeni. Poganizira kuti m'makampani akuluakulu pali ngakhale munthu wapadera yemwe ali ndi udindo woyang'anira mtundu (kuphatikiza nthambi, kuthetsa mikangano, ndi zina zotero), ndipo nkhokwe iyenera kuchita zonsezi mu nthawi yeniyeni, zovuta za ntchitoyo ndi kulondola kwa ndondomekoyi. kapangidwe ka database ndi ma code omwe amawathandizira.

Ma database sangathe kumvetsa tanthauzo la zomwe ogwiritsa ntchito amachitira pofuna kupewa mikangano ngati akugwira ntchito pa deta yomweyo. Itha kungosintha chinthu chimodzi chomwe chikusemphana ndi china, kapena kuzichita motsatana.

Vuto lina ndiloti panthawi yochita malonda (asanayambe kudzipereka), chikhalidwe cha database chikhoza kukhala chosagwirizana, choncho ndizofunika kuti zochitika zina zisakhale ndi mwayi wosagwirizana ndi malo osungirako zinthu, omwe amakwaniritsidwa muzosungirako zaubale. m'njira zambiri: kupanga zithunzithunzi, mizere yosinthika yambiri ndi zina.

Pochita zochitika mofananira, ndikofunikira kwa ife kuti zisasokoneze wina ndi mnzake. Ichi ndi katundu wodzipatula.

SQL imatanthawuza magawo 4 odzipatula:

  • WERENGANI WOSAVOMEREZEDWA
  • WERENGANI WODZIPEREKA
  • ZOWEREKEDWA WERENGANI
  • SERIALIZABLE

Tiyeni tione mlingo uliwonse padera. Ndalama zoyendetsera gawo lililonse zimakula pafupifupi mokulira.

WERENGANI WOSAVOMEREZEDWA - ichi ndi mlingo wotsika kwambiri wodzipatula, koma nthawi yomweyo mofulumira kwambiri. Zochita zitha kuwerenga zosintha zina ndi zina.

WERENGANI WODZIPEREKA ndi mlingo wotsatira wa kudzipatula, umene uli kulolerana. Zochita sizingawerenge zosintha za wina ndi mnzake musanachite, koma amatha kuwerenga zosintha zomwe zidachitika pambuyo pakuchita.

Ngati tili ndi nthawi yayitali ya T1, yomwe timachitapo T2, T3 ... Tn, yomwe inkagwira ntchito ndi deta yofanana ndi T1, ndiye popempha deta mu T1 tidzapeza zotsatira zosiyana nthawi iliyonse. Chodabwitsa ichi chimatchedwa kuwerenga kosabwerezabwereza.

ZOWEREKEDWA WERENGANI - pamlingo wodzipatula uwu tilibe chodabwitsa cha kuwerenga kosabwerezabwereza, chifukwa pempho lililonse kuti liwerenge deta, chithunzithunzi chazotsatira chimapangidwa ndipo chikagwiritsidwanso ntchito pazomwezi, deta kuchokera pachithunzichi. amagwiritsidwa ntchito. Komabe, ndizotheka kuwerenga deta ya phantom pamlingo wodzipatula uwu. Izi zikutanthauza kuwerenga mizere yatsopano yomwe idawonjezedwa ndi zochitika zofananira.

SERIALIZABLE - mulingo wapamwamba kwambiri wa insulation. Zimadziwika kuti deta yomwe imagwiritsidwa ntchito mwanjira iliyonse (kuwerenga kapena kusintha) imapezeka kuzinthu zina pokhapokha pomaliza ntchito yoyamba.

Choyamba, tiyeni tiwone ngati pali kudzipatula kwa ntchito pakuchitapo kanthu kuchokera ku ulusi waukulu. Tiyeni titsegule mawindo a 2 terminal.

Kill ^t

Write ^t(1)
2

TSTART
Set ^t(1)=2

Palibe kudzipatula. Ulusi wina ukuwona zomwe wachiwiri amene adatsegula malondawo akuchita.

Tiyeni tiwone ngati zochitika zamitundu yosiyanasiyana zikuwona zomwe zikuchitika mkati mwawo.

Tiyeni titsegule mazenera a 2 terminal ndikutsegula 2 zosinthana mofanana.

kill ^t
TSTART
Write ^t(1)
3

TSTART
Set ^t(1)=3

Zochita zofananira zimawona data ya wina ndi mnzake. Chifukwa chake, tili ndi zophweka, komanso zachangu kwambiri zodzipatula, WERENGANI ZOSAVUTA.

M'malo mwake, izi zitha kuyembekezeredwa kwa mayiko apadziko lonse lapansi, omwe ntchito zake zakhala zofunikira nthawi zonse.

Nanga bwanji ngati tifunika kudzipatula pakuchita zinthu padziko lonse lapansi?

Apa muyenera kuganizira chifukwa chake magawo odzipatula amafunikira konse komanso momwe amagwirira ntchito.

Mulingo wapamwamba kwambiri wodzipatula, SERIALIZE, umatanthauza kuti zotsatira za zochitika zomwe zimachitika mofananira ndizofanana ndi kuphedwa kwawo motsatizana, zomwe zimatsimikizira kusagundana.

Titha kuchita izi pogwiritsa ntchito maloko anzeru mu ObjectScript, omwe ali ndi ntchito zosiyanasiyana: mutha kuchita pafupipafupi, mowonjezera, kutseka kangapo ndi lamulo. LOCK.

Miyezo yotsika yodzipatula ndi malonda opangidwa kuti awonjezere liwiro la database.

Tiyeni tiwone momwe tingakwaniritsire magawo osiyanasiyana odzipatula pogwiritsa ntchito maloko.

Woyendetsa uyu amakulolani kuti musatenge maloko okhawo omwe amafunikira kusintha deta, koma otchedwa maloko omwe amagawana nawo, omwe angatenge ulusi wambiri mofanana pamene akufunikira kuwerenga deta yomwe sayenera kusinthidwa ndi njira zina panthawi yowerengera.

Zambiri za njira yotsekereza magawo awiri mu Russian ndi Chingerezi:

Kutsekereza kwagawo ziwiri
Kutseka kwa magawo awiri

Chovuta ndi chakuti panthawi yamalonda dziko la database likhoza kukhala losagwirizana, koma deta yosagwirizanayi ikuwoneka ndi njira zina. Kodi kupewa izi?

Pogwiritsa ntchito maloko, tipanga mazenera owoneka momwe mawonekedwe a database azikhala ofanana. Ndipo mwayi wonse wowonekera pamawindo oterowo a dziko logwirizana udzayendetsedwa ndi maloko.

Maloko ogawana pa data yomweyi amatha kugwiritsidwanso ntchito-njira zingapo zitha kuwatenga. Maloko awa amalepheretsa njira zina kusintha deta, i.e. amagwiritsidwa ntchito kupanga windows of consistent database state.

Maloko apadera amagwiritsidwa ntchito pakusintha kwa data - njira imodzi yokha ingatenge loko. Loko lokhazikika litha kutengedwa ndi:

  1. Njira iliyonse ngati deta ndi yaulere
  2. Njira yokhayo yomwe ili ndi loko yogawana pa datayi ndipo inali yoyamba kufunsa loko yokha.

Zochita mu InterSystems IRIS padziko lonse lapansi

Kuchepetsa zenera lowonekera, njira zina zimayenera kudikirira, koma kusasinthika kwadongosolo la database mkati mwake kungakhale.

READ_COMMITTED - Chofunika kwambiri pamlingo uwu ndikuti timangowona deta yodzipereka kuchokera ku ulusi wina. Ngati deta muzochitika zina sizinapangidwe, ndiye kuti tikuwona mtundu wake wakale.

Izi zimatipangitsa kufananiza ntchitoyo m'malo modikirira kuti loko itulutsidwe.

Popanda zidule zapadera, sitingathe kuwona mtundu wakale wa data mu IRIS, chifukwa chake tidzayenera kuchita ndi loko.

Chifukwa chake, tidzayenera kugwiritsa ntchito maloko omwe timagawana nawo kuti tilole kuti deta iwerengedwe panthawi yofanana.

Tiyerekeze kuti tili ndi ogwiritsa ntchito ^munthu amene amasamutsa ndalama kwa wina ndi mnzake.

Nthawi yosuntha kuchokera kwa munthu 123 kupita kwa munthu 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)

Nthawi yopempha kuchuluka kwa ndalama kuchokera kwa munthu 123 musanabweze ngongole iyenera kutsagana ndi chipika chokha (mwachisawawa):

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

Ndipo ngati mukufuna kuwonetsa momwe akaunti yanu ilili muakaunti yanu, mutha kugwiritsa ntchito loko yogawana kapena osagwiritsa ntchito konse:

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

Komabe, ngati tikuganiza kuti ntchito za database zimachitidwa nthawi yomweyo (ndiroleni ndikukumbutseni kuti padziko lonse lapansi ndi gawo lotsika kwambiri kuposa tebulo lachiyanjano), ndiye kuti kufunikira kwa gawoli kumachepa.

ZOWEREKEDWA WERENGANI - Mulingo wodzipatula uwu umalola kuwerengedwa kangapo kwa data yomwe ingasinthidwe ndi zochitika zomwe zimachitika nthawi imodzi.

Chifukwa chake, tidzayenera kuyika loko yogawana powerenga zomwe timasintha komanso zotsekera zokhazokha zomwe timasintha.

Mwamwayi, woyendetsa LOCK amakulolani kuti mulembe mwatsatanetsatane maloko onse ofunikira, omwe angakhale ambiri, m'mawu amodzi.

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

ntchito zina (panthawiyi ulusi wofananira umayesa kusintha ^munthu(123, kuchuluka), koma sangathe)

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

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

Mukalemba maloko olekanitsidwa ndi ma koma, amatengedwa motsatana, koma mukachita izi:

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

ndiye iwo amatengedwa atomiki onse mwakamodzi.

SERIALIZE - tidzakhazikitsa maloko kuti pamapeto pake zonse zomwe zili ndi data wamba zizichitika motsatana. Panjira iyi, maloko ambiri ayenera kukhala okhazikika ndikutengedwa kumadera ang'onoang'ono padziko lonse lapansi kuti agwire ntchito.

Ngati tilankhula za kubweza ndalama padziko lonse lapansi ^munthu, ndiye kuti gawo lodzipatula la SERIALIZE ndilovomerezeka kwa izo, popeza ndalama ziyenera kugwiritsidwa ntchito motsatizana, apo ayi ndizotheka kugwiritsa ntchito ndalama zomwezo kangapo.

4. Kukhalitsa

Ndidayesa ndikudula mwamphamvu chidebe pogwiritsa ntchito

docker kill my-iris

Maziko adawalekerera bwino. Palibe mavuto omwe adadziwika.

Pomaliza

Kwapadziko lonse lapansi, InterSystems IRIS ili ndi chithandizo chochita. Iwo alidi atomiki ndi odalirika. Kuti muwonetsetse kusasinthika kwa database yozikidwa pa dziko lonse lapansi, zoyeserera zamapulogalamu ndikugwiritsa ntchito ma transaction ndizofunikira, chifukwa zilibe zovuta zomangidwira monga makiyi akunja.

Mulingo wodzipatula wapadziko lonse lapansi popanda kugwiritsa ntchito maloko NDIWERENGA ONCOMMITED, ndipo mukamagwiritsa ntchito maloko amatha kutsimikiziridwa mpaka mulingo wa SERIALIZE.

Kulondola ndi kufulumira kwa zochitika zapadziko lonse lapansi kumadalira kwambiri luso la wopanga mapulogalamu: maloko omwe amagwiritsidwa ntchito kwambiri powerenga, kukwezeka kwa kudzipatula, komanso maloko ocheperako amatengedwa, ntchitoyo imathamanga kwambiri.

Source: www.habr.com

Kuwonjezera ndemanga