Técnicas de recuperación de bases de datos en DBMS

Los sistemas de bases de datos , como cualquier otro sistema informático, están sujetos a fallas, pero los datos almacenados en ellos deben estar disponibles cuando sea necesario. Cuando una base de datos falla, debe poseer las instalaciones para una recuperación rápida. También debe tener atomicidad, es decir, las transacciones se completan con éxito y se confirman (el efecto se registra de forma permanente en la base de datos) o la transacción no debe tener ningún efecto en la base de datos.

Existen formas automáticas y no automáticas para realizar copias de seguridad de los datos y recuperarse de cualquier situación de falla. Las técnicas utilizadas para recuperar los datos perdidos debido a fallas del sistema, errores de transacción, virus, fallas catastróficas, ejecución incorrecta de comandos, etc. son técnicas de recuperación de bases de datos. Por lo tanto, para evitar la pérdida de datos, se pueden utilizar técnicas de recuperación basadas en la actualización diferida y la actualización inmediata o la copia de seguridad de los datos.

Las técnicas de recuperación dependen en gran medida de la existencia de un archivo especial conocido como registro del sistema . Contiene información sobre el inicio y el final de cada transacción y cualquier actualización que ocurra en la transacción . El registro realiza un seguimiento de todas las operaciones de transacción que afectan los valores de los elementos de la base de datos. Esta información es necesaria para recuperarse de una falla en la transacción.

  • El registro se mantiene en el disco start_transaction(T): esta entrada de registro registra que la transacción T inicia la ejecución.
  • read_item(T, X): esta entrada de registro registra que la transacción T lee el valor del elemento de la base de datos X.
  • write_item(T, X, old_value, new_value): Esta entrada de registro registra que la transacción T cambia el valor del elemento de la base de datos X de old_value a new_value. El valor anterior a veces se conoce como una imagen anterior de X, y el nuevo valor se conoce como una imagen posterior de X.
  • commit(T): esta entrada de registro registra que la transacción T ha completado todos los accesos a la base de datos con éxito y su efecto se puede confirmar (registrar de forma permanente) en la base de datos.
  • abort(T): Esto registra que la transacción T ha sido abortada.
  • punto de control: el punto de control es un mecanismo donde todos los registros anteriores se eliminan del sistema y se almacenan permanentemente en un disco de almacenamiento. Checkpoint declara un punto antes del cual el DBMS estaba en un estado consistente y todas las transacciones se confirmaron.

Una transacción T alcanza su punto de confirmación cuando todas sus operaciones que acceden a la base de datos se han ejecutado con éxito, es decir, la transacción ha llegado al punto en el que no abortará (terminará sin completarse). Una vez confirmada, la transacción se registra de forma permanente en la base de datos. El compromiso siempre implica escribir una entrada de compromiso en el registro y escribir el registro en el disco. En el momento de un bloqueo del sistema, el elemento se busca en el registro para todas las transacciones T que han escrito una entrada start_transaction(T) en el registro pero que aún no han escrito una entrada commit(T); estas transacciones pueden tener que revertirse para deshacer su efecto en la base de datos durante el proceso de recuperación

  • Deshacer: si una transacción falla, el administrador de recuperación puede deshacer las transacciones, es decir, revertir las operaciones de una transacción. Esto implica examinar una transacción para la entrada de registro write_item(T, x, old_value, new_value) y establecer el valor del elemento x en la base de datos a old-value. Existen dos técnicas principales para la recuperación de fallas de transacciones no catastróficas: actualizaciones diferidas y actualizaciones inmediatas.
  • Actualización diferida: esta técnica no actualiza físicamente la base de datos en el disco hasta que una transacción alcanza su punto de confirmación. Antes de llegar a la confirmación, todas las actualizaciones de transacciones se registran en el espacio de trabajo de transacciones local. Si una transacción falla antes de llegar a su punto de compromiso, no habrá cambiado la base de datos de ninguna manera, por lo que no es necesario DESHACER. Puede ser necesario REHACER el efecto de las operaciones que se registran en el espacio de trabajo de transacciones locales, porque es posible que su efecto aún no se haya escrito en la base de datos. Por lo tanto, una actualización diferida también se conoce como el algoritmo No-undo/redo
  • Actualización inmediata: en la actualización inmediata, la base de datos puede actualizarse mediante algunas operaciones de una transacción antes de que la transacción alcance su punto de confirmación. Sin embargo, estas operaciones se registran en un disco de registro antes de que se apliquen a la base de datos, lo que hace posible la recuperación. Si una transacción no logra alcanzar su punto de compromiso, el efecto de su operación debe deshacer, es decir, la transacción debe revertirse, por lo que necesitamos tanto deshacer como rehacer. Esta técnica se conoce como algoritmo de deshacer/rehacer.
  • Almacenamiento en caché/búfer: en esta, una o más páginas del disco que incluyen elementos de datos que se actualizarán se almacenan en caché en los búferes de la memoria principal y luego se actualizan en la memoria antes de volver a escribirse en el disco. Una colección de búferes en memoria llamada caché DBMS se mantiene bajo el control de DBMS para almacenar estos búferes. Se utiliza un directorio para realizar un seguimiento de los elementos de la base de datos que se encuentran en el búfer. Un bit sucio está asociado con cada búfer, que es 0 si el búfer no se modifica o 1 si se modifica.
  • Paginación de sombra: proporciona atomicidad y durabilidad. Se construye un directorio con n entradas, donde la i-ésima entrada apunta a la i-ésima página de la base de datos en el enlace. Cuando una transacción comenzó a ejecutarse, el directorio actual se copia en un directorio sombra. Cuando se va a modificar una página, se asigna una página sombra en la que se realizan los cambios y cuando está lista para convertirse en duradera, todas las páginas que hacen referencia al original se actualizan para hacer referencia a la nueva página de reemplazo.

Algunas de las técnicas de copia de seguridad son las siguientes:

  • Copia de seguridad completa de la base de datos: en esta base de datos completa, incluidos los datos y la base de datos, se realiza una copia de seguridad de la metainformación necesaria para restaurar toda la base de datos, incluidos los catálogos de texto completo, en una serie de tiempo predefinida.
  • Copia de seguridad diferencial: almacena solo los cambios de datos que se han producido desde la última copia de seguridad completa de la base de datos. Cuando los mismos datos han cambiado muchas veces desde la última copia de seguridad completa de la base de datos, una copia de seguridad diferencial almacena la versión más reciente de los datos modificados. Para esto primero, necesitamos restaurar una copia de seguridad completa de la base de datos.
  • Copia de seguridad del registro de transacciones: en esto, se realiza una copia de seguridad de todos los eventos que han ocurrido en la base de datos, como un registro de cada instrucción ejecutada. Es la copia de seguridad de las entradas del registro de transacciones y contiene todas las transacciones que se produjeron en la base de datos. A través de esto, la base de datos se puede recuperar a un punto específico en el tiempo. Incluso es posible realizar una copia de seguridad desde un registro de transacciones si los archivos de datos se destruyen y no se pierde ni una sola transacción confirmada.

Referencia –
Copia de seguridad y recuperación – cs.uct.ac.za/mit_notes

Este artículo es una contribución de Himanshi . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *