Vad är filformatet DB-WAL?
.db-wal-filer används av databasmotorn SQLite (sedan version 3.7.0, släppt juli 2010) i journalföringsläget WAL (Write-Ahead Logging).
Innehåll i DB-WAL-filer
Filer med filtillägget .db-wal innehåller loggdata för en parad SQLite-databas. Sådana filer skapas och används medan en databas är öppen och aktivt modifieras. En .db-wal-fil lagrar bekräftade databasändringar - kompletta databassidor - som ännu inte har skrivits («checkpointed») tillbaka till huvudfilen .db. Denna metod är snabbare än att direkt modifiera databassidor på plats och säkerställer hållbarhet: i händelse av ett plötsligt strömavbrott eller systemkrasch kan SQLite spela upp WAL-loggen för att återställa alla bekräftade transaktioner.
Varje .db-wal-fil börjar med ett 32-byte huvud (header) som innehåller ett 4-byte magiskt nummer (0x377f0682 för little-endian kontrollsummor, 0x377f0683 för big-endian), salt-värden och en kumulativ kontrollsumma. Kroppen består av ramar: ett 24-byte ramhuvud plus en fullständig databassida per ram. Salt-värdena i huvudet ogiltigförklarar gamla ramar efter en kontrollpunkt, vilket förhindrar oavsiktliga uppspelningar.
Användning av DB-WAL-filer
Hanteringen av .db-wal-loggar är helt automatiserad av SQLite-motorn. En tillhörande .db-shm-fil (delat minnesindex) finns alltid bredvid WAL-filen medan databasen är öppen. .db-wal-filen försvinner automatiskt när alla ändringar har skrivits över - standardtröskeln för wal_autocheckpoint är 1000 sidor. Den underliggande WAL-mekanismen används i stor utsträckning på mobila enheter; databaser i appar för Android och iOS körs ofta i WAL-läge för förbättrad samtidighet och skrivprestanda.
Säkerhet & trygghet
RISK: LOWEn .db-wal består av inerta data, inte exekverbar kod, så den kan inte köras av sig själv. De verkliga riskerna är operativa, inte skadlig kod: (1) radering eller förlust av -wal medan databasen är öppen, eller efter en krasch, kastar bort de senaste bekräftade transaktionerna - säkerhetskopiera -db, -wal och -shm tillsammans; (2) WAL-filen för en app-databas kan innehålla känsliga data som ännu inte skrivits över (meddelanden, tokens, historik), så hantera den som konfidentiell. Om den överordnade databasen är krypterad (SQLCipher/SEE), är även -wal-filen krypterad.
Formatdetaljer
i ett nötskalProgram som öppnar DB-WAL-filer
Tekniska detaljer
djup specifikation| Magic bytes | 0x377f0682 vid offset 0 (little-endian kontrollsummor) eller 0x377f0683 (big-endian kontrollsummor) |
| Huvudstorlek | 32 byte innehållande magiskt nummer, filformatsversion, sidstorlek, kontrollpunktssekvens, salt-par och kontrollsumma |
| Ramstruktur | 24-byte ramhuvud + en fullständig databassida per ram |
| Sidstorlek | Matchar sidstorleken för den överordnade SQLite-databasen (vanligtvis 4096 byte) |
| Kontrollsumma | Kumulativ 8-byte kontrollsumma (två 32-bitars ord) i varje ramhuvud och i WAL-huvudet |
| Salt-ogiltigförklaring | Två 32-bitars salt-värden slumpas efter varje kontrollpunkt, vilket ogiltigförklarar gamla ramar |
| Följefil | Alltid parad med en .db-shm-fil (delat minnesindex) medan databasen är öppen |
| Namnkonvention | Databasens filnamn med -wal tillagt (t.ex. mydata.db-wal) |
| Aktivering | Skapas endast när databasen är inställd på WAL-läge (PRAGMA journal_mode=WAL) |
| Auto-kontrollpunkt | Standardvärdet wal_autocheckpoint vid 1000 sidor begränsar maximal WAL-tillväxt före skrivning |
| Fält för formatversion | WAL-huvudet kodar SQLite-bibliotekets version som 3007000 (SQLite 3.7.0, juli 2010) |
| Kryptering | Ingen som standard; krypterad när databasen använder tilläggen SEE eller SQLCipher |
| Släppt | SQLite 3.7.0, July 2010 (WAL journaling mode) |
| Senaste version | WAL file format magic 0x377f0682 (little-endian) / 0x377f0683 (big-endian) |
| Öppen standard | Ja · royaltyfri |
| Specifikation | www.sqlite.org |
DB-WAL-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om DB-WAL-filer.