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.
1 comentarios:
Muy buena aportacion
Publicar un comentario