Vous êtes sur la page 1sur 142

BASES DE DATOS II

(DISTRIBUIDAS)

Facultad de Ingeniera y Ciencias


Ingeniera en Sistema e Informtica - Electrnica y Redes

Estructuras de programacin SQL


Structured Query Language
Ing. Jonathan Carrillo
Quito, Marzo 2015
Contenido:
1. Estructura de referencia de un DBMS
Definicin
Caractersticas
Proceso del diseo e implementacin de Bases de Datos
2. Lenguaje de Consultas Estructuradas
DRL: Select
DML: Insert, Update, Delete
DDL: Create, Alter, Drop, Rename, Truncate
3. Lenguaje de Control de Datos y Transacciones
Seguridad de la Informacin
Amenazas en las Bases de Datos
Control de Acceso
DCL: Data Control Language
Control de Acceso: discrecional basado en la concesin y revocacin de privilegios
Control de Acceso: Basado en roles
Transacciones
TCL: Transaction Control Language

4. Conclusin

Ing. Jonathan Carrillo - Marzo/Abril 2015


Estructuras de programacin SQL
1. Estructura de referencia de un DBMS

DBMS (Database Management System): Es un


paquete de software que se puede utilizar para
controlar la creacin, mantenimiento y uso de una
base de datos. Permite a las organizaciones a
desarrollar bases de datos a medida para diversas
aplicaciones (Mullins, 2013).
DBMS: Consiste en una coleccin de datos
interrelacionados y una coleccin de programas para
acceder a esos datos (Korth, 2002)

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:

> Acceso concurrente de usuarios


> Control de transacciones
> Permite un lenguaje de consulta para recuperar
datos
> Tiene medidas de respaldo (backup)
> Proporciona medidas de recuperacin en el caso
de fallos
> Aporta mecanismos de seguridad para evitar
consultas y modificacin no autorizadas de datos.

Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL

1. Estructura de referencia de un DBMS


Productos DBMS:
Major DBMS Vendors (Craigs Mullins)
IBM: Database Page
(DB2, Informix, IMS, Netezza, solidDB)
Microsoft SQL Server
Oracle Corporation
(Berkeley DB, Database 11g, Exadata, MySQL, TimesTen)
Sybase (acquired by SAP)

Ing. Jonathan Carrillo - Marzo/Abril 2015


Estructuras de programacin SQL

1. Estructura de referencia de un DBMS


Open Source DBMS Other DBMS Vendors
Actian (Ingres) Alpha Software
Apache Derby Altibase
Drizzle Amazon SimpleDB
EnterpriseDB ANTs Compatibility Server
Firebird CA Mainframe DBMS
MySQL (acquired by Oracle) Datacom (CA Technologies)
Perst (embedded database) dBASE
PostgreSQL Empress (embedded database)
VoltDB eXtremedb (embedded database)
Filemaker
HP NonStop SQL
IDMS - from CA Technologies
InterBase - from Embarcadero
Technologies
InterSystems - Cache'
Ing. Jonathan Carrillo - Marzo/Abril 2015
Estructuras de programacin SQL

1. Estructura de referencia de un DBMS


Other DBMS Vendors
jBase
Model 204 - hierarchic DBMS from Rocket Software
Progress
Pervasive PSQL
PublicPIM
Raima
Software AG (Adabas, Tamino)
SQL-Base (Unify)
SQLite
Teradata
ThinkSQL
U2 - extended relational database system from Rocket Software
XML Database Products

Ing. Jonathan Carrillo - Marzo/Abril 2015


Estructuras de programacin SQL
1. Estructura de referencia de un DBMS

Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
1. Estructura de referencia de un DBMS

Buffer pool (or data cache), Mullins C. S.


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

Ing. Jonathan Carrillo - Marzo/Abril 2015


Estructuras de programacin SQL
1. Estructura de referencia de un DBMS
Diseo Fsico = Estructuras lgicas <-> Estructuras fsicas

GESTION
COMPARTIDA

Ing. Jonathan Carrillo Marzo 2015


Estructuras de programacin SQL
1. Estructura de referencia de un DBMS
Estructura Fsica de un DBMS/Datos Almacenados

