Awọn iṣowo ni InterSystems IRIS globals

Awọn iṣowo ni InterSystems IRIS globalsInterSystems IRIS DBMS ṣe atilẹyin awọn ẹya ti o nifẹ fun titoju data - globals. Ni pataki, iwọnyi jẹ awọn bọtini ipele-pupọ pẹlu ọpọlọpọ awọn iwunilori afikun ni irisi awọn iṣowo, awọn iṣẹ iyara fun lilọ kiri awọn igi data, awọn titiipa ati ede ObjectScript tirẹ.

Ka diẹ sii nipa awọn agbaye ni jara ti awọn nkan “Awọn agbaye jẹ awọn ida-iṣura fun titoju data”:

Awọn igi. Apa 1
Awọn igi. Apa 2
Awọn akojọpọ fọnka. Apa 3

Mo nifẹ si bi awọn iṣowo ṣe ṣe imuse ni agbaye, kini awọn ẹya ti o wa. Lẹhinna, eyi jẹ eto ti o yatọ patapata fun titoju data ju awọn tabili deede lọ. Elo kekere ipele.

Gẹgẹbi a ti mọ lati imọran ti awọn data data ibatan, imuse ti o dara ti awọn iṣowo gbọdọ ni itẹlọrun awọn ibeere ACID:

A - Atomic (atomicity). Gbogbo awọn ayipada ti a ṣe ni idunadura tabi ko si rara rara ti wa ni igbasilẹ.

C - Iduroṣinṣin. Lẹhin ti idunadura kan pari, ipo ọgbọn ti data gbọdọ wa ni ibamu ninu inu. Ni ọpọlọpọ awọn ọna ibeere yii kan eleto, ṣugbọn ninu ọran ti awọn apoti isura data SQL o tun kan awọn bọtini ajeji.

I - Yasọtọ. Awọn iṣowo ti n ṣiṣẹ ni afiwe ko yẹ ki o kan ara wọn.

D - Ti o tọ. Lẹhin aṣeyọri aṣeyọri ti iṣowo kan, awọn iṣoro ni awọn ipele kekere (ikuna agbara, fun apẹẹrẹ) ko yẹ ki o ni ipa lori data ti o yipada nipasẹ idunadura naa.

Awọn agbaye jẹ awọn ẹya data ti kii ṣe ibatan. Wọn ṣe apẹrẹ lati ṣiṣẹ ni iyara pupọ lori ohun elo ti o lopin pupọ. Jẹ ká wo ni imuse ti lẹkọ ni globals lilo osise IRIS docker image.

Lati ṣe atilẹyin awọn iṣowo ni IRIS, awọn aṣẹ wọnyi ni a lo: Tbẹrẹ, TCOMMIT, TROLLBACK.

1. Atomity

Ọna to rọọrun lati ṣayẹwo ni atomity. A ṣayẹwo lati ibi ipamọ data.

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

Lẹhinna a pari:

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

A gba:

1 2 3

Ohun gbogbo dara. Atomity ti wa ni itọju: gbogbo awọn ayipada ti wa ni igbasilẹ.

Jẹ ki a ṣe idiju iṣẹ-ṣiṣe naa, ṣafihan aṣiṣe kan ki o wo bi o ti fipamọ idunadura naa, apakan tabi rara rara.

Jẹ ki a ṣayẹwo atomity lẹẹkansi:

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

Lẹhinna a yoo fi agbara mu apoti naa duro, ṣe ifilọlẹ ki o rii.

docker kill my-iris

Aṣẹ yii fẹrẹ jẹ deede si tiipa ipa, bi o ṣe fi ami ifihan SIGKILL ranṣẹ lati da ilana naa duro lẹsẹkẹsẹ.

Boya idunadura naa ti fipamọ ni apakan bi?

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

- Rara, ko ti ye.

Jẹ ki a gbiyanju aṣẹ yipo pada:

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)

Ko si ohun ti ye boya.

2. Iduroṣinṣin

Niwọn igba ti awọn apoti isura infomesonu ti o da lori agbaye, awọn bọtini tun ṣe lori awọn agbaye (jẹ ki n leti pe agbaye kan jẹ ipilẹ-ipele kekere fun titoju data ju tabili ibatan), lati pade ibeere aitasera, iyipada ninu bọtini gbọdọ wa pẹlu. ni kanna idunadura bi a ayipada ninu awọn agbaye.

Fún àpẹẹrẹ, a ní ^ ènìyàn kárí ayé, nínú èyí tí a ti tọ́jú àwọn àkópọ̀ ìwà tí a sì ń lò TIN gẹ́gẹ́ bí kọ́kọ́rọ́.

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

