Перейти до вмісту

Рушій бази даних

Матеріал з Вікіпедії — вільної енциклопедії.

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

Термін «рушій бази даних» часто використовується взаємозамінно з «сервером даних» або «системою керування базами даних». «Екземпляр бази даних» позначає процеси й структури пам'яті запущеного рушія бази даних.

Рушії зберігання

[ред. | ред. код]

Багато сучасних СКБД підтримують декілька рушіїв зберігання в одній базі даних. Наприклад, MySQL підтримує InnoDB так само як і MyISAM.[1]

Деякі рушії зберігання є транзакційними.

Назва Ліцензія Транзакційний
Aria[en] GPL Ні
BlitzDB GPL Ні
Falcon[en] GPL Так
InnoDB GPL Так
MyISAM GPL Ні
InfiniDB[en] CPL Ні
TokuDB[en] GPL Так
WiredTiger[en] GPL Так
XtraDB[en] GPL Так
RocksDB[en] BSD Так

Додаткові типи рушіїв включають:

Проєктні міркування

[ред. | ред. код]

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

У принципі, зберігання бази даних можна розглядати як лінійний адресний простір[en], де кожен біт даних має унікальну адресу в цьому адресному просторі. На практиці дуже малий відсоток адрес зберігаються як початкові опорні точки (які також потребують зберігання); доступ до більшості даних здійснюється непрямо шляхом обчислень зміщення (відстані в бітах від опорних точок) та структур даних, які визначають шляхи доступу (використовуючи вказівники) до всіх необхідних даних ефективним способом, оптимізованим для операцій доступу до необхідних даних.

Ієрархія зберігання баз даних

[ред. | ред. код]

База даних під час роботи одночасно перебуває в кількох типах зберігання, формуючи ієрархію зберігання. За природою сучасних комп'ютерів більша частина бази даних знаходиться всередині комп'ютера, що розміщує СКБД (частково репліковану) в енергозалежному зберіганні. Дані (шматки бази даних), що обробляються чи маніпулюються, перебувають усередині процесора, можливо, у кешах процесора. Ці дані читаються з і записуються у пам'ять, як правило, через комп'ютерну шину (все ще, як правило, енергозалежні компоненти зберігання). Комп'ютерна пам'ять обмінюється даними (передає до та з) зовнішнього зберігання, як правило, стандартними інтерфейсами зберігання чи мережами (наприклад, Fibre Channel, iSCSI). Масив зберігання, поширений зовнішній блок зберігання даних, як правило, має власну ієрархію зберігання, від плаского кешу, що, як правило, складається з (енергозалежної та швидкої) DRAM, сполученої (знову стандартними інтерфейсами) з носіями, можливо, з різними швидкостями, на кшталт флеш-накопичувачів і магнітних дискових носіїв (енергонезалежних). Носії можуть сполучатися з магнітними стрічками, на яких, як правило, можуть перебувати найменш активні частини великої бази даних або її резервні копії.

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

Структури даних

[ред. | ред. код]

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

Бази даних можуть зберігати дані в багатьох типах структур даних[2]. Поширеними прикладами є наступні:

Орієнтація та кластеризація даних

[ред. | ред. код]

На відміну від звичайної рядкової орієнтації, реляційні бази даних також можуть бути колонково-орієнтованими[en].

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

Наприклад, може бути корисним кластеризувати запис «позиція» з усіма відповідними записами «замовлення». Рішення про те, чи кластеризувати конкретні об'єкти, чи ні, залежить від статистики їх використання, розмірів об'єктів і кешів, типів зберігання та ін.

Індексування баз даних

[ред. | ред. код]

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

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

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
  1. Sheeri K. Cabral; Keith Murphy (4 березня 2011). MySQL Administrator's Bible (англ.). John Wiley & Sons. с. 287. ISBN 978-1-118-08058-0.
  2. Lightstone, Teorey та Nadeau, 2007

Посилання

[ред. | ред. код]
  • Chapter 16 Alternative Storage Engines [Глава 16 Альтернативні рушії зберігання]. MySQL. MySQL 8.0 Reference Manual (англійською) . Архів оригіналу за 24 вересня 2018. Процитовано 24 вересня 2018.