Открыть сервис

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

ПараметрMariaDBMySQL
ЛицензияGPL v2Двойная лицензия (GPL v2 и коммерческая)
РазработчикСообщество + MariaDB CorporationOracle Corporation
Движки храненияAria, XtraDB, TokuDB, Spider, ColumnStore, RocksDBInnoDB, 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 →