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

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

ΠŸΠΎΠ²Π΅Ρ‡Π΅ Π·Π° Π³Π»ΠΎΠ±Π°Π»ΠΈΡ‚Π΅ Π² сСрия статии β€žΠ“Π»ΠΎΠ±Π°Π»ΠΈ - магичСски ΠΌΠ΅Ρ‡ΠΎΠ²Π΅ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈβ€œ:

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

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

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

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

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

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

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

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

Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΅ практичСски Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½Π° Π½Π° насилствСното ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Π·Π°Ρ…Ρ€Π°Π½Π²Π°Π½Π΅Ρ‚ΠΎ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° сигнал Π·Π° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ спиранС Π½Π° процСса 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') = '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 Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°.

Π£Π±ΠΈΠΉ ^t

Напиши ^t(1)
2

TSTART
Π—Π°Π΄Π°ΠΉ ^t(1)=2

Няма изолация. Π•Π΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ Π²ΠΈΠΆΠ΄Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡ€Π°Π²ΠΈ вторият, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΎΡ‚Π²ΠΎΡ€ΠΈΠ» транзакцията.

НСка Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Π΄Π°Π»ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ Π²ΠΈΠΆΠ΄Π°Ρ‚ ΠΊΠ°ΠΊΠ²ΠΎ сС случва Π²ΡŠΡ‚Ρ€Π΅ Π² тях.

Π©Π΅ ΠΎΡ‚Π²ΠΎΡ€ΠΈΠΌ 2 Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΈ Ρ‰Π΅ стартирамС 2 ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

ΡƒΠ±ΠΈΠΉ ^t
TSTART
Напиши ^t(1)
3

TSTART
Π—Π°Π΄Π°ΠΉ ^t(1)=3

ΠŸΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π²ΠΈΠΆΠ΄Π°Ρ‚ Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си. Π’Π°ΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π½Π°ΠΉ-простия, Π½ΠΎ ΠΈ Π½Π°ΠΉ-Π±ΡŠΡ€Π· niveau Π½Π° изолация READ UNCOMMITTED.

Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚, Ρ‚ΠΎΠ²Π° моТСшС Π΄Π° сС ΠΎΡ‡Π°ΠΊΠ²Π° Π·Π° Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ производитСлността Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π±ΠΈΠ»Π° Π½Π° ΠΏΡŠΡ€Π²ΠΎ място.

Как Π΄Π° ΠΏΠΎΡΡ‚ΡŠΠΏΠΈΠΌ, Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ ΠΏΠΎ-високо Π½ΠΈΠ²ΠΎ Π½Π° изолация Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ с Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ?

Π’ΡƒΠΊ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° сС замислим Π·Π°Ρ‰ΠΎ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π½ΠΈΠ²Π°Ρ‚Π° Π½Π° изолация ΠΈ ΠΊΠ°ΠΊ работят.

Най-високото Π½ΠΈΠ²ΠΎ Π½Π° изолация 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”
Ρ‡ΠΈΡ‚eΠ½Π΅ ^person(123, amount)

Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (ΠΏΠΎ Ρ‚ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ сС ΠΎΠΏΠΈΡ‚Π²Π°Ρ‚ Π΄Π° промСнят ^person(123, amount), Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚)

LOCK +^person(123, amount)
промяна ^person(123, amount)
LOCK -^person(123, amount)

Ρ‡ΠΈΡ‚eΠ½Π΅ ^person(123, amount)
LOCK -^person(123, amount)#”S”

ΠŸΡ€ΠΈ изброяванСто Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈΡ‚Π΅ с запСтая Ρ‚Π΅ сС Π²Π·ΠΈΠΌΠ°Ρ‚ послСдоватСлно, Π° Π°ΠΊΠΎ сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Ρ‚Π°ΠΊΠ°:

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

Ρ‚Π΅ сС Π²Π·ΠΈΠΌΠ°Ρ‚ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎ всичкитС Π²Π΅Π΄Π½Π°Π³Π°.

Π‘Π•Π Π˜ΠΠ›Π˜Π—ΠΠ¦Π˜Π― β€” Ρ‰Π΅ трябва Π΄Π° настроим Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка всички Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°Ρ‚ ΠΎΠ±Ρ‰ΠΈ Π΄Π°Π½Π½ΠΈ, Π΄Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ послСдоватСлно. Π—Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Сксклузивни ΠΈ Π΄Π° сС Π²Π·ΠΈΠΌΠ°Ρ‚ Π½Π° Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΈΡ‚Π΅ области Π½Π° Π³Π»ΠΎΠ±Π°Π»Π° Π·Π° производитСлност.

Ако Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° тСглСния Π½Π° срСдства Π² Π³Π»ΠΎΠ±Π°Π»Π° ^person, Ρ‚ΠΎ Π·Π° Π½Π΅Π³ΠΎ Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»ΠΈΠ² само Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° изолация Π‘Π•Π Π˜ΠΠ›Π˜Π—ΠΠ¦Π˜Π―, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΏΠ°Ρ€ΠΈΡ‚Π΅ трябва Π΄Π° сС Ρ…Π°Ρ€Ρ‡Π°Ρ‚ строго послСдоватСлно, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай Π΅ възмоТно Π΄Π° сС ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π° Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° сума няколко ΠΏΡŠΡ‚ΠΈ.

4. Π”ΡŠΠ»Π³ΠΎΠ²Π΅Ρ‡Π½ΠΎΡΡ‚

ΠŸΡ€ΠΎΠ²Π΅Π΄ΠΎΡ… тСстовС с рязко ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Ρ‡Ρ€Π΅Π·

docker kill my-iris

Π‘Π°Π·Π°Ρ‚Π° Π³ΠΈ прСнСсС Π΄ΠΎΠ±Ρ€Π΅. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π΅ бяха установСни.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π—Π° Π³Π»ΠΎΠ±Π°Π»ΠΈΡ‚Π΅ Π² InterSystems IRIS ΠΈΠΌΠ° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. Π’Π΅ наистина са Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΈ, Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ. Π—Π° Π΄Π° сС осигури ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚Ρ‚Π° Π½Π° Π‘Π” Π½Π° Π³Π»ΠΎΠ±Π°Π»ΠΈΡ‚Π΅, са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ усилия ΠΎΡ‚ програмиста ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π² нСя няма слоТни Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ конструкции ΠΊΠ°Ρ‚ΠΎ външни ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅.

Нивото Π½Π° изолация Π½Π° Π³Π»ΠΎΠ±Π°Π»ΠΈΡ‚Π΅ Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ β€” Ρ‚ΠΎΠ²Π° Π΅ ЧЕВЕНЕ ΠΠ•ΠŸΠžΠ”ΠŸΠ˜Π§Π•Π, Π° ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС осигури Π΄ΠΎΡ€ΠΈ Π΄ΠΎ Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π‘Π•Π Π˜ΠΠ›Π˜Π—ΠΠ¦Π˜Π―.

ΠšΠΎΡ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚Ρ‚Π° ΠΈ скоростта Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π² Π³Π»ΠΎΠ±Π°Π»ΠΈΡ‚Π΅ зависят ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ умСнията Π½Π° програмиста: ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎ-ΡˆΠΈΡ€ΠΎΠΊΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ сподСлСни Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΈ Ρ‡Π΅Ρ‚Π΅Π½Π΅, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-високо Π΅ Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° изолация, Π° ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎ-тСсно сС Π²Π·ΠΈΠΌΠ°Ρ‚ Сксклузивни Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-висока Π΅ производитСлността.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

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