MongoDB

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
MongoDB
Mongo-db-logo.png
Тип документоориентированная СУБД
Разработчик MongoDB Inc.[d]
Написана на C++, C and JavaScript
Операционная система Linux, macOS и Microsoft Windows
Первый выпуск 2009
Последняя версия
Тестовая версия 3.5.2[2] (2017-01-26; 753 дня тому назад)
Состояние Active
Лицензия GNU AGPL (СУБД) и Apache License (драйверы)
Сайт mongodb.com
Commons-logo.svg MongoDB на Викискладе

MongoDB (от англ. humongous — огромный) — документоориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц. Классифицирована как NoSQL, использует JSON-подобные документы и схему базы данных. Написана на языке C++.

Лицензирование и поддержка[править | править код]

MongoDB можно бесплатно получить по общедоступной лицензии Affero (AGPL) GNU. Драйверы для языков программирования находятся под лицензией Apache. В дополнение к этим лицензиям MongoDB Inc. предлагает коммерческую лицензию для MongoDB, которая включает в себя дополнительные функции (например, интеграция с SASL, LDAP, Kerberos, Simple Network Management Protocol и поиска текста Розетта Лингвистика Platform Basis Technology), инструменты управления, мониторинг и резервное копирование, а также поддержку.

Возможности[править | править код]

Ad hoc запросы[править | править код]

Запросы могут возвращать конкретные поля документов и пользовательские JavaScript-функции. Поддерживается поиск по регулярным выражениям. Также можно настроить запрос на возвращение случайного набора результатов.[3]

Индексация[править | править код]

В MongoDB имеется поддержка индексов.

Репликация[править | править код]

MongoDB может работать с набором реплик.[4] Набор реплик состоит из двух и более копий данных. Каждый экземпляр набора реплик может в любой момент выступать в роли основной или вспомогательной реплики. Все операции записи и чтения по умолчанию осуществляются с основной репликой. Вспомогательные реплики поддерживают в актуальном состоянии копии данных. В случае, когда основная реплика дает сбой, набор реплик проводит выбор, который из реплик должен стать основным. Второстепенные реплики могут дополнительно являться источником для операций чтения.

Балансировка нагрузки[править | править код]

MongoDB масштабируется горизонтально, используя шардинг.[5] Пользователь выбирает ключ шарда, который определяет, как данные в коллекции будут распределены. Данные разделятся на диапазоны (в зависимости от ключа шарда) и распределятся по шардам.

Файловое хранилище[править | править код]

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

Эта функция, названная Grid File System,[6] поставляется вместе с драйверами MongoDB. MongoDB предлагает разработчикам функции для работы с файлами и их содержимым. GridFS используется в плагинах для NGINX[7] и lighttpd.[8] GridFS разделяет файл на части и хранит каждую часть как отдельный документ.[9]

Агрегация[править | править код]

Может работать в соответствии с парадигмой MapReduce.

В фреймворке для агрегации есть аналог SQL-инструкции GROUP BY. Операторы агрегации могут быть связаны в конвейер подобно UNIX-конвейрам. Фреймворк так же имеет оператор $lookup для связки документов при выгрузке и статистические операции такие как среднеквадратическое отклонение.

Исполнение JavaScript на стороне сервера[править | править код]

JavaScript может использоваться в запросах, функциях аггрегации (например в MapReduce) и отправлен базе для исполнения.

Коллекции с фиксированным размером[править | править код]

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

Транзакции[править | править код]

В июне 2018 в версии MongoDB 4.0 добавлена поддержка транзакции ACID[10]

Архитектура[править | править код]

Запись записи в MongoDB с Robomongo 0.8.5.

Доступность языка программирования[править | править код]

У MongoDB есть официальные драйверы для основных языков программирования. Существует также большое количество неофициальных или поддерживаемых сообществом драйверов для других языков программирования и фреймворков.

Управление и интерактивный инструментарий[править | править код]

