Co to jest format pliku DB-JOURNAL?
Pliki z rozszerzeniem .db-journal zawierają obrazy stron niezbędne do odzyskania bazy danych SQLite w przypadku niepowodzenia transakcji. Są to pliki tymczasowe tworzone przez SQLite w tym samym katalogu, w którym przechowywana jest baza danych. Nie powinny być widoczne po zakończeniu transakcji, ponieważ SQLite usuwa je automatycznie przy operacji COMMIT lub ROLLBACK.
Dzięki plikom dziennika wycofywania transakcji z rozszerzeniem .db-journal możliwe jest zapewnienie atomowości transakcji w bazie danych. Aplikacja operująca na danych bazy, która ulegnie awarii w trakcie transakcji, nie pozostawi operacji nieukończonych - zostaną one przywrócone do stanu sprzed rozpoczęcia transakcji. Plik .db-journal jest obecny na dysku:
- podczas wykonywania transakcji zapisu (tryb dziennika DELETE, domyślny dla SQLite),
- gdy transakcja została przerwana przez awarię - do czasu następnego otwarcia bazy danych,
- gdy baza danych znajduje się w trybie blokowania wyłącznego (
PRAGMA locking_mode=EXCLUSIVE) - do momentu jego wyłączenia.
SQLite może używać kilku różnych tymczasowych plików pomocniczych w celu zapewnienia spójności i bezpieczeństwa operacji na bazie danych. .db-journal to klasyczny dziennik wycofywania; .db-wal i .db-shm pełnią równoważną rolę w nowszym trybie WAL (Write-Ahead Log).
Nazewnictwo plików .db-journal
Nazwa pliku dziennika jest tworzona poprzez dodanie przyrostka -journal do pełnej nazwy pliku bazy danych. Na przykład, jeśli baza danych jest zapisana jako baza.db, plik tymczasowy otrzyma nazwę baza.db-journal i zostanie zapisany w tym samym katalogu. Pliki tymczasowe nie są normalnie widoczne dla użytkowników. W przypadku awarii lub braku zasilania dziennik pozostaje w katalogu do czasu ponownego otwarcia bazy danych - SQLite wykrywa wtedy „gorący dziennik” (hot journal), odtwarza zapisane obrazy stron, aby przywrócić stan sprzed transakcji, i automatycznie usuwa dziennik.
Nigdy nie należy usuwać pliku .db-journal, gdy trwa transakcja zapisu, ponieważ spowoduje to uszkodzenie bazy danych. Trwały plik .db-journal po poprawnym zamknięciu aplikacji prawie zawsze wskazuje na wcześniejszą awarię; SQLite bezpiecznie obsłuży odzyskiwanie przy następnym otwarciu. W trybie WAL (PRAGMA journal_mode=WAL), wprowadzonym w SQLite 3.7.0 (lipiec 2010), plik .db-journal nie jest w ogóle używany - jego rolę przejmuje plik .db-wal. Większość nowoczesnych baz danych w aplikacjach przeszła na tryb WAL w celu poprawy współbieżności odczytu.
Bezpieczeństwo
RYZYKO: LOWNie jest plikiem wykonywalnym; zawiera binarne dane odzyskiwania po awarii. Usunięcie pliku -journal podczas zapisu do bazy danych spowoduje jej uszkodzenie - jest to główne ryzyko operacyjne. Pozostałości dzienników po awariach można bezpiecznie zostawić do czasu automatycznego odzyskania przez SQLite. Plik -journal może zawierać wrażliwe, niezatwierdzone dane z przerwanej transakcji (częściowe zapisy wiadomości, poświadczeń itp.); należy go traktować z taką samą poufnością jak główną bazę danych. Nie należy otwierać ani udostępniać pliku -journal w izolacji bez nadrzędnej bazy danych.
Szczegóły formatu
w pigułceProgramy otwierające pliki DB-JOURNAL
Szczegóły techniczne
specyfikacja| Typ formatu | Binarny tymczasowy dziennik wycofywania transakcji (plik pomocniczy SQLite) |
| Magiczne bajty | 8-bajtowy nagłówek: 0xD9 0xD5 0x05 0xF9 0x20 0xA1 0x63 0xD7 (gorący/trwały dziennik) |
| Kolejność bajtów | Big-endian (pola nagłówka dziennika przechowywane w sieciowej kolejności bajtów) |
| Rozmiar nagłówka dziennika | 28 bajtów (pola liczby stron, losowej wartości nonce, rozmiaru sektora i rozmiaru strony) |
| Kodowanie | Binarne - przechowuje dosłowne obrazy stron bazy danych SQLite 3 skopiowane przed modyfikacją |
| Suma kontrolna strony | Dwie 32-bitowe liczby całkowite obliczone z nonce i danych strony; niezgodność sygnalizuje nieaktualny lub niekompletny dziennik |
| Typowy rozmiar pliku | Od 0 bajtów do setek MB, zależnie od liczby stron, których dotyczyła przerwana transakcja |
| Tryb dziennika | Używany tylko w trybie DELETE (domyślny dla SQLite); nie jest tworzony w trybie WAL |
| Konwencja nazewnictwa | Ścieżka głównej bazy danych z dodanym przyrostkiem -journal (np. dane.db → dane.db-journal) |
| Mechanizm odzyskiwania | SQLite wykrywa gorący dziennik przy otwieraniu połączenia, odtwarza obrazy stron w celu przywrócenia stanu sprzed transakcji, a następnie usuwa dziennik |
| Zastąpienie przez WAL | Tryb WAL (.db-wal + .db-shm), wprowadzony w SQLite 3.7.0 (lipiec 2010), jest preferowany dla obciążeń współbieżnych i nie korzysta z pliku .db-journal |
| Wydano | SQLite 1.0, 2000 (rollback journal is the original journaling mechanism) |
| Najnowsza wersja | SQLite 3.x current - format unchanged since early SQLite 3; superseded in practice by WAL (-wal) |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | www.sqlite.org |
Konwersje DB-JOURNAL
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki DB-JOURNAL.