Релиз документо-ориентированной СУБД MongoDB 2.2
31 августа 2012 года
Представлен релиз ориентированной на хранение документов высокопроизводительной и высокомасштабируемой СУБД MongoDB 2.2, занимающей нишу между быстрыми и масштабируемыми системами, оперирующими данными в формате ключ/значение, и реляционными СУБД, функциональными и удобными в формировании запросов. Код MongoDB написан на языке C++ и распространяется в рамках лицензии AGPLv3.
MongoDB поддерживает хранение документов в JSON-подобном формате, имеет достаточно гибкий язык для формирования запросов, может создавать индексы для различных хранимых атрибутов, эффективно обеспечивает хранение больших бинарных объектов, поддерживает журналирование операций по изменению и добавлению данных в БД, может работать в соответствии с парадигмой Map/Reduce, поддерживает репликацию и построение отказоустойчивых конфигураций. В MongoDB имеются встроенные средства по обеспечению шардинга (распределение набора данных по серверам на основе определенного ключа), комбинируя который репликацией данных можно построить горизонтально масштабируемый кластер хранения, в котором отсутствует единая точка отказа (сбой любого узла не сказывается на работе БД), поддерживается автоматическое восстановление после сбоя и перенос нагрузки с вышедшего из строя узла. Расширение кластера или преобразование одного сервера в кластер производится без остановки работы БД простым добавлением новых машин.
В новой версии внесено около тысячи изменений, связанных с добавлением новых возможностей, исправлением ошибок и оптимизациями производительности. Основной упор при подготовке выпуска был сделан на увеличение гибкости и производительности. Из улучшений, добавленных в MongoDB 2.2, можно отметить:
- Добавлен Aggregation Framework, нацеленный на упрощение манипулирования и обработки документов в MongoDB. Вместо необходимости использования парадигмы Map/Reduce или запуска отдельного процесса-обработчика, фреймворком предоставляется набор более привычных агрегатных функций (sum, min, max, avg) и операторов фильтрации, сортировки и группировки, управление которыми осуществляется через вызов db.collection.aggregate(). Логика построения выражений в db.collection.aggregate() чем-то напоминает построение запроса SQL;
- Добавлена поддержка метода шардинга "tag aware sharding", позволяющего при использовании шардинга в кластере с территориально разнесёнными узлами гарантировать оптимальное распределение данных, при котором требуемые приложениям данные размещены на узлах, ближайших к потребителю, наиболее часто запрашивающему эти данные. Привязка к узлам осуществляется путем назначения тегов, на основании которых создаются логические области шардинга, например, всем данным которые должны быть доступны в США можно присвоить тег USA и привязать его к узлам, размещённым в нужном датацентре;
- Полная поддержка семантики для выбора источника операций чтения данных, что позволят клиенту перенаправить выполнение операций чтения на вторичные узлы, реплицирующие эти данные. Указанная возможность позволяет разгрузить первичные узлы репликации, запросы к которым ранее осуществлялись в первую очередь. Например, можно использовать вторичные реплики в таких ситуациях как выполнение резервного копирования, создание сложных отчётов и для минимизации задержки при построении территориально распределённых систем;
- Продолжение работы по увеличению параллелизма обработки данных. Новая версия полностью избавлена от глобальной блокировки в процессе mongod. Блокировка отныне осуществляется отдельно для каждой базы данных, т.е. данные из разных баз могут обрабатываться параллельно. Кроме того новая подсистема позволяет избежать блокировок в процессе обращения к невыделенным страницам памяти (page faults), что позволяет повысить параллелизм выполнения операций и для систем, обслуживающих одну БД. Кроме того, проведена работа по увеличению параллелизма на стороне клиента;
- Поддержка TTL-коллекций, позволяющих удалять из коллекций просроченные данные, используя специальный тип индекса и обслуживающую выполнение чистки фоновую нить, ежеминутно проверяющую наличие документов с истекшим временем жизни.
TTL-коллекции удобно использовать при хранении логов, сессий и данных о событиях, которые имеют актуальность ограниченный период времени.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.