MongoDB

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
MongoDB
Logo-mongoDB.png
Логотип MongoDB
Тип

Документо-ориентированная СУБД

Разработчик

10gen

Написана на

C++

Операционная система

Кроссплатформенное программное обеспечение

Первый выпуск

2009 год (2009)

Последняя версия

2.6.1 (5 мая 2014)

Лицензия

GNU AGPL (СУБД) и Apache License (драйверы)

Сайт

www.mongodb.org

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

Философия[править | править вики-текст]

При разработке авторы исходили из необходимости специализации баз данных, благодаря чему им удалось отойти от принципа «один размер подо всё». За счёт минимизации семантики для работы с транзакциями появляется возможность решения целого ряда проблем, связанных с недостатком производительности, причём горизонтальное масштабирование, по мнению авторов, становится проще. Используемая модель документов хранения данных (JSON/BSON) проще кодируется, проще управляется (в том числе за счёт применения так называемого «бессхемного стиля» (англ. schemaless style)[1]), а внутренняя группировка релевантных данных обеспечивает дополнительный выигрыш в быстродействии.

MongoDB, по мнению разработчиков, должна заполнить разрыв между простейшими NoSQL-СУБД, хранящими данные в виде «ключ — значение» (простыми и легко масштабируемыми, но обладающими минимальными функциональными возможностями) и большими реляционными СУБД (со структурными схемами и мощными запросами).

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

Основные возможности:

Архитектура[править | править вики-текст]

СУБД управляет наборами JSON-подобных документов, хранимых в двоичном виде в формате BSON. Хранение и поиск файлов в MongoDB происходит благодаря вызовам протокола GridFS. Подобно другим документо-ориентированным СУБД (CouchDB и др.), MongoDB не является реляционной СУБД. Среди других отличий от традиционных реляционных СУБД:

  • Отсутствует оператор «join». Обычно данные могут быть организованы более денормализованным способом, но на разработчиков ложится дополнительная нагрузка по обеспечению непротиворечивости данных.
  • Нет такого понятия, как «транзакция». Атомарность гарантируется только на уровне целого документа, то есть частичного обновления документа произойти не может.
  • Отсутствует понятие «изоляции». Любые данные, которые считываются одним клиентом, могут параллельно изменяться другим клиентом.

В MongoDB реализована асинхронная репликация в конфигурации «ведущий — ведомый» (англ. master — slave), основанная на передаче журнала изменений с ведущего узла на ведомые. Поддерживается автоматическое восстановление в случае выхода из строя ведущего узла. Серверы с запущенным процессом mongod должны образовать кворум, чтобы произошло автоматическое определение нового ведущего узла. Таким образом, если не используется специальный процесс-арбитр (процесс mongod, только участвующий в установке кворума, но не хранящий никаких данных), количество запущенных реплик должно быть нечётным.

История разработки[править | править вики-текст]

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

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[2].

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

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

Литература[править | править вики-текст]

См. также[править | править вики-текст]

Ссылки[править | править вики-текст]

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