Gnìomhan ann an cruinnean InterSystems IRIS

Gnìomhan ann an cruinnean InterSystems IRISTha an InterSystems IRIS DBMS a’ toirt taic do structaran inntinneach airson dàta a stòradh - cruinneachan. Gu bunaiteach, is e iuchraichean ioma-ìre a tha seo le diofar rudan math a bharrachd ann an cruth ghnothaichean, gnìomhan luath airson a dhol thairis air craobhan dàta, glasan agus a chànan ObjectScript fhèin.

Leugh tuilleadh mu shaoghal cruinne anns an t-sreath artaigilean “Is e claidheamhan ulaidh airson stòradh dàta a th’ ann an cruinneachan:

Craobhan. Pàirt 1
Craobhan. Pàirt 2
Arrays gann. Pàirt 3

Ghabh mi ùidh anns mar a tha gnothaichean air an cur an gnìomh ann an cruinne-cè, dè na feartan a th’ ann. Às deidh na h-uile, is e structar gu tur eadar-dhealaichte a tha seo airson stòradh dàta na na clàran àbhaisteach. Ìre gu math nas ìsle.

Mar a tha fios bho theòiridh stòran-dàta dàimh, feumaidh deagh bhuileachadh de ghnothaichean na riatanasan a choileanadh ACID:

A - Atamach (atomicity). Tha a h-uile atharrachadh a chaidh a dhèanamh sa ghnothach no gin idir air a chlàradh.

C - Co-chòrdadh. Às deidh crìoch a chuir air malairt, feumaidh staid loidsigeach an stòr-dàta a bhith cunbhalach a-staigh. Ann an iomadh dòigh tha an riatanas seo a 'buntainn ris a' phrògramadair, ach a thaobh stòran-dàta SQL tha e cuideachd a 'buntainn ri iuchraichean cèin.

I — Iomallach. Cha bu chòir gnìomhan a tha a 'ruith aig an aon àm buaidh a thoirt air a chèile.

D - Seasmhach. Às deidh crìoch a chuir air malairt gu soirbheachail, cha bu chòir duilgheadasan aig ìrean nas ìsle (fàilligeadh cumhachd, mar eisimpleir) buaidh a thoirt air an dàta a chaidh atharrachadh leis a’ ghnothach.

Is e structaran dàta neo-dàimheach a th’ ann an cruinneachan. Chaidh an dealbhadh gus ruith gu math luath air bathar-cruaidh glè bheag. Bheir sinn sùil air buileachadh ghnothaichean ann an cruinne-cè a’ cleachdadh ìomhaigh oifigeil docker IRIS.

Gus taic a thoirt do ghnothaichean ann an IRIS, thathas a’ cleachdadh na h-òrdughan a leanas: TÙS, TCOMMIT, TROLLA BHAIS.

1. Atomity

Is e an dòigh as fhasa sgrùdadh a dhèanamh air atomachd. Bidh sinn a’ sgrùdadh bhon consol stòr-dàta.

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

An uairsin tha sinn a 'co-dhùnadh:

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

Gheibh sinn:

1 2 3

Tha a h-uile dad gu math. Tha Atomity air a chumail suas: tha gach atharrachadh air a chlàradh.

Dèanamaid an obair duilich, bheir sinn a-steach mearachd agus faic mar a tha an gnothach air a shàbhaladh, ann am pàirt no nach eil idir.

Feuch an dèan sinn sgrùdadh air an atomachd a-rithist:

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

An uairsin cuiridh sinn stad air an t-soitheach gu làidir, cuir air bhog e agus faic.

docker kill my-iris

Tha an àithne seo cha mhòr co-ionann ri dùnadh feachd, leis gu bheil e a’ cur comharra SIGKILL gus stad a chuir air a’ phròiseas sa bhad.

Is dòcha gun deach an gnothach a shàbhaladh gu ìre?

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

- Chan e, chan eil e air tighinn beò.

Feuchaidh sinn ris an òrdugh tilleadh air ais:

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)

Chan eil dad air tighinn beò idir.

2. Co-chòrdadh

Leis gu bheil stòran-dàta stèidhichte air cruinneagan, cuideachd air an dèanamh air cruinneagan (leig dhomh do chuimhneachadh gur e structar aig ìre nas ìsle a th’ ann an cruinne-cruinne airson dàta a stòradh na clàr dàimh), gus coinneachadh ris an riatanas cunbhalachd, feumar atharrachadh san iuchair a thoirt a-steach. anns an aon ghnothach ri atharrachadh san t-saoghal.

Mar eisimpleir, tha neach cruinne againn, anns am bi sinn a’ stòradh phearsachan agus bidh sinn a’ cleachdadh an TIN mar iuchair.

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

Gus sgrùdadh sgiobalta a dhèanamh a rèir ainm mu dheireadh agus ciad ainm, rinn sinn an iuchair ^ index.

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

