Π‘Π£ΠΠ 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
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Π° Π½Π°ΡΠΈΠ»ΡΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΈΡΠ°Π½ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΠ³Π½Π°Π» Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° SIGKILL.
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ½ΠΎ?
WRITE ^a(1), ^a(2), ^a(3)
^
<UNDEFINED> ^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)
^
<UNDEFINED> ^a(1)
Π’ΠΎΠΆΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»ΠΎΡΡ.
2. Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² Π±Π°Π·Π°Ρ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π°Ρ ΠΊΠ»ΡΡΠΈ Π΄Π΅Π»Π°ΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π°Ρ (Π½Π°ΠΏΠΎΠΌΠ½Ρ, ΡΡΠΎ Π³Π»ΠΎΠ±Π°Π» β ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , ΡΠ΅ΠΌ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ°), Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ° Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΡ ΠΆΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, ΡΡΠΎ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»Π°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Ρ Π½Π°Ρ Π΅ΡΡΡ Π³Π»ΠΎΠ±Π°Π» ^person, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Ρ ΡΠ°Π½ΠΈΠΌ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠΈ ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΡΡΠ° ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΠΠ.
^person(1234567, βfirstnameβ) = βSergeyβ
^person(1234567, βlastnameβ) = βKamenevβ
^person(1234567, βphoneβ) = β+74995555555
...
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π±ΡΡΡΡΡΠΉ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ ΡΠ°ΠΌΠΈΠ»ΠΈΠΈ ΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΊΠ»ΡΡ ^index.
^index(βKamenevβ, βSergeyβ, 1234567) = 1
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π±Π°Π·Π° Π±ΡΠ»Π° ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π° ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΡ ΡΠ°ΠΊ:
TSTART
^person(1234567, βfirstnameβ) = βSergeyβ
^person(1234567, βlastnameβ) = βKamenevβ
^person(1234567, βphoneβ) = β+74995555555
^index(βKamenevβ, βSergeyβ, 1234567) = 1
TCOMMIT
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ:
TSTART
Kill ^person(1234567)
ZKill ^index(βKamenevβ, βSergeyβ, 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, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΠ°ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΊΠΎΠ³Π΄Π° ΠΈΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ Π΄Π²ΡΡ ΡΠ°Π·Π½ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΠΈ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ°Ρ :
β
β
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π±Π°Π·Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΈ Π½Π΅ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π²ΠΈΠ΄Π½Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ. ΠΠ°ΠΊ ΡΡΠΎΠ³ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ?
ΠΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΡΠ°ΠΊΠΈΠ΅ ΠΎΠΊΠ½Π° Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π±Π°Π·Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΎ. Π Π²ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ°ΠΊΠΈΠΌ ΠΎΠΊΠ½Π°ΠΌ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ.
Shared-Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ Π΄Π°Π½Π½ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ°Π·ΠΎΠ²ΡΠ΅ β ΠΈΡ ΠΌΠΎΠ³ΡΡ Π²Π·ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΡΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π·Π°ΠΏΡΠ΅ΡΠ°ΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅, Ρ.Π΅. ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΊΠΎΠ½ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΠ.
ΠΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π΄Π°Π½Π½ΡΡ β ΡΠ°ΠΊΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π²Π·ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅ΡΡ. ΠΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π²Π·ΡΡΡ:
- ΠΡΠ±ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Ρ
- Π’ΠΎΠ»ΡΠΊΠΎ ΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ Π½Π° ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ shared-Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ Π·Π°ΠΏΡΠΎΡΠΈΠ» ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ.
Π§Π΅ΠΌ ΡΠΆΠ΅ ΠΎΠΊΠ½ΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΡΠ΅ΠΌ Π΄ΠΎΠ»ΡΡΠ΅ Π΅Π³ΠΎ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ ΠΆΠ΄Π°ΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ, Π½ΠΎ ΡΠ΅ΠΌ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½Π΅Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΠ Π² Π½ΡΠΌ.
READ_COMMITED β ΡΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΡΡΠΎ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡΠ΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ². ΠΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π΅ΡΡ Π½Π΅ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡΠ΅Π½Ρ, ΡΠΎ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΠΈΡ ΡΡΠ°ΡΡΡ Π²Π΅ΡΡΠΈΡ.
ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ.
ΠΠ΅Π· ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡ ΠΈΡΡΠ΅Π½ΠΈΠΉ ΠΌΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅ΡΡ ΡΡΠ°ΡΡΡ Π²Π΅ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ Π² IRIS, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ.
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π½Π°ΠΌ ΠΏΡΠΈΠ΄ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ shared Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ.
ΠΠΎΠΏΡΡΡΠΈΠΌ Ρ Π½Π°Ρ Π΅ΡΡΡ Π±Π°Π·Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ^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)
Π Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΡΡΡΠ° Π² Π»ΠΈΡΠ½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ΅, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ shared Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π΅Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
LOCK +^person(123)#βSβ
Write ^person(123)
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π΄ΠΎΠΏΡΡΡΠΈΡΡ, ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΠΠ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ (Π½Π°ΠΏΠΎΠΌΠ½Ρ, ΡΡΠΎ Π³Π»ΠΎΠ±Π°Π»Ρ β ΡΡΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π°Ρ ΡΡΡΡΠΊΡΡΡΠ°, ΡΠ΅ΠΌ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ°), ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΏΠ°Π΄Π°Π΅Ρ.
REPEATABLE READ β Π² ΡΡΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ, ΡΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ΅Π½ΠΈΠΉ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ.
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π½Π°ΠΌ ΠΏΡΠΈΠ΄ΡΡΡΡ ΡΡΠ°Π²ΠΈΡΡ shared Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΈ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΌΠ΅Π½ΡΠ΅ΠΌ.
ΠΠ»Π°Π³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ 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 UNCOMMITED, Π° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π²ΠΏΠ»ΠΎΡΡ Π΄ΠΎ ΡΡΠΎΠ²Π½Ρ SERIALIZE.
ΠΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π°Ρ
ΠΎΡΠ΅Π½Ρ ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΌΠ°ΡΡΠ΅ΡΡΡΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°: ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ shared-Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ, ΡΠ΅ΠΌ Π²ΡΡΠ΅ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ, Π° ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠ·ΠΊΠΎ Π±Π΅ΡΡΡΡΡ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com