Mysql - чому і - для чого

Швидше за все, ви вже чули назву MySQL - якщо ви створювали або підтримували веб-сайти, або адміністрували сервера під управлінням Linux, або розробляєте різний корпоративне ПО. Але якщо навіть ви поки не знайомі з цим надзвичайно потужним і зручним продуктом - не біда, далі ми розповімо всі тонкощі застосування і роботи з MySQL.
Отже, MySQL - це реляційна база даних (СКБД, система управління базами даних), яка розповсюджується під ліцензією OpenSource GPL (точніше - під подвійний ліцензією, для OpenSource програм вона безкоштовна, для комерційного застосування платна).

Давайте спершу на секунду відвернемося і подивимося, які ще СУБД є на ринку, адже більшість великих софтверних компаній має в своєму арсеналі базу даних. Напевно, першою, з якою ви познайомилися, була Microsoft Access. Це типовий представник «легких» баз даних, що відмінно підходить для використання вдома, для обліку особистих колекцій або на невеликому підприємстві для автоматизації рутинної роботи. Для більш серйозних застосувань є її «старший брат» - Microsoft SQL Server - йому вже є практично все. З легкістю обробляючи в лічені секунди бази даних об'ємом в сотні тисяч і мільйони рядків (в таблицях можуть бути збережені різні дані, це означає, що кожен стовпець таблиці може містити довільні дані - від простого номера до величезних текстових масивів в одиниці і десятки Мб). Ще до таких «важковаговиків» відносяться СУБД компанії IBM - DB2 і Oracle однойменної компанії. Оскільки практично всі мови програмування, що застосовуються для створення веб-додатків, мають вбудовану підтримку цих баз, безпосередньо або через ODBC, то на основі таких «промислових» СУБД в основному будуються корпоративні портали та веб-сервіси, для яких критична навантаження і потрібна здатність працювати з великими обсягами даних. Наприклад, мова PHP може працювати з Sybase, PostgreSQL, MS SQL Server, Oracle, Informix, InterBase, Ingres, а також з будь-якими іншими базами через інтерфейс ODBC.

MySQL не самотня на ринку ... Ще є клас «середніх» СУБД - як за ціною, так і можливостями вони відрізняються від описаних вище. Це наприклад, Borland Interbase, MS Access, PostgreSQL і особливий предмет нашої розмови - MySQL. Ці бази досить прості для навчання і програмування, дешеві або зовсім безкоштовні і відмінно підходять для створення різних додатків (як традиційних, так і веб) додатків, де не потрібно космічна надійність і стійкість.

