stringtranslate.com

Durabilidad (sistemas de bases de datos)

En los sistemas de bases de datos , la durabilidad es la propiedad ACID que garantiza que los efectos de las transacciones que se han cometido sobrevivirán permanentemente, incluso en caso de fallas, [1] incluyendo incidentes y eventos catastróficos. Por ejemplo, si una reserva de vuelo informa que un asiento se ha reservado correctamente, el asiento permanecerá reservado incluso si el sistema falla. [2]

Formalmente, un sistema de base de datos garantiza la propiedad de durabilidad si tolera tres tipos de fallas: fallas de transacción, del sistema y de medios. [1] En particular, una transacción falla si su ejecución se interrumpe antes de que el sistema haya procesado todas sus operaciones. [3] Este tipo de interrupciones pueden originarse a nivel de transacción por errores de ingreso de datos, cancelación del operador, tiempo de espera o errores específicos de la aplicación, como retirar dinero de una cuenta bancaria con fondos insuficientes. [1] A nivel del sistema, se produce una falla si el contenido del almacenamiento volátil se pierde, debido, por ejemplo, a fallas del sistema , como eventos de falta de memoria . [3] A nivel de medios, donde medios significan un almacenamiento estable que resiste fallas del sistema, las fallas ocurren cuando se pierde el almacenamiento estable, o parte de él. [3] Estos casos suelen estar representados por fallas de disco . [1]

Por lo tanto, para ser duradero, el sistema de base de datos debe implementar estrategias y operaciones que garanticen que los efectos de las transacciones que se han cometido antes de la falla sobrevivirán al evento (incluso mediante reconstrucción), mientras que los cambios de las transacciones incompletas, que no se han comprometido. sin embargo, en el momento del fallo, se revertirá y no afectará el estado del sistema de base de datos. Se ha demostrado que estos comportamientos son correctos cuando la ejecución de transacciones tiene, respectivamente, las propiedades de resiliencia y recuperabilidad . [3]

Mecanismos

Un autómata de estado finito simplificado que muestra posibles estados posteriores a una falla del DBMS (en rojo) y las transiciones (en negro) que son necesarias para regresar a un sistema en ejecución para lograr durabilidad.

En los sistemas basados ​​en transacciones, los mecanismos que aseguran la durabilidad están históricamente asociados con el concepto de confiabilidad de los sistemas, propuesto por Jim Gray en 1981. [1] Este concepto incluye la durabilidad, pero también se basa en aspectos de las propiedades de atomicidad y consistencia . . [4] Específicamente, un mecanismo de confiabilidad requiere primitivas que indiquen explícitamente el comienzo, el final y la reversión de las transacciones, [1] que también están implícitas en las otras dos propiedades antes mencionadas. En este artículo sólo se han considerado los mecanismos estrictamente relacionados con la durabilidad. Estos mecanismos se dividen en tres niveles: transacción, sistema y nivel de medios. Esto también se puede ver en escenarios en los que podrían ocurrir fallas y que deben considerarse en el diseño de sistemas de bases de datos para abordar la durabilidad. [3]

Nivel de transacción

La durabilidad contra fallas que ocurren a nivel de transacción, como llamadas canceladas y acciones inconsistentes que pueden bloquearse antes de cometerse mediante restricciones y desencadenantes , está garantizada por la propiedad de serialización de la ejecución de transacciones. El estado generado por los efectos de transacciones confirmadas previamente está disponible en la memoria principal y, por lo tanto, es resistente, mientras que los cambios realizados por transacciones no confirmadas se pueden deshacer. De hecho, gracias a la serialización, se pueden discernir de otras transacciones y, por tanto, sus cambios se descartan. [3] Además, es relevante considerar que se desaconsejan los cambios in situ, que sobrescriben valores antiguos sin mantener ningún tipo de historial. [1] Existen múltiples enfoques que realizan un seguimiento del historial de cambios, como soluciones basadas en marcas de tiempo [5] o registros y bloqueos . [1]

Nivel del sistema

A nivel de sistema, los fallos ocurren, por definición, [3] cuando se pierde el contenido del almacenamiento volátil. Esto puede ocurrir en eventos como fallas del sistema o cortes de energía . Los sistemas de bases de datos existentes utilizan almacenamiento volátil (es decir, la memoria principal del sistema) para diferentes propósitos: algunos almacenan todo su estado y datos en él, incluso sin ninguna garantía de durabilidad; otros mantienen el estado y los datos, o parte de ellos, en la memoria, pero también utilizan el almacenamiento no volátil para los datos; otros sistemas solo mantienen el estado en la memoria principal, mientras mantienen todos los datos en el disco. [6] La razón detrás de la elección de tener almacenamiento volátil, que está sujeto a este tipo de fallas, y almacenamiento no volátil, se encuentra en las diferencias de rendimiento de las tecnologías existentes que se utilizan para implementar este tipo de almacenamiento. Sin embargo, es probable que la situación evolucione a medida que crezca la popularidad de las tecnologías de memorias no volátiles (NVM) . [7]

