Transaccionalidad en bases de datos

Actualmente los sistemas computacionales requieren realizar transacciones, dependiendo de las necesidades del negocio es la forma en que se requiere que se comporten dichas transacciones, aunque todas las transacciones buscan siempre los mismos principios:

  • Garantizar que se insertó, actualizó o borró la información de la base de datos.
  • Los datos deben ser consistentes y no se debe poder realizar ninguna alta, baja, ni cambio si es que la información que quedará al final no es consistente.
  • La información de una tupla no debe ser afectada por el alta, baja o cambio de otra tupla en la misma tabla.
  • Finalmente la información contenida en la base de datos debe perdurar y mantenerse sin importar las siguientes transacciones que se realicen, errores o condiciones que sucedan.

Todos estos requerimientos se encuentran englobados en un principio llamado ACID, por sus siglas en inglés que corresponden a: Atomicity, Consistency, Isolation, Durability.

Los principios ACID se deben de mantener en todos los sistemas donde se debe llevar un registro de transacciones realizadas, y se requiera que la confiabilidad de los datos. En mayor parte este principio es mayormente visible en sistemas bancarios, sistemas de acumulación y canje de puntos, bitácoras de acceso, registros de información de ventas, registro de entrada y salida de inventario, registro de usuarios, control de la información de cuentas de usuarios, etc.

La definición de ACID es la siguiente:

  • Atomicidad (atomicity): Una transacción debe ser completada o no, sin importar si la transacción se compone de una o varias acciones de altas, bajas o cambios una base de datos debe de garantizar que todas acciones se realizaron y en caso de que una no se haya logrado es suficiente razón para que ninguna acción quede registrada, en un ejemplo más práctico, supongamos que un sistema registra el alta de un nuevo producto y lo publica en la tienda en línea, un usuario proporciona toda la información del producto y al dar clic en el botón “Guardar y publicar en tienda en línea” el producto se debe guardar, actualizar su inventario y publicar en la tienda en línea como un producto disponible, en caso de que el usuario haya proporcionado información incorrecta, por ejemplo no haber colocado un nombre del producto, o una cantidad en inventario, la base de datos debe de NO permitir que se guarde ningún dato, que no se registre ningún producto y por lo mismo que el producto no sea publicado en la tienda en línea. En resumen, se hacen todas las acciones de la transacción o no se hace ninguna.
  • Consistencia (Consistency): Todos los datos deben de ser consistentes con las reglas integradas en la base de datos, si en las tablas se definieron campos con tipos de dato Entero (integer) NO debe de ser posible guardar un dato del tipo flotante o una cadena, esta parte siempre es controlada mayormente por el mismo Manejador de Base de Datos que estés usando, en resúmen: los datos se dben de guardar como fueron definidos y no permitir guardar algún otro tipo de valor (incluyendo rango del valor).
  • Aislamiento (Isolation): Una acción de alta, baja o cambio aplicado en una tupla no debe modificar el valor de ninguna otra tupla con la que no esté relacionada la acción, de esta forma si en un sistema hay concurrencia de usuarios se garantiza que la información entre usuarios no se va a compartir y mucho menos a sobreescribir entre todos ellos. En resumen: cualquier acción de alta, baja y cambio sólo va a afectar la tupla que le corresponde. Esta responsabilidad recae en mayor medida en el desarrollo del sistema en donde se verifica que la información siempre se inserte, modifique o borre utilizando un identificador de la tupla.
  • Durabilidad (durability): Una vez que ha tenido lugar una acción de alta, baja o cambio la información se debe de mantener guardada sin modificaciones sin importar el estado del sistema (una interrupción inesperada de energía, un borrado de datos en la memoria RAM, la escritura o borrado de algún archivo en el sistema ajeno a la base de datos, esta propiedad es manejada por el Sistema Manejador de Bases de Datos que te encuentres utilizando. En resumen: si algún se guarda en la base de datos esto debe de permanecer ahí hasta que el sistema modifique dicha información.

Después de toda esta explicación surge la pregunta: “¿Cómo puedo hacer que mi base de datos cumpla con los principios ACID?”. Para poder hacer esto se pueden utilizar diferentes mecanismos que ya se encuentran programados en los manejadores de Bases de Datos, lo importante es saber que mecanismos se deben utilizar en cada principio y de que forma se puede validar su correcta implementación.

Desarrolla tu talento día tras día

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *