Бази даних і СУБД

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

База даних

База даних являє собою певний набір даних, які, як правило, пов'язані об'єднуючим ознакою або властивістю (або декількома). Ці дані впорядковані, наприклад, за алфавітом. Велика кількість різних даних, які можуть бути поміщені в єдину базу, веде до безлічі варіацій того, що може бути записано: особисті дані користувачів, записи, дати, замовлення і так далі. Наприклад, якщо у вас інтернет-магазин, то база даних вашого сайту може містити прайс-листи, каталог товарів або послуг, звіти, статистику та інформацію про клієнтів.

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

Важливою є і взаємозв'язок інформації в базі даних: зміна одного рядка може привести до значних змін інших рядків. Працювати з даними таким чином набагато простіше і швидше, ніж якби зміни стосувалися лише одного місця в базі даних.

Однак це не означає, що база даних обов'язково повинна бути у кожного сайту - наприклад, якщо у вас сайт-візитка, і ніякої нової інформації ви на сайті не розміщуєте, то база даних вам буде просто не потрібна.

Система управління базами даних

Що стосується класифікації баз даних, то тут можливі різні варіанти.
Наприклад, можна розділити бази по моделі даних. ієрархічні (мають деревоподібну структуру), мережеві (за своєю структурою схожі на ієрархічні), реляційні (використовуються для керування базами даних), об'єктно-орієнтовані (використовуються для об'єктної моделі даних) і об'єктно-реляційні (якесь злиття реляційного і об'єктно-орієнтованого виду баз даних).

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

Файл-серверні, клієнт-серверні і вбудовуються - такі назви носять СУБД, якщо розділити їх за способом доступу до баз даних. Файл-серверні СУБД на даний момент вже вважаються застарілими; в основному йде використання клієнт-серверних (СУБД, які розташовуються на сервері разом з самою базою даних) і вбудованих (які не потребують окремої установки) систем.

У цій статті я зроблю акцент на СУБД, які використовуються для зберігання інформації різних веб-ресурсів.

Навіщо ж потрібні ці СУБД? Крім основної своєї функції - зберігання і систематизації величезної кількості інформації - вони дозволяють швидко обробляти клієнтські запити і видавати свіжу й актуальну інформацію.

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

Реляційні СУБД і мову SQL

Реляційні і об'єктно-реляційні СУБД є одними з найпоширеніших систем. Вони являють собою таблиці, у яких кожен стовпець (який називається "field" або "поле") впорядкований і має певне унікальну назву. Послідовність рядків (їх називають "records" або "записи») визначається послідовністю введення інформації в таблицю. При цьому оброблення стовпців і рядків може відбуватися в будь-якому порядку. Таблиці з даними пов'язані між собою спеціальними відносинами, завдяки чому з даними з різних таблиць можна працювати - наприклад, об'єднувати їх - за допомогою одного запиту.

Для керування базами даних застосовується особлива мова програмування - SQL. Скорочення розшифровується як "Structured query language", в перекладі на українську «мова структурованих запитів».

Команди, які використовуються в SQL, діляться на ті, які маніпулюють даними, ті, які визначають дані, і ті, які керують даними.

Схема роботи з базою даних виглядає наступним чином:

Далі я розповім про кожну з основних СУБД, які зараз найчастіше використовуються при створенні веб-проектів.

Бази даних і СУБД
MySQL

MySQL є однією з найпопулярніших і поширених СУБД, яка використовується в багатьох компаніях (наприклад, Facebook, Wikipedia, Twitter, LinkedIn, Alibaba і інших). MySQL є реляційною СУБД, яка відноситься до вільного програмного забезпечення: вона поширюється на умовах GNU Public License. Як правило, цю систему управління базами даних визначають як хорошу, швидку і гнучку систему, рекомендованої до застосування на невеликих або середніх проектах. У MySQL є безліч різних переваг. Наприклад, вона підтримує різні типи таблиць: як відомі MyISAM і InnoDB, так і більш екзотичні HEAP і MERGE; крім того, кількість підтримуваних типів стає дедалі більше. MySQL виконує всі команди швидко - можливо, зараз це найшвидша СУБД з усіх існуючих. З цією системою управління базами даних може одночасно працювати необмежена кількість користувачів, а число рядків в таблицях може дорівнювати 50 мільйонам.

Так як в порівнянні з деякими іншими СУБД MySQL підтримує меншу кількість можливостей, то і працювати з нею значно простіше, ніж, наприклад, з PostgreSQL, про яку буде розказано нижче.

Для роботи з MySQL використовується не тільки текстовий, а й графічний режим. Це можливо завдяки додатку phpMyAdmin: для роботи в додатку вам навіть не потрібно буде знати SQL-команди, а адмініструвати свою базу даних можна прямо через браузер.

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

Бази даних і СУБД
PostgreSQL

Якщо говорити про переваги PostgreSQL, то, безумовно, це надійність транзакцій і реплікації, можливість наслідування і легка розширюваність. PostgreSQL підтримує різні розширення і варіанти мов програмування, такі як PL / Perl, PL / Python і PL / Java. Також є можливість завантажувати C-сумісні модулі.

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

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

Все це дозволяє говорити про PostgreSQL як про одну з найбільш просунутих СУБД на даний момент.

Бази даних і СУБД
SQLite

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

З недоліків можна відзначити відсутність системи користувачів і можливості збільшення продуктивності.

SQLite можна порадити до використання в проектах, де потрібно мати можливість швидко перенести додаток, і немає необхідності в масштабованості.

Oracle

Ця СУБД відноситься до об'єктно-реляційному типу. Назва походить від назви розробила цю систему фірми Oracle. Нарівні з SQL СУБД використовує процедурне розширення під назвою PL / SQL, а також мову Java.

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

Бази даних і СУБД

MongoDB

Ця СУБД відрізняється тим, що вона призначена для зберігання ієрархічних структур даних, і тому її називають документоорієнтованих (вона являє собою документної сховище без використання таблиць або схем). MongoDB має відкритий вихідний код.

Використовуючи ідентифікатор, ви можете проводити швидкі операції над об'єктом; ця СУБД добре показує себе і при складних взаємодіях. В першу чергу мова йде про швидкодію - в деяких випадках додаток, написане на MongoDB, буде працювати швидше, ніж таке ж додаток, що використовує SQL, тому що MongoDB відноситься до класу СУБД NoSQL і замість SQL користується об'єктним мовою запитів, який значно легше SQL.

Однак ця мова має і свої обмеження, а тому MongoDB слід використовувати у випадках, коли немає необхідності в складних і нетривіальних вибірках.

замість висновку

Вибір СУБД - це важливий момент при створенні свого ресурсу. Відштовхуйтеся від своїх завдань і можливостей, пробуйте і експериментуйте, щоб знайти саме той варіант, який буде найбільш підходящим.

Бази даних і СУБД