¿Qué es el formato de archivo DB-WAL?
Los archivos .db-wal son utilizados por el motor de base de datos SQLite (desde la versión 3.7.0, lanzada en julio de 2010) en el modo de diario WAL (Write-Ahead Logging).
Contenido de los archivos DB-WAL
Los archivos con la extensión .db-wal contienen datos de registro de escritura anticipada para una base de datos SQLite vinculada. Dichos archivos se crean y utilizan mientras una base de datos está abierta y se modifica activamente. Un archivo .db-wal almacena los cambios confirmados de la base de datos -páginas completas de la base de datos- que aún no se han escrito («checkpointed») de nuevo en el archivo .db principal. Este enfoque de escritura anticipada es más rápido que modificar directamente las páginas de la base de datos in situ y garantiza la durabilidad: en caso de un corte de energía repentino o un fallo del sistema, SQLite puede reproducir el WAL para recuperar todas las transacciones confirmadas.
Cada archivo .db-wal comienza con un encabezado de 32 bytes que contiene un número mágico de 4 bytes (0x377f0682 para sumas de comprobación little-endian, 0x377f0683 para big-endian), valores de sal (salt) y una suma de comprobación acumulativa. El cuerpo consta de marcos (frames): un encabezado de marco de 24 bytes más una página completa de la base de datos cada uno. Los valores de sal en el encabezado invalidan los marcos obsoletos después de un punto de control, evitando reproducciones accidentales.
Uso de archivos DB-WAL
La gestión del registro .db-wal está totalmente automatizada por el motor SQLite. Un archivo compañero .db-shm (índice de memoria compartida) siempre está presente junto al WAL mientras la base de datos está abierta. El archivo .db-wal desaparece automáticamente una vez que todos los cambios han pasado por el punto de control; el umbral predeterminado de wal_autocheckpoint es de 1000 páginas. El mecanismo WAL subyacente se utiliza ampliamente en dispositivos móviles; las bases de datos en aplicaciones de Android e iOS operan frecuentemente en modo WAL para mejorar la concurrencia y el rendimiento de escritura.
Seguridad y protección
RIESGO: LOWUn .db-wal contiene datos inertes, no código ejecutable, por lo que no puede ejecutarse por sí mismo. Los riesgos reales son operativos, no de malware: (1) eliminar o perder el -wal mientras la base de datos está abierta, o después de un fallo, descarta las transacciones confirmadas más recientes -respalde el -db, -wal y -shm juntos-; (2) el WAL de una base de datos de una aplicación puede contener datos sensibles aún no procesados (mensajes, tokens, historial), por lo que debe tratarse como confidencial. Si la base de datos principal está cifrada (SQLCipher/SEE), el -wal también lo estará.
Detalles del formato
en pocas palabrasProgramas que abren archivos DB-WAL
Detalles técnicos
especificación profunda| Bytes mágicos | 0x377f0682 en el desplazamiento 0 (sumas de comprobación little-endian) o 0x377f0683 (sumas de comprobación big-endian) |
| Tamaño del encabezado | 32 bytes que contienen el número mágico, la versión del formato de archivo, el tamaño de página, la secuencia del punto de control, el par de sal y la suma de comprobación |
| Estructura del marco | Encabezado de marco de 24 bytes + una página completa de base de datos por marco |
| Tamaño de página | Coincide con el tamaño de página de la base de datos SQLite principal (normalmente 4096 bytes) |
| Suma de comprobación | Suma de comprobación acumulativa de 8 bytes (dos palabras de 32 bits) en cada encabezado de marco y en el encabezado WAL |
| Invalidación por sal | Dos valores de sal de 32 bits se aleatorizan después de cada punto de control, invalidando cualquier marco obsoleto |
| Archivo compañero | Siempre emparejado con un archivo .db-shm (índice de memoria compartida) mientras la base de datos está abierta |
| Convención de nomenclatura | Nombre de archivo de la base de datos con -wal añadido (ej., mydata.db-wal) |
| Activación | Se crea solo cuando la base de datos está configurada en modo WAL (PRAGMA journal_mode=WAL) |
| Punto de control automático | El valor predeterminado de wal_autocheckpoint en 1000 páginas limita el crecimiento máximo del WAL antes del punto de control |
| Campo de versión del formato | El encabezado WAL codifica la versión de la biblioteca SQLite como 3007000 (SQLite 3.7.0, julio de 2010) |
| Cifrado | Ninguno por defecto; se cifra cuando la base de datos utiliza la extensión SEE o SQLCipher |
| Lanzado | SQLite 3.7.0, July 2010 (WAL journaling mode) |
| Última versión | WAL file format magic 0x377f0682 (little-endian) / 0x377f0683 (big-endian) |
| Estándar abierto | Sí · libre de regalías |
| Especificación | www.sqlite.org |
Conversiones de DB-WAL
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos DB-WAL.