MariaDB

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 00:34, 17 декабря 2017.
MariaDB
Mariadb.png
Разработчики:

MariaDB Corporation Ab,

MariaDB Foundation
Выпущена: January 22, 2009 (2009-01-22)
Написана на: C, C++, Perl, Bash
Тип ПО: RDBMS
Лицензия: GNU GPL[1]
Веб-сайт www.mariadb.org

MariaDB — ответвление СУБД MySQL, разрабатываемое сообществом. MariaDB является фактически альтернативой MySQL СУБД, которую разрабатывает автор MySQL Michael "Monty" Widenius. Основная цель проекта MariaDB - создание полностью бинарно совместимой с оригинальной MySQL версии СУБД, которая при этом будет иметь значительное количество улучшений в коде, влияющих на производительность. MariaDB разрабатывается как drop-in замена для MySQL, полностью имитируя поведение MySQL.

Почему вообще Monty решил сделать клон своего же детища? Дело в том, что права на MySQL принадлежат компании MySQL AB, которую сначала купили Sun Microsystems[2], а затем уже Sun продались корпорации Oracle. В итоге Monty решил уйти из Oracle и сделать, в некотором смысле, MySQL "на стероидах".

Общее

MariaDB предназначена для свободного доступа под лицензией GNU GPL. Разработку и поддержку MariaDB осуществляет компания MariaDB Corporation Ab и фонд MariaDB Foundation. Толчком к созданию стала необходимость обеспечения свободного статуса СУБД, в противовес политике лицензирования MySQL компанией Oracle. Основателями проекта выступили первоначальные разработчики MySQL. Система лицензирования MariaDB обязывает участников, желающих добавить свой код в основную ветку СУБД, обмениваться своими авторскими правами с MariaDB Foundation для охраны лицензии и возможности создавать критические исправления для MySQL.

MariaDB намерен поддерживать высокую совместимость с MySQL, обеспечивая точное соответствие с API и командами MySQL. В состав MariaDB включена подсистемы хранения данных XtraDB для возможности замены InnoDB, как основной подсистемы хранения. Также включены подсистемы Aria, PBXT и FederateX.

Ведущий разработчик — Майкл Видениус, автор оригинальной версии MySQL и основатель компании Monty Program AB. MariaDB названа в честь его младшей дочери Марии (англ. Maria), подобно тому, как MySQL была названа в честь другой его дочери Маи (англ. My).

MariaDB построена на кодовой базе проекта MySQL и распространяется под лицензией GPL v2[3].

MariaDB представляет собой систему управления реляционными базами данных с открытым исходным кодом и несколькими потоками.

Кодовая база MariaDB постоянно обновляется и соответствует наработкам MySQL для всех версий РСУБД,поэтому её скачали уже более миллиона пользователей по всему миру.Успех MariaDB как ведущей базы данных объясняется не только открытым исходным кодом, но и его надежностью, производительностью. И функциями:

  • Aria (ранее Maria) — основанное на MyISAM высоконадежное хранилище, отличающиеся повышенной устойчивостью и сохранению целостности данных после краха, при полной совместимости с MyISAM
  • OQGRAPH (хранилище для организации сложных графов)
  • Sphinx — хранилище для построения поисковых движков
  • PrimeBase XT — описание на русском
  • В качестве замены InnoDB используется движок XtraDB
  • FederatedX — позволяет организовать обращение к удаленным таблицам как к локальным
  • Патчи MyISAM движка — сегментированный кэш (при высоких нагрузках дает существенный прирост)
  • Виртуальные столбцы
  • Ликвидация таблиц — новый вид оптимизации запросов с использованием JOIN
  • Пул потоков — теперь на одно соединение можно открыть больше одного потока
  • Улучшены Механизмы отладки медленных запросов

Архитектура

В большинстве случаев, MariaDB будет работать идентично MySQL: все команды, интерфейсы взаимодействия, библиотеки и API, которые уже существуют для MySQL, реализованы и в MariaDB. Нет необходимости конвертировать Ваши данные при переносе их в MariaDB. MariaDB является полноценной заменой MySQL!

Дополнительно MariaDB серьезно расширяет доступный функционал. Вы можете ознакомиться с новшествами и начать использовать их.

Во-первых, это ряд новых движков (database engine) для хранения данных. А именно: Aria - альтернатива таблицам MyISAM, более быстрая и устойчивая к сбоям. Таблицы Aria используются в MariaDB для внутренних нужд, в частности все temporary tables работают именно на движке Aria, за счет чего в ряде случаев получилось добиться значительно большей производительности на сложных запросах.

Во-вторых, есть функция , которая отличает его от своих предшественников, - это особый акцент на безопасности. Когда обнаружены критические проблемы безопасности, наши инженеры немедленно готовят и распространяют новую версию MariaDB как можно быстрее.

Кроме того, в MariaDB отлично масштабируется и способен обрабатывать десятки тысяч таблиц и миллиардов строк данных. Он также может быстро и плавно управлять небольшими объемами данных, что делает его удобным для небольших предприятий или личных проектов.

Преимущества по сравнению с MySQL:

  • Больше механизмов хранения данных
  • Улучшенная производительность
  • Безопасность
  • Расширения и новые возможности
  • Улучшенное тестирование
  • Меньше предупреждений и ошибок
  • Настоящий Open Source

Расширения и новые возможности

  • Microsecond Precision in Processlist
  • Table Elimination
  • Virtual Columns
  • Extended User Statistics
  • Segmented Key Cache
  • Pluggable Authentication
  • Storage-engine-specific CREATE TABLE

