¿Cuál es la diferencia entre una base de datos ACID y una BASE?

ACID y BASE son modelos de transacciones de bases de datos que determinan cómo una base de datos organiza y manipula los datos. En el contexto de las bases de datos, una transacción es cualquier operación que la base de datos considere una sola unidad de trabajo. Una transacción debe completarse en su totalidad para que la base de datos siga siendo coherente. Por ejemplo, cuando transfiere dinero de una cuenta bancaria a otra, el dinero debe salir de su cuenta y agregarse a la cuenta del tercero. No puede dar por finalizada la transacción sin que se realicen ambos pasos. 

Las bases de datos ACID priorizan la coherencia sobre la disponibilidad: toda la transacción falla si se produce un error en cualquier paso de la transacción. Por el contrario, las bases de datos BASE priorizan la disponibilidad por sobre de la coherencia. En lugar de registrar un error en la transacción, los usuarios pueden acceder a datos inconsistentes de manera temporal. La coherencia de datos se logra, pero no de forma inmediata.

¿Por qué ACID y BASE son importantes?

Las bases de datos modernas son almacenes de datos distribuidos que replican datos en varios nodos conectados por una red. Le permiten a los usuarios realizar múltiples manipulaciones de datos, como lecturas y escrituras, en una sola transacción. Los usuarios esperan que los datos se mantengan coherentes en todos los nodos al final de la transacción. Sin embargo, en la ciencia computacional teórica, la Conjetura de Brewer (también llamada teorema CAP) establece que cualquier almacén de datos distribuido solo puede proporcionar dos de las tres garantías siguientes:

  • Coherencia: cada operación de lectura recibe los datos actualizados más recientes o un error.
  • Disponibilidad: cada solicitud de base de datos recibe una respuesta satisfactoria, sin garantizar que contenga los datos actualizados más recientes.
  • Tolerancia a las particiones: el sistema sigue funcionando a pesar de los mensajes perdidos o retrasados entre los nodos distribuidos.

Por ejemplo, si un cliente agrega un artículo a un carrito en un sitio web de comercio electrónico, todos los demás clientes deberían ver caer los niveles de disponibilidad del producto. Si el cliente agrega el último artículo al carrito, todos los demás usuarios deberían ver el artículo como agotado. En caso de que fallase alguna operación dentro de una transacción, los diseñadores de bases de datos deben tomar una decisión. La base de datos puede realizar una de las siguientes acciones:

  1. Cancelar la transacción y devolver un error, lo que reduce la disponibilidad pero garantiza la coherencia. El cliente no puede agregar el artículo a su carrito u otros clientes no pueden cargar los detalles de todos los productos hasta que agregar al carrito funcione con éxito.
  2. Continuar con la operación y, por lo tanto, proporcionar disponibilidad, pero arriesgando inconsistencias. El cliente agrega un artículo al carrito, pero otros clientes ven niveles de disponibilidad incorrectos, al menos de manera temporal.

En algunos casos de uso, la coherencia es fundamental y se prefieren las bases de datos ACID. No obstante, hay otros casos de uso en los que no es crítica. Por ejemplo, cuando acepta una solicitud de amistad en las redes sociales, no importa si otros usuarios ven por un momento un número incorrecto de amigos en su perfil. Sin embargo, no querrá perder el acceso a su feed de redes sociales mientras se ordenan los datos. Es en estos escenarios cuando BASE adquiere importancia.

Principios clave: ACID comparado con BASE

ACID y BASE son acrónimos de diferentes propiedades de bases de datos que representan el comportamiento de la base de datos durante el procesamiento de transacciones en línea. 

ACID 

ACID representa las palabras atomicidad, consistencia, aislamiento y durabilidad.

Atomicidad

La atomicidad garantiza que todos los pasos de una sola transacción de base de datos se completen o se reviertan a su estado original. Por ejemplo, en un sistema de reservas, tanto la tarea de reservar asientos como la de actualizar los detalles del cliente, deben completarse en una sola transacción. No puede reservar asientos para un perfil de cliente incompleto. No se modifican los datos si se produce un error en alguna parte de la transacción.

Coherencia

La coherencia garantiza que los datos cumplan con las restricciones de integridad y las reglas empresariales predefinidas. Incluso si varios usuarios realizan operaciones similares en simultáneo, los datos siguen siendo coherentes para todos. Por ejemplo, la coherencia asegura que, al transferir fondos de una cuenta a otra, el balance total antes y después de la transacción siga siendo el mismo. Si la cuenta A tiene USD 200 y la cuenta B tiene USD 400, el balance total es de USD 600. Después de que se transfieran USD 100 de A a B, A tiene USD 100 y B tiene USD 500. El balance total sigue siendo de USD 600. 

