Краткое описание
MongoDB — написанная на языке C++ документоориентированная NoSQL система управления базами данных с открытым исходным кодом, не требующая описания схемы таблиц (schemaless).
MongoDB имеет следующие уровни представления данных:
- Документ - JSON-объект имеющий произвольное число полей. Поля могуть хранить как простве значение, так к воженные объекты и массивы.
- Коллекция (таблица)- однотипные документы хранятся в отдельной коллекции. Документы в коллекции могуть быть проиндекированы. Доступ к докумениту возможен как по ключу, так и по значению полей.
- База данных - набор коллекций.
Поддержка MongoDB реализована для большинства языков программирования: C
, C++
, C#
, Java
, Node.js
, Perl
, PHP
, Python
, Ruby
, Scala
.
Отличия MongoDB от реляционных баз данных:
- Не поддерживаются транзации. Атомарность гарантируется только на уровне целого документа, то есть частичного обновления документа произойти не может.
- Отсутствие механизма «изоляции». Любые данные, которые считываются одним клиентом, могут параллельно изменяться другим клиентом.
Преимущества MongoDB перед реляционными базами:
- Поддержка горизонтального масштабирования с репликацией данных. Данные могут храниться на произвольном числе серверов. Репликация обеспечивает отказоустойчивость системы с поддержкой функционала при выходе узлов из строя.
- Формат хранения данных (документ) близок к формату представления данных в языках программирования (объектов) не требуется сложных и дорогостоящих запросов для получения нужного объекта.
- Поддержка операций MapReduce для массовой параллельной обработки данных.
Пример использования
Работа с MongoDB через СУБД Navicat
«Для тех, кто предпочитает один раз увидеть»
Для установки mongoDB удобнее всего воспользоваться docker-образом MongoDB.
Запуск сервера производится командой:
docker run --name mongodb -p 27017:27017 -d mongo
Для работы с сервером mongo в конейнере рекомендуется запустить в рамках запущенного контейнера mongo-shell командой:
docker exec -it mongodb mongo
Программное обеспечение
Ресурсы
В качестве практических заданий для лабораторных работ можно использовать Задания к лабораторной работе 5 MongoDB. На данной странице приведены как тестовые наборы данных, так и список заданий по выполнению операций на данных наборах данных.
Примеры выполнения CRUD и aggregation операций над указанными в предыдущем разделе наборами данных приведены на страницах:
Команды CRUD в MongoDB — github.сom
Aggregation Framework в MongoDB — github.сom