Доступен (http://blog.mongodb.org/post/45754637343/mongodb-2-4-released) релиз ориентированной на хранение документов высокопроизводительной и высокомасштабируемой СУБД MongoDB 2.4 (http://www.mongodb.org), занимающей нишу между быстрыми и масштабируемыми системами, оперирующими данными в формате ключ/значение, и реляционными СУБД, функциональными и удобными в формировании запросов. Код MongoDB написан на языке C++ и распространяется в рамках лицензии AGPLv3.
MongoDB поддерживает хранение документов в JSON-подобном формате, имеет достаточно гибкий язык для формирования запросов, может создавать индексы для различных хранимых атрибутов, эффективно обеспечивает хранение больших бинарных объектов, поддерживает журналирование операций по изменению и добавлению данных в БД, может работать в соответствии с парадигмой Map/Reduce, поддерживает репликацию и построение отказоустойчивых конфигураций.
В MongoDB имеются встроенные средства по обеспечению шардинга (распределение набора данных по серверам на основе определенного ключа), комбинируя который репликацией данных можно построить горизонтально масштабируемый кластер хранения, в котором отсутствует единая точка отказа (сбой любого узла не сказывается на работе БД), поддерживается автоматическое восстановление после сбоя и перенос нагрузки с вышедшего из строя узла. Расширение кластера или преобразование одного сервера в кластер производится без остановки работы БД простым добавлением новых машин.
По сравнению с прошлым выпуском в MongoDB 2.4 внесено 692 изменения (https://jira.mongodb.org/secure/IssueNavigator.jspa?reset=tr...), из которых можно отметить следующие значительные улучшения (http://docs.mongodb.org/manual/release-notes/2.4/):
- Система (http://docs.mongodb.org/manual/release-notes/2.4/#release-ha...) шардинга на основе хэшей. Новый механизм шардинга построен поверх ранее предоставляемой системы шардинга на основе диапазонов значений и отличается возможностью использования хэширования для формирования ключей шардинга, определяющих на каком узле будет сохранён тот или иной документ. Применение хэшей позволяет упростить равномерное распределение данных и нагрузку на узлы за счёт того, что документы запрашиваются из хранилища в случайном порядке на основе ключей хешей, при этом метод эффективен в ситуациях, когда характер доступа к документам не является абсолютно предсказуемым;
- Интегрированные массивы (http://docs.mongodb.org/manual/release-notes/2.4/#limit-numb...) (Capped Arrays) - возможность встраивания в документ массивов фиксированной длины. Интегрированные массивы допускают задание типа сортировки и последующего использования операции $push с модификатором $slice для отсечения только последних элементов массива;
- Механизм (http://blog.mongodb.org/post/40513621310/mongodb-text-search...) поиска текста в документах с использованием специального типа индексов "text (http://docs.mongodb.org/manual/core/indexes/#index-feature-text)", допускающего выполнение поисковых запросов в режиме реального времени с использованием стемминга (http://ru.wikipedia.org/wiki/%D0%A1%D1%8...) и токенизации (http://en.wikipedia.org/wiki/Tokenization) для 15 языков, в том числе и русского языка;
- Поддержка (http://docs.mongodb.org/manual/release-notes/2.4/#release-ge...) GeoJSON (http://geojson.org/geojson-spec.html). Новый тип индексов 2dsphere для работы с пространственными координатами с задействованием более точной сферической модели. Расширенные средства поиска по координатам, в том числе с учётом пересечения многоугольников;
- Существенное увеличение производительности счётных операций, которые в некоторых ситуациях выполняются на порядок быстрее, чем в прошлой версии. Оптимизация работы движка выполнения запросов позволила ускорить типовые способы доступа к данным;
- Анализатор размера рабочих наборов (Working Set Analyzer (http://docs.mongodb.org/manual/release-notes/2.4/#changes-to...)), позволяющий упростить оценку процента использованных ресурсов в кластере MongoDB. Анализатор сообщает сколько уникальных страниц памяти потребовалось серверу за последние 15 минут, что позволяет отслеживать нагрузку в течение долгого времени. Если размер данных за 15 минут приближается к размеру ОЗУ то вероятно стоит подумать над добавлением дополнительных ресурсов в кластер;
- Осуществлён переход на JavaScript-движок V8, используемый для выполнения MapReduce-запросов, определения условий в блоке $where и для работы shell. Переход на V8 позволил увеличить возможности MongoDB по многопоточной обработке запросов;
- Добавлена поддержка аутентификации с использованием Kerberos и система разграничения прав доступа на основе ролей (Role Based Access Control).
URL: http://blog.mongodb.org/post/45754637343/mongodb-2-4-released
Новость: http://www.opennet.me/opennews/art.shtml?num=36441