Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PRESENTADO POR:
DANIEL SANTIAGO GUZMAN ROMERO
MARLON STEVEN TORRES PULIDO
ORLANDO SOLANO
JUAN SEBASTIAN BARRERA SIABATO
MIGUEL ANGEL LIEVANO
PRESENTADO A:
FRANK CASTILLO PADILLA
ADSI
TIPOS DE BLOQUEO EN BD
BLOQUEO PESIMISTA
El bloqueo pesimista es la tcnica por la cual los datos son bloqueados previos a
su modificacin para evitar que nadie los modifique. Una vez que los datos a
actualizar han sido bloqueados la aplicacin puede acometer los cambios, con
commit o rollback, en ese caso el bloqueo es automticamente eliminado. Si alguien
intenta adquirir un bloqueo de los mismos datos durante el proceso ser obligado a
esperar hasta que la primera transaccin finalice.
Esta tcnica es muy simple pero tiene dos problemas fundamentales:
Bloqueo: un usuario selecciona un registro para actualizar, y entonces abandona
la operacin. Todos los usuarios que necesitan actualizar ese registro tienen que
esperar hasta que se complete la transaccin, o hasta que se mate y finalice el
bloqueo.
Deadlock: Si los usuarios A y B estn ambos actualizando la base de datos a la
vez y A bloqueo un registro e intenta adquirir un bloqueo mantenido por B, que a su
vez est esperando a adquirir un bloqueo mantenido por A ambas transacciones
quedaran en espera indefinidamente, dando lugar a un Deadlock.
En general los Sistemas RDBMS ofrecen clusulas para este bloqueo. Oracle
soporta bloqueo pesimista a nivel de fila. La sentencia estndar para el bloqueo es
SELECT FOR UPDATE que hace que todas las sentencias UPDATE o SELECT
FOR UPDATE de otras conexiones se bloqueen hasta que un commit, rollback o
deadlock se produzca. Se produce un deadlock cuando un usuario que tiene la fila
A bloqueada intenta bloquear la fila B, mientras que otro usuario tiene la fila B
bloqueada e intenta bloquear la A. En este caso Oracle deshabilita uno de los
bloqueos del usuario permitiendo al otro usuario bloquear ambas filas.
Oracle adems tiene el bloqueo SELECT FOR UPDATE NO WAIT, de modo que
Oracle causar una excepcin cuando una fila bloqueada es seleccionada. Esto
puede ser til si no se quiere bloquear un usuario para un tiempo indefinido.
BLOQUEO OPTIMISTA
El bloqueo optimista no bloquea los registros que se van a actualizar y asume que
los datos que estn siendo actualizados no van a cambiar desde que se han ledo.
Puesto que en nuestro caso no se puede asumir esto es necesario un control de
la concurrencia, de esta manera el bloqueo optimista con control de
concurrencia asegura que los datos que estn siendo escritos son consistentes
con los ledos en primera instancia, es decir que ninguna otra transaccin ha
actualizado los datos despus de la lectura. El procedimiento para asegurar la
consistencia es muy sencillo: se leer un valor junto al registro, se actualizar ese
valor a la BD cuando el registro es actualizado.
Existen varios mecanismos asegurar el control de la concurrencia, el ms comn es
el uso de un timestamp modificado. Este mecanismo slo ofrece una resolucin de
un segundo.
Commit/Rollback: Si no hay conflicto, hacer que todos los cambios surtan efecto. Si
hay un conflicto, resolverlo, tpicamente abortando la transaccin, aunque otros
sistemas de resolucin son posibles. Se debe tener cuidado para evitar un
bug TOCTTOU, especialmente si esta fase y la anterior no se realizan como una
nica operacin atmica.
Tipo
Bloqueo pesimista
V Descripcin
PROCEDIMIENTO ALMACENADO
Llamado de procedimiento () o
Ejecutar procedimiento ()
IMPLEMENTACION
La implementacin exacta y correcta de los procedimientos almacenados vara de
un sistema de base de datos a otro. La mayora de los proveedores de bases de
datos principales que apoyan de alguna forma. En funcin del sistema de base de
datos, procedimientos almacenados se pueden implementar en una variedad
de lenguajes de programacin, por ejemplo, SQL, Java, C o C ++.
Los procedimientos almacenados escritos en lenguajes de programacin no son de
SQL pueden o no ejecutar sentencias SQL mismos.
TRIGGERS
Triggers= (disparadores, gatilladores, gatillos)
CREATE
[DEFINER = {usuario | CURRENT_USER}]
GATILLO trigger_name
momento_disp evento_disp
EN nombre_tabla FOR EACH ROW
Cuerpo_Del_Trigger
momento_disp: {ANTES | DESPUS}
evento_disp: {INSERT | ACTUALIZACIN | DELETE}
Row Triggers (o Disparadores de fila): son aquellas que se ejecutaran cada vez
que se llama al disparador desde la tabla asociada al trigger.
row level triggers se pueden identificar por FOR EACH ROW se declara en el
gatillo a nivel de fila declaracin gatillo se dispara internamente cuando cualquier
operacin DML ocurre en cualquier objeto como mesa que se activar para cada
fila. Ejemplo: si se produjo cualquier instruccin delete por 30 registros se
disparar durante 30 veces.
Statement level triggers sin declaracin de FOR EACH ROW se dispara para
cada terminacin. Ejemplo: la declaracin delete est producido por 30 registros
que se dispararn despus de que los 30 registros se han realizado
TRANSACCION
Transaccin:
Una transaccin en un Sistema de Gestin de Bases de Datos (SGBD), es un
conjunto de rdenes que se ejecutan formando una unidad de trabajo, es decir, en
forma indivisible o atmica.
COMMIT TRANSACTION
Sintaxis
COMMIT [ { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable ]
] [ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ]
[;]
transaction_name
Motor de base de datos de SQL Server lo omite. transaction_name especifica un
nombre de transaccin asignado a una instruccin BEGIN TRANSACTION anterior.
transaction_name debe cumplir con las reglas para identificadores, pero no puede
superar los 32 caracteres. transaction_name se puede usar como una ayuda de
legibilidad, ya que indica a los programadores a qu instruccin BEGIN
TRANSACTION anidada est asociada la instruccin COMMIT TRANSACTION.
@tran_name_variable
Se trata del nombre de una variable definida por el usuario que contiene un nombre
de transaccin vlido. La variable debe declararse con un tipo de datos char,
varchar, nchar o nvarchar. Si se pasan ms de 32 caracteres a la variable, solo se
usarn 32 caracteres; el resto de los caracteres se truncarn.
DELAYED_DURABILITY
La opcin que solicita esta transaccin se confirma con la durabilidad diferida. Se
omitir la solicitud si la base de datos se ha modificado con
DELAYED_DURABILITY = DISABLED o DELAYED_DURABILITY = FORCED. Vea
el tema Controlar la durabilidad de las transacciones para obtener ms informacin.
ROLLBACK TRANSACTION
Revierte una transaccin explcita o implcita hasta el inicio de la transaccin o hasta
un punto
de retorno
el
nombre
asignado
la
transaccin
en
BEGIN
TRANSACTION.
transaction_name debe ajustarse a las reglas para los identificadores, pero solo se
usan los 32 primeros caracteres del nombre de la transaccin. Cuando se anidan
transacciones, transaction_name debe ser el nombre de la instruccin BEGIN
TRANSACTION ms externa. transaction_name siempre distingue maysculas de
minsculas, incluso cuando la instancia de SQL Server no distingue maysculas de
minsculas.
@ tran_name_variable
tambin personas e, incluso, conceptos e ideas abstractas. Las entidades poseen atributos y
mantienen relaciones entre ellas.
Existe un componente llamado RDS (Remote Data Service) que ofrece el ambiente de Acceso
Universal a Datos, ya sea desde Internet o la Word Wide Web, creando un marco de trabajo que
permite una interaccin fcil y eficiente con los datos fuente OLE DB tanto en Intranets
corporativas o en Internet. RDS ofrece la ventaja de obtener por el lado del cliente resultados de
datos, actualizacin y soporte para controles ADO y ofrece el modelo de programacin OLE
DB/ADO para manipular datos de las aplicaciones del cliente.
JDBC
JDBC o Java Data Base Connectivity, creado por la empresa Sun, es la API estndar de acceso
a bases de datos con Java. Sun opt por crear una nueva API en lugar de utilizar ODBC,
porque esta ltima presentaba algunos problemas desde ciertas aplicaciones Java. ODBC es
una interfaz escrita en lenguaje C, que al no ser un lenguaje portable, haca que las
aplicaciones Java tambin perdiesen la portabilidad. Adems, ODBC ha de instalarse
manualmente en cada mquina, mientras que los controladores (drivers) JDBC que estn
escritos en Java son automticamente instalables y portables. El nivel de abstraccin al que
trabaja JDBC es ms alto que el de ODBC y, de esta forma, se pueden crear libreras de ms
alto nivel,
Para trabajar con JDBC es necesario tener controladores que permitan acceder a las distintas
bases de datos. Sin embargo, ODBC sigue siendo hoy en da la API ms popular para acceso a
Bases de Datos, por lo que: Sun se ha visto obligada a disear un puente que permite utilizar la
API de JDBC en combinacin con controladores ODBC.
tecnologas ms importantes en este sentido: ActiveX Data Objects (ADO) y Java Data Base
Connectivity (JDBC).
ADO
JDBC
Por ltimo, hay que destacar tambin una tecnologa llamada Web DB utilizada por algunos
servidores de bases de datos, con la cual, un usuario puede solicitar la informacin que requiera
y visualizarla a modo de respuesta en una pgina Web, que ser creada y elaborada por el
propio servidor de base de datos.
El proceso que comprende desde la solicitud a la visualizacin de la informacin, puede ser
representado de la siguiente manera:
CONTROLADORES ODBC
Open DataBase Connectivity (ODBC) es un estndar de acceso a las bases de
datos desarrollado por SQL Access Group en 1992. El objetivo de ODBC es hacer
posible el acceder a cualquier dato desde cualquier aplicacin, sin importar
qu sistema de gestin de bases de datos (DBMS) almacene los datos. ODBC logra
esto al insertar una capa intermedia (CLI) denominada nivel de Interfaz de Cliente
SQL, entre la aplicacin y el DBMS. El propsito de esta capa es traducir las
consultas de datos de la aplicacin en comandos que el DBMS entienda. Para que
esto funcione tanto la aplicacin como el DBMS deben ser compatibles con ODBC,
esto es que la aplicacin debe ser capaz de producir comandos ODBC y el DBMS
debe ser capaz de responder a ellos. Desde la versin 2.0 el estndar
soporta SAG y SQL.
El software funciona de dos modos, con un software manejador en el cliente, o una
filosofa cliente-servidor. En el primer modo, el driver interpreta las conexiones y
llamadas SQL y las traduce desde el API ODBC hacia el DBMS. En el segundo
modo para conectarse a la base de datos se crea una DSN dentro del ODBC que
define los parmetros, ruta y caractersticas de la conexin segn los datos que
solicite el creador o fabricante.
Java Database Connectivity (JDBC) es un derivado inspirado en el mismo,
una interfaz de programacin de aplicaciones que permite la ejecucin de
operaciones sobre bases de datos desde el lenguaje de programacin
Java independientemente del sistema operativo donde se ejecute o de la base de
datos a la cual se accede utilizando el dialecto SQL del modelo de base de datos
que se utilice.