Transacciones - Introducción


Este artículo pretende ser una especie de guía a los desarrolladores para enfocar  la transaccionalidad de las aplicaciones.  Revisamos las diferentes formas de realizar las transacciones y los diferentes escenarios a fin de que el desarrollador o los analistas puedan orientarse fácilmente tanto a la hora de diseñar especificaciones funcionales como a la hora de programar.


No confundir el concepto de “transacción” con lo que usualmente denominamos en entorno de ordenador central “transacción” refiriéndonos a procesos transaccionales montados sobre IBM CICS como gestor transaccional.

El concepto de transacción es algo mucho más amplio y está presente tanto en sistemas centralizados como en sistemas distribuidos.

Tampoco debemos confundir el concepto de “sistema distribuido” asumiendo que es cualquier sistema que no sea el ordenador central. Es posible perfectamente tener procesos distribuidos tanto en ordenador central como en otras plataformas Windows o UNIX.

El uso correcto de la transaccionalidad ayuda a garantizar la consistencia de la información y minimiza los bloqueos de datos maximizando la concurrencia de los procesos.

A su vez, todos los gestores de bases de datos incluyen soporte para montar procesos transaccionales así como la gran mayoría de los lenguajes de programación que utilizamos.

Dado a que tenemos todas las herramientas necesarias para soportar procesos transaccionales, debemos conocer los conceptos, las ventajas y las mejores prácticas para poder aplicarlos en beneficio de la organización.


CONCEPTOS 

Concepto
Significado
Transacción
Conjunto de operaciones que desde un punto de vista lógico pueden considerarse como una única operación indivisible. Su ejecución se realiza bajo un esquema de “todo o nada”, es decir si toda la operación ha tenido éxito o si nada ha tenido éxito en el caso de alguna operación fallida.
ACID
Siglas en inglés de las propiedades que debe cumplir cada transacción: Atomicity (Atomicidad), Consistency (Consistencia), Isolation (Aislamiento) y Durability (Durabilidad).
Atomicidad
Propiedad que caracteriza una transacción como indivisible: todas sus operaciones tienen que ejecutarse o ninguna. No puede ocurrir que una parte se ejecute y otra no.
Consistencia
Propiedad que asegura que sólo se empieza aquello que se puede acabar
Aislamiento
Propiedad que asegura que una operación no puede afectar a otras. Esto asegura que la realización de dos transacciones sobre la misma información nunca generará ningún tipo de error
Durabilidad
Propiedad que asegura que una vez realizada la operación, ésta persistirá y no se podrá deshacer aunque falle el sistema
Ámbito
Es el marco en el que se realizan las operaciones. Se utiliza de forma primaria para la ejecución de las transacciones y el tratamiento de errores (excepciones). Un ámbito contiene una o más operaciones. En sistemas de programación un ámbito agrupa a un conjunto de operaciones encerradas entre un BEGIN_TRANSACTION y END_TRANSACTION.
Transacción atómica
Son aquellas que garantizan que cualquier actualización parcial será automáticamente deshecha y todos los efectos de la transacción serán borrados. Se utilizan cuando se requiere capacidad ACID completa, especialmente a la hora de persistir los datos.
Transacción de larga duración
Son aquellas que necesitan ejecutarse por un período de tiempo prolongado y no necesitan capacidad ACID completa, o sea, no necesitan garantizar el aislamiento de datos de otras transacciones. Pueden tener períodos de inactividad debido a la espera de mensajes externos que necesitan ser procesados.
Persistencia
Capacidad de un sistema de mantener en el tiempo los datos o el estado de las operaciones de proceso.
Persistencia de datos
Capacidad de un sistema de persistir los datos resultantes de las operaciones de proceso. Generalmente se realiza en ficheros o bases de datos.
Persistencia de estado
Capacidad de un sistema de persistir en que estado se encuentran las operaciones de proceso. Generalmente se realiza en ficheros o en bases de datos.
Operación de persistir
Operación de un sistema que permite copiar las áreas temporales de información o datos en las áreas definitivas donde se van a persistir. En un sistema de bases de datos corresponde con un COMMIT.
Operación de deshacer persistencia
Operación de un sistema que permite eliminar las áreas temporales de información o datos evitando que sean copiadas en las áreas definitivas donde van a persistir. En un sistema de base de datos corresponde con un ROLLBACK.
Operación de compensación
Operación de un sistema que permite deshacer los cambios de información o datos ya persistidos.
Concurrencia
Propiedad de los sistemas que permiten que múltiples procesos sean ejecutados al mismo tiempo, y que potencialmente puedan interactuar entre sí.
Los procesos concurrentes pueden ser ejecutados realmente de forma simultánea, sólo cuando cada uno es ejecutado en diferentes procesadores. En cambio, la concurrencia es simulada si sólo existe un procesador encargado de ejecutar los procesos concurrentes, ocupándose de forma alternada en uno y otro proceso a pequeñísimos intervalos de tiempo haciendo ver que se están ejecutando a la vez.
Bloqueos
Capacidad de un sistema de persistencia de datos de impedir, bajo condiciones de concurrencia y durante un intervalo de tiempo, que otros procesos modifiquen los datos a los cuáles un proceso determinado está accediendo.
Colisiones
Situación que se produce bajo condiciones de concurrencia cuando dos procesos intentan actualizar los mismos datos.
Bloqueo mutuo(dead-lock)
Situación indeseable que se produce en un sistema bajo condiciones de concurrencia cuando un proceso bloquea un dato A esperando poder actualizar un dato B y al mismo tiempo otro proceso espera que se libere el dato A bloqueando el dato B. Ninguno de los dos procesos prospera debido a que el dato que necesitan está bloqueado por el otro.
Gestor transaccional
Componente de un sistema que se encarga de procesar la información a través de unos elementos o bloques de procesos denominados transacciones. Permite enlazar varias transacciones individuales en una única transacción indivisible, garantizando que todas las transacciones terminen sin errores o que no termine ninguna de ellas. Si algunas operaciones o transacciones terminaron correctamente y otras no, el gestor transaccional deberá devolver la persistencia de datos a su estado original justo como estaba antes de iniciar el proceso y cancelar las operaciones en curso y futuras que formen parte de la transacción general. Los sistemas de gestión de bases de datos incluyen un gestor transaccional.
Sistema centralizado
Conjunto de elementos de proceso de información que residen en la misma máquina lógica compartiendo memoria, CPU y sistema operativo, controla por lo general recursos locales y persisten su estado y los datos producidos en un único sistema de almacenamiento. Un ejemplo clásico es un ordenador central o Host de IBM.
Sistema distribuido
Conjunto de elementos de proceso de información donde cada uno tiene su propia máquina lógica (memoria, CPU y sistema operativo), control de recursos locales y remotos, comunicación entre sí utilizando protocolos de red y mensajes para poder compartir y persistir su estado y los datos producidos en diferentes sistemas de almacenamiento de datos. Un ejemplo clásico son los sistemas Web, donde unos servidores exponen las páginas y el código, otros almacenan los datos y los clientes acceden a través de la red.
Evento
Suceso que ocurre en un sistema cuando se produce una determinada condición.
Manipulador de evento
Código de nuestra aplicación que deseamos ejecutar cuando se activa o “dispara” un determinado evento.
Mensaje
Información que un emisor envía a un receptor a través de un canal de comunicación determinado.
Excepción
Evento que ocurre en un sistema cuando se produce una condición de error, por ejemplo un error de entrada / salida, un fallo de comunicaciones, etc.
Acoplamiento
Característica que mide el grado de dependencia entre los componentes de un sistema
Sistemas acoplados
Sistema donde sus componentes no pueden funcionar parcial o totalmente sin la intervención o participación de otros componentes. Los módulos o rutinas son ejemplos de componentes acoplados.
Sistemas desacoplados
Sistema donde cada uno de sus componentes puede funcionar de forma totalmente independiente. Los servicios pueden ser un ejemplo de componentes que pueden funcionar desacoplados o de forma independiente.
Orquestación
Proceso de alto nivel que permite controlar la ejecución ordenada de transacciones incluyendo mantenimiento de estado, tratamiento de excepciones y acciones de compensación.

 TIPOS DE TRANSACCIONES



Una primera clasificación para estudiar las transacciones es por su duración, en atómicas o de corta duración y las de larga duración. Luego podemos encontrar ambos tipos de transacciones en sistemas centralizados como el ordenador central de IBM o en sistemas distribuidos como en granjas de servidores UNIX o Windows.





posted under , |

1 comentarios:

Fabian Torres dijo...

Muy buena aportacion

Publicar un comentario

Entrada más reciente Entrada antigua Inicio