Рушій бази даних: відмінності між версіями

[перевірена версія][перевірена версія]
Вилучено вміст Додано вміст
Створено шляхом перекладу сторінки «Database engine»
 
вікіфікація, оформлення, шаблон, зовнішні посилання, рекомендації з поліпшення
Рядок 1:
{{Вичитати|дата=24 вересня 2018}}
'''Рушій бази даних''' (або '''рушій зберігання''') — базовий програмний компонент, який [[База даних|система керування базами даних]] (СКБД) використовує для [[CRUD|створення, читання, оновлення та видалення]] (CRUD) [[Дані|даних]] із [[База даних|бази даних]]. Більшість систем керування базами даних містять власний [[прикладний програмний інтерфейс]] (API), який дозволяє користувачеві взаємодіяти зі своїм основним рушієм без проходження через користувацький інтерфейс СКБД.
{{Без ілюстрацій|дата=24 вересня 2018}}
{{Expert|date=2018}}
'''Рушій бази даних''' (або '''рушій зберігання''')  — базовий програмний компонент, який [[База даних|система керування базами даних]] (СКБД) використовує для [[CRUD|створення, читання, оновлення та видалення]] (CRUD) [[Дані|даних]] із [[База даних|бази даних]]. Більшість систем керування базами даних містять власний [[прикладний програмний інтерфейс]] (API), який дозволяє користувачеві взаємодіяти зі своїм основним рушієм без проходження через користувацький інтерфейс СКБД.
 
Термін «рушій бази даних» часто використовується взаємозамінно з «<nowiki/>[[Сервер даних|сервером даних]]<nowiki/>» або «системою керування базами даних». «Екземпляр бази даних» позначає структури процесів і пам'яті запущеного '''рушія бази даних'''.
 
== Рушії зберігання ==
Рядок 7 ⟶ 10:
 
Деякі рушії зберігання є [[Транзакція (бази даних)|транзакційними]].
{| class="wikitablestandard"
! Назва !! Ліцензія !! Транзакційний
!Назва
!Ліцензія
!Транзакційний
|-
|[[ {{нп|Aria (рушій)|Aria]]|en|Aria (storage engine)}} || GPL || {{Ні}}
|GPL|| {{No}}
|-
| BlitzDB || GPL || {{Ні}}
|GPL|| {{No}}
|-
|[[ {{нп|Falcon (рушій)|Falcon]]|en|Falcon (storage engine)}} || GPL || {{Так}}
|GPL|| {{Yes}}
|-
| [[InnoDB]] || GPL || {{Так}}
|GPL|| {{Yes}}
|-
| [[MyISAM]] || GPL || {{Ні}}
|GPL|| {{No}}
|-
|[[ {{нп|InfiniDB]]}} || CPL || {{Ні}}
|CPL|| {{No}}
|-
| {{нп|TokuDB}} || GPL || {{Так}}
|[[TokuDB]]
|GPL|| {{Yes}}
|-
|[[ {{нп|WiredTiger]]}} || GPL || {{Так}}
|GPL|| {{Yes}}
|-
| {{нп|XtraDB}} || GPL || {{Так}}
|[[XtraDB]]
|GPL|| {{Yes}}
|-
|[[ {{нп|RocksDB]]}} || BSD || {{Так}}
|BSD|| {{Yes}}
|}
Додаткові типи рушіїв включають:
 
Додаткові типи рушіїв включають:
* [[Рушії {{нп|Вбудована база даних|Вбудованихвбудованих баз даних]]|en|Embedded рушіїdatabase}}
* [[Рушії {{нп|База даних у пам'яті|Базбаз даних у пам'яті]]|en|In-memory рушіїdatabase}}
 
== Проектні міркування ==
Біти баз даних викладаються на зберігання у структури даних і групування, що можуть скористатися обома відомими ефективними алгоритмами отримання та маніпулювання ними та storageвластивостями own{{cl-spanпрояснити|storageвласне own|date=July 2017зберігання}} властивостями. Як правило, власне зберігання розроблено для задоволення вимог різних галузей, які широко використовують зберігання, включно з базами даних. СКБД в експлуатації завжди одночасно використовують кілька типів зберігання (наприклад, пам'ять і зовнішнє зберігання), з відповідними способами компонування.
 
У принципі, зберігання бази даних можна розглядати як [[{{нп|Пласка модель пам'яті|лінійний адресний простір]]|en|Flat memory model}}, де кожен біт даних має унікальну адресу в цьому адресному просторі. На практиці дуже малий відсоток адрес зберігаються як початкові опорні точки (які також потребують зберігання); доступ до більшості даних здійснюється непрямо шляхом обчислень зміщення (відстані в бітах від опорних точок) та структур даних, які визначають шляхи доступу (використовуючи вказівники) до всіх необхідних даних ефективним способом, оптимізованим для операцій доступу до необхідних даних.
 
=== Ієрархія зберігання баз даних ===
База даних під час роботи одночасно перебуває в кількох типах зберігання, формуючи [[Ієрархія пам'яті|ієрархію зберігання]]. За природою сучасних комп'ютерів більша частина бази даних знаходиться всередині комп'ютера, що розміщує СКБД (частково репліковану) в енергозалежному зберіганні. Дані (шматки бази даних), що обробляються чи маніпулюються, перебувають усередині процесора, можливо, у [[Кеш процесора|кешах процесора]]. Ці дані читаються з і записуються у пам'ять, як правило, через комп'ютерну [[Комп'ютерна шина|шину]] (все ще, як правило, енергозалежні компоненти зберігання). Комп'ютерна пам'ять обмінюється даними (передає до та з) зовнішнього зберігання, як правило, стандартними інтерфейсами зберігання чи мережами (наприклад, [[Fibre Channel|fibre channel]], [[iSCSI]]). [[Дисковий масив|Масив зберігання]], поширений зовнішній блок зберігання даних, як правило, має власну ієрархію зберігання, від плаского кешу, що, як правило, складається з (енергозалежної та швидкої) [[DRAM]], сполученої (знову стандартними інтерфейсами) з носіями, можливо, з різними швидкостями, на кшталт [[USB-флеш-накопичувач|флеш-накопичувачів]]ів і магнітних [[Дисковод|дискових носіїв]] (енергонезалежних). Носії можуть сполучатися з [[Магнітна стрічка|магнітними стрічками]], на яких, як правило, можуть перебувати найменш активні частини великої бази даних або її резервні копії.
 
Наразі, як правило, існує кореляція між швидкістю та вартістю зберігання, тоді як швидкі зберігання зазвичай енергозалежні.
Рядок 62 ⟶ 53:
Бази даних можуть зберігати дані в багатьох типах структур даних<ref name="Physical Database Design">{{harvnb|Lightstone|Teorey|Nadeau|2007}}</ref>. Поширеними прикладами є наступні:
 
* впорядковані чи невпорядковані [[Плоска база даних|пласкі файли<br />]]
* [[Геш-таблиця|хеш-таблиці]]
* [[B+ дерево|B+ дерева]]
* [[{{нп|ISAM]]}}
* [[Купа (структура даних)|купи]]
 
=== Орієнтація та кластеризація даних ===
На відміну від звичайної рядкової орієнтації, реляційні бази даних також можуть бути [[{{нп|Колонково-орієнтована СКБД|колонково-орієнтованими]]|en|Column-oriented DBMS}} чи [[{{нп|Кореляційна база даних|кореляційними]]|en|Correlation database}} у способі зберігання даних у будь-якій конкретній структурі.
 
Загалом, значне поліпшення продуктивності досягається, якщо різні типи об'єктів бази даних, які зазвичай використовуються разом, зберігаються в безпосередній близькості, стаючи «кластеризованими». Цей зазвичай дозволяє отримувати необхідні пов'язані об'єкти зі зберігання за мінімальну кількість операцій введення (кожна іноді займає багато часу). Навіть для баз даних у пам'яті кластеризація забезпечує перевагу в продуктивності завдяки спільному використанню великого кешу операцій введення-виведення у пам'яті з аналогічною результатною поведінкою.
Рядок 76 ⟶ 67:
 
=== Індексування баз даних ===
Індексування &nbsp;— техніка, яку використовують деякі рушії зберігання для поліпшення продуктивності бази даних. Багато типів індексів мають спільну властивість зниження потреби розглядати кожен запис при виконанні запиту. У великих базах даних це може знизити час або вартість запиту на кілька порядків. Найпростішою формою індексу є відсортований список значень, у якому можна шукати за допомогою [[Двійковий пошук|двійкового пошуку]] з суміжним посиланням на розташування запису, аналогічно до покажчика наприкінці книги. Ті самі дані можуть мати багато індексів (база даних співробітників може індексуватися за прізвищем і датою найму).
 
Індекси впливають на продуктивність, але не на результат. Проектувальники баз даних можуть додавати чи видаляти індекси без зміни прикладної логіки, знижуючи вартість підтримки зі зростанням та еволюцією бази даних. Індекси можуть прискорити доступ до даних, але вони споживають простір у базі даних і повинні оновлюватися щоразу при зміні даних. Таким чином, індекси можуть прискорити доступ до даних, але сповільнити їх підтримку. Ці дві властивості визначають чи коштує даний індекс витрат.
 
== Див. також ==
* {{нп|Архітектура Btrieve|Мікроядерний рушій бази даних Btrieve|en|Architecture of Btrieve}}
 
* [[{{нп|Berkeley DB]]}}
* [[Архітектура Btrieve|Btrieve's Micro-Kernel Database Engine]]
* {{нп|C-treeACE|c-treeACE Database Engine}}
* [[Berkeley DB]]
* [[C-treeACE{{нп|c-treeACEFLAIM Database Engine]]||de|Novell eDirectory}}
* [[FLAIM{{нп|Microsoft Jet Database Engine]]}}
* [[Microsoft Jet Database Engine]]
* [[MySQL Cluster]], на NDB рушії зберігання [[MySQL]]
* [[{{нп|NuoDB]]}}
 
== Примітки ==
Рядок 94 ⟶ 84:
 
== Посилання ==
* {{Cite web|url=https://dev.mysql.com/doc/refman/8.0/en/storage-engines.html|назва=Chapter 16 Alternative Storage Engines|серія=MySQL 8.0 Reference Manual|веб-сайт=[[MySQL]]|мовою=англійською|переклад-назви=Глава 16 Альтернативні рушії зберігання|мертвий-url=no|дата-доступу=24 вересня 2018}}
* {{Google books|PqZ6QytCemcC|MySQL Administrator's Bible|page=287|keywords=storage engines}}
 
* http://dev.mysql.com/tech-resources/articles/storage-engine/part_3.html
* [https://books.google.com/books?id=PqZ6QytCemcC&pg=PT287&dq=storage+engines Біблія адміністратора MySQL] Глава 11 «Рушії зберігання»<br />
[[Категорія:Управління даними]]
[[Категорія:Рушії баз даних]]