MariaDB и MySQL - это бесплатные системы управления базами данных (СУБД) с открытым исходным кодом.
MySQL была разработана шведской компанией «MySQL AB» в 1995 году. Кампания MySQL AB была приобретена Sun Microsystems в 2008 году. В 2010 году Oracle поглотила Sun Microsystems. С тех пор MySQL поддерживается и управляется Oracle. Во время приобретения Sun Microsystems компанией Oracle некоторые из старших инженеров, которые работали над разработкой MySQL, почувствовали, что существует конфликт интересов между MySQL и коммерческой базой данных Oracle — Oracle Database Server. В результате эти инженеры создали форк базы кода MySQL и основали собственную организацию. Так родилась MariaDB.
MariaDB имеет лицензию GPL, в то время как MySQL имеет двойную лицензию. Весь исходный код MariaDB распространяется под лицензиями GPL, LPGL или BSD. MariaDB не содержит закрытых модулей или компонентов, на подобие тех, что содержатся в Mysql Enterprise Edition. Однако, это не влияет на доступный функционал MariaDB. Все технологии, существующие в закрытой версии MySQL 5.5 Enterprise Edition, в полном объеме представлены и в MariaDB.
Команда MariaDB гарантирует, что MariaDB сможет заменить MySQL в существующих приложениях. Фактически для каждой версии MySQL они выпускают тот же номер версии MariaDB, чтобы указать, что MariaDB обычно совместима с соответствующей версией MySQL. Это открывает возможность беспрепятственного перехода на MariaDB без каких-либо изменений в кодовой базе приложения.
MariaDB предоставляет механизм хранения MyRocks, который позволяет хранить данные в RocksDB. RocksDB — это встраиваемая база данных, которая была разработана для повышения производительности обработки данных, хранимых на SSD-дисках, за счет обеспечения более высокого уровня сжатия данных..
MariaDB предоставляет несколько мощных механизмов хранения, которые не доступны в MySQL. Например, XtraDB (прозрачная замена InnoDB), Aria, FederatedX (прозрачная замена Federated), Cassandra (MariaDB 10.0), CONNECT (MariaDB 10.0), SEQUENCE (MariaDB 10.0), Spider (MariaDB 10.0) и другие. Чтобы настроить эти механизмы хранения для MySQL, вам необходимо установить их вручную.
Интересная функция, которую поддерживает MariaDB — это виртуальные столбцы. Эти столбцы способны выполнять вычисления на уровне базы данных. Это позволяет перенести типовые вычисления с приложений в сервер СУБД. Эта функция не доступна в MySQL.
MariaDB также представляет новую концепцию под названием «Thread Pooling». Ранее, когда требовалось несколько соединений с базой данных, для каждого соединения открывался поток, что приводило к архитектуре «один поток на соединение». В «Thread Pooling» используется пул потоков, которые могут повторно использоваться. Таким образом, новый поток не нужно открывать для каждого нового запроса на подключение, что приводит к более быстрым результатам запроса. Эта функция доступна в коммерческой версии MySQL, но, к сожалению, недоступна в версии для сообщества.
MariaDB представляет еще одно улучшение производительности в виде Segmented Key Cache. В типичном кэше различные потоки конкурируют за блокировку кэшированной записи. Эти блокировки называются мьютексами. Когда несколько потоков конкурируют за мьютекс, только один из них может получить его, в то время как другим приходится ждать освобождения блокировки перед выполнением операции. Это приводит к задержкам выполнения в этих потоках, что снижает производительность базы данных. В случае Segmented Key Cache потоку не нужно блокировать всю страницу, но он может заблокировать только тот сегмент, которому принадлежит страница. Это помогает нескольким потокам работать параллельно, тем самым увеличивая параллелизм в приложении, что приводит к повышению производительности базы данных.
Что такое репликация баз данных
На мой взгляд под большинство стандартных проектов (сайты, небольшие сервисы) не имеет никакого значения какая будет выбрана СУБД MySQL или MariaDB. Мне много приходится настраивать VPS под Linux и я обычно устанавливаю клиентам ту, которая идет в стандартном репозитории ОС, если не было дополнительного технического задания от программиста. Обычно это MariaDB.
MariaDB предоставляет множество уникальных функций, отсутствующих в MySQL.