En los sistemas que incluyen almacenamiento no volátil, la durabilidad se puede lograr manteniendo y descargando un registro secuencial inmutable de las transacciones en dicho almacenamiento no volátil antes de reconocer el compromiso. Gracias a su propiedad de atomicidad, las transacciones pueden considerarse la unidad de trabajo en el proceso de recuperación que garantiza la durabilidad en la explotación del log. En particular, el mecanismo de registro se denomina registro de escritura anticipada (WAL) y permite la durabilidad al almacenar en el búfer los cambios en el disco antes de que se sincronicen desde la memoria principal. De esta manera, mediante la reconstrucción a partir del archivo de registro, todas las transacciones confirmadas son resistentes a fallas a nivel del sistema, porque se pueden rehacer. En cambio, las transacciones no comprometidas son recuperables, ya que sus operaciones se registran en un almacenamiento no volátil antes de que modifiquen efectivamente el estado de la base de datos. [8] De esta manera, las operaciones parcialmente ejecutadas se pueden deshacer sin afectar el estado del sistema. Después de eso, aquellas transacciones que estaban incompletas se pueden rehacer. Por lo tanto, el registro de transacciones del almacenamiento no volátil se puede reprocesar para recrear el estado del sistema justo antes de cualquier falla posterior a nivel del sistema. Vale la pena mencionar que el registro se realiza como una combinación de datos de seguimiento y operaciones (es decir, transacciones) por motivos de rendimiento. [9]

Nivel de medios

A nivel de medios, los escenarios de falla afectan el almacenamiento no volátil, como las unidades de disco duro , las unidades de estado sólido y otros tipos de componentes de hardware de almacenamiento . [8] Para garantizar la durabilidad a este nivel, el sistema de base de datos deberá basarse en una memoria estable, que es una memoria que es completa e idealmente resistente a fallas. Este tipo de memoria se puede lograr con mecanismos de replicación y protocolos de escritura robustos. [4]

Hay muchas herramientas y tecnologías disponibles para proporcionar una memoria lógica estable, como la duplicación de discos, y su elección depende de los requisitos de las aplicaciones específicas. [4] En general, las estrategias y arquitecturas de replicación y redundancia que se comportan como memoria estable están disponibles en diferentes niveles de la pila tecnológica. De esta manera, incluso en caso de eventos catastróficos en los que el hardware de almacenamiento resulte dañado, se puede evitar la pérdida de datos . [10] En este nivel, existe un fuerte vínculo entre la durabilidad y la recuperación del sistema y de los datos , en el sentido de que el objetivo principal es preservar los datos, no necesariamente en réplicas en línea, sino también como copias fuera de línea. [4] Estas últimas técnicas se incluyen en las categorías de copia de seguridad , prevención de pérdida de datos y recuperación ante desastres . [11]

Por lo tanto, en caso de falla de los medios, la durabilidad de las transacciones está garantizada por la capacidad de reconstruir el estado de la base de datos a partir de los archivos de registro almacenados en la memoria estable, de cualquier forma que se haya implementado en el sistema de la base de datos. [8] Existen varios mecanismos para almacenar y reconstruir el estado de un sistema de base de datos que mejoran el rendimiento, tanto en términos de espacio como de tiempo, en comparación con la gestión de todos los archivos de registro creados desde el inicio del sistema de base de datos. Estos mecanismos suelen incluir volcado incremental , archivos diferenciales y puntos de control . [12]

Bases de datos distribuidas

En las transacciones distribuidas , garantizar la durabilidad requiere mecanismos adicionales para preservar una secuencia de estado consistente en todos los nodos de la base de datos. Esto significa, por ejemplo, que un solo nodo puede no ser suficiente para decidir concluir una transacción al comprometerla. De hecho, los recursos utilizados en esa transacción pueden estar en otros nodos, donde otras transacciones ocurren simultáneamente. De lo contrario, en caso de falla, si no se puede garantizar la coherencia, sería imposible reconocer un estado seguro de la base de datos para su recuperación. Por este motivo, todos los nodos participantes deben coordinarse antes de que se pueda reconocer una confirmación. Esto generalmente se hace mediante un protocolo de confirmación de dos fases . [13]

