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

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

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

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

Особенности нового выпуска:

  • Поддержка транзакций, удовлетворяющих требованиям ACID (атомарность, согласованность, изолированность, надежность) при обработке запросов, охватывающих несколько документов (многодокументные транзакции). В контексте одного докумнта ACID-транзакции в MongoDB поддерживались изначально, но обеспечение изоляции на уровне нескольких документов было одним из наиболее часто высказываемых пользователями пожеланий. При помощи механизма изоляции на базе снапшотов внутри транзакции теперь предоставляется целостное представление всех данных и возможность отката всех изменений в случае отмены транзакции, независимо от того сколько документов было вовлечено.

    После модификации документа внутри транзакции для него выставляется блокировка операций записи (не влияет на чтение) до завершения транзакции или истечения таймаута (по умолчанию транзакция не может длиться более 60 секунд). До заврршения транзакции все внесённые в рамках транзакции изменения остаются невидимы для других запросов, в момент подтверждения транзакции изменения применяются атомарно. Синтаксис транзакций повторяет операции в реляционных СУБД — открытие транзакции (startTransaction) с последующим её подтверждением (commitTransaction) или сбросом (abortTransaction). В настоящее время многодокументные транзакции применимы только на уровне одного набора реплицированных данных (Replica Set), но в выпуске MongoDB 4.2 планируется обеспечить работу транзакций на уровне кластера MongoDB;

  • Добавлены новые агрегатные операторы для преобразования типов данных на стороне СУБД: универсальный оператор $convert для конвертации в любой указанный тип и привязанные к конкретным типам операторы $toBool, $toDate, $toDecimal, $toDouble, $toInt, $toLong, $toObjectId и $toString;
  • Добавлены новые строковые операторы для вырезания пробелов или определённых символов вначале или в конце строки: $ltrim, $rtrim и $trim;
  • В агрегатный оператор $dateFromString добавлена возможность определения формата разбора даты;
  • Добавлена поддержка аутентификации SCRAM-SHA-256 на базе хэша SHA-256 (ранее предоставлялся SCRAM-SHA-1 на базе SHA-1) для организации более безопасного доступа по паролю. Поддержка устаревшего механизма аутентификации MONGODB-CR прекращена. По умолчанию отключена поддержка TLS 1.0 (для создания шифрованного канала связи требуется TLS 1.1+);
  • Для интеграции с системами мониторинга добавлены новые привилегии checkFreeMonitoringStatus и setFreeMonitoring;
  • Движок хранения MMAPv1 объявлен устаревшим и будет удалён в одном из следующих выпусков. Пользователям движка MMAPv1 (оригинальный движок MongoDB на базе отзеркаленных в память файлов) рекомендуется перейти на движок WiredTiger, который применяется по умолчанию, начиная с выпуска MongoDB 3.2;
  • Прекращена поддержка репликации в режиме Master-Slave и протокола реплицирования данных pv0, вместо которых следует использовать набор реплик (Replica Set) и протокол pv1;
  • Встроенный JavaScript-движок обновлён до выпуска MozJS 45.9.0. По умолчанию в JavaScript-движке отключён JIT-компилятор;
  • Обновлены драйверы к MongoDB, совместимость с MongoDB 4.0 обеспечена в выпусках драйверов Java 3.8.0, Python 3.7.0, C 1.11.0, C# 2.7, Node 3.1.0, Ruby 2.6.0, Perl 2.0.0, PHPC 1.5.0 и Scala 2.4.0;
  • Обеспечена интеграция с инструментарием оркестровки контейнеров Kubernetes для автоматизации развёртывания и поддержания сервисов с MongoDB в кластере Kubernetes.

© OpenNet