Nā hana ma InterSystems IRIS honua

Nā hana ma InterSystems IRIS honuaKākoʻo ka InterSystems IRIS DBMS i nā hale hoihoi no ka mālama ʻana i ka ʻikepili - honua. ʻO ka mea nui, he mau kī nui kēia me nā mea maikaʻi ʻē aʻe i ke ʻano o nā kālepa, nā hana wikiwiki no ka hele ʻana i nā kumulāʻau ʻikepili, nā laka a me kāna ʻōlelo ObjectScript ponoʻī.

E heluhelu hou aʻe e pili ana i ka honua ma ke ʻano o nā ʻatikala "He mau pahi kaua waiwai ka honua no ka mālama ʻana i ka ʻikepili":

Nā lāʻau. Mahele 1
Nā lāʻau. Mahele 2
ʻO nā ʻāpana liʻiliʻi. Mahele 3

Ua hoihoi au i ke ʻano o ka hoʻokō ʻia ʻana o nā kālepa ma ka honua, he aha nā hiʻohiʻona. Ma hope o nā mea a pau, he ʻano ʻokoʻa loa kēia no ka mālama ʻana i nā ʻikepili ma mua o nā papa maʻamau. ʻAno haʻahaʻa loa.

E like me ka mea i ʻike ʻia mai ke kumumanaʻo o nā ʻikepili pili, pono ka hoʻokō maikaʻi ʻana i nā hana e hoʻokō i nā koi ʻĀKIKA:

A - Atomic (atomicity). Hoʻopaʻa ʻia nā hoʻololi a pau i hana ʻia ma ke kālepa a ʻaʻole loa.

C - Kūlike. Ma hope o ka pau ʻana o kahi kālepa, pono e kū like ke kūlana o ka waihona. Ma nāʻano he nui, pili kēia koi i ka mea papahana, akā i ka hihia o SQL databases pili pū kekahi i nā kī haole.

I - Hoʻokaʻawale. ʻAʻole pono nā hana e holo like ana i kekahi i kekahi.

D - Mau loa. Ma hope o ka hoʻokō pono ʻana o kahi kālepa, ʻaʻole pono e hoʻopilikia nā pilikia ma nā pae haʻahaʻa (ka hāʻule ʻana o ka mana, no ka laʻana) i ka ʻikepili i hoʻololi ʻia e ke kālepa.

ʻO ke ao holoʻokoʻa he mau ʻikepili pili ʻole. Ua hoʻolālā ʻia lākou e holo wikiwiki loa ma nā hāmeʻa liʻiliʻi loa. E nānā kākou i ka hoʻokō ʻana i nā kālepa ma ka hoʻohana honua kiʻi kūhelu IRIS docker.

No ke kākoʻo ʻana i nā kālepa ma IRIS, hoʻohana ʻia nā kauoha aʻe: HOʻomaka, TCOMMIT, HOOLAHA.

1. Atomicity

ʻO ke ala maʻalahi e nānā ai ʻo ia ka atomicity. Nānā mākou mai ka console database.

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

A laila hoʻopau mākou:

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

Loaʻa iā mākou:

1 2 3

Ua maikaʻi nā mea a pau. Mālama ʻia ka Atomicity: hoʻopaʻa ʻia nā hoʻololi āpau.

E hoʻopili i ka hana, e hoʻokomo i kahi hewa a ʻike i ke ʻano o ka mālama ʻana o ke kālepa, ʻāpana a ʻaʻole loa.

E nānā hou kākou i ka atomicity:

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

A laila e ho'ōki ikaika mākou i ka ipu, e hoʻokuʻu a ʻike.

docker kill my-iris

Aneane like kēia kauoha me ka hoʻopaʻa ikaika, ʻoiai e hoʻouna ana i kahi hōʻailona SIGKILL e hoʻopau koke i ke kaʻina hana.

Ua mālama ʻia paha ke kālepa?

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

- ʻAʻole, ʻaʻole i ola.

E ho'āʻo kākou i ke kauoha 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)

ʻAʻohe mea i ola.

