Ma'amaloli a cikin InterSystems IRIS globals

Ma'amaloli a cikin InterSystems IRIS globalsInterSystems IRIS DBMS yana goyan bayan tsari mai ban sha'awa don adana bayanai - duniya. Mahimmanci, waɗannan maɓallan matakai masu yawa ne tare da ƙarin abubuwan more rayuwa daban-daban ta hanyar ma'amaloli, ayyuka masu sauri don ratsa bishiyar bayanai, makullai da harshensa na ObjectScript.

Kara karantawa game da abubuwan duniya a cikin jerin labaran "Globals ita ce takuba don adana bayanai":

Bishiyoyi. Kashi na 1
Bishiyoyi. Kashi na 2
Tsara-tsare. Kashi na 3

Na zama sha'awar yadda ake aiwatar da ma'amaloli a cikin duniya, menene fasali akwai. Bayan haka, wannan tsari ne mabanbanta don adana bayanai fiye da allunan da aka saba. Mafi ƙarancin matakin.

Kamar yadda aka sani daga ka'idar bayanan bayanai, kyakkyawan aiwatar da ma'amaloli dole ne ya cika bukatun ACID:

A - Atomic (atomicity). Duk canje-canjen da aka yi a cikin ma'amala ko babu kwata-kwata da aka yi rikodin su.

C - daidaito. Bayan an gama ma'amala, yanayin ma'ana na ma'ajin bayanai dole ne ya kasance daidai cikin ciki. Ta hanyoyi da yawa wannan bukata ta shafi masu shirye-shirye, amma a yanayin bayanan SQL ya shafi maɓallan kasashen waje.

I - ware. Kasuwancin da ke gudana a layi daya bai kamata su shafi juna ba.

D - Mai dorewa. Bayan nasarar kammala ma'amala, matsaloli a ƙananan matakan (rashin ƙarfi, alal misali) bai kamata ya shafi bayanan da aka canza ta hanyar ciniki ba.

Globals ba su da alaƙa da tsarin bayanai. An ƙera su don yin aiki da sauri a kan kayan aiki mai iyaka. Bari mu dubi aiwatar da ma'amaloli a cikin amfani da duniya Hoton IRIS docker na hukuma.

Don tallafawa ma'amaloli a cikin IRIS, ana amfani da umarni masu zuwa: TSTART, TCOMMIT, KYAUTA.

1. Atomity

Hanya mafi sauƙi don bincika ita ce atomity. Muna dubawa daga na'ura mai ba da hanya tsakanin hanyoyin sadarwa.

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

Sai mu karkare:

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

Mun samu:

1 2 3

Komai yana lafiya. Ana kiyaye atomity: ana yin rikodin duk canje-canje.

Bari mu rikitar da aikin, gabatar da kuskure kuma mu ga yadda aka adana ma'amala, wani bangare ko a'a.

Bari mu sake duba atomity:

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

Sannan za mu dakatar da kwandon da karfi, mu kaddamar da shi kuma mu gani.

docker kill my-iris

Wannan umarnin kusan yayi daidai da kashewar ƙarfi, saboda yana aika siginar SIGKILL don dakatar da aikin nan take.

Watakila an adana wani bangare na ciniki?

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

- A'a, bai tsira ba.

Bari mu gwada umarnin sake dawowa:

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)

Ba abin da ya tsira ma.

2. Daidaitawa

Tun da a cikin bayanan bayanai dangane da abubuwan duniya, ana kuma yin maɓalli a kan duniya (bari in tunatar da ku cewa tsarin duniya shine ƙananan tsari don adana bayanai fiye da tebur mai dangantaka), don saduwa da daidaitattun buƙatun, dole ne a haɗa canji a cikin maɓalli. a cikin ma'amala guda ɗaya kamar canji a cikin duniya.

Alal misali, muna da ^mutum na duniya, wanda muke adana mutane kuma muna amfani da TIN a matsayin maɓalli.

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

Domin samun saurin bincike da sunan ƙarshe da sunan farko, mun yi maɓallin ^index.

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

Domin bayanan su kasance daidai, dole ne mu ƙara mutum kamar haka:

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

Saboda haka, lokacin sharewa dole ne mu yi amfani da ma'amala:

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

