The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

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

31.08.2012 11:58

Представлен релиз ориентированной на хранение документов высокопроизводительной и высокомасштабируемой СУБД 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-коллекции удобно использовать при хранении логов, сессий и данных о событиях, которые имеют актуальность ограниченный период времени.


  1. Главная ссылка к новости (http://blog.mongodb.org/post/3...)
  2. OpenNews: На развитие свободной СУБД MongoDB выделено 42 млн долларов
  3. OpenNews: Релиз документо-ориентированной СУБД MongoDB 2.0
  4. OpenNews: Релиз документо-ориентированной СУБД MongoDB 1.8
  5. OpenNews: Релиз документо-ориентированной СУБД MongoDB 1.6
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/34702-mongodb
Ключевые слова: mongodb, database
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (11) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, o (?), 13:31, 31/08/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    С точки зрения эксплуатации мне это поделие совсем не нравится. Как оно так написано на C++, а тянет за собой зависимости как будто написано на каком нибудь перле или яваскрипте. Да и со стабильностью не все гладко и с расходом памяти.
    А програмистам естественно нравится.
     
     
  • 2.2, Михаил (??), 14:09, 31/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А мне с точки зрения эксплуатации очень даже ничего. Сильных больших зависимостей не увидел. Порты рулят. Да, используют они буст-библиотеку С++, ну собирается она не быстро. Дык один раз же.
     
  • 2.3, Аноним (-), 14:13, 31/08/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Возможно, вы не умеете его готовить? У меня в production стабильные версии mongo используются уже три года, никаких падений и учечек. Как часы.
     
     
  • 3.7, o (?), 15:41, 31/08/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Дело не в утечках.
    Погуглите на слова mongodb memory limit.
     
  • 3.10, etw (ok), 06:23, 01/09/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Сколько машин в кластере?
     

  • 1.4, an. (?), 15:21, 31/08/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Как раз сегодня читал мнение одного блоггера на тему увеличения производительности MongoDB в реальном проекте: http://deepencpp.blogspot.com/2012/08/mongodb-mapreduce-sharding-gotchas.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+deepencpp+%28Deepen+C%2B%2B%29 И какие-то печальные у него отзывы об этом продукте.

    P.S. Никакого отношения к автору не имею, рекламных целей не преследовал. Думаю, кому-то может быть интересно.

     
  • 1.6, n (??), 15:25, 31/08/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    aggregation framework - вот этого ждал больше всего, можно начинать убирать костыли:)
     
     
  • 2.8, Аноним (-), 17:21, 31/08/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > 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.

    Хотел потестить но это же блин опять игрушки какие-то...

     

  • 1.9, stalker37 (?), 23:16, 31/08/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а ещё очень сильно не хватает возможности ограничить коннекты к серверу per user. Когда 1 пользователь может нагадить всем остальным
     
  • 1.11, Сергей (??), 01:41, 02/09/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Is /dev/null a web-scale?

    Почему программисты на JS так её любят?

     
     
  • 2.12, how (?), 00:58, 02/12/2013 [^] [^^] [^^^] [ответить]  
  • +/
    http://habrahabr.ru/post/204392/
    для тех, кто не в курсе, вот перевод "MongoDB is web scale"
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру