Стабільний випуск СКБД MariaDB 10.5

Після року розробки та чотирьох попередніх випусків підготовлений перший стабільний реліз нової гілки СУБД MariaDB 10.4, в рамках якої розвивається відгалуження від MySQL, що зберігає зворотну сумісність та відмінне інтеграцією додаткових двигунів зберігання та розширених можливостей. Підтримка нової гілки буде здійснюватись 5 років, до червня 2025 року.

Розвиток MariaDB займається незалежною організацією MariaDB Foundation відповідно до повністю відкритого та прозорого процесу розробки, що не залежить від окремих виробників. MariaDB поставляється замість MySQL у багатьох дистрибутивах Linux (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) та впроваджений у таких великих проектах, як Вікіпедія, Google Cloud SQL и Nimbuzz.

Ключові поліпшення MariaDB 10.5:

  • Доданий двигун зберігання S3, що дозволяє розміщувати таблиці MariaDB в Amazon S3 або будь-якому іншому публічному або приватному хмарному сховищі, що підтримує API S3. Підтримується розміщення у S3 як звичайних, так і секційованих (партикованих) таблиць. При розміщенні у хмарі секційованих таблиць вони можуть безпосередньо використовуватися в тому числі з іншого сервера, що має доступ до сховища S3.
  • Доданий двигун зберігання ColumnStore, який зберігає дані у прив'язці до стовпців і використовує масово-паралельну розподілену архітектуру. Двигун заснований на напрацюваннях MySQL-сховища InfiniDB та призначений для організації обробки та виконання аналітичних запитів над великими масивами даних (Data Warehouse).
    ColumnStore зберігає дані не рядковим чином, а з розбивкою по стовпцях, що дозволяє оптимізувати виконання угруповання по стовпчиках з БД великого розміру, що включає петабайти даних. Підтримується лінійне масштабування, зберігання даних у стислому вигляді, вертикальне та горизонтальне партикування, ефективне виконання конкуруючих запитів.

  • Всі файли, що виконуються зі слова «mysql» перейменовані з використанням слова «mariadb». Старі імена збережені у вигляді символічних посилань.
  • Додано новий тип даних INET6 для зберігання адрес IPv6.
  • Виконано роботу з поділу привілеїв на дрібніші складові. Замість загального привілею SUPER запропоновано серію з вибіркових привілеїв «BINLOG ADMIN»,
    «BINLOG REPLAY»,
    "CONNECTION ADMIN",
    "FEDERATED ADMIN",
    "READ_ONLY ADMIN",
    "REPLICATION MASTER ADMIN",
    «REPLICATION SLAVE ADMIN» та
    "SET USER".

  • Привілей «REPLICATION CLIENT» перейменований на «BINLOG MONITOR», а вираз «SHOW MASTER STATUS» на «SHOW BINLOG STATUS». Перейменування уточнює поведінку та не пов'язане з політкоректністю, проект не відмовляється від термінів master/slave і навіть додав нові привілеї «MASTER ADMIN» та «SLAVE ADMIN». При цьому SQL вирази доданий новий ключ «REPLICA», що є синонімом «SLAVE».
  • Для деяких виразів змінено привілеї, необхідні їх виконання. "SHOW BINLOG EVENTS" тепер вимагає прав "BINLOG MONITOR" замість "REPLICATION SLAVE", "SHOW SLAVE HOSTS" вимагає привілею "REPLICATION MASTER ADMIN" замість "REPLICATION SLAVE", "SHOW SLAVE STATUS" вимагає прав "REPLICATION SLAVE ADMIN" SUPER замість "REPLICATION CLIENT", "SHOW RELAYLOG EVENTS" вимагає прав "REPLICATION SLAVE ADMIN" замість "REPLICATION SLAVE".
  • Додані конструкції «INSERT … RETURNING» та «REPLACE … RETURNING«, що повертають список вставлених/замінених стік у формі, ніби значення поверталися при використанні виразу SELECT (за аналогією з «DELETE … RETURNING»).

    INSERT INTO t2 VALUES (1,'Dog'),(2,'Lion'),(3,'Tiger'),(4,'Leopard')
    RETURNING id2,id2+id2,id2&id2,id2||id2;
    +——+———+———+———-+
    | id2 | id2+id2 | id2&id2 | id2||id2 |
    +——+———+———+———-+
    | 1 | 2 | 1 | 1 |
    | 2 | 4 | 2 | 1 |
    | 3 | 6 | 3 | 1 |
    | 4 | 8 | 4 | 1 |
    +——+———+———+———-+

  • Додані вирази «EXCEPT ALL» та «INTERSECT ALL» для виключення/доповнення результату певним набором значень.
  • З'явилася можливість вказівки коментарів усередині блоків CREATE DATABASE і ALTER DATABASE.
  • Додані конструкції для перейменування індексів та стовпців «ALTER TABLE … RENAME INDEX/KEY» та «ALTER TABLE … RENAME COLUMN".
  • В операції «ALTER TABLE» та «RENAME TABLE» додано підтримку умови «IF EXISTS» для виконання операції лише за наявності таблиці;
  • Для індексів у «CREATE TABLE» реалізовано атрибут «VISIBLE".
  • Додано вираз «CYCLE» для виявлення рекурсивних циклів КТР.
  • Додані функції JSON_ARRAYAGG и JSON_OBJECTAGG для повернення масиву або об'єкта JSON зі значеннями вказаного стовпця.
  • Додані службові інформаційні таблиці (THREAD_POOL_GROUPS, THREAD_POOL_QUEUES, THREAD_POOL_STATS та THREAD_POOL_WAITS) для пулу потоків (thread_pool).
  • Вираз ANALYZE розширено показом часу, який витрачається на перевірку блоку WHERE та виконання допоміжних операцій.
  • В оптимізаторі обробки діапазонів враховано ознаки "IS NOT NULL"
  • Істотно скорочено розмір тимчасових файлів, що використовуються при сортуванні з типами VARCHAR, CHAR та BLOB.
  • В бінарний лог, що використовується для організації реплікації, додані нові поля метаданими, включаючи Primary Key, Column Name, Character Set і Geometry Type. В утиліті mariadb-binlog та командах «SHOW BINLOG EVENTS» та «SHOW RELAYLOG EVENTS» забезпечено показ прапорів реплікації.
  • Конструкція СТОЛ тепер надійно видаляє таблиці, що залишаються в движку зберігання, навіть за відсутності файлів ".frm" або ".par".
  • Реалізовано апаратно прискорений варіант функції crc32() для CPU AMD64, ARMv8 та POWER 8.
  • Змінено деякі настойки за замовчуванням. Параметр innodb_encryption_threads збільшено до 255, а значення max_sort_length збільшено з 4 до 8.
  • Представлені численні оптимізації продуктивності двигуна InnoDB.
  • У механізм синхронної multi-master реплікації Galera додано повну підтримку GTID (Global Transaction ID), єдиних всім вузлів кластера ідентифікаторів транзакцій.
  • Здійснено перехід на нову гілку бібліотеки PCRE2 (Perl Compatible Regular Expressions) замість класичної серії PCRE 8.x.
  • Запропоновано нові версії обв'язок для підключення до СУБД MariaDB та MySQL із програм на мовах Python та C: MariaDB Connector/Python 1.0.0 и MariaDB Connector/C 3.1.9. Обв'язка для Python відповідає Python DB API 2.0, написана мовою Сі та використовує для підключення до сервера бібліотеку Connector/C.

Джерело: opennet.ru

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