Устанавливаем mongoDB на CentOS
Создано Евгений Злобин в января 13, 2010Судя по отзывам, довольно шустрая документо-ориентированная СУБД (офф. сайт), которая может перекрыть 80% всех требований. Из недостатков стоит выделить отсутствие fulltext индексирования. Зато большим преимуществом будет являться скорость работы. Как и в большинстве СУБД используется принцип B-TREE. Подробнее по тестам, графикам производительности можно почитать на хабре.
Провозился пол дня, попутно консультируясь с другом по поводу того как всё это ставить. И решил написать статью в блог, глядишь – кому и пригодится, да и сам могу спустя время кое-чего подзабыть, а так запись останется как подсказка. В качестве подопытного использовался CentOS 5.3 64bit.
Перейдем к установке. Качаем с гитхаба mongo driver, в моём случае это драйвер для php.
http://github.com/mongodb/mongo-php-driver/tree/master
Распаковываем и устанавливаем его:
tar zxvf mongodb-mongodb-php-driver-.tar.gz
cd mongodb-mongodb-php-driver-
phpize
./configure
sudo make install
если всё прошло успешно, то переносим в php/modules/ файл mongo.so, который лежит в директории, куда был распакован сам монго. Пропишем в настройках php конфиги монго. Определить где находятся настройки php можно через shell
whreis php
обычно это /etc/php.ini прописываем там
extension=mongo.so
и
[mongo]
mongo.auto_reconnect = Off
mongo.allow_persistent = On
mongo.max_persistent = -1
mongo.max_connections = -1
mongo.default_host = localhost
mongo.default_port = 27017
mongo.chunk_size = 262400
перезапускаем апач
service httpd restart
выводим инфу:
<?php
phpinfo();
?>
если всё прошло успешно, то должно появиться что-то наподобии этого
Теперь разберемся с самим серваком mongo. Заходим снова в shell и прописываем там:
# Директория по умолчанию для хранения БД
$ mkdir -p /data/db
# Используем курл, для получения
$ curl -O http://downloads.mongodb.org/linux/mongodb-linux-x86_64-latest.tgz
# распаковываем
$ tar xzf mongodb-linux-x86_64-latest.tgz
Теперь заходим в директорию, куда установился mongo. В моём случае это:
/root/mongodb-linux-x86_64-2010-01-12/bin/
запускаем демона ./mongod – он у нас будет обрабатывать все команды В другом терминале запускаем сам mongo ./mongo
Для теста напишем во втором терминале:
db.foo.save( { a : 1 } )
В певом терминале должно появиться что-то подобное этому:
Tue Jan 12 15:52:37 waiting for connections on port 27017
Tue Jan 12 15:52:37 web admin interface listening on port 28017
Tue Jan 12 15:57:20 allocating new datafile /data/db/test.ns, filling with zeroes…
Tue Jan 12 15:57:20 done allocating datafile /data/db/test.ns, size: 16MB, took 0.135 secs
Tue Jan 12 15:57:20 allocating new datafile /data/db/test.0, filling with zeroes…
Tue Jan 12 15:57:21 done allocating datafile /data/db/test.0, size: 64MB, took 0.531 secs
Tue Jan 12 15:57:21 building new index on { _id: ObjId(000000000000000000000000) } for test.foo…
Tue Jan 12 15:57:21 Buildindex test.foo idxNo:0 { name: «_id_», ns: «test.foo», key: { _id: ObjId(000000000000000000000000) } }
Tue Jan 12 15:57:21 done for 0 records 0.034secs
Tue Jan 12 15:57:21 insert test.foo 704ms
Теперь давайте протестируем наш php драйвер. Создадим какой-нибудь php файл и пропишем в нем
<?php
$mongo = new Mongo (’127.0.0.1′, true, true);
var_dump($mongo);
?>
На экране должно высветится:
object(Mongo)#1 (5) {
["connected"]=>
bool(true)
["server":protected]=>
string(9) «127.0.0.1″
["username":protected]=>
NULL
["password":protected]=>
NULL
["persistent":protected]=>
string(0) «»
}
Вот и всё.



Поставил к себе на vps. Сижу, играюсь. Пока нравится: работает шустро, не падает (у меня не получилось обычными методами уронить ее).
JSON обмен тоже радует – выдаю напрямую в JS, без каких-либо прослоек.
Илюх, расскажи про обычные методы. Думаю, будет интересно
Создавал ключ, там же создавал для него мьютекс, читал ключ, удалял мьютекс, перезаписывал ключ, удалял ключ – все это во много потоков много раз. Имитировал many connections.
Спасибо за помощь, очень нужная инструкция. Ее надо в книгу поместить.
Тоже с ней работает. Забавная штучка. Из шарпа циклом миллион объектов – 28 минут работала, но воткнула.