Idirbhearta i domhanda InterSystems IRIS

Idirbhearta i domhanda InterSystems IRISTacaíonn an InterSystems IRIS DBMS le struchtúir suimiúla chun sonraí a stóráil - domhanda. Go bunúsach, is eochracha il-leibhéil iad seo le earraí breise éagsúla i bhfoirm idirbhearta, feidhmeanna tapa chun crainn sonraí a thrasnú, glais agus a theanga ObjectScript féin.

Léigh tuilleadh faoi dhomhanda sa tsraith alt “Is claíomh taisce iad na cruinne chun sonraí a stóráil”:

Crainn. Cuid 1
Crainn. Cuid 2
Arrays tanaí. Cuid 3

Chuir mé spéis sa chaoi a gcuirtear idirbhearta i bhfeidhm i gcúrsaí domhanda, cad iad na gnéithe atá ann. Tar éis an tsaoil, is struchtúr iomlán difriúil é seo chun sonraí a stóráil ná na táblaí coitianta. Leibhéal i bhfad níos ísle.

Mar is eol ó theoiric na mbunachair shonraí choibhneasta, ní mór na ceanglais a shásamh le dea-chur i bhfeidhm na n-idirbheart Aigéad:

A - Adamhach (atomicity). Déantar gach athrú a rinneadh ar an idirbheart nó aon athrú ar bith a thaifeadadh.

C - Comhsheasmhacht. Tar éis idirbheart a chríochnú, ní mór staid loighciúil an bhunachair shonraí a bheith comhsheasmhach go hinmheánach. Baineann an riachtanas seo leis an ríomhchláraitheoir ar go leor bealaí, ach i gcás bunachair shonraí SQL baineann sé le heochracha eachtracha freisin.

I - Leithlisiú. Níor cheart go ndéanfadh idirbhearta a ritheann go comhthreomhar difear dá chéile.

D - CRUA. Tar éis idirbheart a chur i gcrích go rathúil, níor cheart go ndéanfadh fadhbanna ag leibhéil níos ísle (teip cumhachta, mar shampla) difear do na sonraí a d'athraigh an t-idirbheart.

Is struchtúir sonraí neamhghaolmhara iad cruinneoga. Bhí siad deartha chun rith thar a bheith tapa ar chrua-earraí an-teoranta. A ligean ar breathnú ar idirbhearta a chur i bhfeidhm i domhanda ag baint úsáide as íomhá oifigiúil docker IRIS.

Chun tacú le hidirbhearta in IRIS, úsáidtear na horduithe seo a leanas: TSTART, TCOMMIT, TROLLAIS.

1. Atomity

Is é an bealach is éasca le seiceáil adamhacht. Déanaimid seiceáil ón gconsól bunachar sonraí.

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

Ansin tugaimid i gcrích:

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

Faighimid:

1 2 3

Tá gach rud breá. Coinnítear an atomacht: déantar gach athrú a thaifeadadh.

Déanaimis an tasc a chasta, déanaimis earráid a thabhairt isteach agus féachfaimid conas a shábháiltear an t-idirbheart, go páirteach nó nach bhfuil ar chor ar bith.

Déanaimis an adamhacht a sheiceáil arís:

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

Ansin stopfaimid an coimeádán go láidir, é a sheoladh agus a fheiceáil.

docker kill my-iris

Tá an t-ordú seo beagnach comhionann le múchadh fórsa, toisc go seolann sé comhartha SIGKILL chun stop a chur leis an bpróiseas láithreach.

B'fhéidir gur shábháil an t-idirbheart go páirteach?

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

- Ní hea, níor mhair sé.

Déanaimis iarracht an t-ordú rolladh siar:

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)

Níor tháinig aon rud slán ach an oiread.

2. Comhsheasmhacht

Ós rud é i mbunachair shonraí atá bunaithe ar dhomhanda, go ndéantar eochracha ar dhomhanda freisin (cuir in iúl dom gur struchtúr leibhéal níos ísle é cruinne chun sonraí a stóráil ná tábla coibhneasta), chun an riachtanas comhsheasmhachta a chomhlíonadh, ní mór athrú ar an eochair a chur san áireamh. san idirbheart céanna le hathrú ar an domhanda.

Mar shampla, tá duine domhanda againn, ina stórálaimid pearsantachtaí agus ina mbainimid úsáid as an TIN mar eochair.

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

Chun cuardach tapa a dhéanamh de réir sloinne agus céadainm, rinneamar an eochair ^ index.

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

Chun go mbeidh an bunachar sonraí comhsheasmhach, ní mór dúinn an persona mar seo a chur leis:

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

Dá réir sin, agus muid ag scriosadh ní mór dúinn idirbheart a úsáid freisin:

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

I bhfocail eile, is ar ghuaillí an ríomhchláraitheora go hiomlán atá an ceanglas comhsheasmhachta a chomhlíonadh. Ach nuair a bhaineann sé le domhanda, is gnách é seo, mar gheall ar a nádúr íseal-leibhéil.

3. Leithlisiú

Seo an áit a dtosaíonn na fiáine. Oibríonn go leor úsáideoirí ag an am céanna ar an mbunachar sonraí céanna, ag athrú na sonraí céanna.

Tá an scéal inchomparáide leis nuair a oibríonn go leor úsáideoirí ag an am céanna leis an stór cód céanna agus déanann siad iarracht athruithe a dhéanamh ar go leor comhaid ag an am céanna ag an am céanna.

Ba cheart don bhunachar sonraí é a réiteach i bhfíor-am. Ag cur san áireamh go bhfuil fiú duine speisialta i gcuideachtaí tromchúiseacha atá freagrach as rialú leagan (do bhrainsí a chumasc, coinbhleachtaí a réiteach, etc.), agus ní mór don bhunachar sonraí é seo go léir a dhéanamh i bhfíor-am, castacht an taisc agus cruinneas an taisc. dearadh bunachar sonraí agus cód a fhreastalaíonn air.

Ní féidir leis an mbunachar sonraí brí na ngníomhaíochtaí a dhéanann úsáideoirí a thuiscint chun coinbhleachtaí a sheachaint má tá siad ag obair ar na sonraí céanna. Ní féidir leis ach idirbheart amháin atá salach ar a chéile a chealú, nó iad a chur i gcrích go seicheamhach.

Fadhb eile is ea go bhféadfadh staid an bhunachair shonraí a bheith neamhréireach le linn idirbheart a chur i gcrích (roimh gealltanas), agus mar sin tá sé inmhianaithe nach mbeadh rochtain ag idirbhearta eile ar staid neamhréireach an bhunachair sonraí, rud a bhaintear amach i mbunachair shonraí choibhneasta. ar go leor bealaí: pictiúir a chruthú, sraitheanna illeaganacha agus araile.

Agus idirbhearta á ndéanamh ag an am céanna, tá sé tábhachtach dúinn nach gcuireann siad isteach ar a chéile. Is é seo an maoin leithlis.

Sainmhíníonn SQL 4 leibhéal leithlisithe:

  • LÉIGH neamhthiomanta
  • LÉIGH TIOMANTA
  • LÉIGH ATHCHURTHA
  • SRAITHREACH

Breathnaímid ar gach leibhéal ar leithligh. Méadaíonn na costais a bhaineann le gach leibhéal a chur i bhfeidhm beagnach go heaspónantúil.

LÉIGH neamhthiomanta - is é seo an leibhéal is ísle leithlis, ach ag an am céanna is tapúla. Is féidir le hidirbhearta athruithe a dhéanann a chéile a léamh.

LÉIGH TIOMANTA an chéad leibhéal eile leithlisithe, ar comhréiteach é. Ní féidir le hidirbhearta athruithe a chéile roimh an tiomantas a léamh, ach is féidir leo aon athruithe a dhéantar tar éis an chimithe a léamh.

Má tá idirbheart fada againn T1, inar tharla gealltanais in idirbhearta T2, T3 ... Tn, a d'oibrigh leis na sonraí céanna le T1, ansin nuair a iarraimid sonraí i T1 gheobhaidh muid toradh difriúil gach uair. Tugtar léamh neamh-in-athdhéanta ar an bhfeiniméan seo.

LÉIGH ATHCHURTHA — ag an leibhéal leithlis seo níl feiniméan na léitheoireachta neamh-athráite againn, toisc go gcruthaítear pictiúr de shonraí an toraidh do gach iarratas ar léamh sonraí agus nuair a athúsáidtear iad san idirbheart céanna, na sonraí ón seat úsáidtear. Mar sin féin, is féidir sonraí phantom a léamh ag an leibhéal leithlisithe seo. Tagraíonn sé seo do léamh sraitheanna nua a cuireadh leis trí idirbhearta tiomanta comhthreomhara.

SRAITHREACH - an leibhéal is airde inslithe. Tá sé tréithrithe ag an bhfíric go bhfuil sonraí a úsáidtear ar bhealach ar bith in idirbheart (léamh nó a athrú) ar fáil d'idirbhearta eile ach amháin tar éis críochnú an chéad idirbheart.

