Wat is het DB-WAL-bestandsformaat?
.db-wal bestanden worden gebruikt door de SQLite database-engine (sinds versie 3.7.0, uitgebracht in juli 2010) in de WAL (Write-Ahead Logging) journaalmodus.
Inhoud van DB-WAL bestanden
Bestanden met de extensie .db-wal bevatten write-ahead loggegevens voor een bijbehorende SQLite database. Dergelijke bestanden worden aangemaakt en gebruikt terwijl een database geopend is en actief wordt gewijzigd. Een .db-wal bestand slaat doorgevoerde databasewijzigingen op - volledige databasepagina's - die nog niet zijn teruggeschreven („checkpointed”) naar het hoofd .db bestand. Deze write-ahead aanpak is sneller dan het direct ter plaatse wijzigen van databasepagina's en garandeert duurzaamheid: in het geval van een plotselinge stroomuitval of systeemcrash kan SQLite de WAL opnieuw afspelen om alle doorgevoerde transacties te herstellen.
Elk .db-wal bestand begint met een 32-byte header die een 4-byte magic number bevat (0x377f0682 voor little-endian checksums, 0x377f0683 for big-endian), salt-waarden en een cumulatieve checksum. De body bestaat uit frames: een 24-byte frame-header plus telkens één volledige databasepagina. Salt-waarden in de header maken verouderde frames ongeldig na een checkpoint, wat onbedoelde herhalingen voorkomt.
Gebruik van DB-WAL bestanden
.db-wal logbeheer is volledig geautomatiseerd door de SQLite engine. Een bijbehorend .db-shm bestand (shared-memory index) is altijd aanwezig naast de WAL terwijl de database geopend is. Het .db-wal bestand verdwijnt automatisch zodra alle wijzigingen zijn gecheckpoint - de standaard wal_autocheckpoint drempelwaarde is 1000 pagina's. Het onderliggende WAL-mechanisme wordt veelvuldig gebruikt op mobiele apparaten; databases in Android en iOS apps werken vaak in WAL-modus voor verbeterde gelijktijdigheid en schrijfprestaties.
Beveiliging & veiligheid
RISICO: LOWEen .db-wal bevat inerte gegevens, geen uitvoerbare code, dus het kan niet uit zichzelf draaien. De echte risico's zijn operationeel, niet malware: (1) het verwijderen of verliezen van de -wal terwijl de database open is, of na een crash, gooit de nieuwste doorgevoerde transacties weg - maak samen een back-up van de -db, -wal en -shm; (2) de WAL van een app-database kan gevoelige, nog niet gecheckpointte gegevens bevatten (berichten, tokens, geschiedenis), dus behandel het als vertrouwelijk. Als de hoofddatabase versleuteld is (SQLCipher/SEE), is de -wal ook versleuteld.
Formaatdetails
in een notendopProgramma's die DB-WAL-bestanden openen
Technische details
diepe specificaties| Magic bytes | 0x377f0682 op offset 0 (little-endian checksums) of 0x377f0683 (big-endian checksums) |
| Header grootte | 32 bytes met magic, bestandsformaat-versie, paginagrootte, checkpoint-reeks, salt-paar en checksum |
| Frame-structuur | 24-byte frame-header + één volledige databasepagina per frame |
| Paginagrootte | Komt overeen met de paginagrootte van de bovenliggende SQLite database (meestal 4096 bytes) |
| Checksum | Cumulatieve 8-byte checksum (twee 32-bit woorden) in elke frame-header en in de WAL-header |
| Salt-invalidatie | Twee 32-bit salt-waarden worden na elk checkpoint willekeurig gekozen, waardoor verouderde frames ongeldig worden |
| Hulpbestand | Altijd gekoppeld aan een .db-shm (shared-memory index) bestand terwijl de database open is |
| Naamgevingsconventie | Bestandsnaam van de database met -wal erachter (bijv. mydata.db-wal) |
| Activatie | Alleen aangemaakt wanneer de database is ingesteld op WAL-modus (PRAGMA journal_mode=WAL) |
| Auto-checkpoint | Standaard wal_autocheckpoint bij 1000 pagina's beperkt de maximale WAL-groei voor het checkpointen |
| Veld voor formaatversie | WAL-header codeert de SQLite-bibliotheekversie als 3007000 (SQLite 3.7.0, juli 2010) |
| Versleuteling | Geen standaard; versleuteld wanneer de database de SEE of SQLCipher extensie gebruikt |
| Uitgebracht | SQLite 3.7.0, July 2010 (WAL journaling mode) |
| Laatste versie | WAL file format magic 0x377f0682 (little-endian) / 0x377f0683 (big-endian) |
| Open standaard | Ja · royaltyvrij |
| Specificatie | www.sqlite.org |
DB-WAL conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over DB-WAL-bestanden.