Lati le ni wiwa ni iyara nipasẹ orukọ idile ati orukọ akọkọ, a ṣe bọtini itọka ^.

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

Ni ibere fun data data lati wa ni ibamu, a gbọdọ ṣafikun eniyan bii eyi:

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

Nitorinaa, nigba piparẹ a gbọdọ tun lo idunadura kan:

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

Ni awọn ọrọ miiran, mimu ibeere ibamu duro patapata lori awọn ejika pirogirama. Ṣugbọn nigbati o ba de si awọn agbaye, eyi jẹ deede, nitori iseda ipele kekere wọn.

3. Iyapa

Eleyi ni ibi ti awọn wilds bẹrẹ. Ọpọlọpọ awọn olumulo nigbakanna ṣiṣẹ lori database kanna, yiyipada data kanna.

Ipo naa jẹ afiwera si nigbati ọpọlọpọ awọn olumulo ṣiṣẹ nigbakanna pẹlu ibi ipamọ koodu kanna ati gbiyanju lati ṣe awọn ayipada nigbakanna si ọpọlọpọ awọn faili ni ẹẹkan.

Data data yẹ ki o to gbogbo rẹ jade ni akoko gidi. Ṣiyesi pe ni awọn ile-iṣẹ to ṣe pataki paapaa eniyan pataki kan wa ti o ni iduro fun iṣakoso ẹya (fun sisọpọ awọn ẹka, ipinnu awọn ija, ati bẹbẹ lọ), ati pe data data gbọdọ ṣe gbogbo eyi ni akoko gidi, idiju ti iṣẹ-ṣiṣe ati atunse ti oniru database ati koodu ti o sin.

Ibi ipamọ data ko le loye itumọ awọn iṣe ti awọn olumulo ṣe lati yago fun awọn ija ti wọn ba n ṣiṣẹ lori data kanna. O le ṣe atunṣe iṣowo kan nikan ti o koju pẹlu omiiran, tabi ṣiṣẹ wọn lẹsẹsẹ.

Iṣoro miiran ni pe lakoko ipaniyan ti iṣowo kan (ṣaaju ki o to ṣẹ), ipo data data le jẹ aisedede, nitorinaa o jẹ iwunilori pe awọn iṣowo miiran ko ni iwọle si ipo aiṣedeede ti data data, eyiti o waye ni awọn apoti isura data ibatan. ni ọpọlọpọ awọn ọna: ṣiṣẹda snapshots, olona-versioning kana ati be be lo.

Nigbati o ba n ṣe awọn iṣowo ni afiwe, o ṣe pataki fun wa pe wọn ko dabaru pẹlu ara wọn. Eyi ni ohun-ini ti ipinya.

SQL n ṣalaye awọn ipele ipinya mẹrin:

  • KA AIKUN
  • KA TI ṢE
  • REPEATABLE KA
  • SERIALIZABLE

Jẹ ki a wo ipele kọọkan lọtọ. Awọn idiyele ti imuse ipele kọọkan dagba fẹrẹẹ gaan.

KA AIKUN - Eyi ni ipele ti o kere julọ ti ipinya, ṣugbọn ni akoko kanna iyara julọ. Awọn iṣowo le ka awọn iyipada ti ara wọn ṣe.

KA TI ṢE jẹ ipele ti o tẹle ti ipinya, eyiti o jẹ adehun. Awọn iṣowo ko le ka awọn iyipada kọọkan miiran ṣaaju ṣiṣe, ṣugbọn wọn le ka eyikeyi awọn ayipada ti o ṣe lẹhin ifaramo naa.

Ti a ba ni idunadura pipẹ T1, lakoko eyiti awọn iṣẹ ṣe waye ni awọn iṣowo T2, T3 ... Tn, eyiti o ṣiṣẹ pẹlu data kanna bi T1, lẹhinna nigba ti o ba beere data ni T1 a yoo gba abajade ti o yatọ ni igba kọọkan. Iṣẹlẹ yii ni a pe ni kika ti kii ṣe atunwi.

REPEATABLE KA - ni ipele ipinya yii a ko ni lasan ti kika ti kii ṣe atunwi, nitori otitọ pe fun ibeere kọọkan lati ka data, aworan ti data abajade ti ṣẹda ati nigbati o tun lo ni idunadura kanna, data lati aworan aworan. ti lo. Sibẹsibẹ, o ṣee ṣe lati ka data Phantom ni ipele ipinya yii. Eyi tọka si kika awọn ori ila tuntun ti a ṣafikun nipasẹ awọn iṣowo ifaramọ ni afiwe.