Gus am bi an stòr-dàta cunbhalach, feumaidh sinn am persona mar seo a chur ris:

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

Mar sin, nuair a sguabas sinn às feumaidh sinn malairt a chleachdadh cuideachd:

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

Ann am faclan eile, tha coileanadh an riatanas cunbhalachd gu tur an urra ris a ’phrògramadair. Ach nuair a thig e gu cruinnean, tha seo àbhaisteach, air sgàth an ìre ìosal de nàdar.

3. Iomallachd

Seo far a bheil an fhàsach a’ tòiseachadh. Bidh mòran de luchd-cleachdaidh ag obair aig an aon àm air an aon stòr-dàta, ag atharrachadh an aon dàta.

Tha an suidheachadh coimeasach ri nuair a bhios mòran de luchd-cleachdaidh ag obair aig an aon àm leis an aon stòr còd agus a’ feuchainn ri atharrachaidhean a dhèanamh air mòran fhaidhlichean aig an aon àm.

Bu chòir don stòr-dàta a h-uile càil a rèiteachadh ann an àm fìor. Leis gu bheil eadhon neach sònraichte ann an droch chompanaidhean a tha an urra ri smachd dreach (airson meuran a chur còmhla, còmhstrithean fhuasgladh, msaa), agus feumaidh an stòr-dàta seo a dhèanamh ann an àm fìor, iom-fhillteachd na h-obrach agus ceartachd an dealbhadh stòr-dàta agus còd a tha ga fhrithealadh.

Chan urrainn don stòr-dàta brìgh nan gnìomhan a rinn luchd-cleachdaidh a thuigsinn gus còmhstrithean a sheachnadh ma tha iad ag obair air an aon dàta. Chan urrainn dha ach aon ghnothach a thoirt air falbh a tha an aghaidh malairt eile, no an cur an gnìomh ann an òrdugh.

Is e duilgheadas eile a th’ ann, nuair a thèid gnothach a chuir gu bàs (mus tèid gealltanas), gum faodadh staid an stòr-dàta a bhith neo-chunbhalach, agus mar sin tha e ion-mhiannaichte nach bi cothrom aig gnothaichean eile air staid neo-chunbhalach an stòr-dàta, a tha air a choileanadh ann an stòran-dàta co-cheangailte. ann an iomadh dòigh: cruthachadh dealbhan-camara, sreathan ioma-dhreach is msaa.

Nuair a bhios sinn a’ dèanamh ghnothaichean aig an aon àm, tha e cudromach dhuinn nach cuir iad bacadh air a chèile. Is e seo seilbh aonaranachd.

Tha SQL a’ mìneachadh 4 ìrean iomallachd:

  • LÀRR-CHUNNART
  • LÈIRMHEAS COMATAIDH
  • ATH-LEASACHADH
  • SRAIDIACH

Bheir sinn sùil air gach ìre fa leth. Bidh cosgaisean buileachaidh gach ìre a’ fàs cha mhòr gun samhail.

LÀRR-CHUNNART - is e seo an ìre as ìsle de aonaranachd, ach aig an aon àm as luaithe. Faodaidh gnìomhan atharrachaidhean a rinn a chèile a leughadh.

LÈIRMHEAS COMATAIDH is e an ath ìre de dh’ aonaranachd, a tha na cho-rèiteachadh. Chan urrainn do ghnìomhachd atharraichean càch a chèile a leughadh ron ghealladh, ach faodaidh iad atharrachaidhean sam bith a chaidh a dhèanamh às deidh a’ gheallaidh a leughadh.

Ma tha malairt fhada T1 againn, nuair a thachair geallaidhean ann an gnothaichean T2, T3 ... Tn, a dh’ obraich leis an aon dàta ri T1, an uairsin nuair a dh’ iarras sinn dàta ann an T1 gheibh sinn toradh eadar-dhealaichte gach turas. Canar leughadh nach gabh ath-aithris ris an iongantas seo.

ATH-LEASACHADH - anns an ìre iomallachd seo chan eil iongantas againn air leughadh nach gabh ath-aithris, leis gu bheil dealbh den dàta toraidh air a chruthachadh airson gach iarrtas airson dàta a leughadh agus nuair a thèid ath-chleachdadh san aon ghnothach, an dàta bhon dealbh air a chleachdadh. Ach, tha e comasach dàta phantom a leughadh aig an ìre iomallachd seo. Tha seo a 'toirt iomradh air a bhith a' leughadh sreathan ùra a chaidh a chur ris le gnothaichean gealltanas co-shìnte.

SRAIDIACH - an ìre as àirde de insulation. Tha e air a chomharrachadh leis gu bheil dàta air a chleachdadh ann an dòigh sam bith ann an malairt (leughadh no atharrachadh) ri fhaighinn do ghnothaichean eile dìreach às deidh a’ chiad ghnothach a chrìochnachadh.