Настоящий Open Source

  • Весь исходный код MariaDB распространяется под лицензиями GPL, LPGL или BSD. MariaDB не содержит закрытых модулей или компонентов, на подобие тех, что содержатся в Mysql Enterprise Edition. Однако, это не влияет на доступный функционал MariaDB. Все технологии, существующие в закрытой версии MySQL 5.5 Enterprise Edition, в полном объеме представлены и в MariaDB.
  • MariaDB включает тестовые пакеты для всех исправленных ошибок в исходном коде. Компания Oracle в свою очередь не представляет подобных тестовых пакетов для для своих версий продуктов, например, MySQL 5.5.
  • Все BUG'и и планы развития доступны всем желающим.
  • MariaDB разрабатывается open source сообществом.

Улучшенное тестирование

  • Больше тестов в тестовых сериях.
  • BUG'и в исходном коде устраняются при тестировании.
  • Больше тестовых сборок с различными опциями сборки MariaDB, для качественного тестирования особенностей продукта.
  • Убраны некоторые серии тестов (например, нет необходимости тестировать функционал X, если этот функционал нигде не используется в тестируемой версии).

Использование

Установка на Ububntu

MySQL и MariaDB используют один и тот же синтаксис команд, поэтому любая из этих систем поддерживает команды из примеров. Для установки MySQL выполните команду:

sudo apt-get install mysql-server

Для установки MariaDB на Ubuntu 12.04 потребуется выпонить ряд команд:

sudo apt-get update
sudo apt-get install python-software-properties
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
sudo add-apt-repository 'deb http://repo.maxindo.net.id/mariadb/repo/5.5/ubuntu precise main'
sudo apt-get update
sudo apt-get install mariadb-server

Создание базы данных

Прежде чем начать работать с таблицами нам потребуется создать базу данных в MySQL. Зайдите в MariaDB при помощи следующей команды:

mariadb -u root -p

Введите пароль, указанный при установке. Cоздадим базу данных под названием playground. Выполните команду:

CREATE DATABASE playground;

Перейдите в созданную БД:

USE playground;

Создание таблиц в MariaDB

При создании таблицы следует придерживаться следующего синтаксиса:

CREATE TABLE [IF NOT EXISTS] name_of_table (list_of_table_columns) [engine=database_engine]

Участки в скобках ([ и ]) можно опускать. Фраза IF NOT EXISTS указывает на то, что таблица будет создана только в том случае, если она отсутствует в БД. В противном случае возникнет ошибка.

Часть engine=database_engine указывает движок создаваемой таблицы. Её стоит выбирать исходя из требований, предъявляемых к обработке данных. Значение по-умолчанию (InnoDB) подходит в большинстве случаев.

CREATE TABLE IF NOT EXISTS equipment (
   equip_id int(5) NOT NULL AUTO_INCREMENT,
   type varchar(50) DEFAULT NULL,
   install_date DATE DEFAULT NULL,
   color varchar(20) DEFAULT NULL,
   working bool DEFAULT NULL,
   location varchar(250) DEFAULT NULL,
   PRIMARY KEY(equip_id)
);
Query OK, 0 rows affected (0.03 sec)

Ввод данных в таблицу MariaDB

Ввод данных производится в соответствии со следующим синтаксисом:

INSERT INTO table_name (field1, field2, ...) VALUES (value1, value2, ...);

Каждое строковое значение должно быть в кавычках. Полям с опцией auto increment задавать значение не требуются. Эти поля обрабатывается СУБД самостоятельно.

INSERT INTO equipment (type, install_date, color, working, location)
VALUES
("Slide", Now(), "blue", 1, "Southwest Corner");

Мы воспользовались встроенной функцией now(), которая возвращает текущую дату. Для того, чтобы просмотреть данные, нужно отправить запрос к БД. Знак (*) является особенным, который означает выбор всех полей из таблицы:

SELECT * FROM equipment;
+----------+-------+--------------+-------+---------+------------------+
| equip_id | type  | install_date | color | working | location         |
+----------+-------+--------------+-------+---------+------------------+
|        1 | Slide | 2013-07-26   | blue  |       1 | Southwest Corner |
+----------+-------+--------------+-------+---------+------------------+
1 row in set (0.00 sec)

Добавим еще одну запись:

INSERT INTO equipment (type, install_date, color, working, location)
VALUES
("Swing", Now(), "green", 1, "Northwest Corner");

Убедимся в том, что запрос отработал корректно:

SELECT * FROM equipment;
+----------+-------+--------------+-------+---------+------------------+
| equip_id | type  | install_date | color | working | location         |
+----------+-------+--------------+-------+---------+------------------+
|        1 | Slide | 2013-07-26   | blue  |       1 | Southwest Corner |
|        2 | Swing | 2013-07-26   | green |       1 | Northwest Corner |
+----------+-------+--------------+-------+---------+------------------+
2 rows in set (0.00 sec)

Удаление таблиц в MariaDB

Для удаления используется команда:

DROP TABLE table_name;

Будьте предельно аккуратны с этой командой, так как данные после удаления восстановить невозможно.

SHOW tables;
+----------------------+
| Tables_in_playground |
+----------------------+
| equipment            |
+----------------------+
1 row in set (0.00 sec)

Удалим нашу единственную таблицу:

DROP TABLE equipment;

Проверяем:

SHOW tables;
Empty set (0.00 sec)

Установка на Windows

Примечания

Ссылки