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

Доступен релиз ориентированной на хранение документов высокопроизводительной и высокомасштабируемой СУБД MongoDB 1.8, занимающую нишу между быстрыми и масштабируемыми системами, оперирующими данными в формате ключ/значение, и реляционными СУБД, функциональными и удобными в формировании запросов. Код MongoDB написан на языке C++ и распространяется в рамках лицензии AGPLv3.

MongoDB поддерживает хранение документов в JSON-подобном формате, имеет достаточно гибкий язык для формирования запросов, может создавать индексы для различных хранимых атрибутов, эффективно обеспечивает хранение больших бинарных объектов, может работать в соответствии с парадигмой Map/Reduce, поддерживает репликацию и построение отказоустойчивых конфигураций. В MongoDB имеются встроенные средства по обеспечению шардинга (распределение набора данных по серверам на основе определенного ключа), комбинируя который репликацией данных можно построить горизонтально масштабируемый кластер хранения, в котором отсутствует единая точка отказа (сбой любого узла не сказывается на работе БД), поддерживается автоматическое восстановление после сбоя и перенос нагрузки с вышедшего из строя узла. Расширение кластера или преобразование одного сервера в кластер производится без остановки работы БД простым добавлением новых машин.

Из улучшений, добавленных в новой версии MongoDB, можно отметить:

  • Поддержка журналирования операций, приводящих к изменению и добавлению данных в БД, что позволяет кардинально уменьшить время, требуемое на восстановление целостности данных в случае сбоя. Включение журнала производится через опцию "--journal", журнал создается в поддиректории journal в основном каталоге БД. С точки зрения производительности журналирование не влияет на скорость операций чтения, но незначительно замедляет операции записи (в версии 1.8.1 планируется реализовать дополнительные оптимизации для минимизации негативного эффекта);
  • Проведена оптимизация производительности выполнения операций шардинга;
  • Расширена поддержка передачи наборов реплик (Replica Sets), добавлены функции аутентификации для вовлеченных в процесс репликации серверов;
  • Реализован сферический поиск гео-объектов (двухмерные координаты). Например, теперь можно сформировать запрос "найти ближайшие N объектов по отношению к указанным координатам";
  • Добавлена поддержка самодостаточных индексов (covered), обеспечивающих хранение всей необходимой информации, достаточной для вывода результата запроса по проиндексированному полю без обращения к другим структурам данных, только на основании содержимого индекса;
  • Добавлена поддержка рассеяных (sparse) индексов, в которых сохраняются документы, в которых имеются поля, по которым производится индексация. Документы в которых не используются отмеченные в индексе поля не сохраняются в индексе, что позволяет значительно сократить размер индекса при индексации редких атрибутов;
  • Обеспечена функция самоуплотнения индексов B-tree;
  • Добавлены новые опции map/reduce для обеспечения инкрементальных обновлений;
  • В управляющей командной оболочке добавлена функция автодополнения при нажатии клавиши "табуляция";
  • В утилите mongostat реализована опция "--discover" для поиска всех подсоединенных серверов.

© OpenNet