Очередь сообщений на node.js и memcacheq
Столкнулся с необходимостью использования очередей сообщений в текущем проекте. Знаю что есть готовые решения, но я все же решил написать свой небольшой велосипед. Итак, поехали...
Хранилища данных в Node.JS. MemcacheDB
Сегодня я расскажу, как начать работать с MemcacheDB в Node.JS
Пишем модель для Redis
В целях изучения Redis и nodejs, давайте напишем небольшую модель.
Итак, задача
Для примера, пусть мы пишем бота, который посещает веб страницы. А сохранять мы будем адреса сайтов и время когда заходили на сайт.
Итак, давайте приступим. Первое что нам нужно это скачать модуль для работы с Redis в nodejs, рекомендуемый к использованию модуль лежит по адресу: https://github.com/mranney/node_redis и его легко можно установить из менеджера пакетов nodejs выполнив команду:
npm install redisАвтор библиотеки рекомендует так же использовать hiredis, библиотека для разбора ответов Redis, что увеличивает производительность модуля. Устанавливать все так же просто из менеджера пакетов nodejs.
npm install redis hiredisAPI библиотеки практически полностью повторяет API Redis, поэтому можно сразу смотреть список команд Redis и использовать их.
Хранилища данных в Node.js: MySQL
В последнем проекте появилась необходимость организации работы Node.JS с MySQL. Для создания данного взаимодействия существует несколько модулей, я решил использовать node-mysql, т.к. он предоставляет все необходимые мне функции.
Хранилища данных в Node.js: Redis
Последний раз я серьёзно заинтересовался Redis после посещения DevConf 2010 — там был очень интересный доклад о возможностях и применении этой системы. Теперь, когда API Ноды несколько устаканилось и коннекторы пришли в более-менее стабильный вид, можно поэкспериментировать и с Redis, помимо прочих хранилищ
Хранилища данных в Node.js: MySQL через DBSlayer
Хотя Node отлично справляется с большим количеством одновременных запросов и висящих соединений, для больших сервисов иногда имеет смысл не переписывать всё на Node, а перенести на неё только критичные части кода: в частности, все связанное с Comet и асинхронной доставкой контента. Сегодня я покопаюсь в DBSlayer и псмотрю как можно ускорить с помощью Node обычный сайт на Drupal.
DBSlayer был создан в недрах New York Times как средство абстракции и балансирования нагрузки на БД. Подробнее можно почитать на сайте NYTimes. DBSlayer предоставляет API на основе JSON. Т.к. нативного драйвера для MySQL нет, для доступа к MySQL-серверам из Node используется именно этот сервер.
Хранилища данных в Node.js: Riak
Если Вы следите за записями о Node.js в Твиттере или блогах, Вам наверняка случалось слышать о связке Node.js + Riak. Я тоже недавно узнал об этом хранилище, и мне стало интересно, что оно из себя представляет и чем выделяется в ряду остальных.
Если коротко, Riak — распределённое key-value хранилище с eventual consistency (изменения рано или поздно распространяются по всему кластеру) и запросами на основе map/reduce.
Использование mapReduce в MongoDB
Ещё одна полезная штука в MongoDB — возможность делать агрегатные запросы с помощью MapReduce. Но в отличии от CouchDB, здесь map-reduce используется только когда это явно необходимо. Сейчас я попробую воспользоваться этой фичей.
Все дальнейшие действия будут проводиться в консоли. Любой консольной команде можно найти соответствие в коннекторе Node.js.
Ссылки на объекты других коллекций в MongoDB
В MongoDB есть хорошая фича: объекты в одной коллекции могут ссылаться на объекты в другой. Товарищ zit в комментариях попросил показать, как этим пользоваться. Вот краткое руководство
Хранилища данных в Node.js: MongoDB
MongoDB — документо-ориентированная база данных, нацеленная на удобную кластеризацию и написанная на C++. Сами разработчики утверждают, что она находится как раз посередине между key-value stores и традиционными реляционными БД. Я решил её покопать после того как увидел пост о создании блога на основе Express + MongoDB.
Документы в Mongo хранятся в виде JSON-подобных объектов, так что в JavaScript с ними работать довольно удобно. Кстати, для предварительного изучения MongoDB есть вот такая интерактивная веб-консоль со встроенным tutorial.


