- MongoDB
-
MongoDB
Логотип MongoDBТип Разработчик MongoDB
Написана на Операционная система Последняя версия Лицензия GNU AGPL (СУБД) и Apache License (драйверы)
Сайт MongoDB — документо-ориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц. Написана на языке C++ и распространяется в рамках лицензии Creative Commons.
Содержание
Философия
При разработке авторы исходили из необходимости специализации баз данных, благодаря чему им удалось отойти от принципа «один размер подо всё». За счёт минимизации семантики для работы с транзакциями появляется возможность решения целого ряда проблем, связанных с недостатком производительности, причём горизонтальное масштабирование становится проще. Используемая модель документов хранения данных (JSON/BSON) проще кодируется, проще управляется (в том числе за счёт применения т. н. «бессхемного стиля» (англ. schemaless style)[1]), а внутренняя группировка релевантных данных обеспечивает дополнительный выигрыш в быстродействии. Нереляционный подход весьма удобен для создания баз данных, у которых горизонтальное масштабирование подразумевает разворачивание на множестве машин. Возможность обеспечивать наилучшую производительность должна существовать параллельно с поддержкой более обширной функциональности, чем это позволяет использование пар «ключ-значение» (в чистом виде). Технология баз данных должна работать везде, начиная с серверов пользователя и виртуальных машин и заканчивая облачными технологиями[2].
MongoDB, по мнению разработчиков, должна заполнить разрыв между простыми хранилищами данных типа «ключ-значение» (быстрыми и легко масштабируемыми) и большими РСУБД (со структурными схемами и мощными запросами).
Возможности
Основные возможности данной СУБД:
- Документо-ориентированное хранилище (простая и мощная JSON-подобная схема данных)
- Достаточно гибкий язык для формирования запросов
- Динамические запросы
- Полная поддержка индексов
- Профилирование запросов
- Быстрые обновления «на месте»
- Эффективное хранение двоичных данных больших объёмов, напр., фото и видео
- Журналирование операций, модифицирующих данные в БД
- Поддержка отказоустойчивости и масштабируемости: асинхронная репликация, набор реплик и шардинг
- Может работать в соответствии с парадигмой MapReduce
Архитектура
СУБД управляет наборами JSON-подобных документов, хранимых в двоичном виде в формате BSON. Хранение и поиск файлов в MongoDB происходит благодаря вызовам протокола GridFS. Подобно другим документо-ориентированным СУБД (CouchDB и др.), MongoDB не является реляционной СУБД. Среди других отличий от традиционных реляционных СУБД:
- Отсутствует оператор «join». Обычно данные могут быть организованы более денормализованным способом, но на разработчиков ложится дополнительная нагрузка по обеспечению непротиворечивости данных.
- Нет такого понятия, как «транзакция». Атомарность гарантируется только на уровне целого документа, т.е. частичное обновление документа произойти не может.
- Отсутствует понятие «изоляции». Любые данные, которые считываются одним клиентом, могут параллельно изменяться другим клиентом[3].
История разработки
Сотрудничество
6 Июня 2012 г. компания разработчик MongoDB, 10gen, начала длительное сотрудничество с корпорацией Microsoft, предоставив MongoDB ее облаку Windows Azure. В результате этого партнерства разработчики получили простой установщик для запуска MongoDB на виртуальных машинах Windows Azure. В дополнение к расширению опций облака и хостинга, доступных разработчикам MongoDB, этот шаг объединяет возможности ведущей базы данных NoSQL с технологиями Microsoft, включая Windows Azure, .NET и другие технологии с открытым исходным кодом, которые поддерживает Microsoft.[4]
Прочее
Имеется подробная и качественная документация, большое число примеров и драйверов под популярные языки Java, Node.js, C++, C#, PHP, Python, Perl, Ruby[5], Grails&Groovy[6].
Заявляется, что релиз MongoDB 1.0.0 готов к использованию в производстве как в качестве единичного мастера, так и в связках master/slave. Код этого релиза достаточно стабилен и проверен в промышленной эксплуатации на протяжении 1,5 лет[7]. По возможности MongoDB должна быть развернута минимум на двух серверах, используя репликацию Master/Slave[8]. Это обеспечивает наличие актуальных данных при выходе из строя одной из СУБД. MongoDB — продукт довольно молодой, и в нем встречаются ошибки, появляются новые возможности и т. д. Характерен высокий темп разработки (проект пишут не только волонтеры, но и компания людей на полной занятости).[9] Компания-разработчик предоставляет платные поддержку, хостинг, консультации.
Примечания
- ↑ Why Schemaless? (англ.)
- ↑ Design Philosophy (англ.)
- ↑ Архитектура MongoDb. Часть 1. Отличие от СУБД, обработка запросов в MongoDb//High Load Web
- ↑ Новости MongoBD: сотрудничество с Windows Azure // High Load Web
- ↑ Проверенный чёрт : MongoDB
- ↑ The MongoDB NoSQL Database Blog, Grails in the Land of MongoDB
- ↑ MongoDB 1.0 GA — первый релиз новой СУБД — Новости GNU/Linux и Open Source (NIXP.RU)
- ↑ Master-Slave репликация MongoDB
- ↑ MongoDB или как разлюбить SQL / Web-разработка / Хабрахабр
Литература
- Кристина Чодороу, Майкл Дирольф = MongoDB: The Definitive Guide. — O’Reilly Media, 2010. — С. 216. — ISBN 9781449381561
- Тим Хоукинс, Илько Пладж, Питер Мембри = The Definitive Guide to MongoDB: The NoSQL Database for Cloud and Desktop Computing. — Apress, 2010. — С. 350. — ISBN 9781430230519
- Кристина Чодороу = Scaling MongoDB. — O’Reilly Media, 2011. — С. 62. — ISBN 978-1-4493-0321-1
- Митч Пиртл = MongoDB for Web Development. — Addison-Wesley Professional, 2011. — С. 360. — ISBN 9780321705334
- Кайл Бэнкер = MongoDB in Action. — Manning Publications, 2011. — С. 375. — ISBN 9781935182870
- Кристина Чодороу = 50 Tips and Tricks for MongoDB Developers. — O’Reilly Media, 2011. — С. 66. — ISBN 978-1-4493-0461-4
- Райан Нитц = Document Design for MongoDB. — O’Reilly Media, 2011. — С. 50. — ISBN 978-1-4493-0341-9
См. также
Ссылки
- Сайты и порталы
- Официальный сайт (англ.)
- Официальная документация (рус.)
- The Little MongoDB Book по-русски (рус.)
- Прочее
Системы управления базами данных (СУБД) Клиент-серверные Caché • CouchDB • IMS • DB2 • Firebird • Informix • Ingres • InterBase • MS SQL Server • MongoDB • MySQL • mSQL • Oracle Database • Pervasive SQL • PostgreSQL • Sybase ASE • Sybase ASA • Sybase IQ • Teradata Database • ЛИНТЕР
Движки Файл-серверные DataFlex • dBase • MS Access • OpenOffice.org Base • Paradox
Категории:- Программное обеспечение по алфавиту
- Документо-ориентированные СУБД
Wikimedia Foundation. 2010.