Mongo 5

Нещодавно відбулася знакова подія для всіх розробників MongoDB — вийшла 5-я версія цього чудового продукту (разом з першими оновленнями). 12 років знадобилося інженерам Mongo Inc, щоб випустити 5 ключових версій. Ми розглядаємо Mongo в нашому тренінгу «Mongo для Java розробників», зрозуміло, нам самим цікаво, що нового ми отримаємо від апгрейда, тому давайте розглянемо оглядово ті зміни, які увійшли в нову версію:

  • Time series колекції
  • Версії API
  • Live Resharding
  • Підтримка serverless в Atlas (в режимі preview)
  • Нові вимоги до архітектури CPU
  • Новая Mongo shell (mongosh)
  • Нові оператори для агрегації даних ($dateadd, $datediff та інші)
  • Нові метрики
  • Deprecated команди роботи з колекціями видалені

Time series колекції — це Mongo колекції, які призначені для зберігання особливих документів — результатів вимірювань за часом. Ви можете зберігати ці дані і в звичайній колекції, але з огляду на величезний розмір такої колекції, з новим підходом ви як економите в дисковому просторі, так і отримуєте виграш у швидкодії при запитах. Mongo 5 пред’являє тільки одну вимогу до таких документів — там повинно бути поле, що містить дату вимірювання, а також опціонально метадані (описують вимір) і періодичність вимірювання (години, хвилини, секунди) і час життя документа.

Версії API дозволяють розробникам більш просто і безпечно переходити на нові версії Mongo сервера. Тепер під час з’єднання вашого клієнта з сервером ви можете вказати версію API (зараз підтримується тільки одна версія — «1»). І навіть якщо в майбутніх версіях Mongo з’являться зміни в його API, вказуючи стару версію API, можна не турбуватися про втрату сумісності (наприклад, в разі видалення або перейменування параметрів). Це в свою чергу спростить підтримку legacy проектів при оновленні версії Mongo. Зрозуміло, ніхто не гарантує довічну підтримку всіх версій API, підтримка найстаріших версій буде згодом припинена.

Live Resharding дозволяє змінити sharding ключ без downtime сервера і необхідності вручну копіювати дані між старою і новою копіями колекції. У минулому неправильний вибір такого ключа міг привести до нерівномірного розподілу даних між шардами, що створювало проблеми з ефективністю і масштабування. Тепер з’явилася команда reshardCollection, яка не тільки змінює sharding ключ, а й автоматично перерозподіляє дані між шардами. При цьому в стадії commit сервер (resharding coordinator) може блокувати запис даних в колекцію, поки зміни остаточно не зафіксовано.

Serverless бази даних з’явилися не так давно. Головна відмінність serverless архітектури — ви платите тільки за ті операції, які здійснюються і той час, коли ваші ресурси використовуються. Крім того, ваш service provider може динамічно масштабувати кількість ваших computation units в залежності від поточного навантаження. Тому вам як DevOps не потрібно замислюватися, скільки серверів і якої потужності вибрати для вашого проекту. Serverless БД діють аналогічно. Ви платите тільки за те місце на диску, яке використовуєте і ті операції читання/запису, які здійснюються. Причому в Atlas масштабування може здійснюватися окремо для рівня обробки даних і для рівня зберігання даних.

Ще одне цікаве нововведення — Mongo 5 буде працювати тільки на процесорах архітектури сімейств Intel Sandy Bridge /AMD Buldozer /ARMv8.2 або більш пізніх. Аналогічно припинена підтримка і старих ОС:

  • RHEL/Oracle Linux/CentOS 6.2
  • Ubuntu 16
  • Debian 8
  • Windows1/Windows Server 2012 R2
  • macOs 10.13

У Mongo 5 остаточно видалені три застарілі команди для роботи з колекціями: createIndex, save і copyTo. Замість них пропонується використовувати ensureIndex, insertOne/insertMany і команди агрегації. Крім того, слід перевірити, що ваш Mongo драйвер підтримує роботу з Mongo 5. Для Java це драйвер останньої версії (4.3).

У новій shell mongosh нарешті з’явилися ті фітчи, які є у всіх сучасних редакторах: підсвічування синтаксису, авто-доповнення, контекстна допомога, більш докладні повідомлення про помилки і розширення (snippets). Відповідно, стара shell mongo оголошений deprecated і буде видалений в майбутньому. Цікаво, що поточна версія mongosh (1.0.1) не збігається з версією Mongo сервера.

👍НравитсяПонравилось4
В избранноеВ избранном1
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Подписаться на комментарии