Litšebelisano ho InterSystems IRIS globals

Litšebelisano ho InterSystems IRIS globalsInterSystems IRIS DBMS e ts'ehetsa meaho e khahlisang ea ho boloka data - globals. Ha e le hantle, tsena ke linotlolo tsa maemo a mangata tse nang le lisebelisoa tse ling tse fapaneng ka mokhoa oa litšebelisano, mesebetsi e potlakileng ea ho tšela lifate tsa data, linotlolo le puo ea eona ea ObjectScript.

Bala haholoanyane ka lefatše ka bophara letotong la lihlooho tse reng "Lifatše ke lisabole tsa letlotlo bakeng sa ho boloka boitsebiso":

Lifate. Karolo ea 1
Lifate. Karolo ea 2
Lihlopha tse nyenyane. Karolo ea 3

Ke ile ka ba le thahasello ea hore na litšebelisano li etsoa joang lefatšeng ka bophara, hore na ho na le likarolo life. Ntle le moo, ona ke sebopeho se fapaneng ka ho felletseng sa ho boloka data ho feta litafole tse tloaelehileng. Boemo bo tlase haholo.

Joalo ka ha ho tsejoa ho tsoa khopolong ea li-database tsa likamano, ts'ebetso e ntle ea litšebelisano e tlameha ho khotsofatsa litlhoko. ACID:

A - Atomic (athomo). Liphetoho tsohle tse entsoeng khoebong kapa ho hang ha lia tlalehoa.

C - Ho lumellana. Ka mor'a hore khoebo e phethe, boemo bo utloahalang ba polokelo ea boitsebiso bo tlameha ho lumellana ka hare. Ka litsela tse ngata tlhokahalo ena e ama moqapi oa lenaneo, empa tabeng ea SQL databases e boetse e ama linotlolo tsa linaheng tse ling.

Ke - Isolate. Lichelete tse tsamaeang ka tjantjello ha lia lokela ho ama tse ling.

D - E tšoarella. Ka mor'a ho phethoa ka katleho ha transaction, mathata a maemong a tlase (motlakase, mohlala) ha oa lokela ho ama data e fetotsoeng ke transaction.

Globals ke meaho ea data e sa amaneng. Li ne li etselitsoe ho matha ka lebelo le phahameng ka lisebelisoa tse fokolang haholo. Ha re shebeng ts'ebetsong ea litšebelisano ho li-globals tse sebelisoang setšoantšo sa semmuso sa IRIS docker.

Ho ts'ehetsa litšebelisano ho IRIS, ho sebelisoa litaelo tse latelang: TSTART, TUMELO, TEBELLO.

1. Atomicity

Tsela e bonolo ka ho fetisisa ea ho hlahloba ke atomicity. Re hlahloba ho tswa ho console ea database.

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

Ebe re etsa qeto:

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

Re fumana:

1 2 3

Tsohle di lokile. Atomicity e bolokiloe: liphetoho tsohle li tlalehiloe.

Ha re rarahane mosebetsi, re hlahise phoso 'me re bone hore na transaction e bolokoa joang, ka mokhoa o sa fellang kapa che ho hang.

Ha re hlahlobeng atomicity hape:

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

Joale re tla emisa setshelo ka matla, re se thakhole 'me re bone.

docker kill my-iris

Taelo ena e batla e lekana le ho koala ka matla, kaha e romella letšoao la SIGKILL ho emisa ts'ebetso hang-hang.

Mohlomong khoebo e ile ea bolokoa hanyane?

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

- Che, ha e so pholohe.

Ha re leke taelo ea rollback:

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)

Le hona ha ho letho le pholohileng.

2. Ho lumellana

Kaha ho li-database tse thehiloeng ho li-globals, linotlolo li boetse li etsoa ho li-globals (e re ke u hopotse hore lefats'e ke mohaho o tlaase oa ho boloka data ho feta tafole ea likamano), ho finyella tlhokahalo ea ho lumellana, phetoho ea senotlolo e tlameha ho kenyelletsoa. ts'ebetsong e ts'oanang le phetoho ea lefats'e.

Ka mohlala, re na le ^motho oa lefatše lohle, eo ho eena re bolokang botho 'me re sebelisa TIN e le senotlolo.

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

E le ho batlisisa ka potlako ka fane le lebitso, re entse ^index key.

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

E le hore database e lumellane, re tlameha ho eketsa motho ka tsela ena:

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

Ka hona, ha re hlakola re tlameha hape ho sebelisa transaction:

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

Ka mantsoe a mang, ho phethahatsa tlhokahalo ea ho lumellana ho itšetlehile ka ho feletseng mahetleng a moqapi. Empa ha ho tluoa tabeng ea li-globals, sena se tloaelehile, ka lebaka la tlhaho ea bona e tlaase.

3. Ho itšehla thajana

Mona ke moo dibata di qalang teng. Basebelisi ba bangata ka nako e le 'ngoe ba sebetsa ho database e le' ngoe, ba fetola data e tšoanang.

Boemo bo ka bapisoa le ha basebelisi ba bangata ka nako e le 'ngoe ba sebetsa le polokelo e tšoanang ea khoutu mme ba leka ho etsa liphetoho ho lifaele tse ngata ka nako e le ngoe.

Database e lokela ho e hlophisa kaofela ka nako ea nnete. Ha ho nahanoa hore lik'hamphani tse tebileng ho na le motho ea khethehileng ea ikarabellang bakeng sa taolo ea phetolelo (bakeng sa ho kopanya makala, ho rarolla likhohlano, joalo-joalo), mme database e tlameha ho etsa sena sohle ka nako ea sebele, ho rarahana ha mosebetsi le ho nepahala ha mosebetsi. moralo oa database le khoutu e e sebeletsang.

Database e ke ke ea utloisisa se boleloang ke liketso tse etsoang ke basebelisi ho qoba likhohlano haeba ba sebetsa ho data e tšoanang. E ka etsolla tšebetso e 'ngoe feela e hohlanang le e 'ngoe, kapa ea e etsa ka tatellano.

Bothata bo bong ke hore nakong ea ts'ebetso ea transaction (pele ho boitlamo), boemo ba database bo ka 'na ba se ke ba lumellana, kahoo ke ntho e lakatsehang hore litšebelisano tse ling li se ke tsa fihlella boemo bo sa tsitsang ba database, e leng se fihletsoeng ho databases tsa kamano. ka mekhoa e mengata: ho theha linepe, mela e mengata-ngata, joalo-joalo.

Ha re etsa transactions ka parallel, ke habohlokoa ho rona hore ba se ke ba kena-kenana le ba bang. Ena ke thepa ea ho itšehla thajana.

SQL e hlalosa maemo a 4 a ho itšehla thajana:

  • BALA MOLIMO
  • BALA E ITLETSE
  • PHETA MALATSI
  • SERIALIZABE

Ha re shebeng mohato ka mong ka thoko. Litšenyehelo tsa ho kenya tšebetsong boemo bo bong le bo bong li hola hoo e batlang e le ka sekhahla.

BALA MOLIMO - ena ke boemo bo tlaase ka ho fetisisa ba ho itšehla thajana, empa ka nako e ts'oanang e potlakile ka ho fetisisa. Litšebelisano li ka bala liphetoho tse entsoeng ke tse ling.

BALA E ITLETSE ke boemo bo latelang ba ho itšehla thajana, e leng ho sekisetsa. Litšebelisano ha li khone ho bala liphetoho tsa e mong pele ho boitlamo, empa li ka bala liphetoho leha e le life tse entsoeng ka mor'a boitlamo.

Haeba re e-na le nako e telele ea ts'ebetso ea T1, eo ka nako eo ho etsoang li-transactions ho ileng ha etsahala ka T2, T3 ... Tn, e neng e sebetsa le data e tšoanang le T1, joale ha re kopa data ho T1 re tla fumana sephetho se fapaneng nako le nako. Ketsahalo ena e bitsoa ho bala ho sa pheteheng.

PHETA MALATSI - boemong bona ba ho itšehla thajana ha re na ts'ebetso ea ho bala ho sa pheteheng, ka lebaka la hore bakeng sa kopo e 'ngoe le e' ngoe ea ho bala data, ho etsoa setšoantšo sa data ea sephetho mme ha se sebelisoa hape ts'ebetsong e ts'oanang, data e tsoang ho snapshot. e sebelisoa. Leha ho le joalo, hoa khoneha ho bala data ea phantom boemong bona ba ho itšehla thajana. Sena se bolela ho bala mela e mecha e kentsoeng ke li-transactions tse bapileng.

SERIALIZABE - boemo bo phahameng ka ho fetisisa ba ho pata. E khetholloa ke taba ea hore data e sebelisoang ka tsela leha e le efe khoebong (ho bala kapa ho fetola) e fumaneha ho litšebelisano tse ling feela ka mor'a ho phethoa ha khoebo ea pele.

Taba ea pele, a re boneng hore na ho na le ho itšehla thajana ha ts'ebetso ho tsoa ho khoele e kholo. Ha re bule lifensetere tse 2 tsa terminal.

Kill ^t

Write ^t(1)
2

TSTART
Set ^t(1)=2

Ha ho na ho itšehla thajana. Khoele e 'ngoe e bona hore na oa bobeli ea butseng transaction o ntse a etsa eng.

Ha re bone hore na transactions of different threads bona se etsahalang ka hare ho tsona.

Ha re bule lifensetere tsa li-terminal tse 2 'me re bule li-transactions tse 2 ka ho latellana.

kill ^t
TSTART
Write ^t(1)
3

TSTART
Set ^t(1)=3

Litšebelisano tse tšoanang li bona lintlha tsa tse ling. Kahoo, re fumane tse bonolo ka ho fetesisa, empa hape le boemo bo potlakileng ba ho itšehla thajana, BALA U SA TLAMEHA.

Ha e le hantle, sena se ka lebelloa bakeng sa linaha tsa lefats'e, tseo ts'ebetso e 'nileng ea e-ba tsona tse tlang pele.

Ho thoe'ng haeba re hloka boemo bo phahameng ba ho itšehla thajana mesebetsing ea lefatše?

Mona o hloka ho nahana hore na hobaneng maemo a ho itšehla thajana a hlokahala ho hang le hore na a sebetsa joang.

Boemo bo phahameng ka ho fetisisa ba ho itšehla thajana, SERIALIZE, bo bolela hore sephetho sa litšebelisano tse entsoeng ka tatellano li lekana le ts'ebetso ea tsona e latellanang, e tiisang ho ba sieo ha likhohlano.

Re ka etsa sena ka ho sebelisa linotlolo tse bohlale ho ObjectScript, tse nang le ts'ebeliso e mengata e fapaneng: o ka etsa kamehla, ka ho eketsa, ho notlela hangata ka taelo. LOCK.

Maemo a tlase a ho itšehla thajana ke likhohlano tse etselitsoeng ho eketsa lebelo la database.

Ha re boneng hore na re ka fihlela maemo a fapaneng a ho itšehla thajana joang re sebelisa liloko.

Opereishene ena e u lumella hore u se ke ua nka linotlolo tse khethehileng feela tse hlokahalang ho fetola data, empa seo ho thoeng ke liloko tse arolelanoang, tse ka nkang likhoele tse 'maloa ka ho bapisa ha li hloka ho bala data e sa lokelang ho fetoloa ke lits'ebetso tse ling nakong ea ho bala.

Lintlha tse ling mabapi le mokhoa oa ho thibela mekhahlelo e 'meli ka Serussia le Senyesemane:

Ho thibela mekhahlelo e 'meli
Ho notlela mekhahlelo e 'meli

Bothata ke hore nakong ea ts'ebetso boemo ba database bo ka 'na ba se ke ba lumellana, empa data ena e sa tsitsang e bonahala ho mekhoa e meng. Joang ho qoba see?

Ka ho sebelisa linotlolo, re tla theha lifensetere tsa ponahalo moo boemo ba database bo tlang ho ts'oana. 'Me phihlello eohle ea lifensetere tse joalo tsa ponahalo ea naha eo ho lumellanoeng ka eona e tla laoloa ke liloko.

Linotlolo tse arolelanoang ho data e tšoanang li ka sebelisoa hape - lits'ebetso tse 'maloa li ka li nka. Linotlolo tsena li thibela lits'ebetso tse ling ho fetola data, i.e. li sebelisetsoa ho theha lifensetere tsa boemo bo tsitsitseng ba database.

Ho sebelisoa linotlolo tse ikhethileng bakeng sa liphetoho tsa data - ke ts'ebetso e le 'ngoe feela e ka nkang senotlolo se joalo. Lotlolo e khethehileng e ka nkuoa ke:

  1. Ts'ebetso efe kapa efe haeba data e lokolohile
  2. Ke ts'ebetso feela e nang le senotlolo se arolelanoang ho data ena mme e bile oa pele oa ho kopa senotlolo se ikhethileng.

Litšebelisano ho InterSystems IRIS globals

Ha fensetere ea ponahalo e fokotseha, lits'ebetso tse ling li tlameha ho e emela nako e telele, empa boemo ba database bo ka ba bo tsitsitseng haholoanyane.

BALA_COMMITTED - moelelo oa boemo bona ke hore re bona feela data e ikemiselitseng ho tsoa likhoeleng tse ling. Haeba data e ts'ebetsong e 'ngoe e e-s'o etsoe, joale re bona phetolelo ea eona ea khale.

Sena se re nolofalletsa ho tsamaisana le mosebetsi ho e-na le ho emela hore senotlolo se lokolloe.

Ntle le maqheka a khethehileng, re ke ke ra khona ho bona mofuta oa khale oa data ho IRIS, kahoo re tla tlameha ho etsa ka liloko.

Ka hona, re tla tlameha ho sebelisa linotlolo tse arolelanoang ho lumella data ho baloa feela ka linako tse ts'oanang.

Ha re re re na le basebelisi ba ^motho ba fetisetsanang chelete.

Nako ea phetisetso ho tloha ho motho 123 ho ea ho motho 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)