Además, en las bases de datos distribuidas , incluso los protocolos de registro y recuperación deberán abordar los problemas de los entornos distribuidos , como los interbloqueos , que podrían impedir la resiliencia y la recuperabilidad de las transacciones y, por tanto, la durabilidad. [13] Una familia de algoritmos ampliamente adoptada que garantiza estas propiedades son los Algoritmos para la recuperación y el aislamiento que explotan la semántica (ARIES) . [8]

Ver también

Referencias

  1. ^ abcdefgh Gray, Jim (1981). «El concepto de transacción: Virtudes y limitaciones» (PDF) . VLDB . 81 : 144-154.
  2. ^ "Cumplimiento de ACID: qué significa y por qué debería importarle". MaríaDB . 29 de julio de 2018 . Consultado el 22 de septiembre de 2021 .
  3. ^ abcdefg Hadzilacos, Vassos (1988). "Una teoría de la confiabilidad en los sistemas de bases de datos". Revista de la ACM . 35 (1): 121-145. doi : 10.1145/42267.42272 . ISSN  0004-5411. S2CID  7052304.
  4. ^ abcd Atzeni, Paolo, ed. (1999). Sistemas de bases de datos: conceptos, lenguajes y arquitecturas . Nueva York: McGraw-Hill. págs. 311–320. ISBN 978-0-07-709500-0.
  5. ^ Svobodova, L. (1980). "GESTIÓN DE HISTORIAS DE OBJETOS EN EL REPOSITORIO DE TRAGOS". Mit/LCS Tr-243 . EE.UU.
  6. ^ Petrov, Oleksandr (2019). Aspectos internos de la base de datos: una inmersión profunda en cómo funcionan los sistemas de datos distribuidos (1ª ed.). Beijing Boston Farnham Sebastopol Tokio: O'Reilly. págs. 40–42. ISBN 978-1-4920-4034-7.
  7. ^ Arulraj, alegría; Pavlo, Andrés (9 de mayo de 2017). "Cómo construir un sistema de gestión de bases de datos de memoria no volátil". Actas de la Conferencia Internacional ACM de 2017 sobre Gestión de Datos . SIGMOD '17. Nueva York, NY, EE.UU.: Asociación de Maquinaria de Computación. págs. 1753-1758. doi :10.1145/3035918.3054780. ISBN 978-1-4503-4197-4. S2CID  648876.
  8. ^ abcd Petrov, Oleksandr (2019). Aspectos internos de la base de datos: una inmersión profunda en cómo funcionan los sistemas de datos distribuidos (1ª ed.). Beijing Boston Farnham Sebastopol Tokio: O'Reilly. págs. 185-195. ISBN 978-1-4920-4034-7.
  9. ^ Mohan, C.; Haderle, Don; Lindsay, Bruce; Pirahesh, Hamid; Schwarz, Peter (1 de marzo de 1992). "ARIES: un método de recuperación de transacciones que admite bloqueo de granularidad fina y reversiones parciales mediante registro de escritura anticipada". Transacciones ACM en sistemas de bases de datos . 17 (1): 94-162. doi : 10.1145/128765.128770 . ISSN  0362-5915. S2CID  8759704.
  10. ^ Eich, Margaret H. (1 de febrero de 1987). "Una clasificación y comparación de técnicas de recuperación de bases de datos de memoria principal". 1987 Tercera Conferencia Internacional del IEEE sobre Ingeniería de Datos . IEEE. págs. 332–339. doi :10.1109/ICDE.1987.7272398. ISBN 978-0-8186-0762-2. S2CID  207773738.
  11. ^ Choy, Manhoi; Leong, Hong Va; Wong, hombre Hon (2000). "Técnicas de recuperación ante desastres para sistemas de bases de datos". Comunicaciones de la ACM . 43 (11es): 6. doi :10.1145/352515.352521. ISSN  0001-0782. S2CID  14781378.
  12. ^ Verhofstad, Joost SM (1 de junio de 1978). "Técnicas de recuperación de sistemas de bases de datos". Encuestas de Computación ACM . 10 (2): 167–195. doi :10.1145/356725.356730. S2CID  8847522.
  13. ^ ab Mohan, C.; Haderle, Don; Lindsay, Bruce; Pirahesh, Hamid; Schwarz, Peter (1 de marzo de 1992). "ARIES: un método de recuperación de transacciones que admite bloqueo de granularidad fina y reversiones parciales mediante registro de escritura anticipada". Transacciones ACM en sistemas de bases de datos . 17 (1): 94-162. doi : 10.1145/128765.128770 . ISSN  0362-5915. S2CID  8759704.

Otras lecturas

enlaces externos