Gcéad dul síos, déanaimis a dhéanamh amach an bhfuil aonrú oibríochtaí in idirbheart ón bpríomhshnáithe. Osclaímid 2 fhuinneog teirminéil.

Kill ^t

Write ^t(1)
2

TSTART
Set ^t(1)=2

Níl aon leithlisiú ann. Feiceann snáithe amháin cad atá á dhéanamh ag an dara ceann a d'oscail an t-idirbheart.

Féachaimis an bhfeiceann idirbhearta snáitheanna éagsúla cad atá ag tarlú taobh istigh díobh.

Déanaimis 2 fhuinneog teirminéil a oscailt agus 2 idirbheart a oscailt go comhthreomhar.

kill ^t
TSTART
Write ^t(1)
3

TSTART
Set ^t(1)=3

Feiceann idirbhearta comhthreomhara sonraí a chéile. Mar sin, fuair muid an leibhéal leithlis is simplí, ach freisin an ceann is tapúla, LÉIGH NEAMHCHOIMISIÚNTA.

I bprionsabal, d’fhéadfaí a bheith ag súil leis seo i gcás cuideachtaí domhanda, ar tugadh tosaíocht dóibh i gcónaí don fheidhmíocht.

Cad a tharlóidh má tá gá againn le leibhéal níos airde leithlisithe in oibríochtaí domhanda?

Anseo ní mór duit smaoineamh ar cén fáth a bhfuil gá le leibhéil leithlisithe ar chor ar bith agus conas a oibríonn siad.

Ciallaíonn an leibhéal leithlisithe is airde, SERIALIZE, go bhfuil toradh na n-idirbheart a dhéantar go comhthreomhar comhionann lena gcur i gcrích seicheamhach, rud a ráthaíonn nach mbeidh imbhuailtí ann.

Is féidir linn é seo a dhéanamh ag baint úsáide as glais cliste in ObjectScript, a bhfuil go leor úsáidí éagsúla acu: is féidir leat glasáil rialta, incriminteach, iolrach a dhéanamh leis an ordú Faoi ghlas.

Is comhbhabhtálacha iad leibhéil leithlisithe níos ísle atá deartha chun luas an bhunachair shonraí a mhéadú.

Féachaimis conas is féidir linn leibhéil éagsúla leithlis a bhaint amach ag baint úsáide as glais.

Ceadaíonn an t-oibreoir seo duit ní hamháin glais eisiacha a theastaíonn chun sonraí a athrú, ach glais roinnte mar a thugtar orthu, ar féidir leo roinnt snáitheanna a ghlacadh ag an am céanna nuair is gá dóibh sonraí a léamh nár cheart a athrú trí phróisis eile le linn an phróisis léitheoireachta.

Tuilleadh faisnéise faoin modh blocála dhá chéim i Rúisis agus i mBéarla:

Blocáil dhá chéim
Glasáil dhá chéim

Is é an deacracht atá ann ná go bhféadfadh staid an bhunachair sonraí a bheith neamhréireach le linn idirbhirt, ach tá na sonraí neamhréireacha seo le feiceáil ag próisis eile. Conas é seo a sheachaint?

Ag baint úsáide as glais, cruthóimid fuinneoga infheictheachta ina mbeidh staid an bhunachair shonraí comhsheasmhach. Agus beidh gach rochtain ar fhuinneoga infheictheachta den sórt sin den stát comhaontaithe faoi rialú glais.

Is féidir glais chomhroinnte ar na sonraí céanna a ath-inúsáidte—is féidir le roinnt próiseas iad a ghlacadh. Cuireann na glais seo cosc ​​ar phróisis eile sonraí a athrú, i.e. úsáidtear iad chun fuinneoga de staid bhunachar sonraí comhsheasmhach a chruthú.

Úsáidtear glais eisiach le haghaidh athruithe sonraí - ní féidir ach próiseas amháin glas den sórt sin a ghlacadh. Is féidir glas eisiach a ghlacadh trí:

  1. Próiseas ar bith má tá na sonraí saor in aisce
  2. Is é an próiseas amháin a bhfuil glas roinnte ar na sonraí seo agus ba é an chéad duine a d'iarr glas eisiach.

Idirbhearta i domhanda InterSystems IRIS

Dá cúinge an fhuinneog infheictheachta, is ea is faide a chaithfidh próisis eile fanacht air, ach is comhsheasmhaí a bheidh staid an bhunachair shonraí laistigh de.