Mapping files to database structures, Mullins C. S.


Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo
- Marzo
2015 2015
Estructuras de programacin SQL
1. Estructura de referencia de un DBMS
Estructura Fsica de un DBMS/Datos Almacenados

Oracle stores data logically in


tablespaces and physically in
datafiles associated with the
corresponding tablespace

Datafiles and Tablespaces & Storage Structures - Oracle


Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo
- Marzo
2015 2015
Estructuras de programacin SQL
1. Estructura de referencia de un DBMS
Estructura Fsica de un DBMS/Datos Almacenados

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.

Datafiles and FileGroup SQL Server


Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo
- Marzo
2015 2015
Estructuras de programacin SQL
2. Lenguaje de Consultas Estructuradas

El acceso a los datos y operaciones:


> DRL (Data Retrivel Language) : Select
> DML (Data Manipulation Language): Insert, Update,
Delete
> DDL (Data Definition Language): Create, Alter, Drop,
Rename, Truncate
---------------------------------------------------------------
> DCL (Data Control Language): Grant, Revoke
> TCL (Transactional Control Language) : Commit,
Rollback, Savepoint

Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
2. Lenguaje de Consultas Estructuradas

DRL (Data Retrivel Language) :


> Select

Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
2. Lenguaje de Consultas Estructuradas

DML (Data Manipulation Language):


> Insert

Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
2. Lenguaje de Consultas Estructuradas

DML (Data Manipulation Language):


> Update

Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
2. Lenguaje de Consultas Estructuradas

DML (Data Manipulation Language):


> Delete

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):

> Create, Alter, Drop

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

3. Lenguaje de Control de Datos y Transacciones


El lenguaje de control de datos y transacciones DCL
y TCL respectivamente, posibilitan el diseo y
ejecucin del aseguramiento de la integridad y la
seguridad del sistema.
> DCL (Data Control Language): Grant, Revoke
> 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


Con el manejo de transacciones es posible gestionar
la concurrencia y la recuperacin ante fallos.
En las organizaciones, la Seguridad ya no es un
concepto solamente tcnico sino que tambin toma
en cuenta aspectos organizativos y jurdicos
(normativos).
Estos cambios han modificado por lo tanto el
concepto de Seguridad de la Informacin

Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL

3. Lenguaje de Control de Datos y Transacciones

La Seguridad de la Informacin puede ser un


excelente camino para mejorar muchos aspectos
relacionados con la actividad de una empresa como
su productividad, su competitividad, su capacidad
de supervivencia ante desastres o la posibilidad de
ofrecer garantas a sus clientes a modo de elemento
diferenciador.

Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL
3. Lenguaje de Control de Datos y Transacciones

Con el paso del tiempo el concepto de Seguridad ha


evolucionado, puesto que tambin lo han hecho las
tecnologas, los dispositivos y la informacin que
utilizamos y, todo ello, ha propiciado que la
Seguridad haya necesitado adaptarse a dichos
cambios.
Los enfoques que se le han otorgado a la seguridad
son:
> Seguridad Informtica (obsoleto)
> Seguridad TIC (no vigente)
> Seguridad de la Informacin (actual)
Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL

3. Lenguaje de Control de Datos y Transacciones


> Seguridad de la Informacin
Qu es la Seguridad de la Informacin?
La Seguridad de la Informacin es la proteccin de
tres aspectos o facetas de la informacin, que son
las siguientes:
> Confidencialidad
> Integridad
> Disponibilidad

Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL

3. Lenguaje de Control de Datos y Transacciones


> Seguridad de la Informacin
Confidencialidad: consiste en evitar que personas,
programas o sistemas no autorizados puedan acceder
a ella sin autorizacin.
Integridad: es la caracterstica de la informacin
relativa a su fiabilidad. Su proteccin consiste en que
la informacin no sea alterada o modificada sin
autorizacin.
Disponibilidad: este aspecto hace referencia a que la
informacin est accesible, es decir, disponible para
su utilizacin cuando sea necesaria.

Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL

3. Lenguaje de Control de Datos y Transacciones


