MariaDB

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
MariaDB
MariaDB-logo.png
Розробник(и) Monty Program Ab
MariaDB Foundation
Перший випуск 22 січня 2009
Стабільний випуск 10.0 (31 березня 2014; 174 дні тому)
Написано на C, C++, Perl, Bash
Операційна система крос-платформова
Доступні мови англійська
Тип Реляційна система керування базами даних
Ліцензія GNU General Public License (version 2)
Сайт mariadb.org

MariaDBреляційна система керування базами даних, створена на початку 2009 як відгалуження (форк) MySQL. MariaDB поширюється під вільною та відкритою ліцензією GNU GPL.

Історія[ред.ред. код]

Поштовхом для створення MariaDB стала непевність спільноти розробників та користувачів невизначеною долею і ліцензією MySQL після її придбання Oracle. Засновник MySQL і ідеолог створення MariaDB Монті Віденіус назвав MySQL «мертвою».

Проект MariaDB почала розвивати компанія Monty Program Ab, створена Майклом Віденіусом, після його відходу з Sun Microsystems. У розробці MariaDB також брали участь компанії SkySQL і Percona, котрі розвивають власні продукти та надають сервіс супроводу та підтримки для рішень на базі MySQL.

Проект підтримує високу ступінь сумісності з MySQL , включаючи "вставку" замінних можливостей бінарним еквівалентом бібліотек і відповідністю з існуючим API і командами MySQL. Навіть перша стабільна версія СУБД отримала номер 5.2, ніби продовжуючи лінійку MySQL. MariaDB включає два нових вдосконалених рушія баз даних: Aria (раніше відомого як Maria) на заміну MyISAM, та XtraDB як заміну InnoDB. Серія 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[ред.ред. код]

У грудні Майкл Віденіус (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 буде контролюватися незалежним від окремих комерційних компаній комітетом.

Особливості MariaDB[ред.ред. код]

Нові сховища даних[ред.ред. код]

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

  • Maria — засноване на MyISAM високонадійне сховище, що відрізняються підвищеною стійкістю і збереженню цілісності даних після краху, при повній сумісності з MyISAM. Завдяки веденню логу операцій, у разі краху проводиться відкат результатів виконання поточної операції. Також підтримується можливість відновлення стану з будь-якої точки в балці операцій (включаючи підтримку CREATE / DROP / RENAME / TRUNCATE).
  • На заміну InnoDB використовується рушій XtraDB, заснований на коді InnoDB-plugin і повністю сумісний з ним, але відрізняється помітно вищою продуктивністю, завдяки інтеграції патчів від компаній Google і Percona. Зокрема, в XtraDB поліпшений механізм роботи з пам'яттю, покращена робота підсистеми введення / виведення InnoDB, додана підтримка декількох нитей читання і запису, підтримка управління пропускною здатністю, реалізація упереджувальною вибіркою даних (read-ahead), адаптивна установка контрольних точок (adaptive checkpointing), розширені можливості з масштабування для великих проектів, система організації блокувань адаптована для роботи на системах з великою кількістю CPU, додані додаткові можливості для накопичення та аналізу статистики
  • До складу включено сховище 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.[4] Проект позиціонується в якості конкурента кластерним рішенням Oracle на базі MySQL та Percona XtraDB Cluster.

Продукт розширює можливості MariaDB, яка може виступати в якості прозорої заміни MySQL 5.5, засобами для організації синхронної реплікації даних між кількома вузлами (застосовується топологія active-active multi-master, яка допускає читання та запис для будь-якого вузла). При синхронної реплікації всі вузли завжди містять актуальні дані, тобто гарантується відсутність втрачених транзакцій, тому що транзакція фіксується тільки після поширення даних по всіх вузлах. При цьому, в рамках транзакції операції виконуються відразу, затримка через очікування підтвердження виникає тільки при виконанні операції "commit". На різних вузлах транзакції можуть виконуватися в паралельному режимі. При виконанні транзакції забезпечується гарантована незмінність стану кластера в цілому, незалежно від інших виконуваних в даний момент транзакцій.

Реплікація виконується в паралельному режимі, на рівні рядків, з передачею тільки інформації про зміни. Управління приналежністю вузлів кластеру виконується автоматично, збійні вузли відразу виключаються з кластера без участі адміністратора, нові вузли при необхідності можна підключити на льоту без додаткової переконфігурації. Кластер може бути територіально розподілений на декілька дата-центрів, при цьому для клієнта забезпечується мінімальна затримка — при розміщенні вузлів в безпосередній близькості від клієнта, всі операції читання і запису будуть виконуватися з максимальною швидкістю, затримка буде відчуватися тільки при виконанні комітів транзакції.

З достоїнств MariaDB Galera відзначається можливість масштабування як операцій читання, так і запису. Зокрема, можлива розподілена організація запису, при якій вузли, на які вже зроблено запис за ланцюжком ініціюють запис на решту вузлів. Наприклад, у першій фазі запис паралельно проводиться на вузли різних дата-центрів, після чого ці вузли реплікують дані всередині кожного дата-центру, тобто по повільному каналу проходить тільки реплікація на один вузол з кожної групи.

MariaDB Enterprise[ред.ред. код]

У січні 2014 компанія SkySQL і спільнота розробників СУБД MariaDB представили[5] відкритий продукт 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)
  • DBEdit – вільний адміністративний застосунок для MariaDB та інших баз даних
  • Navicat – серія власницьких застосунків управління базами даних під Windows, Mac OS X та Linux

Виноски[ред.ред. код]

Посилання[ред.ред. код]