Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² Π³Π»ΠΎΠ±Π°Π»ΠΈΡ‚Π΅ Π½Π° InterSystems IRIS

Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² Π³Π»ΠΎΠ±Π°Π»ΠΈΡ‚Π΅ Π½Π° InterSystems IRISΠ‘Π£Π‘Π” InterSystems IRIS ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π»ΡŽΠ±ΠΎΠΏΠΈΡ‚Π½ΠΈ структури Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ β€” Π³Π»ΠΎΠ±Π°Π»ΠΈ. По ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ, Ρ‚Π΅ прСдставляват ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΈΠΌΠΈ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π±ΡŠΡ€Π·ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° ΠΎΠ±Ρ…ΠΎΠ΄ Π½Π° Π΄Π°Π½Π½ΠΈ, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ собствСн Π΅Π·ΠΈΠΊ ObjectScript.

ΠŸΠΎΠ²Π΅Ρ‡Π΅ Π·Π° Π³Π»ΠΎΠ±Π°Π»ΠΈΡ‚Π΅ Π² Ρ†ΠΈΠΊΡŠΠ»Π° статии Β«Π“Π»ΠΎΠ±Π°Π»ΠΈ β€” ΠΌΠ΅Ρ‡ΠΈ-ΠΊΠ»Π°Π΄Π΅Π½Ρ†ΠΈ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈΒ»:

Π”Π΅Ρ€Π΅Π²ΡŒΡ. Част 1
Π”Π΅Ρ€Π΅Π²ΡŒΡ. Част 2
Π Π°Π·Ρ€Π΅Π΄Π΅Π½ΠΈ масиви. Част 3

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ ΠΌΠΈ стана ΠΊΠ°ΠΊ са Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π² Π³Π»ΠΎΠ±Π°Π»ΠΈΡ‚Π΅ ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ особСности ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚. ВсС ΠΏΠ°ΠΊ, Ρ‚ΠΎΠ²Π° Π΅ съвсСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Π° структура Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² сравнСниС с ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΈΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ. Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-нискоуровнСва.

ΠšΠ°ΠΊΡ‚ΠΎ Π΅ извСстно ΠΎΡ‚ тСорията Π½Π° Ρ€Π΅Π»Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Π΄ΠΎΠ±Ρ€Π°Ρ‚Π° рСализация Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ трябва Π΄Π° отговаря Π½Π° изискванията ACID:

A β€” Atomic (атомарност). Записват сС всички ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ Π² транзакцията, ΠΈΠ»ΠΈ Π½ΠΈΡ‚ΠΎ Π΅Π΄Π½Π°.

Π‘ β€” Consistency (консистСнтност). Π‘Π»Π΅Π΄ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° транзакцията логичСското ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° Π‘Π” трябва Π΄Π° бъдС Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΎ Π½Π΅ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²ΠΎ. ΠžΡ‚Ρ‡Π°ΡΡ‚ΠΈ Ρ‚ΠΎΠ²Π° изискванС касаС програмиста, Π½ΠΎ Π² случая Π½Π° SQL-Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Ρ‚ΠΎ сС отнася ΠΈ Π·Π° Π²ΡŠΠ½ΡˆΠ½ΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅.

I β€” Isolate (изолираност). ΠŸΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‰ΠΈΡ‚Π΅ сС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π΅ трябва Π΄Π° ΠΎΠΊΠ°Π·Π²Π°Ρ‚ влияниС Π΅Π΄Π½Π° Π½Π° Π΄Ρ€ΡƒΠ³Π°.

D β€” Durable (Π΄ΡŠΠ»Π³ΠΎΠ²Π΅Ρ‡Π½ΠΎΡΡ‚). Π‘Π»Π΅Π΄ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° транзакцията, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° ΠΏΠΎ-нискитС Π½ΠΈΠ²Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, авария Π½Π° Π·Π°Ρ…Ρ€Π°Π½Π²Π°Π½Π΅Ρ‚ΠΎ) Π½Π΅ трябва Π΄Π° ΠΎΠΊΠ°Π·Π²Π°Ρ‚ влияниС Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅, ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΈ ΠΎΡ‚ транзакцията.

Π“Π»ΠΎΠ±Π°Π»ΠΈΡ‚Π΅ са Π½Π΅Ρ€Π΅Π»Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ структури ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ. Π’Π΅ са създадСни Π·Π° ΡΠ²Ρ€ΡŠΡ…Π±ΡŠΡ€Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½Π΅. НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² Π³Π»ΠΎΠ±Π°Π»ΠΈΡ‚Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° официалния docker-ΠΎΠ±Ρ€Π°Π· Π½Π° IRIS.

