เดŸเดพเดฐเดจเตเดฑเต‚เดณเดฟเตฝ, เด…เดตเดฏเตโ€Œเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดธเต‚เดชเตเดชเตผ เดซเดพเดธเตเดฑเตเดฑเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด‚ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด‚ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดŽเดคเตเดฐ เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต†เดจเตเดจเต เด‡เดคเดพ

เด…เดžเตเดšเต เดตเตผเดทเด‚ เดฎเตเดฎเตเดชเต เดžเดพเตป เดŸเดพเดฐเดจเตเดฑเต‚เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเดšเตเดšเต, เดชเด•เตเดทเต‡ เด…เดคเต เดŽเดจเดฟเด•เตเด•เต เดตเต‡เดฃเตเดŸเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดšเตเดšเดฟเดฒเตเดฒ. เดŽเดจเตเดจเดพเตฝ เด…เดŸเตเดคเตเดคเดฟเดŸเต† เดžเดพเตป เด’เดฐเต เดตเต†เดฌเดฟเดจเดพเตผ เดจเดŸเดคเตเดคเดฟ, เด…เดตเดฟเดŸเต† เดนเดกเต‚เดชเตเดชเดฟเดจเต† เด•เตเดฑเดฟเดšเตเดšเตเด‚ MapReduce เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเดฟเดจเต† เด•เตเดฑเดฟเดšเตเดšเตเด‚ เดธเด‚เดธเดพเดฐเดฟเดšเตเดšเต. เด…เดตเดฟเดŸเต† เด…เดตเตผ เดŽเดจเตเดจเต‹เดŸเต เด’เดฐเต เดšเต‹เดฆเตเดฏเด‚ เดšเต‹เดฆเดฟเดšเตเดšเต: "เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เดˆ เดŸเดพเดธเตเด•เตเด•เดฟเดจเดพเดฏเดฟ เดŸเดพเดฐเดจเตเดฑเต‚เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดฐเตเดคเต?"

เดœเดฟเดœเตเดžเดพเดธ เด•เดพเดฐเดฃเด‚, เด…เดคเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เดพเดจเตเด‚ เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เดพเดจเตเด‚ เดžเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต - เด‡เดคเตเดคเดตเดฃ เดŽเดจเดฟเด•เตเด•เต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดถเดฐเดฟเด•เตเด•เตเด‚ เด‡เดทเตเดŸเดชเตเดชเต†เดŸเตเดŸเต. เดŸเดพเดฐเดจเตเดฑเต‚เดณเดฟเตฝ เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเด™เตเด™เดจเต† เดŽเดดเตเดคเดพเดฎเต†เดจเตเดจเต เด‡เดชเตเดชเต‹เตพ เดžเดพเตป เด•เดพเดฃเดฟเดšเตเดšเตเดคเดฐเดพเด‚, เด…เดคเต เดฒเต‹เดกเต เดšเต†เดฏเตเดคเต เด…เดคเดฟเดจเตเดฑเต† เดชเตเดฐเด•เดŸเดจเด‚ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•, เดŽเดฒเตเดฒเดพเด‚ เดŽเดคเตเดฐ เดŽเดณเตเดชเตเดชเดตเตเด‚ เดฐเดธเด•เดฐเดตเตเดฎเดพเดฃเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพ เด•เดพเดฃเตเด‚.

เดŸเดพเดฐเดจเตเดฑเต‚เดณเดฟเตฝ, เด…เดตเดฏเตโ€Œเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดธเต‚เดชเตเดชเตผ เดซเดพเดธเตเดฑเตเดฑเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด‚ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด‚ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดŽเดคเตเดฐ เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต†เดจเตเดจเต เด‡เดคเดพ

เดŽเดจเตเดคเดพเดฃเต เดŸเดพเดฐเดจเตเดคเต‚เตพ

เดŸเดพเดฐเดจเตเดฑเต‚เตพ เดธเตเดตเดฏเด‚ เด’เดฐเต เด…เตพเดŸเตเดฐเดพ เดซเดพเดธเตเดฑเตเดฑเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด†เดฏเดฟ เดจเดฟเดฒเด•เตŠเดณเตเดณเตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดเดคเต เดกเดพเดฑเตเดฑเดฏเตเด‚ เด…เดตเดฟเดŸเต† เดจเตฝเด•เดพเด‚. เด•เต‚เดŸเดพเดคเต†, เด…เดต เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•, เดทเดพเตผเดกเต - เด…เดคเดพเดฏเดคเต, เดจเดฟเดฐเดตเดงเดฟ เดธเต†เตผเดตเดฑเตเด•เดณเดฟเดฒเตเดŸเดจเต€เดณเด‚ เดตเดฒเดฟเดฏ เด…เดณเดตเดฟเดฒเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดตเดฟเดญเดœเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดตเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดซเดฒเด™เตเด™เตพ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด• - เดคเต†เดฑเตเดฑเต-เดธเดนเดฟเดทเตเดฃเตเดคเดฏเตเดณเตเดณ เดฎเดพเดธเตเดฑเตเดฑเตผ-เดฎเดพเดธเตเดฑเตเดฑเตผ เด•เดฃเด•เตเดทเดจเตเด•เตพ เด‰เดฃเตเดŸเดพเด•เตเด•เตเด•.