2. Ka paʻa

No ka mea i loko o nā ʻikepili e pili ana i ka honua, ua hana ʻia nā kī ma nā honua (e hoʻomanaʻo iaʻu he ʻano haʻahaʻa haʻahaʻa ka honua no ka mālama ʻana i ka ʻikepili ma mua o ka papa pilina), e hoʻokō i ke koi kūlike, pono e hoʻokomo ʻia kahi hoʻololi i ke kī. i ka hana like me ka hoʻololi i ka honua.

No ka laʻana, loaʻa iā mākou he kanaka ^ honua, kahi e mālama ai mākou i nā pilikino a hoʻohana mākou i ka TIN ma ke kī.

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

I mea e huli wikiwiki ai ma ka inoa hope a me ka inoa mua, ua hana mākou i ke kī ^index.

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

I mea e kūlike ai ka waihona, pono mākou e hoʻohui i ka persona e like me kēia:

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

No laila, i ka wā e holoi ai, pono mākou e hoʻohana i kahi kālepa:

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

ʻO ia hoʻi, ʻo ka hoʻokō ʻana i ke koi kūpaʻa e kau wale ʻia ma nā poʻohiwi o ka mea papahana. Akā i ka wā e pili ana i ka honua, he mea maʻamau kēia, ma muli o ko lākou ʻano haʻahaʻa haʻahaʻa.

3. Kaawale

ʻO kēia kahi e hoʻomaka ai nā mea hihiu. Nui nā mea hoʻohana i ka manawa hoʻokahi e hana ma ka waihona like, hoʻololi i ka ʻikepili like.

Hoʻohālikelike ʻia ke kūlana i ka wā e hana like ai nā mea hoʻohana me ka waihona code like a hoʻāʻo e hoʻololi i nā faila he nui i ka manawa hoʻokahi.

Pono e hoʻokaʻawale ka waihona i nā mea a pau i ka manawa maoli. Ke noʻonoʻo nei i loko o nā ʻoihana koʻikoʻi aia kekahi kanaka kūikawā nona ke kuleana no ka mana mana (no ka hoʻohui ʻana i nā lālā, hoʻoholo i nā paio, a me nā mea ʻē aʻe), a pono e hana ka waihona i kēia mau mea āpau i ka manawa maoli, ka paʻakikī o ka hana a me ka pololei o ka. hoʻolālā waihona a me ke code e lawelawe ana.

ʻAʻole hiki i ka waihona ke hoʻomaopopo i ke ʻano o nā hana i hana ʻia e nā mea hoʻohana i mea e pale ai i nā paio inā e hana ana lākou i ka ʻikepili like. Hiki iā ia ke hoʻopau wale i hoʻokahi hana e paio ana me kekahi, a i ʻole e hoʻokō ma ke kaʻina.

ʻO kekahi pilikia ʻē aʻe i ka wā o ka hoʻokō ʻana i kahi kālepa (ma mua o ka hana ʻana), ʻaʻole i kūlike ka mokuʻāina o ka waihona, no laila makemake ʻia ʻaʻole i loaʻa nā hana ʻē aʻe i ke kūlana inconsistent o ka waihona, i loaʻa i nā ʻikepili pili. ma nā ʻano he nui: ka hana ʻana i nā kiʻi paʻi, nā lālani multi-versioning a me nā mea ʻē aʻe.

I ka hoʻokō ʻana i nā hana like ʻole, he mea nui iā mākou ʻaʻole lākou e hoʻopilikia kekahi i kekahi. ʻO kēia ka waiwai o ke kaʻawale.

Hōʻike ʻo SQL i nā pae kaʻawale 4:

  • HELUHELU OLE
  • HELUHELU IA
  • HELUHELU HOU
  • SERIALIZBLE

E nānā kaʻawale kākou i kēlā me kēia pae. ʻO nā kumukūʻai o ka hoʻokō ʻana i kēlā me kēia pae e ulu kokoke loa.

