Interfaz ILog (txlogpub.h)
Proporciona funcionalidad genérica de registro de bajo nivel.
El sistema de archivos de registro común (CLFS), proporciona una funcionalidad que es un superconjunto de que proporciona ILog.
Herencia
La interfaz ILog hereda de la interfaz IUnknown . ILog también tiene estos tipos de miembros:
Métodos
La interfaz ILog tiene estos métodos.
ILog::AppendRecord Escriba un registro nuevo al final del registro. |
ILog::Force Fuerza el contenido del registro al disco, al menos hasta el LSN especificado. |
ILog::GetLogLimits Recupera información sobre los límites actuales del registro. |
ILog::ReadRecord Lee un registro del registro. |
ILog::ReadRecordPrefix Lee una parte inicial de un registro del registro. |
ILog::SetAccessPolicyHint Proporciona una sugerencia a la implementación sobre el patrón en el que se leerán los registros. |
ILog::TruncatePrefix Elimina el prefijo especificado del registro, lo que hace que ya no se pueda recuperar. |
Comentarios
WAL es una técnica que usan determinadas aplicaciones, como sistemas de administración de bases de datos, para implementar transacciones atómicas y aisladas. Esta técnica implica escribir registros de cambios en los recursos de la aplicación en un registro antes de realizar estos cambios. De este modo, los cambios se pueden revertir si son necesarios, por ejemplo, si se produce un error en la transacción o se interrumpe. Para que las aplicaciones proporcionen transacciones sólidas contra interrupciones, como bloqueo del sistema o error de energía, la implementación del registro debe proporcionar un método para forzar el registro; es decir, para asegurarse de que los registros escritos anteriormente están en el disco antes de continuar.
Escribir registros que usan ILog es una operación secuencial; es decir, los nuevos registros siempre se anexan al final del registro. A cada registro anexado al registro se le asigna un número de secuencia de registro (LSN), un identificador numérico que se puede usar para recuperar el registro más adelante. El LSN de tipo de datos es una definición de tipo para LARGE_INTEGER, un valor de 64 bits con signo; sin embargo, ILog solo usa LSN con valores no negativos. Además, los LSN deben cumplir las condiciones siguientes:
- Los LSN están aumentando monotónicamente; si el registro B se escribe en el registro después del registro A, el LSN del registro B debe ser mayor que el LSN del registro A.
- Los valores de cero y MAXLSN (0x7FFFFFFFFFFFFFFF) nunca se deben usar como LSN de un registro, ya que tienen un significado especial para algunos de los métodos de ILog.
Después de anexar un registro al registro, es posible que no se modifique. Sin embargo, cuando los registros escritos anteriormente ya no son necesarios, por ejemplo, registros de cambios en una transacción que ya se ha confirmado, ILog admite truncar el registro. De este modo, se puede reutilizar el espacio en disco que se usó para los registros no esenciales. Truncar el registro consiste en eliminar todos los registros con un LSN menor que un valor especificado.
Como optimización del rendimiento, algunas implementaciones de ILog pueden almacenar en búfer registros en memoria hasta que se fuerza el registro. Si este es el caso, especial debe tener en cuenta el control de errores y la recuperación. Considere la siguiente situación:
- El registro A se anexa al registro, pero el registro no se fuerza. La implementación de ILog copia el registro en un búfer en la memoria y devuelve un código correcto.
- El registro B se anexa al registro y la implementación de ILog decide forzar el registro al disco. Esto se debe a que el autor de la llamada pidió al registro que se forzara o porque el búfer de memoria está lleno. Sin embargo, se produce un error en la operación de escritura, por ejemplo debido a poco espacio en disco.
Implementación basada en archivos de ILog
El sistema operativo Windows proporciona una implementación basada en archivos de ILog, que permite crear un registro adecuado para el registro de escritura anticipada en un archivo. El registro usa un archivo como un búfer circular, que permite reutilizar el espacio sin usar. Esto también puede aumentar el tamaño del archivo que puede ser necesario para ajustarse a registros adicionales cuando el registro está lleno. Los cambios realizados en el registro se realizan de forma atómica, de modo que el contenido del registro se pueda recuperar después de un bloqueo. Esta implementación usa un búfer en memoria para anexar registros de registro. Como resultado, no se garantiza que los registros se escriban en el disco cuando el método ILog::AppendRecord devuelva, a menos que el autor de la llamada solicite que se obligue el registro.Use el clSID siguiente para crear una instancia de un registro basado en archivos (consulte CoCreateInstance):
CLSID_SimpleFileBasedLog ({E16C0593-128F-11D1-97E4-00C04FB9618A} ).
La implementación basada en archivos de ILog también admite las interfaces IFileBasedLogInit e IPersistFile . Use IFileBasedLogInit::InitNew para crear un nuevo archivo de registro. Use IPersistFile::Load para abrir un archivo de registro existente.
Esta implementación usa una directiva de control de errores simple. Si se produce un error en alguno de los métodos debido a un error en el nivel de sistema de archivos, que incluye un error completo del disco, el registro se ancla en un estado de error. Esto impide que los clientes anexen registros adicionales al archivo o lean registros potencialmente incorrectos. Para seguir usando el archivo de registro, debe crear una nueva instancia del registro.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | txlogpub.h |