Установка и использование MongoDb

в 7:51, , рубрики: mongodb, nosql, Веб-разработка, метки:

Этот пост может быть полезен тем, кто решил попробовать Mongodb в своем проекте (использует его впервые).

Mongodb может быть хорошим решением (по сравнению с СУБД), если вам нужно хранить объекты со сложной структурой или не однотипные объекты. Также, возможности mapReduce полезны для генерации разнообразной статистики, использование mapReduce может быть гораздо удобнее использования агрегирующих функций и написания процедур в SQL.

Мое знакомство с mongodb началось с The Little mongodb book — хорошего мануала, в котором, тем не менее, не освещаются некоторые моменты, важные для начала разработки на Mongo.

1. Установка mongo. Если устанавливать mongodb на linux (Debian, Centos) через пакетный менеджер (apt-get install mongodb в debian), то будет установлена версия 1.4.4. Вероятнее всего, вы быстро поймете, что ее возможностей недостаточно, и вам нужна версия 2.x. Например, в 1.4.4 отсутствует возможность удалять элементы из массива в документе по критерию, нельзя задать некоторые опции mapReduce (только то, с чем я столкнулась).
Чтобы поставить последнюю версию, можно скачать архив с бинарными файлами с оф. сайта. При этом, чтобы не писать скрипт запуска демона и конфиг, можно сначала поставить mongodb из репозитория, а потом заменить бинарники в /usr/bin на новые (проверено в Debian).

2. Работа с mongodb. Как только ваше приложение с mongo будет работать с какой-либо реальной нагрузкой, вам обязательно потребуется создать индексы для ваших коллекций. Если этого не сделать (или если создать индексы неправильно), процесс mongo быстро займет 100% CPU.

3. Не делайте mapReduce по запросу. Так как это трудоемкая операция, лучше запускать ее из планировщика (crontab).

4. Если вы используете mongo с php, и ведете разработку под Windows, версия драйвера для mongo, который вам нужен, зависит от версии компилятора, которым собран php. Узнать версию компилятора можно, посмотрев вывод phpinfo(). Если в строке Compliler запись типа MSVC6, то и драйвер вам нужен собранный VC6 (для PHP 5.3 — http://downloads.mongodb.org/mongo-latest-php5.3vc6ts.zip). Если поставите не тот драйвер — информация о mongo не появится в phpinfo, а при попытке использовать Mongo получите ошибку "Class 'Mongo' not found".

Удачной работы!

Автор: franny

* - обязательные к заполнению поля