Ma'ana, cika ka'idojin daidaito ya ta'allaka ne kacokan akan kafadun shirin. Amma idan aka zo batun duniya, wannan abu ne na al'ada, saboda ƙarancin yanayinsu.

3. Warewa

Wannan shi ne inda daji ke farawa. Yawancin masu amfani a lokaci guda suna aiki akan bayanai iri ɗaya, suna canza bayanai iri ɗaya.

Halin yana kwatankwacin lokacin da yawancin masu amfani a lokaci guda suke aiki tare da ma'ajin lambar guda kuma suna ƙoƙarin yin canje-canje a lokaci guda zuwa fayiloli da yawa a lokaci ɗaya.

Ya kamata Database ya warware shi duka a ainihin lokacin. Idan akai la'akari da cewa a cikin kamfanoni masu mahimmanci akwai ma wani mutum na musamman wanda ke da alhakin sarrafa sigar (don haɗa rassan, magance rikice-rikice, da dai sauransu), kuma dole ne a yi duk wannan bayanan a cikin ainihin lokacin, rikitarwa na aikin da daidaitaccen aikin. tsarin tsarin bayanai da lambar da ke aiki da shi.

Rukunin bayanan ba zai iya fahimtar ma'anar ayyukan da masu amfani ke yi ba don guje wa rikice-rikice idan suna aiki akan bayanai iri ɗaya. Yana iya soke mu'amala ɗaya kawai da ta yi karo da wani, ko aiwatar da su a jere.

Wata matsalar kuma ita ce, yayin aiwatar da ciniki (kafin aikatawa), yanayin ma’adanar bayanai na iya zama ba daidai ba, don haka yana da kyau kada sauran mu’amalolin ba su da damar shiga yanayin rashin daidaiton ma’ajin bayanai, wanda ake samu a cikin ma’ajin bayanai na alaka. ta hanyoyi da yawa: ƙirƙirar hotuna, layuka masu yawa da sauransu.

Lokacin aiwatar da ma'amaloli a layi daya, yana da mahimmanci a gare mu kada su tsoma baki tare da juna. Wannan ita ce dukiyar keɓewa.

SQL ya bayyana matakan keɓewa guda 4:

  • KARANTA BA'A SAMU BA
  • KARANTA AKA YI
  • MAI MAIMAITA KARATUN
  • SERIALIZABLE

Bari mu kalli kowane matakin daban. Kudin aiwatar da kowane matakin yana girma kusan da yawa.

KARANTA BA'A SAMU BA - wannan shine mafi ƙarancin matakin keɓewa, amma a lokaci guda mafi sauri. Ma'amaloli na iya karanta canje-canjen da juna suka yi.

KARANTA AKA YI shine matakin ware na gaba, wanda shine sulhu. Ma'amaloli ba za su iya karanta canje-canjen juna ba kafin ƙaddamarwa, amma za su iya karanta duk wani canje-canjen da aka yi bayan ƙaddamarwa.

Idan muna da ma'amala mai tsawo T1, yayin da aikata laifuka ya faru a cikin ma'amaloli T2, T3 ... Tn, waɗanda suka yi aiki tare da bayanai iri ɗaya kamar T1, to, lokacin neman bayanai a cikin T1 za mu sami sakamako daban-daban kowane lokaci. Ana kiran wannan al'amari wanda ba a maimaita karatu ba.

MAI MAIMAITA KARATUN - a cikin wannan matakin keɓewa ba mu da abin mamaki na karatun da ba a maimaita ba, saboda gaskiyar cewa ga kowane buƙatun karanta bayanai, an ƙirƙiri hoto na bayanan sakamakon kuma lokacin da aka sake amfani da su a cikin ma'amala ɗaya, bayanan daga hoton hoto. ana amfani da shi. Koyaya, yana yiwuwa a karanta bayanan fatalwa a wannan matakin keɓewa. Wannan yana nufin karanta sabbin layuka waɗanda aka ƙara ta hanyar ma'amaloli masu alaƙa.

