MongoDB

редактировать

MongoDB
MongoDB Logo.svg
Подключение к MongoDB Shell.png Подключение к MongoDB Shell
Разработчики) MongoDB Inc.
Первый выпуск 11 февраля 2009 г. ; 12 лет назад ( 2009-02-11)
Стабильный выпуск 5.0  Отредактируйте это в Викиданных / 13 июля 2021 г.,2 месяца назад
Репозиторий
Написано в C ++, JavaScript, Python
Операционная система Windows Vista и новее, Linux, OS X 10.7 и новее, Solaris, FreeBSD
Доступно в английский
Тип Документно-ориентированная база данных
Лицензия Общественная лицензия на стороне сервера
Веб-сайт www.mongodb.com   Отредактируйте это в Викиданных

MongoDB - это кроссплатформенная документно-ориентированная база данных с доступным исходным кодом. Классифицируемая как программа базы данных NoSQL, MongoDB использует документы, подобные JSON, с дополнительными схемами. MongoDB разработан MongoDB Inc. и лицензируется в соответствии с публичной лицензией на стороне сервера (SSPL).

СОДЕРЖАНИЕ
  • 1 История
  • 2 Основные особенности
    • 2.1 Специальные запросы
    • 2.2 Индексирование
    • 2.3 Репликация
    • 2.4 Балансировка нагрузки
    • 2.5 Хранение файлов
    • 2.6 Агрегация
    • 2.7 Выполнение серверного JavaScript
    • 2.8 Ограниченные коллекции
    • 2.9 транзакции
  • 3 издания
    • 3.1 Сервер совместной работы MongoDB
    • 3.2 Корпоративный сервер MongoDB
    • 3.3 Атлас MongoDB
  • 4 Архитектура
    • 4.1 Доступность языка программирования
    • 4.2 Бессерверный доступ
    • 4.3 Управление и графический интерфейс
  • 5 Лицензирование
    • 5.1 Сервер совместной работы MongoDB
  • 6 отчетов об ошибках и критика
    • 6.1 Безопасность
    • 6.2 Техническая критика
  • 7 Конференция MongoDB
  • 8 См. Также
  • 9 ссылки
  • 10 Библиография
  • 11 Внешние ссылки
История
См. Также: MongoDB Inc. § История

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

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

MongoDB - это глобальная компания со штаб-квартирой в США в Нью-Йорке и международной штаб-квартирой в Дублине.

30 октября 2019 года MongoDB объединилась с Alibaba Cloud, которая предложит своим клиентам решение MongoDB-as-a-service. Клиенты могут использовать управляемое предложение из глобальных центров обработки данных BABA.

История выпусков MongoDB
Версия Дата выхода Примечания к функциям Ссылки
1.0 Февраль 2009 г.
1.2 Декабрь 2009 г.
  • больше индексов на коллекцию
  • более быстрое создание индекса
  • уменьшение карты
  • сохраненные функции JavaScript
  • настраиваемое время fsync
  • несколько мелких функций и исправлений
1.4 Март 2010 г.
1.6 Август 2010 г.
  • готовый к производству шардинг
  • наборы реплик
  • поддержка IPv6
1,8 Март 2011 г.
2.0 Сентябрь 2011 г.
2.2 Август 2012 г.
2,4 Март 2013 г.
  • улучшенная геопространственная поддержка
  • перейти на движок V8 JavaScript
  • улучшения безопасности
  • текстовый поиск (бета)
  • хешированный индекс
2,6 8 апреля 2014 г.
  • улучшения агрегирования
  • интеграция с текстовым поиском
  • улучшения механизма запросов
  • новый протокол операции записи
  • улучшения безопасности
3.0 3 марта 2015 г.
  • Поддержка механизма хранения WiredTiger
  • подключаемый механизм хранения API
  • SCRAM-SHA-1 аутентификация
  • улучшенная функциональность объяснения
  • MongoDB Ops Manager
3.2 8 декабря 2015 г.
  • Механизм хранения WiredTiger по умолчанию
  • улучшения репликации выборов
  • конфигурируйте серверы как наборы реплик
  • читать
  • проверка документов
  • перенесен с V8 на SpiderMonkey
3,4 29 ноября 2016 г.
  • линеаризуемые проблемы чтения
  • Просмотры
  • сопоставление
3,6 Ноябрь 2017 г.
4.0 Июнь 2018 г.
  • сделки
4.2 Август 2019 г.
4.4 Июль 2020 г.
4.4.5 Апрель 2021 г.
4.4.6 Май 2021 г.
5.0 13 июля 2021 г.
  • ориентированный на будущее API с поддержкой версий
  • шифрование на уровне поля на стороне клиента
  • живой перезарядка
  • поддержка временных рядов
