Construcción de base de datos Asegurabilidad de la información
Enviado por Jerry • 28 de Agosto de 2018 • 1.815 Palabras (8 Páginas) • 356 Visitas
...
3
MANEJO DE CONCURRENCIA
Definición de concurrencia
La concurrencia es un fenómeno que se presenta en varios contextos. Uno de ellos es la multiprogramación ya que el tiempo del procesador es compartido dinámicamente por varios procesos. Otro caso son las aplicaciones estructuradas, donde la programación estructurada se implementa como un conjunto de procesos concurrentes. Y por último se tiene que la misma estructuración recién mencionada es utilizada en el diseño de los sistemas operativos, los cuales se implementan como un conjunto de procesos. El termino concurrencia se refiere al hecho de que los DBMS(SISTEMAS DE ADMINISTRACION DE BD)permiten que muchas transacciones puedan accesar a una misma base de datos a la vez.. En un sistema de estos se necesitan algún tipo de mecanismos de control de concurrencia para asegurar que las transacciones concurrentes no interfieran entre sí. En sistemas multiusuario, es necesario un mecanismo para controlar la concurrencia. Se pueden producir inconsistencias importantes derivadas del acceso concurrente, como por ejemplo, el problema de la operación perdida. La concurrencia se da cuando dos transacciones están interconectadas, lo que es común en un entorno multiusuario. Así pues en un entorno de multiprogramación es posible ejecutar varias transacciones de manera concurrente.
Técnicas de bloqueo
El bloqueo pesimista es la técnica por la cual los datos son bloqueados previos a su modificación para evitar que nadie los modifique. Una vez que los datos a actualizar han sido bloqueados la aplicación puede acometer los cambios, con commit o rollback, en ese caso el bloqueo es automáticamente eliminado. Si alguien intenta adquirir un bloqueo de los mismos datos durante el proceso será obligado a esperar hasta que la primera transacción finalice.
Esta técnica es muy simple pero tiene dos problemas fundamentales:
Ø Bloqueo: un usuario selecciona un registro para actualizar, y entonces abandona la operación. Todos los usuarios que necesitan actualizar ese registro tienen que esperar hasta que se complete la transacción, o hasta que se mate y finalice el bloqueo.
Ø Deadlock: Si los usuarios A y B están 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 quedarían en espera indefinidamente, dando lugar a un Deadlock.
En general los Sistemas RDBMS ofrecen cláusulas para este bloqueo. Oracle soporta bloqueo pesimista a nivel de fila. La sentencia estándar para el bloqueo es SELECT FOR 4
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 además tiene el bloqueo SELECT FOR UPDATE NO WAIT, de modo que Oracle causará una excepción cuando una fila bloqueada es seleccionada. Esto puede ser útil si no se quiere bloquear un usuario para un tiempo indefinido.
Bloqueo optimista con control de concurrencia
El bloqueo optimista no bloquea los registros que se van a actualizar y asume que los datos que están siendo actualizados no van a cambiar desde que se han leído. 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 están siendo escritos son consistentes con los leídos en primera instancia, es decir que ninguna otra transacción ha actualizado los datos después 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 más común es el uso de un timestamp modificado. Este mecanismo sólo ofrece una resolución de un segundo.
Seriabilidad con el bloqueo en dos fases.
Es un protocolo que usa bloqueos y asegura la seriabilidad.
- El uso de bloqueos únicamente no la garantiza. La transacción puede estar mal diseñada a nivel lógico, etc.
- Cada transacción puede hacer peticiones de bloqueos y desbloqueos en dos fases:
- Fase de crecimiento: Una transacción puede obtener un bloqueo, pero no liberar ninguno. - Fase de encogimiento: Una transacción puede liberar bloqueos, pero no adquirirlos.
- Se trata de pedir todos los bloqueos antes de empezar a soltarlos.
- Esta técnica logra la serializarían, pero no evita interbloqueos (ej: 2 transacciones piden bloqueos cruzados). - Para evitar interbloqueos pueden usarse otras técnicas (SO), o bien codificar las transacciones cuidadosamente...
5
Ejemplos
[pic 2]
6
RESPALDO DE DATOS:
-Tipos de respaldo:
INCREMENTALES:
Se utiliza para respaldar todos los archivos que han cambiado desde el último respaldo Normal o Incremental. Cuando cada archivo es respaldado el atributo de archivo se deshabilita. Como solo los archivos que han cambiado se respaldan, este tipo de respaldo toma el menor tiempo de todos para llevarse a cabo. Sin embargo toma la mayor cantidad de tiempo en el momento de restaurar porque el ultimo respaldo normal y los subsecuentes respaldos incrementales deben ser restaurados para tener los datos lo más actualizados posible.
Generalmente se usa entre respaldos normales. Su principal ventaja es el tiempo reducido que lleva hacerlo así como la reducida cantidad de cintas involucradas. Su desventaja son las operaciones más largas y más complejas de restauración más aún si hay periodos largos entres respaldos normales.
COMPLEMENTOS:
Se realizan
...