але по ряду параметрів найкраща! Чому ми розповідаємо вам саме про MySQL? Тому що вона безкоштовна (GPL OpenSource)? Не тільки. Тому що це дуже невелика за розмірами СУБД (всього 25 - 30 Мб дистрибутива, на відміну від цілого CD MS SQL Server або сотні півтори Мб MS Access)? Теж немає. Тому що вона дуже швидка (особливо на операціях читання, коли динячі зчитуються з таблиць і виводяться у відповідь на запит клієнта - саме тому БД стала популярна в середовищі Інтернету, де важлива саме швидкість читання)? І це не найголовніше. А може тому, що це дуже динамічно розвивається продукт, результат роботи сотень людей так званої «віртуальної» компанії MySQL AB (віртуальна вона тому, що співробітники не сидять в одному офісі, а розкидані по всьому світу і постійно пов'язані тільки через мережу Інтернет)? Так, і це теж, але не тільки. Якщо чесно, я сам не візьмуся сказати, що привернуло мене саме в MySQL - просто одного разу я спробував попрацювати з нею і зрозумів, що відтепер всі мої проекти будь-якого масштабу будуть використовувати тільки цю СУБД - MySQL!

Існує кілька паралельних гілок разработкіТеперь, визначившись з базою, можна завантажити з сайту www.mysql.com потрібну нам версію СУБД. Тут треба зупинитися і прояснити ситуацію з версіями. Зараз існують паралельно кілька версій MySQL:

  • стабільна - MySQL 3.23.xx (а тепер ще й гілка 4.1.хх). Ця версія протестована багатьма і успішно працює на тисячах серверів, вона рекомендована для застосування в будь-яких проектах;
  • бета - версія в розробці, рекомендована тільки для вивчення та ознайомлення з новими функціями. Раніше всі версії MySQL 4.xx.xx мали статус бети.
  • гамма - це наступний щабель після бети, означає, що СУБД пропрацювала більше місяця без істотних (критичних) збоїв. Її можна, в принципі, сміливо застосовувати, але розробники попереджають, що ця версія ще тестується, і вони не гарантують, що вона досконала.
  • альфа - це тільки для справжніх фанатів і розробників. Зараз це MySQL 5.0.x. В альфа-версіях ще багато помилок, але вже можна пробувати і досліджувати функції і можливості, які з'являться в наступних версіях.

Не знаю, як ви, я але відразу скачав собі версію 5.0.0 (ще альфа). За майже рік експериментів альфа-версія жодного разу не підвела - все працює як годинник. Може, розробники зайве перестраховуються, але головне - що вони дуже добре працюють, тому для ознайомлення і роботи можна використовувати як бета-Берії (гілка 5.х), так і недавно випущені версії MySQL 4.1.х. Для особливо вибагливих варіантів застосування можна використовувати давно перевірені і стабільні версії 3.23.х, якщо не потрібні якісь особливі функції.

Відразу ж раджу скачати додаткову програму для полегшення роботи з базою - MySQL Administrator. Про цю утиліту і інших програмах, що дозволяють істотно спростити роботу з базою, ми вже писали - "Програми-адміністратори сервера MySQL".

Сам сервер СУБД MySQL функціонує як окрема програма. Безпосередньо до нього ви не можете звернутися - для цього існують спеціальні програми. Однією з них є термінал mysql - він приймає команди від користувача і злився з сервером MySQL (який може бути як на іншому комп'ютері в локальній мережі, так і на сервері в Інтернет-е, або ж на тому ж комп'ютері - це не має значення, для вас як користувача це абсолютно прозоро) відправляє їх на виконання, назад приймаючи результат (наприклад, вибрані дані з бази, або відповідь сервера про успішне завершення зазначеної операції або повідомлення про помилку). Інші програми можуть самі взаємодіяти з сервером безпосередньо, командний термінал потрібен лише для спілкування користувача з сервером.

До речі, сервер MySQL майже відразу показує своє «не-Windows" походження - простого кліка по виконуваного файлу mysqld-nt.exe недостатньо для запуску. Найпростіше спочатку запустити будь-яку графічну утиліту - MySQL Manager або MySQL Administrator і вже потім запускати або зупиняти сервер. Справа в тому, що для запуску / зупинки сервера треба вказати багато різних параметрів, і їх запам'ятовування і набір кожен раз з командного рядка незручний. Раніше, коли не було утиліт, треба було створювати ярлики і присвоювати їм команди. Тепер керувати сервером стало набагато простіше. Але все ж знання команд і опцій для запуску сервера дуже корисно - найважливіші з команд опис в статті "MySQL запустити - теж треба вміти"

Для кожної з цих груп користувачів є свої програми, кожна група бачить сервер MySQL в своєму ракурсі і їм потрібні різні відомості для роботи. Звичайно, розробник прикладної програми повинен орієнтуватися в управлінні сервером, але зовсім не обов'язково влізати в тонкощі оптимізації або управління користувачами - для цього є адміністратори БД, які в свою чергу практично не втручаються в структури таблиць, створюваними розробником, а тільки налаштовують параметри сервера і стежать за його роботою.

Давайте спробуємо коротко поглянути на MySQL з позиції середнього користувача, трохи адміністратора і трохи розробника.

З точки зору прикладного розробника, робота з сервером MySQL полягає в тому, що він підключається до сервера, відкриває з'єднання з вказаною базою і працює з таблицями в цій базі даних. Для роботи йому необхідно знати параметри з'єднання з сервером (якщо сервер на тому ж комп'ютері, то це: host: localhost, port: 3306; login / password виходить у адміністратора, за замовчуванням це root з порожнім паролем) і ім'я бази даних. Далі все взаємодія з таблицями відбувається через введення і виконання SQL-запитів і обробкою повернутих результатів.

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

Тепер MySQL підтримує кластерізаціюЧто об'єднує всіх користувачів, що працюють з СУБД (знову таки, не обов'язково з MySQL) - це те, що основною мовою спілкування з сервером є SQL - структурований мова запитів. Існує кілька версій цієї мови, MySQL поки підтримує синтаксис ANSI SQL 92 з деякими обмеженнями. Так, слід визнати, що в СУБД MySQL поки не підтримуються деякі функції і можливості, які визначені в стандартах SQL або присутні в інших СУБД (в тому ж Oracle або MS SQL Server). Але для цього є причини - одні функції потрібні тільки при розробці високостійких кластерів, інші істотно впливають на швидкість або ресурсомісткість (розробники MySQL завжди робили ставку на швидкість роботи, тому часто прямо говорили, що та чи інша функція не включена, оскільки впливає на швидкість) . Оскільки довгий час, та й зараз, однією з основних сфер застосування MySQL є веб-розробка та підтримка динамічних веб-сайтів, то така позиція була виправдана і вигідна. Але, виходячи із загальної тенденції, розробники потихеньку зближують можливості «важких» СУБД і MySQL - вже версія 5.0 (а початкова підтримка кластеризації впроваджена вже в поточну версію 4.1), яка поки в стадії розробки, дозволяє будувати дуже потужні відмовостійкі сервера, а пакет MySQL Cluster дозволить створювати сервера СУБД з надійністю 99,999% (час простою 5 хвилин / рік), що відразу ж виводить MySQL на ринок серйозних корпоративних рішень.

Окремі рішення з «важких СУБД» після тривалого тестування потрапляють і в стабільні версії. Наприклад, підтримка транзакцій. Транзакція - це кілька послідовних запитів до БД, які виконуються або все разом, або не виконуються взагалі. Якщо перший запит вставляє дані в одну таблицю, другий в іншу, а третій зчитує всі ці дані і обробляє їх, то при використанні транзакцій ніколи не буде такої ситуації, коли дані в першу таблицю вже вставлені, а в другу ще немає, а операція зчитування вже виконується і дає помилковий результат. Якщо відбувається помилка на будь-якої окремої операції в транзакції, то робиться «відкат», і дані залишаються такими ж, як і до виконання транзакції. Але якщо ви використовуєте сервер СУБД в режимі "по-замовчуванню", ви навіть не помітите нових функцій - це істотно при перенесенні ПО і баз з попередніх версій СУБД. Якщо вам дійсно потрібно використовувати нові можливості - це робиться вручну, через команди SQL або настройки сервера. Наприклад, підтримка транзакцій введена через новий формат таблиць - InnoDB. За замовчуванням використовується звичний формат MyISAM, який універсальний для всіх версій сервера (і платформ), а якщо треба отримати доступ до нових можливостей - будь ласка, це робиться завданням опцій при створенні таблиці (в операторі CREATE TABLE після опису полів нової таблиці пишеться пропозицію TYPE = ). Такий спосіб введення нововведень дуже зручний - зберігається зворотна сумісність, а нові можливості застосовуються тільки тоді, коли вони дійсно потрібні.

Будь-який тип даних займе своє місце в СУБД MySQLЕще треба сказати про типи даних, які підтримує MySQL. Саме від цього залежить, які дані зможе розробник зберігати в базі. Звичайно, присутні числові дані - як цілі числа (TINYINT, MEDIUMINT, INT, BIGINT), так і речові - (FLOAT, DOUBLE, DECIMAL). Для зберігання рядків застосовуються або типи CHAR і VARCHAR, довжиною до 255 символів, або TEXT, MEDIMTEXT, LONGTEXT для зберігання довільних текстових масивів. Для зберігання двійкових даних використовують ті ж типи - BLOB, MEDIUMBLOB, LONGBLOB - різниця між ними в чутливості до регістру символів і можливості повнотекстового пошуку (він підтримується для типів TEXT і похідних). Для зберігання дати та часу є типи DATE, TIME, DATETIME, TIMESTAMP і YEAR. Для перелічуваних типів, значення яких задані заздалегідь, є два варіанти - SET і ENUM. Комбінуючи в таблиці поля зазначених типів, а при необхідності застосовуючи ще програмну обробку даних можна зберігати і управляти практично будь-якими даними.

Ви все ще сумніваєтеся, чи варто застосовувати СУБД MySQL в своїх розробках? Смію запевнити, вона відмінно впорається з роботою в якості корпоративного сервера. Або ви вважаєте, що MySQL не витримає навантаження і для вашого застосування краще купити більш «важку» СУБД типу MS SQL Server або Oracle? Спробуємо вас переконати.

MySQL підтримує таблиці до 512 Гб і до 60 тис. Таблиць в базеMySQL реально підтримує роботу з великими базами даних. Наприклад, розмір таблиці може досягати 512 Гб (саме, Гігабайт). Конкретний розмір таблиці визначається операційною системою, під управлінням якої запущений сервер (таблиця представлена ​​одним файлом, тому її максимальний розмір може обмежувати файлової системи і ОС). Для платформи Intel (32-х розрядної) + Linux / Windows розмір таблиці може досягати 4 Гб і більше, а зазначені 512 Гб можна отримати, використовуючи Sun Solaris на платформі UltraSPARC. Вражає? Окремі клієнти MySQL AB розповідали, що працюють з базами даних, що містять до 60 000 таблиць (!) В одній базі і до 5 мільярдів записів в таблиці (!!). А тепер підтримка MySQL Cluster дозволить підняти цей показник ще вище. Більш того, навіть якщо ваша ОС або файлова система не підтримує великі файли, можна використовувати дані, рознесені на дві і більше таблиць в режимі однієї - кілька таблиць (фізично розміщені в декількох файлах) будуть на рівні бази даних (в SQL-запитах) оброблятися і відображатися як одна велика таблиця.

Посилання по темі

Схожі статті