Показать меню

MongoDB

MongoDB — документоориентированная система управления базами данных, не требующая описания схемы таблиц. Считается одним из классических примеров NoSQL-систем, использует JSON-подобные документы и схему базы данных. Применяется в веб-разработке, в частности, в рамках JavaScript-ориентированного стека MEAN.

Возможности

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

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

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

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

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

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

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

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

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

Есть официальные драйверы для основных языков программирования (Си, C++, C#, Go, Java, Node.js, Perl, PHP, Python, Ruby, Rust, Scala, Swift). Существует также большое количество неофициальных или поддерживаемых сообществом драйверов для других языков программирования и фреймворков.

Основным интерфейсом к базе данных была командная оболочка «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).. Вслед за этим было начато изучение новой лицензии представителями Open Source Initiative и Free Software Foundation на предмет соответствия определениям открытого и свободного программного обеспечения.

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

Варианты использования

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

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

Компания

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

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

Инструменты

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

  • mongo — интерактивная оболочка, которая позволяет разработчикам и администраторам просматривать, вставлять, удалять и обновлять данные в своей базе данных, также позволяет настроить репликацию, сегментирование, отключить узлы, выполнить JavaScript или любые другие запросы к базе данных;
  • mongostat — инструмент командной строки, который суммирует список статистических данных для исполняемого экземпляра MongoDB, это позволяет визуализировать количество вставок, обновлений, удалений, запросов и команд, а также ресурсопотребление экземпляра;
  • mongotop — инструмент, который предоставляет метод для отслеживания времени, которое считывает или записывает данные в экземпляре. Он также обеспечивает статистику на уровне каждой коллекции;
  • mongosniff — инструмент, обеспечивающий перехват, сохранение и последующее воспроизведение команд, посылаемых в MongoDB;
  • mongoimport и mongoexport — средства импорта и экспорта из JSON, CSV или TSV, поддерживается ряд других форматов;
  • mongodump и mongorestore — инструменты создания резервной копии и восстановления базы данных из неё.
Еще по этой теме:
Словарь данных
Словарь данных
Словарь данных, описанный в Словаре вычислений от IBM (IBM Dictionary of Computing) как «центральное хранилище информации о данных, такой как значение, взаимосвязи с другими данными, их источник,
WebTorrent
WebTorrent
WebTorrent — это пиринговый (P2P) сервис с функцией стриминга, написанный на языке JavaScript и использующий WebRTC. Создан для использования в веб-браузерах, а также в виде отдельной версии
Словарь данных
Словарь данных
Словарь данных, описанный в Словаре вычислений от IBM (IBM Dictionary of Computing) как «центральное хранилище информации о данных, такой как значение, взаимосвязи с другими данными, их источник,
OLAP
OLAP
OLAP (англ. online analytical processing, интерактивная аналитическая обработка) — технология обработки данных, заключающаяся в подготовке суммарной (агрегированной) информации на основе больших
Базы данных почвенных свойств (часть 2)
Базы данных почвенных свойств (часть 2)
Хотя целесообразность создания банка почвенно-гидрофизической информации, учитывая состояние дел с определением ПТФ в нашей стране, немногочисленность факторов, определяющих эти функции, и
Географическая информационная система (ГИС) (часть 3)
Географическая информационная система (ГИС) (часть 3)
Управление. В небольших проектах географическая информация может храниться в виде обычных файлов. Но при увеличении объема информации и росте числа пользователей для хранения, структурирования и
Комментарии:
Добавить комментарий
Ваше Имя:
Ваш E-Mail: