Представлен (http://blog.mongodb.org/post/30451575525/mongodb-2-2-released) релиз ориентированной на хранение документов высокопроизводительной и высокомасштабируемой СУБД MongoDB 2.2 (http://www.mongodb.org), занимающей нишу между быстрыми и масштабируемыми системами, оперирующими данными в формате ключ/значение, и реляционными СУБД, функциональными и удобными в формировании запросов. Код MongoDB написан на языке C++ и распространяется в рамках лицензии AGPLv3.
MongoDB поддерживает хранение документов в JSON-подобном формате, имеет достаточно гибкий язык для формирования запросов, может создавать индексы для различных хранимых атрибутов, эффективно обеспечивает хранение больших бинарных объектов, поддерживает журналирование операций по изменению и добавлению данных в БД, может работать в соответствии с парадигмой Map/Reduce, поддерживает репликацию и построение отказоустойчивых конфигураций. В MongoDB имеются встроенные средства по обеспечению шардинга (распределение набора данных по серверам на основе определенного ключа), комбинируя который репликацией данных можно построить горизонтально масштабируемый кластер хранения, в котором отсутствует единая точка отказа (сбой любого узла не сказывается на работе БД), поддерживается автоматическое восстановление после сбоя и перенос нагрузки с вышедшего из строя узла. Расширение кластера или преобразование одного сервера в кластер производится без остановки работы БД простым добавлением новых машин.В новой версии внесено около тысячи изменений, связанных с добавлением новых возможностей, исправлением ошибок и оптимизациями производительности. Основной упор при подготовке выпуска был сделан на увеличение гибкости и производительности. Из улучшений (http://docs.mongodb.org/manual/release-notes/2.2/#changes), добавленных в MongoDB 2.2, можно отметить:
- Добавлен Aggregation Framework (http://docs.mongodb.org/manual/aggregation/), нацеленный на упрощение манипулирования и обработки документов в MongoDB. Вместо необходимости использования парадигмы Map/Reduce или запуска отдельного процесса-обработчика, фреймворком предоставляется (http://docs.mongodb.org/manual/reference/aggregation/) набор более привычных агрегатных функций (sum, min, max, avg) и операторов фильтрации, сортировки и группировки, управление которыми осуществляется через вызов db.collection.aggregate(). Логика построения выражений в db.collection.aggregate() чем-то напоминает (http://docs.mongodb.org/manual/tutorial/aggregation-examples/) построение запроса SQL;
- Добавлена поддержка метода шардинга "tag aware sharding (http://www.mongodb.org/display/DOCS/Tag+Aware+Sharding)", позволяющего при использовании шардинга в кластере с территориально разнесёнными узлами гарантировать оптимальное распределение данных, при котором требуемые приложениям данные размещены на узлах, ближайших к потребителю, наиболее часто запрашивающему эти данные. Привязка к узлам осуществляется путем назначения тегов, на основании которых создаются логические области шардинга, например, всем данным которые должны быть доступны в США можно присвоить тег USA и привязать его к узлам, размещённым в нужном датацентре;
- Полная поддержка семантики (http://docs.mongodb.org/manual/applications/replication/#rep...) для выбора источника операций чтения данных, что позволят клиенту перенаправить выполнение операций чтения на вторичные узлы, реплицирующие эти данные. Указанная возможность позволяет разгрузить первичные узлы репликации, запросы к которым ранее осуществлялись в первую очередь. Например, можно использовать вторичные реплики в таких ситуациях как выполнение резервного копирования, создание сложных отчётов и для минимизации задержки при построении территориально распределённых систем;
- Продолжение работы по увеличению параллелизма обработки данных. Новая версия полностью избавлена от глобальной блокировки в процессе mongod. Блокировка отныне осуществляется отдельно для каждой базы данных, т.е. данные из разных баз могут обрабатываться параллельно. Кроме того новая подсистема позволяет избежать блокировок в процессе обращения к невыделенным страницам памяти (page faults), что позволяет повысить параллелизм выполнения операций и для систем, обслуживающих одну БД. Кроме того, проведена работа по увеличению параллелизма на стороне клиента;
- Поддержка TTL-коллекций, позволяющих удалять из коллекций просроченные данные, используя специальный тип индекса и обслуживающую выполнение чистки фоновую нить, ежеминутно проверяющую наличие документов с истекшим временем жизни.
TTL-коллекции удобно использовать при хранении логов, сессий и данных о событиях, которые имеют актуальность ограниченный период времени.URL: http://blog.mongodb.org/post/30451575525/mongodb-2-2-released
Новость: http://www.opennet.me/opennews/art.shtml?num=34702
С точки зрения эксплуатации мне это поделие совсем не нравится. Как оно так написано на C++, а тянет за собой зависимости как будто написано на каком нибудь перле или яваскрипте. Да и со стабильностью не все гладко и с расходом памяти.
А програмистам естественно нравится.
А мне с точки зрения эксплуатации очень даже ничего. Сильных больших зависимостей не увидел. Порты рулят. Да, используют они буст-библиотеку С++, ну собирается она не быстро. Дык один раз же.
Возможно, вы не умеете его готовить? У меня в production стабильные версии mongo используются уже три года, никаких падений и учечек. Как часы.
Дело не в утечках.
Погуглите на слова mongodb memory limit.
Сколько машин в кластере?
Как раз сегодня читал мнение одного блоггера на тему увеличения производительности MongoDB в реальном проекте: http://deepencpp.blogspot.com/2012/08/mongodb-mapreduce-shar... И какие-то печальные у него отзывы об этом продукте.P.S. Никакого отношения к автору не имею, рекламных целей не преследовал. Думаю, кому-то может быть интересно.
aggregation framework - вот этого ждал больше всего, можно начинать убирать костыли:)
> The current implementation of $sort does not go to disk in these cases: in order to sort the contents of the pipeline, the entire input must fit in memory.Хотел потестить но это же блин опять игрушки какие-то...
а ещё очень сильно не хватает возможности ограничить коннекты к серверу per user. Когда 1 пользователь может нагадить всем остальным
Is /dev/null a web-scale?Почему программисты на JS так её любят?
http://habrahabr.ru/post/204392/
для тех, кто не в курсе, вот перевод "MongoDB is web scale"