MySQL — Вікіпедія

MySQL
Тип Реляційна система керування базами даних
Розробники Oracle Corporation
Перший випуск 23 травня 1995
Стабільний випуск 8.0.32 (17 січня 2023; 14 місяців тому (2023-01-17))
Платформа x86_64[1], IA-32[1], A64d[1] і SPARC[1]
Операційна система Windows[1], FreeBSD[1], Solaris[1], UNIX-подібні операційні системи, Linux[1] і macOS[1]
Мова програмування C++[2] і C[2]
Доступні мови Англійська
Стан розробки активний
Ліцензія GNU General Public License, version 2.0[d][3] і пропрієтарна ліцензія[d][4]
Репозиторій github.com/mysql/mysql-server
Вебсайт mysql.com

MySQL — вільна система керування реляційними базами даних, яка була розроблена компанією «ТсХ» для підвищення швидкодії обробки великих баз даних. Ця система керування базами даних (СКБД) з відкритим кодом була створена як альтернатива комерційним системам. MySQL з самого початку була дуже схожою на mSQL, проте з часом вона все розширювалася і зараз 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 [1]
  • Nokia
  • WordPress
  • Yahoo!

Критика[ред. | ред. код]

MySQL версії 5.1 має 20 відомих серйозних помилок в додаток до 35 дефектів версії 5.0. Критичні помилки іноді не виправляються протягом тривалих періодів часу. Одним із прикладів є критична помилка, що відома з 2003 року.

MySQL показує низьку ефективність при використанні її як сховища даних, це частково пов'язано з нездатністю використовувати декілька процесорів для обробки одного запиту. До того ж, MySQL часто критикують за те, що ця СКБД має розходження зі стандартом SQL щодо трактування NULL значень і значення за замовчуванням.

Відгалуження MySQL[ред. | ред. код]

Продаж MySQL Sun Microsystems у 2008 і наступне поглинання Sun з боку Oracle було несхвально сприйнято спільнотою вільного програмного забезпечення. Незалежними групами, в тому числі навколо колишніх розробників MySQL, були створені відгалуження (форки) проєкту, серед яких

Примітки[ред. | ред. код]

  1. а б в г д е ж и к Supported Platforms: MySQL Database
  2. а б The mysql Open Source Project on Open Hub: Languages Page — 2006.
  3. COPYING
  4. https://www.mysql.com/about/legal/licensing/oem/
  5. 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»). Архів оригіналу за 3 березня 2008. Процитовано 29 лютого 2008.
  6. [История MySQL (англ.). Архів оригіналу за 31 серпня 2009. Процитовано 3 червня 2010. История MySQL (англ.)]
  7. Нововведения MySQL 5.1. Архів оригіналу за 4 квітня 2013. Процитовано 6 грудня 2009.
  8. Обзор новшеств MySQL 5.1 на русском языке. Архів оригіналу за 26 грудня 2008. Процитовано 6 грудня 2009.
  9. Обзор возможностей хранилища Maria на opennet.ru. Архів оригіналу за 9 лютого 2009. Процитовано 6 грудня 2009.
  10. Игорь Савчук. MySQL «на стероидах». Архів оригіналу за 8 листопада 2010. Процитовано 16 грудня 2010.
  11. Огляд можливостей сховища Maria на opennet.ru. Архів оригіналу за 9 лютого 2009. Процитовано 6 грудня 2009.

Див. також[ред. | ред. код]

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