Практические вопросы использования NOSQL в высоконагруженном проекте (NoSQL-экзотика: TokyoTyrant -> KyotoTycoon -> Google LevelDB)
- Два этапа развития nosql решений в Мамбе. От tokyotyrant к kyototycoon и leveldb.
- Выбор и тестирование nosql решений.
- Проблемы практического использования nosql решений.
- Репликация и бекап nosql баз данных.
- Мониторинг использования nosql в php приложении.
- Нерешённые проблемы современных nosql баз данных.
- Как написать своё nosql решение.
Рассказ о том, как в Мамбе происходило внедрение 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) и использование упакованных данных для атомарного изменения нескольких значений сразу.