SERIALIZABLE - ipele ti o ga julọ ti idabobo. O jẹ ifihan nipasẹ otitọ pe data ti a lo ni eyikeyi ọna ni idunadura kan (kika tabi iyipada) di wa si awọn iṣowo miiran nikan lẹhin ipari ti iṣowo akọkọ.

Ni akọkọ, jẹ ki a ro boya ipinya ti awọn iṣẹ wa ninu idunadura kan lati okun akọkọ. Jẹ ki a ṣii awọn window ebute meji.

Kill ^t

Write ^t(1)
2

TSTART
Set ^t(1)=2

Ko si ipinya. Okùn kan wo ohun ti ẹni keji ti o ṣii idunadura n ṣe.

Jẹ ki a rii boya awọn iṣowo ti awọn okun oriṣiriṣi wo ohun ti n ṣẹlẹ ninu wọn.

Jẹ ki a ṣii awọn window ebute 2 ati ṣii awọn iṣowo 2 ni afiwe.

kill ^t
TSTART
Write ^t(1)
3

TSTART
Set ^t(1)=3

Ni afiwe lẹkọ ri kọọkan miiran ká data. Nitorinaa, a ni irọrun, ṣugbọn ipele ipinya ti o yara ju, KA UNCOMMITED.

Ni opo, eyi le nireti fun agbaye, eyiti iṣẹ ṣiṣe ti jẹ pataki nigbagbogbo.

Kini ti a ba nilo ipinya ti o ga julọ ni awọn iṣẹ ṣiṣe lori agbaye?

Nibi o nilo lati ronu idi ti awọn ipele ipinya ṣe nilo rara ati bii wọn ṣe n ṣiṣẹ.

Ipele ipinya ti o ga julọ, SERIALIZE, tumọ si pe abajade awọn iṣowo ti a ṣe ni afiwe jẹ deede si ipaniyan lẹsẹsẹ wọn, eyiti o ṣe iṣeduro isansa ti awọn ikọlu.

A le ṣe eyi nipa lilo awọn titiipa smart ni ObjectScript, eyiti o ni ọpọlọpọ awọn lilo ti o yatọ: o le ṣe deede, afikun, titiipa pupọ pẹlu aṣẹ. titiipa.

Awọn ipele ipinya isalẹ jẹ awọn iṣowo-pipa ti a ṣe lati mu iyara data pọ si.

Jẹ ki a wo bii a ṣe le ṣe aṣeyọri awọn ipele ipinya oriṣiriṣi nipa lilo awọn titiipa.

Oṣiṣẹ yii n gba ọ laaye lati mu kii ṣe awọn titiipa iyasọtọ nikan ti o nilo lati yi data pada, ṣugbọn ohun ti a pe ni awọn titiipa ti a pin, eyiti o le mu ọpọlọpọ awọn okun ni afiwe nigbati wọn nilo lati ka data ti ko yẹ ki o yipada nipasẹ awọn ilana miiran lakoko ilana kika.

Alaye diẹ sii nipa ọna didi ọna meji-meji ni Russian ati Gẹẹsi:

Idina meji-alakoso
Titiipa alakoso-meji

Iṣoro naa ni pe lakoko idunadura kan ipo data data le jẹ aisedede, ṣugbọn data aisedede yii han si awọn ilana miiran. Bawo ni lati yago fun eyi?

Lilo awọn titiipa, a yoo ṣẹda awọn window hihan ninu eyiti ipo data data yoo wa ni ibamu. Ati gbogbo wiwọle si iru awọn window ti hihan ti ipinle ti o gba yoo jẹ iṣakoso nipasẹ awọn titiipa.

Awọn titiipa pinpin lori data kanna jẹ atunlo — awọn ilana pupọ le gba wọn. Awọn titiipa wọnyi ṣe idiwọ awọn ilana miiran lati yi data pada, i.e. ti won ti wa ni lo lati dagba windows ti dédé database ipinle.

Awọn titiipa iyasọtọ ni a lo fun awọn iyipada data - ilana kan ṣoṣo le gba iru titiipa kan. Titiipa iyasoto le ṣee mu nipasẹ:

  1. Ilana eyikeyi ti data ba jẹ ọfẹ
  2. Ilana nikan ti o ni titiipa pinpin lori data yii ati pe o jẹ akọkọ lati beere titiipa iyasoto.

Awọn iṣowo ni InterSystems IRIS globals

Awọn dín window hihan, awọn gun miiran ilana ni lati duro fun o, ṣugbọn awọn diẹ dédé ipo ti awọn database laarin o le jẹ.

