Релиз документо-ориентированной СУБД MongoDB 2.0
13 сентября 2011 года
Представлен релиз ориентированной на хранение документов высокопроизводительной и высокомасштабируемой СУБД MongoDB 2.0, занимающей нишу между быстрыми и масштабируемыми системами, оперирующими данными в формате ключ/значение, и реляционными СУБД, функциональными и удобными в формировании запросов. Код MongoDB написан на языке C++ и распространяется в рамках лицензии AGPLv3.
MongoDB поддерживает хранение документов в JSON-подобном формате, имеет достаточно гибкий язык для формирования запросов, может создавать индексы для различных хранимых атрибутов, эффективно обеспечивает хранение больших бинарных объектов, поддерживает журналирование операций по изменению и добавлению данных в БД, может работать в соответствии с парадигмой Map/Reduce, поддерживает репликацию и построение отказоустойчивых конфигураций. В MongoDB имеются встроенные средства по обеспечению шардинга (распределение набора данных по серверам на основе определенного ключа), комбинируя который репликацией данных можно построить горизонтально масштабируемый кластер хранения, в котором отсутствует единая точка отказа (сбой любого узла не сказывается на работе БД), поддерживается автоматическое восстановление после сбоя и перенос нагрузки с вышедшего из строя узла. Расширение кластера или преобразование одного сервера в кластер производится без остановки работы БД простым добавлением новых машин.
Отмечается, что версия 2.0, хоть и является значительным выпуском, не должна восприниматься как какой-то кардинальный шаг. Номер 2.0 присвоен как продолжение непрерывной нумерации стабильных релизов с четными номерами (1.8 + 0.2 = 2.0) и по уровню новшеств сопоставим различиями между прошлыми стабильными ветками 1.6 и 1.8. Из улучшений, добавленных в MongoDB 2.0, можно отметить:
- Включены результаты первой стадии переработки проекта с целью увеличения параллелизма обработки данных. В версии 2.0 решен один важных вопросов - обеспечение надлежащей работы блокировок в процессе обращения к невыделенным страницам памяти (page faults). Реализованный механизм блокировок позволяет отслеживать кэширование в памяти и дает возможнось вынести за пределы основного обработчика блокировки при записи на диск и обработку page faults. Метод применен в нескольких местах, например, в коде обновления по идентификатору, удаления и сканирования больших таблиц;
- Возможность размещения рабочего набора индексов в оперативной памяти является важным фактором обеспечения высокой производительности. В новой версии индексы занимают примерно на 25% меньше места и работают на 25% быстрее, что позволяет вместить больше индексных данных в имеющийся объем памяти. Кроме того, уменьшен размер стека по умолчанию, что позволяет сэкономить память при большом числе одновременных клиентских соединений (более 1000);
- Добавлены новые функции в реализацию поддержки передачи наборов реплик (Replica Sets). В новой версии добавлена возможность определения приоритетов и привязки меток (tagging). Приоритеты позволяют выделить первичные узлы, если кластер размещен в неоднородной сети. Привязка меток к репликам позволяет гарантировать, что данные будут записаны на определенные группы серверов (например, можно проследить что данные о регистрации нового пользователя будут отражены на серверах в двух разных дата-центрах, до того как выдать пользователю информацию об успешной регистрации).
- Поддержка аутентификации для кластеров шардинга;
- Реализация опции ContinueOnError, при которой операция массового добавления данных не будет прервана после ошибки. Тип и место последней ошибки можно отследить через вызов getLastError;
- Для 64-разрядных платформ по умолчанию активировано журналирование операций, что позволяет кардинально уменьшить время, требуемое на восстановление целостности данных в случае сбоя. Для экономии места добавлена поддержка хранения журнала в сжатом виде;
- Кроме вышеотмеченных улучшений, в новой версии представлена достаточно большая порция небольших оптимизаций производительности, увеличение стабильности шардинга, улучшение операций с набором реплик.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.