|
Персональные инструменты |
|||
|
ADD-2011 (Рецензии Стаса Фомина)/Увеличиваем производительность MySQL в десятки раз используя HandlerSocketМатериал из CustisWikiДоклад на по большому счету на тему скрещивания «ежа с ужом» — как бы добиться NoSQL-ништяков типа скорости, и собственно отсутствия SQL как эсперанто-посредника, при этом не слезая с привычного и проверенного MySQL, и сохраняя все его ништяки (включая SQL) для того, кому это действительно надо. Таких подходов полно — вот, прямо к InnoDB можно пустить memcache (о чем тоже немного расскажет докладчик), ну и вообще см. обзор NOSQLя в MySQLе. Плюсы этого — чистый, текстово-читаемый сетевой протокол (удобно для локализации проблем, тут докладчик рассказал байку про баги в libmemcached, которые он наблюдал в проекте с большой социальной сетью). Доступ идет через нумерованные[1] каналы, которые почему то называются индексами (вызывает путаницу с индексами MySQL), возможно из-за того, что каждому каналу нужно сопоставить таблицу и mysql-индекс в ней. Соотвественно, после этого можно простейшие запросы типа «ключ ?=<> →значение» набиваются в одну строчку этого текстового протокола (пересказывать протокол глупо, впрочем докладчик очень настаивал, чтобы перед работой вкуривали маны, а то его разработчики то пробелы вместо табов разделителями использовали, то на «читающий порт» подавали команды записи и т.п.). Полно биндингов Java/Python/Ruby/Node.js, для PHP аж три разных, пара для питона и т.п. Подход сам хорош и для фронтэнда — «список товаров» в вебмагазине, и даже для обработки статистики, когда статистику собирают не «парся логи», а оптимизированно засовывают в ту же базу данных. Отдельная удобная фишка прямая трансляция GET-запросов NGINXом в (NGX_HSJSON) в этот Handler Socket с возвратом JSON-ответов, через что разумно реализовывать автокомплит в поиске. Ну и по опыту докладчика, HS вполне на уровне классических key-value баз типа Memcache/Redis/Tokyo Tyrant (синтетический тест с одним соединением, без сети).
|
||