Доступна документо-ориентированная СУБД 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