В 2010 году был презентован плагин HandlerSocket для MySQL.
Плагин значительно ускорял работу с данными, хранящимися в MySQL, и позволял работать с базой данных, как с NoSQL хранилищем.
Эта библиотека является реализацие протокола HandlerSocket, полностью написанная на PHP.
В результате, используя HandlerSocket можно обеспечить гораздо лучшую производительность для некоторых приложений, которые используют обычные протоколы приложений SQL.
На дворе 2014 год, а до сих пор инструмент и мануалы по использованию HandlerSocket похожи на экспериментальные или в процессе разработки.
Меня не устроили уже готовые решения, поэтому я решил написать свой велосипед и кататься на нем.
Почему вам стоит использовать HandlerSocket:
- консистентность данных;
- высокая производительность;
- компактность протокола;
- совместим с репликацией MySQL;
- идет из коробки в PerconaServer, MariaDB.
Приведенная ниже таблица показывает сравнение эффективности MySQL и Memcached.
approx qps | User CPU util | System CPU util | |
---|---|---|---|
MySQL via SQL | 105,000 | 60% | 28% |
Memcached | 420,000 | 8% | 88% |
MySQL via HandlerSocket | 750,000 | 45% | 53% |
Как установить HandlerSocket можно найти в интернете или просто скачать PerconaServer или MariaDB.
Начать использовать HandlerSocketLibrary очень просто.
Добавить в composer.json:
konstantin-kuklin/handlersocket-library": "dev-master"
Открываем соединение на сокет только для чления и авторизовываемся с паролем 'passwordRead'.
$reader = new \HS\Reader('localhost', 9998, 'passwordRead');
Открываем соединение на сокет для записи, пароль не указан.
$writer = new \HS\Writer('localhost', 9999);
Сравнение с основными библиотеками для PHP.
В списке будет участвовать HSPHP, написанный на PHP, HandlerSocket, написанный на С.
HSPHP (PHP) HandlerSocket(c-extension) HandlerSocketLibrary(PHP)
Буду рад вашим предложениям и отчетам о найденных багах!
Эта библиотека распространяется под MIT license.