Сегментирование (базы данных)
- 1 year ago
- 0
- 0
MongoDB — документоориентированная система управления базами данных , не требующая описания схемы таблиц. Считается одним из классических примеров NoSQL -систем, использует JSON -подобные документы и схему базы данных. Написана на языке C++ . Применяется в веб-разработке, в частности, в рамках JavaScript -ориентированного стека MEAN .
Система поддерживает ad-hoc -запросы: они могут возвращать конкретные поля документов и пользовательские JavaScript -функции. Поддерживается поиск по регулярным выражениям. Также можно настроить запрос на возвращение случайного набора результатов .
Имеется поддержка индексов .
Система может работать с набором реплик , то есть содержать две или более копии данных на различных узлах. Каждый экземпляр набора реплик может в любой момент выступать в роли основной или вспомогательной реплики. Все операции записи и чтения по умолчанию осуществляются с основной репликой. Вспомогательные реплики поддерживают в актуальном состоянии копии данных. В случае, когда основная реплика дает сбой, набор реплик проводит выбор, которая из реплик должна стать основной. Второстепенные реплики могут дополнительно являться источником для операций чтения.
Система масштабируется горизонтально , используя технику сегментирования объектов баз данных — распределение их частей по различным узлам кластера. Администратор выбирает ключ сегментирования, который определяет, по какому критерию данные будут разнесены по узлам (в зависимости от значений хэша ключа сегментирования). Благодаря тому, что каждый узел кластера может принимать запросы, обеспечивается балансировка нагрузки .
Система может быть использована в качестве файлового хранилища с балансировкой нагрузки и репликацией данных (функция 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». Существуют продукты и сторонние проекты, которые предлагают инструменты с графическим интерфейсом для администрирования и просмотра данных.
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
.
10 марта 2022 года MongoDB предупредила своих пользователей в России и Белоруссии, что их данные, которые хранятся на платформе MongoDB Atlas (облачный вариант базы, поддерживаемый AWS, Microsoft Azure, и Google Cloud Platform), будут уничтожены .
Для управления и администрирования системы базы данных могут быть установлены следующие команды: