BD U5
BD U5
BD U5
Cliente
Servidor
DBMS
Aplicacin
Base de
Datos
Arquitecturas Cliente-Servidor
Dependiendo de la forma en que se organicen y ubiquen las tres capas de una aplicacin
cliente-servidor, la arquitectura toma dos formas comunes: la arquitectura de 2 niveles
(tradicional) y la de 3 niveles (ms reciente).
Arquitectura de dos niveles
En una arquitectura cliente-servidor de dos niveles el cliente (front-end) ejecuta las
capas de presentacin y lgica de la aplicacin de software, que obtiene su data
desde un servidor de base de datos (back-end). El servidor basado en el DBMS
centraliza el control sobre la data y desempea mucho del procesamiento relacionado
con la data, dejando al cliente la responsabilidad de correr las aplicaciones.
Un problema comn de la arquitectura de dos niveles es que el cliente debe ser
configurado para incluir un driver para cada tipo de base de datos accesada. Esto
puede ser costoso, ya que este tipo de drivers generalmente necesitan licencia. Ms
an, en esta arquitectura suelen surgir problemas de configuracin y mantenimiento
de software. Los drivers de varios productos pueden ser mutuamente incompatibles
Facultad de Ingeniera
BD Bases de Datos
Cliente
Servidor
Aplicacin
(presentacin + lgica)
DBMS1
DBMS2
Base de
Datos
Base de
Datos
Driver Manager
Driver
DBMS1
Driver
DBMS2
Cliente
Middleware
Aplicacin
(presentacin)
Aplicacin
(lgica)
Servidor
DBMS1
DBMS2
Base de
Datos
Base de
Datos
Driver Manager
Driver
DBMS1
Driver
DBMS2
Facultad de Ingeniera
BD Bases de Datos
La figura 6.4 muestra la arquitectura general de los APIs JDBC (funciona de manera similar
al ODBC) y JDBC/ODBC.
Los parmetros para establecer una conexin entre la aplicacin cliente y el servidor de
bases de datos son:
-
Facultad de Ingeniera
BD Bases de Datos
Aplicaciones Java
JDBC API
JDBC API
JDBC/ODBC Brigde
JDBC
Driver
Protocolo
Sybase
JDBC
Driver
ODBC Driver Manager
Protocolo
Oracle
...
ODBC
Driver
DBMS
Oracle
DBMS
Sybase
Protocolo
Sybase
ODBC
Driver
...
DBMS
Sybase
Protocolo
Oracle
DBMS
Oracle
Facultad de Ingeniera
BD Bases de Datos
T2
Read(X)
X:=X-N
Write(X)
Read(Y)
Y:=Y+N
Write(Y)
Read(X)
X:=X+M
Write(X)
T2
Read(X)
X:=X-N
Read(X)
X:=X+M
Write(X)
Read(Y)
Write(X)
Y:=Y+N
Write(Y)
Por ejemplo, T1 puede estar cancelando N reservas en un vuelo y agregndolas de
nuevo al vuelo como disponibles, en tanto que T2 simplemente reserva M asientos en el
mismo vuelo que T1 cancela. Esperamos que el nmero de asientos disponibles en el
primer vuelo sea el original N + M.
En la prctica el nmero slo ser el original + M porque la primera actualizacin se
pierde.
Lectura sucia (dirty read)
Una transaccin actualiza un dato y luego sta falla.
actualizado antes de ser devuelto a su valor original.
T1
T2
Read(X)
X:=X-N
Write(X)
Read(X)
X:=X+M
Write(X)
Read(Y)
FALLA!!!!
Facultad de Ingeniera
BD Bases de Datos
El concepto de Transaccin
Unidad de trabajo atmica, indivisible que se ejecuta en trminos de todo o nada.
Cuando una transaccin se entrega al DBMS para su ejecucin, el sistema es responsable de
que:
a) Todas las operaciones de la transaccin se completen y el resultado se refleje
permanentemente en la BD, o bien
b) No hay ningn efecto de la transaccin en la BD
No se acepta ejecucin de una parte de la transaccin, situacin que puede producirse en
caso de fallas (fsicas, sistema, programa, control de concurrencia, etc.)
Trabaja con el sistema de recuperacin (recovery), que tpicamente debe llevar un control de
las siguientes operaciones:
Begin_transaction
Read y Write
End_transaction
Commit_transaction
Rollback (abort)
Undo
Redo
Read, Write
Begin_
Transaction
Commit
Activo
Abort
Comprometido
Parcialmente
Comprometido
End_
Transaction
Abort
Fall
Terminado
End_
Transaction
Facultad de Ingeniera
BD Bases de Datos
El punto a destacar en el ejemplo es que lo que supone ser una sola operacin atmica
aadir una nueva compra, implica de hecho dos actualizaciones a la base de datos: una
operacin INSERT y una operacin UPDATE. Lo que es ms, la base de datos ni siquiera es
constante entre esas dos actualizaciones, ya que viola temporalmente la restriccin que
indica que el valor de Stock para la parte A567 debe ser igual a la suma de todos los valores
Cantidad para esa pieza. Por lo tanto, una unidad de trabajo lgica (por ejemplo, una
transaccin) no es necesariamente una sola operacin a la base de datos, sino que en
general es una secuencia de varias de estas operaciones que transforman un estado
consistente de la base de datos en otro estado consistente sin que sea necesario conservar la
consistencia en todos los puntos intermedios.
El componente del sistema que proporciona esta atomicidad es conocido como administrador
de transacciones y las operaciones COMMIT y ROLLBACK son la clave de cmo funciona:
o
Facultad de Ingeniera
BD Bases de Datos
T1
T3
BD
T4
T2
Se considera que una ejecucin de un conjunto dado de transacciones es correcta cuando es
serializable; es decir, cuando produce el mismo resultado que una ejecucin serializable de
las mismas transacciones, ejecutando una a la vez. Esto se justifica por:
o Las transacciones individuales son tomadas como correctas; es decir, se da por
hecho que transforman un estado correcto de la base de datos en otro estado
correcto.
o Por lo tanto, tambin es correcta la ejecucin de una transaccin a la vez en
cualquier orden serial, y se dice cualquier orden serial debido a que las
transacciones individuales son consideradas independientes entre s.
o Por lo tanto, una ejecucin intercalada es correcta cuando equivale a alguna
ejecucin serial, es decir, cuando es serializable.
T2
T1
T4
T3
Optimista (time-stamps)
El enfoque o filosofa optimista est basada en la suposicin que los conflictos entre
usuarios que accesan simultneamente un datos son escasos, entonces la idea es
dejarlos trabajar tranquilos y solamente validar al final.
b.
Pesimista (locks)
El enfoque o filosofa pesimista asume que lo ms probable es que existirn conflictos,
entonces impidamos desde un principio las situaciones de conflicto mediante un
mecanismo de cerrojos (locks).
Facultad de Ingeniera
BD Bases de Datos
a.
Locks o Bloqueos
Cuando una transaccin deba asegurarse de que algn objeto en el que est interesada
por lo general una tupla de la base de datos no cambiar de ninguna forma mientras
lo est usando, adquiere un lock o bloqueo sobre ese objeto. El efecto del bloqueo es
inhibir todas las dems transacciones en ese objeto y por lo tanto, impedir que lo
cambien. Por lo tanto, la primera transaccin es capaz de realizar todo su
procesamiento con el conocimiento certero de que el objeto en cuestin permanecer en
un estado estable durante todo el tiempo que esta lo desee.
El sistema soporta dos tipos de bloqueos, bloqueos exclusivos o de escritura (X) y
bloqueos compartidos o de lectura (S):
-
T1
T2
Read(D)
D:=D+5
Write(D)
Read(D)
D:=D*3
Write(D)
T1
T2
T1
T1
T1
T1
T2
T2
T2
T2
T2
Facultad de Ingeniera
BD Bases de Datos
Base de Datos
Tablas
Registro
Campo
T2
Read(A)
A:=A-10
Write(A)
Read B
B:=B+10
Write(B)
Read(B)
B:=B*2
Write(B)
Read(A)
A=A*3
Write(A)
T1
T1
T1
T1
T1
T2
T2
T2
T2
T2
T1
T1
T1
T1
T1
T2
T2
T2
T2
T2
le otorga
le otorga
le otorga
le otorga
Facultad de Ingeniera
10
BD Bases de Datos
Consta de 2 fases:
# de locks
# de locks
Cumple 2PL
No cumple 2PL
Deadlocks
Bajo esquema de control de concurrencia basado en locks debe tenerse cuidado adems
con la condicin de deadlock
T1
T2
T1
T2
pide
pide
pide
pide
lock
lock
lock
lock
sobre
sobre
sobre
sobre
A
B
B queda esperando
A queda esperando
Facultad de Ingeniera
11
BD Bases de Datos
b.
T1
T2
Read(D)
D:=D+5
Write(D)
Read(D)
D:=D*3
Write(D)
T1-1
T1-2
T2-1
T1-3
T1
T2-2
T2-3
T2
T1-1
T1-2
T1-3
T1
lee D(1)
hace D=6
lee D(1)
escribe D(6)
termina pero se encuentra un conflicto con T2 por lo cual se aborta
(escribe D(1))
hace D=3
escribe D(3)
termina y no hay conflictos
lee D(3)
hace D=8
escribe D(8)
termina y no hay conflictos
Facultad de Ingeniera
12
BD Bases de Datos
Abortos en Cascada
Una transaccin al ser abortada puede provocar el trmino de otra que ha ledo
informacin sucia.
Para saber las transacciones involucradas se utiliza la auditora bitcora (asociada al
sistema de recuperacin).
Una manera de evitar algunos de estos problemas es chequear al final (al momento del
commit) y slo entonces reflejar los cambios en forma permanente en la BD.
Cuando T termina:
o Se chequea tr de todos los tems que T desea actualizar y si existe alguno mayor
que t se aborta T.
o Se chequea el tw de todos los tems que T ha ledo y si existe alguno mayor que t
se aborta T.
o Si no se dan los casos anteriores entonces se reflejan los cambios en la BD.
Facultad de Ingeniera
13
BD Bases de Datos
Tema 3: Seguridad
En un DBMS multiusuario, ste debe proveer de mecanismos para habilitar el acceso a
ciertos usuarios (o grupos de usuarios) a partes seleccionadas de la BD y al mismo tiempo
evitar que puedan accesar el resto de la BD.
3.1. Control de Acceso Discrecionario
Basado en otorgacin y anulacin de privilegios. El DBMS provee acceso selectivo a cada
relacin basado en usuarios (cuentas) especficos.
El tener una cuenta no entrega automticamente toda la funcionalidad del DBMS a su dueo
(operaciones tambin son controladas).
Credenciales de un Usuario o Cuenta
Para crear un usuario o una cuenta se deben definir sus credenciales. Las credenciales son
los atributos de una cuenta que sirven para identificarla de manera nica:
o Username: Nombre de usuario o cuenta.
o Host: Ubicacin desde donde se le permite conectar al usuario. El host puede tener
tres tipos de valores:
o Localhost: El usuario o cuenta slo puede conectarse desde la misma mquina
donde est funcionando el servidor de bases de datos.
o Remoto (%): El usuario puede conectarse desde cualquier terminal o mquina
remota al servidor de bases de datos.
o Direccin IP: El usuario slo puede conectarse desde una ubicacin especfica
determinada con un URL o direccin IP.
o Password: Contrasea de seguridad del usuario. Esta contrasea suele ser
encriptada con distintos tipos de hashing unidireccionales (por ejemplo, en el caso
de MySQL se hace utilizando el algoritmo de encriptacin MD5).
Privilegios de una Usuario o Cuenta
Los privilegios definen el nivel de acceso que un usuario o cuenta tienen sobre un servidor de
bases de datos. Estos privilegios puede definirse a nivel de cuenta independientemente de
las relaciones o bases de datos presentes (privilegios globales) o a niveles ms detallados: a
nivel de base de datos, a nivel de tablas, a nivel de campos.
En todos estos niveles puede especificarse las acciones para las que el usuario est
autorizado. Estas acciones pueden ser a nivel de DDL (Create, Alter y Drop) y a nivel de DML
(Select, Insert, Update, Delete). Dentro de cada nivel tambin puede definirse si se le otorga
al usuario la posibilidad de entregar acceso a otros usuarios sobre los objetos sobre los que
ha recibido privilegios.
El DBA es un usuario con privilegios globales totales con capacidad de crear usuarios y de
otorgar permiso sobre todos los objetos presentes en el servidor de bases de datos.
Los privilegios a nivel de cuenta (privilegios globales) son especificados por el DBA
para cada cuenta independientemente de las relaciones en la BD:
o CREATE DATABASE: Permite crear nuevas bases de datos en el servidor. Un
usuario que crea una base de datos se convierte en dueo de dicha base de
datos, lo que le permite alterarla o eliminarla sin restriccin.
o CREATE TABLE: Permite crear nuevas tablas en cualquier base de datos del
servidor.
o CREATE VIEW: Permite crear vistas de cualquier base base de datos en el
servidor.
o ALTER: Permite alterar la estructura de cualquier base de datos en el servidor.
o DROP: Permite eliminar componentes de la estructura de cualquier base de
datos en el servidor.
o SELECT: Permite consultar cualquier base de datos en el servidor.
Facultad de Ingeniera
14
BD Bases de Datos
Los privilegios a nivel de relacin permiten el acceso a las distintas bases de datos
del servidor. Estos privilegios dependen del nivel al que se asigna acceso:
o Privilegios a nivel de Base de Datos: Acciones permitidas dentro de la base de
datos a la que se est otorgando privilegios:
CREATE TABLE
DROP TABLE
ALTER TABLE
SELECT
INSERT
UPDATE
DELETE
o Privilegios a nivel de Tablas: Acciones permitidas dentro de la tabla especfica
de la base de datos a la que se est otorgando privilegios:
ALTER TABLE
SELECT
INSERT
UPDATE
DELETE
o Privilegios a nivel de Campos: Acciones permitidas dentro del campo de una
tabla especfica de la base de datos a la que se est otorgando privilegios:
SELECT
UPDATE
Otorgamiento de privilegios
Para entregar privilegios a un usuario o cuenta se utiliza el comando GRANT, que tiene la
siguiente estructura:
GRANT privilegios ON objeto TO usuario [WITH GRANT OPTION]
privilegios: lista de privilegios create, alter, drop, select, insert, update, delete que
se entregarn al usuario.
objeto:
lista de bases de datos, tablas o campos sobre los que se otorgar
privilegios.
usuario:
usuario al que se est otorgando los privilegios.
[WITH GRANT OPTION] clusula opcional que permite al usuario receptor de
privilegios, otorgar los mismos privilegios a otro usuario.
Retiro de privilegios
Para retirar privilegios a un usuario o cuenta se utiliza el comando REVOKE, que tiene la
siguiente estructura:
REVOKE privilegios ON objeto TO usuario
Cuando se le retiran los privilegios a un usuario que a su vez ha entregado privilegios a otros
usarios, automticamente estos ltimos pierden dichos privilegios.
Facultad de Ingeniera
15
BD Bases de Datos
Un ejemplo
DBA crea 4 cuentas A1, A2, A3 y A4
A1 quiere ahora hacer que A3 pueda consultar ambas tablas y si lo desea otorgar
este mismo derecho a quien estime conveniente
GRANT SELECT ON EMPLEADO, DEPARTAMENTO TO A3 WITH GRANT
OPTION;
Facultad de Ingeniera
16
BD Bases de Datos
o
o
o
o
Sueldo
Desempeo
Classtupla
Prez U
Robles C
40000 C
80000 S
Aceptable S
Bueno
C
U
C
Sueldo
Desempeo
Prez U
Robles C
40000 C
null
S
null
Bueno
S
C
Classtupla
U
C
Sueldo
Prez U
null
Facultad de Ingeniera
Desempeo
C
null
Classtupla
U
17