READ_COMMITTED — is é croílár an leibhéil seo ná nach bhfeicimid ach sonraí tiomanta ó shnáitheanna eile. Mura bhfuil na sonraí in idirbheart eile geallta fós, ansin feicimid a seanleagan.

Ligeann sé seo dúinn an obair a chomhthreomharú in ionad fanacht leis an glas a scaoileadh.

Gan cleasanna speisialta, ní bheimid in ann an seanleagan de na sonraí a fheiceáil in IRIS, mar sin beidh orainn baint a bheith againn le glais.

Dá réir sin, beidh orainn glais roinnte a úsáid le gur féidir sonraí a léamh ag tráthanna comhsheasmhachta amháin.

Ligean le rá go bhfuil bonn úsáideora againn ^duine a aistríonn airgead chuig a chéile.

Nóiméad aistrithe ó dhuine 123 go duine 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)

Ní mór bloc eisiach a bheith ag gabháil leis an nóiméad a iarrtar an méid airgid ó dhuine 123 roimh dhochar (de réir réamhshocraithe):

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

Agus más gá duit stádas an chuntais a thaispeáint i do chuntas pearsanta, is féidir leat glas roinnte a úsáid nó gan é a úsáid ar chor ar bith:

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

Mar sin féin, má ghlacaimid leis go ndéantar oibríochtaí bunachar sonraí beagnach láithreach (cuirigí i gcuimhne duit gur struchtúr leibhéal i bhfad níos ísle iad na domhandaithe ná tábla coibhneasta), ansin laghdaítear an gá atá leis an leibhéal seo.

LÉIGH ATHCHURTHA - Ligeann an leibhéal leithlis seo do léimh iolracha sonraí ar féidir iad a mhodhnú trí idirbhearta comhthráthacha.

Dá réir sin, beidh orainn glas comhroinnte a chur ar léamh na sonraí a athraíonn muid agus glais eisiach ar na sonraí a athraíonn muid.

Go fortunately, ceadaíonn an t-oibreoir LOCK duit na glais riachtanacha go léir a liostú go mion, agus is féidir go leor díobh a bheith ann, i ráiteas amháin.

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

oibríochtaí eile (an tráth seo déanann snáitheanna comhthreomhara iarracht ^person(123, méid) a athrú), ach ní féidir leo)

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

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

Agus glais scartha le camóga á liostú, tógtar iad go seicheamhach, ach má dhéanann tú é seo:

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

ansin tógtar iad go adamhach ar fad ag an am céanna.

SRAITH — beidh orainn glais a shocrú ionas go ndéanfar gach idirbheart a bhfuil sonraí coitianta aige go seicheamhach. Maidir leis an gcur chuige seo, ba cheart go mbeadh an chuid is mó de na glais eisiach agus go dtógfaí iad ar na réimsí is lú den domhan le haghaidh feidhmíochta.

Má labhraímid faoi chistí a chur do dhochar sa duine domhanda, ansin ní ghlacfar ach leis an leibhéal leithlisithe SERIALIZE, mar ní mór airgead a chaitheamh go docht seicheamhach, nó is féidir an méid céanna a chaitheamh arís agus arís eile.

4. Marthanacht

Rinne mé tástálacha le gearradh crua ar an gcoimeádán ag baint úsáide as

docker kill my-iris

Ghlac an bonn go maith leo. Níor aithníodh aon fhadhbanna.

Conclúid

I gcás cuideachtaí domhanda, tá tacaíocht idirbheartaíochta ag InterSystems IRIS. Tá siad fíor adamhach agus iontaofa. Chun comhsheasmhacht bunachar sonraí atá bunaithe ar dhomhanda a áirithiú, tá gá le hiarrachtaí ríomhchláraitheoirí agus le húsáid idirbheart, ós rud é nach bhfuil foirgnimh chasta ionsuite ann amhail eochracha eachtracha.

Tá leibhéal leithlisithe na cruinne gan úsáid a bhaint as glais LÉIGH NEAMHCHOIMISIÚNTA, agus nuair a úsáidtear glais is féidir é a áirithiú suas go dtí an leibhéal SERIALIZE.

Braitheann cruinneas agus luas na n-idirbheart ar dhomhanda go mór ar scil an ríomhchláraitheora: dá mhéad glais roinnte a úsáidtear nuair a bhíonn léamh, is airde an leibhéal leithlisithe, agus dá nglactar glais níos cúinge, is amhlaidh is tapúla an fheidhmíocht.

Foinse: will.com

Add a comment