Π—Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² IRIS сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅: TSTART, TCOMMIT, TROLLBACK.

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, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°Ρ‚ мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡ€Π°Π²ΠΈΠΌ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ, ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΈ, мноТСствСни Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ с ΠΊΠΎΠΌΠ°Π½Π΄Π° LOCK.

По-нискитС Π½ΠΈΠ²Π° Π½Π° изолация са компромиси, насочСни към ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ скоростта Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ.

НСка Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° постигнСм Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½ΠΈΠ²Π° Π½Π° изолация с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° позволява Π΄Π° Π²Π·ΠΈΠΌΠ°ΠΌΠ΅ Π½Π΅ само Сксклузивни Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° промяна Π½Π° Π΄Π°Π½Π½ΠΈ, Π½ΠΎ ΠΈ Ρ‚.Π½Π°Ρ€. shared, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π²Π·ΠΈΠΌΠ°Π½ΠΈ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ ΠΎΡ‚ няколко ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС Ρ‡Π΅Ρ‚Π°Ρ‚ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ промСняни ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ процСси ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ.

ΠŸΠΎΠ²Π΅Ρ‡Π΅ информация Π·Π° двуфазния ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° Π±ΡŠΠ»Π³Π°Ρ€ΡΠΊΠΈ ΠΈ английски Π΅Π·ΠΈΡ†ΠΈ:

β†’ Π”Π²ΡƒΡ„Π°Π·Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°
β†’ Two-phase locking

БлоТността Π΅ Π² Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° транзакцията ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π±Π°Π·Π°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ Π½Π΅ΡΡŠΠ³Π»Π°ΡΡƒΠ²Π°Π½ΠΎ, Π½ΠΎ Ρ‚Π΅Π·ΠΈ Π½Π΅ΡΡŠΠ³Π»Π°ΡΡƒΠ²Π°Π½ΠΈ Π΄Π°Π½Π½ΠΈ са Π²ΠΈΠ΄ΠΈΠΌΠΈ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ процСси. Как Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌ Ρ‚ΠΎΠ²Π°?

НиС Ρ‰Π΅ създадСм с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ‚Π°ΠΊΠΈΠ²Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Ρ†ΠΈ Π½Π° видимост, Π² ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π±Π°Π·Π°Ρ‚Π° Ρ‰Π΅ бъдС ΡΡŠΠ³Π»Π°ΡΡƒΠ²Π°Π½ΠΎ. И всички Π΄ΠΎΡΡ‚ΡŠΠΏΠΈ Π΄ΠΎ Ρ‚Π°ΠΊΠΈΠ²Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Ρ†ΠΈ Π½Π° ΡΡŠΠ³Π»Π°ΡΡƒΠ²Π°Π½ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

Π‘ΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° ΡΡŠΡ‰ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡ€Π°Π·ΠΎΠ²ΠΈ β€” няколко процСса ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π³ΠΈ Π²Π·Π΅ΠΌΠ°Ρ‚. Π’Π΅Π·ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ забраняват Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ процСси Π΄Π° промСнят Π΄Π°Π½Π½ΠΈΡ‚Π΅, Ρ‚.Π΅. Ρ‚Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Ρ†ΠΈ с послСдоватСлно ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° Π‘Π”.

Ексклузивни Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° промяна Π½Π° Π΄Π°Π½Π½ΠΈ β€” Ρ‚Π°ΠΊΠ°Π²Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π²Π·Π΅Ρ‚Π° само ΠΎΡ‚ Π΅Π΄ΠΈΠ½ процСс. Ексклузивната Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π²Π·Π΅Ρ‚Π° ΠΎΡ‚:

  1. Π’ΡΡΠΊΠ°ΠΊΡŠΠ² процСс, Π°ΠΊΠΎ Π΄Π°Π½Π½ΠΈΡ‚Π΅ са свободни
  2. Π‘Π°ΠΌΠΎ Ρ‚ΠΎΠ·ΠΈ процСс, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠΌΠ° Π½Π° Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ сподСлСна Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ ΠΏΡŠΡ€Π²ΠΈ Π΅ заявил Сксклузивна Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°.

Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² Π³Π»ΠΎΠ±Π°Π»ΠΈΡ‚Π΅ Π½Π° InterSystems IRIS

ΠšΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎ-тясно Π΅ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†ΡŠΡ‚ Π½Π° видимост, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-дълго трябва Π΄Π° ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ процСси, Π½ΠΎ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-послСдоватСлно ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π‘Π” Π² Π½Π΅Π³ΠΎ.

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster