MariaDB. Введение
MariaDB — это современная реляционная система управления базами данных, созданная как форк MySQL после покупки последнего компанией Oracle. Основная цель MariaDB — сохранить совместимость с MySQL и при этом развивать проект как полностью открытый и независимый. Сегодня MariaDB используется в тысячах приложений и считается одним из лидеров среди open-source СУБД.
История
- 2009 — проект MariaDB основан Михаэлем Видениусом, одним из создателей MySQL.
- 2010-е — активное развитие, поддержка крупных дистрибутивов Linux.
- 2020-е — MariaDB используется в крупных облачных решениях и корпоративных системах.
Особенности
- Полная совместимость с MySQL (большинство запросов и API идентичны).
- Поддержка множества движков хранения: InnoDB, Aria, ColumnStore и др.
- Масштабируемость и высокая производительность.
- Open-source модель с активным сообществом.
Установка
# Ubuntu/Debian
sudo apt update
sudo apt install mariadb-server
# CentOS/RHEL
sudo yum install mariadb-server
# Запуск сервиса
sudo systemctl enable --now mariadbПодключение
mysql -u root -pСоздание базы и таблицы в MariaDB
CREATE DATABASE company;
USE company;
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
position VARCHAR(100),
salary DECIMAL(10,2),
hire_date DATE,
email VARCHAR(200) UNIQUE
) ENGINE=InnoDB;CRUD в MariaDB
INSERT INTO employees (name, position, salary, hire_date, email)
VALUES ('Иван Иванов', 'Менеджер', 60000, '2022-05-01', 'ivan@example.com');
SELECT name, position, salary FROM employees WHERE salary > 50000;
UPDATE employees SET salary = salary * 1.1 WHERE position = 'Менеджер';
DELETE FROM employees WHERE id = 3;Индексы
CREATE INDEX idx_salary ON employees(salary);Транзакции
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;Хранимые процедуры и функции
DELIMITER //
CREATE PROCEDURE GetEmployees()
BEGIN
SELECT * FROM employees;
END //
DELIMITER ;
DELIMITER //
CREATE FUNCTION Bonus(salary DECIMAL(10,2))
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
RETURN salary * 0.1;
END //
DELIMITER ;Триггеры в MariaDB
CREATE TRIGGER before_insert_employee
BEFORE INSERT ON employees
FOR EACH ROW
SET NEW.hire_date = CURDATE();Работа с JSON в MariaDB
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
data JSON
);
INSERT INTO products (data)
VALUES ('{"name": "Ноутбук", "price": 75000, "features": {"ram": "16GB"}}');
SELECT JSON_UNQUOTE(JSON_EXTRACT(data, '$.name')) AS product_name,
JSON_UNQUOTE(JSON_EXTRACT(data, '$.features.ram')) AS ram
FROM products;Репликация в MariaDB
MariaDB поддерживает master-slave и master-master репликацию.
SHOW MASTER STATUS;
CHANGE MASTER TO
MASTER_HOST='master.host',
MASTER_USER='repl_user',
MASTER_PASSWORD='repl_pass',
MASTER_LOG_FILE='mariadb-bin.000123',
MASTER_LOG_POS=456789;
START SLAVE;Бэкапы в MariaDB
mysqldump -u root -p company > company_backup.sql
mysql -u root -p company < company_backup.sqlБезопасность MariaDB
CREATE USER 'developer'@'localhost' IDENTIFIED BY 'StrongPassword!';
GRANT SELECT, INSERT, UPDATE, DELETE ON company.* TO 'developer'@'localhost';
FLUSH PRIVILEGES;Заключение
MariaDB — мощная альтернатива MySQL с открытым исходным кодом. Она поддерживает транзакции, JSON, индексы, процедуры и репликацию. Благодаря высокой производительности и активному сообществу MariaDB стала выбором тысяч компаний по всему миру.