SGBD: integritat, seguretat, concurrència i recuperacions

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en catalán con un tamaño de 10,04 KB

Introducció al SGBD

El SGBD és la capa de software que fa d'interfície entre els usuaris o programes d'aplicació i la base de dades. El SGBD és, per tant, el responsable d'assegurar la integritat de les dades; és a dir, que les dades són correctes i accessibles. Per tal d'assegurar la integritat de les dades, el SGBD s'encarrega de realitzar diverses tasques com el control del compliment de les restriccions d'integritat, el control de seguretat, el control de concurrència i les recuperacions en cas de caiguda del sistema.

Què pot provocar que es vulneri la integritat de les dades?

  • Dades d'entrada incorrectes.
  • Modificacions no autoritzades de les dades.
  • Accessos simultanis de diversos usuaris a les mateixes dades.
  • Caigudes del sistema i avaries dels dispositius d'emmagatzematge.

Un SGBD realitza un conjunt de tasques per tal d'assegurar que cap de les situacions anteriors impliqui una pèrdua de la integritat de les dades. Tasques d'un SGBD:

  • Control de la integritat semàntica de les dades.
  • Gestió de la seguretat del sistema.
  • Gestió de transaccions.
  • Control de concurrència.
  • Control de recuperacions.
  • Optimització de consultes.

Integritat semàntica

Tota base de dades ha de satisfer les restriccions del model relacional, és a dir, integritat de dominis, integritat d'entitats i integritat referencial. El SGBD, per tal de poder controlar la satisfacció de totes les restriccions d'integritat, disposa de:

  • Conjunts de restriccions.
  • Mecanismes de comprovació de regles.
  • Mecanismes que activen accions.

Les restriccions d'integritat d'una base de dades es poden definir de diverses maneres. En la unitat didàctica 3 hem vist com definir-les mitjançant restriccions de columna i restriccions de taula. Veiem algun exemple: (apunts)

El SGBD s'encarrega del compliment d'aquestes restriccions. La majoria de SGBD ofereixen altres eines per definir les condicions que han de satisfer les dades, és a dir, les restriccions d'integritat. Algunes d'aquestes eines són els procediments emmagatzemats i els disparadors.

  • Procediments emmagatzemats: funcions o accions que defineixen alguna funcionalitat i que s'emmagatzemen a la base de dades com un objecte més.
  • Disparadors: procediments que s'activen quan es dona un determinat esdeveniment com INSERT, UPDATE o DELETE. S'utilitzen quan la restricció és complexa i no es pot definir amb un CHECK com a restricció de columna o de taula. Quan definim un disparador cal indicar si és d'INSERT, UPDATE o DELETE i si s'executa BEFORE o AFTER.

Per defecte, les restriccions d'integritat estan definides de manera que cada vegada que es realitza una actualització de les dades implicades en la restricció es comprova la seva satisfactibilitat. Quan s'afegeix una nova restricció d'integritat, el SGBD hauria de fer una anàlisi de contradiccions i redundàncies. Per tal de fer la comprovació d'integritat semàntica més eficient, pot ser convenient afegir redundàncies internes o bé crear índexs.

Seguretat

La seguretat en un Sistema de Base de Dades té com a objectiu controlar que les persones que hi accedeixen són usuaris autoritzats de la base de dades i, a més, que estan autoritzats a fer allò que volen fer.

Identificació i autentificació

Quan algú accedeix a la base de dades s'ha d'identificar mitjançant un codi. L'autentificació s'acostuma a fer mitjançant una paraula clau (password) que es guarda xifrada a la base de dades. Un cop un usuari s'ha autentificat, cal comprovar que està autoritzat a realitzar aquelles accions que pretén fer.

Determinació d'accessos autoritzats

En el diccionari de dades es guarda, per cada usuari, quins són els privilegis que té atorgats. Quan un usuari intenta realitzar una acció sobre algun objecte (taula, columna, vista, ...) de la base de dades, el SGBD comprova que l'usuari té atorgat el privilegi per realitzar aquesta acció sobre l'objecte determinat i, en cas contrari, rebutja l'acció.

Atribució i revocació de drets: el propietari de la base de dades (l'usuari que l'ha creat) té tots els drets o privilegis sobre la base de dades.

Gestió de transaccions

Una transacció és una seqüència d'accions que s'executen com una unitat indivisible: les accions d'una transacció s'executen totes elles o bé no se n'executa cap.

Les transaccions han de complir les següents propietats:

  • Consistència
  • Aïllament
  • Atomicitat
  • Definitivitat

