Π‘Π£ΠΠ InterSystems IRIS ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π»ΡΠ±ΠΎΠΏΠΈΡΠ½ΠΈ ΡΡΡΡΠΊΡΡΡΠΈ Π·Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ β Π³Π»ΠΎΠ±Π°Π»ΠΈ. ΠΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ, ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΈΠΌΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΡΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, Π±ΡΡΠ·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΎΠ±Ρ
ΠΎΠ΄ Π½Π° Π΄Π°Π½Π½ΠΈ, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ Π΅Π·ΠΈΠΊ ObjectScript.
ΠΠΎΠ²Π΅ΡΠ΅ Π·Π° Π³Π»ΠΎΠ±Π°Π»ΠΈΡΠ΅ Π² ΡΠΈΠΊΡΠ»Π° ΡΡΠ°ΡΠΈΠΈ Β«ΠΠ»ΠΎΠ±Π°Π»ΠΈ β ΠΌΠ΅ΡΠΈ-ΠΊΠ»Π°Π΄Π΅Π½ΡΠΈ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈΒ»:
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΠΌΠΈ ΡΡΠ°Π½Π° ΠΊΠ°ΠΊ ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΡΠ΅ Π² Π³Π»ΠΎΠ±Π°Π»ΠΈΡΠ΅ ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ ΠΎΡΠΎΠ±Π΅Π½ΠΎΡΡΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ. ΠΡΠ΅ ΠΏΠ°ΠΊ, ΡΠΎΠ²Π° Π΅ ΡΡΠ²ΡΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½Π° ΡΡΡΡΠΊΡΡΡΠ° Π·Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΈΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠΈ. ΠΠ½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π°.
ΠΠ°ΠΊΡΠΎ Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΠΎΡ ΡΠ΅ΠΎΡΠΈΡΡΠ° Π½Π° ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Π΄ΠΎΠ±ΡΠ°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° :
A β Atomic (Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡ). ΠΠ°ΠΏΠΈΡΠ²Π°Ρ ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ°, ΠΈΠ»ΠΈ Π½ΠΈΡΠΎ Π΅Π΄Π½Π°.
Π‘ β Consistency (ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΡΡ). Π‘Π»Π΅Π΄ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΠ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π²ΡΡΡΠ΅ΡΠ½ΠΎ Π½Π΅ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ²ΠΎ. ΠΡΡΠ°ΡΡΠΈ ΡΠΎΠ²Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½Π΅ ΠΊΠ°ΡΠ°Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠ°, Π½ΠΎ Π² ΡΠ»ΡΡΠ°Ρ Π½Π° SQL-Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΡΠΎ ΡΠ΅ ΠΎΡΠ½Π°ΡΡ ΠΈ Π·Π° Π²ΡΠ½ΡΠ½ΠΈΡΠ΅ ΠΊΠ»ΡΡΠΎΠ²Π΅.
I β Isolate (ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΎΡΡ). ΠΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠΈΡΠ΅ ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠΊΠ°Π·Π²Π°Ρ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π΅Π΄Π½Π° Π½Π° Π΄ΡΡΠ³Π°.
D β Durable (Π΄ΡΠ»Π³ΠΎΠ²Π΅ΡΠ½ΠΎΡΡ). Π‘Π»Π΅Π΄ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ°, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° ΠΏΠΎ-Π½ΠΈΡΠΊΠΈΡΠ΅ Π½ΠΈΠ²Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π°Π²Π°ΡΠΈΡ Π½Π° Π·Π°Ρ ΡΠ°Π½Π²Π°Π½Π΅ΡΠΎ) Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠΊΠ°Π·Π²Π°Ρ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈ ΠΎΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ°.
ΠΠ»ΠΎΠ±Π°Π»ΠΈΡΠ΅ ΡΠ° Π½Π΅ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½ΠΈ ΡΡΡΡΠΊΡΡΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ. Π’Π΅ ΡΠ° ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π·Π° ΡΠ²ΡΡΡ Π±ΡΡΠ·Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅. ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π² Π³Π»ΠΎΠ±Π°Π»ΠΈΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° .
ΠΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π² IRIS ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅: , , .
1. ΠΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡ
ΠΠ°ΠΉ-Π»Π΅ΡΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΡΠ°. ΠΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅ ΠΎΡ ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ.
Kill ^a
TSTART
Set ^a(1) = 1
Set ^a(2) = 2
Set ^a(3) = 3
TCOMMITΠ‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΡΠ°Π²ΠΈΠΌ ΠΈΠ·Π²ΠΎΠ΄Π°:
Write ^a(1), β β, ^a(2), β β, ^a(3)ΠΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅:
1 2 3ΠΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄. ΠΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΡΠ° Π΅ ΡΠΏΠ°Π·Π΅Π½Π°: Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΠ° Π·Π°ΠΏΠΈΡΠ°Π½ΠΈ.
Π£ΡΠ»ΠΎΠΆΠ½ΡΠ²Π°ΠΌΠ΅ Π·Π°Π΄Π°ΡΠ°ΡΠ°, Π²ΡΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ Π³ΡΠ΅ΡΠΊΠ° ΠΈ Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ ΡΠ΅ Π·Π°ΠΏΠ°Π·ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ° β ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΈΠ»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅.
ΠΡΠ΅ Π²Π΅Π΄Π½ΡΠΆ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΡΠ°:
Kill ^A
TSTART
Set ^a(1) = 1
Set ^a(2) = 2
Set ^a(3) = 3Π‘Π»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π½ΠΎ ΡΠΏΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Π³ΠΎ ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΈ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΠΌΠ΅.
docker kill my-irisΠ’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Π° Π½Π° forcibly shutting down power, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΡΠΈΠ³Π½Π°Π» Π·Π° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° SIGKILL.
ΠΠΎΠΆΠ΅ Π»ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ° Π΄Π° Π΅ ΠΎΡΡΠ°Π½Π°Π»Π° ΡΠ°ΡΡΠΈΡΠ½ΠΎ?
WRITE ^a(1), ^a(2), ^a(3)
^
^a(1)β ΠΠ΅, Π½Π΅ Π΅ ΠΎΡΡΠ°Π½Π°Π»Π°.
ΠΠ° ΠΈΠ·ΠΏΡΠΎΠ±Π²Π°ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π·Π° ΠΎΡΠΊΠ°Ρ:
Kill ^A
TSTART
Set ^a(1) = 1
Set ^a(2) = 2
Set ^a(3) = 3
TROLLBACK
WRITE ^a(1), ^a(2), ^a(3)
^
^a(1)Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π½ΠΈΡΠΎ Π½Π΅ Π΅ ΠΎΡΡΠ°Π½Π°Π»ΠΎ.
2. Π‘ΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ
Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π² Π³Π»ΠΎΠ±Π°Π»ΠΈΡΠ΅ ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ ΠΏΡΠ°Π²ΡΡ ΠΈ Π½Π° Π³Π»ΠΎΠ±Π°Π»ΠΈΡΠ΅ (Π΄Π° Π½Π°ΠΏΠΎΠΌΠ½Ρ, ΡΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΡ Π΅ ΠΏΠΎ-Π½ΠΈΡΠΊΠΎΡΡΠ΅ΠΏΠ΅Π½Π½Π° ΡΡΡΡΠΊΡΡΡΠ° Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠ°Π±Π»ΠΈΡΠ°), Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½Π΅ΡΠΎ Π·Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ, ΠΏΡΠΎΠΌΡΠ½Π°ΡΠ° Π½Π° ΠΊΠ»ΡΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈ Π² ΡΡΡΠ°ΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, Π² ΠΊΠΎΡΡΠΎ ΠΈ ΠΏΡΠΎΠΌΡΠ½Π°ΡΠ° Π½Π° Π³Π»ΠΎΠ±Π°Π»Π°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ°ΠΌΠ΅ Π³Π»ΠΎΠ±Π°Π» ^person, Π² ΠΊΠΎΠΉΡΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΠΌΠ΅ Π»ΠΈΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΊΠ°ΡΠΎ ΠΊΠ»ΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΠΠ.
^person(1234567, βfirstnameβ) = βΠ‘Π΅ΡΠ³Π΅ΠΉβ
^person(1234567, βlastnameβ) = βΠΠ°ΠΌΠ΅Π½Π΅Π²β
^person(1234567, βphoneβ) = β+74995555555
...ΠΠ° Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ Π±ΡΡΠ·ΠΎ ΡΡΡΡΠ΅Π½Π΅ ΠΏΠΎ ΡΠ°ΠΌΠΈΠ»ΠΈΡ ΠΈ ΠΈΠΌΠ΅, Π½Π°ΠΏΡΠ°Π²ΠΈΡ ΠΌΠ΅ ΠΊΠ»ΡΡ ^index.
^index(βΠΠ°ΠΌΠ΅Π½Π΅Π²β, βΠ‘Π΅ΡΠ³Π΅ΠΉβ, 1234567) = 1ΠΠ° Π΄Π° Π΅ Π±Π°Π·Π°ΡΠ° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ°, ΡΡΡΠ±Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ Π»ΠΈΡΠ½ΠΎΡΡΡΠ° ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
TSTART
^person(1234567, βfirstnameβ) = βΠ‘Π΅ΡΠ³Π΅ΠΉβ
^person(1234567, βlastnameβ) = βΠΠ°ΠΌΠ΅Π½Π΅Π²β
^person(1234567, βphoneβ) = β+74995555555
^index(βΠΠ°ΠΌΠ΅Π½Π΅Π²β, βΠ‘Π΅ΡΠ³Π΅ΠΉβ, 1234567) = 1
TCOMMITΠ‘ΡΠΎΡΠ²Π΅ΡΠ½ΠΎ, ΠΏΡΠΈ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ ΡΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ:
TSTART
Kill ^person(1234567)
ZKill ^index(βΠΠ°ΠΌΠ΅Π½Π΅Π²β, βΠ‘Π΅ΡΠ³Π΅ΠΉβ, 1234567)
TCOMMITΠ‘ Π΄ΡΡΠ³ΠΈ Π΄ΡΠΌΠΈ, ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½Π΅ΡΠΎ Π·Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Π»Π΅ΠΆΠΈ ΠΈΠ·ΡΡΠ»ΠΎ Π½Π° ΡΠ°ΠΌΠ΅Π½Π΅ΡΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠ°. ΠΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ°Π²Π° Π²ΡΠΏΡΠΎΡ Π·Π° Π³Π»ΠΎΠ±Π°Π»ΠΈ β ΡΠΎΠ²Π° Π΅ Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ, ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π½ΠΈΡΠΊΠΎΡΡΠ΅ΠΏΠ΅Π½Π½Π°ΡΠ° ΠΈΠΌ ΠΏΡΠΈΡΠΎΠ΄Π°.
3. ΠΠ·ΠΎΠ»Π°ΡΠΈΡ
Π’ΡΠΊ Π·Π°ΠΏΠΎΡΠ²Π°Ρ Π΄Π΅Π±ΡΠΈΡΠ΅. ΠΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΡΠ°Π±ΠΎΡΡΡ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π² Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° Π±Π°Π·Π°, ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ΡΡΡΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ.
Π‘ΠΈΡΡΠ°ΡΠΈΡΡΠ° Π΅ ΡΡΠ°Π²Π½ΠΈΠΌΠ° Ρ ΡΠΎΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ°Π±ΠΎΡΡΡ Ρ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡΠΈ ΠΊΠΎΠ΄ΠΎΠ² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°Ρ Π΄Π° Π²ΠΏΠΈΡΠ²Π°Ρ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π² ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
ΠΠ°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ΡΠ°Π²Π° Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΠΌΠ°ΠΉΠΊΠΈ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ Π² ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π΄ΠΎΡΠΈ ΠΈΠΌΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΡΠΎΠ²Π΅ΠΊ, ΠΊΠΎΠΉΡΠΎ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅ (Π·Π° ΡΠ»ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ ΠΈ Ρ.Π½.), Π° ΠΠ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π° Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅, ΡΡΠ°Π²Π° ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠ° Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΉΡΠΎ Ρ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°.
ΠΠ°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ ΡΠΌΠΈΡΡΠ»Π° Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΡΠ°, ΠΈΠ·Π²ΡΡΡΠ²Π°Π½ΠΈ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅, Π·Π° Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΠ°Π±ΠΎΡΡΡ Ρ Π΅Π΄Π½ΠΈ ΠΈ ΡΡΡΠΈ Π΄Π°Π½Π½ΠΈ. Π’Ρ ΠΌΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎ Π΄Π° Π°Π½ΡΠ»ΠΈΡΠ° Π΅Π΄Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈ Π½Π° Π΄ΡΡΠ³Π°, ΠΈΠ»ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ.
ΠΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π΅, ΡΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ (ΠΏΡΠ΅Π΄ΠΈ ΠΊΠΎΠΌΠΈΡΠ°), ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° Π±Π°Π·Π°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ Π½Π΅ΡΡΠ³Π»Π°ΡΡΠ²Π°Π½ΠΎ, Π·Π°ΡΠΎΠ²Π° Π΅ ΠΆΠ΅Π»Π°ΡΠ΅Π»Π½ΠΎ Π΄Π° Π½ΡΠΌΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π½Π΅ΡΡΠ³Π»Π°ΡΡΠ²Π°Π½ΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π° Π² ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΠΠ ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°ΡΠΈΠ½ΠΈ: ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ½ΠΈ ΡΠ½ΠΈΠΌΠΊΠΈ, ΠΌΠ½ΠΎΠ³ΠΎΠ²Π΅ΡΡΠΈΠΎΠ½Π½ΠΎΡΡ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅ ΠΈ Ρ.Π½.
ΠΡΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π΅ Π²Π°ΠΆΠ½ΠΎ ΡΠ΅ Π΄Π° Π½Π΅ ΡΠΈ ΠΏΡΠ΅ΡΠ°Ρ. Π’ΠΎΠ²Π° Π΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ.
SQL ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ 4 Π½ΠΈΠ²Π° Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ:
- READ UNCOMMITTED
- READ COMMITTED
- REPEATABLE READ
- SERIALIZABLE
ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π²ΡΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΎ. Π Π°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π²ΡΡΠΊΠΎ Π½ΠΈΠ²ΠΎ Π½Π°ΡΠ°ΡΡΠ²Π°Ρ ΠΏΠΎΡΡΠΈ Π΅ΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°Π»Π½ΠΎ.
READ UNCOMMITTED β ΡΠΎΠ²Π° Π΅ Π½Π°ΠΉ-Π½ΠΈΡΠΊΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ, Π½ΠΎ ΠΈ Π½Π°ΠΉ-Π±ΡΡΠ·ΠΎΡΠΎ. Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ΡΠ°Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈΡΠ΅.
READ COMMITTED β ΡΠΎΠ²Π° Π΅ ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡ. Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ΡΠ°Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈΡΠ΅, ΠΏΡΠ΅Π΄ΠΈ ΠΊΠΎΠΌΠΈΡΠ°, Π½ΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ΡΠ°Ρ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ ΡΠ»Π΅Π΄ ΠΊΠΎΠΌΠΈΡΠ°.
ΠΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π΄ΡΠ»Π³Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π’1, Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΡΡΠΎ ΡΠ° ΠΈΠ·Π²ΡΡΡΠ΅Π½ΠΈ ΠΊΠΎΠΌΠΈΡΠΈ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΡΠ΅ Π’2, Π’3 ... Π’n, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Ρ Π΅Π΄Π½ΠΈ ΠΈ ΡΡΡΠΈ Π΄Π°Π½Π½ΠΈ ΠΊΠ°ΡΠΎ Π’1, ΡΠΎ ΠΏΡΠΈ Π·Π°ΡΠ²ΠΊΠ° Π·Π° Π΄Π°Π½Π½ΠΈ Π² Π’1 ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ. Π’ΠΎΠ·ΠΈ ΡΠ΅Π½ΠΎΠΌΠ΅Π½ ΡΠ΅ Π½Π°ΡΠΈΡΠ° Π½Π΅ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΠΎ ΡΠ΅ΡΠ΅Π½Π΅.
REPEATABLE READ β Π½Π° ΡΠΎΠ²Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½ΡΠΌΠ°ΠΌΠ΅ ΡΠ΅Π½ΠΎΠΌΠ΅Π½Π° Π½Π° Π½Π΅ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΠΎ ΡΠ΅ΡΠ΅Π½Π΅, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΊΡΠ°, ΡΠ΅ Π·Π° Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ° Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ½Π° ΡΠ½ΠΈΠΌΠΊΠ° Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΈ ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² ΡΡΡΠ°ΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΎΡ ΡΠ½ΠΈΠΌΠΊΠ°ΡΠ°. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π½Π° ΡΠΎΠ²Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° ΡΠ°Π½ΡΠΎΠΌΠ½ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠΌΠ°Ρ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠ΅ΡΠ΅Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ ΡΠ΅Π΄ΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π±ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΎΡ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΈ ΡΠΈΠΊΡΠΈΡΠ°Π½ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ.
SERIALIZABLE β Π½Π°ΠΉ-Π²ΠΈΡΠΎΠΊΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ. Π’ΠΎ ΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΠΈΡΠ° Ρ ΡΠΎΠ²Π°, ΡΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ° (ΡΠ΅ΡΠ΅Π½Π΅ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅), ΡΡΠ°Π²Π°Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π·Π° Π΄ΡΡΠ³ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΡΠ°ΠΌΠΎ ΡΠ»Π΅Π΄ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΡΠ²Π°ΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ.
ΠΠ΅ΠΊΠ° ΠΏΡΡΠ²ΠΎ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΄Π°Π»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ° Π΅ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π° ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊ. Π©Π΅ ΠΎΡΠ²ΠΎΡΠΈΠΌ 2 ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π½ΠΈ ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ°.
Kill ^t
Write ^t(1)
2
TSTART
Set ^t(1)=2ΠΠ·ΠΎΠ»Π°ΡΠΈΡ Π½ΡΠΌΠ°. ΠΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ Π²ΠΈΠΆΠ΄Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΠΈ Π²ΡΠΎΡΠΈΡΡ, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΎΡΠΊΡΠΈΠ» ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ°.
ΠΠ΅ΠΊΠ° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Π΄Π°Π»ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΡΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΡΠΎΡΠΈ Π²ΠΈΠΆΠ΄Π°Ρ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π² ΡΡΡ .
Π©Π΅ ΠΎΡΠ²ΠΎΡΠΈΠΌ 2 ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π½ΠΈ ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° ΠΈ ΡΠ΅ ΠΎΡΠΊΡΠΈΠ΅ΠΌ 2 ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ.
kill ^t
TSTART
Write ^t(1)
3
TSTART
Set ^t(1)=3
ΠΠ°ΡΠ°Π»Π΅Π»Π½ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π²ΠΈΠΆΠ΄Π°Ρ Π΄Π°Π½Π½ΠΈΡΠ΅ Π΅Π΄Π½Π° Π½Π° Π΄ΡΡΠ³Π°. Π ΡΠ°ΠΊΠ°, ΠΏΠΎΠ»ΡΡΠΈΡ ΠΌΠ΅ Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠΎΡΠΎ, Π½ΠΎ ΠΈ Π½Π°ΠΉ-Π±ΡΡΠ·ΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ READ UNCOMMITED.
ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π° Π·Π° Π³Π»ΠΎΠ±Π°Π»Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Π·Π° ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π±ΠΈΠ»Π° Π½Π° ΠΏΡΡΠ²ΠΎ ΠΌΡΡΡΠΎ.
ΠΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ, Π°ΠΊΠΎ Π½ΠΈ ΡΡΡΠ±Π²Π° ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ ΠΏΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Ρ Π³Π»ΠΎΠ±Π°Π»ΠΈΡΠ΅?
Π’ΡΠΊ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ Π·Π°ΠΌΠΈΡΠ»ΠΈΠΌ Π·Π°ΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠΎ ΡΠ° Π½ΡΠΆΠ½ΠΈ Π½ΠΈΠ²Π°ΡΠ° Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ ΠΈ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΡΡ.
ΠΠ°ΠΉ-Π²ΠΈΡΠΎΠΊΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ SERIALIZE ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π΅ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΠΎ ΠΈΠΌ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠ° Π»ΠΈΠΏΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ.
Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² ObjectScript, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°ΡΠΈΠ½ΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ, ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ½ΠΈ, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° .
ΠΠΎ-Π½ΠΈΡΠΊΠΈΡΠ΅ Π½ΠΈΠ²Π° Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ ΡΠ° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΠΈ, Π½Π°ΡΠΎΡΠ΅Π½ΠΈ ΠΊΡΠΌ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ.
ΠΠ΅ΠΊΠ° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½ΠΈΠ²Π° Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ.
Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π²Π·ΠΈΠΌΠ°ΠΌΠ΅ Π½Π΅ ΡΠ°ΠΌΠΎ Π΅ΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π΄Π°Π½Π½ΠΈ, Π½ΠΎ ΠΈ Ρ.Π½Π°Ρ. shared, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π²Π·ΠΈΠΌΠ°Π½ΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠ°, ΠΊΠΎΠ³Π°ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΡΠ΅ΡΠ°Ρ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΎΠΌΠ΅Π½ΡΠ½ΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ΅ΡΠ΅Π½Π΅ΡΠΎ.
ΠΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π΄Π²ΡΡΠ°Π·Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° Π±ΡΠ»Π³Π°ΡΡΠΊΠΈ ΠΈ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈ Π΅Π·ΠΈΡΠΈ:
β
β
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΅ Π² ΡΠΎΠ²Π°, ΡΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° Π±Π°Π·Π°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ Π½Π΅ΡΡΠ³Π»Π°ΡΡΠ²Π°Π½ΠΎ, Π½ΠΎ ΡΠ΅Π·ΠΈ Π½Π΅ΡΡΠ³Π»Π°ΡΡΠ²Π°Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΡΠ° Π²ΠΈΠ΄ΠΈΠΌΠΈ Π·Π° Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ. ΠΠ°ΠΊ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌ ΡΠΎΠ²Π°?
ΠΠΈΠ΅ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ°ΠΊΠΈΠ²Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Π½Π° Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ, Π² ΠΊΠΎΠΈΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° Π±Π°Π·Π°ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΡΡΠ³Π»Π°ΡΡΠ²Π°Π½ΠΎ. Π Π²ΡΠΈΡΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠΈ Π΄ΠΎ ΡΠ°ΠΊΠΈΠ²Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Π½Π° ΡΡΠ³Π»Π°ΡΡΠ²Π°Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΠΎΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ.
Π‘ΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΡΡΡΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ°Π·ΠΎΠ²ΠΈ β Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° Π³ΠΈ Π²Π·Π΅ΠΌΠ°Ρ. Π’Π΅Π·ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π·Π°Π±ΡΠ°Π½ΡΠ²Π°Ρ Π½Π° Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΡ Π΄Π°Π½Π½ΠΈΡΠ΅, Ρ.Π΅. ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΡΠΎΡΠΌΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΠ.
ΠΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π΄Π°Π½Π½ΠΈ β ΡΠ°ΠΊΠ°Π²Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π²Π·Π΅ΡΠ° ΡΠ°ΠΌΠΎ ΠΎΡ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅Ρ. ΠΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½Π°ΡΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π²Π·Π΅ΡΠ° ΠΎΡ:
- ΠΡΡΠΊΠ°ΠΊΡΠ² ΠΏΡΠΎΡΠ΅Ρ, Π°ΠΊΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ° ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΈ
- Π‘Π°ΠΌΠΎ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΡΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ ΠΈΠΌΠ° Π½Π° ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΈ ΠΏΡΡΠ²ΠΈ Π΅ Π·Π°ΡΠ²ΠΈΠ» Π΅ΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°.

ΠΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎ-ΡΡΡΠ½ΠΎ Π΅ ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΡΡ Π½Π° Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Π΄ΡΠ»Π³ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΡΠ°ΠΊΠ²Π°Ρ Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ, Π½ΠΎ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΠΠ Π² Π½Π΅Π³ΠΎ.
READ_COMMITED β ΡΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠΎΠ²Π° Π½ΠΈΠ²ΠΎ Π΅, ΡΠ΅ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΠ°ΠΌΠΎ ΠΊΠΎΠΌΠΈΡΠΈΡΠ°Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ. ΠΠΊΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ Π² Π΄ΡΡΠ³Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π½Π΅ ΡΠ° ΠΊΠΎΠΌΠΈΡΠΈΡΠ°Π½ΠΈ, Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΡΡ Π½Π°ΡΠ° ΡΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ.
Π’ΠΎΠ²Π° Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ°ΠΊΠ°ΠΌΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΡΠ°.
ΠΠ΅Π· ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ Ρ ΠΈΡΡΠΎΡΡΠΈ Π½ΡΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΡΡΠ°ΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π² IRIS, Π·Π°ΡΠΎΠ²Π° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΠΌ Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ.
Π‘ΡΠΎΡΠ²Π΅ΡΠ½ΠΎ ΡΠ΅ ΡΡΡΠ±Π²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π° ΡΠ°Π·ΡΠ΅ΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½Π΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ ΡΠ°ΠΌΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠΈ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ.
ΠΠΎΠΏΡΡΠΊΠ°ΠΌΠ΅, ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Π±Π°Π·Π° Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ^person, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π²Π΅ΠΆΠ΄Π°Ρ ΠΏΠ°ΡΠΈ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ.
ΠΠΎΠΌΠ΅Π½ΡΡΡ Π½Π° ΠΏΡΠ΅Π²ΠΎΠ΄ ΠΎΡ ΠΏΠ΅ΡΡΠΎΠ½Π° 123 ΠΊΡΠΌ ΠΏΠ΅ΡΡΠΎΠ½Π° 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)ΠΠΎΠΌΠ΅Π½ΡΡΡ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π·Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΡΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΡΠΎΠ½Π° 123 ΠΏΡΠ΅Π΄ΠΈ ΡΠ΄ΡΡΠΆΠ°Π½Π΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΈΠ΄ΡΡΠΆΠ΅Π½ ΠΎΡ Π΅ΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° (ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅):
LOCK +^person(123)
Write ^person(123)Π Π°ΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΅ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΌΠ΅ΡΠΊΠ°ΡΠ° Π² Π»ΠΈΡΠ½ΠΈΡ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π΄Π° Π½Π΅ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅:
LOCK +^person(123)#βSβ
Write ^person(123)ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π°ΠΊΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Ρ ΠΠ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠΈΠ³Π½ΠΎΠ²Π΅Π½ΠΎ (Π½Π°ΠΏΠΎΠΌΠ½ΡΠΌ, ΡΠ΅ Π³Π»ΠΎΠ±Π°Π»ΠΈΡΠ΅ β ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π½ΠΈΡΠΊΠΎΡΡΠ΅ΠΏΠ΅Π½Π½Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΎΡ ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠ°Π±Π»ΠΈΡΠ°), Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΡΠΎΠ²Π° Π½ΠΈΠ²ΠΎ ΠΎΡΠΏΠ°Π΄Π°.
REPEATABLE READ β Π² ΡΠΎΠ²Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ ΡΠ΅ Π΄ΠΎΠΏΡΡΠΊΠ°, ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·Π²ΡΡΡΠ΅Π½ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈ ΠΎΡ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ.
Π‘ΡΠΎΡΠ²Π΅ΡΠ½ΠΎ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΡΠ°Π²ΡΠΌΠ΅ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅, ΠΈ Π΅ΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π·Π° Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ LOCK ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π΄Π° ΠΈΠ·Π±ΡΠΎΠΈ Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ.
LOCK +^person(123, amount)#βSβ
ΡΠ΅ΡΠ΅Π½Π΅ ^person(123, amount)Π΄ΡΡΠ³ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (Π² ΡΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΈ ΠΏΠΎΡΠΎΡΠΈ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°Ρ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ^person(123, amount), Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ)
LOCK +^person(123, amount)
ΠΏΡΠΎΠΌΡΠ½Π° ^person(123, amount)
LOCK -^person(123, amount)
ΡΠ΅ΡΠ΅Π½Π΅ ^person(123, amount)
LOCK -^person(123, amount)#βSβΠΠΎΠ³Π°ΡΠΎ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡΡΠ° ΡΠ΅ ΠΈΠ·Π±ΡΠΎΡΠ²Π°Ρ ΡΡΠ΅Π· Π·Π°ΠΏΠ΅ΡΠ°Ρ, ΡΠ΅ ΡΠ΅ Π²Π·ΠΈΠΌΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π½ΠΎ Π°ΠΊΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ°ΠΊΠ°:
LOCK +(^person(123),^person(242))ΡΠ΅ ΡΠ΅ Π²Π·ΠΈΠΌΠ°Ρ Π°ΡΠΎΠΌΠ½ΠΎ Π²ΡΠΈΡΠΊΠΈΡΠ΅ Π²Π΅Π΄Π½Π°Π³Π°.
SERIALIZE β ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΠΌ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡΡΠ° ΡΠ°ΠΊΠ°, ΡΠ΅ Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° Π²ΡΠΈΡΠΊΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ ΠΎΠ±ΡΠΈ Π΄Π°Π½Π½ΠΈ, Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ. ΠΠ° ΡΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π΅ΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΠΈ ΠΈ Π΄Π° ΡΠ΅ Π²Π·ΠΈΠΌΠ°Ρ Π½Π° Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΈΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π° Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ.
ΠΠΊΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½ΠΈΡ Π½Π° ΡΡΠ΅Π΄ΡΡΠ²Π° Π² Π³Π»ΠΎΠ±Π°Π»Π° ^person, ΡΠΎ Π·Π° Π½Π΅Π³ΠΎ Π΅ ΠΏΡΠΈΠ΅ΠΌΠ»ΠΈΠ²ΠΎ ΡΠ°ΠΌΠΎ Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ SERIALIZE, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠ°ΡΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Ρ Π°ΡΡΠ°Ρ ΡΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΠΈΠ½Π°ΡΠ΅ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·Ρ Π°ΡΡΠΈ Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° ΡΡΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΡΠΈ.
4. ΠΡΠ»Π³ΠΎΠ²Π΅ΡΠ½ΠΎΡΡ
ΠΡΠΎΠ²Π΅Π΄ΠΎΡ ΡΠ΅ΡΡΠΎΠ²Π΅ Ρ ΡΡΠ·ΠΊΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΡΠ΅Π·
docker kill my-irisΠΠ°Π·Π°ΡΠ° ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈΠ·Π΄ΡΡΠΆΠ°. ΠΠ΅ Π±ΡΡ Π° ΠΎΡΠΊΡΠΈΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ° Π³Π»ΠΎΠ±Π°Π»ΠΈΡΠ΅ Π² InterSystems IRIS ΠΈΠΌΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. Π’Π΅ ΡΠ° Π½Π°ΠΈΡΡΠΈΠ½Π° Π°ΡΠΎΠΌΠ½ΠΈ ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ. ΠΠ° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΡΡ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΏΡΠΈ Π³Π»ΠΎΠ±Π°Π»ΠΈΡΠ΅ ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΡΡΠΈΠ»ΠΈΡ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠ° ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π½Π΅ ΠΏΡΠΈΡΠ΅ΠΆΠ°Π²Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΊΠ°ΡΠΎ Π²ΡΠ½ΡΠ½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅.
ΠΠΈΠ²ΠΎΡΠΎ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ ΠΏΡΠΈ Π³Π»ΠΎΠ±Π°Π»ΠΈΡΠ΅ Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡ Π΅ READ UNCOMMITTED, Π° ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΠΈ Π΄ΠΎ Π½ΠΈΠ²ΠΎΡΠΎ SERIALIZE.
ΠΠΎΡΠ΅ΠΊΡΠ½ΠΎΡΡΡΠ° ΠΈ ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΏΡΠΈ Π³Π»ΠΎΠ±Π°Π»ΠΈΡΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΌΠ°ΠΉΡΡΠΎΡΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠ°: ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎ-ΡΠΈΡΠΎΠΊΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΈ ΡΠ΅ΡΠ΅Π½Π΅, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠΎ Π΅ Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ, Π° ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎ-ΡΠ΅ΡΠ½ΠΎ ΡΠ΅ Π²Π·ΠΈΠΌΠ°Ρ Π΅ΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΠΈ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡ, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ° Π΅ Π±ΡΡΠ·ΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
