MariaDB
-
Медіафайли у Вікісховищі
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/82/LAMP_software_bundle.svg/400px-LAMP_software_bundle.svg.png)
MariaDB — реляційна система керування базами даних, створена на початку 2009 як відгалуження (форк) MySQL. MariaDB поширюється під вільною та відкритою ліцензією GNU GPL.
Історія
Поштовхом для створення MariaDB стала непевність спільноти розробників та користувачів невизначеною долею і ліцензією MySQL після її придбання Oracle.
Проєкт MariaDB почала розвивати компанія Monty Program Ab, створена Майклом Віденіусом, після його відходу з Sun Microsystems. У розробці MariaDB також брали участь компанії SkySQL і Percona, котрі розвивають власні продукти та надають сервіс супроводу та підтримки для рішень на базі MySQL.
Проєкт підтримує високий ступінь сумісності з MySQL , включаючи "вставку" замінних можливостей бінарним еквівалентом бібліотек і відповідністю з наявним API і командами MySQL. Навіть перша стабільна версія СУБД отримала номер 5.2, ніби продовжуючи лінійку MySQL. MariaDB включає два нових вдосконалених рушія баз даних: Aria (раніше відомого як Maria) на заміну MyISAM, та XtraDB як заміну InnoDB (включно до версії 10.1). Серія MariaDB 5.2.x за функціональністю сумісна з MySQL 5.1.x і заснована на тій же кодовій базі, що дозволяє здійснити міграцію з MySQL на MariaDB без виникнення проблем з сумісністю. Незважаючи на збереження зворотної сумісності, в MariaDB додана підтримка декількох нових сховищ (FederatedX, PBXT, XtraDB, Aria, OQGRAPH, Sphinx), реалізовані додаткові оптимізації, додані нові можливості (наприклад, віртуальні стовпці та Plug-in аутентифікації) і інтегровані патчі, створені компанією Percona і співтовариством незалежних розробників.
Перші випуски MariaDB нумерувалися синхронно з гілками MySQL, на яких вони були засновані. Але в листопаді 2012, щоб явно позначити незалежність розробки від MySQL, вирішено було присвоїти черговому релізу MariaDB номер 10.0.[1] Це значить, що MariaDB вже не є просто набором патчів, застосованих поверх MySQL, а містить досить великий набір додаткових функцій і можливостей, реалізованих інакше, ніж в MySQL (наприклад, пул тредів, підтримка мікросекунд і анотовані запити). Змінився також і метод синхронізації з кодовою базою MySQL, коли первинним у розробці став код MariaDB, в який бекпортуються нововведення MySQL.
MariaDB Foundation
У грудні 2012 Майкл Віденіус (Michael Widenius), Девід Аксмарк (David Axmark) і Аллан Ларсон (Allan Larsson), що заснували в 1995 році компанію MySQL AB, спільно з Патріком Соллнером (Patrick Sallner), директором компанії SkySQL, і Петром Зайцевим, співзасновником компанії Percona, анонсували створення нової некомерційної організації MariaDB Foundation[2][3] і передачу мільйона євро на її початковий розвиток.
Як місія MariaDB Foundation називається розвиток технологій СУБД, включаючи реалізацію стандартів, поліпшення сумісності між різними СУБД і забезпечення зв'язку з іншими типами БД, такими як транзакційні і NoSQL системи. Як практична основа для реалізації задуманих планів, організація відповідатиме за розробку СУБД MariaDB, рецензування запропонованих нововведень, включення в кодову базу змін, організацію тестування та випуску релізів MariaDB. На плечах MariaDB Foundation також буде лежати підтримка інфраструктури проєкту MariaDB і організація взаємодії з спільнотою користувачів і розробників, а також відстоювання інтересів проєкту. Відтепер розробка MariaDB буде контролюватися незалежним від окремих комерційних компаній комітетом.
Компанія Monty Program Ab була створена для розвитку проєкту MariaDB Майклом Віденіусом, засновником MySQL. Компанія Monty Program Ab є ініціатором проєкту MariaDB і його основним розробником. Компанія SkySQL заснована колишніми інвесторами MySQL AB і кількома топ-менеджерами, що курирували проєкт MySQL в Sun Microsystems і згодом звільнилися з Oracle. SkySQL займався як просуванням власних продуктів (SkySQL Enterprise), так і наданням сервісу супроводу та підтримки рішень на базі MariaDB і MySQL. Обидві фірми взяли на роботу велику групу інженерів, які пішли з Oracle і Sun Microsystems (з Oracle звільнилося понад 50% інженерів, що працюють в підрозділі MySQL, і майже всі ключові розробники).
У квітні 2013 компанії SkySQL і Monty Program Ab підписали угоду про злиття для об'єднання зусиль з розробки та підтримки проєкту MariaDB[4]. Восени 2014 компанія SkySQL оголосила про зміну імені на MariaDB Corporation.[5] Після злиття з компанією Monty Program Ab компанія SkySQL стала основним розробником СУБД MariaDB і куратором організації MariaDB Foundation.
Особливості MariaDB
Нові сховища даних
З особливостей MariaDB, в порівнянні з MySQL, можна відзначити включення до складу наступних сховищ:
- Aria — засноване на MyISAM високонадійне сховище, що відрізняються підвищеною стійкістю і збереженню цілісності даних після краху, при повній сумісності з MyISAM. Завдяки веденню логу операцій, у разі краху проводиться відкат результатів виконання поточної операції. Також підтримується можливість відновлення стану з будь-якої точки в балці операцій (включаючи підтримку CREATE / DROP / RENAME / TRUNCATE).
- На заміну InnoDB використовується рушій XtraDB (включно до версії 10.1), заснований на коді InnoDB-plugin і повністю сумісний з ним, але відрізняється помітно вищою продуктивністю, завдяки інтеграції патчів від компаній Google і Percona. Зокрема, в XtraDB поліпшений механізм роботи з пам'яттю, покращена робота підсистеми введення / виведення InnoDB, додана підтримка декількох потоків читання і запису, підтримка управління пропускною здатністю, реалізація упереджувальною вибіркою даних (read-ahead), адаптивна установка контрольних точок (adaptive checkpointing), розширені можливості з масштабування для великих проєктів, система організації блокувань адаптована для роботи на системах з великою кількістю CPU, додані додаткові можливості для накопичення та аналізу статистики. Починаючи з версії 10.2, розробники MariaDB знову повернулися до InnoDB, мотивуючи це тим, що на злиття змін XtraDB та нової версії InnoDB буде затрачено велику кількість часу (більше пів року), хоча в самій InnoDB вже наявні виправлення попередніх помилок, які до цього виправляв рушій XtraDB[6].
- До складу включено сховище PBXT (PrimeBase XT), розроблене з нуля, яке підтримує мультиверсійний метод організації зберігання даних MVCC (multi-version concurrency control), що дозволяє позбавитися від блокувань при виконанні операцій читання. PBXT підтримує ACID-сумісні транзакції, швидкий відкат транзакцій і відновлення після некоректного завершення роботи сервера. Є засоби для забезпечення посилальної цілісності даних, підтримка визначення зовнішніх ключів (foreign key), каскадних оновлень і вилучень даних. Підтримується можливість прямого потокового введення і виведення бінарних даних (BLOB) в БД
- На заміну розробленого в Sun Microsystems і вже не підтримуваного сховища Federated задіяний проєкт FederatedX. FederatedX дозволяє організувати звернення до віддалених таблиць як до локальних. Є підтримка транзакцій, одночасної установки декількох з'єднань до віддаленої СУБД, використання операцій "LIMIT"
- OQGRAPH — сховище для організації ієрархічних (деревоподібних) структур і складних графів (вузлів, що мають безліч зв'язків);
- Sphinx — сховище для побудови пошукових рушіїв. Вбудований Sphinx-клієнт дозволяє MariaDB обмінюватися даними з searchd, виконувати пошукові запити і отримувати результати пошуку
Додатково
- Віртуальні стовпці, вміст яких формується на основі заданого виразу, що розраховується під час виконання
- Розширена статистика про активність клієнтів, користувачів, індексів і таблиць
- Сегментований кеш MyISAM-ключів — глобальний м'ютекс розбитий на кілька м'ютексів, що дає істотний приріст продуктивності (до 70%) у системах з великим навантаженням з паралельних запитів
- Модулі автентифікації, що підключаються і можуть додавати нові методи автентифікації в MariaDB
- Реалізована можливість створення пулу потоків, що дозволяє використовувати задане число mysql-ниток для обробки всіх запитів, замість механізму "одна нитка на одне з'єднання". У підсумку можна значно збільшити продуктивність БД, обробляють велику кількість з'єднань або велике число запитів, що тривало виконуються.
- HandlerSocket — реалізація інтерфейсу прямого доступу до таблиць InnoDB/XtraDB в стилі NoSQL-систем. Підтримуються такі операції, як додавання, оновлення, читання і вилучення ключа
Кластерне рішення MariaDB Galera
Monty Program AB спільно з компанією Codership, яка розвиває систему Galera, випустили кластерну СКБД MariaDB Galera, котра базується на кодовій базі MariaDB у поєднанні з технологією синхронної multi-master реплікації Galera.[7] Проєкт позиціонується як конкурент кластерним рішенням Oracle на базі MySQL та Percona XtraDB Cluster.
Продукт розширює можливості MariaDB, яка може виступати як прозора заміна MySQL 5.5, засобами для організації синхронної реплікації даних між кількома вузлами (застосовується топологія active-active multi-master, яка допускає читання та запис для будь-якого вузла). При синхронної реплікації всі вузли завжди містять актуальні дані, тобто гарантується відсутність втрачених транзакцій, тому що транзакція фіксується тільки після поширення даних по всіх вузлах. При цьому, в рамках транзакції операції виконуються відразу, затримка через очікування підтвердження виникає тільки при виконанні операції "commit". На різних вузлах транзакції можуть виконуватися в паралельному режимі. При виконанні транзакції забезпечується гарантована незмінність стану кластера в цілому, незалежно від інших виконуваних в даний момент транзакцій.
Реплікація виконується в паралельному режимі, на рівні рядків, з передачею тільки інформації про зміни. Управління приналежністю вузлів кластеру виконується автоматично, збійні вузли відразу виключаються з кластера без участі адміністратора, нові вузли при необхідності можна підключити на льоту без додаткової переконфігурації. Кластер може бути територіально розподілений на декілька дата-центрів, при цьому для клієнта забезпечується мінімальна затримка — при розміщенні вузлів в безпосередній близькості від клієнта, всі операції читання і запису будуть виконуватися з максимальною швидкістю, затримка буде відчуватися тільки при виконанні комітів транзакції.
З достоїнств MariaDB Galera відзначається можливість масштабування як операцій читання, так і запису. Зокрема, можлива розподілена організація запису, при якій вузли, на які вже зроблено запис за ланцюжком ініціюють запис на решту вузлів. Наприклад, у першій фазі запис паралельно проводиться на вузли різних дата-центрів, після чого ці вузли реплікують дані всередині кожного дата-центру, тобто по повільному каналу проходить тільки реплікація на один вузол з кожної групи.
MariaDB Enterprise
У січні 2014 компанія SkySQL і спільнота розробників СУБД MariaDB представили[8] відкритий продукт MariaDB Enterprise 1.0, націлений на спрощення установки, налаштування і управління високодоступними кластерними конфігураціями на базі MariaDB і Galera Cluster. Сирцеві тексти компонентів MariaDB Enterprise опубліковані під ліцензією GPLv2. Готові складання надаються через репозиторій після безоплатної реєстрації.
Основу MariaDB Enterprise становить RESTful API, що дозволяє управляти об'єднаними в кластер вузлами MariaDB, а також дає можливість забезпечити інтеграцію зі сторонніми продуктами і популярними фреймворками автоматизації та управління конфігурацією. Поверх API реалізований вебінтерфейс, який надає засоби для централізованого і наочного моніторингу, супроводу програмного оточення вузлів і управління роботою кластера. Вузли можуть бути розгорнуті як на фізичних серверах, так і в системах віртуалізації і хмарних сервісах. У тому числі надаються засоби для автоматичного розгортання вузлів з установкою всіх необхідних для роботи перед-настроєних компонентів з репозиторію, локально кешованого на стороні керуючого вузла, на якому запускається MariaDB Enterprise.
Основу MariaDB Enterprise становить MariaDB Manager — інтерфейс для моніторингу та управління, який складається з таких компонентів:
- Базовий прошарок з реалізацією API;
- Monitor — рушій для збору даних, встановлюваний на керуючому вузлі кластера, що виробляє опитування СУБД на вузлах кластера і здійснює накопичення, збереження та аналіз статистики;
- WebUI — вебінтерфейс адміністратора кластера, встановлюваний на керуючому вузлі;
- Agent — набір скриптів, що встановлюється на кожному вузлі кластера, що дозволяє взаємодіяти з вузлом через API
Для організації роботи кластера на вузлах використовується кластерна СУБД MariaDB Galera, котра базується на кодовій базі MariaDB і технологіях Galera. Система надає засоби для організації синхронної реплікації даних між кількома вузлами (застосовується топологія active-active multi-master, що допускає читання і запис для будь-якого вузла), при якій всі вузли завжди містять актуальні дані. На різних вузлах транзакції можуть виконуватися в паралельному режимі, гарантуючи при цьому незмінність стану кластера в цілому, незалежно від виконуваних у даний момент транзакцій. Реплікація виконується в паралельному режимі, на рівні рядків, з передачею тільки інформації про зміни.
Стороннє програмне забезпечення
Існує кілька розробок третіх фірм, власницьких і вільних, спроєктованих для MySQL, і повністю готових для інтеграції з MariaDB. Зокрема, це:
- HeidiSQL - безкоштовна програма для керування базами даних MySQL, а тепер і MariaDB (оф. сайт: http://www.heidisql.com [Архівовано 15 квітня 2017 у Wayback Machine.])
- DBEdit – вільний адміністративний застосунок для MariaDB та інших баз даних
- Navicat – серія власницьких застосунків управління базами даних під Windows, Mac OS X та Linux
Виноски
- ↑ Увидела свет СУБД MariaDB 10.0.0 [Архівовано 17 листопада 2012 у Wayback Machine.] // opennet.ru 13.11.2012
- ↑ MariaDB Foundation to Safeguard Leading Open Source Database. Архів оригіналу за 7 грудня 2012. Процитовано 6 грудня 2012.
- ↑ Основатели MySQL учредили организацию MariaDB Foundation, которая возглавит разработку СУБД MariaDB [Архівовано 7 грудня 2012 у Wayback Machine.] // opennet.ru 05.12.2012
- ↑ SkySQL Merges With MariaDB Developers To Create ‘Next Generation Open Source’ Database Company. Архів оригіналу за 17 квітня 2015. Процитовано 24 листопада 2014.
- ↑ Why SkySQL becoming MariaDB Corporation will be good for the MariaDB Foundation. Архів оригіналу за 29 листопада 2014. Процитовано 24 листопада 2014.
- ↑ Why does MariaDB 10.2 use InnoDB instead of XtraDB?. MariaDB KnowledgeBase. Архів оригіналу за 31 березня 2019. Процитовано 3 січня 2018.
- ↑ Первый выпуск кластерной СУБД MariaDB Galera. Архів оригіналу за 11 вересня 2012. Процитовано 11 вересня 2012.
- ↑ SkySQL Makes Highly Available Databases Easy, with MariaDB Enterprise. Архів оригіналу за 8 липня 2014. Процитовано 17 червня 2014.
Посилання
- MariaDB home page [Архівовано 26 листопада 2010 у Wayback Machine.]
- MariaDB FAQ
- MariaDB, the Backward Compatible Branch of MySQL(R) Database Server [Архівовано 20 липня 2013 у Wayback Machine.] - lecture given by Monty Widenius at Google
- Доступен стабильный релиз СУБД MariaDB 5.2 [Архівовано 16 листопада 2010 у Wayback Machine.]
- п
- о
- р