MySQL

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
MySQL
Mysql logo 100x52.gif
Розробник(и) MySQL AB (підрозділ Oracle Corporation)
Перший випуск 23 травня 1995
Стабільний випуск 5.6 (5 лютого 2013; 438 днів тому)
Написано на C, C++
Операційна система крос-платформова
Доступні мови Англійська
Стан розробки активний
Тип Реляційна система керування базами даних
Ліцензія GNU General Public License (версія 2) або EULA
Сайт www.mysql.com

MySQLвільна система керування реляційними базами даних.

MySQL був розроблений компанією «ТсХ» для підвищення швидкодії обробки великих баз даних. Ця система керування базами даних (СКБД) з відкритим кодом була створена як альтернатива комерційним системам. MySQL з самого початку була дуже схожою на mSQL, проте з часом вона все розширювалася і зараз MySQL — одна з найпоширеніших систем керування базами даних. Вона використовується, в першу чергу, для створення динамічних веб-сторінок, оскільки має чудову підтримку з боку різноманітних мов програмування.

Ліцензування[ред.ред. код]

MySQL має подвійне ліцензування. MYSQL може розповсюджуватися відповідно до умов ліцензії GPL. Але за умовами GPL, якщо якась програма використовує бібліотеки MySQL, то вона теж повинна розповсюджуватися за ліцензією GPL. Проте це може розходитися з планами розробників, які не бажають відкривати сирцеві тексти своїх програм. Для таких випадків передбачена комерційна ліцензія компанії Oracle, яка також забезпечує якісну сервісну підтримку. В разі використання та розповсюдження програмного забезпечення з іншими вільними ліцензіями, такими як BSD, Apache, MIT та інші, MySQL дозволяє використання бібліотек MySQL за ліцензією GPL[1].

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

MySQL виникла як спроба застосувати mSQL до власних розробок компанії: таблиць, для яких використовувалися ISAM — підпрограми низького рівня. У результаті був вироблений новий SQL-інтерфейс, але API-інтерфейс залишився в спадок від mSQL. Звідки походить назва «MySQL» — достеменно не відомо. Розробники дають два варіанти: або тому, що практично всі напрацювання компанії починалися з префікса My, або на честь дівчинки на ім'я My, дочки Майкла Монті Віденіуса, одного з розробників системи[2].

Логотип 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 містить такі нововведення:[3][4]

  • Сегментування — можливість розбити одну велику таблицю на декілька частин, розміщених в різних файлових системах, базуючись на визначеній користувачем функції. При деяких умовах це може дати серйозне збільшення продуктивності та, крім того, полегшує масштабування таблиць.
  • Змінено поведінку ряду операторів для забезпечення більшої сумісності зі стандартом 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)[5], який у 2010 був перейменований на Aria та став основою форку MySQL від Монті Віденіуса під назвою MariaDB[6]

Тип таблиць Maria[ред.ред. код]

Maria (починаючи з версії 5.2.x — Aria) — новий тип таблиць MySQL для зберігання даних. Maria являє собою розширену версію сховища MyISAM, з додаванням засобів збереження цілісності даних після краху.

Основні переваги Maria [7].

  • У разі краху проводиться відкат результатів виконання поточної операції або повернення в стан до команди 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
  • Google — для програми AdWords пошукового рушія
  • LiveJournal — приблизно 300 мільйонів переглядів сторінок на день
  • MediaWiki і Вікіпедія
  • NASA — конвертувала базовану на Oracle систему закупок на MySQL [1]
  • Nokia
  • Yahoo!

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

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

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

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

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

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

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

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