stringtranslate.com

Consistencia de los datos

La inconsistencia de los datos se refiere a si los mismos datos conservados en diferentes lugares coinciden o no.

Coherencia en un momento determinado

La coherencia en un punto en el tiempo es una propiedad importante de los archivos de respaldo y un objetivo crítico del software que crea respaldos. También es relevante para el diseño de sistemas de memoria en disco, específicamente en relación con lo que sucede cuando se apagan inesperadamente.

Como ejemplo de copia de seguridad relevante, considere un sitio web con una base de datos como la enciclopedia en línea Wikipedia , que debe estar operativa las 24 horas del día, pero también debe respaldarse con regularidad para proteger contra desastres. Partes de Wikipedia se actualizan constantemente cada minuto de cada día; mientras tanto, la base de datos de Wikipedia se almacena en servidores en forma de uno o varios archivos muy grandes cuya copia de seguridad requiere minutos u horas.

Estos archivos grandes, como cualquier base de datos, contienen numerosas estructuras de datos que hacen referencia entre sí por ubicación. Por ejemplo, algunas estructuras son índices que permiten al subsistema de base de datos encontrar rápidamente resultados de búsqueda. Si las estructuras de datos dejan de hacer referencia entre sí correctamente, entonces se puede decir que la base de datos está corrupta .

Ejemplo de contador

La importancia de la coherencia en un punto en el tiempo se puede ilustrar con lo que sucedería si se realizara una copia de seguridad sin ella.

Supongamos que la base de datos de Wikipedia es un archivo enorme, que tiene un índice importante ubicado en el 20% del contenido y guarda los datos del artículo en la marca del 75%. Considere un escenario en el que un editor llega y crea un nuevo artículo al mismo tiempo que se realiza una copia de seguridad, que se realiza como una simple " copia de archivo " que copia desde el principio hasta el final de los archivos grandes y no No considera la coherencia de los datos y, en el momento de la edición del artículo, está completo en un 50%. El nuevo artículo se agrega al espacio del artículo (en la marca del 75%) y se agrega una entrada de índice correspondiente (en la marca del 20%).

Debido a que la copia de seguridad ya está a mitad de camino y el índice ya se ha copiado, la copia de seguridad se escribirá con los datos del artículo presentes, pero sin la referencia del índice. Como resultado de la inconsistencia, este archivo se considera dañado.

En la vida real, una base de datos real como la de Wikipedia puede editarse miles de veces por hora, y las referencias prácticamente siempre están repartidas por todo el archivo y pueden ascender a millones, miles de millones o más. Una copia de seguridad secuencial contendría literalmente tantas pequeñas corrupciones que la copia de seguridad sería completamente inutilizable sin un largo proceso de reparación que no podría ofrecer garantía de la integridad de lo que se ha recuperado.

Un proceso de copia de seguridad que tenga en cuenta adecuadamente la coherencia de los datos garantiza que la copia de seguridad sea una instantánea de cómo se veía toda la base de datos en un momento determinado. En el ejemplo de Wikipedia dado, garantizaría que la copia de seguridad se escribiera sin el artículo agregado en la marca del 75%, de modo que los datos del artículo fueran consistentes con los datos del índice escritos previamente.

Sistemas de almacenamiento en caché de disco

La coherencia en un momento dado también es relevante para los subsistemas de discos de computadora.

Específicamente, los sistemas operativos y los sistemas de archivos están diseñados con la expectativa de que el sistema informático en el que se ejecutan pueda perder energía, fallar, fallar o dejar de funcionar en cualquier momento. Cuando se diseñan correctamente, garantizan que los datos no se corrompan irremediablemente si se corta la energía. Los sistemas operativos y los sistemas de archivos hacen esto asegurándose de que los datos se escriban en un disco duro en un orden determinado y dependen de ello para detectar y recuperarse de apagados inesperados .

Por otro lado, escribir datos rigurosamente en el disco en el orden que maximice la integridad de los datos también afecta el rendimiento. Se utiliza un proceso de almacenamiento en caché de escritura para consolidar y volver a secuenciar las operaciones de escritura de modo que puedan realizarse más rápido minimizando el tiempo dedicado a mover los cabezales de los discos.

Las preocupaciones sobre la coherencia de los datos surgen cuando el almacenamiento en caché de escritura cambia la secuencia en la que se realizan las escrituras, porque existe la posibilidad de un apagado inesperado que viole la expectativa del sistema operativo de que todas las escrituras se realizarán secuencialmente.

Por ejemplo, para guardar un documento típico o un archivo de imagen, un sistema operativo podría escribir los siguientes registros en un disco en el siguiente orden:

  1. Entrada del diario que dice que el archivo XYZ está a punto de guardarse en el sector 123.
  2. El contenido real del archivo XYZ se escribe en el sector 123.
  3. El sector 123 ahora está marcado como ocupado en el registro de espacio libre/utilizado.
  4. Entrada de diario que anota el archivo completamente guardado, su nombre es XYZ y está ubicado en el sector 123.

El sistema operativo se basa en la suposición de que si ve que el elemento n.° 1 está presente (lo que indica que el archivo está a punto de guardarse), pero falta el elemento n.° 4 (lo que confirma el éxito), la operación de guardado no tuvo éxito y, por lo tanto, debe deshacerla. cualquier paso incompleto ya realizado para guardarlo (por ejemplo, marcar el sector 123 como libre ya que nunca se llenó correctamente y eliminar cualquier registro de XYZ del directorio de archivos). Depende de que estos elementos se envíen al disco en orden secuencial.

Supongamos que un algoritmo de almacenamiento en caché determina que sería más rápido escribir estos elementos en el disco en el orden 4-3-1-2, y comienza a hacerlo, pero la energía se apaga después de que se escriben 4, antes de que 3, 1 y 2, y entonces esas escrituras nunca ocurren. Cuando se vuelve a encender la computadora, el sistema de archivos mostrará que contiene un archivo llamado XYZ que se encuentra en el sector 123, pero este sector en realidad no contiene el archivo. (En cambio, el sector contendrá basura, ceros o una porción aleatoria de algún archivo antiguo, y eso es lo que se mostrará si se abre el archivo).

Además, el mapa de espacio libre del sistema de archivos no contendrá ninguna entrada que muestre que el sector 123 está ocupado, por lo que más tarde probablemente asignará ese sector al siguiente archivo que se guardará, creyendo que está disponible. El sistema de archivos tendrá entonces dos archivos que inesperadamente reclamarán el mismo sector (conocido como archivo con vínculos cruzados ). Como resultado, escribir en uno de los archivos sobrescribirá parte del otro archivo, dañándolo de forma invisible.

Un subsistema de almacenamiento en caché de disco que garantiza la coherencia en un momento determinado garantiza que, en caso de un apagado inesperado, los cuatro elementos se escribirían de una de las cinco formas posibles: completamente (1-2-3-4), parcialmente (1, 1-2, 1-2-3), o nada en absoluto.

Los controladores de disco de hardware de alta gama del tipo que se encuentran en los servidores incluyen una pequeña unidad de respaldo de batería en su memoria caché para que puedan ofrecer las ganancias de rendimiento del almacenamiento en caché de escritura y al mismo tiempo mitigar el riesgo de apagados no deseados. La unidad de respaldo de batería mantiene la memoria alimentada incluso durante un apagado, de modo que cuando la computadora vuelve a encenderse, puede completar rápidamente cualquier escritura que haya realizado previamente. Con dicho controlador, el sistema operativo puede solicitar cuatro escrituras (1-2-3-4) en ese orden, pero el controlador puede decidir que la forma más rápida de escribirlas es 4-3-1-2. Básicamente, el controlador miente al sistema operativo e informa que las escrituras se han completado en orden (una mentira que mejora el rendimiento a expensas de la corrupción de datos si se corta la energía), y la batería de respaldo protege contra el riesgo de corrupción de datos al darle al controlador una forma de reparar silenciosamente todos y cada uno de los daños que puedan ocurrir como resultado.

Si se corta la energía después de que se haya escrito el elemento 4, la memoria respaldada por batería contiene el registro de compromiso para los otros tres elementos y garantiza que se escriban ("vacíen") en el disco en la próxima oportunidad disponible.

Consistencia de transacciones

La coherencia (sistemas de bases de datos) en el ámbito de los sistemas de bases de datos distribuidas se refiere a la propiedad de muchas bases de datos ACID de garantizar que los resultados de una transacción de base de datos sean visibles para todos los nodos simultáneamente. Es decir, una vez que se ha confirmado la transacción, todas las partes que intentan acceder a la base de datos pueden ver los resultados de esa transacción simultáneamente.

Un buen ejemplo de la importancia de la coherencia de las transacciones es una base de datos que maneja la transferencia de dinero. Supongamos que una transferencia de dinero requiere dos operaciones: escribir un débito en un lugar y un crédito en otro. Si el sistema falla o se apaga cuando una operación se ha completado pero la otra no, y no hay nada para corregir esto, se puede decir que el sistema carece de coherencia en las transacciones. Con una transferencia de dinero, es deseable que se complete toda la transacción o que no se complete ninguna. Ambos escenarios mantienen el equilibrio bajo control.

La coherencia de las transacciones garantiza precisamente eso: que un sistema esté programado para poder detectar transacciones incompletas cuando se enciende y deshacer (o "revertir") la parte de las transacciones incompletas que se encuentren.

Consistencia de la aplicación

La coherencia de las aplicaciones, similar a la coherencia de las transacciones, se aplica a mayor escala. En lugar de tener el alcance de una única transacción, los datos deben ser consistentes dentro de los límites de muchos flujos de transacciones diferentes de una o más aplicaciones. Una aplicación puede estar compuesta por muchos tipos diferentes de datos, varios tipos de archivos y fuentes de datos de otras aplicaciones. La coherencia de la aplicación es el estado en el que se sincronizan todos los archivos y bases de datos relacionados, lo que representa el verdadero estado de la aplicación.