© 13_Phunkod/Shutterstock.com

Cuando se utilizan sistemas de administración de bases de datos (DBMS), las transacciones se realizan con regularidad. Estos a menudo se ejecutan como transacciones ACID, que tienen muchos beneficios para mantener una base de datos saludable y funcionando correctamente. Si está tratando de familiarizarse con las propiedades ACID en DBMS, cubrimos todo lo que necesita saber.

¿Qué es una transacción ACID?

Con respecto a las bases de datos, una transacción es una operación que lleva a cabo una sola tarea, y puede cambiar el contenido de la base de datos. Las transacciones utilizan operaciones de lectura y escritura para trabajar con datos. Es decir, leen datos existentes e ingresan, o “escriben”, nuevos valores de datos. Un ejemplo clásico de esto es cuando se transfiere dinero desde su cuenta bancaria. Como tal, las transacciones ACID están en un estado completo o incompleto. En este ejemplo, el dinero no puede retirarse de su cuenta y no retirarse simultáneamente: ha ocurrido o no.

El objetivo de una transacción ACID es mantener la coherencia y corrección de la base de datos después de que se hayan ejecutado las transacciones. Las propiedades ACID en DBMS permiten a los desarrolladores realizar operaciones elaboradas mientras garantizan que sus datos estén seguros y correctos. La forma en que esto se logra es a través de las propiedades dictadas de la transacción, que se conocen como propiedades ACID. ACID significa Atomicidad, Consistencia, Aislamiento y Durabilidad. A continuación, profundizaremos en lo que significan estos términos.

Las transacciones ACID garantizan la precisión y consistencia de la base de datos después de que se hayan ejecutado las transacciones.

©dizain/Shutterstock.com

Atomicidad

Esto se refiere a la forma en que se tratan las declaraciones dentro de una transacción. Una declaración es una sola tarea, como leer, escribir, actualizar o eliminar datos. La atomicidad significa que cada declaración se trata como una sola unidad y que se ejecuta toda la tarea, o nada de ella. Esto también evita que se produzcan transacciones parciales.

En otras palabras, la atomicidad ayuda a prevenir la corrupción y la pérdida de datos si sus operaciones fallan en el camino. La base de datos mantiene un registro de cada cambio que ha realizado, y si se interrumpe la conexión, estos cambios se deshacen. Esto se basa en dos operaciones conocidas como”Abort”y”Commit”. El primero deshace los cambios si se cancela la transacción, y el segundo hace que los cambios sean visibles si se completa la transacción.

Coherencia 

Coherencia significa algo similar a lo que significa en la mayoría de las situaciones prácticas.. Con respecto a las bases de datos, significa que las transacciones solo cambian los datos de manera predecible y predefinida, y los valores de los datos se conservan. Si la transacción viola las reglas de la base de datos, se abandona. Esto también previene la corrupción de datos o errores como lo hace la atomicidad y preserva la integridad de la base de datos al evitar consecuencias no intencionales.

Aislamiento

Cuando se trabaja con bases de datos, es importante que las transacciones de los usuarios no interfieren entre sí. Para lograr esto, el aislamiento se utiliza como una propiedad. Esto significa que, cuando los usuarios están operando en la misma base de datos simultáneamente, cada solicitud de transacción se realiza como si fueran solicitudes individuales. Estas transacciones no se afectan entre sí y se tratan como si estuvieran serializadas, aunque se produzcan al mismo tiempo. Debido a que son secuenciales, se evita que se afecten entre sí y dañen la integridad de los datos.

Durabilidad

La última propiedad de ACID es la durabilidad. Esto ayuda a conservar los datos en caso de que falle el sistema al guardar los cambios incrementales realizados en el camino. Si la transacción es exitosa, los cambios no se deshacen. La durabilidad también permite que la base de datos revierta sus cambios en caso de una transacción interrumpida.

Propiedades de ACID en DBMS: Transacciones de ejemplo

Ahora hemos cubierto los conceptos básicos de lo que ACID propiedades son, es hora de ilustrar estas propiedades con una transacción de ejemplo simple.

Atomicidad

La forma más fácil de explicar la atomicidad es considerando la situación en la que desea transferir dinero de una cuenta bancaria a otra.

