Краткое описание

MongoDB — написанная на языке C++ документоориентированная NoSQL система управления базами данных с открытым исходным кодом, не требующая описания схемы таблиц (schemaless).

MongoDB имеет следующие уровни представления данных:

  1. Документ - JSON-объект имеющий произвольное число полей. Поля могуть хранить как простве значение, так к воженные объекты и массивы.
  2. Коллекция (таблица)- однотипные документы хранятся в отдельной коллекции. Документы в коллекции могуть быть проиндекированы. Доступ к докумениту возможен как по ключу, так и по значению полей.
  3. База данных - набор коллекций.

Поддержка MongoDB реализована для большинства языков программирования: C, C++, C#, Java, Node.js, Perl, PHP, Python, Ruby, Scala.

Отличия MongoDB от реляционных баз данных:

  • Не поддерживаются транзации. Атомарность гарантируется только на уровне целого документа, то есть частичного обновления документа произойти не может.
  • Отсутствие механизма «изоляции». Любые данные, которые считываются одним клиентом, могут параллельно изменяться другим клиентом.

Преимущества MongoDB перед реляционными базами:

  • Поддержка горизонтального масштабирования с репликацией данных. Данные могут храниться на произвольном числе серверов. Репликация обеспечивает отказоустойчивость системы с поддержкой функционала при выходе узлов из строя.
  • Формат хранения данных (документ) близок к формату представления данных в языках программирования (объектов) не требуется сложных и дорогостоящих запросов для получения нужного объекта.
  • Поддержка операций MapReduce для массовой параллельной обработки данных.

Пример использования

Работа с MongoDB через СУБД Navicat

MongoDB

«Для тех, кто предпочитает один раз увидеть»

Для установки mongoDB удобнее всего воспользоваться docker-образом MongoDB.

Запуск сервера производится командой:

docker run --name mongodb -p 27017:27017 -d mongo

Для работы с сервером mongo в конейнере рекомендуется запустить в рамках запущенного контейнера mongo-shell командой:

docker exec -it mongodb mongo

Программное обеспечение

Ресурсы

  • Getting Started with MongoDB (MongoDB Shell Edition) — MongoDB Documentation
  • Руководство по MongoDB — PROSELYTE Записки задумчивого программиста
  • Руководство по безопасности MongoDB — security-corp.org
  • В качестве практических заданий для лабораторных работ можно использовать Задания к лабораторной работе 5 MongoDB. На данной странице приведены как тестовые наборы данных, так и список заданий по выполнению операций на данных наборах данных.
    Примеры выполнения CRUD и aggregation операций над указанными в предыдущем разделе наборами данных приведены на страницах:
  • Команды CRUD в MongoDB — github.сom
  • Aggregation Framework в MongoDB — github.сom
  • Перейти