Po roku pracy i czterech wersjach wstępnych pierwsze stabilne wydanie nowej gałęzi bazy danych , w ramach której rozwija się fork MySQL, zachowujący zgodność wsteczną oraz integracją dodatkowych silników pamięci i rozszerzonymi możliwościami. Wsparcie nowej wersji będzie trwało 5 lat, do czerwca 2025 roku.
Rozwój MariaDB nadzoruje niezależna organizacja MariaDB Foundation w zgodzie z całkowicie otwartym i przejrzystym procesem rozwoju, niezależnym od poszczególnych producentów. MariaDB jest dostarczana zamiast MySQL w wielu dystrybucjach Linuxa (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) i wdrożona w takich dużych projektach jak , i .
Kluczowe :
- Dodano silnik pamięci , umożliwiający przechowywanie tabel MariaDB w Amazon S3 lub dowolnym innym publicznym lub prywatnym magazynie w chmurze, który wspiera API S3. Obsługiwane jest przechowywanie zarówno zwykłych, jak i partycjonowanych (podzielonych) tabel. Przy przechowywaniu w chmurze partycjonowane tabele mogą być bezpośrednio używane z innego serwera mającego dostęp do magazynu S3.
- Dodano silnik pamięci , który zapisuje dane w powiązaniu z kolumnami i wykorzystuje architekturę rozproszoną. Silnik oparty jest na dorobku magazynu MySQL i przeznaczony do organizacji przetwarzania i wykonywania zapytań analitycznych na dużych zbiorach danych (Data Warehouse).
ColumnStore przechowuje dane nie w wierszach, ale w kolumnach, co pozwala na optymalizację wykonywania grupowania po kolumnach z dużych baz danych, obejmujących petabajty danych. Obsługuje liniowe skalowanie, przechowywanie danych w skompresowanej formie, pionowe i poziome partycjonowanie oraz skuteczne wykonywanie konkurencyjnych zapytań. - Wszystkie pliki wykonywalne zaczynające się od słowa „mysql” zostały przemianowane z użyciem słowa „mariadb”. Stare nazwy zostały zachowane w postaci linków symbolicznych.
- Dodano nowy typ danych do przechowywania adresów IPv6.
- Wykonano pracę nad podziałem uprawnień na mniejsze składniki. Zamiast ogólnego uprawnienia SUPER zaproponowano serię selektywnych uprawnień „BINLOG ADMIN”,
„BINLOG REPLAY”,
„CONNECTION ADMIN”,
„FEDERATED ADMIN”,
„READ_ONLY ADMIN”,
„REPLICATION MASTER ADMIN”,
„REPLICATION SLAVE ADMIN” oraz
„SET USER”. - Uprawnienie „REPLICATION CLIENT” zostało przemianowane na „BINLOG MONITOR”, a wyrażenie „SHOW MASTER STATUS” na „SHOW BINLOG STATUS”. Przemianowanie precyzuje zachowanie i nie ma nic wspólnego z polityczną poprawnością; projekt nie rezygnuje z terminów master/slave i nawet dodał nowe uprawnienia „MASTER ADMIN” i „SLAVE ADMIN”. W dodawaniu wyrażeń SQL pojawił się nowy klucz „REPLICA”, będący synonimem „SLAVE”.
- Dla niektórych wyrażeń zmieniono wymagane uprawnienia do ich wykonania. „SHOW BINLOG EVENTS” wymaga teraz uprawnień „BINLOG MONITOR” zamiast „REPLICATION SLAVE”, „SHOW SLAVE HOSTS” wymagają uprawnienia „REPLICATION MASTER ADMIN” zamiast „REPLICATION SLAVE”, „SHOW SLAVE STATUS” wymaga uprawnień „REPLICATION SLAVE ADMIN” lub „SUPER” zamiast „REPLICATION CLIENT”, „SHOW RELAYLOG EVENTS” wymaga uprawnień „REPLICATION SLAVE ADMIN” zamiast „REPLICATION SLAVE”.
- Dodano konstrukcje „” i „„, zwracające listę wstawionych/zmienionych wierszy w formie, jak gdyby wartości były zwracane przy użyciu wyrażenia SELECT (na wzór „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 |
+——+———+———+———-+ - Dodano wyrażenia „” i „” do wykluczania/dodawania wyniku dla określonego zbioru wartości.
- Dodano możliwość umieszczania komentarzy wewnątrz bloków „CREATE DATABASE” i „ALTER DATABASE”.
- Dodano konstrukcje do zmiany nazw indeksów i kolumn „” oraz „«.
- W operacji „ALTER TABLE” i „RENAME TABLE” dodano wsparcie dla warunku „IF EXISTS” do wykonania operacji tylko w przypadku istnienia tabeli;
- Dla indeksów w „CREATE TABLE” wprowadzono atrybut „«.
- Dodano wyrażenie „CYCLE” do identyfikacji cykli rekurencyjnych. .
- Dodano funkcje i do zwracania tablicy lub obiektu JSON z wartościami określonej kolumny.
- Dodano systemowe tabele informacyjne (THREAD_POOL_GROUPS, THREAD_POOL_QUEUES, THREAD_POOL_STATS i THREAD_POOL_WAITS) dla puli wątków (thread_pool).
- Wyrażenie ANALYZE rozszerzono o pokazanie czasu, który spędza na sprawdzaniu bloku WHERE i wykonywaniu operacji pomocniczych.
- W optymalizatorze przetwarzania zakresów uwzględniono cechy „IS NOT NULL”.
- Zasadniczo zmniejszono rozmiar plików tymczasowych używanych podczas sortowania typów VARCHAR, CHAR i BLOB.
- W , używanego do organizacji replikacji, dodano nowe pola z metadanymi, w tym Primary Key, Column Name, Character Set oraz Geometry Type. W narzędziu mariadb-binlog oraz w poleceniach „SHOW BINLOG EVENTS” i „SHOW RELAYLOG EVENTS” wprowadzono wyświetlanie flag replikacji.
- Konstrukcja teraz niezawodnie tabele, które pozostają w silniku przechowywania, nawet przy braku plików „.frm” lub „.par”.
- Zrealizowano sprzętową wersję funkcji crc32() dla CPU AMD64, ARMv8 i POWER 8.
- Zmieniono niektóre ustawienia domyślne. Parametr innodb_encryption_threads zwiększono do 255, a wartość max_sort_length zwiększono z 4 do 8.
- Wprowadzono liczne optymalizacje wydajności silnika InnoDB.
- W mechanizmie synchronicznej replikacji multi-master Galera dodano pełne wsparcie (Global Transaction ID), wspólnych dla wszystkich węzłów klastra identyfikatorów transakcji.
- Dokonano przejścia na nową wersję biblioteki (Perl Compatible Regular Expressions), zamiast klasycznej serii PCRE 8.x.
- Oferowane są nowe wersje interfejsów do połączenia z bazami danych MariaDB i MySQL z programów w językach Python i C: i . Interfejs dla Pythona odpowiada Python DB API 2.0, jest napisany w języku C i używa do połączenia z serwerem biblioteki Connector/C.
Źródło: opennet.ru
