MariaDB
MariaDB — это система управления реляционными базами данных (СУБД), созданная как ответвление (форк) от MySQL. Разработка ведётся под лицензией GPL v2 сообществом и компанией MariaDB Corporation Ab. Основной целью проекта является сохранение обратной совместимости с MySQL при одновременном внедрении новых возможностей, улучшении производительности и обеспечении полной открытости исходного кода.
История
Предпосылки создания
В 2008 году компания Sun Microsystems приобрела MySQL AB, разработчика популярной СУБД MySQL. В 2010 году Oracle Corporation, владеющая конкурирующей СУБД Oracle Database, завершила сделку по покупке Sun Microsystems. Это вызвало опасения в сообществе разработчиков относительно будущего MySQL как открытого проекта. В ответ на это основатель MySQL и главный разработчик Михаэль «Монти» Видениус создал ответвление (форк) исходного кода MySQL, названное в честь его младшей дочери Марии.
Развитие проекта
Первый стабильный релиз MariaDB 5.1 вышел в феврале 2010 года. Проект сразу получил поддержку крупных дистрибутивов Linux: Red Hat Enterprise Linux, Fedora, openSUSE и Debian включили MariaDB в свои репозитории в качестве замены MySQL. В 2013 году компания Wikipedia (организация, признанная в РФ иноагентом) перешла с MySQL на MariaDB. К 2020 году MariaDB стала стандартной СУБД в большинстве дистрибутивов Linux, включая Ubuntu, Fedora, RHEL, CentOS, openSUSE, Debian и Arch Linux.
В 2021 году MariaDB Corporation провела первичное публичное размещение акций на Нью-Йоркской фондовой бирже (NYSE) под тикером MRDB. В 2022 году компания объявила о слиянии со SPAC-компанией Angel Pond Holdings Corporation, что позволило привлечь дополнительные средства для развития.
Ключевые особенности
Совместимость с MySQL
MariaDB полностью совместима с MySQL на уровне API, протокола и SQL-синтаксиса. Это означает, что существующие приложения, написанные для MySQL, могут работать с MariaDB без изменений. Базы данных, созданные в MySQL, можно импортировать в MariaDB, и наоборот. Однако существуют незначительные различия в поведении некоторых функций и оптимизатора запросов.
Движки хранения
MariaDB поддерживает все стандартные движки хранения MySQL (InnoDB, MyISAM, Memory, Archive и другие), а также ряд собственных разработок:
- Aria — улучшенная версия MyISAM с поддержкой транзакций и автоматическим восстановлением после сбоев.
- XtraDB — форк InnoDB с дополнительными оптимизациями производительности и новыми возможностями индексирования.
- TokuDB — движок с фракционным деревом для работы с большими объёмами данных, оптимизированный для сжатия и быстрой вставки.
- Spider — движок для шардирования (горизонтального масштабирования) данных между несколькими серверами.
- ColumnStore — колоночный движок для аналитических запросов и хранилищ данных.
- RocksDB — встраиваемая база данных, оптимизированная для SSD-накопителей и высоконагруженных систем.
Дополнительные возможности
- Виртуальные столбцы — вычисляемые поля, которые не хранятся физически, но могут быть проиндексированы.
- Глобальные идентификаторы транзакций — упрощают репликацию и восстановление после сбоев.
- Улучшенный оптимизатор запросов — поддерживает подзапросы, общие табличные выражения (CTE) и оконные функции.
- Динамические столбцы — позволяют хранить в одной колонке произвольный набор пар «ключ-значение».
- Системные версионные таблицы — позволяют отслеживать историю изменений данных.
- Роли — механизм управления доступом, аналогичный ролям в Oracle Database.
- Шифрование на уровне таблиц — встроенная поддержка шифрования данных в покое.
Архитектура
Серверная часть
MariaDB использует многопоточную архитектуру: каждый клиентский запрос обрабатывается отдельным потоком. Сервер поддерживает несколько протоколов подключения: TCP/IP, Unix-сокеты, именованные каналы (Windows) и разделяемую память. Для управления соединениями используется пул потоков, который может динамически увеличиваться или уменьшаться в зависимости от нагрузки.
Хранилище данных
Данные в MariaDB организованы в виде таблиц, которые могут использовать различные движки хранения. Каждый движок реализует свой способ хранения, индексирования и блокировки данных. По умолчанию используется InnoDB или XtraDB, обеспечивающие поддержку транзакций ACID (атомарность, согласованность, изолированность, долговечность).
Репликация
MariaDB поддерживает несколько типов репликации:
- Асинхронная репликация — мастер отправляет изменения на ведомые серверы, не дожидаясь подтверждения.
- Полусинхронная репликация — мастер ждёт подтверждения от хотя бы одного ведомого сервера перед фиксацией транзакции.
- Групповая репликация — несколько серверов работают в кластере, обеспечивая отказоустойчивость и согласованность данных.
- Мульти-источник репликация — ведомый сервер может получать данные от нескольких мастеров.
Применение
Веб-приложения
MariaDB широко используется в веб-разработке, особенно в связке с языками PHP, Python, Ruby и Java. Она является стандартной СУБД для многих систем управления контентом (CMS): WordPress, Joomla, Drupal, Magento. Благодаря высокой производительности и масштабируемости, MariaDB подходит для сайтов с высокой посещаемостью.
Корпоративные системы
MariaDB применяется в корпоративных информационных системах, CRM, ERP, системах управления складом и логистикой. Поддержка транзакций ACID и механизмов репликации делает её пригодной для критически важных приложений, где требуется целостность данных.
Аналитика и Big Data
Колоночный движок ColumnStore и движок RocksDB позволяют использовать MariaDB в аналитических системах, хранилищах данных и приложениях, работающих с большими объёмами информации. Поддержка оконных функций и общих табличных выражений упрощает написание сложных аналитических запросов.
Встраиваемые системы
MariaDB может быть встроена в приложения с помощью библиотеки libmysqld (встроенный сервер) или через использование встраиваемых движков хранения, таких как RocksDB. Это позволяет использовать СУБД в мобильных приложениях, IoT-устройствах и настольных приложениях.
Сравнение с MySQL
| Параметр | MariaDB | MySQL |
|---|---|---|
| Лицензия | GPL v2 | Двойная лицензия (GPL v2 и коммерческая) |
| Разработчик | Сообщество + MariaDB Corporation | Oracle Corporation |
| Движки хранения | Aria, XtraDB, TokuDB, Spider, ColumnStore, RocksDB | InnoDB, MyISAM, Memory, NDB Cluster |
| Поддержка JSON | Встроенные функции | Встроенные функции (с версии 5.7) |
| Оконные функции | Поддерживаются | Поддерживаются (с версии 8.0) |
| Общие табличные выражения | Поддерживаются | Поддерживаются (с версии 8.0) |
| Роли | Поддерживаются | Поддерживаются (с версии 8.0) |
| Шифрование на уровне таблиц | Встроенное | Встроенное (с версии 8.0) |
| Репликация | Асинхронная, полусинхронная, групповая, мульти-источник | Асинхронная, полусинхронная, групповая (с версии 8.0) |
| Производительность | Выше в некоторых сценариях (оптимизация запросов, движки хранения) | Выше в некоторых сценариях (оптимизация Oracle) |
Критика
Отсутствие некоторых функций MySQL
Несмотря на высокую совместимость, MariaDB не поддерживает некоторые функции, доступные в коммерческой версии MySQL (Enterprise Edition), такие как MySQL HeatWave (аналитический движок) и некоторые инструменты мониторинга. Это может быть проблемой для организаций, использующих эти возможности.
Фрагментация сообщества
Разделение сообщества MySQL на два проекта (MySQL и MariaDB) привело к фрагментации разработки и усложнению выбора для пользователей. Некоторые разработчики критикуют MariaDB Corporation за внедрение проприетарных компонентов в коммерческую версию (MariaDB Enterprise), что, по их мнению, противоречит духу открытого исходного кода.
Производительность в некоторых сценариях
В некоторых тестах производительности MySQL (особенно версии 8.0) показывает более высокую скорость выполнения запросов по сравнению с MariaDB, особенно при использовании оптимизатора подзапросов и некоторых типов соединений. Однако в других сценариях MariaDB может быть быстрее благодаря оптимизациям в движках хранения.
Интересные факты
- Название MariaDB происходит от имени дочери создателя MySQL Михаэля Видениуса — Марии.
- Первый коммит в репозиторий MariaDB был сделан 1 декабря 2009 года.
- MariaDB является официальной СУБД в дистрибутивах Linux Fedora, RHEL, CentOS, openSUSE, Debian и Ubuntu.
- В 2018 году MariaDB Corporation объявила о выпуске MariaDB Platform, облачного сервиса для управления базами данных.
- В 2020 году MariaDB стала первой СУБД, получившей сертификацию по стандарту ISO 27001 для облачных сервисов.
Источники
- Официальная документация MariaDB Foundation
- Материалы конференций MariaDB Server Fest
- Статья «MariaDB: The Database of the Future» (Linux Journal, 2012)
- Сравнительный анализ MySQL и MariaDB (Percona, 2021)
- Отчёты о производительности MariaDB (MariaDB Corporation, 2022)
- Книга «MariaDB High Performance» (Packt Publishing, 2015)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →