
Различные модели баз данных — SQL и NoSQL — довольно сильно отличаются друг от друга, когда дело доходит до настройки и использования. Но программное обеспечение с открытым исходным кодом MongoDB доказывает, что использование NoSQL-решения не обязательно означает отбрасывание многолетнего опыта, накопленного в области реляционных систем баз данных. Конечно, эта ориентированная на документы база данных с гибким хранением данных сильно отличается от классики вроде MySQL, но есть и много общего, о чем вы можете прочитать в нашем введении в MongoDB. Хотя язык запросов и синтаксис команд MongoDB требуют некоторого времени для ознакомления, у знатоков SQL не должно возникнуть проблем с освоением различий.
В следующем учебнике по MongoDB мы подробно рассмотрим установку, настройку и управление этой современной системой баз данных. В качестве операционной системы в данном примере мы будем использовать Ubuntu.
Шаг 1: установка
В центре загрузки официального сайта MongoDB вы можете найти как бесплатную версию с открытым исходным кодом ‘Community Server’, так и коммерческое корпоративное решение. Первый шаг — найти подходящий установочный файл (бинарный) для вашей системы и загрузить его. Поскольку MongoDB доступна для различных платформ, существует несколько различных вариантов для Windows и Linux, а также для OS X и Solaris.
Если вы используете операционную систему Windows, база данных просто устанавливается в выбранную вами папку с помощью загруженного файла. Пользователи Windows 10 могут использовать версию Windows Server 2008 (64-бит). Пользователям Linux и co. придется скачать архивный файл, разархивировать его и затем установить с помощью менеджера пакетов. В зависимости от вашего дистрибутива, сначала может потребоваться импортировать открытый GPG-ключ MongoDB. Для Ubuntu этот ключ аутентификации является обязательным, что означает, что вы должны выполнить следующую команду:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
Затем следует обновить список менеджера пакетов:
sudo apt-get update
… и установить MongoDB с включенными полезными инструментами управления:
sudo apt-get install -y mongodb-org
Шаг 2: запуск сервера MongoDB
У вас есть возможность изменить стандартную папку установки /var/lib/mongodb и папку журнала /var/log/mongodb в конфигурационном файле/etc/mongod.conf. Следующая команда запустит базу данных:
sudo service mongod start
Если вы используете параметр stop вместо команды start, база данных будет закрыта; для перезагрузки базы данных можно использовать команду restart. Чтобы проверить, была ли MongoDB успешно запущена, просто просмотрите файл журнала /log/mongodb/mongod.log: Строка
[initandlisten] waiting for connections on port <port>
говорит о том, что сервер базы данных запущен и ожидает входящих соединений с портом, заданным в конфигурационном файле (<port>). По умолчанию используется порт 27017.
Шаг 3: запуск клиента
После того как сервер MongoDB запущен, можно запустить соответствующий клиент. Мы используем входящий в комплект клиент командной строки Mongo Shell, который основан на JavaScript и может быть использован для администрирования базы данных, а также для доступа к данным и их обновления. Вы можете запустить клиент с помощью простой команды терминала на той же системе, где запущено приложение MongoDB:
mongo
Mongo Shell автоматически подключится к серверу MongoDB, который уже запущен на локальном хосте и порту 27017. Конечно, вы всегда можете настроить эти параметры подключения по умолчанию с помощью соответствующих параметров. Эти параметры и другие важные опции перечислены в следующей таблице:
Параметр |
Описание функции |
—shell |
Активирует интерфейс оболочки, где вы можете использовать интерактивную оболочку mongo после выполнения команды |
—nodb |
Отключает соединение между оболочкой Mongo Shell и базой данных |
—port <port> |
Определяет порт для соединения |
—host <hostname> |
Определяет хост для соединения |
—help или -h |
Показывает все возможные опции |
—username <имя пользователя> или -u <имя пользователя> |
Если права доступа определены, вы можете использовать эту команду для входа в систему с соответствующим именем пользователя (<username>) |
—password <password> или -p <password> |
Если права доступа определены, вы можете использовать эту команду для ввода соответствующего пароля (<password>). |
Скобки, включенные здесь, не являются частью соответствующего параметра и поэтому не должны появляться в конечной команде. Например, при определении порта 40000 вместо стандартного порта 27017 ваша запись должна выглядеть следующим образом:
mongo --port 40000
Шаг 4: создание базы данных
Как только MongoDB и клиент запущены, вы можете посвятить свое время управлению и редактированию данных. Но сначала необходимо создать базу данных — иначе ваши коллекции и документы будут сохранены в автоматически созданной тестовой базе данных. Создать базу данных можно с помощью команды use. Если вы хотите создать базу данных, например, с именем mydatabase, то команда будет выглядеть следующим образом:
use mydatabase
Команда use также выбирает существующую базу данных MongoDB, которую вы хотите вызвать для обработки данных; с помощью короткой команды db вы можете проверить, какая база данных выбрана в данный момент.
Шаг 5: создание коллекции
Следующим шагом будет создание первой коллекции — связующего элемента для различных BSON-документов, в которых вы будете хранить данные в дальнейшем. Основной синтаксис выглядит следующим образом:
db.createCollection(<name>, { options } )
Команда createCollection содержит два параметра: name (название коллекции) и options (необязательные параметры для настройки коллекции). В опциях вы можете определить, должна ли коллекция быть ограничена в размере (capped: true), и если да, то каким количеством байт (size: <number>) или дополнительно каким количеством документов (max: <number>), например.
Коллекция с именем mycollection, ограничением на количество байт 6 142 800 и максимальным разрешенным количеством документов 10 000 может быть создана с помощью следующей команды (пробелы проставлены для ясности):
db.createCollection ("mycollection", { capped: true,
size: 6142800,
max: 10000 } )
Шаг 6: добавление документов в коллекцию
После создания папки вы можете наполнить коллекцию документами. Это можно сделать тремя различными способами:
- .insertOne()
- .insertMany()
- .insert()
Приведенные выше команды позволяют вставить либо один документ (.insertOne), либо несколько документов одновременно (.insertMany), либо просто вставить столько документов, сколько вы перечислите (.insert). В следующем примере показана простая запись в базе данных, содержащая три части информации: имя, возраст и пол. Этот документ будет храниться в связке mycollection, которую мы создали на шаге 5:
db.mycollection.insertOne(
{
Name: "Name",
Age: 28,
Sex: "female"
}
)
MongoDB автоматически генерирует уникальный идентификатор для этой записи и каждой последующей записи в соответствующей коллекции.
Шаг 7: управление документами
Последний шаг нашего учебника по MongoDB касается базового управления созданными документами. Прежде чем вносить изменения в документ, необходимо сначала вызвать его. Это действие можно выполнить с помощью команды find и расширить ее дополнительными параметрами query filter и projection (уточнение отображаемого результата). Итак, чтобы вызвать документ из предыдущего шага, нам понадобится следующая команда:
db.mycollection.find( { Name: "Name", Age: 28 } )
Если вы хотите обновить этот документ, вам нужно выполнить функцию update. Здесь нужно определить значение, которое вы хотите изменить, выбрать оператор обновления, а затем ввести новое значение. Так, если вы хотите изменить поле возраст в нашем примере, вам нужен оператор $set:
db.mycollection.update(
{ Age: 28 },
{
$set: { Age: 30 }
}
)
Другие операторы обновления можно найти здесь.
Чтобы удалить документ из коллекции, нужно использовать команду remove:
db.mycollection.remove()
Вы также можете удалить отдельные документы из коллекции, определив критерии, например, ID или точные значения, тем самым сигнализируя MongoDB, о каких записях базы данных идет речь. Чем точнее вы определите критерии, тем точнее будет процесс удаления системой базы данных. Команда
db.mycollection.remove( { Age: 28 } )
удалит все записи для значения 28 в поле Возраст. Но вы также можете задать дополнительные параметры, указав базе данных удалить только первую запись, соответствующую этому описанию. Для этого используется так называемый параметр justOne (1):
db.mycollection.remove( { Age: 28 }, 1 )
Дополнительную информацию об администрировании пользователей, настройках безопасности, создании реплик или совместном использовании данных в нескольких системах можно найти в официальной документации на сайте mongodb.com, а также в более подробном учебнике по MongoDB на tutorialspoint.com.