Aislamiento

El aislamiento garantiza que una nueva transacción, que accede a un registro en particular, espere hasta que finalice la transacción anterior antes de comenzar a funcionar. Asegura que las transacciones simultáneas no interfieran entre sí, manteniendo la ilusión de que se ejecutan en serie. Otro ejemplo es un sistema de gestión de inventario multiusuario. Si un usuario actualiza la cantidad de un producto, otro usuario que acceda a la misma información verá una vista consistente y aislada de los datos, que no se verá afectada por la actualización en curso hasta que se confirme.

Durabilidad

La durabilidad garantiza que la base de datos mantenga todos los registros confirmados, incluso si se produce un error en el sistema. Asegura que todos los cambios sean permanentes y no se vean afectados por las fallas posteriores del sistema cuando se confirmen las transacciones de ACID. Por ejemplo, en una aplicación de mensajería, cuando un usuario envía un mensaje y recibe una confirmación de entrega correcta, la propiedad de durabilidad garantiza que el mensaje nunca se pierda. Esto sigue siendo así incluso si la aplicación o el servidor fallan.

BASE

BASE significa coherencia eventual flexible básicamente disponible. El acrónimo destaca que BASE es lo opuesto a ACID, al igual que sus equivalentes químicos.

Básicamente disponible

Básicamente disponible hace referencia a la accesibilidad simultánea de la base de datos por parte de los usuarios en todo momento. Un usuario no necesita esperar a que otros finalicen la transacción para actualizar el registro. Por ejemplo, durante un aumento repentino del tráfico en una plataforma de comercio electrónico, el sistema puede priorizar la entrega de listados de productos y la aceptación de pedidos. Incluso si se produce un ligero retraso en la actualización de las cantidades en el inventario, los usuarios siguen retirando artículos.

Flexible

Flexible hace referencia a la noción de que los datos pueden tener estados transitorios o temporales que pueden cambiar con el tiempo, incluso sin entradas o disparadores externos. Describe el estado de transición del registro cuando varias aplicaciones lo actualizan en simultáneo. El valor del registro se finaliza solo después de que se hayan completado todas las transacciones. Por ejemplo, si los usuarios editan una publicación en redes sociales, es posible que el cambio no sea visible para otros usuarios de forma inmediata. Sin embargo la publicación se actualiza por sí sola más adelante (reflejando el cambio anterior) aunque ningún usuario la haya activado.

Coherencia eventual

Coherencia eventual hace referencia a que el registro alcanzará la coherencia cuando se hayan completado todas las actualizaciones simultáneas. En este punto, las aplicaciones que consulten el registro verán el mismo valor. Por ejemplo, considere un sistema de edición de documentos distribuido en el que varios usuarios puedan editar un documento en simultáneo. Si los usuarios A y B editan la misma sección del documento en paralelo, sus copias locales pueden diferir temporalmente hasta que los cambios se propaguen y se sincronicen. Sin embargo, con el tiempo, el sistema garantiza la coherencia eventual al propagar y combinar los cambios realizados por los diferentes usuarios.

Diferencias clave: ACID en comparación con BASE

Al elegir entre los modelos de transacciones de bases de datos ACID y BASE hay tanto ventajas como desventajas.

Escalado

Es más difícil escalar un modelo de transacciones de bases de datos ACID dado que este se centra en la coherencia. Solo se permite una transacción para un registro en cualquier momento, lo que dificulta el escalamiento horizontal. 

Como alternativa, puede escalar de forma horizontal el modelo de base de datos BASE, ya que no necesita mantener una coherencia estricta. La adición de varios nodos en el clúster de la base de datos permite que el modelo BASE mejore la disponibilidad de los datos, el cual es el principio que impulsa la arquitectura de la base de datos. 

Flexibilidad

Las bases de datos ACID son menos flexibles a la hora de gestionar los datos. Debe garantizar la coherencia inmediata, ya que una base de datos ACID puede restringir el acceso a algunas aplicaciones si sufre cortes de red o de energía. Del mismo modo, si otros módulos de software están procesando un registro en particular, las aplicaciones deben esperar su turno para actualizar los datos. Por el contrario, las bases de datos BASE son más flexibles. En lugar de imponer restricciones estrictas, BASE permite a las aplicaciones modificar los registros cuando están disponibles. 

Rendimiento

Una base de datos ACID puede experimentar problemas de rendimiento al gestionar grandes volúmenes de datos o solicitudes de procesamiento simultáneo. Como los datos se procesan en un orden estricto, la sobrecarga de cada transacción crea retrasos que afectan a todas las aplicaciones que acceden al registro. 

Por el contrario, las aplicaciones que acceden a una base de datos BASE pueden procesar los registros en cualquier momento. Esto reduce el tiempo de espera excesivo y mejora el rendimiento de la base de datos.

Sincronización

Una base de datos ACID necesita un mecanismo de sincronización para confirmar los cambios de una transacción y reflejarlos en todos los registros asociados. Al mismo tiempo, debe bloquear el registro en particular de otras partes hasta que la transacción esté completa o sea descartada. Mientras tanto, una base de datos BASE se ejecuta sin bloquear los registros y, eventualmente, los sincroniza sin garantías de tiempo. Cuando trabajan con bases de datos BASE, los desarrolladores saben que pueden haber inconsistencias al momento de procesar ciertos registros, por lo que toman las precauciones necesarias en la aplicación. 

Cuándo usar: ACID en comparación con BASE

A pesar de sus diferencias, los sistemas de bases de datos ACID y BASE son relevantes en diferentes aplicaciones. ACID es la opción ideal para aplicaciones empresariales que requieren coherencia de datos, fiabilidad y previsibilidad. Por ejemplo, los bancos utilizan una base de datos ACID para almacenar las transacciones de los clientes porque la integridad de los datos es la máxima prioridad. Mientras tanto, las bases de datos BASE son una mejor opción para el procesamiento analítico en línea de datos menos estructurados y de gran volumen. Por ejemplo, los sitios web de ecommerce utilizan bases de datos BASE para actualizar los precios de los productos, que cambian con frecuencia. En este caso, la precisión de los precios es menos vital que permitir que todos los clientes accedan en tiempo real al precio del producto.

¿Puede una base de datos ser tanto ACID como BASE?

Según el teorema CAP, una base de datos puede satisfacer dos de las tres garantías de coherencia, disponibilidad y tolerancia a las particiones. Tanto los modelos de bases de datos ACID como BASE proporcionan tolerancia a las particiones, lo que significa que no pueden ser muy consistentes y estar siempre disponibles. Por lo tanto, una base de datos se inclina hacia ACID o BASE, pero no puede ser ambas. Por ejemplo, las bases de datos SQL se estructuran según el modelo ACID, mientras que las bases de datos NoSQL utilizan la arquitectura de BASE. Sin embargo, algunas bases de datos NoSQL pueden presentar ciertos rasgos ACID, pero no pueden funcionar como bases de datos compatibles con ACID.

Más información sobre las bases de datos NoSQL »

Resumen de las diferencias: ACID comparado con BASE

 

ACID

BASE

Escalado

Escala verticalmente.

Escala horizontalmente.

Flexibilidad

Menos flexible. Bloquea registros específicos de otras aplicaciones durante el procesamiento. 

Más flexible. Permite que varias aplicaciones actualicen el mismo registro simultáneamente.

Rendimiento

El rendimiento disminuye cuando se procesan grandes volúmenes de datos.

Capaz de manejar datos grandes y no estructurados con un alto rendimiento. 

Sincronización

Sí. Agrega retraso al sincronizar. 

No hay sincronización a nivel de base de datos. 

¿Cómo puede AWS cumplir sus requisitos de bases de datos ACID y BASE?

Las bases de datos en la nube de AWS proporcionan una gama de servicios de bases de datos ACID y BASE para cada tipo de caso de uso de datos. Las organizaciones implementan sus bases de datos en AWS para ahorrar tiempo al aprovisionar, escalar y administrar la infraestructura de almacenamiento de datos. Por ejemplo:

  • Amazon DynamoDB es un servicio rápido de base de datos BASE que permite el procesamiento de datos en milisegundos para aplicaciones en la nube.
  • Amazon MemoryDB es otra base de datos BASE que permite a los desarrolladores implementar bases de datos Redis duraderas y de alta disponibilidad al servicio de aplicaciones web y móviles.
  • AWS RedShift es un almacenamiento de datos en la nube de ACID que le permite ejecutar consultas analíticas de SQL complejas para casos de uso de inteligencia empresarial. 

Para comenzar con las bases de datos ACID y BASE, cree una cuenta hoy mismo.