MySQL
MySQL — вільна система керування реляційними базами даних, яка була розроблена компанією «ТсХ» для підвищення швидкодії обробки великих баз даних. Ця система керування базами даних (СКБД) з відкритим кодом була створена як альтернатива комерційним системам. MySQL з самого початку була дуже схожою на mSQL, проте з часом вона все розширювалася і зараз MySQL — одна з найпоширеніших систем керування базами даних. Вона використовується, в першу чергу, для створення динамічних веб-сторінок, оскільки має чудову підтримку з боку різноманітних мов програмування.
Тип | Реляційна система керування базами даних |
---|---|
Розробники | MySQL AB, Sun Microsystems і Oracle Corporation |
Перший випуск | 23 травня 1995 |
Стабільний випуск | 8.0.17 (29 липня 2019 ) |
Репозиторій | github.com/mysql/mysql-server |
Платформа | Microsoft Windows |
Операційна система | Linux[1], Microsoft Windows[1], macOS[1], FreeBSD[1], Solaris[1] і UNIX-подібні операційні системи |
Мова програмування | C++[2] і C[2] |
Доступні мови | Англійська |
Стан розробки | активний |
Ліцензія | GNU General Public License, version 2.0[3] і пропрієтарна ліцензія[4] |
Вебсайт | mysql.com |
MySQL у Вікісховищі |
Ліцензування
MySQL має подвійне ліцензування. MySQL може розповсюджуватися відповідно до умов ліцензії GPL. Але за умовами GPL, якщо якась програма використовує бібліотеки MySQL, то вона теж повинна розповсюджуватися за ліцензією GPL. Проте це може розходитися з планами розробників, які не бажають відкривати сирцеві тексти своїх програм. Для таких випадків передбачена комерційна ліцензія компанії Oracle, яка також забезпечує якісну сервісну підтримку. В разі використання та розповсюдження програмного забезпечення з іншими вільними ліцензіями, такими як BSD, Apache, MIT та інші, MySQL дозволяє використання бібліотек MySQL за ліцензією GPL[5].
Історія
MySQL виникла як спроба застосувати mSQL до власних розробок компанії: таблиць, для яких використовувалися ISAM — підпрограми низького рівня для індексного доступу до даних. У результаті був вироблений новий SQL-інтерфейс, але API-інтерфейс залишився в спадок від mSQL. Звідки походить назва «MySQL» — достеменно не відомо. Розробники дають два варіанти: або тому, що практично всі напрацювання компанії починалися з префікса My, або на честь дівчинки на ім'я My, дочки Майкла Монті Віденіуса, одного з розробників системи[6].
Логотип MySQL у вигляді дельфіна носить ім'я «Sakila». Він був обраний з великого списку запропонованих користувачами «імен дельфіна». Ім'я «Sakila» було відправлено Open Source-розробником Ambrose Twebaze.
В січні-лютому 2008 Sun Microsystems придбала розробника системи керування базами даних MySQL за $1 млрд. Після поглинання у 2009 році Sun Microsystems компанією Oracle Corporation MySQL стала власністю Oracle.
За час розвитку під орудою Oracle дедалі більше відокремлює MySQL від спільноти і робить процес розробки все менш прозорим. Наприклад, повернута практика поставки власницьких розширених функцій в Enterprise-версії MySQL, спостерігається приховування інформації про вразливості, зі складу виключений тестовий набір, закритий доступ до більшої частини системи відстеження помилок та припинено публікація згрупованого логу змін, що дозволяє судити про прив'язку патчів до конкретних змін.
Релізи
- перший внутрішній випуск MySQL — 23 травня 1995
- версія для систем Windows ((Windows 95 і NT))— 8 січня 1998
- версія 3.23: бета від червня 2000, стабільний випуск у січні 2001
- версія 4.0: бета від серпня 2002, стабільний випуск у березні 2003 (unions, query cache)
- версія 4.1: бета від червня 2004, стабільний випуск у жовтні 2004 (r-trees, subqueries)
- версія 5.0: бета від березня 2005, стабільний випуск у жовтні 2005 (cursors, stored procedures, triggers, views, XA transactions)
- версія 5.1: розробка велась із листопада 2005, стабільний випуск в листопаді 2008
- версія 5.4: бета в квітні 2009
- версія 6.0: в розробці
MySQL 4.0
Не зважаючи на те, що версія 4.0 є застарілою, вона все ще має значне розповсюдження. Основні можливості цієї версії:
- Практично повна реалізація ANSI SQL-99 разом з розширеннями.
- Міжплатформенна сумісність.
- Незалежні типи таблиць (MyISAM для швидкого читання, InnoDB для транзакцій і цілісності посилань).
- Транзакції.
- Підтримка SSL.
- Кешування запитів.
- Реплікація: один головний сервер на одного підлеглого, багато підлеглих на одного головного.
- Повнотекстова індексація і пошук з використанням типу таблиць MyISAM.
- Імплементована бібліотека бази даних.
- Підтримка Юнікоду (UTF-8).
- Таблиці InnoDB забезпечують відповідність вимогам ACID.
- Вбудований сервер, який дозволяє включати MySQL в автономні додатки.
MySQL 4.1
Рекомендованою версією MySQL на 2005 рік є MySQL 4.1, яка вийшла 27 жовтня 2004 року. Вона містить такі нововведення:
- Вкладені запити і похідні таблиці.
- Нова система кодувань і сортувань.
- Більш швидкий та гнучкий протокол клієнт-сервера із підтримкою підготовлених запитів, який забезпечує їх оптимальне виконання.
- Нова програма установки та налаштування для Microsoft Windows і GNU/Linux.
- Захищені через OpenSSL з'єднання між клієнтом та сервером.
- Високо-оптимізована бібліотека, яка може бути використана в сторонніх програмах.
- Повноцінна підтримка Юнікоду (UTF-8 і UCS2).
- Стандартні просторові типи даних GIS для зберігання географічної інформації.
- Покращений повнотекстовий пошук та система допомоги.
MySQL 5.0
Версія MySQL 5.0 вийшла 24 жовтня 2005 року, у цій версії була значно розширена функціональність, що ставить MySQL в один ряд із комерційними СКБД. Якщо ранішу СКБД MySQL звинувачували у недостатній підтримці стандарту SQL, то із появою п'ятої версії цієї популярної бази даних з'явилась практично повна підтримка стандарту SQL. MySQL 5.0 містить такі нововведення:
- Збережувані процедури та функції.
- Обробники помилок.
- Курсори.
- Тригери.
- Представлення.
- Інформаційна схема (так званий системний словник, що містить метадані).
MySQL 5.1
Версія MySQL 5.1 продовжує шлях до стандарту SQL:2003. MySQL 5.1 містить такі нововведення:[7][8]
- Сегментування — можливість розбити одну велику таблицю на декілька частин, розміщених в різних файлових системах, базуючись на визначеній користувачем функції. При деяких умовах це може дати серйозне збільшення продуктивності та, крім того, полегшує масштабування таблиць.
- Змінено поведінку ряду операторів для забезпечення більшої сумісності зі стандартом SQL:2003.
- Порядкова реплікація (row-based реплікація), при якій в бінарний лог буде записуватись тільки інформація про реально змінені рядки таблиці замість оригінального (і, можливо, більш повільного) тексту запиту.
- Вбудований планувальник робіт, що періодично запускаються. По синтаксису додання задачі схоже на додання тригера до таблиці; по ідеології — на crontab.
- Додатковий набір функцій для обробки XML, реалізація підтримки XPath.
- Нові засоби діагностики проблем і утиліти для аналізу продуктивності. Розширено можливості з керування вмістом лог-файлів, логи тепер можуть бути збережені і в таблицях general_log і в slow_log. Утиліта mysqlslap дозволяє провести тестування навантаження БД із записом часу реакції на кожний запит.
- Для спрощення операції оновлення підготовлена утиліта mysql_upgrade, яка виконає перевірку всіх існуючих таблиць на предмет сумісності з новою версією, і при необхідності виконає належні коригування.
- MySQL Cluster тепер йде як окремий продукт, який базується на MySQL 5.1 і сховищі NDBCLUSTER.
- Значні зміни в роботі MySQL Cluster, такі, як, наприклад, можливість зберігання табличних даних на диску.
- Повернення до використання вбудованої бібліотеки libmysqld, відсутньої в MySQL 5.0.
- API для плагінів, що дозволяє завантажувати сторонні модулі, які розширюють функціональність (наприклад, повнотекстовий пошук), без перезапуску сервера.
- Реалізація парсера повнотекстового пошуку у вигляді plug-in.
- Новий рушій таблиць Maria (стійкий до збоїв клон MyISAM)[9], який у 2010 був перейменований на Aria та став основою форку MySQL від Монті Віденіуса під назвою MariaDB[10]
Тип таблиць Maria
Maria (починаючи з версії 5.2.x — Aria) — новий тип таблиць MySQL для зберігання даних. Maria являє собою розширену версію сховища MyISAM, з додаванням засобів збереження цілісності даних після краху.
Основні переваги Maria[11].
- У разі краху проводиться відкат результатів виконання поточної операції або повернення в стан до команди LOCK TABLES. Реалізація через ведення логу операцій.
- Можливість відновлення стану з будь-якої точки в журналі операцій, включаючи підтримку CREATE/DROP/RENAME/TRUNCATE. Може бути використана для створення інкрементальних бекапів, через періодичне копіювання лог файлу.
- Підтримка всіх форматів стовпців MyISAM, розширена новим форматом «rows-in-block», що використовують сторінковий спосіб зберігання даних, при якому дані в стовпцях можуть кешуватися.
- В майбутньому буде реалізовано два режими: транзакційний і без відображення в журналі транзакцій, для не критичних даних.
- Розмір сторінки даних дорівнює 8Кб (в MyISAM 1Кб), що дозволяє досягти більш високої продуктивності для індексів за полями фіксованого розміру, але працює повільніше у разі індексування ключів змінної довжини.
MySQL 5.5
Гілка MySQL 5.5 містить ряд значних поліпшень, пов'язаних з підвищенням масштабованості та швидкодії, серед яких:
- Використання за замовчуванням рушія InnoDB.
- Підтримка напівсинхронного (semi-synchronous) механізму реплікації, заснованого на патчах до InnoDB від компанії Google.
- Поліпшення функцій з партіціювання даних. Розширений синтаксис для розбиття великих таблиць на кілька частин, розміщених в різних файлових системах (partitioning). Додані операції RANGE, LIST і метод оптимізації «partition pruning».
- Новий механізм оптимізації вкладених запитів та операцій JOIN.
- Перероблена система внутрішніх блокувань.
- Інтегровані патчі Google з оптимізацією роботи InnoDB на CPU з великою кількістю ядер.
Можливості
MySQL — компактний багатопотоковий сервер баз даних. Характеризується високою швидкістю, стійкістю і простотою використання.
MySQL вважається гарним рішенням для малих і середніх застосувань. Сирцеві коди сервера компілюються на багатьох платформах. Найповніше можливості сервера виявляються в UNIX-системах, де є підтримка багатопоточності, що підвищує продуктивність системи в цілому.
Можливості сервера MySQL:
- простота у встановленні та використанні;
- підтримується необмежена кількість користувачів, що одночасно працюють із БД;
- кількість рядків у таблицях може досягати 50 млн;
- висока швидкість виконання команд;
- наявність простої і ефективної системи безпеки.
Відомі користувачі
- Apple — для динамічних сторінок на Apple.com, для багатьох внутрішніх проектів
- Amazon.com — для багатьох внутрішніх проектів
- Cox Communications — четвертий за розміром провайдер кабельного телебачення в США, має понад 3,600 таблиць та 2 мільярди рядків даних у базах і виконує приблизно 2 мільйони вставок на годину
- Digg
- flickr
- Joomla!
- Google — для програми Google Ads (колишній AdWords), пошукового рушія
- LiveJournal — приблизно 300 мільйонів переглядів сторінок на день
- MediaWiki і Вікіпедія
- NASA — конвертувала базовану на Oracle систему закупівель на MySQL
- Nokia
- WordPress
- Yahoo!
Критика
MySQL версії 5.1 має 20 відомих серйозних помилок в додаток до 35 дефектів версії 5.0. Критичні помилки іноді не виправляються протягом тривалих періодів часу. Одним із прикладів є критична помилка, що відома з 2003 року.
MySQL показує низьку ефективність при використанні її як сховища даних, це частково пов'язано з нездатністю використовувати декілька процесорів для обробки одного запиту. До того ж, MySQL часто критикують за те, що ця СКБД має розходження зі стандартом SQL щодо трактування NULL значень і значення за замовчуванням.
Відгалуження MySQL
Продаж MySQL Sun Microsystems у 2008 і наступне поглинання Sun з боку Oracle було несхвально сприйнято спільнотою вільного програмного забезпечення. Незалежними групами, в тому числі навколо колишніх розробників MySQL, були створені відгалуження (форки) проекту, серед яких
Примітки
- Supported Platforms: MySQL Database
- The mysql Open Source Project on Open Hub: Languages Page — 2006.
- https://github.com/mysql/mysql-server/blob/mysql-8.0.3/COPYING
- https://www.mysql.com/about/legal/licensing/oem/
- We want specified Free/Libre and Open Source Software («FLOSS») applications to be able to use specified GPL-licensed MySQL client libraries (the «Program») despite the fact that not all FLOSS licenses are compatible with version 2 of the GNU General Public License (the «GPL»).
- История MySQL (англ.)
- Нововведения MySQL 5.1. Архів оригіналу за 4 квітня 2013. Процитовано 6 грудня 2009.
- Обзор новшеств MySQL 5.1 на русском языке
- Обзор возможностей хранилища Maria на opennet.ru
- Игорь Савчук. MySQL «на стероидах»
- Огляд можливостей сховища Maria на opennet.ru