SGBD încorporat
Un sistem de management al bazelor de date încorporat este o arhitectură a sistemelor de management al bazelor de date atunci când SGBD este strâns conectat cu programul de aplicație și rulează pe același computer fără a necesita administrare profesională .
SGBD-urile încorporate sunt utilizate în multe programe care stochează cantități mari de date, dar nu necesită acces de la multe computere. Pe „desktop-ul” unui utilizator neexperimentat, există și programe care pot conține un SGBD încorporat: clienți de mail și mesagerie instant (baze de date de corespondență) [1] , playere media ( liste de redare și coperți) [2] , vizualizatoare de imagini ( metadate și miniaturi) [3] , diverse baze de date locale, cum ar fi directoare telefonice și sisteme de informații geografice (date furnizate).
Din punct de vedere istoric, SGBD-urile locale și de server de fișiere au oferit un limbaj de scripting în care utilizatorul putea scrie un program de aplicație. Așa sunt aranjate Microsoft Access , FoxPro , Clipper , 1C: Contabilitate . Dezavantajul acestei abordări a fost sărăcia extremă a programelor rezultate, instrumente limitate de depanare. Și adesea nu exista un mediu de rulare compact care să poată fi distribuit împreună cu programul; aveți nevoie de un program - instalați întregul pachet. Odată cu răspândirea legăturilor dinamice și a comunității open source , pendulul s-a îndreptat în altă direcție: lăsați programatorul să-și scrie programul în limbajul de nivel înalt care este convenabil. SGBD-ul va fi conectat la program și va deveni una cu acesta.
Caracteristici
Niciun program server separat
Un SGBD încorporat fizic este o
bibliotecă legată static sau dinamic la programul principal. Programul și SGBD comunică nu prin
prize de rețea , ci printr-un
API specializat [4] [5] . Acest lucru, totuși, are un dezavantaj: adesea programatorul însuși trebuie să prevină
cursele cu mai multe fire .
Viteză mare și consum redus de memorie, în special pe
șiruri lungi și
BLOB
Datorită unui API specializat, numărul de operațiuni de citire-scriere este minim.
Adesea mic după standardele bazei de date, dimensiunea maximă a bazei de date
De la unități de gigaocteți (cantitatea de memorie PC în 2012) la unități de teraocteți (de ordinul dimensiunii unui hard disk). De exemplu,
SQLite păstrează întotdeauna în memorie cuprinsul bazei de date (analog cu tabelul de alocare a fișierelor ), aceasta limitând dimensiunea bazei de date
[6] .
De obicei, un limbaj de interogare specializat sau nu este pe deplin compatibil cu
SQL-92
De dragul performanței, dezvoltatorii implementează adesea fie SQL incomplet (
SQLite ),
[7] , fie un limbaj de interogare specializat (
BerkeleyDB ). În plus, SGBD-ul încorporat poate funcționa pe un principiu complet diferit de cel client-server:
ping -ul către baza de date este zero, iar interogarea poate fi executată pe părți, cu mai multe apeluri către SGBD.
De obicei, nu există drepturi de utilizator
[7] ;
izolarea simplă a
tranzacțiilor
Nu este necesară o bază de date mai mare pentru un singur utilizator. De obicei, tranzacțiile sunt izolate pe o bază
de scriere, unul câte unul , folosind mecanisme standard ale sistemului de operare, cum ar fi
blocarea fișierelor . Se poate stabili accesul la un fișier din mai multe programe: de exemplu,
SQLite funcționează cu succes pe site-uri puțin încărcate
[6] . Dar sarcina mare este prea grea pentru el.
De regulă, nu există
arhivare și
replicare a bazei de date
O bază de date încorporată este la fel de fiabilă ca și biblioteca DBMS și
sistemul de fișiere pe care se află baza de date. SGBD-urile încorporate bine-cunoscute tind să fie bine testate
[ 8] , iar sistemele de fișiere moderne sunt foarte fiabile. Cu toate acestea, există multe modalități de a pierde date,
[9] astfel încât astfel de soluții să fie inferioare ca fiabilitate față de DBMS-ul pe server.
De regulă, nu există instrumente lingvistice care să simplifice accesul la baza de date
Limbajele DBMS specializate, cum ar fi
xBase , sunt de obicei o combinație între un limbaj de interogare și un limbaj de programare a aplicațiilor. În limbajele de programare de uz general, corectitudinea cererii nu va fi verificată la compilare, ci doar atunci când cererea este trimisă către SGBD. Și, desigur, într-un limbaj de programare de uz general, structurile de acces la baze de date (atât încorporate, cât și client-server) vor fi grele.
Cu toate acestea,
C# are un limbaj de interogare
LINQ care se compilează într-o combinație de apeluri de metode, care pregătesc de obicei
SQL simplu .
Exemple
- Sistemul de baze de date Accuracer
- Advantage Database Server
- Oracle Berkeley DB
- CSQL
- EffiProz
- ElevateDB
- Baza de date încorporată Empress
- Motor de stocare extensibil
- eXtremeDB
- Versiunea încorporată a Firebird
- HSQLDB
- InfinityDB
- Versiunea încorporată a Informix Dynamic Server
- Versiunea încorporată a InnoDB
- Versiunea încorporată a InterBase
- ITTIA DB
- Cabinetul de la Kyoto
- Versiunea încorporată de MySQL
- NexusDB
- RDM încorporat
- ScimoreDB
- SolidDB
- SQLite
- Microsoft SQL Server Compact
- TurboDB
- Valentina DB
- VistaDB
Note
- ↑ În special, Skype folosește SQLite pentru a stoca baze de date de corespondență
- ↑ În special, AIMP folosește SQLite pentru a stoca liste de redare
- ↑ În special, XnView stochează miniaturi și etichete în baza de date SQLite
- ↑ Exemplu API BerkeleyDB
- ↑ Exemplu SQLite API Arhivat 20 decembrie 2012 la Wayback Machine
- ↑ 1 2 Utilizarea SQLite Arhivat 20 decembrie 2012 la Wayback Machine
- ↑ 1 2 Ce nu este în SQLite Arhivat 20 decembrie 2012 la Wayback Machine
- ↑ Cum este testat SQLite Arhivat 21 decembrie 2012 la Wayback Machine
- ↑ Cum se corupe un tabel SQLite Arhivat 9 august 2014 la Wayback Machine