> Seguridad de la Informacin
Por tanto, la Seguridad de la Informacin tiene que
establecer las medidas necesarias que permitan
proteger la confidencialidad, la integridad y la
disponibilidad de la informacin.

Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL

3. Lenguaje de Control de Datos y Transacciones

> Amenazas en las Bases de Datos


A un alto nivel, la seguridad de base de datos se
reduce a contestar cuatro preguntas:
> Quin es? (autenticacin)
> Quin puede hacerlo? (autorizacin)
> Quin puede verlo? (encriptacin/cifrado)
> Quin lo hizo? (auditora)

Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo/Abril
- Marzo/Abril
2015 2015
Estructuras de programacin SQL

3. Lenguaje de Control de Datos y Transacciones

> Amenazas en las Bases de Datos


Para proteger las bases de datos contra estos tipos de
amenazas, es habitual implementar cuatro tipos de
medidas de control:
1. Control de acceso tema que aborda este de este curso

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

3. Lenguaje de Control de Datos y Transacciones


> Control de Acceso
Las medidas para restringir el acceso al sistema de
base de datos en su totalidad y se gestiona mediante
la creacin de cuentas de usuario y contraseas para
controlar el proceso de entrada al DBMS.
El Administrador de Base de Datos dispone de una
cuenta de DBA en el DBMS, llamada tambin
cuenta de sistema, de super-usuario o cuentas de
tipo root (similares a las cuentas de administrador
restringidos del sistema operativo)

Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo
- Marzo
2014 2014
Estructuras de programacin SQL

3. Lenguaje de Control de Datos y Transacciones


> Control de Acceso

DBMS and databases logins, Mullins C. S.

Ing.Jonathan
Ing. Jonathan
Carrillo
Carrillo
- Marzo
- Marzo
2014 2014
Estructuras de programacin SQL

3. Lenguaje de Control de Datos y Transacciones


> Control de Acceso
Tipos:
> Control de Acceso: discrecional basado en la
concesin y revocacin de privilegios o DAC
(Discretionary Access Control)
> Control de Acceso: Basado en roles o RBAC
(Role Based Access Control)

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

EJEMPLO: GRANT CREATE TABLE TO User1;


GRANT SELECT ON VENTAS TO User2 WITH GRANT OPTION;
> REVOKE:

EJEMPLO: REVOKE INSERT, DELETE ON EMPLEADO FROM User3

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;

Nota: A4 no puede propagar el privilegio SELECT a otras


cuentas ya que no se le concedi la opcin 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:
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:

CREATE VIEW A3EMPLEADO AS


SELECT Nombre, FechaNac, Direccin
FROM EMPLEADO
WHERE Dno = 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:
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;

Nota: Los privilegios UPDATE o INSERT pueden especificar atributos


en particular que puedan ser actualizados o insertados en una relacin.
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
Del ejercicio, tipos de privilegios como SELECT y
DELETE no se aplican a atributos en concreto ya
que esta funcionalidad se puede controlar fcilmente
mediante la creacin de las vistas adecuadas que
incluyan slo los atributos deseados y la concesin
de los privilegios correspondientes sobre las vistas
Sin embargo, debido a que la actualizacin de las
vistas no es siempre posible, a los privilegios
UPDATE e INSERT se les da la opcin de indicar
qu atributos en particular de una relacin base
pueden ser actualizados.
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
El Control de acceso basado en roles (RBAC, Role
Based Access Control) surgi en muy poco tiempo
en los aos 90 como tecnologa probada para la
gestin y el reforzamiento de la seguridad en
sistemas empresariales a gran escala.
La idea bsica es que los permisos (privilegios)
estn asociados a roles y a los usuarios se les
asignan los roles.
Los roles se pueden crear y eliminar mediante los
comandos CREATE ROLE y DESTROY ROLE o
DROP ROLE (Depende 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
DCL: Data Control Language
> Control de Acceso: Basado en 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
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

2. Se les conceden los privilegios a los roles.


GRANT CREATE TABLE TO TEST:

3. Se crea un usuario
CREATE LOGIN Usuario1
WITH PASSWORD = '12%$3#LAasasT';

CREATE USER Usuario1 FOR LOGIN Usuario1;


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
4. Se les asignan los roles a usuario
GRANT TEST TO Usuario1;

REVOKE y DROP:
REVOKE CREATE TABLE FROM TEST;

DROP ROLE 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

Aislamiento Tiempo Operaciones


Durabilidad
END TRANSACTION

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.

Procesos A y B ejecutndose Procesos C y D ejecutndose


concurrentemente en modo interpolado concurrentemente en modo paralelo

Procesamiento Concurrente Interpolado Procesamiento Paralelo

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

read_item (X); Datos:


X:=X-N;
write_item(X); X=80
tiempo
Y=60 read_item (X);
X:=X+M
M=4
N=5
write_item(X);
read_item(Y);
Al final de la
Y=Y+N;
transaccin
write_item(Y)
X=79 y Y=65
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
Este problema se produce
cuando dos transacciones
tienen operaciones
interpoladas que acceden a
los mismos elementos,
haciendo uso de valores
incorrectos. Suponga que las
transacciones TI y T2 se
envan al mismo tiempo con
los siguientes valores

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)

100 read_item (X);


100
101 X:=X+1; 101
101 write_item(X); 101
read_item (X);
101 100
X:=2*X
202 200
202 write_item(X); 200
100 read_item(Y); 100
200 Y=2*Y; 200
200
write_item(Y) 200
100 read_item(Y); 200 Cumple: X=Y
101 Y=Y+1; 201
101 write_item(Y) 201
Cumple: 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 de la lectura no repetible (lectura irrepetible)
Este problema surge cuando una Restriccin X=Y
transaccin T1 incluye dos
operaciones de lectura de un mismo
elemento y otra transaccin T2 read_item (X);
modifica el elemento entre las dos show_item(X);
lecturas. De esta forma, T1 recibe dos
lecturas diferentes del mismo read_item (X);
elemento. Esto puede ocurrir al X:=X+1
consultar el saldo en un cajero para write_item(X);
saber si se puede retirar una cantidad, read_item (X);
y entre la consulta de saldo y la show_item(X);
retirada del dinero se procesa otra
transaccin que modifica el saldo.
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
> Problema de la lectura no repetible (lectura irrepetible)
read_item write_Item show_item error
X=100
T1
(independiente) T1 T2
Concurrente Concurrente
La
100 transaccin
read_item (X);
100 T1 lee dos
show_item(X); 100
100 valores
diferentes
read_item (X); para
100
X:=X+1 el dato X, en
101
101
write_item(X); una
misma
100 transaccin.
read_item (X); 101
100 101
show_item(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
> Tcnicas de Control de Concurrencia

Bloqueos: - Compartido / Exclusivo


- Protocolo de dos Fases 2PL

Planes: - Planificacin en serie


- Planificacin No serie

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

Una transaccin puede


liberar bloqueos pero no
Una transaccin
puede obtener ninguno
puede obtener
bloqueos pero nuevo.
no puede
liberarlos.

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.

LOCK TABLE mitabla IN ABC MODE [NOWAIT] ;

ABC puede ser:


SHARE (S) Lectura concurrente . Permite otros locks SHARE
EXCLUSIVE (X) No permite ningn otro 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):
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).

El interbloqueo es una situacin en la que dos


transacciones estn esperando para utilizar un
recurso bloqueado.
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):
SQL Server detecta automticamente una situacin
de interbloqueo mediante un mtodo denominado
deteccin de cadenas circulares de bloqueos. Cuando
un interbloqueo ocurre, SQL Server termina el
proceso que haya generado la cadena circular de
bloqueos.
De igual manera, Oracle detecta automticamente
los interbloqueos y decide en dicho caso liberar una
transaccin para autorizar la introduccin del
comando ROLL- BACK.
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: Una planificacin p de n transacciones
T1,..,Tn es un ordenamiento global de las
operaciones de cada una. Posibilitan la recuperacin
cuando se produce 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
> 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.

Sin embargo, todas las transacciones deben tener una


sentencia explcita de final que puede ser COMMIT
o ROLLBACK.

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