Nako ea ho kopa chelete ho motho ea 123 pele ho debiting e tlameha ho tsamaea le block e ikhethileng (ka ho sa feleng):

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

Mme haeba o hloka ho bonts'a boemo ba ak'haonte akhaonteng ea hau, o ka sebelisa senotlolo se arolelanoang kapa o se se sebelise ho hang:

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

Leha ho le joalo, haeba re nka hore ts'ebetso ea database e etsoa hoo e batlang e le hang-hang (e re ke u hopotse hore lefats'e ke sebopeho sa boemo bo tlaase haholo ho feta tafole ea likamano), joale tlhoko ea boemo bona e fokotseha.

PHETA MALATSI - Boemo bona ba ho itšehla thajana bo lumella ho baloa hangata ha data e ka fetoloang ka litšebelisano tse ling.

Ka hona, re tla tlameha ho kenya senotlolo se arolelanoang ho bala data eo re e fetolang le linotlolo tse ikhethileng ho data eo re e fetolang.

Ka lehlohonolo, opareitara ea LOCK e u lumella ho thathamisa ka ho qaqileng liloko tsohle tse hlokahalang, tseo ho tsona ho ka bang le tse ngata, polelong e le 'ngoe.

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

lits'ebetso tse ling (ka nako ena likhoele tse bapileng li leka ho fetola ^motho(123, palo), empa ha li khone)

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

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

Ha u thathamisa liloko tse arotsoeng ke lifeheloa, li nkuoa ka tatellano, empa ha u etsa sena:

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

ebe li nkoa athomo kaofela hang-hang.

TŠEBELETSO - re tla tlameha ho beha linotlolo e le hore litšebelisano tsohle tse nang le data e tšoanang li etsoe ka tatellano. Bakeng sa mokhoa ona, linotlolo tse ngata li lokela ho ba tse ikhethileng 'me li nkuoe libakeng tse nyane tsa lefats'e bakeng sa ts'ebetso.

Haeba re bua ka lichelete tsa lichelete ho lefats'e ^motho, joale feela boemo ba ho itšehla thajana ba SERIALIZE bo amoheleha bakeng sa eona, kaha chelete e tlameha ho sebelisoa ka mokhoa o tsitsitseng, ho seng joalo ho ka khoneha ho sebelisa chelete e tšoanang ka makhetlo a 'maloa.

4. Ho tšoarella

Ke ile ka etsa liteko ka ho seha ka thata setshelo ho sebelisa

docker kill my-iris

Motheo o ile oa ba mamella hantle. Ha ho mathata a fumanoeng.

fihlela qeto e

Bakeng sa lefats'e, InterSystems IRIS e na le tšehetso ea transaction. Ka sebele li athomo ebile lia tšepahala. Ho etsa bonnete ba ho ts'oana ha database e ipapisitseng le lefats'e, ho hlokahala boiteko ba mananeo le ts'ebeliso ea litšebelisano, kaha ha e na meaho e rarahaneng e hahelletsoeng joalo ka linotlolo tsa kantle ho naha.

Boemo ba ho itšehla thajana ba lefats'e ntle le ho sebelisa linotlolo BALA HA U COMMITED, 'me ha u sebelisa linotlolo bo ka netefatsoa ho fihla boemong ba SERIALIZE.

Ho nepahala le ho potlaka ha litšebelisano tsa lefats'e ho itšetlehile haholo ka bokhoni ba moqapi oa lenaneo: ha ho sebelisoa liloko tse ngata haholo ha ho baloa, ho phahamisa boemo ba ho itšehla thajana, 'me ha ho nkoa linotlolo tse khethehileng, ts'ebetso e potlakile.

Source: www.habr.com

Eketsa ka tlhaloso