Основные особенности

Специальные запросы

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

Индексирование

Поля в документе MongoDB можно проиндексировать с помощью первичных и вторичных индексов или индекса.

Репликация

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

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

Балансировка нагрузки

MongoDB масштабируется по горизонтали с использованием сегментирования. Пользователь выбирает ключ осколка, который определяет, как будут распределяться данные в коллекции. Данные разбиваются на диапазоны (на основе ключа сегментов) и распределяются по нескольким сегментам. (Осколок - это мастер с одной или несколькими репликами.) В качестве альтернативы ключ осколка может быть хеширован для сопоставления с осколком, что обеспечивает равномерное распределение данных.

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

Файловое хранилище

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

Эта функция, называемая файловой системой сетки, включена в драйверы MongoDB. MongoDB предоставляет разработчикам функции для работы с файлами и контентом. Доступ к GridFS можно получить с помощью утилиты mongofiles или плагинов для Nginx и lighttpd. GridFS делит файл на части или куски и сохраняет каждый из этих фрагментов как отдельный документ.

Агрегирование

MongoDB предоставляет три способа выполнения агрегации: конвейер агрегации, функцию уменьшения карты и одноцелевые методы агрегации.

Map-reduce может использоваться для пакетной обработки данных и операций агрегирования. Но согласно документации MongoDB, конвейер агрегации обеспечивает лучшую производительность для большинства операций агрегирования.

Платформа агрегации позволяет пользователям получать результаты, для которых используется предложение SQL GROUP BY. Операторы агрегации могут быть объединены в конвейер - аналогично конвейеру Unix. Платформа агрегации включает оператор $ lookup, который может объединять документы из нескольких коллекций, а также статистические операторы, такие как стандартное отклонение.

Выполнение серверного JavaScript

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

Закрытые коллекции

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

Сделки

MongoDB утверждает, что поддерживает транзакции ACID с несколькими документами с момента выпуска 4.0 в июне 2018 года. Это утверждение оказалось неверным, поскольку MongoDB нарушает изоляцию моментальных снимков.

Редакции

Сервер совместной работы MongoDB

MongoDB Community Edition бесплатна и доступна для Windows, Linux и OS X.

Корпоративный сервер MongoDB

MongoDB Enterprise Server - это коммерческая версия MongoDB, доступная как часть подписки MongoDB Enterprise Advanced.

Атлас MongoDB

MongoDB также доступна как полностью управляемая служба по запросу. MongoDB Atlas работает на AWS, Microsoft Azure и Google Cloud Platform.

Архитектура

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

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

Бессерверный доступ

Управление и графические интерфейсы

Вставка записи в MongoDB с помощью Robomongo 0.8.5

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

Лицензирование

Сервер совместной работы MongoDB

По состоянию на октябрь 2018 года MongoDB выпускается под общедоступной лицензией на стороне сервера (SSPL), лицензией, разработанной в рамках проекта. Она заменяет Стандартную общественную лицензию GNU Affero и почти идентична Стандартной общественной лицензии GNU версии 3, но требует, чтобы лица, делающие программное обеспечение общедоступным как часть «службы», сделали весь исходный код службы доступным по этой лицензии. SSPL был отправлен на сертификацию в Open Source Initiative, но позже отозван. Языковые драйверы доступны по лицензии Apache. Кроме того, MongoDB Inc. предлагает проприетарные лицензии для MongoDB. Последними версиями, имеющими лицензию AGPL версии 3, являются 4.0.3 (стабильная) и 4.1.4.

MongoDB была удалена из дистрибутивов Debian, Fedora и Red Hat Enterprise Linux в связи с изменением лицензирования. Fedora определила, что версия 1 SSPL не является лицензией на свободное программное обеспечение, потому что она «намеренно создана так, чтобы быть агрессивно дискриминационной» по отношению к коммерческим пользователям.

Отчеты об ошибках и критика

Безопасность

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

В сентябре 2017 г.; обновлено в январе 2018 года, в официальном ответе Дави Оттенхеймер, руководитель службы безопасности продуктов в MongoDB, заявил, что MongoDB приняла меры для защиты от этих рисков.

Начиная с выпуска MongoDB 2.6, двоичные файлы из официальных пакетов MongoDB RPM и DEB по умолчанию привязываются к localhost. Начиная с MongoDB 3.6, это поведение по умолчанию было распространено на все пакеты MongoDB на всех платформах. В результате все сетевые подключения к базе данных будут запрещены, если это явно не настроено администратором.

