Практические вопросы использования NOSQL в высоконагруженном проекте (NoSQL-экзотика: TokyoTyrant -> KyotoTycoon -> Google LevelDB)

Доклад принят в Программу конференции
Владимир Утратенко (Uzum Market — cамый крупный и быстрорастущий маркетплейс Узбекистана. Uzum — это экосистема цифровых сервисов. Она объединяет сервисы, которые повышают качество жизни, открывая жителям всех регионов страны доступ к миллионам товаров с быстрой доставкой, современным финансовым решениям, а также платформе для развития бизнеса. Миссия компании — дать миллионам людей доступ к удобным современным сервисам и миллионам товаров, а также дать предпринимателям Узбекистана новые возможности для развития бизнеса.)Владимир Утратенко

Рассказ о том, как в Мамбе происходило внедрение nosql решений: от выбора и тестирования конкретных реализаций до написания собственного nosql сервера на базе встраиваемой nosql базы данных от Google — leveldb.

О том, с какими проблемами пришлось столкнуться во время эксплуатации конкретных nosql решений, и как пришлось их преодолевать.

Опыт использования nosql серверов: tokyotyrant, kyototycoon, а также собственного сервера на базе движка leveldb. Нагрузка на железо в реальных условиях при использовании Nosql в несколько тысяч запросов на демон с десятка разных серверов. Выбор среди существующих решений — memcachedb, redis, kyototycoon, tokyotyrant, а также сравнение встраиваемых nosql движков — tokyocabinet, kyotocabinet, leveldb.

Тестирование nosql решений с помощью brutis, одновременный запуск на нескольких серверах. Перекрёстная репликация и бэкап со слейвов. Как теоретические расчёты нагрузки оказываются неверными из-за ограничений дисковой подсистемы — постраничное обращение к диску при малой длине хранимых значений. Мониторинг nosql решений в php приложении с помощью BTP. Расширение стандартного интерфейса nosql (get/set/delete) и использование упакованных данных для атомарного изменения нескольких значений сразу.