Dopo un anno di sviluppo e quattro versioni preliminari la prima versione stabile del nuovo ramo del DBMS , nel quale si sviluppa un branch derivato da MySQL, mantenendo la retrocompatibilità e integrazione di motori di archiviazione aggiuntivi e funzionalità avanzate. Il supporto per il nuovo ramo sarà fornito per 5 anni, fino a giugno 2025.
Lo sviluppo di MariaDB è guidato dall'organizzazione indipendente MariaDB Foundation seguendo un processo di sviluppo completamente aperto e trasparente, non dipendente da singoli produttori. MariaDB è fornito al posto di MySQL in molte distribuzioni Linux (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) ed è implementato in progetti di grandi dimensioni come , e .
Le chiave :
- È stato aggiunto un motore di archiviazione , che consente di memorizzare tabelle di MariaDB in Amazon S3 o in qualsiasi altro storage cloud pubblico o privato che supporti l'API S3. È supportata la memorizzazione in S3 di tabelle normali e partizionate. Quando le tabelle partizionate sono memorizzate nel cloud, possono essere utilizzate direttamente anche da un altro server che ha accesso allo storage S3.
- È stato aggiunto un motore di archiviazione , che archivia i dati in base alle colonne e utilizza Il motore è basato sugli sviluppi dello storage MySQL ed è progettato per organizzare l'elaborazione e l'esecuzione di query analitiche su grandi volumi di dati (Data Warehouse).
ColumnStore archivia i dati non per righe, ma per colonne, permettendo di ottimizzare l'esecuzione delle operazioni di raggruppamento su colonne di grandi dimensioni contenenti petabyte di dati. Supporta una scalabilità lineare, l'archiviazione dei dati in forma compressa, la partizione verticale e orizzontale, e l'esecuzione efficiente di query concorrenti. - Tutti i file eseguibili che iniziano con la parola «mysql» sono stati rinominati utilizzando la parola «mariadb». I nomi originali sono stati conservati sotto forma di collegamenti simbolici.
- È stato aggiunto un nuovo tipo di dato per memorizzare indirizzi IPv6.
- È stato effettuato un lavoro di suddivisione dei privilegi in componenti più piccole. Invece del privilegio generale SUPER, è stata proposta una serie di privilegi selettivi «BINLOG ADMIN»,
«BINLOG REPLAY»,
«CONNECTION ADMIN»,
«FEDERATED ADMIN»,
«READ_ONLY ADMIN»,
«REPLICATION MASTER ADMIN»,
«REPLICATION SLAVE ADMIN» e
«SET USER». - Il privilegio «REPLICATION CLIENT» è stato rinominato in «BINLOG MONITOR», e l'espressione «SHOW MASTER STATUS» è stata cambiata in «SHOW BINLOG STATUS». Questa rinomina chiarisce il comportamento e non è correlata alla politically correctness, il progetto non rinuncia ai termini master/slave e ha persino aggiunto nuovi privilegi «MASTER ADMIN» e «SLAVE ADMIN». Inoltre, nell'espressione SQL è stato aggiunto il nuovo chiave «REPLICA», che è un sinonimo di «SLAVE».
- Per alcune espressioni sono cambiati i privilegi richiesti per la loro esecuzione. «SHOW BINLOG EVENTS» ora richiede i diritti «BINLOG MONITOR» anziché «REPLICATION SLAVE», «SHOW SLAVE HOSTS» richiede il privilegio «REPLICATION MASTER ADMIN» invece di «REPLICATION SLAVE», «SHOW SLAVE STATUS» richiede i diritti «REPLICATION SLAVE ADMIN» o «SUPER» invece di «REPLICATION CLIENT», «SHOW RELAYLOG EVENTS» richiede il privilegio «REPLICATION SLAVE ADMIN» invece di «REPLICATION SLAVE».
- Sono state aggiunte le strutture «" e "», che restituiscono un elenco delle righe inserite/sostituite in forma, come se i valori fossero restituiti utilizzando l'espressione SELECT (simile a «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 |
+——+———+———+———-+ - Sono state aggiunte le espressioni «" e "» per escludere/aggiungere il risultato di un determinato insieme di valori.
- È ora possibile specificare commenti all'interno dei blocchi «CREATE DATABASE» e «ALTER DATABASE».
- Sono state aggiunte strutture per rinominare indici e colonne «» e ««.
- Nell'operazione «ALTER TABLE» e «RENAME TABLE» è stato aggiunto il supporto per la condizione «IF EXISTS» per eseguire l'operazione solo in caso di esistenza della tabella;
- Per gli indici in «CREATE TABLE» è stato implementato l'attributo ««.
- È stata aggiunta l'espressione «CYCLE» per identificare cicli ricorsivi .
- Sono state aggiunte funzioni e per restituire un array o un oggetto JSON con i valori della colonna specificata.
- Sono state aggiunte tabelle informative di servizio (THREAD_POOL_GROUPS, THREAD_POOL_QUEUES, THREAD_POOL_STATS e THREAD_POOL_WAITS) per il pool di thread (thread_pool).
- L'espressione ANALYZE è stata ampliata mostrando il tempo impiegato per controllare il blocco WHERE e per eseguire operazioni ausiliarie.
- Nell'ottimizzatore dell'elaborazione delle gamme sono state considerate le condizioni «IS NOT NULL»
- È stata notevolmente ridotta la dimensione dei file temporanei utilizzati nella ordinazione con tipi VARCHAR, CHAR e BLOB.
- In , utilizzato per organizzare la replica, sono stati aggiunti nuovi campi di metadati, inclusi Primary Key, Column Name, Character Set e Geometry Type. Nello strumento mariadb-binlog e nei comandi «SHOW BINLOG EVENTS» e «SHOW RELAYLOG EVENTS» è stata fornita la visualizzazione dei flag di replica.
- Struttura ora affidabile le tabelle che rimangono nel motore di archiviazione, anche in assenza di file «.frm» o «.par».
- È stata implementata una versione accelerata hardware della funzione crc32() per CPU AMD64, ARMv8 e POWER 8.
- Sono state modificate alcune impostazioni predefinite. Il parametro innodb_encryption_threads è stato aumentato a 255 e il valore di max_sort_length è stato aumentato da 4 a 8.
- Sono state presentate numerose ottimizzazioni delle prestazioni del motore InnoDB.
- È stata aggiunta il supporto completo nel meccanismo di replica multi-master sincronizzata Galera (Global Transaction ID), identificatori di transazione unici per tutti i nodi del cluster.
- È stato effettuato il passaggio a una nuova versione della libreria (Perl Compatible Regular Expressions), invece della classica serie PCRE 8.x.
- Sono state offerte nuove versioni dei wrapper per la connessione ai database MariaDB e MySQL da programmi scritti in Python e C: e . Il wrapper per Python è compatibile con Python DB API 2.0, scritto in linguaggio C e utilizza per la connessione al server la libreria Connector/C.
Fonte: opennet.ru
