Доступна документо-ориентированная СУБД MongoDB 3.0
6 марта 2015 года
Представлен релиз ориентированной на хранение документов высокопроизводительной и высокомасштабируемой СУБД MongoDB 3.0, занимающей нишу между быстрыми и масштабируемыми системами, оперирующими данными в формате ключ/значение, и реляционными СУБД, функциональными и удобными в формировании запросов. Код MongoDB написан на языке C++ и распространяется в рамках лицензии AGPLv3.
MongoDB поддерживает хранение документов в JSON-подобном формате, имеет достаточно гибкий язык для формирования запросов, может создавать индексы для различных хранимых атрибутов, эффективно обеспечивает хранение больших бинарных объектов, поддерживает журналирование операций по изменению и добавлению данных в БД, может работать в соответствии с парадигмой Map/Reduce, поддерживает репликацию и построение отказоустойчивых конфигураций.
В MongoDB имеются встроенные средства по обеспечению шардинга (распределение набора данных по серверам на основе определенного ключа), комбинируя который репликацией данных можно построить горизонтально масштабируемый кластер хранения, в котором отсутствует единая точка отказа (сбой любого узла не сказывается на работе БД), поддерживается автоматическое восстановление после сбоя и перенос нагрузки с вышедшего из строя узла. Расширение кластера или преобразование одного сервера в кластер производится без остановки работы БД простым добавлением новых машин.
Особенности нового выпуска:
- Pluggable Storage Engine API, позволяющий сторонним разработчикам создавать движки хранения для MongoDB;
- Возможность использования движка хранения WiredTiger, помимо штатного движка MMAPv1. WiredTiger может использоваться только на 64-разрядных системах и отличается высоким уровнем масштабуемости на многоядерных системах и предсказуемым временем обработки запроса, не зависящим от числа записей в базе, благодаря применению алгоритма, не использующего блокировки, и активному кэшированию данных ОЗУ. В WiredTiger также реализована возможность блокировки записей на уровне документов и поддержка хранения данных в сжатом виде (для сжатия используется библиотека snappy).
При использовании WiredTiger поддерживаются все возможности MongoDB, но для перехода на новое хранилище требуется изменение дискового формата хранилища. Настройка нового движка осуществляется через набор опций storage.wiredTiger. В системах репликации и шардинга в кластере MongoDB могут комбинироваться и совместно использоваться узлы с разными движками хранения.
- В штатном движке хранения MMAPv1 обеспечена поддержка блокировки на уровне коллекций. Изменена стратегия распределения данных в хранилище, которая теперь построена на основе метода PowerOf2, подразумевающего использование записей, размер которых кратен степени двойки (32, 64, 128, 256, 512 ... 2MB). Подобный подход более оптимален для хранения документов большого размера, но больше расходует дисковое пространство (например, если документ больше 2 Мб для него выделяется N блоков по 2 Мб, даже если он занимает 2Мб 1 байт).
- Увеличено число узлов в наборе репликации. В MongoDB 3.0 в одном наборе может присутствовать до 50 узлов. С большим размером реплик могут работать драйверы C# (.NET) 1.10, Java 2.13, Python (PyMongo) 3.0+, Ruby 2.0+ и Node.JS 2.0+. Работа c большими наборами реплик в драйверах C++, Perl, PHP пока не поддерживается;
- Поддержка механизма аутентификации SCRAM-SHA-1 ( RFC 5802).
- Добавлена новая система для анализа эффективности выполнения запросов. Расширен формат данных о запросе и реализованы средства доскональной интроспекции как плана построения запроса, так и выполнения запроса. Для анализа запросов представлены новый метод db.collection.explain() и команда explain;
- Расширены средства ведения диагностических логов, в которых обеспечена привязка записей к специфичным компонентам и операциям;
- В утилиты mongodump и mongorestore добавлена поддержка параллельной обработки нескольких коллекций (опция "--numParallelCollections"). В mongodump добавлены опции для выборочного исключения коллекций из дампа (--excludeCollection и --excludeCollectionsWithPrefix);
- Утилиты mongostat и mongotop теперь могут возвращать статистику в формате JSON (опция --json).
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.