Доступен (https://www.mongodb.com/blog/post/announcing-the-general-ava...) стабильный выпуск документо-ориентированной СУБД MongoDB 3.6 (https://www.mongodb.com/mongodb-3.6), которая занимает нишу между быстрыми и масштабируемыми системами, оперирующими данными в формате ключ/значение, и реляционными СУБД, функциональными и удобными в формировании запросов. Код MongoDB написан на языке C++ и распространяется в рамках лицензии AGPLv3. Сборки MongoDB 3.6 сформированы (https://www.mongodb.org/downloads#community) для Linux, Windows и macOS.
MongoDB поддерживает хранение документов в JSON-подобном формате, имеет достаточно гибкий язык для формирования запросов, может создавать индексы для различных хранимых атрибутов, эффективно обеспечивает хранение больших бинарных объектов, поддерживает журналирование операций по изменению и добавлению данных в БД, может работать в соответствии с парадигмой Map/Reduce, поддерживает репликацию и построение отказоустойчивых конфигураций.
В MongoDB имеются встроенные средства по обеспечению шардинга (распределение набора данных по серверам на основе определенного ключа), комбинируя который репликацией данных можно построить горизонтально масштабируемый кластер хранения, в котором отсутствует единая точка отказа (сбой любого узла не сказывается на работе БД), поддерживается автоматическое восстановление после сбоя и перенос нагрузки с вышедшего из строя узла. Расширение кластера или преобразование одного сервера в кластер производится без остановки работы БД простым добавлением новых машин.
Особенности (http://docs.mongodb.org/manual/release-notes/3.6/) нового (https://www.mongodb.com/mongodb-3.6) выпуска (https://www.mongodb.com/blog/post/whats-new-in-mongodb-36-pa...):
- С целью повышения безопасности управляющий процесс MongoDB теперь привязывается к сетевому адресу localhost и принимает только локальные соединение. Без данной привязки администраторы часто по недосмотру открывали доступ к БД для внешних сетей без применения аутентификации, что приводило (https://www.opennet.me/opennews/art.shtml?num=41661) к массовым утечкам данных (https://www.opennet.me/opennews/art.shtml?num=43540) и атакам (https://www.opennet.me/opennews/art.shtml?num=45833) вредоносных шифровальщиков (https://www.opennet.me/opennews/art.shtml?num=45817). Для дополнительной защиты конфигураций, которым необходим приём соединений из внешних сетей, предоставлена возможность определения белых списков адресов с которых разрешено подключение к БД;
- Добавлены "потоки изменений" (оператор $changeStream и метод watch), при помощи которых можно организовать отправку приложениям уведомлений об изменении данных в БД. Сведения об изменениях поступают в режиме реального времени и позволяют создавать приложения с использованием методов реактивного (https://ru.wikipedia.org/wiki/%D0%A0%D0%...) и событийно-ориентированного программирования (https://ru.wikipedia.org/wiki/%D0%A1%D0%...). Необходимые события можно отсеивать и агрегировать при помощи операторов $match, $project и $redact;
- Возможность автоматического осуществления повторных попыток выполнения операций записи, завершившихся сбоем, без необходимости реализации логики обработки сбоев на стороне приложения. Например, в случае проблем с сетью будут осуществляться попытки повторного выполнения операции записи до тех пор пока она не увенчается успехом;
- Реализация средств для проверки корректности структуры документов (Schema validation), используя синтаксис, определённый в стандарте IETF JSON Schema. Разработчики теперь могут явно описать структуру документа для каждой коллекции, определив правила вплоть до отдельных столбцов во вложенных массивах. В зависимости от стадий выполнения или приложений можно активировать жесткую проверку соответствия заданным правилам, выключать её или применять только к отдельным наборам полей;
- Предоставлена порция новых возможностей для решения задач аналитики. Реализованы новые операции агрегирования данных ($arrayToObject, $objectToArray, $mergeObjects, $dateFromString, $dateFromParts, $dateToParts). Добавлен оператор $lookup (https://docs.mongodb.com/manual/reference/operator/aggregati...), позволяющий формировать выборки, похожие (https://docs.mongodb.com/manual/reference/operator/aggregati...) на подзапросы и JOIN-слияния в SQL. Подготовлен модуль для интеграции с системами бизнес-анализа (Tableau, Qlik, SAP Business Objects), позволяющий использовать данные MongoDB в системах аналитики и визуализации, рассчитанных на использование SQL. Подготовлен новый драйвер для языка R, поддерживающий тип BSON;
- Поддержка причинной консистентности (https://ru.wikipedia.org/wiki/%D0%9F%D1%...) (causal consistency (https://docs.mongodb.com/master/core/read-isolation-consiste...)), гарантирующей, что каждая операция чтения в рамках клиентского сеанса всегда учитывает результат предыдущей операции записи, независимо от того какая реплика использовалась для выполнения запроса. Иными словами обеспечивается логическая целостность порядка операций чтения и записи, независимо от того к какому узлу кластера MongoDB обратился клиент;
- Возможность обновления группы элементом в массиве. Оператор $[] позволяет разом обновить значение всех элеменов, а оператор $[{identifier}] часть элементов массива, которые удовлетворяют заданному фильтру (задаётся через опцию arrayFilters);
- Добавлена поддержка сжатия трафика между клиентом и сервером;
- Прекращена (https://www.opennet.me/opennews/art.shtml?num=47093) поддержка платформы Solaris.
URL: https://www.mongodb.com/blog/post/announcing-the-general-ava...
Новость: http://www.opennet.me/opennews/art.shtml?num=47702