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

Доклад принят в Программу конференции
Дмитрий Ананьев Дмитрий Ананьев

Рассказ о том, как в Мамбе происходило внедрение 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) и использование упакованных данных для атомарного изменения нескольких значений сразу.