Las transacciones deben ser atómicas porque no desea encontrarse con una situación en la que se lleve a cabo una operación incompleta. En este caso, esto podría ser dinero que se retira pero no se deposita, o la segunda cuenta se acredita sin que se retire dinero de la cuenta de origen. Como tal, estas transacciones deben deshacerse si no se completan con éxito, por lo que la atomicidad es primordial. Los datos y las transacciones de este ejemplo se muestran a continuación.

X: 500Y: 200T1T2Read(X)
X:=X – 50
Write(X)Read(Y)
Y: Y + 50
Escribe(Y)X: 450Y: 250

Si queremos transferir $50 de la cuenta X a la cuenta Y, entonces necesitamos usar una transacción T con dos pasos: T1 y T2. Es decir, retirar el dinero de la cuenta X y depositarlo en la cuenta Y. Si la transacción se interrumpe después de ejecutar write(X) pero antes de write(Y), entonces la operación es inconsistente y la base de datos está comprometida. Por lo tanto, la transacción debe realizarse en su totalidad. De lo contrario, la transacción falla y las operaciones se deshacen.

Consistencia

Usando el mismo ejemplo, la consistencia asegura que el valor de la cantidad de fondos en cualquiera de las cuentas sea consistente. Es decir, el valor es el mismo al principio y al final de cada transacción. Esto mantiene la integridad de la base de datos y también la naturaleza predecible de los valores que contiene. En esta situación, es importante que se cumpla la restricción de que el saldo bancario debe ser un número entero positivo. De lo contrario, la transacción fallará.

Para ilustrar, si los fondos totales en la cuenta X ascienden a $500 y queremos transferir $50 a la cuenta Y, entonces los fondos totales en ambas cuentas siempre deben ser de $500, asumiendo que no hay fondos iniciales en la cuenta Y. La consistencia puede parecer una de las propiedades ACID más simples en DBMS, pero no obstante es muy crucial.

Aislamiento

Para mostrar un ejemplo donde el aislamiento es’usado apropiadamente, considere dos transacciones, T y T”. Mientras T está recuperando datos y actualizándolos desde una fila, T” está calculando esos datos. Si T” recupera datos antes de que T termine de actualizarse, la transacción completada mostrará datos incorrectos. Los datos y las transacciones para este ejemplo se muestran a continuación, donde”Peso”=X y”Altura”=Y.

NameWeight/lbHeight/inStephen17972Denise14658
TT”Read(Weight)
X:=X/2.2
Escribir(X)
Leer(Y)
Y:=Y*0.0254
Escribir(Y)Leer(X)
Leer(Y)
Z:=X/Y2
Escribe(Z)

En este caso, T está convirtiendo los valores de peso y altura en kilogramos y metros respectivamente, y T” está intentando calcular el IMC de la persona según la ecuación IMC=kg/m2. Para ilustrar, consideraremos el escenario donde T se ejecuta hasta el paso Leer (Y) y comienza T”. T recupera el valor correcto de X, ya que X ya se calculó, pero recupera el valor incorrecto de Y porque T aún no ha escrito el valor actualizado. Esto se puede ilustrar como:

T”: (X/Y2=81,36/722=0,016)

Cuando en realidad, el cálculo debería ser:

(X/Y2=81,36/1.832=24.3)

Debido a que T”ha tomado el valor inicial de Y, la base de datos ahora es inconsistente y el valor de salida es inexacto y esencialmente sin sentido. Esta situación, donde se recuperan datos incorrectos, se conoce como”lectura sucia”. La discrepancia en un caso de transferencia de dinero podría ser más insidiosa y más difícil de detectar, ya que potencialmente sería una diferencia relativamente menor en los fondos calculados y esperados. De cualquier manera, las transacciones deben ser aisladas, con cambios incrementales invisibles para cualquiera de las transacciones hasta que tengan almacenado en la memoria.

Durabilidad

Dado que la durabilidad se centra en la preservación de los datos, esto se puede considerar en el contexto de un corte de energía. Si hay una falla inesperada como esta después del el dinero ha sido transferido, este cambio en la información debe ser preservado por la base de datos en non-vola memoria de mosaico. Sin embargo, si la interrupción se produce durante la transacción, los cambios se revertirán y se desharán según la atomicidad.

La durabilidad se centra en preservar los datos en caso de fallas inesperadas.

©thinkhubstudio/Shutterstock.com

Resumen

En conclusión, podemos ver cuán importantes son las cuatro propiedades ACID en DBMS. Juntos, aseguran que solo se completen las transacciones correctas y que la información actualizada se almacene en una memoria no volátil para proteger contra fallas inesperadas. También mantienen la naturaleza predecible de los cambios de datos y garantizan que las transacciones no interfieran entre sí.

A continuación…

Propiedades de ACID en DBMS explicadas, con ejemplos Preguntas) 

¿Qué es una transacción en DBMS?

Una transacción se refiere a un conjunto de operaciones que realizan un solo conjunto de trabajo lógico. En este sentido, el trabajo lógico significa un cambio significativo en los datos, como transferir dinero de una cuenta a otra. Las transacciones pueden estar en proceso de ejecución, no completarse o cancelarse por varios motivos.

¿Qué son las propiedades ACID en DBMS?

Propiedades ACID se refieren a cómo las bases de datos gobiernan las transacciones ejecutadas con sus datos. ACID significa Atomicidad, Consistencia, Aislamiento y Durabilidad.

¿Por qué son importantes las propiedades ACID?

Las propiedades ACID ayudan a mantener los datos dentro de las bases de datos correctos y consistentes, y a preservarlos en caso de eventos inesperados como la energía fallas Además de esto, las propiedades aseguran que las transacciones no interfieran entre sí.

¿Cuándo debo usar una transacción ACID de varios documentos?

A veces, los datos relacionados se dividen entre varios registros, por lo que la manipulación de datos debe ser capaz de funcionar con esto para el éxito de la transacción. La mayoría de las aplicaciones no requieren transacciones de varios documentos, pero para algunas son cruciales. Muchos modelos de datos son flexibles, lo que significa que permiten que los datos relacionados se almacenen en un solo documento, pero también son capaces de trabajar con datos de varios documentos. Un ejemplo es MongoDB.

¿Cuáles son las desventajas de usar transacciones ACID?

La desventaja de usar transacciones ACID es que la base de datos evita operaciones simultáneas, como como escribir datos, de interferir. Si bien esto es en gran medida un beneficio, impide que los usuarios o clientes ejecuten transacciones si están esperando que se complete otra. Esto puede afectar negativamente la experiencia del usuario y conducir a una mayor latencia de la aplicación.

¿Cómo se compara el modelo ACID con el modelo BASE?

El modelo ACID tiene como objetivo ofrecer consistencia, mientras que el modelo BASE tiene como objetivo ofrecer una alta disponibilidad. BASE hace esto a través de la distribución y replicación de datos a través de los nodos de la base de datos, lo que permite que los datos cambien con el tiempo y que las lecturas de datos se realicen según sea necesario. Eventualmente se puede alcanzar la consistencia a través del modelo BASE, pero no es un requisito inmediato.

¿Qué es una base de datos relacional?

Una base de datos relacional es aquella en la que Los datos se almacenan en una o más tablas y se relacionan entre sí a través de una clave común. Como tales, los tipos de datos se pueden relacionar entre sí a través de relaciones de uno a uno, de uno a muchos o de muchos a muchos.

¿Qué bases de datos admiten las propiedades ACID?

Los SGBD que cumplen con ACID incluyen MySQL,  PostgreSQL,  SQLite, Oracle y Microsoft SQL Server.

¿Qué industria utiliza predominantemente las propiedades de ACID?

La industria financiera utiliza casi por completo DBMS compatibles con ACID.

¿Qué bases de datos no admiten las propiedades de ACID?

NoSQL, o”no Las bases de datos SQL” no son totalmente compatibles con las propiedades ACID porque no tienen una estructura de tabla fija. Proporcionan coherencia eventual, según el modelo BASE.

By Kaitlynn Clay

Trabajo como experto en UX. Me interesan el diseño web y el análisis del comportamiento del usuario. En mis días libres, siempre visito el museo de arte.