MongoDB | это... Что такое MongoDB? (original) (raw)
MongoDB
Логотип MongoDB | |
---|---|
Тип | Документо-ориентированная СУБД |
Разработчик | MongoDB |
Написана на | C++ |
Операционная система | Кроссплатформенное программное обеспечение |
Последняя версия | 2.2.2 (27 ноября 2012) |
Лицензия | GNU AGPL (СУБД) и Apache License (драйверы) |
Сайт | www.mongodb.org |
MongoDB — документо-ориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц. Написана на языке C++ и распространяется в рамках лицензии Creative Commons.
Содержание
- 1 Философия
- 2 Возможности
- 3 Архитектура
- 4 История разработки
- 5 Сотрудничество
- 6 Прочее
- 7 Примечания
- 8 Литература
- 9 См. также
- 10 Ссылки
Философия
При разработке авторы исходили из необходимости специализации баз данных, благодаря чему им удалось отойти от принципа «один размер подо всё». За счёт минимизации семантики для работы с транзакциями появляется возможность решения целого ряда проблем, связанных с недостатком производительности, причём горизонтальное масштабирование становится проще. Используемая модель документов хранения данных (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 • ЛИНТЕР |
Движки | BDE • Berkeley DB • C-Store • db4o • HSQLDB • Mnesia • PrimeBase • Redis • Rdb • SQLite • ZODB |
Файл-серверные | DataFlex • dBase • MS Access • OpenOffice.org Base • Paradox |