Доступна документо-ориентированная СУБД MongoDB 5.0
Представлен выпуск документо-ориентированной СУБД MongoDB 5.0, которая занимает нишу между быстрыми и масштабируемыми системами, оперирующими данными в формате ключ/значение, и реляционными СУБД, функциональными и удобными в формировании запросов. Код MongoDB написан на языке C++ и распространяется под лицензией SSPL, которая основана на лицензии AGPLv3, но не является открытой, так как содержит дискриминирующее требование поставки под лицензией SSPL не только кода самого приложения, но и исходных текстов всех компонентов, вовлечённых в предоставление облачного сервиса.
MongoDB поддерживает хранение документов в JSON-подобном формате, имеет достаточно гибкий язык для формирования запросов, может создавать индексы для различных хранимых атрибутов, эффективно обеспечивает хранение больших бинарных объектов, поддерживает журналирование операций по изменению и добавлению данных в БД, может работать в соответствии с парадигмой Map/Reduce, поддерживает репликацию и построение отказоустойчивых конфигураций.
В MongoDB имеются встроенные средства по обеспечению сегментирования (распределение набора данных по серверам на основе определенного ключа), в сочетании с репликацией позволяющие построить горизонтально масштабируемый кластер хранения, в котором отсутствует единая точка отказа (сбой любого узла не сказывается на работе БД), поддерживается автоматическое восстановление после сбоя и перенос нагрузки с вышедшего из строя узла. Расширение кластера или преобразование одного сервера в кластер производится без остановки работы БД простым добавлением новых машин.
Особенности нового выпуска:
Добавлены коллекции для данных в форме временного ряда (time series collections), оптимизированные для хранения срезов значений параметров, записываемых через определённые промежутки времени (время и набор соответствующих этому времени значений). Необходимость в хранении подобных данных возникает в системах мониторинга, финансовых платформах, системах опроса состояний датчиков. Работа с данными временного ряда осуществляется как с обычными коллекциями документов, но индексы и метод хранения для них оптимизированы с учётом привязки ко времени, что позволяет значительно сократить потребление места на диске, уменьшить задержки при выполнении запросов и реализовать возможность анализа данных в режиме реального времени.
MongoDB рассматривает подобные коллекции как доступные на запись нематериализированные представления, созданные на базе внутренних коллекций и при вставке автоматически группирующие данные временного ряда в оптимизированный формат хранения. При этом каждая привязанная ко времени запись при запросе трактуется как отдельный документ. Данные автоматически упорядочиваются и индексируются по времени (нет необходимости в явном создании индексов по времени).
Добавлена поддержка оконных операторов (аналитических функций), позволяющих выполнить действия с определённым набором документов в коллекции. В отличие от агрегатных функций, оконные функции не свёртывают сгруппированный набор, а производят агрегирование на основе содержимого «окна», включающего один или более документов из результирующего набора. Для манипуляции с подмножеством документов предложена новая стадия $setWindowFields, при помощи которой можно, например, определить различия между двумя документами в коллекции, рассчитать рейтинг продаж и проанализировать информацию в сложных временных рядах.
Добавлена поддержка версионирования API, позволяющая привязать приложение к определённому состоянию API и исключить риски, связанные с возможным нарушением обратной совместимости при переходе на новые выпуски СУБД. Версионирование API отделяет жизненный цикл приложения от жизненного цикла СУБД и позволяет разработчикам вносить изменения в приложение тогда, когда возникла потребность задействовать новые возможности, а не когда выполняется переход на новую версию СУБД.
Добавлена поддержка механизма Live Resharding, позволяющего на лету менять используемые для сегментирования ключи (shard key) без остановки СУБД.
Расширены возможности шифрования полей на стороне клиента (Client-Side Field Level Encryption). Появилась возможность перенастройки фильтров аудита и ротации сертификатов x509 без остановки работы СУБД. Добавлена поддержка настройки набора шифров для TLS 1.3.
Предложена новая оболочка командной строки MongoDB Shell (mongosh), которая развивается как отдельный проект, написана на JavaScript с использованием платформы Node.js и распространяется под лицензией Apache 2.0. MongoDB Shell даёт возможность подключаться к СУБД, менять настройки и отправлять запросы. Поддерживается умное автодополнение ввода методов, команд и выражений MQL, подсветка синтаксиса, контекстная подсказка, разбор сообщений об ошибках и возможность расширения функциональности через дополнения. Старая CLI-оболочка «mongo» объявлена устаревшей и будет удалена в будущем выпуске.
Добавлены новые операторы: $count, $dateAdd, $dateDiff, $dateSubtract, $sampleRate и $rand.
Обеспечено задействование индексов при использовании операторов $eq, $lt, $lte, $gt и $gte внутри выражения $expr.
В командах aggregate, find, findAndModify, update, delete и методах db.collection.aggregate (), db.collection.findAndModify (), db.collection.update () и db.collection.remove () реализована поддержка опции «let» для определения списка переменных, делающих команды более читаемые благодаря отделению переменных от текста запроса.
Операции find, count, distinct, aggregate, mapReduce, listCollections и listIndexes теперь не блокируются, если параллельно выполняется операция, выставляющая эксклюзивную блокировку на коллекцию документов.
В рамках инициативы по избавлению от неполиткорректных терминов команда isMaster и метод db.isMaster () переименованы в hello и db.hello ().
Изменена схеме нумерации выпусков и осуществлён переход на предсказуемый график формирования релизов. Раз в год будет формироваться значительный релиз (5.0, 6.0, 7.0), раз в три месяца промежуточные выпуски с новыми возможностями (5.1, 5.2, 5.3) и по мере необходимости корректирующие обновления с исправлением ошибок и уязвимостей (5.1.1, 5.1.2, 5.1.3). В промежуточных выпусках будет формироваться функциональность для следующего значительного релиза, т.е. в MongoDB 5.1, 5.2 и 5.3 будет сформированы новые возможности для выпуска MongoDB 6.0.
Источник: http://www.opennet.ru/opennews/art.shtml? num=55481
© OpenNet