An toiseach, leig dhuinn faighinn a-mach a bheil gnìomhachd ann an malairt bhon phrìomh snàithlean. Fosglaidh sinn 2 uinneag terminal.

Kill ^t

Write ^t(1)
2

TSTART
Set ^t(1)=2

Chan eil aonaranachd ann. Tha aon snàithlean a’ faicinn dè tha an dàrna fear a dh’ fhosgail an gnothach a’ dèanamh.

Feuch sinn a bheil gnothaichean de dhiofar snàithleanan a 'faicinn dè tha a' tachairt taobh a-staigh iad.

Fosglaidh sinn 2 uinneag crìche agus fosgail 2 ghnothach aig an aon àm.

kill ^t
TSTART
Write ^t(1)
3

TSTART
Set ^t(1)=3

Bidh gnothaichean co-shìnte a 'faicinn dàta a chèile. Mar sin, fhuair sinn an ìre aonaranachd as sìmplidh, ach cuideachd an ìre as luaithe, READ UNCOMMITED.

Ann am prionnsabal, dh'fhaodadh seo a bhith air a shùileachadh airson cruinne, agus bha coileanadh air a bhith na phrìomhachas a-riamh.

Dè ma tha feum againn air ìre nas àirde de dh’ aonaranachd ann an gnìomhachd air cruinne-cè?

An seo feumaidh tu smaoineachadh carson a tha feum air ìrean aonaranachd idir agus mar a tha iad ag obair.

Tha an ìre iomallachd as àirde, SERIALIZE, a’ ciallachadh gu bheil toradh ghnothaichean a chaidh a dhèanamh ann an co-shìnte co-ionann ris an coileanadh sreath aca, a tha a’ gealltainn nach bi tubaistean ann.

Is urrainn dhuinn seo a dhèanamh le bhith a’ cleachdadh ghlasan snasail ann an ObjectScript, aig a bheil tòrr feuman eadar-dhealaichte: faodaidh tu glasadh cunbhalach, mean air mhean a dhèanamh leis an àithne LOCK.

Tha ìrean iomallachd nas ìsle mar mhalairtean air an dealbhadh gus astar stòr-dàta àrdachadh.

Chì sinn mar as urrainn dhuinn diofar ìrean de aonaranachd a choileanadh le bhith a’ cleachdadh ghlasan.

Leigidh an gnìomhaiche seo leat chan e a-mhàin glasan sònraichte a dh’ fheumar gus dàta atharrachadh, ach glasan co-roinnte ris an canar, a dh’ fhaodas grunn snàithleanan a ghabhail aig an aon àm nuair a dh’ fheumas iad dàta a leughadh nach bu chòir atharrachadh le pròiseasan eile tron ​​​​phròiseas leughaidh.

Barrachd fiosrachaidh mun dòigh bacaidh dà-ìre ann an Ruisis agus Beurla:

Bacadh dà-ìre
Glasadh dà-ìre

Is e an duilgheadas a th’ ann gum faodadh suidheachadh an stòr-dàta a bhith neo-chunbhalach rè malairt, ach tha an dàta neo-chunbhalach seo ri fhaicinn le pròiseasan eile. Ciamar a sheachnadh seo?

A 'cleachdadh ghlasan, cruthaichidh sinn uinneagan faicsinneach anns am bi staid an stòr-dàta cunbhalach. Agus bidh a h-uile cothrom air na h-uinneagan sin de fhaicsinneachd na stàite aontaichte fo smachd glasan.

Faodar glasan co-roinnte air an aon dàta ath-chleachdadh - faodaidh grunn phròiseasan an toirt. Bidh na glasan sin a’ cur casg air pròiseasan eile bho bhith ag atharrachadh dàta, i.e. bidh iad air an cleachdadh gus uinneagan de staid stòr-dàta cunbhalach a chruthachadh.

Bithear a ’cleachdadh glasan sònraichte airson atharrachaidhean dàta - chan urrainn ach aon phròiseas a leithid de ghlas a ghabhail. Faodar glas sònraichte a ghabhail le:

  1. Pròiseas sam bith ma tha an dàta an-asgaidh
  2. Is e dìreach am pròiseas aig a bheil glas co-roinnte air an dàta seo agus b’ e a ’chiad fhear a dh’ iarr glas toirmeasgach.

Gnìomhan ann an cruinnean InterSystems IRIS

Mar as cumhainge an uinneag faicsinneachd, is ann as fhaide a dh’ fheumas pròiseasan eile feitheamh air a shon, ach mar as cunbhalaiche a dh’ fhaodas suidheachadh an stòr-dàta a bhith ann.

