Что это такое? MongoDB входит в топ-5 востребованных СУБД, гарантируя безопасность, доступность и масштабируемость. Относится к документированным системам управления, в которых для хранения используется JSON-формат.
На что обратить внимание? Главное отличие СУБД такого типа в том, что она хранит неструктурированные данные. Информация представлена в виде «поле-значение» и может содержать в себе что угодно: адреса, даты или документы.
В статье рассказывается:
- Устройство MongoDB
- Плюсы и минусы MongoDB
- Отличительные черты MongoDB
- Установка и настройка MongoDB
- Часто задаваемые вопросы о MongoDB
-
Пройди тест и узнай, какая сфера тебе подходит:
айти, дизайн или маркетинг.Бесплатно от Geekbrains
Устройство MongoDB
MongoDB представляет собой документоориентированную нереляционную СУБД. Она распространяется по лицензии SSPL и имеет открытый исходный код.
Разработкой MongoDB занимались специалисты высочайшего уровня. К примеру, они являются основателями компании DoubleClick, которая специализируется на интернет-рекламе. Скорость показа DoubleClick достигала 400 000 объявлений в секунду, что было просто немыслимо в те времена.
Компания была продана Google в 2005 году. После этого команда разработчиков смогла сосредоточиться на новом проекте. В то время базы данных не имели четкой структуры. Информационные фрагменты, которые в них хранились, не были никак между собой связаны. Таким образом, базы были недостаточно гибкими и масштабируемыми. Разработчики создали фирму 10gen, которая затем была названа MongoDB Inc.
Система постоянно совершенствовалась. На данный момент установочные файлы и инструменты для работы с MongoDB 7.0.0 размещены на официальном сайте компании. Их можно скачать абсолютно бесплатно.
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Скачивайте и используйте уже сегодня:
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка
Только проверенные нейросети с доступом из России и свободным использованием
ТОП-100 площадок для поиска работы от GeekBrains
Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽
В чем же отличие MongoDB от обычных реляционных баз данных? Последние имеют жестко заданную структуру, которую сложно изменить. В таких базах информация хранится в виде взаимосвязанных таблиц, строки каждой из которых имеют один и тот же набор полей. При этом обработка данных осуществляется при помощи запросов на языке SQL.
Такие базы достаточно наглядны. Однако у них есть один явный недостаток – ограниченность. К примеру, пользователь не может представить информацию в виде двухмерных таблиц, чтобы хранить неструктурированные данные.
MongoDB отличается тем, что в этой системе базы состоят из коллекций и документов, которые представляют собой иерархические структуры. Они содержат в себе пары «ключ — значение» (поля).
Можно сказать, что коллекции в этом случае соответствуют таблицам, а документы – строкам. Вся информация отформатирована в BSON — двоичной кодировке JSON-подобных документов. Система поддерживает данные типа Date и двоичных файлов. В JSON таких возможностей нет.
Читайте также!
У документов отсутствует какая-то строгая структура. Файлы могут содержать различные наборы полей, которые отличаются друг от друга по типу и количеству. К примеру, документ может выглядеть следующим образом:
test> db.smartphones.find()
[
{
_id: ObjectId(«64084a222063b8732a692d5a»),
model: ‘DEXP G450 One’,
color: ‘Blue’,
screen: ‘5 inch’,
year: ‘2021’
}
]
В качестве значений могут использоваться другие документы, которые называют встроенными.
Скачать файлВ реляционных базах данных у строк есть первичный ключ. В MongoDB каждому документу дается уникальный идентификатор (в приведенном примере это _id). Этот идентификатор генерируется автоматически либо устанавливается пользователем.
К примеру, весь этот набор документов входит в коллекцию smartphones:
test> db.smartphones.find()
[
{
_id: ObjectId(«64084a222063b8732a692d5a»),
color: ‘Blue’,
model: ‘DEXP G450 One’,
screen: ‘5 inch’,
year: ‘2021’
},
{
_id: ObjectId(«DEXP»),
model: ‘DEXP G450 One’,
mpn: ‘[MZB0CBJRU]’,
material: ‘plastic’,
year: 2022
},
{
_id: ObjectId(«640f7e114f9f59d9dcda468d»),
model: ‘Xiaomi Redmi Note 10 Pro’,
color: ‘Grey’,
screen: {
diagonal: ‘6.67 inch’,
resolution: ‘2400×1080’,
refresh_rate: ‘120 Hz’
}
}
]
Плюсы и минусы MongoDB
Рассмотрим основные преимущества MongoDB:
- Наличие документоориентированной базы. Информация сохраняется в формате документов. Благодаря этому система становится более гибкой и масштабируемой. Ее проще адаптировать к требованиям бизнеса, чем обычные БД.
- Доступность. СУБД работает со всеми популярными языками программирования. MongoDB можно скачать абсолютно бесплатно.
- Работа с различными типами данных. Это особенно важно, если компании необходимо обрабатывать большие данные, не встраиваемые в одну структуру и собираемые из разных источников.
- Репликация. MongoDB обеспечивает высокую доступность за счет набора реплик, который состоит из 2-х и более экземпляров СУБД.
- Удобство. Система позволяет искать информацию по полям. Кроме того, поддерживаются диапазонные запросы и поиск по регулярным выражениям. Можно также сформировать запросы для возврата конкретных полей в документах.
на курсы от GeekBrains до 29 декабря
- Индексация. Пользователь имеет возможность создавать индексы, чтобы улучшить производительность поиска. Причем проиндексировать можно любое поле. Благодаря этому система работает очень быстро.
- Распределение нагрузки. В этой СУБД применяется концепция шардинга, позволяющая осуществлять горизонтальное масштабирование при помощи разделения данных между несколькими экземплярами баз данных. Система может функционировать сразу на нескольких серверах. При этом нагрузка балансируется. Кроме того, данные могут дублироваться. Все это позволяет системе работать без ошибок даже при возникновении аппаратного сбоя.
- Применение облака. При желании пользователь может быстро подключиться к БД, которая будет правильно сконфигурирована.
Теперь рассмотрим недостатки MongoDB:
- Несоответствие требованиям ACID. Эта СУБД не так хорошо соответствует правилам атомарности,согласованности, изолированности и устойчивости, как реляционные базы данных.
- Сложность транзакций.
- Отсутствие положений о хранимых процедурах или функциях. Из-за этого пользователь не может реализовать какую-либо бизнес-логику на уровне базы данных. В реляционных БД такая возможность есть.
Перечислим некоторые сферы, в которых не рекомендуется применять MongoDB:
- Хранение сильно связанных данных.
- Проекты, в которых заранее установлена модель данных.
- Транзакционные системы, приложения, для которых необходимы транзакции на уровне базы данных (к примеру, банковские приложения).
Отличительные черты MongoDB
Индексация
Пользователь может индексировать данные внутри базы. Это позволяет системе быстрее находить доступ к нужной информации. Для этого данным присваиваются индексы – объекты, в которых содержатся указатели на определенные сведения. Как правило, это конкретные значения и ссылки на них. Индексы позволяют выполнять поиск по БД. При этом пользователю не нужно перебирать всю информацию.
Репликация
Речь идет о работе с так называемыми репликами, которые представляют собой копии БД. Пользователь может сформировать несколько копий базы данных, которые будут связаны между собой.
При этом дубликаты будут размещены на разных серверах. Одна копия является главной, а все остальные – вспомогательными. Сначала изменения вносятся в главную базу, а затем вспомогательные корректируются автоматически. Таким образом, при потере основной копии пользователь может задействовать любую имеющуюся реплику. Это обеспечивает стабильность СУБД. Причем замена выполняется автоматически.
Сегментирование
Это еще один способ хранения БД на нескольких серверах. В этом случае базы разбиваются на несколько сегментов. Затем они распределяются между разными серверами, что обеспечивает баланс нагрузки на мощности. Администратор может установить принцип сегментирования.
Запросы ad hoc
С латинского эта фраза переводятся как «специально для этого». В связи с этим такие запросы иногда называют специальными. Гибкая поддержка разнообразных запросов является одной из важнейших особенностей MongoDB. Система может работать с запросами на поиск по разным полям и функциями JavaScript. Кроме того, СУБД способна возвращать пользовательские функции в ответ на запрос.
Есть поддержка регулярных выражений. Система дает возможность получить в качестве ответа диапазон или случайное значение. При необходимости запросы в MongoDB могут быть очень сложными.
Grid File System (GridFS)
Максимальный размер документа в системе составляет 16 Мб. GridFS позволяет хранить гораздо более массивные данные. Эта технология представляет собой способ сегментирования в пределах документа. Данные большого объема хранятся в двух коллекциях: files и chunks:
- files представляет собой коллекцию, которая содержит информацию о файлах (имена и метаданные, включающие сведения об объеме и некоторых других характеристиках);
- chunks — это коллекция MongoDB, в которой содержатся сами файлы, разделенные не несколько мелких сегментов (размер каждого из них, как правило, составляет 256 Кб, однако это значение может меняться).
Таким образом, технология GridFS позволяет хранить массивные файлы посредством их разделения на несколько частей, чтобы обойти ограничение в 16 Мб.
Установка и настройка MongoDB
Опишем процесс установки и настройки MongoDB:
- Загрузить установочный файл MongoDB с официального сайта. Можно выбрать версию, которая позволит решить конкретные задачи, стоящие перед компанией.
- Установить ПО.
- Сформировать на сервере каталог для хранения БД и журналов. К примеру, ‘C:/data/db’ для Windows или ‘/data/db’ для Linux или macOS. При этом пользователь, который будет запускать сервер, должен иметь права на запись и чтение в созданных папках.
- Запустить сервер. Чтобы это сделать, необходимо воспользоваться командной строкой. Нужно перейти в папку, которая содержит установленную программу, и выполнить команду Пользователь может запустить сервер как фоновую службу. Это позволит ему функционировать в автономном режиме и открываться вместе с запуском ОС. Потребуется создать и настроить файл конфигурации MongoDB. После этого необходимо запустить сервер MongoDB с помощью команды mongod —config <путь_к_файлу_конфигурации>.
- Создать файл конфигурации. С его помощью можно будет установить важные параметры системы. К примеру,порт для подключения к MongoDB, максимальный размер хранилища БД, настройки журналирования и т.д.
Ниже представлен пример конфигурационного файла Linux, который может применяться для настройки сервера:
# путь к папке с базами данных
dbpath = /var/lib/mongodb
# ip-адрес и порт для подключения к серверу
bind_ip = 127.0.0.1
port = 27017
# путь к папке с журналами
logpath = /var/log/mongodb/mongod.log
# уровень журналирования
verbosity = 1
# размер журнального файла в мегабайтах
logrotate = 10
# активация аудита запросов к базе для безопасности
auditDestination = file
auditPath = /var/log/mongodb/audit.log
# включение авторизации и конфигурация пользователей
security:
authorization: enabled
keyFile: /etc/mongodb/keyfile
# некоторые настройки для мониторинга сервера
setParameter:
enableLocalhostAuthBypass: false
enableTestCommands: false
Если же пользователь использует Windows, то он может применить схожую конфигурацию. Однако потребуется ввести другие пути к папкам в зависимости от потребностей и настроек ОС. Необходимо скорректировать настройки конфигурации с учетом потребностей конкретного бизнеса. Вся важная информация по этой теме рассмотрена в официальной документации MongoDB.
Читайте также!
Установив и настроив СУБД, администратор может приступить к ее применению с использованием имеющихся клиентских библиотек и инструментов разработки.
Часто задаваемые вопросы о MongoDB
Где используется MongoDB?
Эта СУБД применяется в GitHub, SourceForge, Foursquare, Bitly, About.me, MTV, CNN, New York Times, Forbes, Disney, EA и многих других организациях.
На какой платформе можно использовать MongDB?
Система написана на языке программирования C++. Это позволяет портировать ее на различные платформы, включая Windows, Linux, MacOS, Solaris. Кроме того, пользователь может загрузить исходный код и собственноручно скомпилировать СУБД. Однако лучше применять библиотеки с официального веб-сайта.
Что нужно сделать для запуска помощи внутри MongoDB?
Пользователь может получить список команд, введя команду db.help() в клиенте MongoDB.
MongoDB представляет собой NoSQL-систему, которая позволяет работать с коллекциями и документами. Это ПО может использоваться на различных платформах. Данное решение обычно применяется приложениями, которые выполняют обработку информации без жёсткой структуры и связей. Базы данных MongoDB отличаются гибкостью и масштабируемостью. Они позволяют обеспечить быструю и надежную работу ПО.