เบซเปเบฒเบเบตเบเปเบญเบเบเปเบญเบเบเบฐเบเบฒเบเบฒเบกเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ Tarantool, เปเบเปเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบฑเบเบเปเปเปเบฎเบฑเบเบงเบฝเบเบชเปเบฒเบฅเบฑเบเบเปเบญเบ. เปเบเปเบเปเปเบเบปเบเบกเบฒเบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฑเบเบเบฒเบ webinar เบเปเบญเบเบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบ Hadoop, เบเปเบฝเบงเบเบฑเบเบงเบดเบเบตเบเบฒเบ MapReduce เปเบฎเบฑเบเบงเบฝเบ. เบขเบนเปเบเบตเปเบเบฑเปเบเบเปเบญเบเบเบทเบเบเบฒเบกเบเปเบฒเบเบฒเบก - "เปเบเบฑเบเบซเบเบฑเบเบเปเปเปเบเป Tarantool เบชเปเบฒเบฅเบฑเบเบงเบฝเบเบเบฒเบเบเบตเป?".
เบชเปเบฒเบฅเบฑเบเบเบงเบฒเบกเบขเบฒเบเบฎเบนเปเบขเบฒเบเปเบซเบฑเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฑเบเบชเบดเบเปเบเบเบฑเบเบเบทเบเปเบเบซเบฒเบกเบฑเบ, เบเบปเบเบชเบญเบเบชเบฐเบเบฑเบเบซเบฅเปเบฒเบชเบธเบ - เปเบฅเบฐเปเบงเบฅเบฒเบเบตเปเบเปเบญเบเบเปเปเบกเบฑเบเปเบเบเบเบฒเบ. เบเบญเบเบเบตเปเบเปเบญเบเบเบฐเบชเบฐเปเบเบเบงเบดเบเบตเบเบฒเบเบเบฝเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเปเบฒเบเปเปเบ Tarantool, เปเบซเบฅเบเบกเบฑเบเปเบฅเบฐเบเบงเบเปเบเบดเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ, เปเบฅเบฐเปเบเบปเปเบฒเบเบฐเปเบซเบฑเบเบงเปเบฒเบเบธเบเบขเปเบฒเบเบเบตเปเบเปเบฒเบเปเบฅเบฐเปเบขเบฑเบ.
Tarantool เปเบกเปเบเบซเบเบฑเบ
Tarantool เบงเบฒเบเบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเปเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเปเบงเบเบตเปเบชเบธเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบชเปเบเปเปเบกเบนเบเปเบเปเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบเบขเบนเปเปเบเบเบฑเปเบ. เบเบญเบเบเบฒเบเบเบฑเปเบ, replicate เปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒ, shard - เบเบฑเปเบเปเบกเปเบ, เปเบเปเบเบเบฑเบเบเปเปเบกเบนเบเบเปเบฒเบเบงเบเบซเบผเบงเบเบซเบผเบฒเบเปเบเบเบปเปเบงเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเปเบฒเบเบงเบเบซเบเบถเปเบเปเบฅเบฐเบชเบปเบกเบเบปเบเบเบปเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบงเบเปเบเบปเบฒ - make fault-tolerant master-master links .
เบญเบฑเบเบเบตเบชเบญเบ, เบกเบฑเบเปเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฝเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบเปเบฒเบเปเบเบกเบฑเบ, เปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเปเปเบกเบนเบ, เบเบปเบงเบขเปเบฒเบ, เบฅเบถเบเบฅเบฒเบเบเบฒเบเปเบเบปเปเบฒเปเบเบเบทเปเบเบซเบฅเบฑเบเบเบฒเบกเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบขเปเบฒเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฝเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ Http เปเบเบเบเบปเบเปเบ Tarantula เบเบตเปเบเบฐเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเปเปเบกเบนเบ: เปเบซเปเบเปเบฒเบเบงเบเบเบญเบเบเบงเบเปเบเบปเบฒ, เบเบฝเบเบเปเปเบกเบนเบเปเบซเบกเปเบขเบนเปเบเบตเปเบเบฑเปเบเปเบฅเบฐเบซเบผเบธเบเบฅเบปเบเบเบฑเบเบซเบกเบปเบเปเบเบฑเบเบเบปเปเบเบชเบฐเบเบฑเบ.
เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบญเปเบฒเบเบเบปเบเบเบงเบฒเบกเบเปเบฝเบงเบเบฑเบเบงเบดเบเบตเบเบฒเบ guys เปเบฎเบฑเบเปเบเบงเบเปเปเบเบงเบฒเบก 300 เปเบเบง, เปเบเบดเปเบเบเบฝเบเปเบเปเปเปเบฒเบเบฒเปเบฅเบฐ thrashes - เบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเบกเบตเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเปเบฒเปเบชเบธเบเบเบตเป 20 เบเปเปเบเบงเบฒเบกเบเปเปเบงเบดเบเบฒเบเบต. เปเบเบเบตเปเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบซเบฑเบเบซเบเปเบฒเปเบฅเบฐเบเบฝเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฐเบซเบเบฒเบเปเบซเบเปเบซเบผเบฒเบ, เปเบฅเบฐเบชเบดเปเบเปเบซเบผเบปเปเบฒเบเบตเปเบเบฐเบเปเปเบเบทเบเปเบเบฑเบเปเบงเป, เบเบทเบเบฑเบ PostgreS.
เบเบฐเบกเบฒเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฑเปเบเบเปเบฒเบง, เบเบฝเบเปเบเปเบเปเบฒเบเบเบฒเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเบฐเบเบฒเบเบฒเบกเบญเบฐเบเบดเบเบฒเบเปเบเบเบปเบเบเบงเบฒเบกเบเบตเป.
เบเบฒเบเบเบฑเปเบเบเปเบฒ
เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบชเบญเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบฅเบตเปเบกเบเบปเปเบเบชเบฒเบกเปเบเบทเปเบญเบ virtual เบกเบฒเบเบเบฐเบเบฒเบ - เบฎเบฒเบเบเบดเบ 20 gigabyte, Ubuntu 18.04. 2 CPU virtual เปเบฅเบฐ 4 gigabyte เบเบญเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ.
เบเบงเบเปเบฎเบปเบฒเบเบดเบเบเบฑเปเบ Tarantool - เบเปเบฒเปเบเบตเบเบเบฒเบ bash script เบซเบผเบทเปเบเบตเปเบก repository เปเบฅเบฐเปเบฎเบฑเบ apt เปเบเปเบเบดเบเบเบฑเปเบ Tarantool. เปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบชเบฐเบเบดเบ - (curl -L
tarantoolctl เปเบกเปเบเบเปเบฒเบชเบฑเปเบเบเบปเปเบเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบธเปเบกเบเบญเบเบเบปเบงเบขเปเบฒเบ Tarantula.
/etc/tarantool - เบเบตเปโเปเบกเปเบโเบเบฒเบโเบเบฑเปเบโเบเปเบฒโเบเบฑเบโเบซเบกเบปเบโเปเบกเปเบโ.
var/log/tarantool - เบเบตเปเปเบกเปเบเบเบฑเบเบเบถเบ.
var/lib/tarantool - เบเบตเปเปเบกเปเบเบเปเปเบกเบนเบเปเบฃเบฑเบ, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเบกเบฑเบเบเบทเบเปเบเปเบเบญเบญเบเปเบเบฑเบเบเบปเบงเบขเปเบฒเบ.
เบกเบต instance-available เปเบฅเบฐ instance-enable folders - เบกเบฑเบเบเบฐเบเบญเบเบเปเบงเบเบชเบดเปเบเบเบตเปเบเบฐเปเบเบตเบเบเบปเบง - เปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบปเบงเบขเปเบฒเบเบเบตเปเบกเบตเบฅเบฐเบซเบฑเบ lua, เปเบเบดเปเบเบญเบฐเบเบดเบเบฒเบเบงเปเบฒเบเบญเบเปเบเบเบตเปเบกเบฑเบเบเบฑเบ, เบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเปเบเบเบตเปเบกเบตเบขเบนเปเบเบฑเบเบกเบฑเบ, เบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบทเปเบญเบเบเบฑเบ Vinyl, เบฅเบฐเบซเบฑเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบเปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบ. เปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, sharding, เบเบดเบง, เบเบฒเบเบฅเบถเบเบเปเปเบกเบนเบเบเบตเปเบฅเปเบฒเบชเบฐเปเบซเบก, เปเบฅเบฐเบญเบทเปเบเป.
เบเบปเบงเบขเปเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบทเบเบฑเบ PostgreS. เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเบเปเบญเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบซเบผเบฒเบเบชเปเบฒเปเบเบปเบฒเบเบญเบเบเบฒเบเบเปเปเบกเบนเบเบเบตเป hangs เปเบเบเบญเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ. เบกเบฑเบ turns เปเบซเปโเปเบซเบฑเบโเบงเปเบฒโเบเบปเบงโเบขเปเบฒเบโเบเบฒเบโเบเปเปโเบกเบนเบโเบเปเบฒโเบเบงเบโเบซเบเบถเปเบโเปเบกเปเบโเปเบเปโเปเบเบตเบโเบเบปเบงโเบขเบนเปโเปเบโเปเบเบทเปเบญเบโเปเบกเปโเบเปเบฒเบโเบเบฝเบงโ, เบเบตเปโเบงเบฒเบโเบขเบนเปโเปเบโเบเบญเบโเบเบตเปโเปเบเบโเบเปเบฒเบโเบเบฑเบโ. เบเบงเบเปเบเบปเบฒเบชเบฒเบกเบฒเบเบกเบตเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบซเบกเบปเบ - เบเบปเบงเบขเปเบฒเบเบซเบเบถเปเบเบเบฐเบเบดเบเบฑเบเปเบซเบเบเบปเบเบซเบเบถเปเบ, เบเบตเบชเบญเบ - เบญเบทเปเบ.
เบเบฒเบเบเบฑเบเบเบฒเบเบเบปเบงเบขเปเบฒเบ
เบเบงเบเปเบฎเบปเบฒเบกเบตเบเปเบฒเบชเบฑเปเบ tarantoolctl เบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบฒเบเบเบปเบงเบขเปเบฒเบ Tarantula. เบเบปเบงเบขเปเบฒเบเปเบเบฑเปเบเบเบฒเบเบเบงเบเบชเบญเบ tarantoolctl เบเบฐเบเบงเบเปเบเบดเปเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบฅเบฐเปเบงเบปเปเบฒเบงเปเบฒเปเบเบฅเปเปเบกเปเบ ok เบเปเบฒเบเปเปเบกเบตเบเปเปเบเบดเบเบเบฒเบเบเบญเบ syntax.
เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเบชเบฐเบเบฒเบเบฐเบเบญเบเบเบปเบงเบขเปเบฒเบ - tarantoolctl status example . เปเบเบเบฒเบเบเบฝเบงเบเบฑเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฅเบตเปเบกเบเบปเปเบ, เบขเบธเบ, restart.
เปเบกเบทเปเบญเบเบปเบงเบขเปเบฒเบเปเบ เปเบถเปเบ เบเบณ เบฅเบฑเบเปเบฅเปเบ, เบกเบตเบชเบญเบเบงเบดเบเบตเบเบตเปเบเบฐเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบกเบฑเบ.
1. เบเบญเบเปเบเบเบเปเบฅเบดเบซเบฒเบ
เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ, Tarantool เปเบเบตเบเปเบเบปเปเบฒเบฎเบฑเบเปเบฅเบฐเบชเบปเปเบเบเปเปเบเบงเบฒเบก ASCII เบเปเบฒเบกเบฐเบเบฒเปเบเบทเปเบญเบเบงเบเบเบธเบก Tarantula. เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ console เบชเบฐเปเบซเบกเบตเปเบเบตเบเบเบทเปเบเบเบฒเบเปเบเปเบเบนเปเปเบเป admin, เบเปเปเบกเบตเบเบฒเบเบเบงเบเบชเบญเบเบเบงเบฒเบกเบเบทเบเบเปเบญเบ, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบญเบปเบฒเบเบญเบ console เปเบเบทเปเบญเบเบงเบเบเบธเบก Tarantula เบเบฒเบเบเบญเบ.
เปเบเบทเปเบญเปเบเบทเปเบญเบกเบเปเปเบเปเบงเบเบงเบดเบเบตเบเบตเป, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบชเป Tarantoolctl เปเบชเปเบเบทเปเบเบปเบงเบขเปเบฒเบ. เบเปเบฒเบชเบฑเปเบเบเบฐเปเบเบตเบเบเบปเบง console เปเบฅเบฐเปเบเบทเปเบญเบกเบเปเปเปเบเบฑเบเบเบนเปเปเบเป admin. เบขเปเบฒเบเปเบญเบเปเบซเปเบเบญเบเบเบญเบเปเบเบญเบญเบเปเบเบเบฒเบเบเบญเบ - เบกเบฑเบเบเบตเบเบงเปเบฒเบเบตเปเบเบฐเบเปเบญเบเปเบซเปเบกเบฑเบเปเบเบฑเบเปเบเบปเปเบฒเบฎเบฑเบเบซเบเปเบงเบ. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบกเบตเบเบฝเบเปเบเปเบเบนเปเบเบตเปเบกเบตเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบฒเบเบเบฝเบเบเบฑเบเปเบเบปเปเบฒเบฎเบฑเบเปเบเบปเปเบฒเบเบฑเปเบเบเบตเปเบเบฐเบชเบฒเบกเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ Tarantula เปเบเป.
เบงเบดเบเบตเบเบฒเบเบเบตเปเปเบกเปเบเบเปเบฒเปเบเบฑเบเบชเปเบฒเบฅเบฑเบเบชเบดเปเบเบเบตเปเบเปเบฅเบดเบซเบฒเบ. เปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเปเปเบกเบนเบ, เปเบเปเบงเบดเบเบตเบเบฒเบเบเบตเบชเบญเบ - เบญเบฐเบเบธเบชเบฑเบเบเบฒเบเบนเป.
2. เบเบฒเบเบเปเบฒเปเบเปเปเบเปเบเบเบญเบเบเบฒเบเบชเบญเบเปเบเบทเปเบญเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบเบญเบเบชเบฐเปเบเบฒเบฐ
เบกเบตเบเปเบฒเบชเบฑเปเบเบเบฑเบเบขเบนเปเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ, เปเบเบดเปเบเปเบเบตเบเบเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบทเปเบชเบฒเบเบเบฒเบเบเบญเบ. เบเบญเบเบเบตเปเบเบทเบเบเปเบฒเปเบเปเบเบฑเบเปเบเปเบเบเบญเบ binary เปเบฅเบฐเบเบฒเบเบเบดเบชเบนเบเบขเบทเบเบขเบฑเบเปเบเปเบเบทเบเปเบเบตเบเปเบเปเบขเบนเปเบเบตเปเบเบฑเปเบ.
เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบตเป, tarantoolctl เปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบซเบกเบฒเบเปเบฅเบเบเบญเบเปเบกเปเบเบเบทเบเบเปเบฒเปเบเป. เบเบฒเบเบเปเบฒเปเบเปเบกเบฑเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบ, เบเปเบฒเปเบเปเบเบฒเบเบเบงเบเบชเบญเบเบเบงเบฒเบกเบเบทเบเบเปเบญเบเปเบฅเบฐเปเบซเปเบชเบดเบเบเบดเปเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเปเบฒเบเป.
เบเบฑเบเบเบถเบเบเปเปเบกเบนเบ เปเบฅเบฐเปเบกเบเบนเบเบเปเบญเบ
เปเบเบทเปเบญเบเบเบฒเบ Tarantool เปเบเบฑเบเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบเปเบฅเบฐเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ, เบกเบฑเบเบกเบตเปเบกเบเบนเบเบเปเบฒเบเป. เบเบงเบเปเบฎเบปเบฒเบกเบตเบเบงเบฒเบกเบชเบปเบเปเบเปเบเปเบกเบเบนเบเบเปเบญเบ - เบกเบฑเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเปเปเบกเบนเบ. เปเบกเบทเปเบญเบเปเบฒเบเบเบฝเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบชเปเบเปเบญเบ, Tarantool เบเบฐเบเบฝเบเบเปเปเบกเบนเบเปเบชเปเปเบเปเบ, เปเบเบฑเบเบกเบฑเบเปเบงเปเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ, เบซเบผเบทเปเบฎเบฑเบเบชเบดเปเบเบญเบทเปเบเบเบฑเบเบกเบฑเบ.
เบเบฑเบเบเบถเบ
เบเบปเบงเบขเปเบฒเบ, เบเบงเบเปเบฎเบปเบฒเปเบเบปเปเบฒเปเบเปเบเปเบกเบเบนเบเบเปเบญเบเปเบฅเบฐเปเบเบซเบฒเบซเบเปเบฒเบเบตเป box.once. เบกเบฑเบเบเบฐเบเบฑเบเบเบฑเบเปเบซเป 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
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบเบฑเบเบชเบฐเบเบตเบเบปเปเบเบเป - เบเบฐเบเบปเบก - เปเบเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบปเปเบเบซเบฒเบเปเปเบกเบนเบ. เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ, เบเปเบฒเบเปเปเบกเบตเบเบฒเบเบฅเบฐเบเบธเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบ, เบเปเบญเบเบเปเปเบกเบนเบเบเปเบฒเบญเบดเบเปเบเปเบเปเบฅเบฐเบฅเบฒเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฑเบเบชเบฐเบเบต primer เบเบฐเบเบทเบเบเปเบฒเปเบเป.
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเปเบซเปเบเบฒเบเบเปเบงเบเปเบซเบผเบทเบญเบเบนเปเปเบเปเปเบเบ, เบเบฒเบเปเบเปเบเบฒเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเบทเปเบญเบกเบเปเปเปเบเบเบเปเบฒเบเบญเบฐเบเบธเบชเบฑเบเบเบฒเบเบนเป. เบเบงเบเปเบฎเบปเบฒเบญเบฐเบเบธเบเบฒเบเปเบซเปเบญเปเบฒเบ, เบเบฝเบเปเบฅเบฐเบเบฐเบเบดเบเบฑเบเปเบเบเบปเบงเบขเปเบฒเบเบเบฑเบเบซเบกเบปเบ.
เปเบกเบทเปเบญเบเบฝเบเบเบฝเบเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบเบเปเบฒเบกเบฐเบเบฒ, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบเปเบญเบเบเปเบฒเบเบเปเบฒเบเบเบฒเบเบขเบนเปเบเบตเปเบเบตเป. เบเบงเบเปเบฎเบปเบฒเบกเบตเบเบทเปเบเบเบตเป - เบเบทเปเบเบเบตเปเบเบตเปเบเปเปเบกเบนเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบทเบเปเบเบฑเบเปเบงเปเบขเปเบฒเบเบเปเบฒเบเบเบฒเบ. เปเบเปเบฅเบฐเบฅเบฒเบเบเบฒเบเปเบกเปเบเปเบญเบตเปเบเบงเปเบฒ tuple. เบกเบฑเบเปเบเปเบเบทเบเบซเบธเปเบกเบซเปเปเบขเบนเปเปเบ MessagePack. เบเบตเปเปเบกเปเบเบฎเบนเบเปเบเบเบเบตเปเปเบขเบฑเบเบซเบผเบฒเบ - เบกเบฑเบเปเบเบฑเบเบเบฒเบเบชเบญเบเปเบฅเบฐเปเบเปเบเบทเปเบเบเบตเปเบซเบเปเบญเบ - 18 bytes เบเบฝเบเบเบฑเบ 27 .
เบกเบฑเบเบเปเบญเบเบเปเบฒเบเบชเบฐเบเบงเบเบเบตเปเบเบฐเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบฅเบฒเบง. เปเบเบทเบญเบเบเบธเบเปเปเบชเบฑเปเบ, เบเบธเบเปเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบเบชเบฒเบกเบฒเบเบกเบตเบเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบซเบกเบปเบ.
เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเบดเปเบเบเปเบญเบเบซเบงเปเบฒเบเบเบฑเบเบซเบกเบปเบเปเบเบเปเบเปเบเปเบฒเบชเบฑเปเบ Box.space. เปเบเบทเปเบญเปเบฅเบทเบญเบเบเบปเบงเบขเปเบฒเบเบชเบฐเปเบเบฒเบฐ, เบเบงเบเปเบฎเบปเบฒเบเบฝเบเบเบปเบงเบขเปเบฒเบ box.space เปเบฅเบฐเปเบญเบปเบฒเบเปเปเบกเบนเบเปเบเบฑเบกเปเบชเปเบกเบฑเบ.
เบกเบตเปเบเบทเปเบญเบเบเบฑเบเบชเบญเบเบเบฐเบเบดเบเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบ Tarantool: Memory เปเบฅเบฐ Vinyl. เปเปเบงเบเบเบงเบฒเบกเบเบณเปเบเบฑเบเบเปเปเบกเบนเบเบเบฑเบเปเบปเบเปเบงเปเปเบเปเปเบงเบเบเบงเบฒเบกเบเบณ. เปเบเบฒเบฐเบชเบฐเบเบฑเปเบ, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเปเบฒเบเบเบฒเบเปเบฅเบฐเปเบง. เบเปเปโเบกเบนเบโเบเบทเบโเบเบดเปเบกโเปเบชเปโเปเบเปเบ, เปเบฅเบฐโเบเบฑเบโเบกเบตโเบเบปเบโเปเบโเบเบฒเบโเบเบฑเบโเบเบถเบโเบเบฒเบโเบเบฝเบโเบฅเปเบงเบโเบซเบเปเบฒโ, เบเบฑเปเบโเบเบฑเปเบโเบเบงเบโเปเบฎเบปเบฒโเบเบฐโเบเปเปโเปเบเปโเบชเบนเบโเปเบชเบโเบซเบเบฑเบโเบเปเบฒโเบซเบฒเบโเบงเปเบฒโเปเบเบตเบโเปเบงเบตโเบเบฑเบโเปเบเปเบโ.
Vinyl เปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเปเบกเบนเบเปเบเปเบเปเบเปเบเบฎเบนเบเปเบเบเบเบตเปเบเบธเปเบเปเบเบตเบ - เบเบฑเปเบเปเบกเปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบเปเปเบกเบนเบเบซเบผเบฒเบเบเปเบงเบฒเบเบงเบเปเบฎเบปเบฒเบกเบตเบเบงเบฒเบกเบเบปเบเบเปเบฒ, เปเบฅเบฐ Tarantula เบเบฐเบญเปเบฒเบเบกเบฑเบเบเบฒเบเปเบเปเบ.
เบเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเป Memory.
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>
เบเบฑเบเบชเบฐเบเบต:
เบเบฑเบเบเบฐเบเบตเบเบปเปเบเบเปเบเปเบญเบเบเบทเบเบชเปเบฒเบเบเบถเปเบเบชเปเบฒเบฅเบฑเบเบเปเบญเบเปเบเบเปเปเบเบฒเบก, เปเบเบฒเบฐเบงเปเบฒเบเปเปเบกเบตเบซเบเบฑเบเบเบฐเปเบฎเบฑเบเบงเบฝเบเปเบเบเบเปเปเบกเบตเบกเบฑเบ. เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบเปเบเบเปเปเบเบฒเบก, เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบเบฒเบเบชเบฐเบซเบเบฒเบกเบเปเบฒเบญเบดเบ - ID เบเบฑเบเบเบถเบ.
เบเบฒเบเบชเปเบงเบ:
เบเบตเปเปเบกเปเบเบเปเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบปเบเบชเบดเปเบเบเบตเปเบเบฑเบเบชเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบญเบเบเปเบงเบ. เบกเบฑเบเบเบฐเบเบญเบเบเปเบงเบเบชเปเบงเบเบซเบเบถเปเบ - เบเบฒเบเบชเบฐเบซเบเบฒเบกเบเปเบฒเบญเบดเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเปเบเป, เบเบดเบก unsigned - เปเบเบฑเบเบเปเบฒเบเบงเบเบเบงเบ. เปเบเบปเปเบฒเบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบทเปเปเบเปเบเบฒเบเปเบญเบเบฐเบชเบฒเบ, เบเปเบฒเบเบงเบเบชเบนเบเบชเบธเบเบเบตเปเบชเบฒเบกเบฒเบเปเบเบฑเบ 18 quintillion. เบซเบผเบฒเบเบซเบเปเบฒเบซเบงเบฒเบเบชเบฝเบง.
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบชเปเบเปเปเบกเบนเบเปเบเบเปเบเปเบเปเบฒเบชเบฑเปเบ 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, เบเบตเปเบเปเบญเบเปเบเปเบญเบฐเบเบดเบเบฒเบเบเปเบฒเบเปเบเบดเบ.
เบเปเปเบกเบนเบเบเบปเบเบเบฐเบฅเบดเบ
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบชเบฐเปเบเบเบเปเปเบกเบนเบเบเปเบงเบเบเปเบฒเบชเบฑเปเบเปเบฅเบทเบญเบ.
Box.example.select เบเปเบงเบเบเบธเปเบก {1} เบเบฐเบชเบฐเปเบเบเบฅเบฒเบเบเบฒเบเบเบตเปเบเปเบญเบเบเบฒเบ. เบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเบปเบเปเบฅเบตเบเบเบต, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบซเบฑเบเบเบฑเบเบเบถเบเบเบฑเบเบซเบกเบปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบกเบต. เบเบงเบเปเบเบปเบฒเบเบฑเบเบซเบกเบปเบเปเบกเปเบเปเบเบเบเปเบฒเบเบเบฑเบเปเบเบเปเบฒเบเบงเบเบเปเบฅเปเบฒ, เปเบเปเปเบเบเบตเปเบเบตเป, เปเบเบซเบผเบฑเบเบเบฒเบ, เบเปเปเบกเบตเปเบเบงเบเบงเบฒเบกเบเบดเบเบเบญเบเบเปเบฅเปเบฒ - เบกเบตเบเบปเบงเปเบฅเบเบเบฒเบเบชเบฐเบซเบเบฒเบก.
เบชเบฒเบกเบฒเบเบกเบตเบเปเปเบกเบนเบเปเบเปเบซเบผเบฒเบเปเบเบปเปเบฒเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบ. เปเบฅเบฐเบเบปเบงเบขเปเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเบปเปเบเบซเบฒเบเบงเบเปเบเบปเบฒเบขเบนเปเปเบเบเบฒเบเบชเบฐเบซเบเบฒเบกเบเบตเบชเบญเบ. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบเบฑเบเบชเบฐเบเบตเบเบตเบชเบญเบเปเบซเบกเป.
box.space.example:create_index( โsecondaryโ, { type = โTREEโ, unique = false, parts = {{field = 2, type =โstringโ} }})
เบเบงเบเปเบฎเบปเบฒเปเบเปเบเปเบฒเบชเบฑเปเบ Create_index.
เบเบงเบเปเบฎเบปเบฒเปเบญเบตเปเบเบงเปเบฒเบกเบฑเบเบชเบญเบ.
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเปเบฒเบเบปเบเบเบฒเบฅเบฒเบกเบดเปเบเบต. เบเบฐเปเบเบเบเบฑเบเบเบฐเบเบตเปเบกเปเบ TREE. เบกเบฑเบเบญเบฒเบเบเบฐเบเปเปเปเบเบฑเบเปเบญเบเบฐเบฅเบฑเบ, เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเปเบชเป Unique = false.
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบเบตเปเบเบญเบเบชเบดเปเบเบเบตเปเบเบฑเบเบเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบญเบเบเปเบงเบ. Field เปเบกเปเบเบเบปเบงเปเบฅเบเบเบญเบเบเปเบญเบเบเปเปเบกเบนเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบนเบเบกเบฑเบเบเบฑเบเบเบฐเบเบต, เปเบฅเบฐเบฅเบฐเบเบธเบเบฐเปเบเบเบชเบฐเบเบฃเบดเบ. เปเบฅเบฐเบเบฑเปเบเบเบฑเปเบเบกเบฑเบเปเบเปเบเบทเบเบชเปเบฒเบเบเบทเปเบ.
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']
...
เบเบฒเบเบเบปเบเบเบฑเบเบฎเบฑเบเบชเบฒ
เบเปเบฒเบเบงเบเปเบฎเบปเบฒ restart เบเบปเบงเบขเปเบฒเบเปเบฅเบฐเบเบฐเบเบฒเบเบฒเบกเปเบเบซเบฒเบเปเปเบกเบนเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบซเบฑเบเบงเปเบฒเบเบงเบเปเบเบปเบฒเบเปเปเบขเบนเปเบเบตเปเบเบฑเปเบ - เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบซเบงเปเบฒเบเปเบเบปเปเบฒ. เบเบตเปเปเบเบตเบเบเบทเปเบเบเปเบญเบเบงเปเบฒ Tarantool เปเบฎเบฑเบเบเปเบฒเบเปเบฅเบฐเบเบฑเบเบเบถเบเบเปเปเบกเบนเบเปเบชเปเปเบเปเบ, เปเบเปเบเปเบฒเบเบงเบเปเบฎเบปเบฒเบขเบธเบเปเบฎเบฑเบเบงเบฝเบเบเปเบญเบเบเบตเปเบเบฐเบเบฑเบเบเบถเบเบเปเปเปเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบชเบนเบเปเบชเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฑเบเบซเบกเบปเบ - เปเบเบฒเบฐเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบทเปเบเบเบปเบงเบเบฒเบเบเปเบฒเบเบชเบธเบเบเปเบฒเบ, เปเบเบดเปเบเปเบกเปเบ, เบเบปเบงเบขเปเบฒเบ, เบชเบญเบเบเบปเปเบงเปเบกเบเบเปเบญเบเบซเบเปเบฒเบเบตเป.
เบเบฒเบเบเบฐเบซเบเบฑเบเบเบธเบเปเบงเบดเบเบฒเบเบตเบเบฐเบเปเปเปเบฎเบฑเบเบงเบฝเบ - เปเบเบฒเบฐเบงเปเบฒเบเบฒเบเบเบดเปเบก 20 GB เปเบเบปเปเบฒเปเบเปเบเปเบเปเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเปเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบเบทเบเบฑเบ.
เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบตเป, เปเบเบงเบเบงเบฒเบกเบเบดเบเบเบญเบเบเบฑเบเบเบถเบเบเบฒเบเบเบฝเบเบฅเปเบงเบเบซเบเปเบฒเปเบเปเบเบทเบ invented เปเบฅเบฐเบเบฐเบเบดเบเบฑเบ. เบเปเบงเบเบเบฒเบเบเปเบงเบเปเบซเบผเบทเบญเบเบญเบเบกเบฑเบ, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฝเบเปเบเบเบเปเปเบกเบนเบเปเบเปเบฅเบฐเบเบฑเปเบ, เบเบฑเบเบเบถเบเบเบทเบเบชเปเบฒเบเบเบทเปเบเปเบเปเบเบฅเปเบเบฑเบเบเบถเบเบเบฒเบเบเบฝเบเบฅเปเบงเบเบซเบเปเบฒเบเบฐเบซเบเบฒเบเบเปเบญเบ.
เปเบเปเบฅเบฐเบฅเบฒเบเบเบฒเบเปเบเบดเบเบเปเบฒเบเบเบทเบเปเบเบฑเบเปเบงเปเปเบเบเบงเบเบกเบฑเบ. เบชเปเบฒเบฅเบฑเบเปเบเบฅเปเปเบซเบผเบปเปเบฒเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบปเบเบเบฐเบซเบเบฒเบ - เบเบปเบงเบขเปเบฒเบ, 64 mb. เปเบโเปเบงโเบฅเบฒโเบเบตเปโเบกเบฑเบโเบเบทเปเบกโเบเปเปโเบกเบนเบโเปเบชเปโเปเบเบดเบโ, เบเบฒเบโเบเบฑเบโเบเบถเบโเบเบฒเบโเปเบฅเบตเปเบกโเบเบปเปเบโเปเบโเบเบตเปโเปเบเบฅโเปโเบเบตเปโเบชเบญเบโ. เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเปเบซเบกเป, Tarantool เบเบทเปเบเบเบปเบงเบเบฒเบเบเบธเบเบเบงเบเบเบฒเบชเบธเบเบเปเบฒเบเปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเปเบงเบเบเบธเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบเปเปเบกเบฒเบเบปเบเบเปเบงเบฒเบกเบฑเบเบขเบธเบเปเบเบปเบฒ.
เปเบเบทเปเบญเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฑเบเบเบถเบเบเบฑเปเบเบเปเบฒเบง, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบฅเบฐเบเบธเบเบฒเบเปเบฅเบทเบญเบเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ box.cfg (เปเบเปเบเบฅเป example.lua):
wal_mode = โwriteโ;
เบเบฒเบโเบเปเบฒโเปเบเปโเบเปเปโเบกเบนเบโ
เบเบฑเบเบชเบดเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฝเบเปเบเบเบฑเบเบเบธเบเบฑเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเป Tarantula เปเบเบทเปเบญเปเบเบฑเบเบเปเปเบกเบนเบเปเบฅเบฐเบกเบฑเบเบเบฐเปเบฎเบฑเบเบงเบฝเบเปเบงเบซเบผเบฒเบเปเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบ. เปเบฅเบฐเปเบเบเบฑเบเบเบธเบเบฑเบ cherry เบชเบธเบ cake เปเบเป - เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเบงเปเบเบเบฑเบเบกเบฑเบเบเบฑเบเบซเบกเบปเบ.
เบเบฒเบเบเบฝเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ
เบเบปเบงเบขเปเบฒเบ, เปเบซเปเบเบฝเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบ Tarantula
เปเบเบดเปเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฒเบเปเบเป spoiler เปเบเป
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
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเปเบเบทเปเบญเบกเบเปเป router http เปเบฅเบฐ http server เบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบ 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 / เบเบฑเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเปเบเบซเบฒเบเบฑเบเบเบฑเบเบเบฒเบเบซเบเบถเปเบเปเบเบง. เบกเบฑเบเบชเบปเปเบเบเบทเบเบชเบฐเบเบฒเบเบฐ - 200, 404, 403 เบซเบผเบทเปเบเบเปเปเบเบฒเบกเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบปเบ.
router:route({method = 'GET', path = '/count'}, function()
return {status = 200, body = json.encode({count = get_count()})}
end)
เปเบเบฎเปเบฒเบเบเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบชเบปเปเบเบเบทเบ json.encode, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบปเบเบเบฒเบเบเบฑเบเปเบฅเบฐ 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)
เบเปเบญเบเบเบตเปเบขเบนเปเปเบเปเบชเบฑเปเบ router:route({method = 'GET', path = '/token'}, function() เบเบงเบเปเบฎเบปเบฒเปเบเบซเบฒเบซเบเปเบฒเบเบตเปเปเบฅเบฐเบชเปเบฒเบ token.
เบชเบฒเบ local token = randomString(32) เปเบเบฑเบเบชเบฐเบเบฃเบดเบเปเบเบเบชเบธเปเบกเบเบญเบ 32 เบเบปเบงเบญเบฑเบเบชเบญเบ.
เปเบเปเบเบง local last = box.space. เบเบปเบงเบขเปเบฒเบ:len() เบเบงเบเปเบฎเบปเบฒเบเบถเบเบญเบญเบเบญเบปเบเบเบฐเบเบญเบเบชเบธเบเบเปเบฒเบ.
เปเบฅเบฐเปเบเบชเบฒเบ box.space.example:insert{ last + 1, token } เบเบงเบเปเบฎเบปเบฒเบเบฝเบเบเปเปเบกเบนเบเปเบชเปเบเบฒเบเบเปเปเบกเบนเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบฑเปเบเปเบกเปเบ, เบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเปเบเบตเปเบก ID เปเบเบ 1. เบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป, เปเบเบเบงเบดเบเบตเบเบฒเบเบเบฒเบ, เบเปเปเบเบฝเบเปเบเปเปเบเบงเบดเบเบตเบเบฒเบ clumsy เบเบฑเปเบเบเปเบฒเบง. Tarantula เบกเบตเบฅเปเบฒเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเปเบฅเบฐเบเบตเบเบตเป.
เบเบงเบเปเบฎเบปเบฒเบเบฝเบ token เบขเบนเปเบเบตเปเบเบฑเปเบ.
เบเบฑเปเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบเบฝเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบเปเบญเบเบฐเบชเบฒเบเบซเบเบถเปเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเปเปเบกเบนเบเปเบเปเบเบฑเบเบเบต, เปเบฅเบฐเปเบกเบเบนเบเบเปเบญเบเบเบฐเปเบฎเบฑเบเบงเบฝเบเปเบเบทเปเบญเบเบเบฑเบเบซเบกเบปเบเบชเปเบฒเบฅเบฑเบเบเปเบฒเบ.
เบกเบฑเบเบเบฑเบ http เปเบฅเบฐเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเปเปเบกเบนเบ, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบขเบนเปเปเบเบเบปเบงเบขเปเบฒเบเบเบฝเบง - เบเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบฅเบฐเบเปเปเบกเบนเบ. เปเบเบฒเบฐเบชเบฐเบเบฑเปเบ, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบเบตเบเบเบถเปเบเบขเปเบฒเบเปเบงเบงเบฒ.
เปเบเบทเปเบญเบเปเบฒเปเบเบตเบเบเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบเบดเบเบเบฑเปเบเปเบกเบเบนเบ http:
เบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเปเบเบงเปเบเบกเบฑเบ, เปเบเบดเปเบเบเบฒเบเปเบเป spoiler เปเบเป
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:/#
เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเปเบญเบเบเบฒเบ prometheus เปเบเบทเปเบญเปเบฅเปเบ:
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 เบญเบญเบ token เปเบฅเบฐเบเบฝเบ 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 milliseconds. เบเบฑเปเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบกเบตเบเบฐเบกเบฒเบ 3500 เบเปเบฒเบฎเปเบญเบเบเปเบเปเปเบงเบดเบเบฒเบเบตเปเบเปเบเบทเปเบญเบเบเบฐเบซเบเบฒเบเบเปเบญเบ, เบเปเบญเบเบเบตเปเบกเบต 2 cores เปเบฅเบฐ 4 gigabyte เบเบญเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ.
เบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบฅเบทเบญเบเบเบฒเบ 50000 token เปเบฅเบฐเปเบเบดเปเบเบกเบนเบเบเปเบฒเบเบญเบเบกเบฑเบ.
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเปเปเบเบฝเบเปเบเป http, เบเบฐเบเบดเบเบฑเบเบซเบเปเบฒเบเบทเปเบเบเบฒเบเบเบตเปเบเบฐเบกเบงเบเบเบปเบเบเปเปเบกเบนเบเบเบญเบเบเปเบฒเบ. เบเบญเบโเบเบฒเบโเบเบฑเปเบโเบกเบตโเบเบปเบโเบเบฐโเบเบปเบโเบเปเบฒเบเปโ. เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบซเบฒเบซเบเปเบฒเบเบตเปเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบฑเบเบเบธเบ, เบเบงเบเปเบเบดเปเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบ - เปเบเปเปเบเบเปเปเบเบฑเบเปเบเปเบ.
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฝเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ script เปเบเบเบเบปเบเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบเบเบฒเบเบเปเปเบกเบนเบเบเบปเบงเบกเบฑเบเปเบญเบ, เปเบฅเบฐเบเปเปเบเปเบฒเบเบฑเบเปเบเบเบชเบดเปเบเปเบ, เปเบเบทเปเบญเบกเบเปเปเปเบกเบเบนเบเปเบฅเบฐเบเบฐเบเบดเบเบฑเบเปเบซเบเบเบปเบเปเบเป.
เปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฒเบเบเบญเบ, เปเบเบฑเบเบเปเบฒเบเปเปเบกเบนเบเปเบฅเบฐเปเบเบตเปเบกเบกเบฑเบเปเบชเปเบเบฒเบเบเปเปเบกเบนเบเบเบญเบเบกเบฑเบ. เบเปเปเบกเบนเบเบเบฒเบเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเบเบฐเบเบทเบเปเบเปเปเบเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบญเบทเปเบ.
เบเบตเปเบเบฐเปเบฎเบฑเบเปเบเปเปเบเบ Tarantula เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบ, เปเบฅเบฐเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฝเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบเบเบเปเบฒเบเบซเบฒเบ.
เปเบเบเบฒเบเบชเบฐเบซเบฅเบธเบ
เบเบตเปเปเบกเปเบเบเบฝเบเปเบเปเบชเปเบงเบเบเปเบฒเบญเบดเบเบเบญเบเบงเบฝเบเปเบซเบเป. เบญเบฑเบเบเบตเบชเบญเบเบเบฐเบเบทเบเบเบฑเบเบเบตเบกเบกเบฒเปเบเปเบงเปเบเบตเปเปเบ blog เบเบญเบ Mail.ru Group, เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบตเปเบกเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบกเบฑเบเปเบเปเบญเบเบฐเบชเบฒเบเบเบตเปเปเบเปเบเบญเบ.
เบเปเบฒเบเปเบฒเบเบชเบปเบเปเบเปเบเบปเปเบฒเบฎเปเบงเบกเบเบดเบเบเบฐเบเปเบฒเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบชเบดเปเบเปเบซเบผเบปเปเบฒเบเบตเปเบญเบญเบเปเบฅเบเปเปเบฅเบฐเบเบฒเบกเบเปเบฒเบเบฒเบกเปเบเปเบงเบฅเบฒเบเบดเบ, เปเบเบทเปเบญเบกเบเปเปเบเบฑเบ
เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเปเบฒเบเปเบเบเบฑเบเบเบฅเบฒเบงเบซเบผเบทเบกเบตเบเปเบฒเบเบฒเบกเบเปเบฝเบงเบเบฑเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเบเบญเบเบเปเบฒเบ,
PS เบเบงเบเปเบฎเบปเบฒเบกเบต 2 เบเบฒเบเบเบงเบเบชเบญเบเบเบฃเบตเบเปเปเปเบเบทเบญเบ, เบเบฒเบเบเบตเปเบเบเบเบฒเบเบเบญเบเบเปเบฒเบเบเบฐเปเบเบฑเบเบซเบเบถเปเบเปเบเบเบฑเปเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com