Релиз документо-ориентированной СУБД MongoDB 2.0
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-разрядных платформ по умолчанию активировано журналирование операций, что позволяет кардинально уменьшить время, требуемое на восстановление целостности данных в случае сбоя. Для экономии места добавлена поддержка хранения журнала в сжатом виде;
- Кроме вышеотмеченных улучшений, в новой версии представлена достаточно большая порция небольших оптимизаций производительности, увеличение стабильности шардинга, улучшение операций с набором реплик.
Источник: http://www.opennet.ru/opennews/art.shtml?num=31741
|
0 | Tweet | Нравится |
|