Serverul de baze de date (DB) realizează întreținerea și gestionarea bazei de date și este responsabil pentru integritatea și siguranța datelor, și oferă, de asemenea, operațiuni I/O atunci când clientul accesează informații.
Arhitectura client-server constă din clienți și servere. Ideea principală este de a plasa servere pe mașini puternice, iar aplicațiile care folosesc componente de limbaj DBMS să ofere acces la ele de la mașini client mai puțin puternice prin interfețe externe.
Majoritatea SGBD -urilor folosesc SQL (Structured Query Language) deoarece este convenabil pentru descrierea subseturi logice ale unei baze de date.
Scop SQL:
Una dintre caracteristicile cheie ale limbajului SQL este că formează interogări care descriu ce informații trebuie obținute din baza de date, iar programul însuși determină modalitățile de rezolvare a acestei probleme.
Există versiuni extinse ale limbajului SQL care acceptă extensii precum procedurile stocate și extinse , precum și controlul fluxului de programe prin ramificare și buclă.
Procedurile stocate sunt instrucțiuni SQL precompilate care sunt stocate pe un server de baze de date care utilizează SQL. Clientul rulează procedura stocată cu comanda EXECUTE<numele procedurii>. Astfel, doar două cuvinte sunt transmise prin rețea. Deoarece această procedură este deja compilată și optimizată, serverul nu trebuie să petreacă timp pentru compilare și optimizare.
Interogările executate frecvent sunt utilizate de obicei ca proceduri stocate.
Procedurile atașate ( declanșatoare ) sunt similare cu procedurile stocate și sunt executate ca răspuns la evenimentele care apar în baza de date. Când o procedură atașată este asociată cu unele aplicații SQL, executarea acestei clauze rulează întotdeauna o serie întreagă de comenzi care fac parte din procedură. O procedură atașată execută automat una sau mai multe instrucțiuni SQL ori de câte ori execută o instrucțiune INSERT, UPDATE sau DELETE.
Cea mai importantă utilizare a procedurilor atașate este aplicarea integrității referențiale.
Exemple de servere de baze de date: SQL SERVER (Microsoft), SQL BASE SERVER, Oracle SERVER (Oracle Corporation), IBM DB2, Informix Fiecare server de baze de date poate rula pe anumite tipuri de calculatoare și rețele. Sistemele de operare pentru servere pot fi MSDOS, OS/2, Xenix, Unix, Dec VMS/ Stațiile de lucru ale utilizatorului rulează de obicei MSDOS, OS/2, Xenix, Unix.
Există oportunități de utilizare mixtă a diferitelor sisteme de operare. Majoritatea serverelor SQL pot stoca descrierea bazei de date într-un director de sistem care este de obicei disponibil utilizatorilor. Interogările SQL sunt folosite pentru a accesa acest director. SGBD-urile relaționale pot folosi informațiile stocate în catalogul de sistem pentru a optimiza interogările SQL.
Majoritatea serverelor SQL acceptă integritatea referenţială a bazelor de date relaţionale, care constau din tabele separate care pot fi unite pe baza informaţiilor partajate.
Luați în considerare următorul exemplu: o bază de date conține un tabel de clienți și un tabel de comenzi care sunt legate printr-un câmp de număr de client conținut în ambele tabele. Deoarece pot exista mai multe comenzi de la același client, relația de masă este unul la mai mulți. Când tabelele sunt unite, tabelul clienți este tabelul părinte și tabelul comenzi este tabelul copil. Dacă o înregistrare părinte este ștearsă, dar înregistrările copil corespunzătoare nu sunt, atunci se spune că înregistrările copil sunt orfane.
Integritatea referenţială înseamnă că nu sunt permise înregistrări orfane în niciun tabel.
O înregistrare poate fi orfană în trei moduri:
Integritatea referenţială poate fi menţinută în mai multe moduri:
O tranzacție este un set de interogări interconectate logic care vizează schimbarea coordonată a unui anumit set de rânduri dintr-unul sau mai multe tabele de bază de date. De obicei, tranzacțiile actualizează mai multe tabele și indici asociați cu acele tabele. Pentru a asigura sincronizarea actualizărilor și integritatea datelor, serverele folosesc de obicei o abordare „totul sau nimic”, ceea ce înseamnă că toate sau niciuna dintre actualizări sunt făcute în baza de date. În acest scop, se menține un jurnal de tranzacții, care înregistrează informații despre toate modificările solicitate. Acest jurnal oferă posibilitatea de a „retroduce” tranzacțiile comise și de a restabili starea anterioară a bazei de date. Acest lucru devine important atunci când modificările la baza de date prevăzute într-o tranzacție sunt implementate doar parțial, de exemplu, din cauza unei defecțiuni hardware.
Tipic pentru DBMS multiutilizator. Pentru a-l implementa, serverele au mijloace de blocare automată.
Niveluri la care tabelul este blocat în timpul actualizărilor:
Serverele de baze de date trebuie să aibă un mijloc de detectare a stării de blocare. Când apare această situație, executarea uneia dintre tranzacții este întreruptă, scoțând cealaltă tranzacție din starea de eternă așteptare. Tranzacție întreruptă după excluderea posibilității de blocare a acesteia, este efectuată din nou.
Scopul optimizării este de a oferi cel mai rapid răspuns posibil la o interogare cu un număr minim de accesări la baza de date.
Există două tipuri de optimizare în limbajul SQL
Optimizarea sintaxei exploatează faptul că, în SQL, performanța unei interogări depinde de modul în care este formulată. În acest caz, optimizarea depinde de calificările programatorului.
Optimizarea costurilor colectează informații despre baza de date, cum ar fi numărul de tabele, numărul de rânduri, tipul de date din fiecare rând, dacă indexarea este disponibilă pentru o anumită coloană și așa mai departe. Optimizatorul utilizează aceste informații pentru a dezvolta cele mai bune plan de procesare a interogărilor.
Avantajele metodei de optimizare a costurilor: sarcina de a determina cea mai bună modalitate de a executa o interogare este mutată de la utilizator la procesorul bazei de date.
Dezavantaj: Găsirea metodei optime în sine poate dura mult timp.