MariaDB

📜 Общее описание и историческая справка

MariaDB — реляционная СУБД, созданная как форк MySQL. Основатель — Михаэль «Монти» Видениус, один из создателей MySQL. После приобретения Sun Microsystems (а затем Oracle) компании MySQL AB в 2008 году, Видениус и его команда основали MariaDB Foundation для обеспечения открытости и независимости проекта. Первая стабильная версия MariaDB 5.1 вышла в 2009 году. С тех пор MariaDB развивается как замена MySQL с улучшенной производительностью, новыми движками хранения (Aria, ColumnStore), лучшей масштабируемостью и расширенной безопасностью. MariaDB сохраняет совместимость с MySQL на уровне API и протокола, что позволяет легко мигрировать.

Источники: Официальная история MariaDB, статья "Why MariaDB?" (Monty Widenius, 2009).

🏭 Область применения и рекомендации

MariaDB широко используется в веб-приложениях, особенно в стеке LAMP (Linux, Apache, MariaDB, PHP). Области применения:

  • Корпоративные веб-приложения и CMS (WordPress, Drupal).
  • Облачные платформы (Google Cloud SQL, AWS RDS предлагают MariaDB).
  • Системы электронной коммерции.
  • OLTP-нагрузки средней и высокой интенсивности.

Рекомендации: MariaDB — отличный выбор для проектов, которые ранее использовали MySQL, но хотят получить улучшенную производительность, более частые обновления и открытую экосистему.

🛠️ Как создать/инициировать базу

-- Подключиться к серверу (через клиент mysql)
mysql -u root -p

-- Создать базу данных
CREATE DATABASE myapp;

-- Использовать базу
USE myapp;

-- Создать таблицу
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

💡 Основные нюансы языка (диалект SQL)

MariaDB использует синтаксис, во многом совместимый с MySQL, но с добавлениями:

  • Поддержка виртуальных столбцов (VIRTUAL, PERSISTENT).
  • Расширенные движки хранения: Aria (замена MyISAM), ColumnStore (аналитические), Spider (шардинг).
  • Оконные функции и общие табличные выражения (CTE) — появились в MariaDB 10.2.
  • Динамические столбцы (аналог JSON в MySQL).
  • Улучшенная обработка сессий и временных таблиц.

🔑 Наборы ключевых команд

-- Показать все базы
SHOW DATABASES;

-- Создать пользователя и дать права
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'securepass';
GRANT ALL PRIVILEGES ON myapp.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;

-- Бэкап базы (в командной строке)
mysqldump -u root -p myapp > backup.sql

-- Восстановление
mysql -u root -p myapp < backup.sql

-- Показать процессор запросов
SHOW PROCESSLIST;

📊 Построение запросов (сложные примеры)

Оконная функция для вычисления скользящего среднего:

SELECT 
    date,
    value,
    AVG(value) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_avg
FROM metrics;

Использование рекурсивного CTE для генерации числового ряда:

WITH RECURSIVE numbers(n) AS (
    SELECT 1
    UNION ALL
    SELECT n + 1 FROM numbers WHERE n < 100
)
SELECT * FROM numbers;

Динамические столбцы (хранение гибкой схемы):

CREATE TABLE dynamic_data (id INT, data BLOB);
INSERT INTO dynamic_data VALUES (1, COLUMN_CREATE('name', 'Alice', 'age', 30));
SELECT COLUMN_GET(data, 'name' AS CHAR) AS name FROM dynamic_data;

📚 Ссылки на документы, статьи, книги