ΠΠΎΡΡΠ°ΠΏΠ½Π° Π΅ Π½ΠΎΠ²Π° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° Tarantool 2.8 DBMS, ΠΊΠΎΡΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΡΡΠ°ΡΠ½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΈ ΠΎΠ΄ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°. DBMS ΡΠ° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ° Π²ΠΈΡΠΎΠΊΠ°ΡΠ° Π±ΡΠ·ΠΈΠ½Π° Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π±Π°ΡΠ°ΡΠ° ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π½Π° NoSQL ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Memcached ΠΈ Redis) ΡΠΎ Π΄ΠΎΠ²Π΅ΡΠ»ΠΈΠ²ΠΎΡΡΠ° Π½Π° ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π°Π»Π½ΠΈΡΠ΅ DBMS (Oracle, MySQL ΠΈ PostgreSQL). Tarantool Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π²ΠΎ C ΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°Π½ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈ Π²ΠΎ Lua. ΠΠΎΠ΄ΠΎΡ ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° BSD.
DBMS Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ ΡΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠ»ΠΈΡΠΈΠ½ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΏΡΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ°. ΠΠ΅ΡΡ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° Tarantool, ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠ°ΠΊΡΠ²Π°ΡΠΈ Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ Lua (LuaJIT Π΅ Π²Π³ΡΠ°Π΄Π΅Π½), ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° ΡΠΎΡΠΌΠ°ΡΠΎΡ MessagePack ΠΏΡΠΈ ΡΠ°Π·ΠΌΠ΅Π½Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ, ΠΏΡΠΈΡΡΡΡΠ²ΠΎΡΠΎ Π½Π° Π΄Π²Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΌΠΎΡΠΎΡΠΈ (ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π²ΠΎ RAM ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ° ΡΠΎ ΡΠ΅ΡΠ΅ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΡΡΠΎΡΠ°Π½ ΠΏΠΎΠ³ΠΎΠ½ ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π½Π° Π΄ΠΈΡΠΊ Π½Π° Π΄Π²Π΅ Π½ΠΈΠ²ΠΎΠ° Π·Π°ΡΠ½ΠΎΠ²Π°Π½ΠΎ Π½Π° LSM-Π΄ΡΠ²ΠΎ), ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΡΠ΅ΠΊΡΠ½Π΄Π°ΡΠ½ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΈ, ΡΠ΅ΡΠΈΡΠΈ ΡΠΈΠΏΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ (HASH, TREE, RTREE, BITSET), Π°Π»Π°ΡΠΊΠΈ Π·Π° ΡΠΈΠ½Ρ ΡΠΎΠ½Π° ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π²ΠΎ master-master ΡΠ΅ΠΆΠΈΠΌ, ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° ΠΊΠΎΠ½Π΅ΠΊΡΠΈΡΠ° ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° ΠΏΡΠΈΡΡΠ°ΠΏ, ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° SQL Π±Π°ΡΠ°ΡΠ°.
ΠΠ»Π°Π²Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
- Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° MVCC (Multi-Version Concurrency Control) Π²ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠΊΠΈΠΎΡ ΠΌΠΎΡΠΎΡ memtx.
- ΠΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ Π²ΠΎ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» IPROTO. ΠΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ, ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠ°ΡΠ° Π±Π°ΡΠ°ΡΠ΅ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π²ΠΎ ΠΡΠ°.
- ΠΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΡΠΈΠ½Ρ ΡΠΎΠ½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΠΊΠΎΡΠ° ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ ΠΎΠ΄Π½ΠΎΡ Π½Π° ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅ΡΠ½ΠΈ ΡΠ°Π±Π΅Π»ΠΈ.
- ΠΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΠΏΡΠ΅ΡΡΠ»ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ΅Π·Π΅ΡΠ²Π΅Π½ ΡΠ°Π·ΠΎΠ» (failover) Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΡ RAFT. ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π°ΡΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° WAL ΠΎΠ΄Π°ΠΌΠ½Π° Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π° Π²ΠΎ Tarantool; ΡΠ΅Π³Π° Π½Π΅ ΠΌΠΎΡΠ° ΡΠ°ΡΠ½ΠΎ Π΄Π° Π³ΠΎ ΡΠ»Π΅Π΄ΠΈΡΠ΅ Π³Π»Π°Π²Π½ΠΈΠΎΡ ΡΠ°Π·ΠΎΠ».
- ΠΠ²ΡΠΎΠΌΠ°ΡΡΠΊΠΎΡΠΎ ΠΏΡΠ΅ΡΡΠ»ΡΠ²Π°ΡΠ΅ Π½Π° Π³Π»Π°Π²Π½ΠΈΠΎΡ ΡΠ°Π·ΠΎΠ» Π΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΎ Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ° ΡΠΎ ΡΠΏΠΎΠ΄Π΅Π»ΡΠ²Π°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ (ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° vshard, ΠΊΠΎΡΠ° Π³ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π½ΠΈΠ· ΡΠ΅ΡΠ²Π΅ΡΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈ ΠΊΠΎΡΠΈ).
- ΠΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ°ΠΌΠΊΠ°ΡΠ° Π·Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π·Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Tarantool Cartridge ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Π²ΠΎ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈ ΡΡΠ΅Π΄ΠΈΠ½ΠΈ. Tarantool Cartridge ΡΠ΅Π³Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΎ Π³ΠΎ Π΄ΡΠΆΠΈ ΡΠΎΠ²Π°ΡΠΎΡ.
- Π Π°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΠ»ΠΎΠ³Π°ΡΠ° Ansible Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Π΅ Π·Π°Π±ΡΠ·Π°Π½Π° Π΄ΠΎ 15-20 ΠΏΠ°ΡΠΈ. ΠΠ²Π° ΡΠ° ΠΎΠ»Π΅ΡΠ½ΡΠ²Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ.
- Π‘Π΅ ΠΏΠΎΡΠ°Π²ΠΈ Π°Π»Π°ΡΠΊΠ° Π·Π° ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠ° ΠΎΠ΄ ΠΏΠΎΡΡΠ°ΡΠΈΡΠ΅ Π²Π΅ΡΠ·ΠΈΠΈ >1.6 ΠΈ <1.10, ΠΊΠΎΡΠ° Π΅ Π΄ΠΎΡΡΠ°ΠΏΠ½Π° ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΎΠΏΡΠΈΡΠ° ΠΏΡΠΈ ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅. ΠΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ, ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠ°ΡΠ° ΡΡΠ΅Π±Π°ΡΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΏΡΠ΅ΠΊΡ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΈΠ²ΡΠ΅ΠΌΠ΅Π½Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° 1.10.
- Π‘ΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΌΠ°Π»ΠΈ ΡΠΎΡΠΊΠΈ Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΎ.
- SQL ΡΠ΅Π³Π° ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° UUID ΠΈ ΡΠ° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΊΠΎΠ½Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° Π½Π° ΡΠΈΠΏΠΎΠ²ΠΈ.
ΠΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΎΠΌΠ΅Π½Π΅ Π΄Π΅ΠΊΠ° ΠΏΠΎΡΠ½ΡΠ²Π°ΡΡΠΈ ΠΎΠ΄ Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° 2.10 ΡΠ΅ ΠΈΠΌΠ° ΡΡΠ°Π½Π·ΠΈΡΠΈΡΠ° ΠΊΠΎΠ½ Π½ΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΡΠ°. ΠΠ° Π·Π½Π°ΡΠ°ΡΠ½ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡΠ° ΡΡΠΎ ΡΠ° Π½Π°ΡΡΡΡΠ²Π°Π°Ρ ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡΠ° Π½Π°Π½Π°Π·Π°Π΄, ΠΏΡΠ²Π°ΡΠ° ΡΠΈΡΡΠ° ΠΎΠ΄ Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, Π·Π° ΡΡΠ΅Π΄Π½ΠΈΡΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΡΠ° - Π²ΡΠΎΡΠ°ΡΠ°, Π° Π·Π° ΠΊΠΎΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈΡΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΡΠ° - ΡΡΠ΅ΡΠ°ΡΠ° (ΠΏΠΎ 2.10, ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ 3.0.0 ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΎΠ±ΡΠ°Π²Π΅Π½ΠΎ).
ΠΠ·Π²ΠΎΡ: opennet.ru