Основным интерфейсом к базе данных была командная оболочка «mongo». С версии MongoDB 3.2 в качестве графической оболочки поставляется «MongoDB Compass». Существуют продукты и сторонние проекты, которые предлагают инструменты с GUI для администрирования и просмотра данных.

Лицензирование[править | править код]

MongoDB доступен бесплатно под лицензией GNU Affero General Public, версия 3. Языковые драйверы доступны под лицензией Apache. Кроме того, MongoDB Inc. предлагает собственные лицензии для MongoDB.

В октябре 2018 года MongoDB Inc. объявила о переходе к более жёсткой по сравнению с AGPL копилефтной лицензии SSPL (Server Side Public License)[11].[12] Вслед за этим было начато изучение новой лицензии представителями Open Source Initiative и Free Software Foundation на предмет соответствия определениям открытого и свободного программного обеспечения[13].

Варианты использования[править | править код]

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

  • Хранение и регистрация событий
  • Для систем управления документами и контентом
  • Электронная коммерция
  • Игры
  • Проблемы с большим объемом показаний
  • Мобильные приложения
  • Хранилище операционных данных веб-страницы
  • Управление контентом
  • Хранение комментариев
  • рейтинги
  • Регистрация пользователя
  • Профили пользователей
  • Сеансы данных
  • и т.д.
  • Проекты, использующие итеративные или гибкие методологии разработки
  • Управление статистикой в ​​реальном времени

MongoDB используется для одного или нескольких из этих случаев несколькими компаниями.

История[править | править код]

Компания программного обеспечения 10gen начала разработку MongoDB в 2007 году как компонент планируемой платформы в качестве сервисного продукта. В 2009 году компания перешла на модель разработки продуктов с открытым исходным кодом, предлагая коммерческую поддержку и другие услуги. 27 августа 2013 года 10gen изменила свое название на MongoDB, Inc.

20 октября 2017 года MongoDB стала публичной компанией, зарегистрированной на NASDAQ в качестве MDB с ценой IPO в размере $24 за акцию.

Инструменты MongoDB[править | править код]

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

Подключение к MongoDB Shell
  • mongo: - интерактивная оболочка, которая позволяет разработчикам и администраторам просматривать, вставлять, удалять и обновлять данные в своей базе данных. Это также позволяет среди других функций репликации данных, настройку осколков, отключить серверы, выполнить JavaScript и все команды, которые могут быть выполнены.
  • mongostat: - инструмент командной строки, который суммирует список статистических данных для исполняемого экземпляра MongoDB. Это позволяет вам визуализировать количество вложений, обновлений, удалений, запросов и команд, но также, сколько памяти используется и как долго база данных была закрыта.
  • mongotop: - это инструмент командной строки, который предоставляет метод для отслеживания времени, которое считывает или записывает данные в экземпляре. Он также обеспечивает статистику на уровне каждой коллекции.
  • mongosniff: - инструмент командной строки, который обеспечивает обнюхивание[что?] в базе данных путем обнюхивания[что?] сетевого трафика в MongoDB и обратно.
  • mongoimport / mongoexport: представляет собой инструмент командной строки , которая облегчает содержание импорта экспорта из JSON, CSV или TSV. Он также может импортировать или экспортировать в другие форматы.
  • mongodump / mongorestore: - инструмент командной строки для создания двоичного образа содержимого базы данных. Эти команды используются для стратегии резервного копирования в MongoDB.

Поддерживаемые языки программирования[править | править код]

У MongoDB есть официальные драйверы для следующих языков программирования:

  • С
  • C ++
  • C # / .NET
  • Erlang
  • Go
  • Haskell
  • J #
  • Java
  • JavaScript
  • Lisp
  • Perl
  • PHP
  • Python
  • Ruby
  • Delphi
  • Scala

Сотрудничество[править | править код]

