EJECUCIÓN DE TRANSACCIONES DISTRIBUIDAS
Para esto, el lenguaje de consultas de datos SQL (Structured Query Language), provee los mecanismos para especificar que un conjunto de acciones deben construir una transacción:
BEGIN TRAN: Especifica que va a empezar una transacción.
COMMIT TRAN: Le indica al motor que puede considerar la transacción completada con éxito.
ROLLBACK TRAN: Indica que se ha alcanzado un fallo y que debe restablecer la base al punto de integridad.
Es un sistema ideal, las transacciones deberían garantizar todas las propiedades ACID; en la práctica, a veces alguna de estas propiedades se simplifican o debilitan con vista a obtener un mejor rendimiento.
Transacciones: Propiedades ACID.
Las propiedades ACID para las transacción transacciones locales, debido a la dificultad de controlar los fallos para las transacciones globales que actúan en varios Sitios.
Atomicidad (Atomicity).
Consistencia (Consistency)
Aislamiento (Isolation
Durabilidad (Durability)
Atomicidad: Se refiere al hecho de que una transacción se trata como una unidad de operación Por lo tanto , a todas las acciones de la transacción se realizan o ninguna de ellas se lleva a cabo .
Consistencia: La consistencia de una transacción es simplemente su correctitud. Las transacciones no violan, las restricciones de integridad de una base de datos.
Aislamiento: Una transacción en ejecución no puede revelar sus resultados en otras transacciones concurrentes antes de un COMMIT.
Durabilidad: Es la propiedad de las transacciones que asegura que una vez que una transacción hace su COMMIT, sus resultados son permanentes y no pueden ser borrados de la base de datos.
El acceso a los elemento de datos suele implicar el uso de transacciones. Hay dos tipos de transacciones que se pueden dar en una BDD:
1- LOCALES: Tienen acceso a los datos y los actualizan sólo en una BD local.
2-GLOBALES: Tienen acceso a los datos y los actualizan en varias BD locales.
Cada sitio tiene su propio gestor local de transacciones, que se encarga de garantizar las propiedades ACID localmente. Las transacciones globales se gestionan conjuntamente contando con la participación de los sitos involucrados.
Podemos imaginar que cada sitio encargado de gestionar transacciones está formado de dos partes:
1- Gestor de transacciones: Administra la ejecución de las transacciones en un sitio local. Cada una de estas puede ser una transacción local o parte de una global.
2- Coordinador de transacciones: Coordina la ejecución de las transacciones iniciadas en un sitio, sean del tipo que sean.
Los métodos de bloqueo empleados por los sistemas distribuidos varían en el modo en el que el gestor de bloqueos trata los datos replicados. Se presentan dos posibles enfoques:
Único: Hay un Único gestor que está en una máquina. Las transacciones envían solicitudes de bloqueo a esta máquina que determina cuándo se puede conceder el bloqueo.
VENTAJAS:
Es un sistema muy sencillo de implementar.
Se trata de forma sencilla los interbloqueos al gestionarlos una sola máquina.
INCONVENIENTES:
Se puede formar cuellos de botella al gestionar una máquina todas las peticiones de bloqueos.
Si falla la máquina se pierde el controlador de concurrencia lo que obliga a detener el procesamiento.
Distribuido: La función del gestor está entre las máquinas. Cada transacción envía la petición de bloqueo al sitio donde se encuentran los datos almacenados que se encarga de gestionar la petición. Si los datos están replicados entre varias máquinas se marca una como sitios principal, y es el que recibe las consultas y las peticiones de bloqueo de datos.
VENTAJAS:
La implementación también es sencilla.
Al no ser una única máquina la que gestiona los bloqueos no hay riesgo de cuellos de botella.
INCONVENIENTES:
La gestión de interbloques es más compleja.
Aparte de la optimización de la propia consulta, como en cualquier otro sistema de base de datos, en caso de las bases de datos distribuidas es necesario tener en cuenta estos otros parámetros:
CONEXIONES ABIERTAS: La cantidad máxima de conexiones remotas abiertas de manera concurrente para cada conexión.
Valor del punto de COMMIT: Se específica el valor de COMMIT POINT site (lugar de punto de COMMIT) en una transacción. El nodo con este valor más alto se convierte en el nodo encargado de gestionar el COMMIT o ROLLBACK de las transacciones.
ASPECTOS RELACIONADOS AL PROCESAMIENTO DE TRANSACCIONES
Los siguientes son los aspectos más importantes relacionados con el procesamiento de transacciones:
1- Modelo de estructura de transacciones: Es importante considerar si las transacciones son planas o pueden estar anidadas.
Consistencia de la base de datos interna: Los algoritmos de control de datos semántico tienen que satisfacer siempre las restricciones de integridad cuando una transacción pretende hacer un COMMIT.
Protocolos de confiabilidad: En transacciones distribuidas es necesario introducir medios de comunicación entre los diferentes nodos de una red para garantizar la atomicidad y durabilidad de las transacciones. Así también, se requieren protocolos para la recuperación local y para efectuar los compromisos (COMMIT) globales.
Algoritmos de control de concurrencia: Los algoritmos de control de concurrencia deben sincronizar la ejecución de transacciones concurrentes bajo el criterio de correctitud. La consistencia entre transacciones se garantiza mediante el aislamiento de las mismas.
Protocolo de control de réplicas: El control de réplica se refiere a cómo garantizar la consistencia mutua de datos replicados. Por ejemplo se puede seguir la estrategia readone- write- all (ROWA).
TIPOS DE TRANSACCIONES
Las transacciones pueden pertenecer a varias clases. Las transacciones pueden ser agrupadas a lo largo de las siguientes dimensiones:
Áreas de aplicación: En primer lugar, las transacciones se pueden ejecutar en aplicaciones no distribuidas. Las transacciones que operan en datos distribuidos se les conoce como transacciones distribuidas. Por otro lado, los datos de una transacción que realiza un COMMIT son durables, la única forma de deshacer los efectos de una transacción con COMMIT es mediante otra transacción. A este tipo de transacciones se les conoce como transacciones compensatorias.
Tiempo de Duración: Tomando en cuenta el tiempo que transcurre desde que se inicia una transacción hasta que se realiza un COMMIT o se aborta, las transacciones pueden ser de tipo Batch o en Línea.
Estructura: Considerando la estructura que puede tener una transacción se examinan dos aspectos: Si una transacción puede contener a su vez subtransacciones o el orden de las de lectura y escritura dentro de una transacción.
Hay tres tipos de transacciones:
1- En las transacciones de recuperación: Se accede a los datos para visualizarlos en la pantalla a modos de informe.
2- En las transacciones de actualización: Se insertan, borran o actualizan datos de la base de datos.
3- En las transacciones mixtas. Se mezclan operaciones de recuperación de datos y de actualización.
Estados de una transacción:
1-Activa (Active): El estado inicial; la transacción permanece en este sábado durante su ejecución.
2-Parcialmente comprometida (Uncommited): Después de ejecutarse la ultima transacción.
3- Fallida (Failed): Tras descubrir que no se puede continuar la ejecución normal.
4-Aborta 8Rolled Back): Después de haber retrocedido la transacción y restablecido la base de datos a su estado anterior de la transacción.
5- Comprometida (Commited): Tras completarse con éxito.
GRADO DE CONSISTENCIA.
La consistencia es un término más amplio que el de integridad. Podría definirse como la coherencia entre todos los datos de la base de datos.
Cuando se pierde la integridad también se pierde la consistencia. Pero la consistencia también puede perderse por razones de funcionamiento.
GRADOS DE CONSISTENCIA.
Una transacción mantendrá la consistencia de la base de datos. Esto es, si la base de datos se encuentra en un estado consistente antes de ejecutar la transacción, una vez que esta termine la consistencia de la base de datos deberá conservarse.
Consistencia de datos: Eliminado o controlando las redundancias de datos se reduce en gran medida el riesgo de que haya inconsistencias. Si un dato está almacenado solo una vez, cualquier actualización se debe realizar solo una vez y esta disponible para todos los usuarios inmediatamente, Si un dato está duplicado y el sistema conoce esta redundancia, el propio sistema puede encargarse de garantizar que todas las copias se mantiene consistentes.
¿Qué es un COMMIT?
En el contexto de la Ciencia de la computación y la gestión de datos, COMMIT (Acción de comprometer) se refiere a la idea de consignar un conjunto de cambios “ tentativos o no permanentes”.
En términos de transacciones, lo opuesto de COMMIT para destacar los cambios “en tentativa” de una transacción es un ROLLBACK.
¿QUÉ ES ROLLBACK?
En tecnologías de base de datos, un ROLLBACK es una operación que devuelve a la base de datos a algún estado previo. Los ROLLBACKS son importantes para la integridad de la base de datos ser restaurada a una copia limpia incluso después de que se han realizado operaciones erróneas.
Los siguientes comandos son utilizados para tener control de las transacciones:
Begin.
Commit.
Rollback.
Savepoint.
Rollback To.
NIVELES DE AISLAMIENTO
READ_ UNCOMMITTED
Este nivel permite que las transacciones vean los cambios no comprometidos en los datos. En este nivel son posibles todas las anomalías de base de datos.
READ_ COMMITTED
Este nivel protege parcialmente las lecturas e impide que la transacción lea los datos actualizados por otra transacción que todavía no se hayan confirmado. Impide las lecturas sucias
.REPEATABLE_READ
Este nivel impide que otra transacción actualice un dato que haya leído la transacción hasta que esta no se acabe.
Con esto se consigue que la transacción pueda volver a leer este dato sin riesgo de que lo hayan cambiado.
SERIALIZABLE
Este nivel ofrece un aislamiento total y evita cualquier tipo de interferencias, incluyendo los fantasmas.
Esto implica que no solamente protege los datos que haya visto la transacción, si no también cualquier información de control que se haya utilizado para hacer búsquedas.
OPERACIONES DE UNA TRANSACCIÓN.
INICIO DE TRANSACCIÓN: Operación que marca el momento en el que una transacción comienza a ejecutarse.
LEER O ESCRIBIR: Operaciones de lectura/escritura de elementos de la base de datos.
FIN DE LA TRANSACCIÓN: Se verifica si la transacción debe abortarse por alguna razón.
CONFIRMAR (COMMIT): La operación termino con éxito.
ABORTAR (ROLLBACK): La transacción termino sin éxito.
ESTADOS DE UNA TRANSACCIÓN
TRANSACCIÓN ACTIVA: Se encuentra en este estado justo después de iniciar su ejecución.
TRANSACCIÓN PARCIALMENTE CONFIRMADA: En este punto, se efectúan diferentes operaciones de verificación para asegurar que la transacción no interfiera con otras transacciones en ejecución.
TRANSACCIÓN CONFIRMADA: Ha concluido su ejecución con éxito.
TRANSACCIÓNFALLIDA: En este caso, es posible que la transacción deba ser cancelada.
TRANSACCIÓN TERMINADA: Indica que la transacción a abandonado el sistema.
CÓMO DEFINIR TRANSACCIONES
Por regla general en los gestores de datos relacionales modernos disponemos de tres tipos de transacciones según la forma de iniciarlas:
DE CONFORMACIÓN AUTOMÁTICA: El gestor de datos inicia una transacción automáticamente por cada operación que actualice datos. De este modo mantiene siempre la consistencia de la base de datos, aunque puede generar bloqueos.
IMPLICITAS: Cuando el gestor de datos comienza una transacción automáticamente cada vez que se produce una actualización de datos, pero el que dicha transacción se confirme o se deshaga, lo debe indicar el programador.
EXPLICITAS: Son las iniciamos nosotros “a mano” mediante instrucciones SQ. Somos nosotros, los programadores, los que indicamos que operaciones va a abarcar. Una transacción explicita se define de manera general con una institución que marca su inicio, y posibles instrucciones que marcan si final en función de si debe tener éxito o debe fracasar en bloque.
Comentarios
Publicar un comentario