After a year of development and four preliminary releases the first stable release of the new branch of the DBMS , which is developed as a fork of MySQL, maintaining backward compatibility and , integrating additional storage engines and enhanced capabilities. Support for the new branch will be provided for 5 years, until June 2025.
The development of MariaDB is overseen by the independent MariaDB Foundation, following a fully open and transparent development process that is not dependent on individual vendors. MariaDB is offered as a substitute for MySQL in many Linux distributions (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) and is implemented in major projects such as , and .
Key :
- A new storage engine has been added , allowing MariaDB tables to be stored in Amazon S3 or any other public or private cloud storage that supports the S3 API. S3 storage supports both regular and partitioned tables. When partitioned tables are stored in the cloud, they can be directly accessed from another server that has access to the S3 storage.
- A new storage engine has been added , which stores data column-wise and uses distributed architecture. The engine is based on the MySQL storage technology and is intended for organizing processing and executing analytical queries over large datasets (Data Warehouse).
ColumnStore stores data not by rows but by columns, allowing for optimized execution of column grouping from a large database containing petabytes of data. It supports linear scaling, data storage in a compressed format, vertical and horizontal partitioning, and efficient execution of concurrent queries. - All executable files beginning with 'mysql' have been renamed to use 'mariadb'. Old names are retained as symbolic links.
- A new data type has been added for storing IPv6 addresses.
- Work has been done to divide privileges into smaller components. Instead of a general SUPER privilege, a series of specific privileges has been introduced: ‘BINLOG ADMIN’,
‘BINLOG REPLAY’,
‘CONNECTION ADMIN’,
‘FEDERATED ADMIN’,
‘READ_ONLY ADMIN’,
‘REPLICATION MASTER ADMIN’,
‘REPLICATION SLAVE ADMIN’, and
‘SET USER’. - The privilege "REPLICATION CLIENT" has been renamed to "BINLOG MONITOR," and the statement "SHOW MASTER STATUS" has been changed to "SHOW BINLOG STATUS." This renaming clarifies behavior and is not related to political correctness; the project does not shy away from the terms master/slave and has even added new privileges, "MASTER ADMIN" and "SLAVE ADMIN." Additionally, a new keyword "REPLICA" has been added to SQL statements, which is a synonym for "SLAVE."
- For some statements, the required privileges for execution have been changed. "SHOW BINLOG EVENTS" now requires "BINLOG MONITOR" rights instead of "REPLICATION SLAVE," "SHOW SLAVE HOSTS" requires "REPLICATION MASTER ADMIN" privileges instead of "REPLICATION SLAVE," "SHOW SLAVE STATUS" requires "REPLICATION SLAVE ADMIN" or "SUPER" rights instead of "REPLICATION CLIENT," and "SHOW RELAYLOG EVENTS" requires "REPLICATION SLAVE ADMIN" instead of "REPLICATION SLAVE."
- New constructs have been added:" and "which return a list of inserted/replaced rows in a form as if the values were returned using the SELECT statement (similar to "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 |
+——+———+———+———-+ - Expressions have been added:" and "to exclude/include results based on a specific set of values.
- It is now possible to specify comments within "CREATE DATABASE" and "ALTER DATABASE" blocks.
- Constructs for renaming indexes and columns have been added:" and "«.
- In the "ALTER TABLE" and "RENAME TABLE" operations, support for the "IF EXISTS" condition has been added, allowing the operation to execute only if the table exists;
- For indexes in "CREATE TABLE," the attribute "«.
- has been implemented. .
- New Functions and JSON_OBJECTAGG
- for returning an array or JSON object with values from the specified column.
- Additional system information tables (THREAD_POOL_GROUPS, THREAD_POOL_QUEUES, THREAD_POOL_STATS, and THREAD_POOL_WAITS) have been added for the thread pool.
- The ANALYZE statement has been extended to show the time spent checking the WHERE clause and executing auxiliary operations.
- The optimizer for range processing now takes into account "IS NOT NULL" conditions.
- In , used for organizing replication, new metadata fields have been added, including Primary Key, Column Name, Character Set, and Geometry Type. The mariadb-binlog utility and the commands "SHOW BINLOG EVENTS" and "SHOW RELAYLOG EVENTS" now provide display of replication flags.
- Design now securely tables remaining in the storage engine, even in the absence of ".frm" or ".par" files.
- A hardware-accelerated version of the crc32() function has been implemented for AMD64, ARMv8, and POWER 8 CPUs.
- Some default settings have been changed. The innodb_encryption_threads parameter has been increased to 255, and the max_sort_length value has been increased from 4 to 8.
- Numerous performance optimizations have been introduced for the InnoDB engine.
- Full support for synchronous multi-master replication has been added to the Galera mechanism (Global Transaction ID), unique transaction identifiers for all nodes in the cluster.
- Transition to a new branch of the library has been made. (Perl Compatible Regular Expressions), instead of the classic PCRE 8.x series.
- New versions of wrappers for connecting to MariaDB and MySQL databases from programs in Python and C have been proposed: and . The Python wrapper conforms to the Python DB API 2.0, is written in C, and uses the Connector/C library for connecting to the server.
Source: opennet.ru
