ΠΡΠΈΠ²Π΅Ρ, Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Π‘Π£ΠΠ
Feel the power! (…aka enjoy the performance)
ΠΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅Π»Π°Π΅Ρ Tarantool ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ
Ρ ΠΠ. Π ΡΠ°ΠΊΠΈΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
ΡΠ°ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ
.
ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅, Π² Tarantool Π΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ
. ΠΡΠΈΠ½ΡΠΈΠΏ Π΅Π΅ ΡΠ°Π±ΠΎΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°Ρ
Π²ΡΠ΅Ρ
ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ
ΡΡ Π² ΠΆΡΡΠ½Π°Π»Π΅ ΠΌΠ°ΡΡΠ΅ΡΠ° (WAL). ΠΠ±ΡΡΠ½ΠΎ ΡΠ°ΠΊΠ°Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ (Π±ΡΠ΄Π΅ΠΌ Π΄Π°Π»Π΅Π΅ Π½Π°Π·ΡΠ²Π°ΡΡ Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ/ΠΈΠ»ΠΈ Π΄Π»Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΎΠ΄Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°.
Π ΠΈΡ. 1. Π Π΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°
ΠΡΠΈΠΌΠ΅ΡΠΎΠΌ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π΄Π°Π½Π½ΡΡ , ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΠ, Π² Π΄ΡΡΠ³ΡΡ ΠΠ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ/ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°. Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ β ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π’.Π΅. ΠΌΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π³ΠΎΡΠΎΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ Π² Π‘Π£ΠΠ, Π° ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠΈΠ»Π°ΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π²Π½ΡΡΡΠΈ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π½Π°ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π£ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°, ΡΠ°ΠΊ ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ. ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠΌ ΠΏΠ»ΡΡΡ.
1. ΠΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ°:
- ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π½Π΅ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΈΡ ΡΠ°ΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡ ΡΡΠΎΠ»Π±ΡΡ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΠΊΡΠΈΡΠ΅ΡΠΈΡ);
- Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎ Π² Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΌ (ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Tarantool β 1.10) ΠΈΠ»ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΌ (Π±ΡΠ΄Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²Π΅ΡΡΠΈΡΡ Tarantool) ΡΠ΅ΠΆΠΈΠΌΠ΅, Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ΅Π°Π½ΡΠ°ΠΌΠΈ (Ρ.Π΅. ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ β ΡΠ΅Π°Π½Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ, Π·Π°ΡΠ΅ΠΌ Π½Π°ΡΡΡΠΏΠ°Π΅Ρ ΠΏΠ°ΡΠ·Π° Π² ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ, ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π°Π½Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈ Ρ.Π΄.);
- Π΅ΡΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΅Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ (Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°Ρ Π±ΡΠ΄ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠΈΠ³ΡΠ°Π½Ρ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΠ΄Π΅Π»Π°Π½Π½ΡΠ΅ Π½Π° ΠΌΠ°ΡΡΠ΅ΡΠ΅).
2. ΠΡΡΡΡΡΡΠ²ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΏΠΎ HTTP, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠ΅ ΠΠ.
Π ΠΈΡ. 2. Π Π΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎ HTTP
3. Π‘ΡΡΡΠΊΡΡΡΡ ΠΠ, ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅, Π½Π΅ ΠΎΠ±ΡΠ·Π°Π½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ (Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π·Π½ΡΡ Π‘Π£ΠΠ, ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠ»Π°ΡΡΠΎΡΠΌ ΠΈ Ρ.ΠΏ.).
Π ΠΈΡ. 3. Π Π΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π² Π³Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
ΠΠΈΠ½ΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½Π΅Π΅/Π·Π°ΡΡΠ°ΡΠ½Π΅Π΅, ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ.
ΠΡΠ»ΠΈ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ ΠΏΠ»ΡΡΡ ΠΈΠ³ΡΠ°ΡΡ ΡΠ΅ΡΠ°ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (ΠΈΠ»ΠΈ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ), ΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ Π² Π‘Π£ΠΠ Tarantool.
ΠΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ°
ΠΡΠ°ΠΊ, ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ°. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΡΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅ΡΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π°Π½Π½ΡΡ , ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅Π°Π½ΡΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π°. Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΡΡΠΎΠΈΡ Π·Π°Π±ΡΠ²Π°ΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ΅Π°Π½ΡΠ° ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ (ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΏΠΎ ΡΠΎΠΉ ΡΠ°ΡΡΠΈ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ°ΡΡΠ²ΡΠ΅Ρ Π² ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ).
ΠΠ°ΠΊ ΠΆΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π°Π½Π½ΡΡ
, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ
ΠΏΡΠΈ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ? Π Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Β«Π² Π»ΠΎΠ±Β» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ±ΠΎΡ Π΄Π°Π½Π½ΡΡ
ΠΏΠΎ Π΄Π°ΡΠ΅-Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΆΠ΅ ΠΈΠΌΠ΅ΡΡΠ΅Π΅ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΏΠΎΠ»Π΅ Π΄Π°ΡΡ-Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ Π΅ΡΡΡ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Β«Π·Π°ΠΊΠ°Π·Β» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅ Β«ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΊΠ°Π·Π°Β» β delivery_time
. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΡΠΎΠΌ ΠΏΠΎΠ»Π΅ Π½Π΅ ΠΎΠ±ΡΠ·Π°Π½Ρ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π°ΠΊΠ°Π·ΠΎΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ delivery_time
, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ΅Π°Π½ΡΠ° ΠΎΠ±ΠΌΠ΅Π½Π°, ΠΈ ΠΏΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ΅Π°Π½ΡΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΎΡΠΎΠ±ΡΠ°ΡΡ Π²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»Ρ delivery_time
. Π ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π°Π½ΡΠ°ΠΌΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΌΠΎΠ³Π»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡΡΡ Π·Π°ΠΏΠΈΡΠΈ Ρ ΠΌΠ΅Π½ΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»Ρ delivery_time
. Π’Π°ΠΊΠΆΠ΅ Π·Π°ΠΊΠ°Π· ΠΌΠΎΠ³ ΠΏΡΠ΅ΡΠ΅ΡΠΏΠ΅ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π½Π΅ Π·Π°ΡΡΠΎΠ½ΡΠ»ΠΈ ΠΏΠΎΠ»Π΅ delivery_time
. Π ΠΎΠ±ΠΎΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π² ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ. ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Β«Π²Π½Π°Ρ
Π»Π΅ΡΡΒ». Π’.Π΅. ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅Π°Π½ΡΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»Ρ delivery_time
, ΠΏΡΠ΅Π²ΡΡΠ°ΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, N ΡΠ°ΡΠΎΠ² ΠΎΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°). ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π΄Π»Ρ ΠΊΡΡΠΏΠ½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠ»ΡΠ½ΠΎ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΡΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π΅ΡΡΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΡΡΡΠ΅ΠΌΠΈΠΌΡΡ, Π½Π° Π½Π΅Ρ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Π±ΡΡΡ ΠΏΠΎΠ»Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ Ρ Π΄Π°ΡΠΎΠΉ-Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ.
ΠΡΡΠ³ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅Π°Π½ΡΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΌ. ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ-ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π±ΡΠ»Π΅Π²ΡΠΊΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, is_transferred
). ΠΡΠ»ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΠΎΠ»Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true
, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π·Π°ΠΏΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ Π½Π΅ ΡΡΠ°ΡΡΠ²ΡΠ΅Ρ Π² ΠΎΠ±ΠΌΠ΅Π½Π°Ρ
. Π’Π°ΠΊΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠΈΠ½ΡΡΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅. ΠΡΡΠ±ΠΎ Π³ΠΎΠ²ΠΎΡΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠΎ Ρ ΡΠ΄Π²ΠΎΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΈ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠ΄Π²ΠΎΠ΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ°ΡΠ½Π΄ΡΡΠΈΠΏΠΎΠ². ΠΠΎ-Π²ΡΠΎΡΡΡ
, ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΎΠ² (ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΠΉ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠ΅Π±Ρ ΠΈ Π·Π° Π²ΡΠ΅Ρ
ΠΎΡΡΠ°Π»ΡΠ½ΡΡ
).
Π‘ΠΏΠΎΡΠΎΠ±, Π»ΠΈΡΠ΅Π½Π½ΡΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ², ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ
Π²ΡΡΠ΅, ΡΠΎΡΡΠΎΠΈΡ Π² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π² ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π΅Π΅ ΡΡΡΠΎΠΊ. Π’Π°ΠΊΠ°Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ Π΄Π°ΡΠ°-Π²ΡΠ΅ΠΌΡ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Π΄Π°Π²Π°ΡΡΡΡ/ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ/ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ (Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎ Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ/ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ). Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π°Π·ΠΎΠ²Π΅ΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ update_time
. Π‘ΠΎΡ
ΡΠ°Π½ΠΈΠ² ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ ΡΡΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π°Π½Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Ρ ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (ΠΎΡΠΎΠ±ΡΠ°ΡΡ Π·Π°ΠΏΠΈΡΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»Ρ update_time
, ΠΏΡΠ΅Π²ΡΡΠ°ΡΡΠΈΠΌ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΠΎΠ΅ ΡΠ°Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅). ΠΡΠΎΠ±Π»Π΅ΠΌΠ°, ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠΌ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡΡ Π² ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ update_time
ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠ° ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Π΄Π»Ρ ΠΏΠΎΡΡΠΈΠΎΠ½Π½ΠΎΠΉ (ΠΏΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠΉ) Π²ΡΠ΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
. ΠΠ»Ρ ΠΏΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠΉ Π²ΡΠ΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΎΡΠ΅Π½Ρ Π½ΠΈΠ·ΠΊΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΠ Π²ΡΠ΅Ρ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ update_time
Π²ΡΡΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈ Π²ΡΠ΄Π°ΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π·Π°ΠΏΠΈΡΠ΅ΠΉ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡ Π½Π°ΡΠ°Π»Π° Π²ΡΠ±ΠΎΡΠΊΠΈ).
ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ (Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅). ΠΠ°Π·ΠΎΠ²Π΅ΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ row_ver
. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ ΡΡΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡΡΡ/ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ/ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π°ΠΏΠΈΡΠΈ. ΠΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ»Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡΡΡ Π½Π΅ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π΄Π°ΡΠ°-Π²ΡΠ΅ΠΌΡ, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΠ΅ΡΡΠΈΠΊΠ°, ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° row_ver
Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π²ΡΠ΄Π°ΡΠΈ Β«Π΄Π΅Π»ΡΡΡΒ» Π΄Π°Π½Π½ΡΡ
(Π΄Π°Π½Π½ΡΡ
, Π΄ΠΎΠ±Π°Π²ΠΈΠ²ΡΠΈΡ
ΡΡ/ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²ΡΠΈΡ
ΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ΅Π°Π½ΡΠ° ΠΎΠ±ΠΌΠ΅Π½Π°), Π½ΠΎ ΠΈ Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π·Π±ΠΈΠ²ΠΊΠΈ ΠΈΡ
Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ.
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π΄Π°Π½Π½ΡΡ , ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΌΠ½Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ. ΠΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ Π½Π° Π½Π΅ΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅.
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° Π΄Π°Π½Π½ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π²Π΅ΡΡΠΈΠΉ ΡΡΡΠΎΠΊ
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ/master ΡΠ°ΡΡΠΈ
Π MS SQL Server Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΠΏ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ β rowversion
. ΠΠ°ΠΆΠ΄Π°Ρ ΠΠ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ΅ΡΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ/ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅, ΠΈΠΌΠ΅ΡΡΠ΅ΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ ΡΠΈΠΏΠ° rowversion
. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ»Ρ ΡΡΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π² Π΄ΠΎΠ±Π°Π²ΠΈΠ²ΡΠ΅ΠΉΡΡ/ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²ΡΠ΅ΠΉΡΡ Π·Π°ΠΏΠΈΡΠΈ. Π‘Π£ΠΠ Tarantool Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ°. ΠΠ΄Π½Π°ΠΊΠΎ Π² Tarantool Π΅Π³ΠΎ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠ½ΡΡ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ: ΡΠ°Π±Π»ΠΈΡΡ Π² Tarantool Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΏΠ΅ΠΉΡΠ°ΠΌΠΈ (space), Π° Π·Π°ΠΏΠΈΡΠΈ β ΠΊΠΎΡΡΠ΅ΠΆΠ°ΠΌΠΈ (tuple). Π Tarantool ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ (sequence). ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ· ΡΠ΅Π±Ρ Π½Π΅ ΡΡΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π». Π’.Π΅. ΡΡΠΎ ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ Π½Π°ΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ. ΠΠΈΠΆΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°ΠΊΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠ°ΠΊΡΡ-Π»ΠΈΠ±ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ Π² Tarantool, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
box.cfg{}
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Tarantool Π½Π°ΡΠ½Π΅Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π² ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ½ΠΈΠΌΠΊΠΈ ΠΠ (snapshot) ΠΈ ΠΆΡΡΠ½Π°Π» ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ row_version
:
box.schema.sequence.create('row_version',
{ if_not_exists = true })
ΠΠΏΡΠΈΡ if_not_exists
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΊΡΠΈΠΏΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ: Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Tarantool Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΡΠ°ΡΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ. ΠΡΠ° ΠΎΠΏΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΠΎ Π²ΡΠ΅Ρ
ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ
DDL-ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ
.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠΏΠ΅ΠΉΡ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°.
box.schema.space.create('goods', {
format = {
{
name = 'id',
type = 'unsigned'
},
{
name = 'name',
type = 'string'
},
{
name = 'code',
type = 'unsigned'
},
{
name = 'row_ver',
type = 'unsigned'
}
},
if_not_exists = true
})
ΠΠ΄Π΅ΡΡ ΠΌΡ Π·Π°Π΄Π°Π»ΠΈ ΠΈΠΌΡ ΡΠΏΠ΅ΠΉΡΠ° (goods
), ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΈΡ
ΡΠΈΠΏΡ.
ΠΠ²ΡΠΎΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ Π² Tarantool ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΠΎΠΆΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π°Π²ΡΠΎΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΏΠΎ ΠΏΠΎΠ»Ρ id
:
box.schema.sequence.create('goods_id',
{ if_not_exists = true })
box.space.goods:create_index('primary', {
parts = { 'id' },
sequence = 'goods_id',
unique = true,
type = 'HASH',
if_not_exists = true
})
Tarantool ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ². Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΠΈΠΏΠΎΠ² TREE ΠΈ HASH, Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡΠΎΡΡΡ Π»Π΅ΠΆΠ°Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ. TREE β Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΠΏ ΠΈΠ½Π΄Π΅ΠΊΡΠ°. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅. ΠΠΎ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΏΠΎ ΡΠ°Π²Π΅Π½ΡΡΠ²Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ HASH. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ HASH (ΡΡΠΎ ΠΌΡ ΠΈ ΡΠ΄Π΅Π»Π°Π»ΠΈ).
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ row_ver
Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²ΡΠΈΡ
ΡΡ Π΄Π°Π½Π½ΡΡ
, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ ΠΊ ΠΏΠΎΠ»ΡΠΌ ΡΡΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ row_ver
. ΠΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ row_ver
Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΡΡ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ, Π½ΠΎ ΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈΠ³Π³Π΅ΡΡ. Π Tarantool Π΅ΡΡΡ Π΄Π²Π° ΡΠΈΠΏΠ° ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ² Π΄Π»Ρ ΡΠΏΠ΅ΠΉΡΠΎΠ²: before_replace
ΠΈ on_replace
. Π’ΡΠΈΠ³Π³Π΅ΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ
Π² ΡΠΏΠ΅ΠΉΡΠ΅ (Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ°, Π·Π°ΡΡΠΎΠ½ΡΡΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠΈΠ³Π³Π΅ΡΠ°). Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ on_replace
, before_replace
-ΡΡΠΈΠ³Π³Π΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠ°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΡΠΈΠ³Π³Π΅Ρ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π½Π°ΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠΈΠΏ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ².
box.space.goods:before_replace(function(old, new)
return box.tuple.new({new[1], new[2], new[3],
box.sequence.row_version:next()})
end)
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ ΡΡΠΈΠ³Π³Π΅Ρ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ row_ver
ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ° Π½Π° ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ row_version
.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠΏΠ΅ΠΉΡΠ° goods
ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ row_ver
, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΈΠ½Π΄Π΅ΠΊΡ:
box.space.goods:create_index('row_ver', {
parts = { 'row_ver' },
unique = true,
type = 'TREE',
if_not_exists = true
})
Π’ΠΈΠΏ ΠΈΠ½Π΄Π΅ΠΊΡΠ° β Π΄Π΅ΡΠ΅Π²ΠΎ (TREE
), Ρ.ΠΊ. Π΄Π°Π½Π½ΡΠ΅ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ row_ver
.
ΠΠΎΠ±Π°Π²ΠΈΠΌ Π² ΡΠΏΠ΅ΠΉΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅:
box.space.goods:insert{nil, 'pen', 123}
box.space.goods:insert{nil, 'pencil', 321}
box.space.goods:insert{nil, 'brush', 100}
box.space.goods:insert{nil, 'watercolour', 456}
box.space.goods:insert{nil, 'album', 101}
box.space.goods:insert{nil, 'notebook', 800}
box.space.goods:insert{nil, 'rubber', 531}
box.space.goods:insert{nil, 'ruler', 135}
Π’.ΠΊ. ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ β Π°Π²ΡΠΎΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΡΡΠ΅ΡΡΠΈΠΊ, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ nil. Tarantool Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ row_ver
ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ nil β ΠΈΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΠΎΠ±ΡΠ΅, Ρ.ΠΊ. ΡΡΠ° ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π² ΡΠΏΠ΅ΠΉΡΠ΅.
ΠΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΡΠ°Π²ΠΊΠΈ:
tarantool> box.space.goods:select()
---
- - [1, 'pen', 123, 1]
- [2, 'pencil', 321, 2]
- [3, 'brush', 100, 3]
- [4, 'watercolour', 456, 4]
- [5, 'album', 101, 5]
- [6, 'notebook', 800, 6]
- [7, 'rubber', 531, 7]
- [8, 'ruler', 135, 8]
...
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΠΌ, ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΏΠΎΠ»Π΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. Π’Π΅ΠΏΠ΅ΡΡ Π±ΡΠ΄Π΅Ρ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠΉ Π²ΡΠ³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΠΏΠ΅ΠΉΡΠ° goods
:
local page_size = 5
local function get_goods(row_ver)
local index = box.space.goods.index.row_ver
local goods = {}
local counter = 0
for _, tuple in index:pairs(row_ver, {
iterator = 'GT' }) do
local obj = tuple:tomap({ names_only = true })
table.insert(goods, obj)
counter = counter + 1
if counter >= page_size then
break
end
end
return goods
end
Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ row_ver
, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ Π²ΡΠ³ΡΡΠ·ΠΊΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΡΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²ΡΠΈΡ
ΡΡ Π΄Π°Π½Π½ΡΡ
.
ΠΡΠ±ΠΎΡΠΊΠ° Π΄Π°Π½Π½ΡΡ
Π² Tarantool ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΈΠ½Π΄Π΅ΠΊΡΡ. Π€ΡΠ½ΠΊΡΠΈΡ get_goods
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ row_ver
Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²ΡΠΈΡ
ΡΡ Π΄Π°Π½Π½ΡΡ
. Π’ΠΈΠΏ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° β GT (Greater Than, Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΌ). ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΠ±Ρ
ΠΎΠ΄ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° (Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ row_ver
).
ΠΡΠ΅ΡΠ°ΡΠΎΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΆΠΈ. Π§ΡΠΎΠ±Ρ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ HTTP, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ ΠΊ ΡΡΡΡΠΊΡΡΡΠ΅, ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ tomap
. ΠΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ tomap
ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Ρ
ΠΎΡΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Π΅ name
, Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΏΠΎΠ»Π΅ code
ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ»Π΅ comment
:
local function unflatten_goods(tuple)
local obj = {}
obj.id = tuple.id
obj.goods_name = tuple.name
obj.comment = 'some comment'
obj.row_ver = tuple.row_ver
return obj
end
Π Π°Π·ΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ Π²ΡΠ΄Π°Π²Π°Π΅ΠΌΡΡ
Π΄Π°Π½Π½ΡΡ
(ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΡΠΈΠΈ) ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ page_size
. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ page_size
ΡΠ°Π²Π½ΠΎ 5. Π ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ½ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΊΠΎΡΡΠ΅ΠΆΠ° ΡΠΏΠ΅ΠΉΡΠ°. ΠΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ ΠΎΠΏΡΡΠ½ΡΠΌ ΠΏΡΡΠ΅ΠΌ, Π·Π°ΠΌΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
. Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ, ΡΠ΅ΠΌ ΠΌΠ΅Π½ΡΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΡΠ½Π΄ΡΡΠΈΠΏΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠ΅ΠΉ ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½ΠΎΠΉ. Π’Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΎΠ±ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠ³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄ΠΎΠ»Π³ΠΎ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π΄ΡΡΠ³ΠΈΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΏΡΠΈΡΠ΅Π΄ΡΠΈΡ
Π½Π° ΡΠ΅ΡΠ²Π΅Ρ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ page_size
ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΈΠ· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΏΠ΅ΠΉΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΡΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΈ ΡΡΠΎΠΌ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΠΏΠ΅ΠΉΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΠΎΠΉΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 100).
ΠΡΠΏΠΎΠ»Π½ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ get_goods
:
tarantool> get_goods(0)
---
- - row_ver: 1
code: 123
name: pen
id: 1
- row_ver: 2
code: 321
name: pencil
id: 2
- row_ver: 3
code: 100
name: brush
id: 3
- row_ver: 4
code: 456
name: watercolour
id: 4
- row_ver: 5
code: 101
name: album
id: 5
...
ΠΠΎΠ·ΡΠΌΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ row_ver
ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ Π²Π½ΠΎΠ²Ρ Π²ΡΠ·ΠΎΠ²Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ:
tarantool> get_goods(5)
---
- - row_ver: 6
code: 800
name: notebook
id: 6
- row_ver: 7
code: 531
name: rubber
id: 7
- row_ver: 8
code: 135
name: ruler
id: 8
...
Π Π΅ΡΠ΅ ΡΠ°Π·:
tarantool> get_goods(8)
---
- []
...
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΠΌ, ΠΏΡΠΈ ΡΠ°ΠΊΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΡΠΏΠ΅ΠΉΡΠ° goods
. ΠΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΡΡΠ°Ρ Π²ΡΠ±ΠΎΡΠΊΠ°.
ΠΠ½Π΅ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠΏΠ΅ΠΉΡ:
box.space.goods:update(4, {{'=', 6, 'copybook'}})
box.space.goods:insert{nil, 'clip', 234}
box.space.goods:insert{nil, 'folder', 432}
ΠΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ name
Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΄Π²Π΅ Π½ΠΎΠ²ΡΡ
Π·Π°ΠΏΠΈΡΠΈ.
ΠΠΎΠ²ΡΠΎΡΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ:
tarantool> get_goods(8)
---
- - row_ver: 9
code: 800
name: copybook
id: 6
- row_ver: 10
code: 234
name: clip
id: 9
- row_ver: 11
code: 432
name: folder
id: 10
...
Π€ΡΠ½ΠΊΡΠΈΡ Π²Π΅ΡΠ½ΡΠ»Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²ΡΡΡΡΡ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ²ΡΠΈΠ΅ΡΡ Π·Π°ΠΏΠΈΡΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠ½ΠΊΡΠΈΡ get_goods
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²ΡΠΈΠ΅ΡΡ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΅Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π°, ΡΡΠΎ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΡΡΠ°Π²ΠΈΠΌ Π²ΡΠ΄Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΠΎ HTTP Π² Π²ΠΈΠ΄Π΅ JSON Π·Π° ΡΠ°ΠΌΠΊΠ°ΠΌΠΈ Π½Π°ΡΡΠΎΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠΈ. ΠΠ± ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π·Π΄Π΅ΡΡ:
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ/slave ΡΠ°ΡΡΠΈ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Π΅ ΡΠΏΠ΅ΠΉΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ :
box.schema.space.create('goods', {
format = {
{
name = 'id',
type = 'unsigned'
},
{
name = 'name',
type = 'string'
},
{
name = 'code',
type = 'unsigned'
}
},
if_not_exists = true
})
box.space.goods:create_index('primary', {
parts = { 'id' },
sequence = 'goods_id',
unique = true,
type = 'HASH',
if_not_exists = true
})
Π‘ΡΡΡΠΊΡΡΡΠ° ΡΠΏΠ΅ΠΉΡΠ° Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΡΡΡΡΠΊΡΡΡΡ ΡΠΏΠ΅ΠΉΡΠ° Π² ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ΅. ΠΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊΡΠ΄Π°-Π»ΠΈΠ±ΠΎ Π΅ΡΠ΅, ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° row_ver
Π² ΡΠΏΠ΅ΠΉΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ. Π ΠΏΠΎΠ»Π΅ id
Π±ΡΠ΄ΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°. ΠΠΎΡΡΠΎΠΌΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Π°Π²ΡΠΎΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ½ΡΠΌ.
ΠΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ, Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΠΉΡ Π΄Π»Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ row_ver
:
box.schema.space.create('row_ver', {
format = {
{
name = 'space_name',
type = 'string'
},
{
name = 'value',
type = 'string'
}
},
if_not_exists = true
})
box.space.row_ver:create_index('primary', {
parts = { 'space_name' },
unique = true,
type = 'HASH',
if_not_exists = true
})
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΏΠ΅ΠΉΡΠ° (ΠΏΠΎΠ»Π΅ space_name
) Π±ΡΠ΄Π΅ΠΌ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ Π·Π΄Π΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ row_ver
(ΠΏΠΎΠ»Π΅ value
). Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° Π²ΡΡΡΡΠΏΠ°Π΅Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° space_name
.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ
ΡΠΏΠ΅ΠΉΡΠ° goods
ΠΏΠΎ HTTP. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ°Ρ HTTP-ΠΊΠ»ΠΈΠ΅Π½Ρ. Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ HTTP-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°:
local http_client = require('http.client').new()
Π’Π°ΠΊΠΆΠ΅ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ json:
local json = require('json')
ΠΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ :
local function load_data(url, row_ver)
local url = ('%s?rowVer=%s'):format(url,
tostring(row_ver))
local body = nil
local data = http_client:request('GET', url, body, {
keepalive_idle = 1,
keepalive_interval = 1
})
return json.decode(data.body)
end
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ HTTP-Π·Π°ΠΏΡΠΎΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ url, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π² Π½Π΅Π³ΠΎ row_ver
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π·Π°ΠΏΡΠΎΡΠ°.
Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
local function save_goods(goods)
local n = #goods
box.atomic(function()
for i = 1, n do
local obj = goods[i]
box.space.goods:put(
obj.id, obj.name, obj.code)
end
end)
end
Π¦ΠΈΠΊΠ» ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Π² ΡΠΏΠ΅ΠΉΡ goods
ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ (Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ box.atomic
) Π΄Π»Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ Π΄ΠΈΡΠΊΠΎΠΌ.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠ΅ΠΉΡΠ° goods
Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊ:
local function sync_goods()
local tuple = box.space.row_ver:get('goods')
local row_ver = tuple and tuple.value or 0
ββ set your url here:
local url = 'http://127.0.0.1:81/test/goods/list'
while true do
local goods = load_goods(url, row_ver)
local count = #goods
if count == 0 then
return
end
save_goods(goods)
row_ver = goods[count].rowVer
box.space.row_ver:put({'goods', row_ver})
end
end
Π‘Π½Π°ΡΠ°Π»Π° ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΠΎΠ΅ ΡΠ°Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ row_ver
Π΄Π»Ρ ΡΠΏΠ΅ΠΉΡΠ° goods
. ΠΡΠ»ΠΈ ΠΎΠ½ΠΎ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ (ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ΅Π°Π½Ρ ΠΎΠ±ΠΌΠ΅Π½Π°), ΡΠΎ Π±Π΅ΡΠ΅ΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ row_ver
Π½ΠΎΠ»Ρ. ΠΠ°Π»Π΅Π΅ Π² ΡΠΈΠΊΠ»Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΈΠ· ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ url. ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠ΅ΠΉΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ row_ver
(Π² ΡΠΏΠ΅ΠΉΡΠ΅ row_ver
ΠΈ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ row_ver
) β Π±Π΅ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ row_ver
ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΡΡΠΎΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
.
ΠΠ»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ Π·Π°ΡΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΡ (Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅) ΡΠΈΠΊΠ» while
ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π° for
:
for _ = 1, max_req do ...
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ sync_goods
ΡΠΏΠ΅ΠΉΡ goods
Π² ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ Π²ΡΠ΅Ρ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΠΏΠ΅ΠΉΡΠ° goods
Π² ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ΅.
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π½Π΅Π»ΡΠ·Ρ ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
. ΠΡΠ»ΠΈ ΡΠ°ΠΊΠ°Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠΌΠ΅ΡΠΊΡ Π½Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅. ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² ΡΠΏΠ΅ΠΉΡ goods
Π±ΡΠ»Π΅Π²ΡΠΊΠΎΠ΅ ΠΏΠΎΠ»Π΅ is_deleted
ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ β Π²ΡΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ is_deleted
Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true
. ΠΠ½ΠΎΠ³Π΄Π° Π²ΠΌΠ΅ΡΡΠΎ Π±ΡΠ»Π΅Π²ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ is_deleted
ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Π΅ deleted
, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ
ΡΠ°Π½ΠΈΡΡΡ Π΄Π°ΡΠ°-Π²ΡΠ΅ΠΌΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ. ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½Π°Ρ Π½Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π° ΠΈΠ· ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π² ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ (ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ΅).
ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ row_ver
ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
Π΄ΡΡΠ³ΠΈΡ
ΡΠΏΠ΅ΠΉΡΠΎΠ²: Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΏΠ΅ΠΉΡΠ°.
ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ Π‘Π£ΠΠ Tarantool.
ΠΡΠ²ΠΎΠ΄Ρ
- Π‘Π£ΠΠ Tarantool β ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ, ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
- ΠΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π°Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ΄ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ.
- Π Π°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠΉ Π² ΡΡΠ°ΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ± Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ΅Π°Π½ΡΠ° ΠΎΠ±ΠΌΠ΅Π½Π°.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com