เดฐเดฃเตเดŸเดพเดฎเดคเดพเดฏเดฟ, เด‡เดคเตŠเดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเต†เตผเดตเดฑเดพเดฃเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดคเดฟเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดŽเดดเตเดคเดพเดจเตเด‚ เดกเดพเดฑเตเดฑ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดšเดฟเดฒ เดจเดฟเดฏเดฎเด™เตเด™เตพ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ เดชเดดเดฏ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŸเดพเดฐเดพเดจเตเดฑเตเดฒเดฏเดฟเตฝ เดจเต‡เดฐเดฟเดŸเตเดŸเต เด’เดฐเต Http เดธเต†เตผเดตเตผ เดŽเดดเตเดคเดพเด‚, เด…เดคเต เดกเดพเดฑเตเดฑเดฏเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚: เด…เดตเดฏเตเดŸเต† เด…เดณเดตเต เดจเตฝเด•เตเด•, เด…เดตเดฟเดŸเต† เดชเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑ เดŽเดดเตเดคเตเด•, เดŽเดฒเตเดฒเดพเด‚ เดฎเดพเดธเตเดฑเตเดฑเดฑเดฟเดจเต เด•เตเดฑเดฏเตเด•เตเด•เตเด•.

เด†เตบเด•เตเดŸเตเดŸเดฟเด•เตพ 300 เดตเดฐเดฟเด•เดณเตเดŸเต† เด’เดฐเต เดธเดจเตเดฆเต‡เดถ เด•เตเดฏเต‚ เด‰เดฃเตเดŸเดพเด•เตเด•เดฟเดฏเดคเต†เด™เตเด™เดจเต† เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด’เดฐเต เดฒเต‡เด–เดจเด‚ เดžเดพเตป เดตเดพเดฏเดฟเดšเตเดšเต, เด…เดคเต เดชเตŠเดŸเตเดŸเดฟเดคเตเดคเต†เดฑเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด•เตเดคเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต - เด…เดตเตผเด•เตเด•เต เดธเต†เด•เตเด•เตปเดกเดฟเตฝ 20 เดธเดจเตเดฆเต‡เดถเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเด•เดŸเดจเดฎเตเดฃเตเดŸเต. เด‡เดตเดฟเดŸเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดถเดฐเดฟเด•เตเด•เตเด‚ เดคเดฟเดฐเดฟเดฏเดพเดจเตเด‚ เดตเดณเดฐเต† เดตเดฒเดฟเดฏ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเดดเตเดคเดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚, เด…เดคเต PostgreS เดฒเต† เดชเต‹เดฒเต† เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เด†เดฏเดฟเดฐเดฟเด•เตเด•เดฟเดฒเตเดฒ.

เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดˆ เดธเต†เตผเดตเตผ เดชเต‹เดฒเต†เดฏเตเดณเตเดณ เด’เดจเตเดจเต เดตเดฟเดตเดฐเดฟเด•เตเด•เดพเตป เดžเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด‚, เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดฎเดพเดคเตเดฐเด‚.

เด‡เตปเดธเตเดฑเตเดฑเดฒเต‡เดทเตป

เดŸเต†เดธเตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ, เดžเดพเตป เดฎเต‚เดจเตเดจเต เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเด•เตพ เด†เดฐเด‚เดญเดฟเดšเตเดšเต - เด’เดฐเต 20 GB เดนเดพเตผเดกเต เดกเตเดฐเตˆเดตเต, เด‰เดฌเตเดฃเตเดŸเต 18.04. 2 เดตเต†เตผเดšเตเดตเตฝ เดธเดฟเดชเดฟเดฏเตเด•เดณเตเด‚ 4 เด—เดฟเด—เต เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเตเด‚.

