MongoDB

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
MongoDB
MongoDB Logo.svg
Тип документоориентированная СУБД
Разработчик MongoDB Inc.[d]
Написана на C++, C и JavaScript
Операционная система Linux, macOS и Microsoft Windows
Первый выпуск 2009
Последняя версия
Состояние Active
Лицензия Server Side Public License (SSPL), ранее GNU AGPL (СУБД) и Apache License (драйверы)
Сайт mongodb.com
Commons-logo.svg Медиафайлы на Викискладе

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

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

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

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

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

Система масштабируется горизонтально, используя технику сегментирования (англ. sharding) объектов баз данных — распределение их частей по различным узлам кластера. Администратор выбирает ключ сегментирования, который определяет, по какому критерию данные будут разнесены по узлам (в зависимости от значений хэша ключа сегментирования). Благодаря тому, что каждый узел кластера может принимать запросы, обеспечивается балансировка нагрузки.

Система может быть использована в качестве файлового хранилища с балансировкой нагрузки и репликацией данных (функция Grid File System[5]; поставляется вместе с драйверами MongoDB). Предоставляются программные средства для работы с файлами и их содержимым. GridFS используется в плагинах для Nginx[6] и lighttpd.[7] GridFS разделяет файл на части и хранит каждую часть как отдельный документ.[8].

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

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

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

В июне 2018 года (в версии 4.0) добавлена поддержка транзакций, удовлетворяющих требованиям ACID[9].

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

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

У MongoDB есть официальные драйверы для основных языков программирования (Си, C++, C#, Erlang, Go, Haskell, J#, Java, JavaScript, Lisp, Perl, PHP, Python, Ruby, Delphi, Scala). Существует также большое количество неофициальных или поддерживаемых сообществом драйверов для других языков программирования и фреймворков.

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

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

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

Кроме того, компания MongoDB выпускает коммерческую версию СУБД, включающую дополнительные функции (например, интеграцию с SASL, LDAP, Kerberos, SNMP), инструменты управления, мониторинг и резервное копирование, а также поддержку.

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

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

  • хранение и регистрация событий;
  • системы управления документами и контентом;
  • электронная коммерция;
  • игры;
  • данные мониторинга, датчиков;
  • мобильные приложения;
  • хранилище операционных данных веб-страниц (например, хранение комментариев, рейтингов, профилей пользователей, сеансы пользователей).

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

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

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

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

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

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

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

  1. Release 4.2.0 — 2019.
  2. Release Notes — 2019.
  3. MongoDB Find Command.
  4. MongoDB. Introduction to Replication. MongoDB.
  5. MongoDB. GridFS article on MongoDB Developer's Manual. MongoDB.
  6. NGINX plugin for MongoDB source code. GitHub.
  7. lighttpd plugin for MongoDB source code. Bitbucket.
  8. Malick Md. MongoDB overview. Expertstown.
  9. Transactions (неопр.). MongoDB. Дата обращения 12 декабря 2018.
  10. mongodb/mongo (англ.). GitHub. Дата обращения 19 октября 2018.
  11. MongoDB Issues New Server Side Public License for MongoDB Community Server (en-us), MongoDB (16 октября 2018). Дата обращения 19 октября 2018.
  12. OpenNews: СУБД MongoDB переведена на новую лицензию, которая пока не проверена на открытость. opennet.ru. Дата обращения 19 октября 2018.

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

  • Кайл Бэнкер. MongoDB в действии = MongoDB in Action. — ДМК Пресс, 2014. — 394 с. — ISBN 978-5-97060-057-3.
  • Kristina Chodorow. MongoDB: The Definitive Guide, 2nd Edition. — O’Reilly, 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.
  • 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.

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