Tarantool แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ“แƒแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒแƒ— แƒกแƒฃแƒžแƒ”แƒ  แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ แƒ“แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ›แƒแƒ—แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒ˜ แƒ แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜ แƒ’แƒแƒกแƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ

แƒฎแƒฃแƒ—แƒ˜ แƒฌแƒšแƒ˜แƒก แƒฌแƒ˜แƒœ แƒ•แƒชแƒแƒ“แƒ” แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ Tarantool-แƒ—แƒแƒœ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ”แƒก แƒแƒ  แƒ’แƒแƒ›แƒแƒ›แƒ˜แƒ•แƒ˜แƒ“แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒฎแƒšแƒแƒฎแƒแƒœ แƒ’แƒแƒ•แƒ›แƒแƒ แƒ—แƒ” แƒ•แƒ”แƒ‘แƒ˜แƒœแƒแƒ แƒ˜, แƒกแƒแƒ“แƒแƒช แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ” Hadoop-แƒ–แƒ” แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก MapReduce. แƒ˜แƒฅ แƒ›แƒแƒ— แƒ“แƒแƒ›แƒ˜แƒกแƒ•แƒ”แƒก แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ: "แƒ แƒแƒขแƒแƒ› แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— Tarantool แƒแƒ› แƒแƒ›แƒแƒชแƒแƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก?"

แƒชแƒœแƒแƒ‘แƒ˜แƒกแƒ›แƒแƒงแƒ•แƒแƒ แƒ”แƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ” แƒ“แƒแƒ•แƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒงแƒแƒ•แƒ˜, แƒ’แƒแƒ›แƒแƒ•แƒชแƒแƒ“แƒ” แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ - แƒ“แƒ แƒแƒ›แƒฏแƒ”แƒ แƒแƒ“ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒ›แƒ”แƒฌแƒแƒœแƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜. แƒแƒฎแƒšแƒ แƒ›แƒ” แƒ’แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ“แƒแƒฌแƒ”แƒ แƒแƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ Tarantool-แƒจแƒ˜, แƒฉแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ— แƒ“แƒ แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒแƒ— แƒ›แƒ˜แƒกแƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒ“แƒ แƒœแƒแƒฎแƒแƒ•แƒ—, แƒ แƒแƒ›แƒ“แƒ”แƒœแƒแƒ“ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ“แƒ แƒ›แƒแƒ’แƒแƒ แƒ˜แƒ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜.

Tarantool แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ“แƒแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒแƒ— แƒกแƒฃแƒžแƒ”แƒ  แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ แƒ“แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ›แƒแƒ—แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒ˜ แƒ แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜ แƒ’แƒแƒกแƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ

แƒ แƒ แƒแƒ แƒ˜แƒก Tarantool

Tarantool แƒžแƒแƒ–แƒ˜แƒชแƒ˜แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒก แƒ แƒแƒ’แƒแƒ แƒช แƒฃแƒšแƒขแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ. แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒแƒ— แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒกแƒฃแƒ แƒ—. แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒ’แƒแƒ˜แƒ›แƒ”แƒแƒ แƒ”แƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜, แƒคแƒ แƒแƒ’แƒ›แƒ”แƒœแƒขแƒ˜ - แƒแƒœแƒฃ, แƒ’แƒแƒงแƒแƒ•แƒ˜แƒ— แƒ“แƒ˜แƒ“แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ“แƒ แƒ’แƒแƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ— แƒ›แƒแƒ—แƒ’แƒแƒœ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜ - แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒฌแƒงแƒœแƒแƒ แƒ”แƒ‘แƒšแƒแƒ‘แƒ Master-Master แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜.

แƒ›แƒ”แƒแƒ แƒ”แƒช, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜. แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒแƒกแƒ–แƒ” แƒ“แƒแƒฌแƒ”แƒ แƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜, แƒ˜แƒ›แƒฃแƒจแƒแƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ—แƒแƒœ, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒฌแƒแƒจแƒแƒšแƒแƒ— แƒซแƒ•แƒ”แƒšแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒคแƒแƒœแƒ–แƒ” แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒฌแƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—. แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒฌแƒ”แƒ แƒแƒ— Http แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  Tarantula-แƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ—แƒแƒœ: แƒ’แƒแƒ›แƒแƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ— แƒ›แƒแƒ—แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ, แƒฉแƒแƒฌแƒ”แƒ แƒ”แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ˜แƒฅ แƒ“แƒ แƒจแƒ”แƒแƒ›แƒชแƒ˜แƒ แƒ”แƒ— แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ›แƒแƒกแƒขแƒ”แƒ แƒ–แƒ”.

แƒฌแƒแƒ•แƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ” แƒกแƒขแƒแƒขแƒ˜แƒ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒฅแƒ›แƒœแƒ”แƒก แƒ‘แƒ˜แƒญแƒ”แƒ‘แƒ›แƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ แƒ˜แƒ’แƒก 300 แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ˜แƒคแƒ”แƒ—แƒฅแƒ”แƒ‘แƒก แƒ“แƒ แƒฉแƒฅแƒแƒ แƒแƒ‘แƒก - แƒ›แƒแƒ— แƒแƒฅแƒ•แƒ— แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ 20 แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒฌแƒแƒ›แƒจแƒ˜. แƒแƒฅ แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒแƒ“ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒ›แƒแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ— แƒ“แƒ แƒ“แƒแƒฌแƒ”แƒ แƒแƒ— แƒซแƒแƒšแƒ˜แƒแƒœ แƒ“แƒ˜แƒ“แƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ, แƒ“แƒ แƒ”แƒก แƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ, แƒ แƒแƒ’แƒแƒ แƒช PostgreS-แƒจแƒ˜.

แƒ›แƒ” แƒจแƒ”แƒ•แƒ”แƒชแƒ“แƒ”แƒ‘แƒ˜ แƒแƒฆแƒ•แƒฌแƒ”แƒ แƒ แƒ แƒแƒฆแƒแƒช แƒแƒ› แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜, แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜, แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜.

แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก

แƒขแƒ”แƒกแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒ” แƒกแƒแƒ›แƒ˜ แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ - 20 GB แƒ›แƒงแƒแƒ แƒ˜ แƒ“แƒ˜แƒกแƒ™แƒ˜, Ubuntu 18.04. 2 แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒ˜ แƒ“แƒ 4 แƒ’แƒ˜แƒ’แƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ.

แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— Tarantool - แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— bash แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒแƒœ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ— แƒกแƒแƒชแƒแƒ•แƒ˜ แƒ“แƒ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ”แƒ— Apt แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— Tarantool. แƒ‘แƒ›แƒฃแƒšแƒ˜ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ—แƒแƒœ - (curl -L https://tarantool.io/installer.sh | VER=2.4 แƒกแƒฃแƒ“แƒ -E แƒ‘แƒแƒจ). แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ:

tarantoolctl - แƒขแƒแƒ แƒแƒœแƒขแƒฃแƒšแƒแƒก แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ.
/etc/tarantool - แƒแƒฅ แƒแƒ แƒ˜แƒก แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ.
var/log/tarantool - แƒแƒ˜ แƒ›แƒแƒ แƒ”แƒ‘แƒ˜.
var/lib/tarantool โ€” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒแƒฅ แƒ“แƒ”แƒ•แƒก แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒงแƒแƒคแƒ แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ”แƒ‘แƒแƒ“.

แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒ”แƒ‘แƒ˜ instance-available แƒ“แƒ instance-enable - แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ˜แƒก, แƒ แƒแƒช แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ - แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜ lua แƒ™แƒแƒ“แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฆแƒฌแƒ”แƒ แƒก แƒ แƒแƒ›แƒ”แƒš แƒžแƒแƒ แƒขแƒ”แƒ‘แƒก แƒฃแƒกแƒ›แƒ”แƒœแƒก, แƒ แƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ แƒแƒฅแƒ•แƒก แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜, แƒ•แƒ˜แƒœแƒ˜แƒšแƒ˜แƒก แƒซแƒ แƒแƒ•แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜, แƒ™แƒแƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก. แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜, แƒ“แƒแƒจแƒšแƒ, แƒ แƒ˜แƒ’แƒ”แƒ‘แƒ˜, แƒ›แƒแƒซแƒ•แƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ แƒ“แƒ แƒ.แƒจ.

แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ แƒแƒ’แƒแƒ แƒช PostgreS-แƒจแƒ˜. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ’แƒกแƒฃแƒ แƒ— แƒ’แƒแƒฃแƒจแƒ•แƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒแƒกแƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒžแƒแƒ แƒขแƒ”แƒ‘แƒ–แƒ”. แƒ’แƒแƒ›แƒแƒ“แƒ˜แƒก, แƒ แƒแƒ› แƒ”แƒ แƒ— แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒžแƒแƒ แƒขแƒ–แƒ”แƒ แƒ“แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜. แƒ›แƒแƒ— แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฐแƒฅแƒแƒœแƒ“แƒ”แƒ— แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ - แƒ”แƒ แƒ—แƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒ”แƒ แƒ— แƒšแƒแƒ’แƒ˜แƒ™แƒแƒก, แƒ›แƒ”แƒแƒ แƒ” - แƒ›แƒ”แƒแƒ แƒ”แƒก.

แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ›แƒ”แƒœแƒขแƒ˜

แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก tarantoolctl แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ›แƒแƒ แƒ—แƒแƒ— Tarantula แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ”แƒ‘แƒ˜. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, tarantoolctl แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒก แƒ“แƒ แƒ˜แƒขแƒงแƒ•แƒ˜แƒก - แƒคแƒแƒ˜แƒšแƒ˜ แƒฌแƒ”แƒกแƒ แƒ˜แƒ’แƒจแƒ˜แƒ, แƒ—แƒฃ แƒ˜แƒฅ แƒกแƒ˜แƒœแƒขแƒแƒฅแƒกแƒฃแƒ แƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก.

แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒœแƒแƒฎแƒแƒ— แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ˜แƒก แƒกแƒขแƒแƒขแƒฃแƒกแƒ˜ - tarantoolctl แƒกแƒขแƒแƒขแƒฃแƒกแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜. แƒแƒœแƒแƒšแƒแƒ’แƒ˜แƒฃแƒ แƒแƒ“ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒ— แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ, แƒ’แƒแƒฉแƒ”แƒ แƒ”แƒ‘แƒ, แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ.

แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ— แƒ›แƒแƒก แƒแƒ แƒ˜ แƒ’แƒ–แƒ˜แƒ—.

1. แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒกแƒแƒšแƒ˜

แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“, Tarantool แƒฎแƒกแƒœแƒ˜แƒก แƒกแƒแƒ™แƒ”แƒขแƒก, แƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ แƒ˜ ASCII แƒขแƒ”แƒฅแƒกแƒขแƒ˜ แƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ‘แƒ แƒ˜แƒฅ Tarantool-แƒ˜แƒก แƒ’แƒแƒกแƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ‘แƒšแƒแƒ“. แƒ™แƒแƒœแƒกแƒแƒšแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒฎแƒ“แƒ”แƒ‘แƒ แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒฅแƒ•แƒ”แƒจ, แƒแƒ  แƒแƒ แƒ˜แƒก แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ™แƒแƒœแƒกแƒแƒšแƒ˜แƒก แƒžแƒแƒ แƒขแƒ˜แƒก แƒ”แƒฅแƒกแƒขแƒ”แƒ แƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ Tarantula-แƒก แƒกแƒแƒ›แƒแƒ แƒ—แƒแƒ•แƒแƒ“.

แƒแƒ› แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒกแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ˜แƒงแƒ•แƒแƒœแƒแƒ— Tarantoolctl, แƒจแƒ”แƒ˜แƒงแƒ•แƒแƒœแƒ”แƒ— แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜. แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒ’แƒแƒฃแƒจแƒ•แƒ”แƒ‘แƒก แƒ™แƒแƒœแƒกแƒแƒšแƒก แƒ“แƒ แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒ˜. แƒแƒ แƒแƒกแƒแƒ“แƒ”แƒก แƒ’แƒแƒ›แƒแƒแƒจแƒ™แƒแƒ แƒแƒ•แƒแƒ— แƒ™แƒแƒœแƒกแƒแƒšแƒ˜แƒก แƒžแƒแƒ แƒขแƒ˜ แƒ’แƒแƒ แƒ”แƒ“แƒแƒœ - แƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ˜แƒ แƒ“แƒแƒขแƒแƒ•แƒแƒ— แƒ˜แƒ’แƒ˜ แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜แƒก แƒกแƒแƒ™แƒ”แƒขแƒ˜. แƒ›แƒแƒจแƒ˜แƒœ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒ—, แƒ•แƒ˜แƒกแƒแƒช แƒแƒฅแƒ•แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒกแƒแƒ™แƒ”แƒขแƒ–แƒ” แƒฉแƒแƒฌแƒ”แƒ แƒแƒ–แƒ”, แƒจแƒ”แƒซแƒšแƒ”แƒ‘แƒก แƒขแƒแƒ แƒแƒœแƒขแƒฃแƒšแƒแƒกแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒแƒก.

แƒ”แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒแƒฅแƒ›แƒ”แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒ›แƒ”แƒแƒ แƒ” แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ - แƒ‘แƒ˜แƒœแƒแƒ แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜.

2. แƒแƒ แƒแƒ‘แƒ˜แƒ—แƒ˜ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒš แƒžแƒแƒ แƒขแƒ—แƒแƒœ แƒ“แƒแƒกแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“

แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ›แƒแƒกแƒ›แƒ”แƒœแƒ˜แƒก แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒ˜แƒ•แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฎแƒกแƒœแƒ˜แƒก แƒžแƒแƒ แƒขแƒก แƒ’แƒแƒ แƒ” แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ”แƒก แƒžแƒแƒ แƒขแƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒแƒ แƒแƒ‘แƒ˜แƒ—แƒ˜ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒ— แƒ“แƒ แƒ˜แƒฅ แƒฉแƒแƒ แƒ—แƒฃแƒšแƒ˜แƒ แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ.

แƒแƒ› แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ tarantoolctl connect to แƒžแƒแƒ แƒขแƒ˜แƒก แƒœแƒแƒ›แƒ”แƒ แƒ˜. แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ— แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒก, แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒ“แƒ แƒ›แƒ˜แƒกแƒชแƒ”แƒ— แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒฃแƒคแƒšแƒ”แƒ‘แƒ.

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒ“แƒ แƒงแƒฃแƒ—แƒ˜แƒก แƒ›แƒแƒ“แƒฃแƒšแƒ˜

แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ Tarantool แƒแƒ แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒช แƒ“แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒช, แƒ›แƒแƒก แƒแƒฅแƒ•แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ›แƒแƒ“แƒฃแƒšแƒ˜. แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒก แƒงแƒฃแƒ—แƒ˜แƒก แƒ›แƒแƒ“แƒฃแƒšแƒ˜ - แƒ˜แƒก แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ แƒแƒฆแƒแƒชแƒแƒก แƒฌแƒ”แƒ แƒ— แƒงแƒฃแƒ—แƒจแƒ˜, Tarantool แƒฌแƒ”แƒ แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒ“แƒ˜แƒกแƒ™แƒ–แƒ”, แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒ›แƒแƒก แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒจแƒ˜ แƒแƒœ แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก แƒกแƒฎแƒ•แƒ แƒ แƒแƒ›แƒ”แƒก.

แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒ“แƒ˜แƒ•แƒแƒ แƒ— box แƒ›แƒแƒ“แƒฃแƒšแƒจแƒ˜ แƒ“แƒ แƒ›แƒแƒ•แƒฃแƒฌแƒแƒ“แƒ”แƒ‘แƒ— box.one แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก. แƒ”แƒก แƒแƒ˜แƒซแƒฃแƒšแƒ”แƒ‘แƒก Tarantool-แƒก แƒ’แƒแƒฃแƒจแƒ•แƒแƒก แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ™แƒแƒ“แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒแƒก. แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒก, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ.

local function bootstrap()
    local space = box.schema.create_space('example')
    space:create_index('primary')
    box.schema.user.grant('guest', 'read,write,execute', 'universe')

    -- Keep things safe by default
    --  box.schema.user.create('example', { password = 'secret' })
    --  box.schema.user.grant('example', 'replication')
    --  box.schema.user.grant('example', 'read,write,execute', 'space', 'example')
end

แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒก - แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“แƒก - แƒ แƒแƒ›แƒšแƒ˜แƒ—แƒแƒช แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒซแƒ˜แƒ”แƒ‘แƒ. แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“, แƒ—แƒฃ แƒแƒ  แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ— แƒ แƒแƒ˜แƒ›แƒ” แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒก, แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ•แƒ”แƒšแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“แƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒกแƒขแƒฃแƒ›แƒแƒ  แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒก แƒ•แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ’แƒ แƒแƒœแƒขแƒก, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—แƒแƒช แƒ•แƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ˜แƒ— แƒ‘แƒ˜แƒœแƒแƒ แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—. แƒฉแƒ•แƒ”แƒœ แƒ•แƒฃแƒจแƒ•แƒ”แƒ‘แƒ— แƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒก, แƒฌแƒ”แƒ แƒแƒก แƒ“แƒ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก แƒ›แƒ—แƒ”แƒš แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒแƒ–แƒ”.

แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ”แƒ‘แƒ—แƒแƒœ แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ—, แƒแƒฅ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ. แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ” - แƒขแƒ”แƒ แƒ˜แƒขแƒแƒ แƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒก แƒขแƒฃแƒžแƒšแƒ˜ แƒ”แƒฌแƒแƒ“แƒ”แƒ‘แƒ. แƒ˜แƒก แƒจแƒ”แƒคแƒฃแƒ—แƒฃแƒšแƒ˜แƒ MessagePack-แƒจแƒ˜. แƒ”แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒ’แƒแƒ แƒ˜ แƒคแƒแƒ แƒ›แƒแƒขแƒ˜แƒ - แƒแƒ แƒแƒ‘แƒ˜แƒ—แƒ˜แƒ แƒ“แƒ แƒœแƒแƒ™แƒšแƒ”แƒ‘ แƒแƒ“แƒ’แƒ˜แƒšแƒก แƒ˜แƒ™แƒแƒ•แƒ”แƒ‘แƒก - 18 แƒ‘แƒแƒ˜แƒขแƒ˜ 27-แƒ˜แƒก แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’.

Tarantool แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ“แƒแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒแƒ— แƒกแƒฃแƒžแƒ”แƒ  แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ แƒ“แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ›แƒแƒ—แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒ˜ แƒ แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜ แƒ’แƒแƒกแƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ

แƒ›แƒแƒกแƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ. แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒฎแƒแƒ–แƒก, แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฐแƒฅแƒแƒœแƒ“แƒ”แƒก แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ•แƒ”แƒขแƒ”แƒ‘แƒ˜.

แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ•แƒœแƒแƒฎแƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒกแƒ˜แƒ•แƒ แƒชแƒ” Box.space แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ แƒฉแƒ”แƒ•แƒแƒ“ แƒฉแƒแƒฌแƒ”แƒ แƒ”แƒ— box.space แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒ“แƒ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ— แƒกแƒ แƒฃแƒšแƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘.

Tarantool-แƒก แƒแƒฅแƒ•แƒก แƒแƒ แƒ˜ แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒซแƒ แƒแƒ•แƒ: Memory แƒ“แƒ Vinyl. แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒก แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒจแƒ˜. แƒแƒ›แƒ˜แƒขแƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒแƒ“ แƒ“แƒ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก. แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ˜แƒงแƒ แƒ”แƒ‘แƒ แƒ“แƒ˜แƒกแƒ™แƒ–แƒ” แƒ“แƒ แƒแƒกแƒ”แƒ•แƒ” แƒแƒ แƒ˜แƒก แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒฌแƒ˜แƒœแƒ แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒก แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ˜, แƒแƒกแƒ” แƒ แƒแƒ›, แƒฉแƒ•แƒ”แƒœ แƒแƒ แƒแƒคแƒ”แƒ แƒก แƒ“แƒแƒ•แƒ™แƒแƒ แƒ’แƒแƒ•แƒ—, แƒ—แƒฃ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ’แƒแƒคแƒฃแƒญแƒ“แƒ.

แƒ•แƒ˜แƒœแƒ˜แƒšแƒ˜ แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒ“แƒ˜แƒกแƒ™แƒ–แƒ” แƒฉแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒฃแƒคแƒ แƒ แƒœแƒแƒชแƒœแƒแƒ‘แƒ˜ แƒคแƒแƒ แƒ›แƒ˜แƒ— - แƒแƒœแƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒแƒ— แƒ›แƒ”แƒขแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ˜ แƒ•แƒ˜แƒ“แƒ แƒ” แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒขแƒแƒ แƒแƒœแƒขแƒฃแƒšแƒ แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒ›แƒแƒก แƒ“แƒ˜แƒกแƒ™แƒ˜แƒ“แƒแƒœ.

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒก.

unix/:/var/run/tarantool/example.control> box.space.example
---
- engine: memtx
  before_replace: 'function: 0x41eb02c8'
  on_replace: 'function: 0x41eb0568'
  ck_constraint: []
  field_count: 0
  temporary: false
  index:
    0: &0
      unique: true
      parts:
      - type: unsigned
        is_nullable: false
        fieldno: 1
      id: 0
      space_id: 512
      type: TREE
      name: primary
    primary: *0
  is_local: false
  enabled: true
  name: example
  id: 512
...

unix/:/var/run/tarantool/example.control>

Index:

แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“แƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒแƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒกแƒ˜แƒ•แƒ แƒชแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ›แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” แƒแƒ แƒแƒคแƒ”แƒ แƒ˜ แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก. แƒ แƒแƒ’แƒแƒ แƒช แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ•แƒ”แƒšแƒก - แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜แƒก ID.

แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜:

แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ•แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ— แƒ แƒ˜แƒกแƒ’แƒแƒœ แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜. แƒ˜แƒ’แƒ˜ แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ แƒ”แƒ แƒ—แƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒกแƒแƒ’แƒแƒœ - แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ•แƒ”แƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ—, แƒแƒ แƒ˜แƒก แƒขแƒ˜แƒžแƒ˜แƒก unsigned - แƒ“แƒแƒ“แƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ แƒ˜แƒชแƒฎแƒ•แƒ˜. แƒ แƒแƒ›แƒ“แƒ”แƒœแƒแƒ“แƒแƒช แƒ›แƒ” แƒ›แƒแƒฎแƒกแƒแƒ•แƒก แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒ“แƒแƒœ, แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ, แƒ แƒแƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก, แƒแƒ แƒ˜แƒก 18 แƒ™แƒ•แƒ˜แƒœแƒขแƒ˜แƒšแƒ˜แƒแƒœแƒ˜. แฒ”แƒก แƒ‘แƒ”แƒ•แƒ แƒ˜แƒ.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒฉแƒแƒ•แƒกแƒ•แƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ insert แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

unix/:/var/run/tarantool/example.control> box.space.example:insert{1, 'test1', 'test2'}
---
- [1, 'test1', 'test2']
...

unix/:/var/run/tarantool/example.control> box.space.example:insert{2, 'test2', 'test3', 'test4'}
---
- [2, 'test2', 'test3', 'test4']
...

unix/:/var/run/tarantool/example.control> box.space.example:insert{3, 'test3'}
---
- [3, 'test3']
...

unix/:/var/run/tarantool/example.control> box.space.example:insert{4, 'test4'}
---
- [4, 'test4']
...

unix/:/var/run/tarantool/example.control>

แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ•แƒ”แƒšแƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“แƒ˜ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ˜แƒก แƒฃแƒœแƒ˜แƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก. แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒจแƒ”แƒ›แƒแƒ˜แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒ แƒกแƒ•แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒ—, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ˜แƒฅ แƒฉแƒแƒ•แƒ“แƒแƒ— แƒ˜แƒ›แƒ“แƒ”แƒœแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ˜, แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒช แƒ’แƒ•แƒ˜แƒœแƒ“แƒ. แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ MessagePack แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ–แƒ”แƒ›แƒแƒ— แƒแƒฆแƒ•แƒฌแƒ”แƒ แƒ”.

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ Select แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

Box.example.select แƒฆแƒ˜แƒšแƒแƒ™แƒ˜แƒ— {1} แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒšแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜. แƒ—แƒฃ แƒ™แƒšแƒแƒ•แƒ˜แƒจแƒก แƒ“แƒแƒ•แƒฌแƒ”แƒ•แƒ—, แƒ“แƒแƒ•แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒก, แƒ แƒแƒช แƒ’แƒ•แƒแƒฅแƒ•แƒก. แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ“แƒ”แƒ‘แƒ˜แƒแƒœ แƒกแƒ•แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒฅ, แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒจแƒ˜, แƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒกแƒ•แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒชแƒ”แƒคแƒชแƒ˜แƒ - แƒแƒ แƒ˜แƒก แƒ•แƒ”แƒšแƒ˜แƒก แƒœแƒแƒ›แƒ แƒ”แƒ‘แƒ˜.

แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒแƒ‘แƒกแƒแƒšแƒฃแƒขแƒฃแƒ แƒแƒ“ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜. แƒ“แƒ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ›แƒแƒ•แƒซแƒ”แƒ‘แƒœแƒแƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ›แƒ”แƒแƒ แƒ” แƒ•แƒ”แƒšแƒ˜แƒ—. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒแƒฎแƒแƒš แƒ›แƒ”แƒแƒ แƒแƒ“ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒก.


box.space.example:create_index( โ€˜secondaryโ€™, { type = โ€˜TREEโ€™, unique = false, parts = {{field = 2, type =โ€™stringโ€™} }}) 

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— Create_index แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒแƒก.
แƒ“แƒแƒ•แƒแƒ แƒฅแƒ•แƒแƒ— แƒ›แƒแƒก แƒ›แƒ”แƒแƒ แƒ”แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒแƒ•แƒแƒœแƒ˜.

แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒแƒ— แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜. แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒก แƒขแƒ˜แƒžแƒ˜แƒ TREE. แƒ˜แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒ  แƒ˜แƒงแƒแƒก แƒฃแƒœแƒ˜แƒ™แƒแƒšแƒฃแƒ แƒ˜, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒจแƒ”แƒ˜แƒงแƒ•แƒแƒœแƒ”แƒ— Unique = false.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ›แƒ˜แƒ•แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ— แƒ แƒ แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜. แƒ•แƒ”แƒšแƒ˜ แƒแƒ แƒ˜แƒก แƒ•แƒ”แƒšแƒ˜แƒก แƒœแƒแƒ›แƒ”แƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ›แƒแƒ’แƒ แƒ”แƒ‘แƒ— แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒก แƒ“แƒ แƒ•แƒแƒ“แƒ’แƒ”แƒœแƒ— แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜แƒก แƒขแƒ˜แƒžแƒก. แƒ“แƒ แƒแƒกแƒ” แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ.

unix/:/var/run/tarantool/example.control> box.space.example:create_index('secondary', { type = 'TREE', unique = false, parts = {{field = 2, type = 'string'}}})
---
- unique: false
  parts:
  - type: string
    is_nullable: false
    fieldno: 2
  id: 1
  space_id: 512
  type: TREE
  name: secondary
...

unix/:/var/run/tarantool/example.control>

แƒแƒฎแƒšแƒ แƒแƒกแƒ” แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ•แƒฃแƒฌแƒแƒ“แƒแƒ—:

unix/:/var/run/tarantool/example.control> box.space.example.index.secondary:select('test1')
---
- - [1, 'test1', 'test2']
...

แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ

แƒ—แƒฃ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ•แƒ— แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒแƒก แƒ“แƒ แƒ™แƒ•แƒšแƒแƒ• แƒ•แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒแƒ›แƒแƒซแƒแƒฎแƒ”แƒ‘แƒแƒก, แƒ“แƒแƒ•แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ—, แƒ แƒแƒ› แƒ˜แƒก แƒ˜แƒฅ แƒแƒ  แƒแƒ แƒ˜แƒก - แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒชแƒแƒ แƒ˜แƒ”แƒšแƒ˜แƒ. แƒ”แƒก แƒ˜แƒ›แƒ˜แƒขแƒแƒ› แƒฎแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ› Tarantool แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก แƒกแƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ แƒžแƒฃแƒœแƒฅแƒขแƒ”แƒ‘แƒก แƒ“แƒ แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒ“แƒ˜แƒกแƒ™แƒ–แƒ”, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒฃ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก แƒจแƒ”แƒ•แƒฌแƒงแƒ•แƒ”แƒขแƒ— แƒ›แƒแƒ›แƒ“แƒ”แƒ•แƒœแƒ แƒจแƒ”แƒœแƒแƒฎแƒ•แƒแƒ›แƒ“แƒ”, แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒ™แƒแƒ แƒ’แƒแƒ•แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒแƒก - แƒ˜แƒ›แƒ˜แƒขแƒแƒ›, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒแƒฆแƒ•แƒแƒ“แƒ’แƒ”แƒœแƒ— แƒ‘แƒแƒšแƒ แƒ’แƒแƒ›แƒจแƒ•แƒ”แƒ‘ แƒžแƒฃแƒœแƒฅแƒขแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒงแƒ, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒแƒ แƒ˜ แƒกแƒแƒแƒ—แƒ˜แƒก แƒฌแƒ˜แƒœ.

แƒงแƒแƒ•แƒ”แƒšแƒ˜ แƒฌแƒแƒ›แƒ˜แƒก แƒ“แƒแƒ–แƒแƒ’แƒ•แƒแƒช แƒแƒ  แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก, แƒ แƒแƒ“แƒ’แƒแƒœ 20 GB แƒ“แƒ˜แƒกแƒ™แƒ–แƒ” แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ•แƒแƒ“ แƒ’แƒแƒ“แƒแƒงแƒ แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ™แƒแƒ แƒ’แƒ˜ แƒ˜แƒ“แƒ”แƒ.

แƒแƒ› แƒ›แƒ˜แƒ–แƒœแƒ˜แƒ— แƒ’แƒแƒ›แƒแƒ˜แƒ’แƒแƒœแƒ”แƒก แƒ“แƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒฌแƒ˜แƒœแƒ แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒก แƒ™แƒแƒœแƒชแƒ”แƒคแƒชแƒ˜แƒ. แƒ›แƒ˜แƒกแƒ˜ แƒ“แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒงแƒแƒ•แƒ”แƒšแƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜ แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ›แƒชแƒ˜แƒ แƒ” แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒก แƒคแƒแƒ˜แƒšแƒจแƒ˜.

แƒงแƒแƒ•แƒ”แƒšแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜ แƒกแƒแƒ’แƒฃแƒจแƒแƒ’แƒแƒ›แƒ“แƒ” แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ แƒ›แƒแƒ—แƒจแƒ˜. แƒแƒ› แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ–แƒแƒ›แƒแƒก - แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, 64 แƒ›แƒ‘. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ˜แƒก แƒกแƒแƒ•แƒกแƒ”แƒ, แƒฉแƒแƒฌแƒ”แƒ แƒ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ แƒ›แƒ”แƒแƒ แƒ” แƒคแƒแƒ˜แƒšแƒ–แƒ” แƒ’แƒแƒ“แƒแƒกแƒ•แƒšแƒ. แƒ“แƒ แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, Tarantool แƒแƒฆแƒ“แƒ’แƒ”แƒ‘แƒ แƒ‘แƒแƒšแƒ แƒกแƒแƒ’แƒฃแƒจแƒแƒ’แƒแƒ“แƒแƒœ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ› แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒแƒ–แƒ”, แƒกแƒแƒœแƒแƒ› แƒแƒ  แƒจแƒ”แƒฉแƒ”แƒ แƒ“แƒ”แƒ‘แƒ.

Tarantool แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ“แƒแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒแƒ— แƒกแƒฃแƒžแƒ”แƒ  แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ แƒ“แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ›แƒแƒ—แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒ˜ แƒ แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜ แƒ’แƒแƒกแƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ

แƒแƒกแƒ”แƒ—แƒ˜ แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒšแƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒแƒ— แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ box.cfg แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒจแƒ˜ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“.lua แƒคแƒแƒ˜แƒšแƒจแƒ˜):

wal_mode = โ€œwriteโ€;

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒ แƒแƒช แƒแƒฎแƒšแƒ แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ”แƒ—, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— Tarantula แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“ แƒ“แƒ แƒ˜แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ. แƒแƒฎแƒšแƒ แƒ™แƒ˜ แƒœแƒแƒ›แƒชแƒฎแƒ•แƒแƒ แƒ˜ แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒ˜แƒกแƒ˜ แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒแƒช แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒขแƒแƒ แƒแƒœแƒขแƒฃแƒšแƒแƒ–แƒ”

แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒกแƒžแƒแƒ˜แƒšแƒ”แƒ แƒ˜แƒก แƒฅแƒ•แƒ”แƒจ

box.cfg {
    listen = '0.0.0.0:3301';
    io_collect_interval = nil;
    readahead = 16320;
    memtx_memory = 128 * 1024 * 1024; -- 128Mb
    memtx_min_tuple_size = 16;
    memtx_max_tuple_size = 128 * 1024 * 1024; -- 128Mb
    vinyl_memory = 128 * 1024 * 1024; -- 128Mb
    vinyl_cache = 128 * 1024 * 1024; -- 128Mb
    vinyl_max_tuple_size = 128 * 1024 * 1024; -- 128Mb
    vinyl_write_threads = 2;
    wal_mode = "write";
    wal_max_size = 256 * 1024 * 1024;
    checkpoint_interval = 60 * 60; -- one hour
    checkpoint_count = 6;
    force_recovery = true;
    log_level = 5;
    log_nonblock = false;
    too_long_threshold = 0.5;
    read_only   = false
}

local function bootstrap()
    local space = box.schema.create_space('example')
    space:create_index('primary')

    box.schema.user.create('example', { password = 'secret' })
    box.schema.user.grant('example', 'read,write,execute', 'space', 'example')

    box.schema.user.create('repl', { password = 'replication' })
    box.schema.user.grant('repl', 'replication')
end

-- for first run create a space and add set up grants
box.once('replica', bootstrap)

-- enabling console access
console = require('console')
console.listen('127.0.0.1:3302')

-- http config
local charset = {}  do -- [0-9a-zA-Z]
    for c = 48, 57  do table.insert(charset, string.char(c)) end
    for c = 65, 90  do table.insert(charset, string.char(c)) end
    for c = 97, 122 do table.insert(charset, string.char(c)) end
end

local function randomString(length)
    if not length or length <= 0 then return '' end
    math.randomseed(os.clock()^5)
    return randomString(length - 1) .. charset[math.random(1, #charset)]
end

local http_router = require('http.router')
local http_server = require('http.server')
local json = require('json')

local httpd = http_server.new('0.0.0.0', 8080, {
    log_requests = true,
    log_errors = true
})

local router = http_router.new()

local function get_count()
 local cnt = box.space.example:len()
 return cnt
end

router:route({method = 'GET', path = '/count'}, function()
    return {status = 200, body = json.encode({count = get_count()})}
end)

router:route({method = 'GET', path = '/token'}, function()
    local token = randomString(32)
    local last = box.space.example:len()
    box.space.example:insert{ last + 1, token }
    return {status = 200, body = json.encode({token = token})}
end)

prometheus = require('prometheus')

fiber = require('fiber')
tokens_count = prometheus.gauge("tarantool_tokens_count",
                              "API Tokens Count")

function monitor_tokens_count()
  while true do
    tokens_count:set(get_count())
    fiber.sleep(5)
  end
end
fiber.create(monitor_tokens_count)

router:route( { method = 'GET', path = '/metrics' }, prometheus.collect_http)

httpd:set_router(router)
httpd:start()

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒชแƒฎแƒแƒ“แƒ”แƒ‘แƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒชแƒฎแƒ แƒ˜แƒšแƒก lua-แƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก แƒกแƒ˜แƒ›แƒ‘แƒแƒšแƒแƒ”แƒ‘แƒก. แƒ”แƒก แƒคแƒ˜แƒ แƒคแƒ˜แƒขแƒ แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒ—แƒ˜ แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“.

local charset = {}  do -- [0-9a-zA-Z]
    for c = 48, 57  do table.insert(charset, string.char(c)) end
    for c = 65, 90  do table.insert(charset, string.char(c)) end
    for c = 97, 122 do table.insert(charset, string.char(c)) end
end

แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ•แƒแƒชแƒฎแƒแƒ“แƒ”แƒ‘แƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก - randomString แƒ“แƒ แƒ•แƒแƒซแƒšแƒ”แƒ•แƒ— แƒกแƒ˜แƒ’แƒ แƒซแƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก แƒคแƒ แƒฉแƒฎแƒ˜แƒšแƒ”แƒ‘แƒจแƒ˜.

local function randomString(length)
    if not length or length <= 0 then return '' end
    math.randomseed(os.clock()^5)
    return randomString(length - 1) .. charset[math.random(1, #charset)]
end

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฉแƒ•แƒ”แƒœ แƒ•แƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ— http แƒ แƒแƒฃแƒขแƒ”แƒ แƒก แƒ“แƒ http แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒฉแƒ•แƒ”แƒœแƒก Tarantula แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก, JSON, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ•แƒฃแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒ— แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒก.

local http_router = require('http.router')
local http_server = require('http.server')
local json = require('json')

แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ— แƒžแƒแƒ แƒขแƒก 8080 แƒงแƒ•แƒ”แƒšแƒ http แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฆแƒฌแƒ”แƒ แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก แƒ“แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒก.

local httpd = http_server.new('0.0.0.0', 8080, {
    log_requests = true,
    log_errors = true
})

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒ•แƒแƒชแƒฎแƒแƒ“แƒ”แƒ‘แƒ— แƒ›แƒแƒ แƒจแƒ แƒฃแƒขแƒก, แƒแƒกแƒ” แƒ แƒแƒ›, แƒ—แƒฃ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ GET แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒ— แƒ›แƒแƒ•แƒ แƒžแƒแƒ แƒขแƒจแƒ˜ 8080 /count, แƒ›แƒแƒจแƒ˜แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒซแƒแƒฎแƒ”แƒ‘แƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก แƒ”แƒ แƒ—แƒ˜ แƒฎแƒแƒ–แƒ˜แƒ“แƒแƒœ. แƒ˜แƒก แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒกแƒขแƒแƒขแƒฃแƒกแƒก - 200, 404, 403 แƒแƒœ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒกแƒฎแƒ•แƒแƒก, แƒ แƒแƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ–แƒฃแƒกแƒขแƒ”แƒ‘แƒ—.

router:route({method = 'GET', path = '/count'}, function()
    return {status = 200, body = json.encode({count = get_count()})}
end)

แƒกแƒฎแƒ”แƒฃแƒšแƒจแƒ˜ แƒ•แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ— json.encode-แƒก, แƒ›แƒแƒกแƒจแƒ˜ แƒ›แƒ˜แƒ•แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ— count แƒ“แƒ getcount, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ แƒ“แƒ แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒแƒก แƒฉแƒ•แƒ”แƒœแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜.

แƒ›แƒ”แƒแƒ แƒ” แƒ›แƒ”แƒ—แƒแƒ“แƒ˜

router:route({method = 'GET', path = '/token'}, function() 
    local token = randomString(32) 
    local last = box.space.example:len() 
    box.space.example:insert{ last + 1, token } 
    return {status = 200, body = json.encode({token = token})}
end)

แƒกแƒแƒ“ แƒ แƒ˜แƒ’แƒจแƒ˜ แƒ แƒแƒฃแƒขแƒ”แƒ แƒ˜:route({method = 'GET', แƒ’แƒ–แƒ = '/token'}, แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ() แƒฉแƒ•แƒ”แƒœ แƒ•แƒฃแƒฌแƒแƒ“แƒ”แƒ‘แƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก แƒ“แƒ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒŸแƒ”แƒขแƒแƒœแƒก.

แƒฎแƒแƒ–แƒ˜ แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒœแƒ˜แƒจแƒแƒœแƒ˜ = randomString(32) แƒแƒ แƒ˜แƒก 32 แƒกแƒ˜แƒ›แƒ‘แƒแƒšแƒแƒกแƒ’แƒแƒœ แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ แƒ˜ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒ—แƒ˜ แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜.
แฒฎแƒแƒ–แƒจแƒ˜ แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ‘แƒแƒšแƒ = box.space.example:len() แƒฉแƒ•แƒ”แƒœ แƒแƒ›แƒแƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒ‘แƒแƒšแƒ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒก.
แƒ“แƒ แƒฎแƒแƒ–แƒจแƒ˜ box.space.example:insert{ last + 1, token } แƒฉแƒ•แƒ”แƒœ แƒ•แƒฌแƒ”แƒ แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒฉแƒ•แƒ”แƒœแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜, แƒแƒœแƒฃ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ’แƒแƒ•แƒ–แƒ แƒ“แƒ˜แƒ— ID-แƒก 1-แƒ˜แƒ—. แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ™แƒ”แƒ—แƒ“แƒ”แƒก, แƒกแƒฎแƒ•แƒแƒ—แƒ แƒจแƒแƒ แƒ˜แƒก, แƒแƒ แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒ› แƒ›แƒแƒฃแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ’แƒ–แƒ˜แƒ—. แƒขแƒแƒ แƒแƒœแƒขแƒฃแƒšแƒแƒจแƒ˜ แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ”แƒ‘แƒ˜.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒฌแƒ”แƒ แƒ— แƒŸแƒ”แƒขแƒแƒœแƒก แƒ˜แƒฅ.

แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ”แƒ— แƒ’แƒแƒœแƒชแƒฎแƒแƒ“แƒ”แƒ‘แƒ แƒ”แƒ แƒ— แƒคแƒแƒ˜แƒšแƒจแƒ˜. แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ›แƒแƒœแƒ˜แƒžแƒฃแƒšแƒ˜แƒ แƒ”แƒ‘แƒ แƒ˜แƒฅแƒแƒœแƒ˜แƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒงแƒฃแƒ—แƒ˜แƒก แƒ›แƒแƒ“แƒฃแƒšแƒ˜ แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ‘แƒ˜แƒœแƒซแƒฃแƒ  แƒกแƒแƒฅแƒ›แƒ”แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก.

แƒ˜แƒก แƒฃแƒกแƒ›แƒ”แƒœแƒก http-แƒก แƒ“แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ—แƒแƒœ, แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ”แƒ แƒ— แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒแƒจแƒ˜แƒ - แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒช แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒช. แƒแƒ›แƒ˜แƒขแƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒฎแƒ“แƒ”แƒ‘แƒ.

แƒ“แƒแƒกแƒแƒฌแƒงแƒ”แƒ‘แƒแƒ“ แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— http แƒ›แƒแƒ“แƒฃแƒšแƒ˜:

แƒ แƒแƒ’แƒแƒ  แƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ— แƒแƒ›แƒแƒก, แƒจแƒ”แƒฎแƒ”แƒ“แƒ”แƒ— แƒกแƒžแƒแƒ˜แƒšแƒ”แƒ แƒ˜แƒก แƒฅแƒ•แƒ”แƒจ

root@test2:/# tarantoolctl rocks install http
Installing http://rocks.tarantool.org/http-scm-1.src.rock
Missing dependencies for http scm-1:
   checks >= 3.0.1 (not installed)

http scm-1 depends on checks >= 3.0.1 (not installed)
Installing http://rocks.tarantool.org/checks-3.0.1-1.rockspec

Cloning into 'checks'...
remote: Enumerating objects: 28, done.
remote: Counting objects: 100% (28/28), done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 28 (delta 1), reused 16 (delta 1), pack-reused 0
Receiving objects: 100% (28/28), 12.69 KiB | 12.69 MiB/s, done.
Resolving deltas: 100% (1/1), done.
Note: checking out '580388773ef11085015b5a06fe52d61acf16b201'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

No existing manifest. Attempting to rebuild...
checks 3.0.1-1 is now installed in /.rocks (license: BSD)

-- The C compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found TARANTOOL: /usr/include (found version "2.4.2-80-g18f2bc82d")
-- Tarantool LUADIR is /.rocks/share/tarantool/rocks/http/scm-1/lua
-- Tarantool LIBDIR is /.rocks/share/tarantool/rocks/http/scm-1/lib
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    version


-- Build files have been written to: /tmp/luarocks_http-scm-1-V4P9SM/http/build.luarocks
Scanning dependencies of target httpd
[ 50%] Building C object http/CMakeFiles/httpd.dir/lib.c.o
In file included from /tmp/luarocks_http-scm-1-V4P9SM/http/http/lib.c:32:0:
/tmp/luarocks_http-scm-1-V4P9SM/http/http/lib.c: In function โ€˜tpl_termโ€™:
/usr/include/tarantool/lauxlib.h:144:15: warning: this statement may fall through [-Wimplicit-fallthrough=]
    (*(B)->p++ = (char)(c)))
    ~~~~~~~~~~~^~~~~~~~~~~~
/tmp/luarocks_http-scm-1-V4P9SM/http/http/lib.c:62:7: note: in expansion of macro โ€˜luaL_addcharโ€™
       luaL_addchar(b, '\');
       ^~~~~~~~~~~~
/tmp/luarocks_http-scm-1-V4P9SM/http/http/lib.c:63:6: note: here
      default:
      ^~~~~~~
In file included from /tmp/luarocks_http-scm-1-V4P9SM/http/http/lib.c:39:0:
/tmp/luarocks_http-scm-1-V4P9SM/http/http/tpleval.h: In function โ€˜tpe_parseโ€™:
/tmp/luarocks_http-scm-1-V4P9SM/http/http/tpleval.h:147:9: warning: this statement may fall through [-Wimplicit-fallthrough=]
    type = TPE_TEXT;
    ~~~~~^~~~~~~~~~
/tmp/luarocks_http-scm-1-V4P9SM/http/http/tpleval.h:149:3: note: here
   case TPE_LINECODE:
   ^~~~
In file included from /tmp/luarocks_http-scm-1-V4P9SM/http/http/lib.c:40:0:
/tmp/luarocks_http-scm-1-V4P9SM/http/http/httpfast.h: In function โ€˜httpfast_parseโ€™:
/tmp/luarocks_http-scm-1-V4P9SM/http/http/httpfast.h:372:22: warning: this statement may fall through [-Wimplicit-fallthrough=]
                 code = 0;
                 ~~~~~^~~
/tmp/luarocks_http-scm-1-V4P9SM/http/http/httpfast.h:374:13: note: here
             case status:
             ^~~~
/tmp/luarocks_http-scm-1-V4P9SM/http/http/httpfast.h:393:23: warning: this statement may fall through [-Wimplicit-fallthrough=]
                 state = message;
                 ~~~~~~^~~~~~~~~
/tmp/luarocks_http-scm-1-V4P9SM/http/http/httpfast.h:395:13: note: here
             case message:
             ^~~~
[100%] Linking C shared library lib.so
[100%] Built target httpd
[100%] Built target httpd
Install the project...
-- Install configuration: "Debug"
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/VERSION.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lib/http/lib.so
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/server/init.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/server/tsgi_adapter.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/nginx_server/init.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/router/init.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/router/fs.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/router/matching.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/router/middleware.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/router/request.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/router/response.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/tsgi.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/utils.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/mime_types.lua
-- Installing: /.rocks/share/tarantool/rocks/http/scm-1/lua/http/codes.lua
http scm-1 is now installed in /.rocks (license: BSD)

root@test2:/#

แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒžแƒ แƒแƒ›แƒ”แƒ—แƒ” แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“:

root@test2:/# tarantoolctl rocks install prometheus
Installing http://rocks.tarantool.org/prometheus-scm-1.rockspec

Cloning into 'prometheus'...
remote: Enumerating objects: 19, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 19 (delta 2), reused 5 (delta 0), pack-reused 0
Receiving objects: 100% (19/19), 10.73 KiB | 10.73 MiB/s, done.
Resolving deltas: 100% (2/2), done.
prometheus scm-1 is now installed in /.rocks (license: BSD)

root@test2:/#

แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒฃแƒจแƒ•แƒ˜แƒ— แƒ“แƒ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ–แƒ”

root@test2:/# curl -D - -s http://127.0.0.1:8080/token
HTTP/1.1 200 Ok
Content-length: 44
Server: Tarantool http (tarantool v2.4.2-80-g18f2bc82d)
Connection: keep-alive

{"token":"e2tPq9l5Z3QZrewRf6uuoJUl3lJgSLOI"}

root@test2:/# curl -D - -s http://127.0.0.1:8080/token
HTTP/1.1 200 Ok
Content-length: 44
Server: Tarantool http (tarantool v2.4.2-80-g18f2bc82d)
Connection: keep-alive

{"token":"fR5aCA84gj9eZI3gJcV0LEDl9XZAG2Iu"}

root@test2:/# curl -D - -s http://127.0.0.1:8080/count
HTTP/1.1 200 Ok
Content-length: 11
Server: Tarantool http (tarantool v2.4.2-80-g18f2bc82d)
Connection: keep-alive

{"count":2}root@test2:/#

/count แƒ’แƒ•แƒแƒซแƒšแƒ”แƒ•แƒก แƒกแƒขแƒแƒขแƒฃแƒกแƒก 200.
/token แƒ’แƒแƒกแƒชแƒ”แƒ›แƒก แƒŸแƒ”แƒขแƒแƒœแƒก แƒ“แƒ แƒฌแƒ”แƒ แƒก แƒแƒ› แƒŸแƒ”แƒขแƒแƒœแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜.

แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ•แƒฃแƒจแƒ•แƒแƒ— แƒกแƒแƒแƒ แƒ˜แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ 50 แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ 000 แƒ™แƒแƒœแƒ™แƒฃแƒ แƒ”แƒœแƒขแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ.

root@test2:/# ab -c 500 -n 50000 http://127.0.0.1:8080/token
This is ApacheBench, Version 2.3 <$Revision: 1807734 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests


Server Software:        Tarantool
Server Hostname:        127.0.0.1
Server Port:            8080

Document Path:          /token
Document Length:        44 bytes

Concurrency Level:      500
Time taken for tests:   14.578 seconds
Complete requests:      50000
Failed requests:        0
Total transferred:      7950000 bytes
HTML transferred:       2200000 bytes
Requests per second:    3429.87 [#/sec] (mean)
Time per request:       145.778 [ms] (mean)
Time per request:       0.292 [ms] (mean, across all concurrent requests)
Transfer rate:          532.57 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   10 103.2      0    3048
Processing:    12   69 685.1     15   13538
Waiting:       12   69 685.1     15   13538
Total:         12   78 768.2     15   14573

Percentage of the requests served within a certain time (ms)
  50%     15
  66%     15
  75%     16
  80%     16
  90%     16
  95%     16
  98%     21
  99%     42
 100%  14573 (longest request)
root@test2:/#

แƒ’แƒแƒ˜แƒชแƒ”แƒ›แƒ แƒŸแƒ”แƒขแƒแƒœแƒ”แƒ‘แƒ˜. แƒ“แƒ แƒฉแƒ•แƒ”แƒœ แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ•แƒแƒ“ แƒ•แƒแƒฌแƒ”แƒ แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก. แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก 99% แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ“แƒ 42 แƒ›แƒ˜แƒšแƒ˜แƒฌแƒแƒ›แƒจแƒ˜. แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 3500 แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒฌแƒแƒ›แƒจแƒ˜ 2 แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒแƒœแƒ˜ แƒ“แƒ 4 แƒ’แƒ˜แƒ’แƒแƒ‘แƒแƒ˜แƒขแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒฅแƒแƒœแƒ” แƒžแƒแƒขแƒแƒ แƒ แƒแƒžแƒแƒ แƒแƒขแƒ–แƒ”.

แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒแƒ˜แƒ แƒฉแƒ˜แƒแƒ— แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 50000 แƒŸแƒ”แƒขแƒแƒœแƒ˜ แƒ“แƒ แƒœแƒแƒฎแƒแƒ— แƒ›แƒ˜แƒกแƒ˜ แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ.

แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒแƒ แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ http, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒ’แƒแƒฃแƒจแƒ•แƒแƒ— แƒคแƒแƒœแƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ”แƒœ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก. แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒขแƒ แƒ˜แƒ’แƒ”แƒ แƒ”แƒ‘แƒ˜. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒ แƒ”แƒ™แƒแƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ–แƒ”, แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒแƒ— แƒ แƒแƒ˜แƒ›แƒ” - แƒจแƒ”แƒแƒกแƒฌแƒแƒ แƒ”แƒ— แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ”แƒ‘แƒ˜.

แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒฌแƒ”แƒ แƒแƒ— แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒจแƒฃแƒแƒšแƒแƒ“ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ“แƒ แƒแƒ  แƒจแƒ”แƒ›แƒแƒ˜แƒคแƒแƒ แƒ’แƒšแƒแƒ— แƒแƒ แƒแƒคแƒ แƒ˜แƒ—, แƒ“แƒแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒแƒ— แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ›แƒแƒ“แƒฃแƒšแƒ˜ แƒ“แƒ แƒ’แƒแƒœแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒแƒ— แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒšแƒแƒ’แƒ˜แƒ™แƒ.

แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ’แƒแƒ แƒ” แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒซแƒ˜แƒ”แƒ‘แƒ แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ. แƒแƒ› แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ”แƒœ แƒกแƒฎแƒ•แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜.

แƒขแƒแƒ แƒแƒœแƒขแƒฃแƒšแƒ แƒแƒ›แƒแƒก แƒ—แƒแƒ•แƒแƒ“ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก แƒ“แƒ แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ  แƒ›แƒแƒ’แƒ˜แƒฌแƒ”แƒ•แƒ— แƒชแƒแƒšแƒ™แƒ” แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ.

แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒก

แƒ”แƒก แƒ“แƒ˜แƒ“แƒ˜ แƒœแƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ˜แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒ. แƒ›แƒ”แƒแƒ แƒ” แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒšแƒ” แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ“แƒ”แƒ‘แƒ Mail.ru Group-แƒ˜แƒก แƒ‘แƒšแƒแƒ’แƒ–แƒ” แƒ“แƒ แƒแƒ› แƒ›แƒแƒกแƒแƒšแƒแƒจแƒ˜ แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ“ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ— แƒ›แƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒก.

แƒ—แƒฃ แƒ’แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒ— แƒ“แƒแƒ”แƒกแƒฌแƒ แƒแƒ— แƒฆแƒแƒœแƒ˜แƒกแƒซแƒ˜แƒ”แƒ‘แƒ”แƒ‘แƒก, แƒกแƒแƒ“แƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ— แƒแƒ› แƒœแƒ˜แƒ•แƒ—แƒ”แƒ‘แƒก แƒแƒœแƒšแƒแƒ˜แƒœ แƒ“แƒ แƒ“แƒแƒฃแƒกแƒ•แƒ˜แƒ— แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒ‘แƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ  แƒ“แƒ แƒแƒจแƒ˜, แƒฉแƒแƒ”แƒ แƒ—แƒ”แƒ— แƒแƒ แƒฎแƒ˜ DevOps by REBRAIN.

แƒ—แƒฃ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒฆแƒ แƒฃแƒ‘แƒ”แƒšแƒ–แƒ” แƒ’แƒแƒ“แƒแƒกแƒ•แƒšแƒ แƒแƒœ แƒ’แƒแƒฅแƒ•แƒ— แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒ‘แƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ›แƒแƒ’แƒ”แƒ แƒ˜แƒ“แƒ”แƒ‘แƒแƒ— แƒ“แƒแƒขแƒแƒ•แƒแƒ— แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ.

PS แƒ—แƒ•แƒ”แƒจแƒ˜ 2 แƒฃแƒคแƒแƒกแƒ แƒแƒฃแƒ“แƒ˜แƒขแƒ˜ แƒ’แƒ•แƒแƒฅแƒ•แƒก, แƒแƒšแƒ‘แƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