เปเบเบฅเบฐเบเบปเบเบเบดเปเบงเบ PHP เปเบเบเบฑเบเบเบธเบเบฑเบเบกเบตเบชเบญเบเบเบปเบงเปเบเบทเปเบญเบกเบเปเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบ Tarantool - เบเบตเปเปเบกเปเบเบเบฒเบเบเบฐเบซเบเบฒเบ PECL เบขเปเบฒเบเปเบเบฑเบเบเบฒเบเบเบฒเบ
เปเบเบเบปเบเบเบงเบฒเบกเบเบตเป, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบขเบฒเบเปเบเปเบเบเบฑเบเบเบปเบเปเบเปเบฎเบฑเบเบเบญเบเบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบฑเบเบชเบญเบเปเบฅเบฐเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเบดเบเบตเบเบฒเบ, เบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเบซเบเปเบญเบเบชเบธเบเบเบญเบเบฅเบฐเบซเบฑเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเบฅเบธ 3-5 เบเบฐเบชเบดเบเบเบดเบเบฒเบเปเบเบตเปเบกเบเบถเปเบ (เปเบโเบเบฒเบโเบเบปเบโเบชเบญเบโเบชเบฑเบโเปเบเบฒเบฐโ!).
เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบปเบเบชเบญเบเบซเบเบฑเบ?
เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบปเบเบชเบญเบเบชเบดเปเบเบเบตเปเบเปเบฒเบงเบกเบฒเบเปเบฒเบเปเบเบดเบ synchronous เบเบปเบงเปเบเบทเปเบญเบกเบเปเปเบเบตเปเปเบฎเบฑเบเบงเบฝเบเปเบเบเบเปเปเบเบดเปเบเปเบเบ, เบเบฐเปเบฒเบ, เปเบฅเบฐเบเบฐเปเบฒเบเปเบเบเบเปเปเบเบปเบเบเบฑเบ. ๐ เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเปเปเบเปเบญเบเบเบฒเบเปเบเบฐเบฅเบฐเบซเบฑเบเบเบญเบเบเบปเบงเปเบเบทเปเบญเบกเบเปเปเปเบญเบ. เปเบเบเบฑเบเบเบธเบเบฑเบเบกเบตเบซเบผเบฒเบเบชเปเบงเบเบเบฐเบซเบเบฒเบเบเบตเปเบกเบตเบขเบนเปเปเบเบทเปเบญเบเบฑเบเบฅเบธเบชเบดเปเบเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบ:
เบเบงเบก - เบเบญเบ asynchronous เบเบฐเบชเบดเบเบเบดเบเบฒเบเบชเบนเบเบชเปเบฒเบฅเบฑเบ PHP. เปเบเปเปเบเบเบเบฑเบเปเบซเบเปเบญเบดเบเปเบเบตเปเบเบฑเบเปเบเบฑเปเบ Alibaba เปเบฅเบฐ Baidu. เบเบฑเปเบโเปเบเปโเบชเบฐโเบเบฑเบ 4.1.0 เบงเบดโเบเบตโเบเบฒเบ magic เปเบเปโเบเบฒโเบเบปเบโเบเบถเปเบโ SwooleRuntime::enableCoroutine(), เปเบเบดเปเบเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบ "เบเปเบฝเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบเบทเบญเบเปเบฒเบ PHP synchronous เบเบฑเบ asynchronous เบเบตเปเบกเบตเบฅเบฐเบซเบฑเบเบซเบเบถเปเบเปเบเบง."- Async เปเบกเปเบเบเบปเบเบเปเบงเบฒเบเปเปเบเบปเบเบกเบฒเบเบตเปเปเบเบฑเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเบตเปเบเบตเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ asynchronous เปเบ PHP. เปเบเบฑเบเบซเบเบฑเบเบเบปเบเบเปเบงเบฒเบเปเปเบเบปเบเบกเบฒเบเบตเป? เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เบชเปเบฒเบฅเบฑเบเปเบซเบเบเบปเบเบเบตเปเบเปเบญเบเบเปเปเบฎเบนเป, เบเบนเปเบเบฝเบเปเบเปเบฅเบถเบ repository เปเบฅเบฐเบเบฐเบเบฒเบเปเบฒเปเบเบญเบฐเบเบฒเบเบปเบเบเบญเบเปเบเบเบเบฒเบเปเบกเปเบเบเปเปเบเบฐเปเบเปเบ. เบเปเบญเบเบเบฐเบเปเบญเบเปเบเปเบกเบฑเบ
เปเบเบเบซเบเบถเปเบ เบเบฒเบเบชเปเบญเบก. เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบ Swoole, เบเบฒเบเบเบฐเบซเบเบฒเบเบเบตเปเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบตเบเบเบฒเบเปเบเบเบเบญเบเบเปเบฒเบเปเบเปเบขเปเบฒเบเบเปเบฒเบเบเบฒเบเบเปเบงเบเบเบฒเบ flick เบเบญเบ wrist เปเบเบทเปเบญเปเบฎเบฑเบเปเบซเป asynchrony เปเบเบเบเบฒเบเบเบปเบเปเบเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบกเบฒเบเบเบฐเบเบฒเบเบเบญเบ TCP เปเบฅเบฐ TLS streams เบเบฑเบเบชเบฐเบเบฑเบ asynchronous เบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒ. เบเบตเปเปเบกเปเบเปเบฎเบฑเบเปเบเปเปเบเบเบเปเบฒเบเบเบฒเบเปเบฅเบทเบญเบ "async.tcp = 1" เบเบฐเบซเบเบฒเบ - เปเบเบฑเบเบชเปเบงเบเบเบฐเบซเบเบฒเบเบเบตเปเบเปเบญเบเบเปเบฒเบเปเบซเบกเปเบเบฒเบ Joe Watkins เบเบตเปเบกเบตเบเบทเปเบชเบฝเบ, เบเบนเปเบเบฝเบเบเบญเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบเบฑเปเบ phpdbg, apcu, pthreads, pcov, uopz. เบเบฒเบเบเบฐเบซเบเบฒเบเบชเบฐเบซเบเบญเบ API เบชเปเบฒเบฅเบฑเบเบเบฒเบ multithreading เปเบ PHP เปเบฅเบฐเบเบทเบเบเบฑเบเบเปเบฒเปเบซเบเปเบเปเบเบฑเบเบเบฒเบเบเบปเบเปเบเบเบชเปเบฒเบฅเบฑเบ pthreads. เบเปเปเบเปเบฒเบเบฑเบเบเบตเปเบชเปเบฒเบเบฑเบเบเบญเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบกเปเบเบงเปเบฒเบกเบฑเบเบเบฝเบเปเบเปเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ ZTS (Zend Thread Safe) เบชเบฐเบเบฑเบเบเบญเบ PHP.
เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบปเบเบชเบญเบเปเบเบงเปเบ?
เปเบซเปเปเบเบตเบเบเบปเบงเบขเปเบฒเบ Tarantool เบเปเบงเบเบเบฒเบเบเบดเบเบเบฑเบเบเบถเบเบเบฒเบเบเบฝเบเบฅเปเบงเบเปเปเบฒ (wal_mode = เบเปเปเบกเบต) เปเบฅเบฐโเบเบฒเบโเปเบเบตเปเบกโเบเบถเปเบโเบเบญเบโเปเบเบทเบญโเบเปเบฒเบ buffer (readahead = 1 * 1024 * 1024). เบเบฒเบเปเบฅเบทเบญเบเบเปเบฒเบญเบดเบเบเบฐเบฅเบปเบเบฅเปเบฒเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเปเบเปเบ, เบเบตเบชเบญเบเบเบฐเปเบฎเบฑเบเปเบซเปเบชเบฒเบกเบฒเบเบญเปเบฒเบเบเปเบฒเบฎเปเบญเบเบเปเปเบเบตเปเบกเปเบเบตเบกเบเบฒเบ buffer เบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบฅเบฐเบเบฑเปเบเบเบฑเปเบเบเบถเปเบเบซเบผเบธเบเบเปเบญเบเบเปเบฒเบเบงเบเบเบฒเบเปเบเบเบญเบเบฅเบฐเบเบปเบ.
เบชเปเบฒเบฅเบฑเบ benchmarks เบเบตเปเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเปเปเบกเบนเบ (เบเบฒเบเปเบเบ, เบเบฒเบเบฅเบถเบ, เบเบฒเบเบญเปเบฒเบ, เปเบฅเบฐเบญเบทเปเบเป), เบเปเบญเบเบเบตเปเบเบฐเปเบฅเบตเปเบกเบเบปเปเบ benchmark, เบเปเบญเบ memtx เบเบฐเบเบทเบเบชเปเบฒเบเบเบทเปเบ (เปเบซเบกเป) เปเบเบดเปเบเบเปเบฒเบเบฑเบเบเบฐเบเบตเบเบปเปเบเบเปเปเบกเปเบเบชเปเบฒเบเปเบเบเปเบเบทเปเบญเบเบเปเบฒเปเบเบตเบเบเบญเบเบเปเบฒเบเปเบฒเบเบงเบเปเบเบฑเบกเบเปเบฒเบชเบฑเปเบ. (เบฅเปเบฒเบเบฑเบ).
เบเปเบญเบ DDL เบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเบฑเปเบเบเบตเป:
space = box.schema.space.create(config.space_name, {id = config.space_id, temporary = true})
space:create_index('primary', {type = 'tree', parts = {1, 'unsigned'}, sequence = true})
space:format({{name = 'id', type = 'unsigned'}, {name = 'name', type = 'string', is_nullable = false}})
เบเปเบฒเบเปเบฒเปเบเบฑเบ, เบเปเบญเบเบเบตเปเบเบฐเบเปเบฒเปเบเบตเบเบเบฒเบ benchmark, เบเปเบญเบเปเบกเปเบเปเบเบฑเบกเปเบเบเปเบงเบ 10,000 tuples เบเบญเบเปเบเบเบเบญเบก.
{id, "tuplะต_<id>"}
Tuples เปเบกเปเบเปเบเบปเปเบฒเปเบเบดเบเปเบเบเปเบเปเบเปเบฒเบฅเบฐเบซเบฑเบเบชเบธเปเบก.
benchmark เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเปเบกเปเบเบเปเบฒเบฎเปเบญเบเบเปเบเบฝเบงเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, เปเบเบดเปเบเบเบทเบเบเบฐเบเบดเบเบฑเบ 10,000 เปเบเบทเปเบญ (เบเบฒเบเบเบฐเบเบดเบงเบฑเบ), เปเบเบดเปเบ, เปเบเบเบฒเบเบเบฑเบเบเบฑเบ, เบเบทเบเบเบฐเบเบดเบเบฑเบเปเบ iterations. เบเบฒเบเบเปเปเบฒเบเบทเบเบเบฐเบเบทเบเปเบฎเบฑเบเบเปเบณเบเบปเบเบเปเบงเบฒเบเบฒเบเบเปเบฝเบเปเบเบเบเบญเบเปเบงเบฅเบฒเบเบฑเบเปเบปเบเบฅเบฐเบซเบงเปเบฒเบ 5 เบเบฒเบเบเปเปเบฒเบเบทเบเปเบกเปเบเบขเบนเปเปเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบตเปเบเบญเบกเบฎเบฑเบเปเบเปเบเบญเบ 3%*. เบซเบผเบฑเบเบเบฒเบเบเบตเป, เบเบปเบเปเบเปเบฎเบฑเบเบชเบฐเปเบฅเปเบเปเบกเปเบเบเบฐเบเบดเบเบฑเบ. เบกเบตเบเบฒเบเบขเบธเบเบเบปเปเบงเบเบฒเบง 1 เบงเบดเบเบฒเบเบตเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเปเปเบฒเบเบทเบเปเบเบทเปเบญเบเปเบญเบเบเบฑเบเบเปเปเปเบซเปเปเบเบฃเปเบเบเปเบเบตเบเบฒเบเบเบฒเบเบเบดเบเบฅเปเบญเบก. เบเบนเปเปเบเบฑเบเบเบตเปเปเบซเบเบทเปเบญเบเบญเบ Lua เปเบกเปเบเบเบดเบเบฒเบเบเปเบญเบเบเบตเปเบเบฐเปเบฎเบฑเบเบเปเปเบฒเบญเบตเบเบเบฑเปเบเปเบฅเบฐเบเบทเบเบเบฑเบเบเบฑเบเปเบซเปเปเบฅเบตเปเบกเบเบปเปเบเบซเบผเบฑเบเบเบฒเบเบกเบฑเบเบชเปเบฒเปเบฅเบฑเบ. เบเบฐเบเบงเบเบเบฒเบ PHP เบเบทเบเปเบเบตเบเบเบปเบงเบเบฝเบเปเบเปเบกเบตเบชเปเบงเบเบเบฐเบซเบเบฒเบเบเบตเปเบเปเบฒเปเบเบฑเบเบชเปเบฒเบฅเบฑเบ benchmark, เบเปเบงเบเบเบฒเบเบเบดเบเบเบฒเบเปเบซเบผเบเบเบปเบเบเบฐเบฅเบดเบเปเบฅเบฐเปเบเบทเปเบญเบเปเบเบฑเบเบเบตเปเปเบซเบเบทเปเบญเบเบทเบเบเบดเบ.
* เบเปเบฒโเบเบงเบโเบเบญเบโเบเบฒเบโเบเบฐโเบเบดโเบงเบฑเบโ, iterations เปเบฅเบฐโเบฅเบฐโเบเบฑเบโเบเบงเบฒเบกโเบเบดเบโเบเบฒเบโเบชเบฒโเบกเบฒเบโเปเบเปโเบฎเบฑเบโเบเบฒเบโเบเปเบฝเบโเปเบเบโเปเบโเบเบฒเบโเบเบฑเปเบโเบเปเบฒโเบกเบฒเบโเบเบฐโเบเบฒเบโ.
เบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบฒเบเบเบปเบเบชเบญเบ
เบเบปเบเปเบเปเบฎเบฑเบเบเบตเปเบเบฑเบเบเบตเบกเบกเบฒเบเปเบฒเบเบฅเบธเปเบกเบเบตเปเปเบกเปเบเปเบฎเบฑเบเบขเบนเปเปเบ MacBookPro (2015), เบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบ - Fedora 30 (kernel version 5.3.8-200.fc30.x86_64). Tarantool เบเบทเบเปเบเบตเบเบเบปเบงเปเบ docker เบเบฑเบเบเบฒเบฅเบฒเบกเบดเปเบเบต "--network host"
.
เบฅเบธเปเบเปเบเบฑเบเปเบเบ:
Tarantool: 2.3.0-115-g5ba5ed37e
Docker: 19.03.3, build a872fc2f86
PHP: 7.3.11 (cli) (เบชเปเบฒเบ: เบเบธเบฅเบฒ 22 2019 08:11:04)
tarantool/เบฅเบนเบเบเปเบฒ: 0.6.0
rybakit/msgpack: 0.6.1
ext-tarantool: 0.3.2 (+ patch เบชเปเบฒเบฅเบฑเบ 7.3)*
ext-msgpack: 2.0.3
ext-async: 0.3.0-8c1da46
ext-swoole: 4.4.12
ext-parallel: 1.1.3
* เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เบเบปเบงเปเบเบทเปเบญเบกเบเปเปเบขเปเบฒเบเปเบเบฑเบเบเบฒเบเบเบฒเบเบเปเปเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ PHP เบฎเบธเปเบ> 7.2. เปเบเบทเปเบญเบฅเบงเบเบฅเบงเบกเปเบฅเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฐเบซเบเบฒเบเบขเบนเปเปเบ PHP 7.3, เบเปเบญเบเบเปเบญเบเปเบเป
ะ ะตะทัะปััะฐัั
เปเปเบ synchronous
เปเบเปเบเบเบญเบ Tarantool เปเบเปเบฎเบนเบเปเบเบเบเบฒเบเบชเบญเบ
เบเปเบญเบเบเบตเปเบเบฐเบเบฝเบเบเบฝเบเบเบปเบงเปเบเบทเปเบญเบกเบเปเป, เบเบงเบเปเบฎเบปเบฒเบเบฐเบงเบฑเบเปเบเบเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบญเบเบเบปเบงเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบ MessagePack เบชเปเบฒเบฅเบฑเบเบเบปเบงเปเบเบทเปเบญเบกเบเปเป PHP เปเบฅเบฐเปเบเบเบฒเบเบเบปเบเบชเบญเบเบเปเปเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเปเบเปเบซเบเบถเปเบเบเบตเปเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเบปเบเปเบเปเบฎเบฑเบเบเบตเปเบเบตเบเบตเปเบชเบธเบ:
เปเบเบดเบเปเบกเปเบเบงเปเบฒเบชเบฐเบเบฑเบ PHP (Pure) เบเปเปเบฒเบเบงเปเบฒเบเบฒเบเบเบฐเบซเบเบฒเบ PECL เปเบเบเบงเบฒเบกเปเบง, เปเบเปเบเบเบเบฒเบเบเบปเบงเบเบดเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฑเบเปเบเบฐเบเปเบฒเปเบซเปเปเบเปเบกเบฑเบ.
เบเบฑเปเบเบเบฑเปเบ, เปเบซเปเบงเบฑเบเปเบเบเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบญเบเบเบปเบงเปเบเบทเปเบญเบกเบเปเปเปเบเบฎเบนเบเปเบเบ synchronous:
เบเบฑเปเบเบเบตเปเปเบซเบฑเบเปเบเปเบเบฒเบเบเบฒเบ, เบเบปเบงเปเบเบทเปเบญเบกเบเปเป PECL (Tarantool) เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบเบตเบเบงเปเบฒเปเบกเบทเปเบญเบเบฝเบเบเบฑเบเบเบปเบงเปเบเบทเปเบญเบกเบเปเป PHP (เบฅเบนเบเบเปเบฒ). เปเบเปเบเบตเปเบเปเปเปเบเบเปเบ, เปเบเบฒเบฐเบงเปเบฒเบญเบฑเบเบชเบธเบเบเปเบฒเบ, เบเบญเบเปเบซเบเบทเบญเบเบฒเบเบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเปเบเบเบฒเบชเบฒเบเบตเปเบเปเบฒเบฅเบปเบ, เบเบปเบงเบเบดเบเปเบฅเปเบงเบเบฑเบเปเบฎเบฑเบเบงเบฝเบเบซเบผเบฒเบเบเบถเปเบ: เบงเบฑเบเบเบธเปเบซเบกเปเบเบทเบเบชเปเบฒเบเบเบทเปเบเบเบฑเบเปเบเปเบฅเบฐเบเบฒเบเปเบ. เบเบฒเบเบฎเปเบญเบเบเป ะธ เบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบ (เปเบเบเปเบฅเบฐเบเบตเบเบญเบ Select - เบเบฑเบ Criteria, เปเบฅเบฐเปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบฒเบเบเบฑเบเบเบธเบ / Upsert - เบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบ), เบซเบเปเบงเบเบเบฒเบเปเบเบเบเปเบฒเบเบซเบฒเบ เบเบฒเบเปเบเบทเปเบญเบกเบเปเป, Packer ะธ Handler เบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเบเบฑเบเปเบเบตเปเบก overhead. เปเบเปเบเบญเบ, เบเบงเบฒเบกเบเบทเบเบซเบเบธเปเบเบกเบฒเปเบเบฅเบฒเบเบฒ. เบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เปเบเบเบเบปเปเบงเปเบเปเบฅเปเบง, เบเบฒเบเบเบฒเบชเบฒ PHP เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเปเบเบดเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบเบต, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบกเบตเบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเบฑเบ, เบกเบฑเบเบเปเปเบชเปเบฒเบเบฑเบเปเบฅเบฐเบเบฒเบเบเบตเบญเบฒเบเบกเบตเบซเบเปเบญเบเบฅเบปเบเปเบกเบทเปเบญเปเบเป preloading เปเบ PHP 7.4, เบเปเปเปเบเปเบเปเบฒเบงเปเบเบดเบ JIT เปเบ PHP 8.
เปเบซเปเบเปเบฒเบงเบเปเปเปเบ. Tarantool 2.0 เปเบเบตเปเบกเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบชเปเบฒเบฅเบฑเบ SQL. เปเบซเปเบเบฐเบเบฒเบเบฒเบกเบเบฐเบเบดเบเบฑเบ Select, Insert, Update เปเบฅเบฐDelete เปเบเบเปเบเปเปเบเบฃเปเบเบเป SQL เปเบฅเบฐเบเบฝเบเบเบฝเบเบเบปเบเปเบเปเบฎเบฑเบเบเบฑเบ noSQL (binary) เบเบฝเบเปเบเบปเปเบฒ:
เบเบปเบเปเบเปเบฎเบฑเบ SQL เปเบกเปเบเบเปเปเบเบฐเบเบฑเบเปเบเบซเบผเบฒเบ (เปเบซเปเบเปเบญเบเปเบเบทเบญเบเปเบเบปเปเบฒเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบปเบเบชเบญเบเปเบซเบกเบ synchronous). เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเปเปเบฎเบนเปเบชเบถเบเปเบชเบเปเบเบเบฑเบเปเบฅเบทเปเบญเบเบเบตเปเบเปเบญเบเปเบงเบฅเบฒ; เบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ SQL เบเบฑเบเบขเบนเปเบเบฒเบเปเบเปเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบขเปเบฒเบเบซเปเบฒเบงเบซเบฑเบ (เบเปเบญเบเบเปเบฒเบเบเปเปเบเบปเบเบกเบฒเบเบตเป, เบเบปเบงเบขเปเบฒเบ, เบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเปเบเปเบเบทเบเปเบเบตเปเบก.
เบเปเปเบเบปเบเบเบฑเบ
เปเบฅเปเบง, เบเบญเบเบเบตเปเปเบซเปเปเบเบดเปเบเบงเบดเบเบตเบเบฒเบเบเบฐเบซเบเบฒเบ Async เบชเบฒเบกเบฒเบเบเปเบงเบเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบธเบเบเบปเบเปเบเปเบฎเบฑเบเบเปเบฒเบเปเบเบดเบ. เปเบเบทเปเบญเบเบฝเบเปเบเบผเปเบเบผเบก asynchronous, เบชเปเบงเบเบเบฐเบซเบเบฒเบเปเบซเป API เปเบเบเบญเบตเบเปเบชเป coroutines, เปเบเบดเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเป. เบเบงเบเปเบฎเบปเบฒเบเบปเปเบเบเบปเบเบงเปเบฒเบเปเบฒเบเบงเบ coroutines เบเบตเปเบเบตเบเบตเปเบชเบธเบเบชเปเบฒเบฅเบฑเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบกเปเบ 25:
"เปเบเป" 10,000 เบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบเบปเปเบง 25 coroutines เปเบฅเบฐเปเบเบดเปเบเบชเบดเปเบเบเบตเปเปเบเบตเบเบเบถเปเบ:
เบเปเบฒเบเบงเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเปเบงเบดเบเบฒเบเบตเปเบเบตเปเบกเบเบถเปเบเบซเบผเบฒเบเบเปเบงเบฒ 3 เปเบเบทเปเบญเบชเปเบฒเบฅเบฑเบ
เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เบเบปเบงเปเบเบทเปเบญเบกเบเปเป PECL เบเปเปเปเบเปเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ ext-async.
SQL เปเบกเปเบเบซเบเบฑเบ?
เบเบฑเปเบเบเบตเปเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเป, เปเบเบฎเบนเบเปเบเบ asynchronous เบเบงเบฒเบกเปเบเบเบเปเบฒเบเบฅเบฐเบซเบงเปเบฒเบ binary protocol เปเบฅเบฐ SQL เปเบเปเบเบฒเบเปเบเบฑเบเบขเบนเปเปเบเบเบญเบเบเบญเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ.
เบเบงเบก
เบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบเบเบงเบเปเบฎเบปเบฒเบเบญเบเบซเบฒเบเปเบฒเบเบงเบเบเบตเปเบเบตเบเบตเปเบชเบธเบเบเบญเบ coroutines, เปเบงเบฅเบฒเบเบตเปเบชเปเบฒเบฅเบฑเบ Swoole:
เปเบซเปเบขเบธเบเปเบเบปเบฒเบขเบนเปเบเบตเป 25. เปเบซเปเปเบฎเบฑเบเบเปเปเบฒเบญเบตเบ trick เบเบฝเบงเบเบฑเบเบเบฑเบเบชเปเบงเบเบเบฐเบซเบเบฒเบ Async - เปเบเบเบขเบฒเบ 10,000 เบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบฅเบฐเบซเบงเปเบฒเบ 25 coroutines. เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบตเปเบกเบเบฒเบเบเบปเบเบชเบญเบเบญเบตเบเบญเบฑเบเบซเบเบถเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบเบงเบฝเบเบเบฑเบเบซเบกเบปเบเบญเบญเบเปเบเบฑเบ 2 เบชเบญเบเบเบฐเบเบงเบเบเบฒเบ (เบเบฑเปเบเปเบกเปเบ, เปเบเปเบฅเบฐเบเบฐเบเบงเบเบเบฒเบเบเบฐเบเบฐเบเบดเบเบฑเบ 5,000 เปเบ 25 coroutines). เบเบฐเบเบงเบเบเบฒเบเบเบฐเบเบทเบเบชเปเบฒเบเบเบทเปเบเปเบเบเปเบเป เบเบฐเบเบงเบเบเบฒเบ Swoole.
เบเบปเบเปเบเปเบฎเบฑเบ:
Swole เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเบปเบเปเบเปเบฎเบฑเบเบเปเปเบฒเปเบฅเบฑเบเบเปเบญเบเปเบกเบทเปเบญเบเบฝเบเบเบฑเบ Async เปเบกเบทเปเบญเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบซเบเบถเปเบเบเบฐเบเบงเบเบเบฒเบ, เปเบเปเบกเบต 2 เบเบฐเบเบงเบเบเบฒเบเบฎเบนเบเบเบฒเบเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบ (เบเปเบฒเบเบงเบ 2 เบเปเปเปเบเปเบเบทเบเปเบฅเบทเบญเบเปเบเบเบเบฑเบเปเบญเบตเบ; เปเบเปเบเบทเปเบญเบเบเบญเบเบเปเบญเบ, เบกเบฑเบเปเบกเปเบ 2 เบเบฐเบเบงเบเบเบฒเบเบเบตเปเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเบปเบเปเบเปเบฎเบฑเบเบเบตเปเบเบตเบเบตเปเบชเบธเบ).
เปเบเบเบงเบดเบเบตเบเบฒเบเบเบฒเบ, เบเบฒเบเบเบฐเบซเบเบฒเบ Async เบเบฑเบเบกเบต API เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบฐเบเบงเบเบเบฒเบ, เปเบเปเบขเบนเปเบเบตเปเบเบฑเปเบเบเปเบญเบเบเปเปเปเบเปเบชเบฑเบเปเบเบเปเบซเบฑเบเบเบงเบฒเบกเปเบเบเบเปเบฒเบเปเบเปเบเบฒเบเบเบฒเบเปเบฅเปเบเบกเบฒเบเบเบฐเบเบฒเบเปเบเบเบฐเบเบงเบเบเบฒเบเบซเบเบถเปเบเบซเบผเบทเบซเบผเบฒเบ (เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบงเปเบฒเบเปเบญเบเบชเบฑเบเบชเบปเบเบขเบนเปเบเปเบญเบเปเบเบเปเบญเบเบซเบเบถเปเบ).
SQL vs binary protocol:
เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบ Async, เบเบงเบฒเบกเปเบเบเบเปเบฒเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบ binary เปเบฅเบฐ SQL เบเบทเบเบฅเบปเบเบฅเปเบฒเบเปเบเบฎเบนเบเปเบเบ asynchronous.
เบเบฐเบซเบเบฒเบ
เปเบเบทเปเบญเบเบเบฒเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเบฐเบซเบเบฒเบเบเปเปเปเบกเปเบเบเปเบฝเบงเบเบฑเบ coroutines, เปเบเปเบเปเบฝเบงเบเบฑเบเบเบฐเบเบนเป, เปเบซเปเบเบงเบเปเบฎเบปเบฒเบงเบฑเบเปเบเบเบเปเบฒเบเบงเบเบเบตเปเบเบตเบเบตเปเบชเบธเบเบเบญเบเบเบฐเบเบนเปเบเบฐเบซเบเบฒเบ:
เบกเบฑเบเปเบเบปเปเบฒเบเบฑเบ 16 เปเบเปเบเบทเปเบญเบเบเบญเบเบเปเบญเบ. เบกเบฒเปเบเปเบกเบฒเบเบเบฐเบเบฒเบเบเบปเบงเปเบเบทเปเบญเบกเบเปเปเปเบ 16 เบเบฐเบเบนเปเบเบฐเปเบฒเบเบเบฑเบ:
เบเบฑเปเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเปเบซเบฑเบเปเบเป, เบเบปเบเปเบเปเบฎเบฑเบเปเบกเปเบเบเบตเบเปเบงเบฒเบเบฑเบเบเบฒเบเบเบฐเบซเบเบฒเบ asynchronous (เบเปเปเบเบฑเบ Swoole เปเบฅเปเบเบขเบนเปเปเบ 2 เบเบฐเบเบงเบเบเบฒเบ). เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒเบชเปเบฒเบฅเบฑเบเบเบปเบงเปเบเบทเปเบญเบกเบเปเป PECL, เบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฒเบเบเบฑเบเบเบธเบเปเบฅเบฐ Upsert เปเบกเปเบเบซเบงเปเบฒเบเปเบเบปเปเบฒ. เบเบตเปเปเบกเปเบเปเบเบทเปเบญเบเบกเบฒเบเบฒเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบซเบผเบปเปเบฒเบเบตเปเบฅเบปเปเบกเปเบซเบฅเบงเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ - เบเปเบญเบเบเปเปเบฎเบนเปเบงเปเบฒเบกเบฑเบเปเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบญเบ ext-parallel, ext-tarantool, เบซเบผเบทเบเบฑเบเบชเบญเบ.
เบเบญเบเบเบตเปเปเบซเปเบเบฝเบเบเบฝเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ SQL:
เบชเบฑเบเปเบเบเปเบซเบฑเบเบเบงเบฒเบกเบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบปเบงเปเบเบทเปเบญเบกเบเปเปเบเบตเปเปเบฎเบฑเบเบงเบฝเบ synchronously?
เบฎเปเบงเบกเบเบฑเบ
เปเบฅเบฐเบชเบธเบเบเปเบฒเบ, เปเบซเปเบชเบฐเบซเบผเบธเบเบเบปเบเปเบเปเบฎเบฑเบเบเบฑเบเบซเบกเบปเบเปเบเบซเบเบถเปเบเบเบฒเบเปเบเบทเปเบญเปเบเบดเปเบเบเบฒเบเบฅเบงเบกเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเบตเปเบเบปเบเบชเบญเบ. เปเบซเปเปเบเบตเปเบกเบเบฝเบเปเบเปเบซเบเบถเปเบเบเบฒเบเบเบปเบเบชเบญเบเปเบซเบกเปเปเบเบเบฒเบเบฐเบฅเบฒเบ, เปเบเบดเปเบเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเปเปเปเบเปเปเบฎเบฑเบเปเบเบทเปเบญ - เปเบซเปเบเปเบฒเปเบเบตเบเบเบฒเบ Async coroutines เปเบเบเบฐเบซเบเบฒเบเปเบเบเปเบเป Parallel *. เปเบเบงเบเบงเบฒเบกเบเบดเบเบเบญเบเบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเปเบฒเบเปเบเบดเบเปเบกเปเบเปเบฅเปเบง
* เบกเบฑเบเปเบเบฑเบเปเบเบเปเปเปเบเปเบเบตเปเบเบฐเปเบเบตเบ Swoole coroutines เบเบฑเบ Parallel; เบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบชเปเบงเบเบเบฐเบซเบเบฒเบเปเบซเบผเบปเปเบฒเบเบตเปเบเปเปเปเบเบปเปเบฒเบเบฑเบเปเบเป.
เบเบฑเปเบเบเบฑเปเบ, เบเบปเบเปเบเปเบฎเบฑเบเบชเบธเบเบเปเบฒเบ:
เปเบเบเบเบตเปเบเบฐเปเบเบฑเบเบเบฒเบเบชเบฐเบซเบฅเบธเบเปเบเป
เปเบเบเบงเบฒเบกเบเบดเบเปเบซเบฑเบเบเบญเบเบเปเบญเบ, เบเบปเบเปเบเปเบฎเบฑเบเปเบกเปเบเบเปเบญเบเบเปเบฒเบเบชเบปเบกเบเบงเบ, เปเบฅเบฐเบเปเบงเบเปเบซเบเบเบปเบเบเบฒเบเบขเปเบฒเบเบเปเบญเบเปเบเปเปเบเบงเปเบฒเบเบตเปเบเปเปเปเบกเปเบเบเบญเบเปเบเบเบเปเบฒเบเบฑเบ! เบเปเปเบงเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบฑเบเบชเบดเบเปเบเบเบตเปเปเบเปเบเบเบเบฒเบเบเบตเปเปเบเปเบเบดเบเบชเปเบฒเบฅเบฑเบเบเบปเบงเบเปเบฒเบเปเบญเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฝเบเปเบเปเบเบฐเปเบงเบปเปเบฒเบงเปเบฒเบชเปเบฒเบฅเบฑเบเบเปเบญเบเบกเบฑเบเปเบเบฑเบเบเบฒเบเบเบปเบเบฅเบญเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบเบตเปเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฐเปเบกเบตเบเบงเปเบฒเบเปเบฒเบเบชเบฒเบกเบฒเบ "เบเบตเบ" เบญเบญเบเบเบฒเบเบเบปเบงเปเบเบทเปเบญเบกเบเปเป TCP เบเบตเปเบกเบตเบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเบซเบเปเบญเบเบเบตเปเบชเบธเบ. เบเปเบฒเบเปเบฒเบเบกเบตเปเบเบงเบเบงเบฒเบกเบเบดเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบธเบเบเบฑเบเบเบฐเบเบต, เบเปเบญเบเบเบฐเบเบดเบเบเบตเบเบตเปเบเบฐเบเบดเบเบฒเบฅเบฐเบเบฒเบเปเบฒเบฎเปเบญเบเบเปเบเบฒเบเบเบถเบเบเบญเบเปเบเบปเปเบฒ. เบฅเบฐโเบซเบฑเบโเบเบฑเบโเบซเบกเบปเบโเบเบตเปโเบกเบตโเบเปเบฒโเปเบเบฐโเบเปเบฒโเบเบฒเบโเปเบเบตเบโเบเบปเบงโเปเบฅเบฐโเบเบปเบโเปเบเปโเบฎเบฑเบโเปเบกเปเบโเปเบเปโเบเบทเบโเบเบฑเบโเบเบตเบกโเบกเบฒโเปเบโเบเบฒเบโเปเบเบโเบเปเบฒเบโเบซเบฒเบโ
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com