Техническая критика

В некоторых сценариях сбоя, когда приложение может получить доступ к двум отдельным процессам MongoDB, но эти процессы не могут получить доступ друг к другу, MongoDB может вернуть устаревшие чтения. В этом сценарии MongoDB также может откатить подтвержденные записи. Эта проблема устранена, начиная с версии 3.4.0, выпущенной в ноябре 2016 г. (с последующим переносом на v3.2.12).

До версии 2.2 блокировки реализовывались для каждого серверного процесса. В версии 2.2 блокировки были реализованы на уровне базы данных. Начиная с версии 3.0, были представлены подключаемые механизмы хранения, и каждый механизм хранения может реализовывать блокировки по-разному. В MongoDB 3.0 блокировки реализованы на уровне сбора для механизма хранения MMAPv1, в то время как механизм хранения WiredTiger использует протокол оптимистичного параллелизма, который эффективно обеспечивает блокировку на уровне документа. Даже в версиях до 3.0 одним из подходов к увеличению параллелизма является использование сегментирования. В некоторых ситуациях чтение и запись приводят к их блокировкам. Если MongoDB предсказывает, что страница вряд ли будет в памяти, операции будут блокировать их во время загрузки страниц. Использование блокировки податливости значительно расширилось в 2.2.

До версии 3.3.11 MongoDB не могла выполнять сортировку на основе сопоставления и была ограничена побайтным сравнением через memcmp, что не обеспечивало правильного упорядочения для многих неанглийских языков при использовании с кодировкой Unicode. Проблема исправлена ​​23 августа 2016 г.

До MongoDB 4.0 запросы к индексу не были атомарными. Документы, которые обновлялись во время выполнения запроса, могли быть пропущены. Введение проблемы чтения моментальных снимков в MongoDB 4.0 устранило это явление.

Хотя MongoDB заявляет в недатированной статье под названием «MongoDB and Jepsen», что их база данных прошла тесты компании Jepsen, занимающейся исследованиями безопасности распределенных систем, которые она назвала «самыми жесткими в отрасли тестами на безопасность, правильность и согласованность данных», Джепсен опубликовал статью в мае 2020 года, в которой говорится что MongoDB 3.6.4 на самом деле провалила их тесты, и что у более новой MongoDB 4.2.6 больше проблем, включая «ретропричинные транзакции», когда транзакция меняет порядок, чтобы при чтении можно было увидеть результат будущей записи. Джепсен отметил в своем отчете, что MongoDB не упомянула эти выводы на странице MongoDB «MongoDB and Jepsen».

Конференция MongoDB

MongoDB Inc. проводит ежегодную конференцию разработчиков, которую называют либо MongoDB World, либо MongoDB.live.

Год Даты Город Место проведения Примечания
2014 г. 23–25 июня Нью-Йорк Отель Sheraton Times Square
2015 г. 1-2 июня Нью-Йорк Отель Sheraton Times Square
2016 г. 28–29 июня Нью-Йорк Нью-Йорк Хилтон Мидтаун
2017 г. 20–21 июня Чикаго Хаятт Ридженси Чикаго Первый год не в Нью-Йорке
2018 г. 26–27 июня Нью-Йорк Нью-Йорк Хилтон Мидтаун
2019 г. 17-19 июня Нью-Йорк Нью-Йорк Хилтон Мидтаун
2020 г. 4-6 мая онлайн Личное мероприятие отменено, а конференция полностью проведена онлайн из -за пандемии COVID-19
2021 г. 13–14 июля онлайн Конференция проводится онлайн в связи с пандемией COVID-19
2022 г. 7–9 июня Нью-Йорк
Смотрите также
использованная литература
Библиография
  • Банкир, Кайл (28 марта 2011 г.), MongoDB в действии (1-е изд.), Мэннинг, стр. 375, ISBN   978-1-935182-87-0
  • Ходоров, Кристина; Дирольф, Майкл (23 сентября 2010 г.), MongoDB: The Definitive Guide (1-е изд.), O'Reilly Media, стр. 216, ISBN   978-1-4493-8156-1
  • Пиртл, Митч (3 марта 2011 г.), MongoDB для веб-разработки (1-е изд.), Addison-Wesley Professional, стр. 360, ISBN   978-0-321-70533-4
  • Хокинс, Тим; Plugge, Eelco; Мембре, Питер (26 сентября 2010 г.), Полное руководство по MongoDB: База данных NoSQL для облачных и настольных вычислений (1-е изд.), Apress, стр. 350, ISBN   978-1-4302-3051-9
внешние ссылки
Последняя правка сделана 2023-04-05 05:11:29
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте