След една година разработка и четири предварителни версии първият стабилен релиз на новото поколение СУБД , в рамките на която се развива разклонение от MySQL, запазващо обратно съвместимост и с интеграцията на допълнителни хранилища и разширени възможности. Поддръжката на новата версия ще се осъществява 5 години, до юни 2025 година.
Развитието на MariaDB се ръководи от независимата организация MariaDB Foundation в съответствие с напълно отворен и прозрачен процес на разработка, независещ от отделни производители. MariaDB се предоставя вместо MySQL в много дистрибуции на Linux (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) и е внедрена в значими проекти като , и .
Ключови :
- Добавен е хранилищен двигател , позволяващ разполагането на таблици MariaDB в Amazon S3 или всяко друго публично или частно облачно хранилище, поддържащо API S3. Поддържа се разполагане в S3 както на обикновени, така и на секционирани таблици. При разполагане в облака на секционирани таблици те могат директно да се използват от друг сървър с достъп до хранилището S3.
- Добавен е хранилищен двигател , който съхранява данни по колони и използва разпределена архитектура. Двигателят е базиран на разработките на MySQL-съхранението и е предназначен за организиране на обработка и изпълнение на аналитични запитвания върху големи масиви от данни (Data Warehouse).
ColumnStore съхранява данни не ред по ред, а по колони, което позволява оптимизиране на изпълнението на групиране по колони от голяма база данни, включваща петабайти данни. Поддържа линейно мащабиране, съхранение на данни в компресиран вид, вертикално и хоризонтално партициониране, ефективно изпълнение на конкурентни запитвания. - Всички изпълними файлове, започващи с думата „mysql“ са преименувани с използването на думата „mariadb“. Старите имена са запазени под форма на символични линкове.
- Добавен е нов тип данни за съхраняване на адреси 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».
- Добавени са конструкции «» и „», връщащи списък на вставените/заменените стойности във формата, както ако стойностите се връщат при използване на израза 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 |
+——+———+———+———-+ - Добавени са изрази «» и „» за изключване/допълване на резултата с определен набор от стойности.
- Появи се възможността за указване на коментари вътре в блоковете «CREATE DATABASE» и «ALTER DATABASE».
- Добавени са конструкции за преименуване на индекси и колони «» и ««.
- В операцията «ALTER TABLE» и «RENAME TABLE» е добавена поддръжка на условието «IF EXISTS» за извършване на операцията само при съществуването на таблицата;
- За индексите в «CREATE TABLE» е реализиран атрибутът ««.
- Добавено е изразяване «CYCLE» за откриване на рекурсивни цикли .
- Добавени са функции и за връщане на масив или обект 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 е добавена пълна поддръжка на (Global Transaction ID), уникални за всички възли на кластера идентификатори на транзакции.
- Осъществен е преход към нова версия на библиотеката (Perl Compatible Regular Expressions), вместо класическата серия PCRE 8.x.
- Предложени са нови версии на библиотеките за свързване с бази данни MariaDB и MySQL от програми на езици Python и C: и . Обвивката за Python отговаря на Python DB API 2.0, написана е на езика C и използва библиотеката Connector/C за свързване със сървъра.
Източник: opennet.ru