SERIALIZABLE - mafi girman matakin rufewa. Yana da alaƙa da gaskiyar cewa bayanan da aka yi amfani da su ta kowace hanya a cikin ma'amala (karantawa ko canzawa) suna samuwa ga wasu ma'amaloli ne kawai bayan kammala ciniki na farko.

Da farko, bari mu gano ko akwai keɓantawar ayyuka a cikin ma'amala daga babban zaren. Bari mu buɗe taga tasha 2.

Kill ^t

Write ^t(1)
2

TSTART
Set ^t(1)=2

Babu warewa. Zare ɗaya yana ganin abin da na biyun da ya buɗe ciniki yake yi.

Bari mu ga idan ma'amaloli na zaren daban-daban sun ga abin da ke faruwa a cikin su.

Bari mu buɗe tagogi masu tasha 2 mu buɗe ma'amaloli 2 a layi daya.

kill ^t
TSTART
Write ^t(1)
3

TSTART
Set ^t(1)=3

Ma'amaloli masu layi daya suna ganin bayanan juna. Don haka, mun sami mafi sauƙi, amma kuma mafi girman matakin keɓewa, KARANTA BA KYAUTA ba.

A ka'ida, ana iya tsammanin wannan ga duniya, wanda aikin ya kasance fifiko koyaushe.

Idan muna buƙatar babban matakin keɓewa a cikin ayyukan kan duniya fa?

Anan kuna buƙatar yin tunanin dalilin da yasa ake buƙatar matakan keɓe kwata-kwata da yadda suke aiki.

Mafi girman matakin keɓewa, SERIALIZE, yana nufin cewa sakamakon ma'amaloli da aka aiwatar a layi daya daidai yake da aiwatar da su a jere, wanda ke ba da tabbacin rashin yin karo.

Za mu iya yin wannan ta amfani da makullai masu wayo a cikin ObjectScript, waɗanda ke da amfani daban-daban: kuna iya yin kullun, haɓakawa, kullewa da yawa tare da umarnin. LOCK.

Ƙananan matakan keɓewar ciniki ne da aka tsara don ƙara saurin bayanai.

Bari mu ga yadda za mu iya cimma matakan keɓe daban-daban ta amfani da makullai.

Wannan ma'aikacin yana ba ku damar ɗaukar makullai na keɓance kawai da ake buƙata don canza bayanai, amma abin da ake kira makullai na raba, wanda zai iya ɗaukar zaren da yawa a layi daya lokacin da suke buƙatar karanta bayanan da bai kamata a canza su ta wasu matakai yayin karatun ba.

Ƙarin bayani game da hanyar toshe matakai biyu cikin Rashanci da Ingilishi:

Katange mataki-biyu
Kulle kashi biyu

Wahalar ita ce yayin ma'amala yanayin ma'ajin bayanai na iya zama mara daidaituwa, amma wannan bayanan mara daidaituwa yana bayyane ga sauran hanyoyin. Yadda za a kauce wa wannan?

Yin amfani da makullai, za mu ƙirƙiri windows masu gani a cikin abin da yanayin bayanan zai kasance daidai. Kuma duk damar samun irin wannan tagogi na ganuwa na jihar da aka amince za a sarrafa su ta hanyar makullai.

Makullan da aka raba akan bayanai iri ɗaya ana iya sake amfani da su — matakai da yawa na iya ɗaukar su. Wadannan makullai suna hana sauran hanyoyin canza bayanai, watau. ana amfani da su don samar da windows na daidaitattun yanayin bayanai.

Ana amfani da keɓantattun makullai don canje-canjen bayanai - tsari ɗaya ne kawai zai iya ɗaukar irin wannan kulle. Ana iya ɗaukar keɓantaccen kulle ta:

  1. Duk wani tsari idan bayanan kyauta ne
  2. Sai kawai tsarin da ke da makulli mai raba kan wannan bayanan kuma shine farkon wanda ya nemi keɓantaccen kulle.

Ma'amaloli a cikin InterSystems IRIS globals

Da kunkuntar taga ganuwa, da sauran hanyoyin da za su jira shi, amma mafi daidaituwa yanayin yanayin bayanan da ke cikinsa zai iya zama.

KARATUN_WAKILI - Mahimmancin wannan matakin shine kawai muna ganin cikakkun bayanai daga wasu zaren. Idan bayanan da ke cikin wata ma'amala ba a yi ba tukuna, to muna ganin tsohuwar sigar sa.

