← Tilbage til databaser

MariaDB

SQL

En 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 replacement for MySQL med fuld kompatibilitet i de tidlige versioner. Siden da har MariaDB udviklet sig med innovative features der ikke findes i MySQL: Aria storage engine (crash-safe MyISAM successor), ColumnStore for analytics, Galera Cluster integration for multi-master replication, og bedre performance optimizations. MariaDB følger en åben udviklings model med transparens og community input. Den bruges af tungvægtere som Wikipedia, Google, og mange Linux distributioner (Debian, Fedora, openSUSE) har skiftet fra MySQL til MariaDB som standard database. 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 replacement (ældre versioner)
  • Galera Cluster multi-master replication
  • ColumnStore for columnar analytics
  • Aria storage engine (crash-safe)
  • Bedre query optimizer end MySQL
  • Thread pool for bedre concurrency
  • Virtual columns og invisible columns
  • Temporal tables (system-versioned)

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 stack udvikling
  • Cloud-native applikationer
  • Analytics workloads med ColumnStore
  • High availability setups med Galera

Fordele

  • 100% open source uden commercial extensions
  • Ofte hurtigere end MySQL
  • Innovative features (Galera, ColumnStore)
  • Stærk community og transparent udvikling
  • Bedre documentation i visse områder

Ulemper

  • Divergerer fra MySQL over tid
  • Mindre ecosystem end MySQL
  • Færre managed cloud offerings
  • Nogle tools er MySQL-specific
  • Compatibility issues i nyere versioner

Bedst til

  • MySQL replacement med mere freedom
  • Open source projekter der vil undgå Oracle
  • High availability med Galera Cluster
  • Analytics workloads (ColumnStore)
  • Linux server environments

Ikke anbefalet til

  • Applikationer der kræver MySQL-specific features
  • Hvis du har brug for AWS RDS MySQL specifics
  • Teams uden MariaDB ekspertise
  • Massive horizontal scaling (brug NoSQL)
  • Real-time analytics (brug specialized databases)

Relaterede databaser

MySQLPostgreSQLPercona ServerAmazon Aurora