เดžเด™เตเด™เตพ Tarantool เด‡เตปเดธเตโ€Œเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต - เดฌเดพเดทเต เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด• เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เดถเต‡เด–เดฐเด‚ เดšเต‡เตผเด•เตเด•เตเด•, เดคเตเดŸเตผเดจเตเดจเต Tarantool เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•. เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฒเดฟเด™เตเด•เต - (เดšเตเดฐเตเตพ -L https://tarantool.io/installer.sh | VER=2.4 เดธเตเดกเต‹ -เด‡ เดฌเดพเดทเต). เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดคเตเดชเต‹เดฒเตเดณเตเดณ เด•เดฎเดพเตปเดกเตเด•เตพ เด‰เดฃเตเดŸเต:

tarantoolctl - เดŸเดฐเดพเดจเตเดฑเตเดฒ เดธเด‚เดญเดตเด™เตเด™เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตเดฐเดงเดพเดจ เด•เดฎเดพเตปเดกเต.
/etc/tarantool - เดฎเตเดดเตเดตเตป เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด‚ เด‡เดคเดพ.
var/log/tarantool - เดฐเต‡เด–เด•เตพ เด‡เดคเดพ.
var/lib/tarantool โ€” เดกเดพเดฑเตเดฑ เด‡เดตเดฟเดŸเต†เดฏเตเดฃเตเดŸเต, เดคเตเดŸเตผเดจเตเดจเต เด…เดคเต เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเดพเดฏเดฟ เดคเดฟเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดซเต‹เตพเดกเดฑเตเด•เตพ เด‡เตปเดธเตโ€Œเดฑเตเดฑเตปเดธเต-เดฒเดญเตเดฏเดตเตเด‚ เด‡เตปเดธเตโ€Œเดฑเตเดฑเตปเดธเต-เดชเตเดฐเดพเดชเตโ€Œเดคเดฎเดพเด•เตเด•เดฒเตเด‚ เด‰เดฃเตเดŸเต - เด…เดคเดฟเตฝ เดฒเต‹เดžเตเดšเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต - เดฒเตเดตเดพ เด•เต‹เดกเตเดณเตเดณ เด’เดฐเต เด‡เตปเดธเตเดฑเตเดฑเตปเดธเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ, เด…เดคเต เดเดคเต เดชเต‹เตผเดŸเตเดŸเตเด•เดณเดพเดฃเต เด•เต‡เตพเด•เตเด•เตเดจเตเดจเดคเต, เดเดคเต เดฎเต†เดฎเตเดฎเดฑเดฟ เด‡เดคเดฟเดจเต เดฒเดญเตเดฏเดฎเดพเดฃเต, เดตเดฟเดจเตˆเตฝ เดŽเดžเตเดšเดฟเตป เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ, เดธเตเดฑเตเดฑเดพเตผเดŸเตเดŸเดชเตเดชเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เดกเต เดŽเดจเตเดจเดฟเดต เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดธเต†เตผเดตเดฑเตเด•เตพ, เดทเดพเตผเดกเดฟเด‚เด—เต, เด•เตเดฏเต‚เด•เตพ, เด•เดพเดฒเดนเดฐเดฃเดชเตเดชเต†เดŸเตเดŸ เดกเดพเดฑเตเดฑ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตฝ เดคเตเดŸเด™เตเด™เดฟเดฏเดต.

เดธเด‚เดญเดตเด™เตเด™เตพ PostgreS-เดฒเต† เดชเต‹เดฒเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเต‹เตผเดŸเตเดŸเตเด•เดณเดฟเตฝ เดคเต‚เด™เตเด™เดฟเด•เตเด•เดฟเดŸเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดจเตเดฑเต† เดจเดฟเดฐเดตเดงเดฟ เดชเด•เตผเดชเตเดชเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต. เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเต‹เตผเดŸเตเดŸเตเด•เดณเดฟเตฝ เดคเต‚เด™เตเด™เดฟเด•เตเด•เดฟเดŸเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดธเต†เตผเดตเดฑเดฟเตฝ เดจเดฟเดฐเดตเดงเดฟ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเด‚เดญเดตเด™เตเด™เตพ เดธเดฎเดพเดฐเด‚เดญเดฟเดšเตเดšเดคเดพเดฏเดฟ เด‡เดคเต เดฎเดพเดฑเตเดจเตเดจเต. เด…เดตเตผเด•เตเด•เต เดคเดฟเด•เดšเตเดšเตเด‚ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚ - เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เด’เดฐเต เดฏเตเด•เตเดคเดฟ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต, เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต - เดฎเดฑเตเดฑเตŠเดจเตเดจเต.

เด‡เตปเดธเตเดฑเตเดฑเตปเดธเต เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต

เดžเด™เตเด™เตพเด•เตเด•เต tarantoolctl เด•เดฎเดพเตปเดกเต เด‰เดฃเตเดŸเต, เด‡เดคเต Tarantula เดธเด‚เดญเดตเด™เตเด™เตพ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, tarantoolctl เดšเต†เด•เตเด•เต เด‰เดฆเดพเดนเดฐเดฃเด‚ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดšเต เดชเดฑเดฏเตเด‚ - เด…เดตเดฟเดŸเต† เดตเดพเด•เตเดฏเด˜เดŸเดจ เดชเดฟเดถเด•เตเด•เตพ เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดซเดฏเตฝ เดถเดฐเดฟเดฏเดพเดฃเต.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดจเดฟเดฒ เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚ - tarantoolctl เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเต เด‰เดฆเดพเดนเดฐเดฃเด‚. เด…เดคเตเดชเต‹เดฒเต†, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด•, เดจเดฟเตผเดคเตเดคเตเด•, เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•.

เด‰เดฆเดพเดนเดฐเดฃเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดšเตเดšเตเด•เดดเดฟเดžเตเดžเดพเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฐเดฃเตเดŸเต เดคเดฐเดคเตเดคเดฟเตฝ เด‡เดคเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเดจเดพเด•เตเด‚.

1. เด…เดกเตเดฎเดฟเดจเดฟเดธเตเดŸเตเดฐเต‡เดฑเตเดฑเต€เดตเต เด•เตบเดธเต‹เตพ

เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ, Tarantool เด’เดฐเต เดธเต‹เด•เตเด•เดฑเตเดฑเต เดคเตเดฑเด•เตเด•เตเดจเตเดจเต, Tarantool เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเตป เดธเดพเดงเดพเดฐเดฃ ASCII เดŸเต†เด•เตโ€Œเดธเตโ€Œเดฑเตเดฑเต เด…เดฏเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเต. เด•เตบเดธเต‹เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด•เดฃเด•เตเดทเตป เดŽเดฒเตเดฒเดพเดฏเตโ€Œเดชเตเดชเต‹เดดเตเด‚ เด…เดกเตโ€Œเดฎเดฟเตป เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต เด•เต€เดดเดฟเดฒเดพเดฃเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต, เด†เดงเดฟเด•เดพเดฐเดฟเด•เดคเดฏเดฟเดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เดŸเดฐเดพเดจเตเดฑเตเดฒ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด•เตบเดธเต‹เตพ เดชเต‹เตผเดŸเตเดŸเต เดฌเดพเดนเตเดฏเดฎเดพเด•เตเด•เต‡เดฃเตเดŸ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ.

เดˆ เดฐเต€เดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพ Tarantoolctl เดŽเดจเตเดฑเตผ เด‡เตปเดธเตเดฑเตเดฑเตปเดธเต เดจเดพเดฎเด‚ เดจเตฝเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด•เดฎเดพเตปเดกเต เด•เตบเดธเต‹เตพ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดกเตเดฎเดฟเตป เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เด•เตบเดธเต‹เตพ เดชเต‹เตผเดŸเตเดŸเต เด’เดฐเดฟเด•เตเด•เดฒเตเด‚ เดชเตเดฑเดคเตเดคเต เด•เดพเดฃเดฟเด•เตเด•เดฐเตเดคเต - เด‡เดคเต เด’เดฐเต เดฏเต‚เดฃเดฟเดฑเตเดฑเต เดธเต‹เด•เตเด•เดฑเตเดฑเดพเดฏเดฟ เดตเดฟเดŸเตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต. เด…เดชเตเดชเต‹เตพ เดธเต‹เด•เตเด•เดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดŽเดดเตเดคเดพเตป เด†เด•เตเดธเดธเต เด‰เดณเตเดณเดตเตผเด•เตเด•เต เดฎเดพเดคเตเดฐเดฎเต‡ เดŸเดฐเดพเดจเตเดฑเตเดฒเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเต‚.

เดญเดฐเดฃเดชเดฐเดฎเดพเดฏ เด•เดพเดฐเตเดฏเด™เตเด™เตพเด•เตเด•เต เดˆ เดฐเต€เดคเดฟ เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เดกเดพเดฑเตเดฑเดฏเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป, เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดฐเต€เดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• - เดฌเตˆเดจเดฑเดฟ เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ.

2. เดฌเตˆเดจเดฑเดฟ เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดชเต‹เตผเดŸเตเดŸเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเต

เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเตฝ เด•เต‡เตพเด•เตเด•เดพเดจเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด‚ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เดฌเดพเดนเตเดฏ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เด’เดฐเต เดชเต‹เตผเดŸเตเดŸเต เดคเตเดฑเด•เตเด•เตเดจเตเดจเต. เดˆ เดชเต‹เตผเดŸเตเดŸเต เดฌเตˆเดจเดฑเดฟ เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เดณเดฟเดจเตŠเดชเตเดชเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเด‚ เด…เดตเดฟเดŸเต† เดชเตเดฐเดพเดชเตเดคเดฎเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดˆ เด•เดฃเด•เตเดทเดจเดพเดฏเดฟ, tarantoolctl เด•เดฃเด•เตเดŸเต เดŸเต เดชเต‹เตผเดŸเตเดŸเต เดจเดฎเตเดชเดฑเดพเดฃเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต. เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเดฟเดฆเต‚เดฐ เดธเต†เตผเดตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเด‚ เดตเดฟเดตเดฟเดง เด†เด•เตเดธเดธเต เด…เดตเด•เดพเดถเด™เตเด™เตพ เดจเตฝเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚.

เดกเดพเดฑเตเดฑ เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเด‚เด—เตเด‚ เดฌเต‹เด•เตเดธเต เดฎเตŠเดกเตเดฏเต‚เดณเตเด‚

เดŸเดพเดฐเดจเตเดฑเต‚เตพ เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด‚ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเต†เตผเดตเดฑเตเด‚ เด†เดฏเดคเดฟเดจเดพเตฝ, เด‡เดคเดฟเดจเต เดตเดฟเดตเดฟเดง เดฎเตŠเดกเตเดฏเต‚เดณเตเด•เตพ เด‰เดฃเตเดŸเต. เดฌเต‹เด•เตเดธเต เดฎเตŠเดกเตเดฏเต‚เดณเดฟเตฝ เดžเด™เตเด™เตพเด•เตเด•เต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดŸเต - เด‡เดคเต เดกเดพเดฑเตเดฑเดฏเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพ เดฌเต‹เด•เตเดธเดฟเดฒเต‡เด•เตเด•เต เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดŽเดดเตเดคเตเดฎเตเดชเต‹เตพ, เดŸเดพเดฐเดจเตเดฑเต‚เตพ เดกเดพเดฑเตเดฑ เดกเดฟเดธเตเด•เดฟเดฒเต‡เด•เตเด•เต เดŽเดดเตเดคเตเดจเตเดจเต, เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเตฝ เดธเต‚เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเดฑเตเดฑเต†เดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเด‚เด—เต

เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดžเด™เตเด™เตพ เดฌเต‹เด•เตเดธเต เดฎเตŠเดกเตเดฏเต‚เดณเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดฟ 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

เด‡เดคเดฟเดจเตเดถเต‡เดทเด‚, เดžเด™เตเด™เตพ เด’เดฐเต เดชเตเดฐเดพเดฅเดฎเดฟเด• เดธเต‚เดšเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต - เดชเตเดฐเตˆเดฎเดฑเดฟ - เด…เดคเดฟเดฒเต‚เดŸเต† เดจเดฎเตเด•เตเด•เต เดกเดพเดฑเตเดฑ เดคเดฟเดฐเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚. เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ, เดจเดฟเด™เตเด™เตพ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตŠเดจเตเดจเตเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด“เดฐเต‹ เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเดฒเต†เดฏเตเด‚ เด†เดฆเตเดฏ เดซเต€เตฝเดกเต เดชเตเดฐเดพเดฅเดฎเดฟเด• เดธเต‚เดšเดฟเด•เดฏเตเด•เตเด•เดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.

เดคเตเดŸเตผเดจเตเดจเต เดžเด™เตเด™เตพ เด…เดคเดฟเดฅเดฟ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต เด’เดฐเต เด—เตเดฐเดพเดจเตเดฑเต เดจเตฝเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเต เด•เต€เดดเดฟเตฝ เดžเด™เตเด™เตพ เดฌเตˆเดจเดฑเดฟ เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ เดตเดดเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เดฎเตเดดเตเดตเตป เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเดฒเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เดพเดจเตเด‚ เดŽเดดเตเดคเดพเดจเตเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเดจเตเด‚ เดžเด™เตเด™เตพ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เดชเดฐเดฎเตเดชเดฐเดพเด—เดค เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เดณเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเตเดฎเตเดชเต‹เตพ, เด‡เดตเดฟเดŸเต† เดŽเดฒเตเดฒเดพเด‚ เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฃเต. เดžเด™เตเด™เตพเด•เตเด•เต เดธเตเดฅเดฒเดฎเตเดฃเตเดŸเต - เดžเด™เตเด™เดณเตเดŸเต† เดกเดพเดฑเตเดฑ เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดฎเต‡เด–เดฒ. เด“เดฐเต‹ เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเดจเต†เดฏเตเด‚ เด’เดฐเต เดŸเตเดฏเต‚เดชเตเดชเดฟเตพ เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต เดฎเต†เดธเต‡เดœเตเดชเดพเด•เตเด•เดฟเดฒเดพเดฃเต เดชเดพเด•เตเด•เต‡เดœเต เดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต. เด‡เดคเต เดตเดณเดฐเต† เดฐเดธเด•เดฐเดฎเดพเดฏ เด’เดฐเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดพเดฃเต - เด‡เดคเต เดฌเตˆเดจเดฑเดฟ เด†เดฃเต, เด•เต‚เดŸเดพเดคเต† เด•เตเดฑเดšเตเดšเต เดธเตเดฅเดฒเด‚ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเต - 18 เดฌเตˆเดฑเตเดฑเตเด•เดณเตเด‚ 27 เด‰เด‚.

เดŸเดพเดฐเดจเตเดฑเต‚เดณเดฟเตฝ, เด…เดตเดฏเตโ€Œเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดธเต‚เดชเตเดชเตผ เดซเดพเดธเตเดฑเตเดฑเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด‚ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด‚ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดŽเดคเตเดฐ เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต†เดจเตเดจเต เด‡เดคเดพ

เด…เดตเดจเต‹เดŸเตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดคเดฟเด•เดšเตเดšเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฃเต. เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เดŽเดฒเตเดฒเดพ เดตเดฐเดฟเด•เตพเด•เตเด•เตเด‚, เดŽเดฒเตเดฒเดพ เดกเดพเดฑเตเดฑ เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเดจเตเด‚ เดคเดฟเด•เดšเตเดšเตเด‚ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏ เดจเดฟเดฐเด•เตพ เด‰เดฃเตเดŸเดพเด•เดพเด‚.

Box.space เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฎเตเด•เตเด•เต เดŽเดฒเตเดฒเดพ เดธเตเดชเต†เดฏเตเดธเตเด•เดณเตเด‚ เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚. เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เด‰เดฆเดพเดนเดฐเดฃเด‚ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, box.space เด‰เดฆเดพเดนเดฐเดฃเด‚ เดŽเดดเตเดคเตเด•, เด…เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เดตเดฟเดตเดฐเด™เตเด™เตพ เดจเต‡เดŸเตเด•.

เดŸเดพเดฐเดจเตเดฑเต‚เดณเดฟเดจเต เดฐเดฃเตเดŸเต เดฌเดฟเตฝเดฑเตเดฑเต-เด‡เตป เดŽเดžเตเดšเดฟเดจเตเด•เตพ เด‰เดฃเตเดŸเต: เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเตเด‚ เดตเดฟเดจเตˆเดฒเตเด‚. เดฎเต†เดฎเตเดฎเดฑเดฟ เดŽเดฒเตเดฒเดพ เดกเดพเดฑเตเดฑเดฏเตเด‚ เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเตฝ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเดฟเดจเดพเตฝ, เดŽเดฒเตเดฒเดพเด‚ เดฒเดณเดฟเดคเดตเตเด‚ เดตเต‡เด—เดคเตเดคเดฟเดฒเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. เดกเดพเดฑเตเดฑ เดกเดฟเดธเตเด•เดฟเดฒเต‡เด•เตเด•เต เดตเดฒเดฟเดšเตเดšเต†เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เด’เดฐเต เดฑเตˆเดฑเตเดฑเต เดŽเดนเดกเต เดฒเต‹เด—เต เดฎเต†เด•เตเด•เดพเดจเดฟเดธเดตเตเด‚ เด‰เดฃเตเดŸเต, เด…เดคเดฟเดจเดพเตฝ เดธเต†เตผเดตเตผ เดคเด•เดฐเดพเดฑเดฟเดฒเดพเดฏเดพเตฝ เดžเด™เตเด™เตพเด•เตเด•เต เด’เดจเตเดจเตเด‚ เดจเดทเตโ€ŒเดŸเดฎเดพเด•เดฟเดฒเตเดฒ.

เดตเดฟเดจเตˆเตฝ เดžเด™เตเด™เตพเด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เดชเดฐเดฟเดšเดฟเดคเดฎเดพเดฏ เด’เดฐเต เดฐเต‚เดชเดคเตเดคเดฟเตฝ เดกเดฟเดธเตเด•เดฟเตฝ เดกเดพเดฑเตเดฑ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเต - เด…เดคเดพเดฏเดคเต, เดžเด™เตเด™เตพเด•เตเด•เต เดฎเต†เดฎเตเดฎเดฑเดฟ เด‰เดณเตเดณเดคเดฟเดจเต‡เด•เตเด•เดพเตพ เด•เต‚เดŸเตเดคเตฝ เดกเดพเดฑเตเดฑ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเด‚เดญเดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เด•เต‚เดŸเดพเดคเต† เดŸเดฐเดพเดจเตเดฑเตเดฒ เด…เดคเต เดกเดฟเดธเตเด•เดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดพเดฏเดฟเด•เตเด•เตเด‚.

เด‡เดชเตเดชเต‹เตพ เดจเดฎเตเดฎเตพ เดฎเต†เดฎเตเดฎเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.

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>

เดธเต‚เดšเดฟเด•:

เดเดคเต เดธเตเดฅเดฒเดคเตเดคเดฟเดจเตเด‚ เด’เดฐเต เดชเตเดฐเดพเดฅเดฎเดฟเด• เดธเต‚เดšเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด•เดพเดฐเดฃเด‚ เด…เดคเดฟเดฒเตเดฒเดพเดคเต† เด’เดจเตเดจเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดฟเดฒเตเดฒ. เดเดคเตŠเดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต†เดฏเตเด‚ เดชเต‹เดฒเต†, เดžเด™เตเด™เตพ เด†เดฆเตเดฏ เดซเต€เตฝเดกเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต - เดฑเต†เด•เตเด•เต‹เตผเดกเต เดเดกเดฟ.

เดญเดพเด—เด™เตเด™เตพ:

เดจเดฎเตเดฎเตเดŸเต† เดธเต‚เดšเดฟเด•เดฏเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดคเดพเดฃเต†เดจเตเดจเต เด‡เดตเดฟเดŸเต† เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเดฟเตฝ เด’เดฐเต เดญเดพเด—เด‚ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต - เดžเด™เตเด™เตพ เด†เดฆเตเดฏเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดซเต€เตฝเดกเต เดธเตˆเตป เดšเต†เดฏเตเดฏเดพเดคเตเดค เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณเดคเดพเดฃเต - เด’เดฐเต เดชเต‹เดธเดฟเดฑเตเดฑเต€เดตเต เดชเต‚เตผเดฃเตเดฃเดธเด‚เด–เตเดฏ. เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดžเดพเตป เด“เตผเด•เตเด•เตเดจเตเดจเดฟเดŸเดคเตเดคเต‹เดณเด‚, เดชเดฐเดฎเดพเดตเดงเดฟ 18 เด•เตเดตเดฟเดจเตเดฑเดฟเดฒเตเดฏเตบ เด†เดฃเต. เด…เดคเต เดงเดพเดฐเดพเดณเด‚.

เด…เดชเตเดชเต‹เตพ เดจเดฎเตเด•เตเด•เต เด‡เตปเดธเต‡เตผเดŸเตเดŸเต เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดกเดพเดฑเตเดฑ เดšเต‡เตผเด•เตเด•เดพเด‚.

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>

เด†เดฆเตเดฏ เดซเต€เตฝเดกเต เดชเตเดฐเดพเดฅเดฎเดฟเด• เด•เต€ เด†เดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เด…เดคเต เด…เดฆเตเดตเดฟเดคเต€เดฏเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚. เดจเดฟเดฐเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เดžเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดคเตเดฐ เดกเดพเดฑเตเดฑ เด…เดตเดฟเดŸเต† เดšเต‡เตผเด•เตเด•เดพเด‚. เดžเดพเตป เดฎเตเด•เดณเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดš เดฎเต†เดธเต‡เดœเตเดชเดพเด•เตเด•เต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเดพเดฃเต เด…เดต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต.

เดกเดพเดฑเตเดฑ เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต

เด…เดชเตเดชเต‹เตพ เดจเดฎเตเด•เตเด•เต เดธเต†เดฒเด•เตเดŸเต เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดกเดพเดฑเตเดฑ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚.

{1} เด•เต€ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต Box.example.select เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดŽเตปเดŸเตเดฐเดฟ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚. เดคเดพเด•เตเด•เต‹เตฝ เดคเดพเดดเตเดคเตเดคเดฟเดฏเดพเตฝ, เดจเดฎเตเดฎเตเดŸเต† เด•เตˆเดตเดถเดฎเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เดฐเต‡เด–เด•เดณเตเด‚ เด•เดพเดฃเดพเด‚. เด…เดตเดฏเต†เดฒเตเดฒเดพเด‚ เดจเดฟเดฐเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเดคเตเดคเดฟเตฝ เดตเตเดฏเดคเตเดฏเดพเดธเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด‡เดตเดฟเดŸเต†, เดคเดคเตเดคเตเดตเดคเตเดคเดฟเตฝ, เดจเดฟเดฐเด•เดณเตเดŸเต† เด†เดถเดฏเด‚ เด‡เดฒเตเดฒ - เดซเต€เตฝเดกเต เดจเดฎเตเดชเดฑเตเด•เตพ เด‰เดฃเตเดŸเต.

เดคเดฟเด•เดšเตเดšเตเด‚ เดเดคเต เด…เดณเดตเดฟเดฒเตเด‚ เดกเดพเดฑเตเดฑ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดซเต€เตฝเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฎเตเดฎเตพ เด…เดตเดฐเต† เดคเดฟเดฐเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพ เด’เดฐเต เดชเตเดคเดฟเดฏ เดฆเตเดตเดฟเดคเต€เดฏ เดธเต‚เดšเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต.


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']
...

เดธเด‚เดฐเด•เตเดทเดฃเด‚

เดžเด™เตเด™เตพ เด‰เดฆเดพเดนเดฐเดฃเด‚ เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเดšเตเดšเต เดกเดพเดฑเตเดฑ เดตเต€เดฃเตเดŸเตเด‚ เดตเดฟเดณเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด…เดคเต เด…เดตเดฟเดŸเต† เด‡เดฒเตเดฒเต†เดจเตเดจเต เดžเด™เตเด™เตพ เด•เดพเดฃเตเด‚ - เดŽเดฒเตเดฒเดพเด‚ เดถเต‚เดจเตเดฏเดฎเดพเดฃเต. เดŸเดพเดฐเดจเตเดฑเต‚เตพ เดšเต†เด•เตเด•เตโ€Œเดชเต‹เดธเตเดฑเตเดฑเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดกเดฟเดธเตเด•เดฟเดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑ เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฒเดพเดฃเต เด‡เดคเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต, เดŽเดจเตเดจเดพเตฝ เด…เดŸเตเดคเตเดค เดธเต‡เดตเต เดตเดฐเต† เดžเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดจเดฟเตผเดคเตเดคเดฟเดฏเดพเตฝ, เดŽเดฒเตเดฒเดพ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ เดจเดทเตโ€ŒเดŸเดชเตเดชเต†เดŸเตเด‚ - เด•เดพเดฐเดฃเด‚ เดžเด™เตเด™เตพ เด…เดตเดธเดพเดจ เดšเต†เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เตเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดฐเดฃเตเดŸเต เดฎเดฃเดฟเด•เตเด•เต‚เตผ เดฎเตเดฎเตเดชเต.

เด“เดฐเต‹ เดธเต†เด•เตเด•เตปเดกเตเด‚ เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เดพเตป เด‡เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เดกเดฟเดธเตเด•เดฟเดฒเต‡เด•เตเด•เต เดจเดฟเดฐเดจเตเดคเดฐเด‚ 20 GB เด‡เดŸเตเดจเตเดจเดคเต เดจเดฒเตเดฒ เด†เดถเดฏเดฎเดฒเตเดฒ.

เดˆ เด†เดตเดถเตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ, เดฑเตˆเดฑเตเดฑเต-เดŽเดนเต†เดกเต เดฒเต‹เด—เต เดŽเดจเตเดจ เด†เดถเดฏเด‚ เด•เดฃเตเดŸเตเดชเดฟเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต. เด…เดคเดฟเดจเตเดฑเต† เดธเดนเดพเดฏเดคเตเดคเต‹เดŸเต†, เดกเดพเดฑเตเดฑเดฏเดฟเดฒเต† เด“เดฐเต‹ เดฎเดพเดฑเตเดฑเดคเตเดคเดฟเดจเตเด‚, เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดฑเตˆเดฑเตเดฑเต-เดŽเดนเต†เดกเต เดฒเต‹เด—เต เดซเดฏเดฒเดฟเตฝ เด’เดฐเต เดŽเตปเดŸเตเดฐเดฟ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต.

เดšเต†เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเต เดตเดฐเต†เดฏเตเดณเตเดณ เด“เดฐเต‹ เดŽเตปเดŸเตเดฐเดฟเดฏเตเด‚ เด…เดตเดฏเดฟเตฝ เดธเต‚เด•เตเดทเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เดซเดฏเดฒเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดžเด™เตเด™เตพ เดตเดฒเตเดชเตเดชเด‚ เดธเดœเตเดœเดฎเดพเด•เตเด•เดฟ - เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, 64 MB. เด…เดคเต เดจเดฟเดฑเดฏเตเดฎเตเดชเต‹เตพ, เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเด‚เด—เต เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เดพเตป เดคเตเดŸเด™เตเด™เตเดจเตเดจเต. เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚, เด…เดตเดธเดพเดจ เดšเต†เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต Tarantool เดชเตเดจเดƒเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดคเต เดจเดฟเตผเดคเตเดคเตเดจเตเดจเดคเต เดตเดฐเต† เดชเดฟเดจเตเดจเต€เดŸเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เด‡เดŸเดชเดพเดŸเตเด•เดณเตเด‚ เดฑเต‹เตพ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดŸเดพเดฐเดจเตเดฑเต‚เดณเดฟเตฝ, เด…เดตเดฏเตโ€Œเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดธเต‚เดชเตเดชเตผ เดซเดพเดธเตเดฑเตเดฑเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด‚ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด‚ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดŽเดคเตเดฐ เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต†เดจเตเดจเต เด‡เดคเดพ

เด…เดคเตเดคเดฐเด‚ เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเด‚เด—เต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป, เดจเดฟเด™เตเด™เตพ box.cfg เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเดฟเตฝ (example.lua เดซเดฏเดฒเดฟเตฝ) เด“เดชเตเดทเตป เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

wal_mode = โ€œwriteโ€;

เดกเดพเดฑเตเดฑ เด‰เดชเดฏเต‡เดพเด—เด‚

เดžเด™เตเด™เตพ เด‡เดชเตเดชเต‹เตพ เดŽเดดเตเดคเดฟเดฏเดคเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดกเดพเดฑเตเดฑ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŸเดฐเดพเดจเตเดฑเตเดฒ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚, เด…เดคเต เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดพเดฏเดฟ เดตเดณเดฐเต† เดตเต‡เด—เดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚. เด‡เดชเตเดชเต‹เตพ เดŽเดฒเตเดฒเดพเด‚ เด•เตŠเดฃเตเดŸเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เดเดธเดฟเด‚เด—เต เด†เดฃเต.

เด’เดฐเต เด…เดชเต‡เด•เตเดท เดŽเดดเตเดคเตเดจเตเดจเต

เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดŸเดฐเดพเดจเตเดฑเตเดฒเดฏเตเด•เตเด•เดพเดฏเดฟ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเดดเตเดคเดพเด‚

เดธเตโ€Œเดชเต‹เดฏเดฟเดฒเดฑเดฟเดจเต เด•เต€เดดเดฟเดฒเตเดณเตเดณ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เดพเดฃเตเด•

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()

เดชเตเดฐเดคเต€เด•เด™เตเด™เดณเต† เดจเดฟเตผเดตเดšเดฟเด•เตเด•เตเดจเตเดจ เดšเดฟเดฒ เดชเดŸเตเดŸเดฟเด• เดžเด™เตเด™เตพ เดฒเตเดตเดฏเดฟเตฝ เดชเตเดฐเด–เตเดฏเดพเดชเดฟเด•เตเด•เตเดจเตเดจเต. เด•เตเดฐเดฎเดฐเดนเดฟเดคเดฎเดพเดฏ เด’เดฐเต เดธเตเดŸเตเดฐเดฟเด‚เด—เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดˆ เดชเตเดฒเต‡เดฑเตเดฑเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

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')

เด‡เดคเดฟเดจเตเดถเต‡เดทเด‚, เดŽเดฒเตเดฒเดพ http เดธเต†เตผเดตเตผ เด‡เดจเตเดฑเตผเดซเต‡เดธเตเด•เดณเดฟเดฒเตเด‚ เดžเด™เตเด™เตพ เดชเต‹เตผเดŸเตเดŸเต 8080-เตฝ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เดŽเดฒเตเดฒเดพ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเตเด‚ เดชเดฟเดถเด•เตเด•เดณเตเด‚ เดฒเต‹เด—เต เดšเต†เดฏเตเดฏเตเด‚.

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 เดจเตฝเด•เตเดจเตเดจเต, เด…เดคเดฟเตฝ เดžเด™เตเด™เตพ เด•เต—เดฃเตเดŸเต, เด—เต†เดฑเตเดฑเตเด•เต—เดฃเตเดŸเต เดŽเดจเตเดจเดฟเดต เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเต† เดตเดฟเดณเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดžเด™เตเด™เดณเตเดŸเต† เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต† เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดฐเต€เดคเดฟ

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)

