Nach einem Jahr Entwicklung und vier Vorabversionen ist dies die erste stabile Veröffentlichung des neuen Branches der Datenbanksoftware , der als Abspaltung von MySQL entwickelt wurde, die abwärtskompatibel bleibt und mit der Integration zusätzlicher Speichermotoren und erweiterten Funktionen. Die Unterstützung für den neuen Branch wird fünf Jahre lang bis Juni 2025 bereitgestellt.
Die Entwicklung von MariaDB wird von der unabhängigen Organisation MariaDB Foundation gemäß einem vollständig offenen und transparenten Entwicklungsprozess betreut, der nicht von einzelnen Herstellern abhängig ist. MariaDB wird anstelle von MySQL in vielen Linux-Distributionen (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) ausgeliefert und in großen Projekten wie , und .
Schlüssige :
- wurde ein Speicher-Engine hinzugefügt , die es ermöglicht, MariaDB-Tabellen in Amazon S3 oder einem anderen öffentlichen oder privaten Cloud-Speicher zu hosten, der die S3-API unterstützt. Sowohl normale als auch partitionierte Tabellen können in S3 gehostet werden. Bei der Ablage von partitionierten Tabellen in der Cloud können diese auch direkt von einem anderen Server, der Zugriff auf den S3-Speicher hat, verwendet werden.
- wurde ein Speicher-Engine hinzugefügt , das Daten spaltenbasiert speichert und verteilte Architektur nutzt. Die Engine basiert auf den Entwicklungen des MySQL-Speichers und dient der Organisation der Verarbeitung und Ausführung analytischer Anfragen über große Datenmengen (Data Warehouse).
ColumnStore speichert Daten nicht zeilenweise, sondern spaltenweise, was die Durchführung von Gruppierungen über große Datenbanken mit mehreren Petabyte optimiert. Unterstützt werden lineare Skalierung, komprimierte Datenspeicherung sowie vertikale und horizontale Partitionierung, um konkurrierende Abfragen effizient auszuführen. - Alle ausführbaren Dateien, die mit dem Wort „mysql“ beginnen, wurden umbenannt, wobei das Wort „mariadb“ verwendet wurde. Die alten Namen wurden als symbolische Links gespeichert.
- Ein neuer Datentyp wurde hinzugefügt zum Speichern von IPv6-Adressen.
- Die Arbeit zur Aufteilung von Rechten in kleinere Komponenten wurde abgeschlossen. Anstelle des allgemeinen Rechts SUPER wird eine Reihe von selektiven Rechten angeboten: „BINLOG ADMIN“,
„BINLOG REPLAY“,
„CONNECTION ADMIN“,
„FEDERATED ADMIN“,
„READ_ONLY ADMIN“,
„REPLICATION MASTER ADMIN“,
„REPLICATION SLAVE ADMIN“ und
„SET USER“. - Die Berechtigung „REPLICATION CLIENT“ wurde in „BINLOG MONITOR“ umbenannt, und der Befehl „SHOW MASTER STATUS“ heißt jetzt „SHOW BINLOG STATUS“. Diese Umbenennung klärt das Verhalten und hat nichts mit politischer Korrektheit zu tun; das Projekt lehnt die Begriffe master/slave nicht ab und hat sogar neue Berechtigungen „MASTER ADMIN“ und „SLAVE ADMIN“ hinzugefügt. Dabei wurde in SQL-Anweisungen ein neuer Schlüssel „REPLICA“ eingeführt, der ein Synonym für „SLAVE“ ist.
- Für einige Anweisungen wurden die erforderlichen Berechtigungen für ihre Ausführung geändert. „SHOW BINLOG EVENTS“ erfordert jetzt die Berechtigung „BINLOG MONITOR“ anstelle von „REPLICATION SLAVE“, „SHOW SLAVE HOSTS“ erfordert die Berechtigung „REPLICATION MASTER ADMIN“ anstelle von „REPLICATION SLAVE“, „SHOW SLAVE STATUS“ erfordert die Berechtigung „REPLICATION SLAVE ADMIN“ oder „SUPER“ anstelle von „REPLICATION CLIENT“, und „SHOW RELAYLOG EVENTS“ erfordert die Berechtigung „REPLICATION SLAVE ADMIN“ anstelle von „REPLICATION SLAVE“.
- Es wurden Konstruktionen hinzugefügt „» und «„, die eine Liste der eingefügten/ersetzten Zeilen zurückgeben, als ob die Werte mit einem SELECT-Befehl zurückgegeben würden (vergleichbar mit „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 |
+——+———+———+———-+ - Es wurden die Ausdrücke „» und «„ hinzugefügt, um Ergebnisse um eine bestimmte Menge von Werten zu ergänzen oder auszuschließen.
- Es ist jetzt möglich, Kommentare innerhalb der Blöcke „CREATE DATABASE“ und „ALTER DATABASE“ anzugeben.
- Es wurden Konstruktionen zum Umbenennen von Indizes und Spalten hinzugefügt, „» und ««.
- Im Befehl „ALTER TABLE“ und „RENAME TABLE“ wurde die Unterstützung der Bedingung „IF EXISTS“ hinzugefügt, um die Operation nur auszuführen, wenn die Tabelle existiert.
- Für Indizes in „CREATE TABLE“ wurde das Attribut „«.
- Der Ausdruck „CYCLE“ wurde hinzugefügt, um rekursive Zyklen zu identifizieren. .
- Neue Funktionen und um ein Array oder ein JSON-Objekt mit Werten der angegebenen Spalte zurückzugeben.
- Es wurden systemeigene Informationstabellen (THREAD_POOL_GROUPS, THREAD_POOL_QUEUES, THREAD_POOL_STATS und THREAD_POOL_WAITS) für den Thread-Pool (thread_pool) hinzugefügt.
- Der Ausdruck ANALYZE wurde erweitert, um die Zeit anzuzeigen, die für die Überprüfung der WHERE-Klausel und die Ausführung von Hilfsoperationen benötigt wird.
- Im Bereichsoptimierer wurden die Bedingungen „IS NOT NULL“ berücksichtigt.
- Die Größe der temporären Dateien, die beim Sortieren von Datentypen wie VARCHAR, CHAR und BLOB verwendet werden, wurde erheblich reduziert.
- In , der zur Organisation der Replikation verwendet wird, wurden neue Metadatenfelder hinzugefügt, einschließlich Primärschlüssel, Spaltenname, Zeichensatz und Geometrietyp. In der Dienstprogramm mariadb-binlog sowie in den Befehlen „SHOW BINLOG EVENTS“ und „SHOW RELAYLOG EVENTS“ werden Replikationsflags angezeigt.
- Konstruktion jetzt zuverlässig Tabellen, die im Speicher-Engine verbleiben, selbst wenn keine „.frm“- oder „.par“-Dateien vorhanden sind.
- Es wurde eine hardwarebeschleunigte Variante der Funktion crc32() für CPU AMD64, ARMv8 und POWER 8 implementiert.
- Einige Standardkonfigurationen wurden geändert. Der Parameter innodb_encryption_threads wurde auf 255 erhöht, und der Wert von max_sort_length wurde von 4 auf 8 erhöht.
- Zahlreiche Leistungsoptimierungen für die InnoDB-Engine wurden eingeführt.
- Die Galera-Engine für synchronisierte Multi-Master-Replikation unterstützt nun vollständig (Global Transaction ID), einheitliche Transaktionsidentifikatoren für alle Knoten im Cluster.
- Der Wechsel zu einem neuen Branch der Bibliothek (Perl Compatible Regular Expressions) wurde vollzogen, anstelle der klassischen PCRE 8.x-Serie.
- Neue Versionen der Wrapper zur Verbindung mit MariaDB- und MySQL-Datenbanken aus Programmen in Python und C wurden vorgeschlagen: und . Der Wrapper für Python entspricht dem Python DB API 2.0, ist in C geschrieben und verwendet zur Verbindung mit dem Server die Connector/C-Bibliothek.
Quelle: opennet.ru
