MariaDB
SQLEn community-drevet fork af MySQL skabt af MySQL's oprindelige udviklere efter Oracle's opkøb.
Beskrivelse
MariaDB blev skabt i 2009 af Michael 'Monty' Widenius, den oprindelige udvikler af MySQL, som reaktion på bekymringer om MySQL's fremtid under Oracle's ejerskab. MariaDB er designet som en drop-in erstatning for MySQL med fuld kompatibilitet i de tidlige versioner. Siden da har MariaDB udviklet sig med innovative funktioner der ikke findes i MySQL: Aria storage engine (crash-sikker MyISAM-efterfølger), ColumnStore til analyser, Galera Cluster-integration til multi-master replikering og bedre ydeevneoptimeringer. MariaDB følger en åben udviklingsmodel med transparens og community-input. Den bruges af tungvægtere som Wikipedia og Google, og mange Linux-distributioner (Debian, Fedora, openSUSE) har skiftet fra MySQL til MariaDB som standarddatabase. MariaDB Foundation sikrer at projektet forbliver open source. Selvom MariaDB startede identisk med MySQL, er de to databaser gradvist divergeret, og fuld kompatibilitet kan ikke længere garanteres i nyere versioner.
Features
- •Drop-in MySQL-erstatning (ældre versioner)
- •Galera Cluster multi-master replikering
- •ColumnStore til kolonnebaserede analyser
- •Aria storage engine (crash-sikker)
- •Bedre forespørgselsoptimerer end MySQL
- •Trådpulje for bedre samtidighed
- •Virtuelle kolonner og usynlige kolonner
- •Temporale tabeller (systemversionerede)
Query Eksempel
-- MariaDB har samme SQL syntax som MySQL
CREATE DATABASE ecommerce;
USE ecommerce;
-- Temporal table (system-versioned) - MariaDB feature
CREATE TABLE products (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
price DECIMAL(10, 2),
stock INT
) WITH SYSTEM VERSIONING;
INSERT INTO products (name, price, stock)
VALUES ('Laptop', 8999.00, 50);
UPDATE products SET price = 7999.00 WHERE id = 1;
-- Se historik (temporal table feature)
SELECT * FROM products FOR SYSTEM_TIME ALL WHERE id = 1;
-- Virtual columns (computed columns)
CREATE TABLE orders (
id INT PRIMARY KEY,
subtotal DECIMAL(10, 2),
tax_rate DECIMAL(3, 2),
total DECIMAL(10, 2) AS (subtotal * (1 + tax_rate)) PERSISTENT
);
-- Window functions (også i MySQL 8+)
SELECT
name,
price,
AVG(price) OVER (PARTITION BY category) as avg_category_price,
RANK() OVER (ORDER BY price DESC) as price_rank
FROM products;
-- JSON support
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(100),
preferences JSON
);
INSERT INTO users VALUES
(1, 'Anders', '{"theme": "dark", "language": "da"}');
SELECT JSON_EXTRACT(preferences, '$.theme') FROM users;Anvendelsesområder
- •Erstatte MySQL i eksisterende applikationer
- •LAMP-stak-udvikling
- •Cloud-native applikationer
- •Analysearbejdsbyrder med ColumnStore
- •Høj tilgængelighedsopsætninger med Galera
Fordele
- ✓100% open source uden kommercielle udvidelser
- ✓Ofte hurtigere end MySQL
- ✓Innovative funktioner (Galera, ColumnStore)
- ✓Stærkt community og transparent udvikling
- ✓Bedre dokumentation på visse områder
Ulemper
- ✗Divergerer fra MySQL over tid
- ✗Mindre økosystem end MySQL
- ✗Færre administrerede cloud-tilbud
- ✗Nogle værktøjer er MySQL-specifikke
- ✗Kompatibilitetsproblemer i nyere versioner
Bedst til
- →MySQL-erstatning med mere frihed
- →Open source-projekter der vil undgå Oracle
- →Høj tilgængelighed med Galera Cluster
- →Analysearbejdsbyrder (ColumnStore)
- →Linux-servermiljøer
Ikke anbefalet til
- ⚠Applikationer der kræver MySQL-specifikke funktioner
- ⚠Hvis du har brug for AWS RDS MySQL-specifics
- ⚠Teams uden MariaDB-ekspertise
- ⚠Massiv horisontal skalering (brug NoSQL)
- ⚠Realtidsanalyser (brug specialiserede databaser)