El llenguatge SQL té sentències per indicar inici i finalització de les transaccions. En els SGBD transaccionals (que permeten treballar amb transaccions), si no s'especifica l'inici de transacció es considera que s'inicia en la primera sentència d'accés a la base de dades. La finalització d'una transacció s'indica amb les sentències COMMIT o ROLLBACK. Si es finalitza amb COMMIT estem confirmant que volem que els canvis realitzats a la base de dades siguin definitius. Si en canvi es finalitza amb ROLLBACK estem dient que tots els canvis que havia realitzat la transacció s'han de desfer i deixar les dades exactament com estaven abans d'iniciar la transacció.

El SGBD ha de controlar l'execució de les transaccions per tal d'assegurar que les transaccions satisfan les propietats de consistència, aïllament, atomicitat i definitivitat.

Control de concurrència

En un entorn de base de dades multiusuari és desitjable que els diferents usuaris o transaccions puguin estar accedint alhora a la base de dades. Si el SGBD no controlés l'execució de les transaccions, es podrien produir interferències entre elles que podrien violar les propietats d'aïllament i definitivitat de les transaccions. Si estan accedint a les mateixes dades i almenys alguna d'elles està fent una actualització, es poden produir interferències indesitjables com les que veurem a continuació.

Interferències entre transaccions que podrien trencar les propietats d'aïllament i definitivitat:

  • Doble actualització o actualització perduda.
  • Lectura de valors no confirmats.
  • Lectura no repetible.

Per evitar aquestes interferències, els SGBD han de controlar l'execució de les transaccions fent-les esperar davant de certes accions que podrien ser conflictives o, fins i tot, fent-les avortar. La majoria de SGBD permeten que les transaccions puguin escollir el nivell d'aïllament amb què volen treballar. El nivell d'aïllament pot ser:

  • READ UNCOMMITTED
  • READ COMMITTED
  • REPEATABLE READ
  • SERIALIZABLE

Per implementar el control de concurrència la majoria de SGBD utilitzen tècniques basades en un mecanisme de reserves. En aquests casos la part del SGBD encarregada del control de concurrència s'anomena Gestor de Reserves.

1 Gestor de reserves

Quan una transacció vol utilitzar una pàgina, l'ha de reservar. Segons si aquesta dada està essent utilitzada o no, el gestor de reserves s'encarregarà de bloquejar la transacció o de passar la seva petició al gestor de dades.

Podem resumir el funcionament del gestor de reserves (nivell serialitzable) de la següent manera:

  • Si una transacció vol llegir o escriure en una pàgina que ningú utilitza, el gestor de reserves li fa una reserva i deixa continuar la transacció.
  • Si una transacció vol llegir una pàgina que altres transaccions estan utilitzant però només per lectura, el gestor de reserves li fa una reserva i deixa continuar la transacció.
  • Si una transacció vol escriure en una pàgina que altres transaccions estan utilitzant encara que només sigui per lectura, el gestor de reserves posa la transacció en una cua d'espera per aquella pàgina i la farà esperar fins que les transaccions que l'estan utilitzant acabin i l'alliberin.
  • Si una transacció vol llegir una pàgina que una altra transacció està actualitzant, el gestor de reserves posa la transacció en una cua d'espera per aquella pàgina i la farà esperar fins que la transacció que l'està utilitzant acabi i l'alliberi.

Hi ha dues modalitats de reserva:

  • Exclusiva (X)
  • Compartida (S)

Recuperacions

El gestor de recuperacions ha de garantir que es satisfan les propietats d'atomicitat i definitivitat de les transaccions. L'atomicitat és la propietat que garanteix que no es mantindran els canvis produïts per una transacció cancel·lada. La definitivitat garanteix que no es perdran els canvis produïts per transaccions que han confirmat, és a dir, que han acabat amb COMMIT.

El Gestor de Recuperacions del SGBD ha de tenir mecanismes per assegurar les propietats d'atomicitat i definitivitat de les transaccions:

  • Cal un mecanisme per poder desfer tots els canvis realitzats per transaccions no confirmades (cancel·lades) i assegurar que no es perden els canvis realitzats per transaccions confirmades. Aquest procés s'anomena restauració.
  • Cal un mecanisme per reconstruir la base de dades en cas de donar-se una fallada o destrucció d'un disc. Aquest procés s'anomena reconstrucció.

Gestor de restauracions

Quan hi ha una fallada en el sistema i cal restaurar la base de dades, el gestor de restauracions ha de desfer tots els canvis produïts per transaccions cancel·lades.

Gestor de reconstruccions

Quan part de la base de dades ha quedat inaccessible cal reconstruir-la. Periòdicament l'administrador de la base de dades s'encarrega de fer còpies de seguretat (totals o incrementals).

Entradas relacionadas: