Доступен (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-t... допускающего выполнение поисковых запросов в режиме реального времени с использованием стемминга (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
Коллеги, кто в курсе, MapReduce (а точнее его часть Map) в mongo уже многопоточный?
Пока нет. Но перевод джаваскрипта на V8 в 2.4 у меня сегодня на 25% сократил время отчётинга.
Нет, однопоточный. Требовался переход на V8 (что и случилось в 2.4), надеюсь, версии через одну-две добавят и многопоточность.Но уже можно запускать параллельно несколько задач - https://groups.google.com/forum/?fromgroups=#!topic/mongodb-...
а оно по-прежнему может покорежить базу при нештатном выключении?
> а оно по-прежнему может покорежить базу при нештатном выключении?чтобы mongodb не корежила базу, не нужно отключать журналирование
Эх. Жалко нет инструмента что бы лимитировать пользователей по времени выполнения запросов и/или лимитирования коннектов
вдобавок к хорошей новости :)
на днях сделаны классы, позволяющие работать с PHP массивами, используя совместимые с MongoDB запросы.
http://stackoverflow.com/questions/14972025/evaluating-mongo... есть вариант с использованием SPL, а также эквивалент на чистом PHP.
> вдобавок к хорошей новости :)
> на днях сделаны классы, позволяющие работать с PHP массивами, используя ...хм... разве PHP-программисты используют не MySQL? :-)
в Денвере же нет MongoDB!
тем более, как там с поддержкой кодировки WINDOWS-1251 у MongoDB ? :)
Разве денвер-программисты используют PHP? )))