Консультация по продукту 1cloud

Установка и настройка MongoDB и создание СУБД на FreeBSD 11

В данной статье будет рассмотрен процесс установки и настройки СУБД MongoDB на виртуальные сервера под управлением операционной системы FreeBSD 11.

Примечание: на ОС FreeBSD 10 описанные действия приведут к появлению ошибок.

Что это такое?

MongoDB - NoSQL документоориентированная база данных без определенной структуры, предназначена для поддержания баз с разнотипными данными, в разы упрощает выборку и агрегацию данных, поддерживает создание кластеров и репликацию данных. Для тех, кто знаком с javascript не составит труда работать в ней, так как в MongoShell используется именно этот язык.

mongoDB

Установка MongoDB

Важно: все действия выполняются с правами суперпользователя.

После подключения к удаленному серверу по SSH обновите локальную базу бинарных пакетов на последнюю версию:

pkg update -f

All repositories are up to date

При помощи утилиты pkg установите СУБД:

pkg install mongodb

Система попросит ответить на несколько вопросов, например обновление pkg (они служебные и на каждый из них без лишних проблем можно ответить ‘Yes’).

Настройка автозапуска

Чтобы MongoDB автоматически стартовала при запуске VPS необходимо внести изменения в файлы конфигурации сервера.

С помощью текстового редактора, например vi, установленного по-умолчанию, откройте файл:

vi /etc/rc.conf

В конец файла добавьте следующую строку:

mongod_enable="YES"

Содержимое будет выглядеть примерно следующим образом:

Запустите систему управления базами данных:

service mongod start
Starting mongod.

Чтобы проверить статус работы выполните команду:

service mongod statu
mongod is running as pid 825.

Настройка портов

Внести персональные настройки в работу MongoDB можно через конфигурационный файл приложения /usr/local/etc/mongodb.conf.

Например, в целях безопасности можно изменить порт на котором поднимается СУБД со значения по-умолчанию на любой свободный.

Примечание: номер порта по-умолчанию 27017.

Откройте файл:

vi /usr/local/etc/mongodb.conf

Внесите параметр port и измените значение на любое удобное для вас.

net:
port: 1234

Чтобы изменения вступили в силу необходимо перезапустить СУБД:

service mongod restart
Stopping mongod.

Starting mongod.

Подключение к Mongo

Для подключения к MongoDB используйт следующую команду, указав используемый порт:

mongo --port <номер_порта>

Welcome to MondoDB shell

Теперь можно работать с системой управления базами данных.

Создание простой базы данных в MongoDB

Предметная область нашей базы - Строительная компания, которая строит жилые комплексы, включающие в себя здания.

При создании объектам автоматически присваивается уникальный номер _id.

Создадим БД с именем Company:

use Company;
switched to db Company

Создадим 3 коллекции: жилые комплексы, здания и собственники, и зададим структуру каждой таблицы с указанием полей и типов данных.

db.createCollection(
"ApartmentComplex", {
validator: {
name: {$type: "string"},
numberOfBuildings: {$type: "number"},
hospital: {$type: "bool"},
school: {$type: "bool"},
kindergarten: {$type: "bool"},
subway: {$type: "bool"}
}
}
);


db.createCollection("Building", {
validator: {
address: {$type: "string"},
height: {$type: "number"},
idComplex: {$type: "object"}
}
});

db.createCollection("Owner", {
validator: {
{name: {$type: "string"},
{surname: {$type: "string"},
{passportData: {$type: "string"}
}
});

Типы зданий

Далее заполним каждую коллекцию данными.

Добавление комплекса:

db.ApartmentComplex.insert(
{
name: "Cloud",
numberOfBuildings: 12,
hospital: true,
school: false,
kindergarten: false,
subway: true
});

Добавление комлекса

Добавления собственников:

db.Owner.insert(
{
name: "Vasya",
surname: "Ivanov",
passportData: "aaaa #aaaa"
}
);
db.Owner.insert(
{
name: "Ivan",
surname: "Ivanov",
passportData: "aaaa #1111"
}
);

Гибкость языка javascript позволяет при создании записей указывать в качестве аргументов массивы данных, благодаря чему можно привязать уже существующих собственникам к конкретным домам и даже квартирам:

db.Building.insert(
{
address: "Lenina",
idComplex: db.ApartmentComplex.findOne({name: "Cloud"}, {_id: 1}),
height: 120,
sold: false,
floors: [{
number: 12,
apartmentsCount: 10,
sold: true,
apartment: [{
number: 100,
roomsNumber: 3,
square: 65,
idOwner: db.Owner.findOne({passportData: "aaaa #aaaa"}),
price: 20000000
}]
}]
}
);

Address

Чтобы вывести на экран все содержимое коллекции выполните команду:

db.<имя_коллекции>.find();

price

Чтобы найти определенный объект используйте следующую команду:

db.<имя_коллекции>.findOne( { <поле1>: <значение>, <поле2>: <значение>, ... });

id,name,surname,passportData

 

Средняя оценка: 5,0, всего оценок: 1