En informática , el registro de escritura anticipada ( WAL ) es una familia de técnicas para proporcionar atomicidad y durabilidad (dos de las propiedades ACID ) en sistemas de bases de datos . [1]
Un registro de escritura anticipada es una estructura auxiliar residente en el disco que solo se puede agregar y que se utiliza para la recuperación de transacciones y fallos. Los cambios se registran primero en el registro, que debe escribirse en el almacenamiento estable , antes de que se escriban en la base de datos. [2]
La funcionalidad principal de un registro de escritura anticipada se puede resumir de la siguiente manera: [3]
- Permite que el caché de páginas almacene en búfer las actualizaciones de las páginas residentes en el disco y al mismo tiempo garantiza la semántica de durabilidad en el contexto más amplio de un sistema de base de datos.
- Conservar todas las operaciones en el disco hasta que las copias en caché de las páginas afectadas por estas operaciones se sincronicen en el disco. Cada operación que modifica el estado de la base de datos debe registrarse en el disco antes de que se pueda modificar el contenido de las páginas asociadas.
- Permitir que los cambios perdidos en la memoria se reconstruyan desde el registro de operaciones en caso de una falla.
En un sistema que utiliza WAL, todas las modificaciones se escriben en un registro antes de que se apliquen. Normalmente, tanto la información de rehacer como de deshacer se almacena en el registro.
El propósito de esto se puede ilustrar con un ejemplo. Imaginemos un programa que está realizando alguna operación cuando la máquina en la que se está ejecutando se queda sin energía. Al reiniciarse, ese programa podría necesitar saber si la operación que estaba realizando tuvo éxito, tuvo éxito parcial o falló. Si se utiliza un registro de escritura anticipada, el programa puede consultar este registro y comparar lo que se suponía que debía estar haciendo cuando se quedó sin energía inesperadamente con lo que realmente hizo. Sobre la base de esta comparación, el programa podría decidir deshacer lo que había comenzado, completar lo que había comenzado o dejar las cosas como están.
Después de una cierta cantidad de operaciones, el programa debe realizar un punto de control , escribiendo todos los cambios especificados en el WAL en la base de datos y borrando el registro.
WAL permite que las actualizaciones de una base de datos se realicen en el lugar . Otra forma de implementar actualizaciones atómicas es con paginación en la sombra , que no es en el lugar. La principal ventaja de realizar actualizaciones en el lugar es que reduce la necesidad de modificar índices y listas de bloqueo.
ARIES es un algoritmo popular en la familia WAL.
Los sistemas de archivos modernos generalmente utilizan una variante de WAL al menos para los metadatos del sistema de archivos ; esto se denomina registro en diario .
Referencias
- ^ Hellerstein, Joseph M.; Stonebraker, Michael; Hamilton, James (2007). Arquitectura de un sistema de base de datos . Boston: Now. ISBN 978-1-60198-079-3.OCLC 191079239 .
- ^ "30.3. Registro de escritura anticipada (WAL)". Documentación de PostgreSQL . 2023-05-11 . Consultado el 2023-06-05 .
- ^ Petrov, Alex (2019). Database Internals: una mirada profunda al funcionamiento de los sistemas de datos distribuidos. O'Reilly Media. ISBN 978-1492040347.OCLC 1103591515 .