Доступна документоорієнтована СУБД 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» оголошена застарілою та буде видалена у майбутньому випуску.
    Доступна документоорієнтована СУБД MongoDB 5.0
  • Додані нові оператори: $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.

Джерело: opennet.ru

Додати коментар або відгук