Рубріки: Теорія

СУБД: які бувають, як вибрати

Сергій Бондаренко

Що таке система управління базами даних (СУБД)

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

Різновиди СУБД

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

Реляційна база даних – це інформація, де дані впорядковані, тобто пов’язані між собою певними особливими відносинами. По суті, така база є таблицею, в якій розміщені всі дані. Фізично бази даних – це файли у спеціальному форматі. Для роботи з цими файлами використовується спеціальне програмне забезпечення. Цей софт називається СУБД – система управління базами даних. Оскільки СУБД нерозривно пов’язана з базами даних, ці терміни часто використовуються як синоніми, що, строго кажучи, некоректно.

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

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

Крім реляційних СУБД, розрізняють такі типи, залежно від моделі БД:

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

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

  • Объектно-ориентированные (объектные) СУБД – базы данных, где каждая запись рассматривается как отдельный объект с некоторым набором свойств, взаимодействующий с другими объектами БД. В языке запросов реализована парадигма ООП – объекты, классы, наследование.
  • Объектно-реляционные СУБД – в которых объединены свойства реляционных и объектных СУБД.

ПЗ для роботи з базами даних може бути локальним або розподіленим. Локальні СУБД розміщують усі свої компоненти на одному комп’ютері, розподілені СУБД можуть розташовуватися на кількох робочих станціях.

Для спілкування з базою даних використовується спеціальний синтаксис, який називається структурованою мовою запитів SQL (Structured Query Language). Для нереляційних БД застосовується інший синтаксис, що називається NoSQL. Такі СУБД застосовуються для зберігання великих даних або БД з великою кількістю внутрішніх зв’язків. Іноді замість стандартної мови запитів використовується якась мова програмування, наприклад JavaScript.

Вимоги до СУБД

Був час, коли цифрові дані зберігали у форматі перфокарт – паперових карток з дірочками. Для їхнього зчитування була потрібна спеціальна машина, яка «розуміла», що означає послідовність дірочок у папері. Поява комп’ютерних баз даних, а також швидкісних цифрових носіїв значно прискорила процес зчитування та запису нової інформації.


До самих СУБД було сформовано низку вимог, яким обов’язково має відповідати будь-яка сучасна СУБД.

  1. Несуперечність даних. Інформація в БД має бути цілісною, помилок не має бути. Пов’язані дані мають адекватно змінюватися. Наприклад, користувач робить замовлення товару в магазині – у БД має відбутися резервування та оформлення замовлення, а загальна кількість придбаного товару на складі має бути зменшена на одиницю.
  2. Дані мають бути актуальними.
  3. Користувач повинен мати можливість зробити запит і отримати швидкий доступ до будь-якої частини БД.
  4. Дані мають бути позбавлені надмірності.
  5. Інформація в СУБД має бути максимально захищена від несанкціонованого доступу, зміни чи видалення.
  6. У разі технічного збою СУБД повинна мати можливість відновлення вихідної інформації із резервної копії або за допомогою іншої технології корекції помилок. СУБД має вести системний журнал із усіма змінами, які вносяться до БД. Це дозволить виправити помилки і відкотити БД до робочої версії, наприклад, у випадку вірусної атаки.

Рекомендації щодо вибору СУБД

Реляційні СУБД (Oracle, MySQL, Microsoft SQL Server, PostgreSQL) універсальні і підходять майже будь-яких завдань, коли потрібно обробляти дуже великий потік запитів і зберігати занадто великі обсяги даних. Коли ж запитів багато, виникає проблема масштабування, з якою реляційні СУБД поки що нормально впоратися не можуть.

Найпростіша СУБД передбачає використання парадигми «ключ-значення» (наприклад, Redis та Memcached). Зазвичай такі СУБД застосовують коли треба зробити кешування. Окремі СУБД даного типу дозволяють перенести роботу повністю в пам’ять і задати час існування записів (потім вони автоматично будуть видалені). Для баз даних із великим числом і складними структурами сутностей, що зберігаються, ці СУБД незручні.

Якщо необхідно зберігати зв’язки між вузлами у графовій структурі БД (наприклад, у соціальній мережі для опису спільних інтересів чи родинних зв’язків), рекомендуємо звернути увагу на такі СУБД як InfiniteGraph, Neo4j, Amazon Neptune та InfoGrid. Дане ПЗ дозволить вам швидко побудувати систему оцінок та рекомендацій.

У колонкових СУБД використовується особливий спосіб запису інформації, завдяки чому змінювати структуру таблиць можна дуже швидко. Цей тип БД розглядає стовпчик як окрему таблицю. Якщо в звичайній реляційній СУБД зчитування даних відбувається по всьому рядку, доки не буде досягнуто потрібної колонки, в колонковій СУБД зчитується відразу потрібний стовпець. З переваг колонкових СУБД можна виділити добру компресію данних, що помітно зменшує об’єм, що займає БД. Особливістю колонкових баз та колонкових індексів є те, що для них неможлива операція проміжної вставки або апдейта. Часто ці бази не передбачають оператора UPDATE, тільки DELETE та INSERT. Застосовувати такі колонкові СУБД як SAP IQ, Vertica, ClickHouse, Google BigQuery, InfoBright для простої вибірки зі статичними параметрами, де зберігається менше ста мільйонів рядків, немає сенсу.

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

П’ять найпоширеніших СУБД

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

MySQL