6 июня 2012 года компания-разработчик MongoDB 10gen[en] начала длительное сотрудничество с корпорацией Microsoft, предоставив MongoDB её облаку Microsoft Azure. В результате этого партнёрства разработчики получили простой установщик для запуска MongoDB на виртуальных машинах Microsoft Azure. В дополнение к расширению опций облака и хостинга, доступных разработчикам MongoDB, этот шаг объединяет возможности ведущей базы данных NoSQL с технологиями Microsoft, включая Microsoft Azure, .NET и другие технологии с открытым исходным кодом, которые поддерживает Microsoft.


Прочее[править | править код]

Имеется подробная и качественная документация, большое число примеров и драйверов под популярные языки и платформы Java, JavaScript, Node.js, C++, C#, PHP, Python, Perl, Ruby, Grails&Groovy[14].

Заявляется, что релиз MongoDB 1.0.0 готов к использованию в производстве как в качестве единичного мастера, так и в связках «ведущий — ведомые». Код этого релиза достаточно стабилен и проверен в промышленной эксплуатации на протяжении 1,5 лет[15]. По возможности MongoDB должна быть развернута минимум на двух серверах, используя репликацию Master/Slave[16]. Это обеспечивает наличие актуальных данных при выходе из строя одной из СУБД.

Примечания[править | править код]

  1. https://github.com/mongodb/mongo/releases/tag/r4.0.4
  2. Core Server Versions. MongoDB.
  3. MongoDB Find Command.
  4. MongoDB. Introduction to Replication. MongoDB.
  5. MongoDB. Introduction to Sharding. MongoDB.
  6. MongoDB. GridFS article on MongoDB Developer's Manual. MongoDB.
  7. NGINX plugin for MongoDB source code. GitHub.
  8. lighttpd plugin for MongoDB source code. Bitbucket.
  9. Malick Md. MongoDB overview. Expertstown.
  10. Transactions (неопр.). MongoDB. Проверено 12 декабря 2018.
  11. mongodb/mongo (англ.). GitHub. Проверено 19 октября 2018.
  12. MongoDB Issues New Server Side Public License for MongoDB Community Server (en-us), MongoDB (16 октября 2018). Проверено 19 октября 2018.
  13. OpenNews: СУБД MongoDB переведена на новую лицензию, которая пока не проверена на открытость. opennet.ru. Проверено 19 октября 2018.
  14. The MongoDB NoSQL Database Blog, Grails in the Land of MongoDB
  15. MongoDB 1.0 GA — первый релиз новой СУБД — Новости GNU/Linux и Open Source (NIXP.RU)
  16. Master-Slave репликация MongoDB

Литература[править | править код]

  • Кайл Бэнкер. MongoDB в действии = MongoDB in Action. — ДМК Пресс, 2014. — 394 с. — ISBN 978-5-97060-057-3.
  • Kristina Chodorow. MongoDB: The Definitive Guide, 2nd Edition. — O'Reilly Media, Inc., 2013. — 432 с. — ISBN 978-1-4493-4468-9.
  • David Hows, Peter Membrey, Eelco Plugge, Tim Hawkins. The Definitive Guide to MongoDB: A complete guide to dealing with Big Data using MongoDB, Third Edition. — Apress, 2015. — 376 с. — ISBN 978-1-4842-1183-0.
  • Eelco Plugge, Peter Membrey, Tim Hawkins. The Definitive Guide to MongoDB: The NoSQL Database for Cloud and Desktop Computing. — Apress, 2010. — 327 с. — ISBN 1-4302-3051-7.
  • Mithun Satheesh; Bruno Joseph D'mello; Jason Krol. Web Development with MongoDB and NodeJS - Second Edition. — Packt Publishing, 2015. — 300 с. — ISBN 978-1-78528-745-9.
  • Steve Hoberman. Data Modeling for MongoDB. — Technics Publications, 2014. — 226 с. — ISBN 978-1-935504-70-2.
  • Mitch Pirtle. MongoDB for Web Development. — Addison-Wesley Professional, 2011. — С. 360. — ISBN 9780321705334.

Ссылки[править | править код]

Сайты и порталы
Прочее