Co to jest format pliku DB-WAL?
Pliki .db-wal są używane przez silnik bazy danych SQLite (od wersji 3.7.0, wydanej w lipcu 2010 r.) w trybie kronikowania WAL (Write-Ahead Logging).
Zawartość plików DB-WAL
Pliki z rozszerzeniem .db-wal zawierają dane dziennika zapisu z wyprzedzeniem dla powiązanej bazy danych SQLite. Takie pliki są tworzone i używane, gdy baza danych jest otwarta i aktywnie modyfikowana. Plik .db-wal przechowuje zatwierdzone zmiany bazy danych - kompletne strony bazy danych - które nie zostały jeszcze zapisane („checkpointed”) z powrotem do głównego pliku .db. To podejście typu write-ahead jest szybsze niż bezpośrednie modyfikowanie stron bazy danych w miejscu i zapewnia trwałość: w przypadku nagłej awarii zasilania lub awarii systemu, SQLite może odtworzyć WAL, aby odzyskać wszystkie zatwierdzone transakcje.
Każdy plik .db-wal zaczyna się od 32-bajtowego nagłówka zawierającego 4-bajtową magiczną liczbę (0x377f0682 dla sum kontrolnych little-endian, 0x377f0683 dla big-endian), wartości soli (salt) oraz skumulowaną sumę kontrolną. Treść składa się z ramek: 24-bajtowego nagłówka ramki oraz jednej pełnej strony bazy danych na każdą ramkę. Wartości soli w nagłówku unieważniają nieaktualne ramki po punkcie kontrolnym, zapobiegając przypadkowym powtórzeniom operacji.
Korzystanie z plików DB-WAL
Zarządzanie dziennikiem .db-wal jest w pełni zautomatyzowane przez silnik SQLite. Towarzyszący plik .db-shm (indeks pamięci współdzielonej) jest zawsze obecny obok WAL, gdy baza danych jest otwarta. Plik .db-wal znika automatycznie po zapisaniu wszystkich zmian w punkcie kontrolnym - domyślny próg wal_autocheckpoint wynosi 1000 stron. Mechanizm WAL jest powszechnie stosowany w urządzeniach mobilnych; bazy danych w aplikacjach Android i iOS często działają w trybie WAL w celu poprawy współbieżności i wydajności zapisu.
Bezpieczeństwo
RYZYKO: LOWPlik .db-wal to dane bierne, a nie kod wykonywalny, więc nie może uruchomić się samodzielnie. Rzeczywiste ryzyko ma charakter operacyjny, a nie związany ze złośliwym oprogramowaniem: (1) usunięcie lub utrata -wal, gdy baza danych jest otwarta lub po awarii, powoduje odrzucenie najnowszych zatwierdzonych transakcji - należy tworzyć kopie zapasowe -db, -wal i -shm razem; (2) WAL bazy danych aplikacji może zawierać wrażliwe, jeszcze nieprzetworzone dane (wiadomości, tokeny, historię), więc należy traktować go jako poufny. Jeśli nadrzędna baza danych jest zaszyfrowana (SQLCipher/SEE), plik -wal również jest zaszyfrowany.
Szczegóły formatu
w pigułceProgramy otwierające pliki DB-WAL
Szczegóły techniczne
specyfikacja| Magiczne bajty | 0x377f0682 pod offsetem 0 (sumy kontrolne little-endian) lub 0x377f0683 (sumy kontrolne big-endian) |
| Rozmiar nagłówka | 32 bajty zawierające magiczną liczbę, wersję formatu pliku, rozmiar strony, sekwencję punktu kontrolnego, parę soli i sumę kontrolną |
| Struktura ramki | 24-bajtowy nagłówek ramki + jedna pełna strona bazy danych na ramkę |
| Rozmiar strony | Zgodny z rozmiarem strony nadrzędnej bazy danych SQLite (zazwyczaj 4096 bajtów) |
| Suma kontrolna | Skumulowana 8-bajtowa suma kontrolna (dwa 32-bitowe słowa) w każdym nagłówku ramki i w nagłówku WAL |
| Unieważnianie solą | Dwie 32-bitowe wartości soli są losowane po każdym punkcie kontrolnym, co unieważnia wszelkie nieaktualne ramki |
| Plik towarzyszący | Zawsze sparowany z plikiem .db-shm (indeks pamięci współdzielonej), gdy baza danych jest otwarta |
| Konwencja nazewnictwa | Nazwa pliku bazy danych z dołączonym przyrostkiem -wal (np. mydata.db-wal) |
| Aktywacja | Tworzony tylko wtedy, gdy baza danych jest ustawiona w tryb WAL (PRAGMA journal_mode=WAL) |
| Automatyczny punkt kontrolny | Domyślny wal_autocheckpoint przy 1000 stronach ogranicza maksymalny wzrost WAL przed wykonaniem punktu kontrolnego |
| Pole wersji formatu | Nagłówek WAL koduje wersję biblioteki SQLite jako 3007000 (SQLite 3.7.0, lipiec 2010) |
| Szyfrowanie | Brak domyślnie; szyfrowany, gdy baza danych korzysta z rozszerzenia SEE lub SQLCipher |
| Wydano | SQLite 3.7.0, July 2010 (WAL journaling mode) |
| Najnowsza wersja | WAL file format magic 0x377f0682 (little-endian) / 0x377f0683 (big-endian) |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | www.sqlite.org |
Konwersje DB-WAL
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki DB-WAL.