Una transacción de base de datos simboliza una unidad de trabajo , realizada dentro de un sistema de gestión de bases de datos (o sistema similar) sobre una base de datos , que se trata de manera coherente y confiable independientemente de otras transacciones [ 1 ] . Una transacción generalmente representa cualquier cambio en una base de datos. Las transacciones en un entorno de base de datos tienen dos propósitos principales:
- Proporcionar unidades de trabajo fiables que permitan una correcta recuperación ante fallos y mantengan la coherencia de la base de datos incluso en caso de fallo del sistema. Por ejemplo: cuando la ejecución se detiene de forma prematura e inesperada (total o parcialmente), en cuyo caso muchas operaciones sobre la base de datos quedan incompletas y con un estado incierto.
- Para garantizar el aislamiento entre programas que acceden a una base de datos simultáneamente. Si no se proporciona este aislamiento, los resultados de los programas podrían ser erróneos.
En un sistema de gestión de bases de datos, una transacción es una unidad lógica o de trabajo, a veces compuesta por varias operaciones. Cualquier cálculo lógico realizado de forma consistente en una base de datos se conoce como transacción. Un ejemplo es una transferencia de una cuenta bancaria a otra: la transacción completa requiere restar la cantidad a transferir de una cuenta y sumar esa misma cantidad a la otra.
Una transacción de base de datos, por definición, debe ser atómica (debe completarse en su totalidad o no tener ningún efecto), consistente (debe ajustarse a las restricciones existentes en la base de datos), aislada (no debe afectar a otras transacciones) y duradera (debe escribirse en un almacenamiento persistente). [ 2 ] Los profesionales de bases de datos suelen referirse a estas propiedades de las transacciones de bases de datos utilizando el acrónimo ACID .
Objetivo
Las bases de datos y otros sistemas de almacenamiento de datos que priorizan la integridad de los datos suelen incluir la capacidad de gestionar transacciones para mantenerla. Una transacción consta de una o más unidades de trabajo independientes, cada una de las cuales lee o escribe información en la base de datos u otro sistema de almacenamiento. En estos casos, es fundamental garantizar que todo el procesamiento finalice en un estado coherente.
Los ejemplos de los sistemas de contabilidad por partida doble suelen ilustrar el concepto de transacciones. En la contabilidad por partida doble, cada débito requiere el registro de un crédito asociado. Si se emite un cheque por $100 para comprar comestibles, un sistema de contabilidad transaccional por partida doble debe registrar los dos asientos siguientes para cubrir la única transacción:
- Cargar $100 a la cuenta de gastos de comestibles.
- Abonar $100 a la cuenta corriente.
Un sistema transaccional permitiría que ambas entradas se procesaran correctamente o que ambas fallaran. Al tratar el registro de múltiples entradas como una unidad de trabajo transaccional atómica, el sistema mantiene la integridad de los datos registrados. En otras palabras, nadie se encuentra en una situación en la que se registra un débito pero no un crédito asociado, o viceversa.
Bases de datos transaccionales
Una base de datos transaccional es un SGBD que proporciona las propiedades ACID para un conjunto delimitado de operaciones de base de datos (begin-commit). Las transacciones aseguran que la base de datos se encuentre siempre en un estado consistente, incluso en caso de actualizaciones y fallos concurrentes. [ 3 ] Todas las operaciones de escritura dentro de una transacción tienen un efecto de todo o nada, es decir, o la transacción tiene éxito y todas las escrituras se aplican, o bien, la base de datos pasa a un estado que no incluye ninguna de las escrituras de la transacción. Las transacciones también aseguran que el efecto de las transacciones concurrentes cumpla ciertas garantías, conocidas como nivel de aislamiento . El nivel de aislamiento más alto es la serializabilidad , que garantiza que el efecto de las transacciones concurrentes sea equivalente a su ejecución serial (es decir, secuencial).
La mayoría de los modernosLos sistemas de gestión de bases de datos relacionales admiten transacciones. Las bases de datos NoSQL priorizan la escalabilidad junto con el soporte para transacciones, con el fin de garantizar la consistencia de los datos en caso de actualizaciones y accesos concurrentes.
En un sistema de bases de datos, una transacción puede consistir en una o más sentencias y consultas de manipulación de datos, cada una de las cuales lee y/o escribe información en la base de datos. Los usuarios de sistemas de bases de datos consideran que la consistencia e integridad de los datos son de suma importancia. Generalmente, una transacción simple se envía al sistema de bases de datos en un lenguaje como SQL , encapsulada en una transacción, utilizando un patrón similar al siguiente:
- Inicie la transacción.
- Ejecutar un conjunto de manipulaciones de datos y/o consultas.
- Si no se produce ningún error, confirme la transacción.
- Si se produce un error, revierta la transacción.
Una operación de confirmación de transacción guarda en la base de datos todos los resultados de las manipulaciones de datos realizadas dentro del ámbito de la transacción. Una operación de reversión de transacción no guarda en la base de datos los resultados parciales de dichas manipulaciones. En ningún caso se puede confirmar una transacción parcial en la base de datos, ya que esto la dejaría en un estado inconsistente.
Internamente, las bases de datos multiusuario almacenan y procesan transacciones, a menudo utilizando un ID de transacción o XID.
Hay varias formas diferentes de implementar transacciones además de la forma simple documentada anteriormente. Las transacciones anidadas , por ejemplo, son transacciones que contienen instrucciones que inician nuevas transacciones (es decir, subtransacciones). Las transacciones multinivel son una variante de las transacciones anidadas donde las subtransacciones tienen lugar en diferentes niveles de una arquitectura de sistema en capas (por ejemplo, con una operación en el nivel del motor de la base de datos, una operación en el nivel del sistema operativo). [ 4 ] Otro tipo de transacción es la transacción compensatoria .
En SQL
Las transacciones están disponibles en la mayoría de las implementaciones de bases de datos SQL, aunque con distintos niveles de robustez. Por ejemplo, MySQL comenzó a admitir transacciones desde la versión 3.23, pero el motor de almacenamiento InnoDB no era la opción predeterminada antes de la versión 5.5. El motor de almacenamiento anterior, MyISAM, no admite transacciones.
Una transacción generalmente se inicia con el comando BEGIN(aunque el estándar SQL especifica START TRANSACTION). Cuando el sistema procesa una COMMITinstrucción, la transacción finaliza con éxito. Una ROLLBACKinstrucción también puede finalizar la transacción, deshaciendo cualquier trabajo realizado desde BEGIN. Si la confirmación automática se deshabilitó al inicio de una transacción, se volverá a habilitar al finalizar la misma.
Se puede establecer el nivel de aislamiento para operaciones transaccionales individuales, así como de forma global. En el nivel más alto ( READ COMMITTED), el resultado de cualquier operación realizada después de que una transacción haya comenzado permanecerá invisible para otros usuarios de la base de datos hasta que la transacción haya finalizado. En el nivel más bajo ( READ UNCOMMITTED), que ocasionalmente puede usarse para garantizar una alta concurrencia, dichos cambios serán visibles de inmediato.
bases de datos de objetos
Las bases de datos relacionales se componen tradicionalmente de tablas con campos y registros de tamaño fijo. Las bases de datos de objetos comprenden bloques de datos de tamaño variable , posiblemente serializables o que incorporan un tipo MIME . Las similitudes fundamentales entre las bases de datos relacionales y de objetos son el inicio y la confirmación o reversión .
Tras iniciar una transacción, los registros u objetos de la base de datos se bloquean, ya sea en modo de solo lectura o de lectura y escritura. Posteriormente, se pueden realizar operaciones de lectura y escritura. Una vez definida la transacción, los cambios se confirman o revierten de forma atómica , de modo que al finalizar la transacción no existe ninguna inconsistencia .
Transacciones distribuidas
Los sistemas de bases de datos implementan transacciones distribuidas [ 5 ] como transacciones que acceden a datos a través de múltiples nodos. Una transacción distribuida impone las propiedades ACID en múltiples nodos y puede incluir sistemas como bases de datos, gestores de almacenamiento, sistemas de archivos, sistemas de mensajería y otros gestores de datos. En una transacción distribuida, normalmente existe una entidad que coordina todo el proceso para garantizar que todas las partes de la transacción se apliquen a todos los sistemas relevantes. Además, la integración de Almacenamiento como Servicio (StaaS) en estos entornos es crucial, ya que ofrece un conjunto prácticamente infinito de recursos de almacenamiento, compatible con una variedad de clases de almacenamiento de datos en la nube con diferentes niveles de disponibilidad, escalabilidad y propiedades ACID. Esta integración es esencial para lograr una mayor disponibilidad, un menor tiempo de respuesta y una mayor eficiencia de costos en aplicaciones con uso intensivo de datos implementadas en almacenes de datos en la nube. [ 6 ]
Sistemas de archivos transaccionales
El sistema de archivos Namesys Reiser4 para Linux [ 7 ] admite transacciones, y desde Microsoft Windows Vista , el sistema de archivos NTFS de Microsoft [ 8 ] admite transacciones distribuidas a través de redes. Se están realizando investigaciones sobre sistemas de archivos con mayor coherencia de datos, como el Warp Transactional Filesystem (WTF) [ 9 ] .
Véase también
Referencias
- ↑ "Bases de datos ACID vs BASE - Diferencia entre bases de datos - AWS" . Amazon Web Services, Inc. Consultado el 28/11/2025 .
Una transacción es cualquier operación que la base de datos considera una sola unidad de trabajo. Una transacción debe completarse por completo para que la base de datos se mantenga consistente. Por ejemplo, cuando transfieres dinero de una cuenta bancaria a otra, el dinero debe salir de tu cuenta y debe agregarse a la cuenta del tercero. No puedes considerar que la transacción está completa sin que se produzcan ambos pasos.
- ↑ "¿Qué es una transacción? (Windows)" . msdn.microsoft.com . 7 de enero de 2021.
- ↑ DINCĂ, Ana-Maria; AXINTE, Sabina-Daniela; BACIVAROV, Ioan (29/12/2022). "Mejoras de rendimiento para transacciones de bases de datos" . Revista Internacional de Seguridad de la Información y Cibercrimen . 11 (2): 29– 34. doi : 10.19107/ijisc.2022.02.02 . ISSN 2285-9225 . S2CID 259653728 .
- ↑ Beeri, C.; Bernstein, PA; Goodman, N. (1989). "Un modelo para la concurrencia en sistemas de transacciones anidadas" . Journal of the ACM . 36 (1): 230– 269. doi : 10.1145/62044.62046 . S2CID 12956480 .
- ↑ Özsu, M. Tamer; Valduriez, Patrick (2011). Principios de sistemas de bases de datos distribuidas, tercera edición . Springer. Bibcode : 2011podd.book.....O . doi : 10.1007/978-1-4419-8834-8 . ISBN 978-1-4419-8833-1.
- ^ Mansouri, Yaser; Toosi, Adel Nadjaran; Buyya, Rajkumar (11 de diciembre de 2017). "Gestión del almacenamiento de datos en entornos de nube: taxonomía, encuesta y direcciones futuras" . Encuestas de Computación ACM . 50 (6): 91:1–91:51. doi : 10.1145/3136623 . ISSN 0360-0300 .
- ↑ "Linux.org" . Linux.org .
- ↑ "Biblioteca MSDN" . 4 de febrero de 2013. Consultado el 16 de octubre de 2014 .
- ↑ "Diseño e implementación del sistema de archivos transaccional Warp" (PDF) . usenix.org . 18 de marzo de 2016. Consultado el 16 de octubre de 2025 .
Lecturas adicionales
- Philip A. Bernstein , Eric Newcomer (2009): Principios del procesamiento de transacciones , 2.ª edición , Morgan Kaufmann (Elsevier), ISBN 978-1-55860-623-4
- Gerhard Weikum, Gottfried Vossen (2001), Sistemas de información transaccionales: teoría, algoritmos y práctica del control y recuperación de la concurrencia , Morgan Kaufmann, ISBN 1-55860-508-8
Enlaces externos
- c2:Procesamiento de transacciones
- https://docs.oracle.com/database/121/CNCPT/transact.htm#CNCPT016
- https://docs.oracle.com/cd/B28359_01/server.111/b28318/transact.htm
- Gestión de datos
- Procesamiento de transacciones
- Sistemas de gestión de bases de datos