HELUHELU OLE - ʻo kēia ka pae haʻahaʻa o ka kaʻawale, akā i ka manawa like ka wikiwiki. Hiki i nā hana ke heluhelu i nā loli i hana ʻia e kekahi.

HELUHELU IA ʻo ia ka pae aʻe o ka hoʻokaʻawale ʻana, ʻo ia ka kuʻikahi. ʻAʻole hiki i nā hana ke heluhelu i nā loli o kēlā me kēia ma mua o ka hoʻopaʻa ʻana, akā hiki iā lākou ke heluhelu i nā loli i hana ʻia ma hope o ka hoʻopaʻa ʻana.

Inā loaʻa iā mākou kahi kālepa lōʻihi T1, i ka manawa i hana ʻia ai nā hana i nā kālepa T2, T3 ... Tn, i hana me ka ʻikepili like me T1, a laila ke noi ʻana i ka ʻikepili ma T1 e loaʻa iā mākou kahi hopena ʻokoʻa i kēlā me kēia manawa. Kapa ʻia kēia ʻano he heluhelu hiki ʻole ke hana hou ʻia.

HELUHELU HOU - i kēia pae kaʻawale ʻaʻole mākou i loaʻa i ke ʻano o ka heluhelu ʻole ʻana, ma muli o ka ʻoiaʻiʻo no kēlā me kēia noi e heluhelu i ka ʻikepili, hana ʻia kahi kiʻi o ka ʻikepili hopena a ke hoʻohana hou ʻia i ka hana like, ka ʻikepili mai ka snapshot. hoʻohana ʻia. Eia nō naʻe, hiki ke heluhelu i ka ʻikepili phantom ma kēia pae kaʻawale. E pili ana kēia i ka heluhelu ʻana i nā lālani hou i hoʻohui ʻia e nā hana hana like.

SERIALIZBLE - ka pae kiʻekiʻe o ka insulation. Hōʻikeʻia ia e kaʻikeʻike i hoʻohanaʻia ma kekahiʻano i kahi kālepa (heluhelu a hoʻololi paha) i loaʻa i nā hana'ē aʻe wale nō ma hope o ka pauʻana o ka hana mua.

ʻO ka mea mua, e noʻonoʻo inā aia kahi kaʻawale o nā hana i kahi kālepa mai ka pae nui. E wehe kākou i nā puka makani ʻelua.

Kill ^t

Write ^t(1)
2

TSTART
Set ^t(1)=2

ʻAʻohe kaʻawale. ʻIke kekahi pae i ka hana a ka lua nāna i wehe i ke kālepa.

E ʻike kākou inā ʻike ʻia nā hana o nā pae like ʻole i ka mea e hana nei i loko o lākou.

E wehe kākou i 2 mau puka makani a wehe i 2 mau hana like.

kill ^t
TSTART
Write ^t(1)
3

TSTART
Set ^t(1)=3

ʻIke ʻia nā ʻikepili like ʻole o kēlā me kēia. No laila, loaʻa iā mākou ka maʻalahi, akā ʻo ka pae kaʻawale wikiwiki loa, READ UNCOMMITED.

Ma ke kumu, hiki ke manaʻo ʻia kēia no ka honua, kahi i hana mua ʻia ka hana.

He aha inā makemake mākou i kahi kiʻekiʻe o ka noho kaʻawale i nā hana ma nā honua?

Maanei ʻoe e noʻonoʻo ai i ke kumu e pono ai nā pae kaʻawale a pehea e hana ai.

ʻO ka pae kaʻawale kiʻekiʻe loa, ʻo SERIALIZE, ʻo ia ka hopena o nā hana i hana like ʻia me kā lākou hoʻokō sequential, e hōʻoiaʻiʻo ana i ka nele o nā hui.

Hiki iā mākou ke hana i kēia me ka hoʻohana ʻana i nā laka akamai i ObjectScript, he nui nā mea hoʻohana like ʻole: hiki iā ʻoe ke hana maʻamau, hoʻonui, paʻa nui me ke kauoha. LOCK.