MySQLце одна з найпопулярніших реляційних баз даних. Цю СУБД часто включають до складу серверів. MySQL працює на всіх основних платформах, включаючи Red Hat, Fedora, Ubuntu, Debian, Solaris, Microsoft Windows та Apple MacOS. Реалізована підтримка кількох процесорів та багатопоточність. Через API з базами даних можна працювати за допомогою популярних мов програмування (C, C++, C#, PHP, Java, Ruby, Python та Perl). Бібліотека функцій SQL реалізується через високооптимізовану бібліотеку класів, завдяки чому досягається висока швидкість роботи і відсутні витоки пам’яті. У MySQL реалізовано підтримку Novell Cluster.

На жаль, MySQL не часто оновлюється та не підтримує гаряче резервне копіювання. MySQL часто критикують за недостатню надійність, а, крім того, вона має проблеми з юнікодом.

Oracle RDBMS (Oracle Database)

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

Вона випускається у різних редакціях, від Enterprise Edition до Lite – для мобільних пристроїв. Безкоштовна версія Express Edition (XE) обмежена оперативною пам’яттю (1 ГБ), а також лише одним процесором, максимальний об’єм БД для безкоштовної редакції – 11 ГБ. Oracle СУБД забезпечує автономне адміністрування, у її складі ви знайдете інструменти управління базами даних «на всі випадки життя». Кожна транзакція проходить ізольовано, що дозволяє досягти високого рівня безпеки.

PostgreSQL

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

 PostgreSQL може працювати з базами даних будь-якого розміру та з будь-якою кількістю записів та індексів у таблиці. СУБД відрізняє розширюваність – можна додати власні перетворення типів, домени, індекси, оператори, процедурні мови. Підтримується завантаження C-сумісних модулів. У PostgreSQL реалізовані складні та надійні механізми транзакцій та реплікації. PostgreSQL підтримує бітові рядки та мережеві адреси, масиви даних, у тому числі багатовимірні, композитні типи та інші складні структури. У СУБД є підтримка XML, JSON і NoSQL-баз.

Microsoft SQL Server

Досить популярна СУБД від Microsoft, яка орієнтована на платформу Windows. Для управління БД використовується процедурне розширення мови SQL Transact-SQL. Воно додає до основного функціоналу мови запитів керуючі оператори, дає можливість працювати з локальними та глобальними змінними, а також розширює можливості роботи з рядками, датою, математикою та ін.

SQL Server добре масштабується, може розгортатися в настільних системах, у центрах обробки даних, а також у «хмарі» (у 32-бітному та 64-бітному варіанті). Підтримується принцип самообслуговування, СУБД оптимізована під екосистеми хмарних обчислень.

MongoDB

MongoDB  – це одна з найпопулярніших СУБД із відкритим вихідним кодом типу NoSQL. Зазвичай MongoDB вибирають, коли є необхідність у базі даних, що масштабується. Серед клієнтів, які використовують MongoDB такі великі організації, як IBM, Twitter, Zendesk, Forbes, Facebook, Google.

Дані зберігаються у вигляді колекцій та документів, у форматі BSON (бінарні JSON-подібні документи). На відміну від реляційних БД, тут немає складних табличних сполук типу JOIN. Є підтримка індексів, є можливість роботи з кількома репліками на різних вузлах. Підтримується автоматична фрагментація. Для роботи з БД можна використовувати власну оболонку MongoDB Compass або один із альтернативних графічних інтерфейсів сторонніх розробників. 

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

Висновок

Система управління базами даних має дуже велике значення. Від неї залежить функціональність величезної кількості додатків та веб-сервісів – від майданчиків для інтернет-маркетингу до синхронізації медичних даних та сервісів продажу квитків.

Великі обсяги інформації, що зберігається, представляють особливий інтерес для маркетологів і аналітиків, які можуть виконувати прогнозування використовуючи складні статистичні методи, штучний інтелект і машинне навчання. Спеціальні інженери (data-scientist) можуть визначати тенденції попиту товар, формувати тарифні плани, затребувані покупцем тощо. Усе це робиться з допомогою масивів інформації, яка керується СУБД. Обсяг аналізованої інформації «біг дата» може досягати сотень петабайт і це число зростає щороку.

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

 

Останні статті

Айтівець Міноборони США понабирав кредитів і хотів продати рф секретну інформацію

32-річний розробник безпеки інформаційних систем Агентства національної безпеки Джарех Себастьян Далке отримав 22 роки в'язниці…

30.04.2024

Простий та дешевий. Українська Flytech запустила масове виробництво розвідувальних БПЛА ARES

Українська компанія Flytech представила розвідувальний безпілотний літальний апарат ARES. Основні його переваги — недорога ціна…

30.04.2024

Запрошуємо взяти участь у премії TechComms Award. Розкажіть про свій потужний PR-проєкт у сфері IT

MC.today разом з Асоціацією IT Ukraine і сервісом моніторингу та аналітики згадок у ЗМІ та…

30.04.2024

«Йдеться про потенціал мобілізації»: Україна не планує примусово повертати українців із ЄС

Україна не буде примусово повертати чоловіків призовного віку з-за кордону. Про це повідомила у Брюсселі…

30.04.2024

В ЗСУ з’явився жіночий підрозділ БПЛА — і вже можна проходити конкурсний відбір

В Збройних Силах України з'явився жіночий підрозділ з БПЛА. І вже проводиться конкурсний відбір до…

30.04.2024

GitHub на наступному тижні випустить Copilot Workplace — ШІ-помічника для розробників

GitHub анонсував Copilot Workspace, середовище розробки з використанням «агентів на базі Copilot». За задумкою, вони…

30.04.2024