Лабораторна робота: MySQL, MySQL, Бази даних, статті

Олег П. Філон,
GomeLUG, група користувачів Лінукс, Гомель, BY
www.citforum.ru

Зайнятися виконанням цієї лабораторної роботи мене спонукали кілька причин. По-перше, займаючись побудовою серверів і мереж на основі Лінукс'а, я здогадувався, що десь зовсім поруч лежить казково багатий континент, поки не нанесений на мою карту комп'ютерного світу. По-друге, автори однієї з найпопулярніших відкритих програм – СУБД MySQL, недавно прийняли GNU GPL (General Public License) як ліцензію, по якій поширюється ця програма, і тепер MySQL є повноцінним проектом GNU. Ці юридичні тонкощі мають безпосередній стосунок до нас, користувачам, чому я трохи нижче наведу приклад. І нарешті, по-третє, намагаючись відшукати хороші керівництва по SQL в мережі, я в кінці кінців виявив, що найкращі он-лайнові підручники з цієї теми, виявляється, написані нашими співвітчизниками, російською мовою, і лежать у мене на диску – в дзеркалі сервера CITFORUM

Особливо корисні навчальний курс "Введення в системи управління базами даних" Пушнікова А.Ю., і курс лекцій "Основи сучасних баз даних" Сергія Кузнецова. Нещодавно до них додалося детальне опис СУБД MySQL, Зроблене Паутова Олексієм Валентиновичем на основі оригінальної документації і таке ж досконале.

Отже, прийшла пора взятися за підручники, а для мене ще й дістати припасену для такого випадку особливий файл. Цей файл являє собою телефонний довідник служби 09 нашого міста, пару років тому потрапив в місцеву ФІДО-мережу. Мені не дуже важлива його актуальність, зате дуже підходить його розмір – понад 120 тисяч записів. Дуже часто приклади, що даються в підручниках, є занадто іграшковими, щоб викликати інтерес. Потім, на крихітній БД неможливо відчути швидкість і потужність сучасних програм і комп'ютерів, або навпаки, погано налагоджену БД або неправильно складений запит. Крім цього, ситуація з побудовою БД навколо вже наявних даних цілком життєва.

Цілком можливо, що у вас файлу з такими даними в межах досяжності немає. Нічого страшного – його можна зробити самому, використавши підручні засоби – наприклад, взяти простий текстовий файл, звичайні textutils, і інтерпретатор мови awk. Приклад, як це можна зробити, наведено
тут. Звичайно, дані в такому файлі будуть випадковими, тільки зовні схожими на справжній телефонний довідник.

Для початку треба встановити на вашому комп'ютері MySQL. Не буду переказувати голови з документації, які є в описі Олексія Паутова. Скажу лише, що для встановленого у мене дистрибутиву Дебьян установка програми звелася до виконання команди:

... $ Dpkg-i mysql-server_номер_версіі.deb mysql-client_номер_версіі.deb

У дистрибутиві Mandrake, який я також іноді використовую, використовується програма-інсталятор rpm з відповідними ключиками, або ж якась із графічних надбудов над rpm. Цілком можливо, що у вашій Лінукс системі ця СУБД встановилася сама собою за замовчуванням.

Інсталяція MySQL під Windows, так само як і Apache, PHP і Perl, розказана

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

create index building on building (tmp, bldng);
create index building on old (street, bldng);
insert into phone ( phonum, naim, bd_id, other )
select old.phonum, old.title, building.bd_id, old.other
from old, building
where old.street=building.tmp and old.bldng=building.bldng;

Індекси створилися за 3 і 45 сек., А дані вставили за 19 сек. Тепер можна видалити робочу таблицю і зайві індекс і поле:

drop table old;
drop index building on building;
alter table building drop tmp;

Підіб'ємо деякі підсумки.

З вихідного 8-мегабайтного текстового файлу вийшло 3 зв'язані таблиці загальним розміром ~ 3.8MB. Прості запити, наприклад

select p.phonum, p.naim, s.nick, b.bldng
from phone p, street s, building b # короткі синоніми таблиць
where
p.bd_id = b.bd_id # таким чином
and b.st_id = s.st_id # пов'язують таблиці
and p.phonum like "% 1234%" # власне запит
order by p.naim;

займають ~ 1.6 сек. Це приблизно збігається з результатом сканера grep на оригінальному текстовому файлі при пошуку тих же рядків, і трохи перевершує час, демонстроване інтерпретатором awk.

Але, звичайно, MySQL створений не для того, щоб змагатися з grep або awk. Використовуючи мову SQL, можна створювати БД і маніпулювати даними будь-якої складності. В області клієнт-серверних додатків MySQL цілком здатний конкурувати з визнаними комерційними СУБД. Але вся міць MySQL розкривається в поєднанні з технологіями Internet, якщо так можна висловитися, в "двічі клієнт-серверних" технологіях. Доступ до БД виконується з додатків, що запускаються на web-сервері, результат видається у вигляді HTML сторінок. Потім web-сервер доставляє сторінку в клієнтський браузер.

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

Як уже згадувалося, для доступу до MySQL можна використовувати різні мови програмування. Схожий вибір мов програмування пропонує також і Apache через додаткові модулі, що розширюють можливості сервера. Існують і успішно розвиваються загальнодоступні відкриті проекти Zope і Midgard , Що об'єднують Apache, MySQL та поширені мови програмування в інтегроване середовище розробки з єдиним інтерфейсом.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*