READ_COMMITTED - pataki ti ipele yii ni pe a rii data ifaramọ nikan lati awọn okun miiran. Ti data ninu idunadura miiran ko tii ṣe, lẹhinna a rii ẹya atijọ rẹ.

Eyi n gba wa laaye lati ṣe afiwe iṣẹ naa dipo iduro fun titiipa lati tu silẹ.

Laisi awọn ẹtan pataki, a kii yoo ni anfani lati wo ẹya atijọ ti data ni IRIS, nitorina a yoo ni lati ṣe pẹlu awọn titiipa.

Nitorinaa, a yoo ni lati lo awọn titiipa pinpin lati gba data laaye lati ka nikan ni awọn akoko aitasera.

Jẹ ká sọ pé a ni a olumulo mimọ ^ eniyan ti o gbe owo si kọọkan miiran.

Akoko gbigbe lati eniyan 123 si eniyan 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)

Akoko ti n beere iye owo lati ọdọ eniyan 123 ṣaaju ki o to debiting gbọdọ wa pẹlu bulọọki iyasọtọ (nipasẹ aiyipada):

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

Ati pe ti o ba nilo lati ṣafihan ipo akọọlẹ ninu akọọlẹ ti ara ẹni, lẹhinna o le lo titiipa pinpin tabi ko lo rara:

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

Bibẹẹkọ, ti a ba ro pe awọn iṣẹ ṣiṣe data ni a ṣe fẹrẹẹ lesekese (jẹ ki n leti pe awọn agbaye jẹ eto ipele kekere pupọ ju tabili ibatan lọ), lẹhinna iwulo fun ipele yii dinku.

REPEATABLE KA - Ipele ipinya yii ngbanilaaye fun kika pupọ ti data ti o le ṣe atunṣe nipasẹ awọn iṣowo nigbakan.

Nitorinaa, a yoo ni lati fi titiipa pinpin lori kika data ti a yipada ati awọn titiipa iyasọtọ lori data ti a yipada.

O da, oniṣẹ LOCK gba ọ laaye lati ṣe atokọ ni kikun gbogbo awọn titiipa pataki, eyiti eyiti o le jẹ pupọ, ninu alaye kan.

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

awọn iṣẹ miiran (ni akoko yii awọn okun ti o jọra gbiyanju lati yi eniyan pada (123, iye), ṣugbọn ko le)

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

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

Nigbati o ba n ṣe atokọ awọn titiipa ti o yapa nipasẹ awọn aami idẹsẹ, a mu wọn ni ọkọọkan, ṣugbọn ti o ba ṣe eyi:

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

lẹhinna a mu wọn ni atomiki ni ẹẹkan.

ADIFAFUN - a yoo ni lati ṣeto awọn titiipa ki nikẹhin gbogbo awọn iṣowo ti o ni data ti o wọpọ ni a ṣe ni atẹlera. Fun ọna yii, ọpọlọpọ awọn titiipa yẹ ki o jẹ iyasọtọ ati mu lori awọn agbegbe ti o kere julọ ti agbaye fun iṣẹ ṣiṣe.

Ti a ba sọrọ nipa awọn owo sisanwo ni ^ eniyan agbaye, lẹhinna ipele ipinya SERIALIZE nikan jẹ itẹwọgba fun rẹ, nitori pe owo gbọdọ lo ni ọna ti o muna, bibẹẹkọ o ṣee ṣe lati lo iye kanna ni ọpọlọpọ igba.

4. Agbara

Mo ṣe awọn idanwo pẹlu gige lile ti eiyan nipa lilo

docker kill my-iris

Ipilẹ fi aaye gba wọn daradara. Ko si awọn iṣoro ti a damọ.

ipari

Fun awọn agbaye, InterSystems IRIS ni atilẹyin idunadura. Wọn jẹ atomiki nitootọ ati igbẹkẹle. Lati rii daju aitasera data ti o da lori agbaye, awọn akitiyan pirogirama ati lilo awọn iṣowo ni a nilo, nitori ko ni awọn itumọ ti eka bi awọn bọtini ajeji.

Ipele ipinya ti agbaye laisi lilo awọn titiipa jẹ KA UNCOMMITED, ati nigba lilo awọn titiipa o le ni idaniloju to ipele SERIALIZE.

Titọ ati iyara ti awọn iṣowo lori agbaye pupọ da lori imọ-ẹrọ ti pirogirama: awọn titiipa ti a pin kaakiri ni a lo nigba kika, ipele ipinya ti o ga julọ, ati pe a mu awọn titiipa iyasọtọ dín diẹ sii, iṣẹ ṣiṣe yiyara.

orisun: www.habr.com

Fi ọrọìwòye kun