READ_COMMITTED - is e brìgh na h-ìre seo nach fhaic sinn ach dàta dealasach bho snàithleanan eile. Mura h-eil an dàta ann an malairt eile air a ghealltainn fhathast, chì sinn an seann dreach aige.

Leigidh seo leinn an obair a cho-shìnteadh an àite a bhith a’ feitheamh ris a’ ghlas a leigeil ma sgaoil.

Às aonais cleasan sònraichte, cha bhith e comasach dhuinn an seann dreach den dàta fhaicinn ann an IRIS, agus mar sin feumaidh sinn dèanamh le glasan.

Mar sin, feumaidh sinn glasan co-roinnte a chleachdadh gus leigeil le dàta a bhith air a leughadh a-mhàin aig amannan cunbhalachd.

Canaidh sinn gu bheil bunait luchd-cleachdaidh againn ^ neach a ghluaiseas airgead gu chèile.

Mionaid gluasaid bho neach 123 gu neach 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)

Feumaidh bloc sònraichte (gu bunaiteach) a bhith an cois na h-ùine a dh’ iarrar an t-suim airgid bho neach 123 mus tèid a phàigheadh:

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

Agus ma dh’ fheumas tu inbhe a’ chunntais a nochdadh sa chunntas pearsanta agad, faodaidh tu glas co-roinnte a chleachdadh no gun a chleachdadh idir:

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

Ach, ma ghabhas sinn ris gu bheil gnìomhachd stòr-dàta air a dhèanamh cha mhòr sa bhad (leig dhomh do chuir an cuimhne gur e structar aig ìre gu math nas ìsle a th’ ann an cruinneachan na clàr dàimh), tha an fheum air an ìre seo a’ dol sìos.

ATH-LEASACHADH - Tha an ìre iomallachd seo a’ ceadachadh iomadh leughadh de dhàta a ghabhas atharrachadh le gnothaichean co-aontach.

Mar sin, feumaidh sinn glas co-roinnte a chuir air leughadh an dàta a dh’ atharraicheas sinn agus glasan a-mhàin air an dàta a dh’ atharraicheas sinn.

Gu fortanach, leigidh an gnìomhaiche LOCK leat liosta mionaideach a dhèanamh de na glasan riatanach uile, agus faodaidh tòrr a bhith ann, ann an aon aithris.

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

obrachaidhean eile (aig an àm seo feuchaidh snàithleanan co-shìnte ri atharrachadh ^ neach (123, suim), ach chan urrainn)

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

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

Nuair a bhios tu a’ clàradh ghlasan air an sgaradh le cromagan, thèid an toirt ann an òrdugh, ach ma nì thu seo:

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

an uairsin thèid an toirt gu atomically uile aig an aon àm.

SRAIDEACH - feumaidh sinn glasan a shuidheachadh gus am bi a h-uile gnothach aig a bheil dàta cumanta air a chur an gnìomh ann an òrdugh. Airson an dòigh-obrach seo, bu chòir a’ mhòr-chuid de ghlasan a bhith toirmeasgach agus a ghabhail air na raointean as lugha den t-saoghal airson coileanadh.

Ma bhios sinn a’ bruidhinn mu bhith a’ cur airgead do fhiachan anns an neach chruinneil, is e dìreach an ìre aonaranachd SERIALIZE a tha iomchaidh air a shon, leis gu feumar airgead a chosg gu teann ann an òrdugh, air neo faodar an aon suim a chosg grunn thursan.

4. Seasmhachd

Rinn mi deuchainnean le bhith a 'gearradh cruaidh an t-soithich a' cleachdadh

docker kill my-iris

Ghabh am bonn riutha gu math. Cha deach duilgheadasan sam bith a chomharrachadh.

co-dhùnadh

Airson cruinneachan, tha taic malairt aig InterSystems IRIS. Tha iad dha-rìribh atamach agus earbsach. Gus dèanamh cinnteach à cunbhalachd stòr-dàta stèidhichte air cruinne-cè, tha feum air oidhirpean prògramadair agus cleachdadh ghnothaichean, leis nach eil togalaichean toinnte iom-fhillte ann leithid iuchraichean cèin.

Tha an ìre iomallachd de chruinne-cè gun a bhith a’ cleachdadh ghlasan air a READ UNCOMMITED, agus nuair a bhios tu a’ cleachdadh ghlasan faodar a dhèanamh cinnteach suas gu ìre SERIALIZE.

Tha ceartachd agus astar nan gnothaichean air cruinne-cè gu mòr an urra ri sgil a’ phrogramaiche: mar as fharsainge a bhios glasan co-roinnte air an cleachdadh nuair a bhios iad a’ leughadh, mar as àirde an ìre de dh’ aonaranachd, agus mar as cumhang a thèid glasan a-mhàin a ghabhail, is ann as luaithe a bhios an coileanadh.

Source: www.habr.com

Cuir beachd ann