MongoDB

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

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

Разработчик

MongoDB

Написана на

C++

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

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

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

2.4.3 (23 апреля 2013)

Лицензия

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

Сайт

www.mongodb.org

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

Содержание

 [убрать

Философия [править]

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

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

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

Основные возможности данной СУБД:

  • Документо-ориентированное хранилище (простая и мощная JSON-подобная схема данных)
  • Достаточно гибкий язык для формирования запросов
  • Динамические запросы
  • Полная поддержка индексов
  • Профилирование запросов
  • Быстрые обновления «на месте»
  • Эффективное хранение двоичных данных больших объёмов, напр., фото и видео
  • Журналирование операций, модифицирующих данные в БД
  • Поддержка отказоустойчивости и масштабируемости: асинхронная репликация, набор реплик и шардинг
  • Может работать в соответствии с парадигмой MapReduce
  • Полнотекстовый поиск, в том числе на русском языке, с поддержкой морфологии

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

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

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

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

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

6 июня 2012 г. компания разработчик MongoDB, 10gen[en], начала длительное сотрудничество с корпорацией Microsoft, предоставив MongoDB ее облаку Windows Azure. В результате этого партнерства разработчики получили простой установщик для запуска MongoDB на виртуальных машинах Windows Azure. В дополнение к расширению опций облака и хостинга, доступных разработчикам MongoDB, этот шаг объединяет возможности ведущей базы данных NoSQL с технологиями Microsoft, включая Windows Azure, .NET и другие технологии с открытым исходным кодом, которые поддерживает Microsoft.[4]

Прочее [править]

Имеется подробная и качественная документация, большое число примеров и драйверов под популярные языки Java, JavaScript, Node.js, C++, C#, PHP, Python, Perl, Ruby, Grails&Groovy[5].

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

Примечания [править]

Литература [править]

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

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

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