Работа с MongoDB: Установка и краткое введение в работу с MongoDB
декабря 24, 2011 | Published in MongoDB, Базы данных
MongoDB — это документо-ориентированная база данных. Если в реляционных базах данных мы используем строки (записи) и таблицы, то для MongoDB можно провести параллель с документами и коллекциями.
Преимуществом документо-ориентированных БД вроде MongoDB является то, что документы могут содержать произвольное количество атрибутов, значением некоторых из которых могут быть другие документы, вместо использования записей и индексов — которые используются как ссылки для ассоциирования записей из различных таблиц между собой. Кроме того, MongoDB — очень гибкое и расширяемое решение для хранения данных.
Почему MongoDB
MongoDB — очень популярное и достаточно стабильное решение, которое широко используется в production окружении там, где нужна высокая производительность и где не подходят или плохо подходят реляционные базы данных.
Установка
Просто скачайте подходящую для вашего компьютера и ОС версию MongoDB на оффициальном сайте, распакуйте архив и поместите его содержимое в удобную для вас директорию (у меня это home/desktop/mongodb/). Для хранения данных создайте в той же директории, где находится директория bin с MongoDB папку data/db/.
Что такое документы и коллекции?
Документы в MongoDB напоминают объекты в JavaScript в том смысле, что являются просто набором атрибутов и их значений.
{«blog» : «rubydev.ru», «author» : «Vladimir»}
Документы объединяются в коллекции. Коллекция — это набор документов, причем коллекции в MongoDB являются scheme-free, то есть объекты из одной коллекции могут абсолютно разниться между собой. Пускай вы разрабатываете электронный магазин и используете в нем MongoDB для хранения документов — товаров, естественно у различных товаров могут иметься различные свойства, например у DVD с фильмом может быть ограничение по возрасту, а у книги — количество страниц. Однако несмотря на то, что товары различаются, они все же товары, а не пользователи или заказы или еще какие-либо иные сущности, по этому их не только можно, но и нужно объединять в коллекции для более удобной работы.
Запуск сервера MongoDB
Запуск MongoDB выполняется путем запуска файла mongod и передачи ему пути, где находится файл базы данных (по умолчанию это data/db):
$ ./mongod —dbpath ./data/db
Mon Dec 19 01:22:48
Mon Dec 19 01:22:48 warning: 32-bit servers don’t have journaling enabled by default. Please use —journal if you want durability.
Mon Dec 19 01:22:48
Mon Dec 19 01:22:48 [initandlisten] MongoDB starting : pid=13188 port=27017 dbpath=../data/db 32-bit host=rubydev
Mon Dec 19 01:22:48 [initandlisten]
Mon Dec 19 01:22:48 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
Mon Dec 19 01:22:48 [initandlisten] ** see http://blog.mongodb.org/post/137788967/32-bit-limitations
Mon Dec 19 01:22:48 [initandlisten] ** with —journal, the limit is lower
Mon Dec 19 01:22:48 [initandlisten]
Mon Dec 19 01:22:48 [initandlisten] db version v2.0.2, pdfile version 4.5
Mon Dec 19 01:22:48 [initandlisten] git version: 514b122d308928517f5841888ceaa4246a7f18e3
Mon Dec 19 01:22:48 [initandlisten] build info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_41
Mon Dec 19 01:22:48 [initandlisten] options: { dbpath: «../data/db» }
Mon Dec 19 01:22:48 [initandlisten] waiting for connections on port 27017
Mon Dec 19 01:22:48 [websvr] admin web console waiting for connections on port 28017
Mon Dec 19 01:23:13 [initandlisten] connection accepted from 127.0.0.1:57819 #1
Mon Dec 19 01:23:48 [clientcursormon] mem (MB) res:12 virt:80 mapped:0
Mon Dec 19 01:28:48 [clientcursormon] mem (MB) res:12 virt:80 mapped:0
Как видно по отчету о запуске сервера MongoDB, был запущен еще и простенький веб сервер на 28017 порту с веб интерфейсом для получения некоторых сведений о базе данных (чтобы иметь полностью активный веб интерфейс, mongoid следует запускать с флагом —rest).
Необходимым в изучении MongoDB и его администрировании инструментом будет консоль MongoDB, которую можно запустить запустив файл mongo:
vladimir@rubydev:~/Desktop/mongodb/bin$ ./mongo
MongoDB shell version: 2.0.2
connecting to: test
> 2 + 10
12
Mon Dec 19 01:42:00 Socket say send() errno:32 Broken pipe 127.0.0.1:27017
> function hello(){ print(«Hello») }
Mon Dec 19 01:42:34 trying reconnect to 127.0.0.1
Mon Dec 19 01:42:34 reconnect 127.0.0.1 ok
> hello()
Hello
>
Как видите, MongoDB позволяет использовать в консоли свою реализацию JavaScript. Вы даже можете использовать JavaScript функции по аналогии с хранимыми процедурами в MySQL.