Релиз документо-ориентированной СУБД MongoDB 3.6
Доступен стабильный выпуск документо-ориентированной СУБД MongoDB 3.6, которая занимает нишу между быстрыми и масштабируемыми системами, оперирующими данными в формате ключ/значение, и реляционными СУБД, функциональными и удобными в формировании запросов. Код MongoDB написан на языке C++ и распространяется в рамках лицензии AGPLv3. Сборки MongoDB 3.6 сформированы для Linux, Windows и macOS.
MongoDB поддерживает хранение документов в JSON-подобном формате, имеет достаточно гибкий язык для формирования запросов, может создавать индексы для различных хранимых атрибутов, эффективно обеспечивает хранение больших бинарных объектов, поддерживает журналирование операций по изменению и добавлению данных в БД, может работать в соответствии с парадигмой Map/Reduce, поддерживает репликацию и построение отказоустойчивых конфигураций.
В MongoDB имеются встроенные средства по обеспечению шардинга (распределение набора данных по серверам на основе определенного ключа), комбинируя который репликацией данных можно построить горизонтально масштабируемый кластер хранения, в котором отсутствует единая точка отказа (сбой любого узла не сказывается на работе БД), поддерживается автоматическое восстановление после сбоя и перенос нагрузки с вышедшего из строя узла. Расширение кластера или преобразование одного сервера в кластер производится без остановки работы БД простым добавлением новых машин.
Особенности нового выпуска:
- С целью повышения безопасности управляющий процесс MongoDB теперь привязывается к сетевому адресу localhost и принимает только локальные соединение. Без данной привязки администраторы часто по недосмотру открывали доступ к БД для внешних сетей без применения аутентификации, что приводило к массовым утечкам данных и атакам вредоносных шифровальщиков. Для дополнительной защиты конфигураций, которым необходим приём соединений из внешних сетей, предоставлена возможность определения белых списков адресов с которых разрешено подключение к БД;
- Добавлены «потоки изменений» (оператор $changeStream и метод watch), при помощи которых можно организовать отправку приложениям уведомлений об изменении данных в БД. Сведения об изменениях поступают в режиме реального времени и позволяют создавать приложения с использованием методов реактивного и событийно-ориентированного программирования. Необходимые события можно отсеивать и агрегировать при помощи операторов $match, $project и $redact;
- Возможность автоматического осуществления повторных попыток выполнения операций записи, завершившихся сбоем, без необходимости реализации логики обработки сбоев на стороне приложения. Например, в случае проблем с сетью будут осуществляться попытки повторного выполнения операции записи до тех пор пока она не увенчается успехом;
- Реализация средств для проверки корректности структуры документов (Schema validation), используя синтаксис, определённый в стандарте IETF JSON Schema. Разработчики теперь могут явно описать структуру документа для каждой коллекции, определив правила вплоть до отдельных столбцов во вложенных массивах. В зависимости от стадий выполнения или приложений можно активировать жесткую проверку соответствия заданным правилам, выключать её или применять только к отдельным наборам полей;
- Предоставлена порция новых возможностей для решения задач аналитики. Реализованы новые операции агрегирования данных ($arrayToObject, $objectToArray, $mergeObjects, $dateFromString, $dateFromParts, $dateToParts). Добавлен оператор $lookup, позволяющий формировать выборки, похожие на подзапросы и JOIN-слияния в SQL. Подготовлен модуль для интеграции с системами бизнес-анализа (Tableau, Qlik, SAP Business Objects), позволяющий использовать данные MongoDB в системах аналитики и визуализации, рассчитанных на использование SQL. Подготовлен новый драйвер для языка R, поддерживающий тип BSON;
- Поддержка причинной консистентности (causal consistency), гарантирующей, что каждая операция чтения в рамках клиентского сеанса всегда учитывает результат предыдущей операции записи, независимо от того какая реплика использовалась для выполнения запроса. Иными словами обеспечивается логическая целостность порядка операций чтения и записи, независимо от того к какому узлу кластера MongoDB обратился клиент;
- Возможность обновления группы элементом в массиве. Оператор $[] позволяет разом обновить значение всех элеменов, а оператор $[{identifier}] часть элементов массива, которые удовлетворяют заданному фильтру (задаётся через опцию arrayFilters);
- Добавлена поддержка сжатия трафика между клиентом и сервером;
- Прекращена поддержка платформы Solaris.
© OpenNet