Professional Documents
Culture Documents
(DISTRIBUIDAS)
4. Conclusin
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
1. Estructura de referencia de un DBMS
Caractersticas de un DBMS:
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
1. Estructura de referencia de un DBMS
Procesador de Consultas
Gestor de Consultas
Transacciones Operacionales
Datos Gestor de
almacenamiento
Almacenados
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
1. Estructura de referencia de un DBMS
INDEPENDIENTE
DEL DBMS
DEPENDE
DEL DBMS
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
1. Estructura de referencia de un DBMS
>Proceso para el Diseo e implementacin de BDD
Proceso de Diseo de BDD - Elmasri, R., & Shamkant
B, N. 2007 Fundamentos de Sistemas de Base de Datos
GESTION
COMPARTIDA
Data files
contain data and
objects such as
tables, indexes,
stored
procedures, and
views. Data files
can be grouped
together in
filegroups for
allocation and
administration
purposes.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
2. Lenguaje de Consultas Estructuradas
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
2. Lenguaje de Consultas Estructuradas
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
2. Lenguaje de Consultas Estructuradas
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
2. Lenguaje de Consultas Estructuradas
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
2. Lenguaje de Consultas Estructuradas
Funciones de Grupo
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
2. Lenguaje de Consultas Estructuradas
DDL (Data Definition Language):
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
2. Lenguaje de Consultas Estructuradas
DDL (Data Definition Language):
> Rename
Oracle
> Truncate
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
2. Lenguaje de Consultas Estructuradas
Diferencia entre Delete, Truncate, Drop
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
2. Lenguaje de Consultas Estructuradas
Diferencia entre Delete, Truncate, Drop
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
2. Lenguaje de Consultas Estructuradas
Diferencia entre Delete, Truncate, Drop
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
2. Control de inferencias
3. Control de flujo
4. Cifrado de Datos
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo
- Marzo
2014 2014
Estructuras de programacin SQL
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo
- Marzo
2014 2014
Estructuras de programacin SQL
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo
- Marzo
2014 2014
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Conocido como: DAC, Discretionary Access Control
Por simplicidad, para este curso utilizaremos las
palabras usuario o cuenta de modo indiferente.
Sentencias DCL (Data Control Language) en SQL:
> GRANT: en SQL es un comando que se utiliza
para proporcionar acceso o privilegios en los
objetos de base de datos a los usuarios.
> REVOKE: quita los derechos de acceso o
privilegios en los objetos de base de datos.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
> GRANT:
Para la propagacin
de privilegios
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Granting Table Privileges
> Suponga que el usuario 7 (user7) requiere el
privilegio de borrar filas de la tabla Titulo :
GRANT Delete ON Titulo TO user7;
> Activar al usuario 7 (user7) para que pueda
actualizar nicamente la columna Id_Autor de la
tabla TiTulo:
GRANT Update ON Titulo (Id_Autor) TO
user7;
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Granting Table Privileges
> Normalmente, el DBA otorgar privilegios en las
tablas para los programadores en un entorno de
prueba para fines de desarrollo.
> Los programadores y los usuarios finales pueden
requerir privilegios de las tablas en un ambiente
de produccin para ciertas tareas. Sin embargo,
la el acceso debe ser controlado mediante
privilegios de procedimientos almacenados, en
lugar de privilegios en las tablas directamente.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Granting Database Object Privileges
> Activar al user5 y al user9 para que puedan crear
tablas e ndices:
GRANT CREATE table, CREATE index
TO user5, user9;
Nota: usualmente el usuario que tiene privilegios
para crear objetos en la base de datos es
nicamente el DBA.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Granting System Privileges
> Son privilegios que pueden variar de DBMS en
DBMS. Algunos incluyen:
database logs, shut down and restart the
database server, start traces para monitoreo,
manage storage, y manage database caches.
> Son privilegios a nivel de DBMS y no sobre la
BDD.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Granting System Privileges
> Por ejemplo: se desea otorgar al user6 el
privilegio de realizar tareas de monitoreo por
medio de TRACE:
GRANT TRACE TO user6;
Nota: usualmente el DBA o un super usuario son
los usuarios que tienen este tipo de privilegios para
otorgar permissos de esta clase.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Granting Program and Procedure Privileges
> Por ejemplo: otorgar el privilegio al user1 y
user9 el de ejecutar un procedimiento
almacenado de nombre CalculoVariable:
GRANT EXECUTE ON CalculoVariable
TO user1, user9;
Nota: La integridad se gestiona de mejor manera otorgando
prvilegios a los usuarios por medio de programas y
procedimientos almacenados antes que la concesin de
privilegios en las tablas y columnas de manera individual.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Granting to PUBLIC
> Cualquier privilegio que se otorgue mediante
PUBLIC todos los usuarios que inicien sesin
acceden a esta concesin.
> Por ejemplo: Conceder a todos los usuarios el
privilegio de borrar tuplas de la tabla Ttulo:
GRANT DELETE on titles to PUBLIC;
Nota: No se puede dar con la opcin WITH GRANT
OPTIONS (dado que es pblico). Los DBA deben extremar
la prudencia en la concesin de privilegios a PUBLIC.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Revoking Privileges
> Desactivar al user7 el privilegio de actualizacin
de la columna Id_Autor de la tabla TiTulo:
REVOKE UPDATE ON Titulo (Id_Autor)
FROM user7;
> Otro ejemplo:
GRANT DELETE on titles to public;
REVOKE DELETE on titles from userX;
> Nota: En varios DBMS no aplica la anterior sentencia, por lo que
el DBA debe conocer a fondo las sentencias GRANT y REVOKE
en el producto que se encuentra administrando.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Ejercicio:
A. Supongamos que el DBA crease cuatro cuentas
(A1, A2, A3 y A4) y quiere que slo A1 pueda
crear nuevas tablas; en este caso, el DBA debera
ejecutar el siguiente comando GRANT en SQL
> DBA:
GRANT CREATE TABLE TO A1;
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Ejercicio:
B. Supongamos que A1 crease las dos relaciones base
EMPLEADO y DEPARTAMENTO.
Nota: A1 tiene todos los privilegios de relacin sobre cada una de ellas.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Ejercicio:
C. Supongamos que la cuenta A1 desea conceder a la
cuenta A2 el privilegio para insertar y borrar tuplas
en ambas relaciones. Sin embargo, A1 no quiere
que A2 pueda propagar estos privilegios a otras
Cuentas. A1 podra ejecutar el siguiente comando:
> A1:
GRANT INSERT, DELETE ON
EMPLEADO, DEPARTAMENTO TO A2;
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Ejercicio:
D. A continuacin, supongamos que A1 desea
permitir a la cuenta A3 obtener informacin de
cualquiera de las dos tablas y tambin poder
propagar el privilegio SELECT a otras cuentas. A1
podra ejecutar el siguiente comando:
> A1:
GRANT SELECT ON EMPLEADO,
DEPARTAMENTO TO A3 WITH GRANT
OPTION; Nota: A3 puede propagar el privilegio
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Ejercicio:
E. Por lo anterior, A3 puede conceder el privilegio
SELECT sobre la relacin EMPLEADO a A4
ejecutando el comando siguiente:
> A3:
GRANT SELECT ON EMPLEADO TO A4;
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Ejercicio:
F. Supongamos ahora que A1 decide revocar a A3 el
privilegio SELECT sobre la relacin EMPLEADO.
A1 podra ejecutar este comando:
> A1:
REVOKE SELECT ON EMPLEADO
FROM A3;
Nota: El DBMS deber entonces revocar tambin de forma automtica el
privilegio SELECT sobre EMPLEADO a A4, ya que A3 concedi ese
privilegio a A4 y A3 ya no dispone de ese privilegio.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Ejercicio:
G. A continuacin, supongamos que A1 desea
devolver a A3 unos permisos limitados de
SELECT sobre la relacin EMPLEADO y desea
permitir a A3 que pueda propagar el privilegio. La
limitacin consiste en poder obtener slo los
atributos Nombre, FechaNac y Direccin y slo
para las tuplas con el atributo Dno igual a 5.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Ejercicio:
A1 podra entonces crear la siguiente vista:
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Ejercicio:
H. Una vez creada la vista, A1 podr conceder a A3 el
permiso para ejecutar SELECT sobre la vista
A3EMPLEADO segn se muestra a continuacin:
> A1:
GRANT SELECT ON A3EMPLEADO TO
A3 WITH GRANT OPTION;
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: discrecional basado en la concesin y
revocacin de privilegios
Ejercicio:
I. Por ltimo, supongamos que Al desea permitir a
A4 que actualice slo el atributo Sueldo de
EMPLEADO. Al podr entonces ejecutar el
siguiente comando:
> A1:
GRANT UPDATE ON EMPLEADO
(Sueldo) TO A4;
Roles: son un
conjunto de
privilegios y
derechos de acceso
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: Basado en roles
Los comandos GRANT y REVOKE que se vieron en
el Control de Acceso Discrecional (DAC) pueden ser
usados para conceder y revocar privilegios a los
roles.
La jerarqua de roles en RBAC es el modo natural de
organizar los roles para que reflejen la jerarqua de
autoridad y de responsabilidades en la
organizacin.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: Basado en roles
Los modelos RBAC tienen varias caractersticas
interesantes, como la flexibilidad, la neutralidad en
las polticas, un mejor soporte para la gestin de la
seguridad y de la administracin, y otros aspectos
que los hacen candidatos adecuados para el
desarrollo de aplicaciones web seguras.
Un modelo RBAC proporciona un mecanismo
natural para el tratamiento de los temas de seguridad
relacionados con la ejecucin de tareas y flujos de
trabajo. Otra razn para el xito de los modelos
RBAC ha sido la facilidad para el desarrollo en
Internet.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: Basado en roles
> Trabajando con Roles
1. Se crean los roles
2. Se les conceden los privilegios a los roles.
3. Se crea un usuario
4. Se les asignan los roles a usuario
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: Basado en roles
Privilegios y Roles
Roles: son un conjunto de privilegios y derechos
de acceso.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
DCL: Data Control Language
> Control de Acceso: Basado en roles
Trabajando con Roles
1. Se crean los roles
CREATE ROLE TEST
3. Se crea un usuario
CREATE LOGIN Usuario1
WITH PASSWORD = '12%$3#LAasasT';
REVOKE y DROP:
REVOKE CREATE TABLE FROM TEST;
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Introduccin
Los sistemas de procesamiento de transacciones son
sistemas con grandes bases de datos y cientos de
usuarios concurrentes ejecutando transacciones de
bases de datos.
Entre estos sistemas podemos citar los de reservas en
aerolneas, banca, procesamiento de tarjetas de
crdito, mercado de acciones, etc.
Estos sistemas requieren una alta disponibilidad y
una respuesta rpida para cientos de usuarios
simultneos
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Introduccin
Las transacciones proporcionan mayor flexibilidad y
control cuando los datos cambian y ello asegura la
consistencia de los datos en el caso de un fallo en el
proceso del usuario o del sistema.
Cuando se ejecutan tracciones es necesario tener en
cuenta el control de concurrencia y recuperacin
que son necesarios en un sistema de bases de datos.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Definiciones
Segn [Korth y Silberschatz]
> Una transaccin es una unidad de la ejecucin
de un programa que accede y posiblemente
actualiza varios elementos de datos.
Segn [Elmasri / Navathe]
> Una transaccin es un programa en ejecucin que
constituye una unidad lgica del procesamiento
de una base de datos
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Definiciones
Por lo tanto transaccin es:
> Unidad lgica de procesamiento secuencial
compuesta por una o ms acciones que se
ejecutan en bloque sobre una base de datos (o
todas, o ninguna)
> Unidad bsica de cmputo consistente y
confiable.
> Es una coleccin de operaciones que hacen
transformaciones consistentes de los estados de
un sistema, preservando la consistencia del
sistema.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Definiciones
Las propiedades como la Atomicidad, conservacin
de la Consistencia (o de la coherencia),
Aislamiento, y Durabilidad (denominados
propiedades ACID), se consideran deseables en las
transacciones.
Atomicity (Atomicidad): Transaccin se realiza SI O
NO [se ejecuta todo o nada]. Responsable: Gestor de
Transacciones.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Definiciones
> Consistency (Consistencia): Parte de un estado
consistente a otro (Integridad de la BDD).
Responsable: programador/diseador/arquitecto
de TI de la aplicacin que codifica dicha
transaccin o el mdulo de restricciones de
integridad del DBMS
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Definiciones
> Consistency (Consistencia): Lo que se persigue con
el manejo de transacciones es tener transparencia
adecuada de las acciones concurrentes y
transparencia adecuada en el manejo de las fallas
que se pueden presentar en una base de datos.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Definiciones
> Isolation (Aislamiento): Varias transacciones
concurrentes pero sus efectos deben ser de una
manera independiente.
> Una operacin no puede afectar a otras, dos
transacciones sobre los mismos datos son
independientes y no generan errores entre s.
Responsable: Gestor de Transacciones
Componente de control de concurrencia.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Definiciones
> Durabilidad (Durability): Los datos deben ser
persistentes ante emergencias. Los cambios que
se realicen se conservan.
> Una vez realizada una operacin, sta es
persistente y no se puede deshacer. Responsable:
Componente de Gestin de Recuperaciones* del
DBMS
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Por ejemplo, una transferencia de 500 USD de la
cuenta A (con saldo 2,000 USD) a la cuenta B (con
saldo 100 USD) de un mismo banco.
Si existe algn error
Si se ejecutan las
dos acciones
Tiempo Operaciones
Transacciones
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Definiciones
Las transacciones son un mecanismo que ayuda a
simplificar la construccin de sistemas confiables a
travs de procesos que proveen soporte uniforme
para invocar y sincronizar operaciones como:
> Operaciones de comparticin de datos.
> Aseguramiento de la seriabilidad de las
transacciones con otras.
> Atomicidad en su comportamiento.
> Recuperacin de fallas provocadas en red y
nodos.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Definiciones
Una transaccin incluye una o ms operaciones de
acceso a la base de datos (operaciones de insercin,
eliminacin, modificacin o recuperacin).
Una forma de definir los lmites de una transaccin
es especificando explcitamente las sentencias begin
transaction y end transaction en un programa de
aplicacin
Si las operaciones de bases de datos de una
transaccin no actualizan la base de datos, sino que
nicamente recuperan datos, se dice que la
transaccin es de slo lectura.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Estados de una Transaccin
En ausencia de fallos, todas las transacciones se
completan con xito.
Sin embargo, una transaccin puede que no siempre
termine su ejecucin con xito.
Una transaccin que NO termine su ejecucin con
xito se denomina abortada.
Si se pretende asegurar la propiedad de atomicidad,
una transaccin abortada no debe tener efecto sobre
el estado de la base de datos.
As, cualquier cambio que haya hecho la transaccin
abortada sobre la base de datos debe deshacerse.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Estados de una Transaccin
Una vez que se han deshecho los cambios efectuados
por la transaccin abortada, se dice que la
transaccin se ha retrocedido.
Parte de la responsabilidad del Gestor de
recuperaciones es gestionar las transacciones
abortadas.
Una transaccin que termina con xito se dice que
est confirmada.
Una transaccin confirmada que haya hecho
modificaciones transforma la base de datos
llevndola a un nuevo estado consistente, que
permanece incluso si hay un fallo en el sistema.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Estados de una Transaccin
Cuando una transaccin se ha confirmado no se
pueden deshacer sus efectos abortndola.
La nica forma de deshacer los cambios de una
transaccin confirmada es ejecutando una
transaccin compensadora.
Por ejemplo, si una transaccin aade 20 USD a una
cuenta, la transaccin compensadora debera restar
20 USD de la cuenta. Sin embargo, no siempre se
puede crear dicha transaccin compensadora.
Por tanto, se deja al usuario la responsabilidad de
crear y ejecutar transacciones compensadoras, y no
la gestiona el sistema de base de datos.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Estados de una Transaccin
Por lo tanto, las OPERACIONES en una
transaccin son las siguientes:
1. BEGIN_TRANSACTION
2. READ o WRITE
3. END_TRANSACTION
4. COMMIT_TRANSACTION
5. ROLLBACK o ABORT
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Estados de una Transaccin
Estas operaciones hacen que las transacciones pasen
por una serie de ESTADOS, denominados estados
de una transaccin, siendo estas:
A. Activa
B. Parcialmente comprometida o cometida
C. Fallida (abortada)
D. Comprometida o Confirmada
E. Terminado
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Estados de una Transaccin
Registro del Sistema (Log)
Para poder recuperarse de los fallos que afectan a las
transacciones, el sistema mantiene un registro* para
hacer un seguimiento de todas las operaciones de las
transacciones que afectan a los valores de los
elementos de una base de datos.
Esta informacin puede ser necesaria para
recuperarse ante un fallo.
Este registro se guarda en el disco, por lo que no se
ve afectado por ningn tipo de fallo, excepto los de
disco o catastrficos.
*El registro ha sido denominado por otros autores como diario o bitcora del DBMS
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Estados Vs. Operaciones de una Transaccin
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Estados Vs. Operaciones de una Transaccin
BEGIN TRANSACTION
Atomicidad Consistencia
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
Cundo inicia y finaliza una transaccin?
Una transaccin inicia cuando la primera sentencia
DML (Insert, Update, Delete) es encontrada y
finaliza cuando ocurre alguno de los siguientes
puntos:
> Una sentencia COMMIT o ROLLBACK es
usada
> Una sentencia DDL (Create, Alter, Drop,
Rename, Truncate), es utilizada
> Una sentencia DCL (Grant, Revoke) es usada
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
Cundo inicia y finaliza una transaccin?
Continuacin finaliza cuando.
> El usuario cierra la interface de lneas de
comando. Por ejemplo SQL*Plus de Oracle.
> Una computadora falla o el sistema falla.
Despus de que una transaccin finaliza, la siguiente
sentencia SQL ejecutada automticamente inicia la
siguiente transaccin.
Una sentencia DDL (Create, Alter, Drop, Rename,
Truncate) o DCL (Grant, Revoke) es
automticamente completada y por consiguiente
implcitamente finaliza una transaccin.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
Cundo inicia y finaliza una transaccin?
Nota:
Desde iSQL*Plus, una salida normal de una sesin es
lograda oprimiendo el botn Exit.
Con SQL*Plus, una salida normal es lograda
escribiendo el comando EXIT en la lnea de
comandos.
Cerrar la ventana es interpretado como una salida
anormal.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
>Programacin de transacciones
> TCL (Transactional Control Language) :
Commit, Rollback, Savepoint
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
>Programacin de transacciones
> TCL (Transactional Control Language) :
Commit, Rollback, Savepoint
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
Cundo inicia y finaliza una transaccin?
Nota:
Desde iSQL*Plus, una salida normal de una sesin es
lograda oprimiendo el botn Exit.
Con SQL*Plus, una salida normal es lograda
escribiendo el comando EXIT en la lnea de
comandos.
Cerrar la ventana es interpretado como una salida
anormal.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Tipos de Fallos
Los fallos se clasifican generalmente como fallos de
transaccin del sistema y del medio.
Hay varias razones posibles por las que una
transaccin puede fallar en medio de su ejecucin:
1. Un fallo del computador (cada del sistema).
Durante la ejecucin de una transaccin se
produce un error del hardware, del software o
de la red. Las cadas del hardware normalmente
se deben a fallos en los medios (por ejemplo,
un fallo de la memoria principal).
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Tipos de Fallos
2. Un error de la transaccin o del sistema.
Alguna operacin de la transaccin puede
provocar que falle, como un desbordamiento de
entero o una divisin por cero.
El fallo de una transaccin tambin se puede
deber a unos valores errneos de los
parmetros o debido a un error lgico de
programacin.
Tambin se debe considerar que el usuario
puede interrumpir la transaccin durante su
ejecucin.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Tipos de Fallos
3. Errores locales a la transaccin. Se producen
condiciones que hace que la transaccin no
pueda ejecutarse.
Por ejemplo, no encontrar un dato o si se tiene
saldo insuficiente se debe cancelar la retirada
de fondos.
Esta excepcin debe programarse en la propia
transaccin, en cuyo caso, no sera
considerada un fallo.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Tipos de Fallos
4. Fallo de disco magntico. Durante la
ejecucin de la transaccin se produce un error
de disco, por ejemplo un mal funcionamiento
de la cabeza de lectura/escritura.
5. Problemas fsicos y catstrofe. Incendio, fallo
de alimentacin, aire acondicionado, fuego,
robo, sabotaje sobre escritura de discos y cintas
por error, etc.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Tipos de Fallos
6. Control de concurrencia. la transaccin
puede abortar porque no cumple las
condiciones de control de concurrencia.
El concepto de transaccin es fundamental para
muchas tcnicas de control de la concurrencia y
de recuperacin ante fallos.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Por qu es necesario controlar la concurrencia?
Es necesario establecer mecanismos para que las
transacciones (operaciones concurrentes sobre una
base de datos) no se ejecuten de forma incontrolada y
dejen a la BDD en un estado inconsistente.
Es necesario controlar la concurrencia por los
siguientes problemas:
> Problema por prdida de actualizacin
> Problema de la actualizacin temporal (o lectura sucia)
> Problema de la suma incorrecta (resumen incorrecto)
> Problema de la lectura no repetible (lectura
irrepetible)
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
Sistema monousuario frente a sistema
multiusuario. Procesos concurrentes.
Monousuario: soportan a un solo usuario a la vez,
sin importar el nmero de procesadores que tenga la
mquina o el nmero de procesos o tareas que el
usuario pueda ejecutar en un mismo instante de
tiempo.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
Sistema monousuario frente a sistema
multiusuario. Procesos concurrentes.
Multiusuarios: son capaces de dar servicio a mas de
un usuario a la vez, ya sea por medio de varias
terminales conectadas a la computadora o por medio
de sesiones remotas en una red de comunicaciones,
no importa el numero de procesadores en la mquina
ni el nmero de procesos que cada usuario puede
ejecutar simultneamente.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
Sistema monousuario frente a sistema
multiusuario. Procesos concurrentes.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Modelo simplificado de una base de datos
Con un modelo de base de datos simplificado, las
operaciones bsicas de acceso a la BDD que una
transaccin puede incluir son las siguientes:
1. read_item(X): Lee el tem X y almacena su
valor en una variable.
2. write_item(X): Graba el valor de la variable de
programa X en el tem X.
El tamao de un recurso (o elemento) de base de
datos bloqueado se conoce como granularidad.
Puede ser un registro, una columna, la BDD entera.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Modelo simplificado de una base de datos
Ejemplo de dos transacciones.Calcular el valor de X & Y
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Por qu es necesario controlar la concurrencia?
Problema por prdida de actualizacin
N=5 M=4
read_item write_item error Y=60
X=80
T1 T2 El resultado final
debe ser X = 79;
80 pero en la
75
interpolacin de
80 operaciones, el
84 resultado es X =
84 84 porque se ha
60 perdido la
84 actualizacin de
T1 que eliminaba
65 las cinco plazas
65 de X.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Por qu es necesario controlar la concurrencia?
Problema de la actualizacin temporal (o lectura sucia)
Este problema se produce
cuando una operacin de una
transaccin realiza una
actualizacin y la transaccin
no llega a completarse con xito
por algn problema (cada del
sistema, problemas en la red,
etc.), y otra transaccin utiliza el
<<Fallo>>
valor actualizado antes de que el
elemento actualizado por la
transaccin fallida se restaure a
su valor original.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Por qu es necesario controlar la concurrencia?
Problema de la actualizacin temporal (o lectura sucia)
read_item T2 lee el valor
N=5 M=4
write_item temporal de X, que
X=100 Y=60
error no se grabar
T1 T2 permanentemente
en la base de datos
100 debido al fallo de
95 T1. El valor del
95 elemento X que es
95 ledo por T2 se
99 denomina dato
99 sucio porque lo ha
60 creado una
error transaccin que no
<<Fallo>> se ha completado y
confirmado todava
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Por qu es necesario controlar la concurrencia?
Problema de la suma incorrecta (resumen incorrecto)
Restriccin X=Y
Este problema se produce cuando
una transaccin est realizando
una operacin de agregacin y se read_item (X);
estn procesando transacciones X:=X+1;
que estn modificando las fuentes write_item(X); read_item (X);
sobre las que se est realizando la X:=2*X
funcin de agregacin, de forma write_item(X);
read_item(Y);
que tenga en cuenta algunos Y=2*X;
valores anteriores a las write_item(Y)
read_item(Y);
modificaciones y otros posteriores
Y=Y+1;
a las modificaciones. write_item(Y)
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones Restriccin: X=Y
deja de cumplirse
Problema de la suma incorrecta por la ejecucin
read_item write_item error concurrente.
X=Y=100 Restriccin X=Y
T1
(independiente) T1 T2 T2
Concurrente Concurrente (independiente)
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Tcnicas de Control de Concurrencia
Recuperabilidad
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Control de Concurrencia
Bloqueos: se utilizan para garantizar la ausencia de
interferencias o la propiedad de aislamiento de las
transacciones que se ejecutan simultneamente y
requieren acceso al mismo recurso.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Control de Concurrencia
Bloqueos: se utilizan para garantizar la ausencia de
interferencias o la propiedad de aislamiento de las
transacciones que se ejecutan simultneamente y
requieren acceso al mismo recurso.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Control de Concurrencia
Bloqueos: Protocolo de dos fases
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Control de Concurrencia
Bloqueos (Consideraciones):
Los bloqueos de Oracle son ejecutados
automticamente y no requiere la accin del usuario.
Implcitamente los bloqueos ocurren necesariamente
a causa de sentencias SQL, dependiendo de la accin
solicitada.
Implcitamente los bloqueos ocurren para todas las
sentencias SQL con excepcin del SELECT.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Control de Concurrencia
Bloqueos (Consideraciones):
Los usuarios tambin pueden bloquear datos
manualmente, esto es llamado un bloqueo explicito.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Control de Concurrencia
Bloqueos (Consideraciones):
Cuando se ejecutan operaciones DML (Insert,
Update, Delete). El servidor de Oracle proporciona
concurrencia a los datos por medio de bloqueos
DML.
Los bloqueos DDL (Create, Alter, Drop, Rename,
Truncate) ocurren cuando se modifica un objeto de la
base de datos como una tabla.
Los bloqueos DML ocurren en dos niveles:
> Un bloqueo compartido (Share lock)
> Un bloqueo exclusivo (exclusive lock)
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Control de Concurrencia
Bloqueos (Consideraciones):
> Un bloqueo compartido (Share lock) es
automticamente adquirido a nivel de tabla
durante operaciones DML. Con el modo de
bloqueo compartido, diversas transacciones
pueden adquirir bloqueos compartidos en el
mismo recurso.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Control de Concurrencia
Bloqueos (Consideraciones):
> Un bloqueo exclusivo (exclusive lock) es
adquirido automticamente para cada fila
modificada por una sentencia DML. Los
bloqueos exclusivos previenen que la fila sea
cambiada por otras transacciones hasta que la
transaccin que bloque la fila, sea cometida o
deshecha.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Control de Concurrencia
Bloqueos (Consideraciones):
El bloqueo exclusivo asegura otros usuarios no
puedan modificar la misma fila al mismo tiempo y
sobrescribir los cambios no cometidos por otro
usuario.
SQL Server bloquea los recursos con diferentes
modos de bloqueo que determinan el modo en que
las transacciones concurrentes pueden tener acceso a
los recursos. Los bloqueos son: Compartido (S),
Actualizar (U), Exclusivo (X), Intencin, Esquema,
Actualizacin masiva (BU), Intervalo de claves
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Control de Concurrencia
Bloqueos (Problemas):
Uno de los problemas que se pueden generar son los
interbloqueos (deadlock).
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Control de Concurrencia
Planes: Planificacin en serie
Las operaciones de cada transaccin se ejecutan
consecutivamente sin que se entrelacen operaciones
de otras transacciones
este enfoque
presenta el
problema que
limita la
concurrencia
y, en general,
reduce el
rendimiento
del sistema.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Control de Concurrencia
Planes: Planificacin NO en serie
Las operaciones de un conjunto de transacciones
concurrentes estn entrelazadas.
Pueden producirse
conflictos: perdidas de
operacin,
inconsistencias. Para
esto se utilizan dos
definiciones de
equivalencia de
planificaciones:
Equivalencia por
conflicto, Equivalencia
por vista.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Control de Concurrencia
Planes: Planificacin NO en serie
La Planificacin no serie 1, ofrece un
resultado incorrecto debido al
problema de la prdida de
actualizacin.
La transaccin T2 lee el valor de X
antes de que sea cambiado por la
transaccin T1, de modo que en la
base de datos slo se refleja el efecto
de T2 sobre X. El efecto de T1 sobre
X se pierde, al ser sobrescrito por T2,
lo que nos lleva a un resultado
incorrecto para el elemento X.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Control de Concurrencia
Recuperabilidad: Se refiere a la necesidad de dirigir
el efecto de fallos en la transaccin en transacciones
que se ejecutan concurrentemente.
Si la transaccin Ti falla, por la razn que sea, es
necesario deshacer el efecto de dicha transaccin
para asegurar la propiedad de atomicidad de la
misma.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Control de Concurrencia
Es necesario que el DBMS controle la interaccin
entre las transacciones concurrentes; dicho control se
lleva a cabo a travs del componente de control de
concurrencia que se encuentra en el Gestor de
Transacciones, mediante mecanismos existentes.
Para gestionar la concurrencia se utilizan los
siguientes mecanismo:
> Algoritmos de control de accesos
Algoritmos de ordenamiento inicial
Algoritmos de bloqueo
Algoritmos optimistas
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones
> Control de Concurrencia
> Importancia de la granularidad
Compromiso entre gestin y esperas
> Gestin de colas de transacciones
Decidir a qu transaccin hay que dar mayor
prioridad
> Auditoras al monitor de transacciones
El objetivo de los mecanismos de control de
concurrencia es garantizar la no inferencia o la
propiedad de aislamiento de transacciones que se
ejecutan de manera concurrente.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones en SQL
Con SQL no hay una sentencia explcita para
begin_transaction, sino que el inicio de una
transaccin se realiza implcitamente cuando se
encuentran determinadas sentencias de SQL.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones en SQL El modo READ WRITE permite que
se ejecuten sentencias de
modificacin de la base de datos
(predeterminado), mientras que el
MODO DE ACCESO modo READ ONLY se usa
solamente para recuperacin de
datos.
NIVEL DE AISLAMIENTO
El nivel de aislamiento predeterminado
suele ser SERIALIZABLE. El uso en
SQL de SERIALIZABLE indica que no
se pueden permitir violaciones que
causen lecturas
sucias, lecturas no
repetibles ni
fantasmas
READ UNCOMMITTED,
READ COMMITTED,
REPEATABLE READ
SERIALIZABLE.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones en SQL
Si una transaccin se ejecuta con un nivel de
aislamiento inferior a SERIALIZABLE pueden
ocurrir algunas de estas anomalas:
> Lectura sucia. Una transaccin T1 puede leer
una escritura realizada por la transaccin T2 pero
que todava no ha sido confirmada. Si T2 no se
completa, T1 habr ledo un valor incorrecto.
> Lectura no repetible. Una transaccin T1 lee un
valor de la base de datos. Si otra transaccin T2
actualiza ms tarde dicho valor y T1 vuelve a leer
el valor se encuentra con un valor diferente
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones en SQL
> Fantasmas. Una transaccin T1 lee un conjunto
de valores mediante la ejecucin de una consulta.
Si otra transaccin T2 introduce un nuevo valor
que podra salir como resultado de la consulta, si
T1 vuelve a ejecutar la consulta ver una fila que
antes no exista (un fantasma)
La tabla siguiente muestra las violaciones que se
pueden cometer en funcin del tipo de aislamiento
definido.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones en SQL
La siguiente figura muestra otro enfoque de las
violaciones que se pueden cometer en funcin del
tipo de aislamiento definido.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones en SQL
SQL en Oracle
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones en SQL
SQL en Oracle
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones en SQL
SQL en SQL Server
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones
Transacciones en SQL
SQL en SQL Server
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
4. Conclusin
Los administradores de la
base de datos y los
programadores de
aplicaciones, debern
conocer y utilizar las
bondades de los DBMS y
de las estructuras de
programacin SQL; para
que puedan garantizar la
seguridad e integridad de la
informacin mediante
procesos explcitos de
ingeniera.
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015