Motor de baze de date - Database engine

Un motor de baze de date (sau motor de stocare ) este componenta software de bază pe care un sistem de gestionare a bazei de date (SGBD) o folosește pentru a crea, citi, actualiza și șterge (CRUD) date dintr-o bază de date . Majoritatea sistemelor de gestionare a bazelor de date includ propria lor interfață de programare a aplicațiilor (API) care permite utilizatorului să interacționeze cu motorul de bază fără a trece prin interfața utilizator a SGBD.

Termenul „motor de baze de date” este frecvent utilizat interschimbabil cu „ server de baze de date ” sau „sistem de gestionare a bazelor de date”. O „instanță de bază de date” se referă la procesele și structurile de memorie ale motorului de baze de date care rulează .

Motoare de stocare

Multe dintre SGBD-urile moderne acceptă mai multe motoare de stocare în aceeași bază de date. De exemplu, MySQL acceptă InnoDB , precum și MyISAM .

Unele motoare de stocare sunt tranzacționale .

Nume Licență Tranzacțional
Aria GPL Nu
Şoim GPL da
InnoDB GPL da
MyISAM GPL Nu
InfiniDB GPL Nu
TokuDB GPL da
WiredTiger GPL da
XtraDB GPL da
RocksDB GPL v2 sau Apache 2.0 da

Tipurile de motoare suplimentare includ:

Considerații de proiectare

Informațiile dintr-o bază de date sunt stocate ca biți dispuși ca structuri de date în stocare care pot fi citite și scrise în mod eficient, având în vedere proprietățile hardware-ului. De obicei, stocarea în sine este concepută pentru a satisface cerințele diferitelor domenii care utilizează pe scară largă stocarea, inclusiv bazele de date. Un SGBD în funcțiune utilizează întotdeauna simultan mai multe tipuri de stocare (de exemplu, memorie și stocare externă), cu metodele de layout respective.

În principiu, stocarea bazei de date poate fi privită ca un spațiu de adrese liniar , unde fiecare bit de date are adresa sa unică în acest spațiu de adrese. În practică, doar un procent foarte mic de adrese sunt păstrate ca puncte de referință inițiale (ceea ce necesită și stocare); majoritatea datelor sunt accesate prin indirectare folosind calcule de deplasare (distanța în biți de la punctele de referință) și structuri de date care definesc căile de acces (folosind pointeri) la toate datele necesare într-un mod eficient, optimizat pentru operațiunile de acces la date necesare.

Ierarhia stocării bazei de date

O bază de date, în timp ce funcționează, se află simultan în mai multe tipuri de stocare, formând o ierarhie de stocare . Prin natura computerelor contemporane, cea mai mare parte a bazei de date din interiorul unui computer care găzduiește SGBD se află (parțial reprodusă) în spațiul de stocare volatil. Datele (piese din baza de date) care sunt procesate / manipulate se află în interiorul unui procesor, posibil în cache-urile procesorului . Aceste date sunt citite / scrise în memorie, de obicei printr-o magistrală de computer (până acum componente de stocare volatile de obicei). Memoria computerului comunică date (transferate către / de la) stocare externă, de obicei prin interfețe sau rețele de stocare standard (de exemplu, canal de fibră , iSCSI ). O matrice de stocare , o unitate de stocare externă comună, are de obicei o ierarhie de stocare proprie, dintr-o memorie cache rapidă, constând de obicei din DRAM (volatil și rapid) , care este conectat (din nou prin interfețe standard) la unități, posibil cu viteze diferite, cum ar fi unitățile flash și unitățile de disc magnetice (non-volatile). Unitățile pot fi conectate la benzi magnetice , pe care, în mod obișnuit, pot locui cele mai puțin active părți ale unei baze de date mari sau generații de backup ale bazei de date.

De obicei, există o corelație între viteza de stocare și preț, în timp ce stocarea mai rapidă este de obicei volatilă.

Structuri de date

O structură de date este o construcție abstractă care încorporează datele într-un mod bine definit. O structură eficientă a datelor permite manipularea datelor în moduri eficiente. Manipularea datelor poate include inserarea, ștergerea, actualizarea și recuperarea datelor în diferite moduri. Un anumit tip de structură de date poate fi foarte eficient în anumite operațiuni și foarte ineficient în altele. Un tip de structură de date este selectat la dezvoltarea SGBD pentru a îndeplini cel mai bine operațiunile necesare pentru tipurile de date pe care le conține. Tipul de structură de date selectat pentru o anumită sarcină ia de asemenea în considerare tipul de stocare în care se află (de exemplu, viteza de acces, dimensiunea minimă a bucății de stocare accesate etc.). În unele DBMS, administratorii de baze de date au flexibilitatea de a selecta dintre opțiunile structurilor de date pentru a conține datele utilizatorului din motive de performanță. Uneori, structurile de date au parametri selectabili pentru a regla performanța bazei de date.

Bazele de date pot stoca date în mai multe tipuri de structuri de date. Exemple comune sunt următoarele:

Orientarea și clusterizarea datelor

Spre deosebire de orientarea rândului convențională, bazele de date relaționale pot fi, de asemenea , orientate pe coloane sau corelaționale în modul în care stochează date într-o anumită structură.

În general, se obține o îmbunătățire substanțială a performanței dacă diferite tipuri de obiecte de baze de date care sunt de obicei utilizate împreună sunt așezate în depozitare în apropiere, fiind „grupate”. Acest lucru permite de obicei recuperarea obiectelor aferente necesare din stocare în număr minim de operații de intrare (fiecare uneori consumă mult timp). Chiar și pentru bazele de date din memorie, clusterizarea oferă un avantaj de performanță datorită utilizării comune a cache-urilor mari pentru operațiuni de intrare-ieșire în memorie, cu un comportament similar rezultat.

De exemplu, poate fi benefic să grupați o înregistrare a unui „articol” în stoc cu toate înregistrările sale „de comandă” respective. Decizia de a grupa sau nu anumite obiecte depinde de statisticile de utilizare a obiectelor, dimensiunile obiectelor, dimensiunile cache-urilor, tipurile de stocare etc.

Indexarea bazelor de date

Indexarea este o tehnică utilizată de unele motoare de stocare pentru îmbunătățirea performanței bazei de date. Numeroasele tipuri de indici împărtășesc proprietatea comună că reduc necesitatea de a examina fiecare intrare atunci când rulează o interogare. În bazele de date mari, acest lucru poate reduce timpul / costul interogării cu ordinele de mărime. Cea mai simplă formă de index este o listă sortată de valori care pot fi căutate utilizând o căutare binară cu o referință adiacentă la locația intrării, analog cu indexul din spatele cărții. Aceleași date pot avea mai mulți indici (o bază de date a angajaților ar putea fi indexată după numele de familie și data angajării).

Indicii afectează performanța, dar nu rezultatele. Proiectanții de baze de date pot adăuga sau elimina indexuri fără a schimba logica aplicației, reducând costurile de întreținere pe măsură ce baza de date crește și utilizarea bazei de date evoluează. Indexurile pot accelera accesul la date, dar consumă spațiu în baza de date și trebuie actualizate de fiecare dată când datele sunt modificate. Prin urmare, indexurile pot accelera accesul la date, dar întreținerea lentă a datelor. Aceste două proprietăți determină dacă un indice dat merită costul.

Referințe

linkuri externe