Wannan yana ba mu damar daidaita aikin a maimakon jira a saki makullin.

Ba tare da dabaru na musamman ba, ba za mu iya ganin tsohuwar sigar bayanai a cikin IRIS ba, don haka dole ne mu yi da makullai.

Saboda haka, dole ne mu yi amfani da makullai masu haɗin gwiwa don ba da damar karanta bayanai kawai a lokutan daidaito.

Bari mu ce muna da mai amfani da tushe ^mutumin da ke tura kuɗi ga juna.

Lokacin canja wuri daga mutum 123 zuwa mutum 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)

Lokacin neman adadin kuɗi daga mutum 123 kafin cire kuɗi dole ne ya kasance tare da keɓaɓɓen toshe (ta tsohuwa):

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

Kuma idan kuna buƙatar nuna matsayin asusun a cikin keɓaɓɓen asusun ku, to kuna iya amfani da makulli na raba ko kada ku yi amfani da shi kwata-kwata:

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

Duk da haka, idan muka ɗauka cewa ana aiwatar da ayyukan bayanai kusan nan take (bari in tunatar da ku cewa tsarin duniya yana da ƙanƙantar tsari fiye da tebur mai dangantaka), to buƙatar wannan matakin yana raguwa.

MAI MAIMAITA KARATUN - Wannan matakin keɓewa yana ba da damar karanta bayanai da yawa waɗanda za a iya canza su ta hanyar ma'amaloli na lokaci guda.

Don haka, dole ne mu sanya makulli mai raba kan karanta bayanan da muke canzawa da kuma kulle keɓancewar bayanan akan bayanan da muka canza.

Abin farin ciki, ma'aikacin LOCK yana ba ku damar jera dalla-dalla duk makullin da ake buƙata, waɗanda za a iya samun da yawa, a cikin sanarwa ɗaya.

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

sauran ayyuka (a wannan lokacin layi ɗaya zaren suna ƙoƙarin canza ^ mutum (123, adadin), amma ba zai iya ba)

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

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

Lokacin jera makullai da waƙafi, ana ɗaukar su bi-da-bi, amma idan kun yi haka:

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

sa'an nan kuma a ɗauke su ta atomatik gaba ɗaya.

ADDU'A - Dole ne mu saita makullai ta yadda a ƙarshe ana aiwatar da duk ma'amaloli waɗanda ke da bayanan gama gari a jere. Don wannan hanyar, yawancin makullai yakamata su zama keɓantacce kuma a ɗauka akan mafi ƙanƙanta wuraren duniya don aiki.

Idan muka yi magana game da zare kudi a cikin ^ mutum na duniya, to kawai matakin keɓancewa na SERIALIZE ya yarda da shi, tunda dole ne a kashe kuɗi gabaɗaya, in ba haka ba yana yiwuwa a kashe adadin sau da yawa.

4. Dorewa

Na gudanar da gwaje-gwaje tare da yanke katako mai wuya ta amfani da

docker kill my-iris

Tushen ya yi haƙuri da su da kyau. Ba a gano matsala ba.

ƙarshe

Don abubuwan duniya, InterSystems IRIS yana da tallafin ciniki. Su ne ainihin atomic kuma abin dogara. Don tabbatar da daidaiton bayanai dangane da abubuwan duniya, ana buƙatar ƙoƙarin masu tsara shirye-shirye da kuma yin amfani da ma'amaloli, tunda ba shi da ƙayyadaddun ginanniyar gini kamar maɓallan ƙasashen waje.

Matsayin keɓancewa na duniya ba tare da amfani da makullai ba shine KARANTA BA KYAUTA ba, kuma lokacin amfani da makullai ana iya tabbatar da shi har zuwa matakin SERIALIZE.

Daidaituwa da saurin mu'amala akan abubuwan duniya sun dogara sosai akan ƙwarewar mai shirye-shirye: yadda ake amfani da makullai masu yawa da yawa yayin karatu, girman matakin keɓewa, kuma mafi ƙarancin kulle kulle, saurin aiwatarwa.

source: www.habr.com

Add a comment