Доступна документо-ориентированная СУБД MongoDB 6.0
После года разработки представлен выпуск документо-ориентированной СУБД MongoDB 6.0, которая занимает нишу между быстрыми и масштабируемыми системами, оперирующими данными в формате ключ/значение, и реляционными СУБД, функциональными и удобными в формировании запросов. Код MongoDB написан на языке C++ и распространяется под лицензией SSPL, которая основана на лицензии AGPLv3, но не является открытой, так как содержит дискриминирующее требование поставки под лицензией SSPL не только кода самого приложения, но и исходных текстов всех компонентов, вовлечённых в предоставление облачного сервиса.
MongoDB поддерживает хранение документов в JSON-подобном формате, имеет достаточно гибкий язык для формирования запросов, может создавать индексы для различных хранимых атрибутов, эффективно обеспечивает хранение больших бинарных объектов, поддерживает журналирование операций по изменению и добавлению данных в БД, может работать в соответствии с парадигмой Map/Reduce, поддерживает репликацию и построение отказоустойчивых конфигураций.
В MongoDB имеются встроенные средства по обеспечению сегментирования (распределение набора данных по серверам на основе определенного ключа), в сочетании с репликацией позволяющие построить горизонтально масштабируемый кластер хранения, в котором отсутствует единая точка отказа (сбой любого узла не сказывается на работе БД), поддерживается автоматическое восстановление после сбоя и перенос нагрузки с вышедшего из строя узла. Расширение кластера или преобразование одного сервера в кластер производится без остановки работы БД простым добавлением новых машин.
Основные особенности нового выпуска:
Реализована возможность выполнения запросов, охватывающих данные, хранимые в зашифрованном виде (Queryable Encryption). Данные расшифровываются на стороне пользователя и в процессе обработки запроса остаются зашифрованными (запрос выполняется над зашифрованными данными, без их предварительной расшифровки). В текущем виде в запросах допускаются только выражения сравнения, но в дальнейшем планируется добавить поддержку проверки диапазонов, префиксов, суффиксов, подстрок и других операций.
Расширены возможности, связанные с хранением данных в форме временного ряда (time series collections), оптимизированные для хранения срезов значений параметров, записываемых через определённые промежутки времени (время и набор соответствующих этому времени значений), например, необходимость в хранении подобных данных возникает в системах мониторинга, финансовых платформах, системах опроса состояний датчиков. В новом выпуске предоставлена возможность использования вторичных и составных индексов с коллекциями данных в форме временного ряда. Добавлена поддержка прикрепления дополнительных данных, например, географической информации для учёта расстояния и местоположения. Повышена производительность чтения, выполнения запросов и сортировки.
Добавлены новые средства по отслеживанию изменений («потоки изменений», API Change Streams), при помощи которых можно организовать отправку приложениям уведомлений об изменении данных в БД. Сведения об изменениях поступают в режиме реального времени и позволяют создавать приложения с использованием методов реактивного и событийно-ориентированного программирования. События обрабатываются при помощи метода watch, при необходимые события можно отсеивать и агрегировать при помощи операторов $match, $project и $redact. В новой версии предоставлена возможность получения предыдущего и последующего состояния документа (например, когда документ удалён или изменён). Помимо операций с использованием языка DML (data manipulation language) предоставлена поддержка операций DDL (data definition language), таких как создание и удаление индексов и коллекций. Добавлены средства для фильтрации ассоциированных уведомлений.
В операторах $lookup и $graphlookup реализована полная поддержка секционированных (sharded) хранилищ. Оптимизирована производительность операции $lookup, например, при наличии индекса по внешнему ключу сопоставление небольшого числа документов теперь выполняется в 5–10 раз быстрее, а большого числа — в два раза быстрее. Для сопоставлений без использования индексов прирост производительности может достигать 100 раз.
Предоставлена возможность выполнения сложных аналитических запросов над непротиворечивыми срезами (snapshot) состояния рабочих данных. Подобные аналитические запросы могут охватывать несколько сегментов в больших распределённых конфигурациях MongoDB.
- Добавлены новые операторы $maxN, $minN и $lastN для определения значений в наборе данных, а также оператор $sortArray для сортировки элементов массива.
Значительно повышена эффективность сегментирования. Применяемый по умолчанию размер блока для сегментированной коллекции увеличен до 128 МБ. Добавлена команда configureCollectionBalancing для дефрагментации сегментированной коллекции.
В средства клиентского шифрования данных на уровне полей (CSFLE, client-side field-level encryption) добавлена поддержка KMIP-совместимых провайдеров ключей.
Добавлена возможность сжатия и шифрования лога аудита, в котором отражается активность пользователей СУБД.
Реализован экспериментальный режим синхронизации данных между кластерами MongoDB (Cluster-to-Cluster Sync).
Источник: http://www.opennet.ru/opennews/art.shtml? num=57542
© OpenNet