Релиз документо-ориентированной СУБД MongoDB 2.4

Доступен релиз ориентированной на хранение документов высокопроизводительной и высокомасштабируемой СУБД MongoDB 2.4, занимающей нишу между быстрыми и масштабируемыми системами, оперирующими данными в формате ключ/значение, и реляционными СУБД, функциональными и удобными в формировании запросов. Код MongoDB написан на языке C++ и распространяется в рамках лицензии AGPLv3. MongoDB поддерживает хранение документов в JSON-подобном формате, имеет достаточно гибкий язык для формирования запросов, может создавать индексы для различных хранимых атрибутов, эффективно обеспечивает хранение больших бинарных объектов, поддерживает журналирование операций по изменению и добавлению данных в БД, может работать в соответствии с парадигмой Map/Reduce, поддерживает репликацию и построение отказоустойчивых конфигураций.

В MongoDB имеются встроенные средства по обеспечению шардинга (распределение набора данных по серверам на основе определенного ключа), комбинируя который репликацией данных можно построить горизонтально масштабируемый кластер хранения, в котором отсутствует единая точка отказа (сбой любого узла не сказывается на работе БД), поддерживается автоматическое восстановление после сбоя и перенос нагрузки с вышедшего из строя узла. Расширение кластера или преобразование одного сервера в кластер производится без остановки работы БД простым добавлением новых машин.

По сравнению с прошлым выпуском в MongoDB 2.4 внесено 692 изменения, из которых можно отметить следующие значительные улучшения:

Система шардинга на основе хэшей. Новый механизм шардинга построен поверх ранее предоставляемой системы шардинга на основе диапазонов значений и отличается возможностью использования хэширования для формирования ключей шардинга, определяющих на каком узле будет сохранён тот или иной документ. Применение хэшей позволяет упростить равномерное распределение данных и нагрузку на узлы за счёт того, что документы запрашиваются из хранилища в случайном порядке на основе ключей хешей, при этом метод эффективен в ситуациях, когда характер доступа к документам не является абсолютно предсказуемым; Интегрированные массивы (Capped Arrays) — возможность встраивания в документ массивов фиксированной длины. Интегрированные массивы допускают задание типа сортировки и последующего использования операции $push с модификатором $slice для отсечения только последних элементов массива; Механизм поиска текста в документах с использованием специального типа индексов «text», допускающего выполнение поисковых запросов в режиме реального времени с использованием стемминга и токенизации для 15 языков, в том числе и русского языка; Поддержка GeoJSON. Новый тип индексов 2dsphere для работы с пространственными координатами с задействованием более точной сферической модели. Расширенные средства поиска по координатам, в том числе с учётом пересечения многоугольников; Существенное увеличение производительности счётных операций, которые в некоторых ситуациях выполняются на порядок быстрее, чем в прошлой версии. Оптимизация работы движка выполнения запросов позволила ускорить типовые способы доступа к данным; Анализатор размера рабочих наборов (Working Set Analyzer), позволяющий упростить оценку процента использованных ресурсов в кластере MongoDB. Анализатор сообщает сколько уникальных страниц памяти потребовалось серверу за последние 15 минут, что позволяет отслеживать нагрузку в течение долгого времени. Если размер данных за 15 минут приближается к размеру ОЗУ то вероятно стоит подумать над добавлением дополнительных ресурсов в кластер; Осуществлён переход на JavaScript-движок V8, используемый для выполнения MapReduce-запросов, определения условий в блоке $where и для работы shell. Переход на V8 позволил увеличить возможности MongoDB по многопоточной обработке запросов; Добавлена поддержка аутентификации с использованием Kerberos и система разграничения прав доступа на основе ролей (Role Based Access Control).

© OpenNet