เดตเดฐเดฟเดฏเดฟเตฝ เดŽเดตเดฟเดŸเต† เดฑเต‚เดŸเตเดŸเตผ: เดฑเต‚เดŸเตเดŸเต({เดฐเต€เดคเดฟ = 'GET', เดชเดพเดคเตเดคเต = '/เดŸเต‹เด•เตเด•เตบ'}, เดซเด‚เด—เตโ€Œเดทเตป() เดžเด™เตเด™เตพ เดซเด‚เด—เตโ€Œเดทเดจเต† เดตเดฟเดณเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด’เดฐเต เดŸเต‹เด•เตเด•เตบ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดธเตเดŸเตเดฐเดฟเด‚เด—เต เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดŸเต‹เด•เตเด•เตบ = เดฑเดพเตปเดกเด‚เดธเตเดŸเตเดฐเดฟเด‚เด—เต(32) 32 เดชเตเดฐเดคเต€เด•เด™เตเด™เดณเตเดŸเต† เด•เตเดฐเดฎเดฐเดนเดฟเดคเดฎเดพเดฏ เดธเตเดŸเตเดฐเดฟเด‚เด—เต เด†เดฃเต.
เด‡เตป เดฒเตˆเตป เดฒเต‹เด•เตเด•เตฝ เดฒเดพเดธเตเดฑเตเดฑเต = box.space.example:len() เดžเด™เตเด™เตพ เด…เดตเดธเดพเดจ เด˜เดŸเด•เด‚ เดชเตเดฑเดคเตเดคเต†เดŸเตเด•เตเด•เตเดจเตเดจเต.
เด’เดชเตเดชเด‚ เดตเดฐเดฟเดฏเดฟเดฒเตเด‚ box.space.example:insert{ last + 1, token } เดžเด™เตเด™เดณเตเดŸเต† เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เต เดžเด™เตเด™เตพ เดกเดพเดฑเตเดฑ เดŽเดดเตเดคเตเดจเตเดจเต, เด…เดคเดพเดฏเดคเต, เดžเด™เตเด™เตพ เดเดกเดฟ 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:/#

/เดŽเดฃเตเดฃเด‚ เดžเด™เตเด™เตพเด•เตเด•เต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเต 200 เดจเตฝเด•เตเดจเตเดจเต.
/เดŸเต‹เด•เตเด•เตบ เด’เดฐเต เดŸเต‹เด•เตเด•เตบ เดจเตฝเด•เตเด•เดฏเตเด‚ เดˆ เดŸเต‹เด•เตเด•เตบ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เต เดŽเดดเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดตเต‡เด—เดค เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต

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 เด—เตเดฐเต‚เดชเตเดชเต เดฌเตเดฒเต‹เด—เดฟเตฝ เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต เด‰เดŸเตป เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เตเด‚, เดˆ เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเดฟเตฝ เดžเด™เตเด™เตพ เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เด…เดคเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดฒเดฟเด™เตเด•เต เดšเต‡เตผเด•เตเด•เตเด‚.

เดžเด™เตเด™เตพ เด“เตบเดฒเตˆเดจเดฟเตฝ เด‡เดต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจ เด‡เดตเดจเตเดฑเตเด•เดณเดฟเตฝ เดชเด™เตเด•เต†เดŸเตเด•เตเด•เดพเดจเตเด‚ เดคเดคเตเดธเดฎเดฏเด‚ เดšเต‹เดฆเตเดฏเด™เตเด™เตพ เดšเต‹เดฆเดฟเด•เตเด•เดพเดจเตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดŸเตเดฏเต‚เตบ เดšเต†เดฏเตเดฏเตเด• REBRAIN เดŽเดจเตเดจเดฏเดพเดณเตเดŸเต† เดšเดพเดจเตฝ DevOps.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เตเดฒเต—เดกเดฟเดฒเต‡เด•เตเด•เต เดจเต€เด™เตเด™เดฃเดฎเต†เด™เตเด•เดฟเตฝ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเดฑเดฟเดจเต† เด•เตเดฑเดฟเดšเตเดšเต เดšเต‹เดฆเตเดฏเด™เตเด™เดณเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด’เดฐเต เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดจเตฝเด•เดพเตป เดฎเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ.

PS เดžเด™เตเด™เตพเด•เตเด•เต เดชเตเดฐเดคเดฟเดฎเดพเดธเด‚ 2 เดธเต—เดœเดจเตเดฏ เด“เดกเดฟเดฑเตเดฑเตเด•เตพ เด‰เดฃเตเดŸเต, เด’เดฐเตเดชเด•เตเดทเต‡ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด…เดตเดฏเดฟเดฒเตŠเดจเตเดจเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•