ʻO nā pae kaʻawale haʻahaʻa he mau kālepa i hoʻolālā ʻia e hoʻonui i ka wikiwiki o ka waihona.

E ʻike pehea e hiki ai iā mākou ke hoʻokō i nā pae like ʻole o ka kaʻawale me ka hoʻohana ʻana i nā laka.

Hāʻawi kēia mea hana iā ʻoe e lawe i nā laka kūʻokoʻa wale nō e pono ai e hoʻololi i ka ʻikepili, akā i kapa ʻia ʻo nā loka kaʻana like, hiki ke lawe i kekahi mau kaula i ka wā e pono ai lākou e heluhelu i ka ʻikepili ʻaʻole pono e hoʻololi ʻia e nā kaʻina ʻē aʻe i ka wā o ka heluhelu ʻana.

ʻO ka ʻike hou aku e pili ana i ke kaʻina hana pāpā ʻelua ma ka Lūkini a me ka Pelekane:

Kāohi ʻelua ʻāpana
Paʻa ʻelua ʻāpana

ʻO ka paʻakikī i ka wā o ke kālepa ʻana ke ʻano like ʻole ka mokuʻāina o ka waihona, akā ʻike ʻia kēia ʻikepili like ʻole i nā kaʻina hana ʻē aʻe. Pehea e pale aku ai i kēia?

Ke hoʻohana nei i nā laka, e hana mākou i nā puka makani ʻike i kahi e kūlike ai ke kūlana o ka waihona. A e hoʻomalu ʻia nā puka makani āpau o ka mokuʻāina i ʻaelike ʻia e nā laka.

Hiki ke hoʻohana hou ʻia nā laka kaʻana like ma ka ʻikepili like—hiki i nā kaʻina hana ke lawe iā lākou. Ke pale nei kēia mau laka i nā kaʻina hana ʻē aʻe mai ka hoʻololi ʻana i ka ʻikepili, i.e. hoʻohana ʻia lākou e hana i nā puka makani o ka mokuʻāina waihona.

Hoʻohana ʻia nā laka kūʻokoʻa no ka hoʻololi ʻana i ka ʻikepili - hoʻokahi wale nō kaʻina e hiki ke lawe i kēlā laka. Hiki ke lawe ʻia kahi laka kūʻokoʻa e:

  1. Kekahi kaʻina hana inā manuahi ka ʻikepili
  2. ʻO ke kaʻina hana i loaʻa ka laka kaʻana like i kēia ʻikepili a ʻo ia ka mea mua i noi i kahi laka kūʻokoʻa.

Nā hana ma InterSystems IRIS honua

ʻOi aku ka liʻiliʻi o ka puka aniani ʻike, ʻoi aku ka lōʻihi o nā kaʻina hana ʻē aʻe e kali ai, akā ʻoi aku ka paʻa o ke kūlana o ka waihona i loko.

READ_COMMITTED - ʻo ke kumu o kēia pae ʻike mākou i nā ʻikepili i hoʻopaʻa ʻia mai nā pae ʻē aʻe. Inā ʻaʻole i hoʻokō ʻia ka ʻikepili i kahi kālepa ʻē aʻe, a laila ʻike mākou i kāna mana kahiko.

ʻAe kēia iā mākou e hoʻohālikelike i ka hana ma mua o ke kali ʻana i ka hoʻokuʻu ʻana i ka laka.

Me ka ʻole o nā hoʻopunipuni kūikawā, ʻaʻole hiki iā mākou ke ʻike i ka mana kahiko o ka ʻikepili ma IRIS, no laila pono mākou e hana me nā laka.

No laila, pono mākou e hoʻohana i nā laka kaʻana like i hiki ke heluhelu ʻia ka ʻikepili i nā manawa like.

E ʻōlelo kākou he kumu hoʻohana ^ kanaka nāna e hoʻoili kālā kekahi i kekahi.

Ka manawa o ka hoʻololi ʻana mai ke kanaka 123 i ke kanaka 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)

ʻO ka manawa o ke noi ʻana i ka nui o ke kālā mai ke kanaka 123 ma mua o ka hōʻaiʻē ʻana pono e hui pū ʻia me kahi poloka kūʻokoʻa (ma ka paʻamau):

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

A inā pono ʻoe e hōʻike i ke kūlana moʻokāki ma kāu moʻokāki pilikino, a laila hiki iā ʻoe ke hoʻohana i ka laka like ʻole a i ʻole hoʻohana ʻole ia:

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

Eia nō naʻe, inā manaʻo mākou ua hana ʻia nā hana ʻikepili ma kahi kokoke koke (e hoʻomanaʻo wau iā ʻoe he ʻano haʻahaʻa haʻahaʻa haʻahaʻa ka honua ma mua o ka papa pilina), a laila emi ka pono o kēia pae.

HELUHELU HOU - Hāʻawi kēia pae kaʻawale i nā heluhelu he nui o ka ʻikepili i hiki ke hoʻololi ʻia e nā hana like.

No laila, pono mākou e kau i kahi laka kaʻana like i ka heluhelu ʻana i ka ʻikepili a mākou e hoʻololi ai a me nā laka kūʻokoʻa i ka ʻikepili a mākou e hoʻololi ai.

ʻO ka mea pōmaikaʻi, ʻae ka mea hoʻohana LOCK iā ʻoe e papa inoa i nā kikoʻī āpau e pono ai nā laka, a hiki ke nui, i hoʻokahi ʻōlelo.

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

nā hana ʻē aʻe (i kēia manawa e hoʻāʻo nā pae like e hoʻololi i ^kanaka(123, nui), akā ʻaʻole hiki)

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

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

Ke hoʻokaʻawale ʻia nā laka e nā koma, lawe ʻia lākou ma ke kaʻina, akā inā ʻoe e hana i kēia:

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

a laila lawe ʻia lākou a pau i ka manawa hoʻokahi.

KANAWAI - Pono mākou e hoʻonohonoho i nā laka i hiki ke hoʻokō ʻia nā hana āpau i loaʻa ka ʻikepili maʻamau. No kēia ala, pono e hoʻokaʻawale ʻia ka hapa nui o nā laka a lawe ʻia ma nā wahi liʻiliʻi loa o ka honua no ka hana.

Inā mākou e kamaʻilio e pili ana i ka hōʻaiʻē kālā ma ka honua ^kanaka, a laila ʻae wale ʻia ka pae hoʻokaʻawale SERIALIZE no ia, no ka mea, pono e hoʻolilo ʻia ke kālā ma ke ʻano maʻamau, inā ʻaʻole hiki ke hoʻolilo i ka nui like i nā manawa he nui.

4. Ka lōʻihi

Ua hana au i nā ho'āʻo me ka ʻoki paʻakikī o ka ipu

docker kill my-iris

Ua ʻae maikaʻi ke kumu iā lākou. ʻAʻohe pilikia i ʻike ʻia.

hopena

No ka honua, InterSystems IRIS he kākoʻo kālepa. He atomika maoli lākou a hilinaʻi. No ka hōʻoia ʻana i ka paʻa ʻana o kahi waihona e pili ana i ka honua, pono nā hoʻoikaika papahana a me ka hoʻohana ʻana i nā kālepa, no ka mea, ʻaʻohe ona paʻakikī i kūkulu ʻia e like me nā kī haole.

ʻO ka pae kaʻawale o ka honua me ka hoʻohana ʻole ʻana i nā laka he READ UNCOMMITED, a i ka wā e hoʻohana ai i nā laka hiki ke hōʻoia ʻia a hiki i ka pae SERIALIZE.

ʻO ka pololei a me ka wikiwiki o nā kālepa ma ka honua holoʻokoʻa e hilinaʻi nui ʻia i ke akamai o ka mea papahana: ʻo ka hoʻohana ʻana i nā laka ākea ākea i ka wā heluhelu, ʻoi aku ka kiʻekiʻe o ke kaʻawale, a ʻo ka lawe ʻana i nā laka kūʻokoʻa, ʻoi aku ka wikiwiki o ka hana.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka