conceptos avanzados de bases de datos

Upload: frank-jairo-castillo-padilla

Post on 21-Feb-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/24/2019 Conceptos Avanzados de Bases de Datos

    1/14

    Conceptos Avanzados de Bases de Datos

    Presentado por:

    Sebastian Tauta Rodriguez

    Carlos Wilches Rivera

    Josthman Granados Vargas

    Schneider Sarria Jimenez

    SENA - Anlisis y Desarrollo de Sistemas de InformacinFicha 576038

    2014

  • 7/24/2019 Conceptos Avanzados de Bases de Datos

    2/14

    Conceptos Avanzados de Bases de Datos

    Presentado por:

    Sebastian Tauta Rodriguez

    Carlos Wilches Rivera

    Josthman Granados Vargas

    Schneider Sarria Jimenez

    Presentado a:

    Ing. Frank Castillo

    SENA - Anlisis y Desarrollo de Sistemas de InformacinFicha 576038

    2014

  • 7/24/2019 Conceptos Avanzados de Bases de Datos

    3/14

    TIPOS DE BLOQUEOS EN BASES DE DATOS

    El mecanismo de bloqueo en la base de datos por defecto es un bloqueo a nivel de

    fila. Las diferentes transacciones pueden actualizar diferentes filas dentro de la

    misma tabla sin interferirse unas a otras. A pesar de que el modo por defecto debloque es a nivel fila, Oracle 10 permite bloqueos a un nivel superior si son

    necesarios.

    EXCLUSIVE MODE

    Cualquier transaccin que intenta actualizar una fila en la tabla bloqueada debe

    esperar encolada, hasta que la transaccin que ha bloqueado la tabla termine. Es

    la forma ms estricta de bloqueo.

    SQL> LOCK TABLEhr.employees IN EXCLUSIVE MODE;

    ROW SHARE Permite el acceso concurrente a la tabla bloqueada, peroprohbe a las sesiones hacer un bloqueo en EXCLUSIVE MODE.

    ROW EXCLUSIVE Lo mismo que ROW SHARE, pero tambin prohbe hacer unbloque ROW SHARE, Este es el tipo de bloqueo que se obtiene automticamente

    cuando se hace un update, insert o delete.

    SHARED

    Permite concurrentes pero prohbe updates a una tabla bloqueada. Este tipo de

    bloque se produce automticamente cuando se crea un ndice o una tabla. Prohbe

    a otras sesiones bloquear la tabla en modo SHARE o actualizar registros.

    SHARE ROW EXCLUSIVE:

    Permite consultar toda la tabla y permite a los otros consultar registros dentro de la

    tabla, preo prohbe a otros usuarios bloquear la tabla en modo SHARE o realizar

    actualizaciones de registros.

  • 7/24/2019 Conceptos Avanzados de Bases de Datos

    4/14

    EXCLUSIVE

    Permite consultar la tabla bloqueada, pero prohbe cualquier tipo de actividad en

    ella. Este tipo de bloqueos se utiliza para el borrar una tabla (drop).

    Como cualquier peticin de bloqueo, los bloqueos manuales esperan encolados

    hasta que todas las sesiones previamente tenan bloqueos o que los haban

    solicitado, los deshagan. El comando LOCK acepta un argumento NOWAIT que

    permite regresar el control inmediatamente, si la tabla est bloqueada por otra

    sesin.

    SQL> LOCK TABLE hr.employees IN SHARE MODE NOWAIT;

    LOCK TABLE hr.employees IN SHARE MODE NOWAIT

    Bloqueos en sentencias DML

    Las sentencias DML, realizan dos tipos de bloqueos:

    Un bloqueo rew-exclusive en cada fila o filas que queremos actualizar, Habr un

    solo bloqueo row-exclusive independientemente del nmero de filas que queramos

    cambiar.

    Y un bloqueo shared a nivel tabla en la tabla que vamos a actualizar. Esto para

    prevenir que otra sesin bloquee la tabla completa, (puede darse el caso en un drop

    y en trncate), mientras se realiza el cambio.

    BLOQUEOS EN SENTENCIAS DDL

    Para ejecutar una sentencia DDL requiere un bloqueo exclusivo en el objeto a

    modificar. Este no se puede obtener hasta que todas las transacciones DML contra

    la tabla hayan finalizado, liberando sus bloqueos exclusivos y shared. El bloqueo

    exclusivo necesario para cualquier sentencia DDL se solicita automticamente, pero

    si no se puede obtener, normalmente porque otra sesin tenga bloqueada la tablatermina inmediatamente con error.

  • 7/24/2019 Conceptos Avanzados de Bases de Datos

    5/14

    BLOQUEOS COMPARTIDOS

    Los bloqueos compartidos (S) permiten que varias transacciones simultneas lean

    (SELECT) un recurso en situaciones de control de simultaneidad pesimista. Para

    obtener ms informacin, vea Tipos de control de simultaneidad. Ninguna otratransaccin podr modificar los datos mientras el bloqueo compartido (S) exista en

    el recurso. Los bloqueos compartidos (S) en un recurso se liberan tan pronto como

    finaliza la operacin de lectura, a menos que se haya establecido el nivel de

    aislamiento de la transaccin como REPEATABLE READ o ms alto, o bien se

    utilice una sugerencia de bloqueo para mantener los bloqueos compartidos (S)

    durante la transaccin.

    BLOQUEOS DE ACTUALIZACIN

    Los bloqueos de actualizacin (U) evitan una forma comn de interbloqueo. En una

    transaccin de lectura repetible o serializable, la transaccin lee los datos, adquiere

    un bloqueo compartido (S) en el recurso (pgina o fila) y, a continuacin, modifica

    los datos, lo que requiere una conversin del bloqueo en un bloqueo exclusivo (X).

    Si dos transacciones adquieren bloqueos compartidos en un recurso y, a

    continuacin, intentan actualizar los datos simultneamente, una de ellas intenta

    convertir el bloqueo en un bloqueo exclusivo (X). La conversin de bloqueo

    compartido en exclusivo debe esperar, ya que el bloqueo exclusivo de una

    transaccin no es compatible con el bloqueo compartido de la otra. Por tanto, seproduce una espera de bloqueos. La segunda transaccin intenta adquirir un

    bloqueo exclusivo (X) para realizar su actualizacin. Debido a que ambas

    transacciones intentan convertir los bloqueos en exclusivos (X) y cada una espera

    a que la otra libere su bloqueo de modo compartido, se produce un interbloqueo.

    Para evitar este posible problema de interbloqueo, se utilizan los bloqueos de

    actualizacin (U). Dos transacciones no pueden obtener simultneamente un

    bloqueo de actualizacin (U) para un recurso. Si una transaccin modifica un

    recurso, el bloqueo de actualizacin (U) se convierte en un bloqueo exclusivo (X).

    BLOQUEOS EXCLUSIVOS

    Los bloqueos exclusivos (X) evitan que transacciones simultneas tengan acceso a

    un recurso. Al utilizar un bloqueo exclusivo (X), el resto de las transacciones no

    http://void%280%29/http://void%280%29/http://void%280%29/http://void%280%29/http://void%280%29/http://void%280%29/
  • 7/24/2019 Conceptos Avanzados de Bases de Datos

    6/14

    pueden modificar los datos; las operaciones de lectura slo se pueden realizar si se

    utiliza la sugerencia NOLOCK o el nivel de aislamiento de lectura no confirmada.

    Las instrucciones para modificar datos, como INSERT, UPDATE y DELETE

    combinan las operaciones de modificacin con las de lectura. En primer lugar, la

    instruccin lleva a cabo operaciones de lectura para adquirir los datos antes de

    proceder a ejecutar las operaciones de modificacin necesarias. Por tanto, las

    instrucciones de modificacin de datos suelen solicitar bloqueos compartidos y

    exclusivos. Por ejemplo, una instruccin UPDATE puede modificar las filas de una

    tabla a partir de una combinacin con otra tabla. En este caso, la instruccin

    UPDATE solicita bloqueos compartidos para la filas ledas en la tabla de

    combinacin, adems de bloqueos exclusivos para las filas actualizadas.

    BLOQUEOS CON INTENCIN

    Motor de base de datos utiliza bloqueos con intencin para proteger la aplicacin de

    un bloqueo compartido (S) o exclusivo (X) en un recurso inferior en la jerarqua de

    bloqueos. Los bloqueos con intencin se denominan as porque se adquieren antes

    que los bloqueos de los niveles inferiores y, por lo tanto, sealan la intencin de

    aplicar bloqueos en un nivel inferior.

    Los bloqueos con intencin se utilizan con dos fines:

    Para evitar que otras transacciones modifiquen el recurso de nivel superior de forma

    que invaliden el bloqueo del nivel inferior.

    Para mejorar la eficacia de Motor de base de datos para detectar conflictos de

    bloqueo en el nivel superior de granularidad.

    Por ejemplo, un bloqueo con intencin compartida para el nivel de tabla se solicita

    antes que los bloqueos compartidos (S) para las pginas o filas de la tabla.

    Establecer un bloqueo con intencin en una tabla evita que otra transaccin

    adquiera un bloqueo exclusivo (X) para la tabla que contiene esa pgina. Los

    bloqueos con intencin mejoran el rendimiento, porque Motor de base de datos

    examina los bloqueos con intencin slo en el nivel de tabla para determinar si una

    transaccin puede adquirir un bloqueo de dicha tabla de forma segura. Esto elimina

    la necesidad de examinar cada bloqueo de fila o de pgina de la tabla paradeterminar si una transaccin puede bloquear toda la tabla.

    http://void%280%29/http://void%280%29/
  • 7/24/2019 Conceptos Avanzados de Bases de Datos

    7/14

    BLOQUEOS DE ESQUEMA

    Motor de base de datos utiliza bloqueos de modificacin del esquema (Sch-M)

    cuando se realiza una operacin de lenguaje de definicin de datos (DDL) en tablas

    como, por ejemplo, agregar una columna o quitar una tabla. Mientras se conserva,el bloqueo Sch-M evita el acceso simultneo a la tabla. Esto significa que el bloqueo

    Sch-M bloquea todas las operaciones externas hasta que el bloqueo se libera.

    Algunas operaciones del lenguaje de manipulacin de datos (DML), como el

    truncamiento de tablas, utilizan los bloqueos Sch-M para impedir el acceso a las

    tablas afectadas por operaciones simultneas.

    Motor de base de datos usa bloqueos de estabilidad del esquema (Sch-S) al

    compilar y ejecutar consultas. Los bloqueos Sch-S no impiden los bloqueos de

    transacciones, incluidos los bloqueos exclusivos (X). Por tanto, otras transacciones,

    incluidas las que tienen bloqueos X de una tabla, pueden seguir ejecutndosemientras se compila una consulta. No obstante, en la tabla no se pueden realizar

    operaciones DDL simultneas ni operaciones DML simultneas que adquieren

    bloqueos Sch-M.

    BLOQUEOS DE ACTUALIZACIN MASIVA

    Motor de base de datos utiliza bloqueos de actualizacin masiva (BU) cuando se

    copian datos en una tabla de forma masiva, y se especifica lasugerencia TABLOCK o se establece la opcin de tabla table lock on bulk

    load con sp_tableoption. Los bloqueos de actualizacin masiva (BU) permiten que

    varios subprocesos copien datos de forma masiva y simultnea en la misma tabla,

    pero impiden que otros procesos que no estn copiando datos de forma masiva

    tengan acceso a la tabla.

    BLOQUEOS DE INTERVALO DE CLAVES

    Los bloqueos de intervalo de claves protegen un intervalo de filas incluidas

    implcitamente en un conjunto de registros que se leen mediante una instruccin

    Transact-SQL mientras se utiliza el nivel de aislamiento de transacciones

    serializables. El bloqueo de intervalo de claves evita lecturas ficticias. Al proteger

    los intervalos de claves entre filas, tambin se evitan inserciones o eliminaciones

    ficticias en los conjuntos de registros a los que obtienen acceso las transacciones.

    http://void%280%29/http://void%280%29/http://void%280%29/http://void%280%29/http://void%280%29/http://void%280%29/
  • 7/24/2019 Conceptos Avanzados de Bases de Datos

    8/14

    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 queOracle causar una excepcin cuando una fila bloqueada es seleccionada. Esto

    puede ser til si no se quiere bloquear un usuario para un tiempo indefinido.

    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.

  • 7/24/2019 Conceptos Avanzados de Bases de Datos

    9/14

  • 7/24/2019 Conceptos Avanzados de Bases de Datos

    10/14

    PROCEDIMIENTOS ALMACENADOS

    Un procedimiento almacenado es un programa (o procedimiento) almacenado

    fsicamente en unabase de datos.Su implementacin vara de ungestor de bases

    de datos a otro.

    La ventaja de un procedimiento almacenado es que al ser ejecutado, en respuesta

    a una peticin de usuario, es ejecutado directamente en el motor de bases de datos,

    el cual usualmente corre en un servidor separado. Como tal, posee acceso directo

    a los datos que necesita manipular y slo necesita enviar sus resultados de regreso

    al usuario, deshacindose de la sobrecarga resultante de comunicar grandes

    cantidades de datos salientes y entrantes.

    USOS TPICOS PARA PROCEDIMIENTOS ALMACENADOS

    Validacin de datos siendo integrados a la estructura de base de datos (los

    procedimientos almacenados utilizados para este propsito a menudo son llamados

    disparadores; (triggers), o encapsular un proceso grande y complejo. El ltimo

    ejemplo generalmente ejecutar ms rpido como un procedimiento almacenado

    que de haber sido implementado como, por ejemplo, un programa corriendo en el

    sistema cliente y comunicndose con la base de datos mediante el envo de

    consultasSQL y recibiendo sus resultados.

    USO

    Se aplican en la validacin de datos, integrados dentro de la estructura del banco

    de datos. Los procedimientos almacenados usados con tal propsito se llaman

    comnmentedisparadores, o triggers.

    PROCEDIMIENTOS ALMACENADOS EN MYSQL

    Los procedimientos almacenados requieren la tabla Proc en la base de

    datosMySQL

    http://es.wikipedia.org/wiki/Programa_(computaci%C3%B3n)http://es.wikipedia.org/wiki/Subrutinahttp://es.wikipedia.org/wiki/Base_de_datoshttp://es.wikipedia.org/wiki/DBMShttp://es.wikipedia.org/wiki/DBMShttp://es.wikipedia.org/wiki/SQLhttp://es.wikipedia.org/wiki/Disparador_(base_de_datos)http://es.wikipedia.org/wiki/Disparador_(base_de_datos)http://es.wikipedia.org/wiki/SQLhttp://es.wikipedia.org/wiki/DBMShttp://es.wikipedia.org/wiki/DBMShttp://es.wikipedia.org/wiki/Base_de_datoshttp://es.wikipedia.org/wiki/Subrutinahttp://es.wikipedia.org/wiki/Programa_(computaci%C3%B3n)
  • 7/24/2019 Conceptos Avanzados de Bases de Datos

    11/14

    TRIGGERS (DISPARADORES) BASES DE DATOS

    Es unprocedimiento que se ejecuta cuando se cumple una condicin establecida al

    realizar una operacin. Dependiendo de la base de datos, los triggers pueden ser

    de insercin (INSERT), actualizacin (UPDATE) o borrado (DELETE). Algunas

    bases de datos pueden ejecutar triggers al crear, borrar o editar usuarios, tablas,

    bases de datos u otros objetos.

    CARACTERSTICAS

    Cada trigger implementa una interfaz concreta, as pues para gestionar un trigger

    sobre un objeto que implemente la interfaz Device dispone de una interfaz

    DeviceTrigger la cual define los siguientes mtodos.

    Public void run (Device device)

    Public void error (Device device)

    http://es.wikipedia.org/wiki/Subrutinahttp://es.wikipedia.org/wiki/Subrutina
  • 7/24/2019 Conceptos Avanzados de Bases de Datos

    12/14

    Crear un Trigger para insertar un pedido de algn producto cuando la cantidad de

    ste, en nuestro almacn, sea inferior a un valor dado

    DISPARADORES EN MYSQL

    El estndar SQL: 2003 requiere que los disparadores den a los programadores

    acceso a las variables de un registro utilizando una sintaxis como REFERENCING

    NEW AS n. Por ejemplo, si un disparador est monitoreando los cambios en la

    columna salario.

    http://es.wikipedia.org/wiki/SQL:2003http://es.wikipedia.org/wiki/SQL:2003
  • 7/24/2019 Conceptos Avanzados de Bases de Datos

    13/14

    Como en MySQL las sentencias se ejecutan luego de escribir el signo punto y coma

    (;), cabe destacar que para crear un disparador en MySQL, antes se escribe la

    sentencia DELIMITER seguida de un carcter tal como |, la cual asigna la funcin

    del punto y coma (;) a otro carcter permitiendo que el disparador sea escrito usando

    los punto y comas sin que se ejecute mientras se escribe; despus de escrito el

    disparador se escribe nuevamente la sentencia DELIMITER ; para asignar al puntoy coma su funcin habitual.

    DISPARADORES EN POSTGRESQL

  • 7/24/2019 Conceptos Avanzados de Bases de Datos

    14/14

    Desde 1997 PostgreSQL soporta el uso de disparadores, estos pueden anexarse a

    las tablas pero no a las vistas; aunque a las vistas se les pueden crear reglas.

    Al igual que en MySQL los disparadores de PostgreSQL se pueden activar luego de

    sentencias INSERT, UPDATE o DELETE

    Cuando hay varios disparadores, se activan en orden alfabtico.

    Adems de permitir el uso de funciones en el lenguaje nativo de PostgreSQL,

    PL/PgSQL, los disparadores tambin permiten invocar funciones escritas en otros

    lenguajes como PL/Perl.

    En Postgres un disparador ejecuta una funcin la cual contiene el cdigo de lo que

    se requiere, esto difiere del mtodo expuesto anteriormente para MySQL que

    escribe el cdigo a ejecutarse dentro del mismo disparador.