Hva er DB-JOURNAL-filformatet?
Filer med filendelsen .db-journal inneholder sidebildene som er nødvendige for gjenoppretting av en SQLite-database i tilfelle en transaksjonsfeil. Dette er midlertidige filer opprettet av SQLite i samme mappe som databasen er lagret. De skal ikke være synlige etter at transaksjonen er avsluttet, da SQLite sletter dem automatisk ved COMMIT eller ROLLBACK.
Takket være transaksjonsjournalfiler med filendelsen .db-journal, er det mulig å sikre atomisitet for transaksjoner i databasen. En applikasjon som opererer på databasedata og krasjer midt i en transaksjon, vil ikke etterlate ufullstendige operasjoner - de vil bli tilbakestilt til tilstanden før transaksjonen startet. En .db-journal-fil er til stede på disken:
- under utførelse av en skrivetransaksjon (journalmodus DELETE, som er standard i SQLite),
- når en transaksjon ble avbrutt av et krasj - inntil neste tilkobling åpner databasen,
- når databasen er i eksklusiv låsemodus (
PRAGMA locking_mode=EXCLUSIVE) - inntil den slås av.
SQLite kan bruke flere forskjellige midlertidige sidevognsfiler for å sikre koherens og sikkerhet i databaseoperasjoner. .db-journal er den klassiske rollback-journalen; .db-wal og .db-shm tjener tilsvarende rolle i den nyere WAL-modusen (Write-Ahead Log).
Navngivning av .db-journal-filer
Journalfilen får navn ved å legge til -journal til det fulle filnavnet på databasen. For eksempel, hvis databasen er lagret som baza.db, vil den midlertidige filen hete baza.db-journal og lagres i samme mappe. Midlertidige filer er normalt ikke synlige for brukere. I tilfelle krasj eller strømbrudd blir journalen liggende i mappen til neste gang databasen åpnes - SQLite oppdager da en «hot journal», spiller av de lagrede sidebildene for å gjenopprette tilstanden før transaksjonen, og sletter journalen automatisk.
Du må aldri slette en .db-journal-fil mens en skrivetransaksjon pågår, da dette vil korrumpere databasen. En vedvarende .db-journal etter en ren avslutning indikerer nesten alltid et tidligere krasj; SQLite håndterer gjenopprettingen trygt ved neste åpning. I WAL-modus (PRAGMA journal_mode=WAL), introdusert i SQLite 3.7.0 (juli 2010), brukes ikke .db-journal-filen i det hele tatt - en .db-wal-fil tar dens rolle. De fleste moderne applikasjonsdatabaser har gått over til WAL-modus for forbedret samtidig lesing.
Sikkerhet og trygghet
RISIKO: LOWIkke kjørbar; binære data for krasjgjenoppretting. Sletting av en -journal mens databasen blir skrevet til vil korrumpere databasen - den største operasjonelle risikoen. Overskytende journaler fra krasj er trygge å la ligge til SQLite gjenoppretter dem automatisk. En -journal kan inneholde sensitive, ikke-bekreftede data fra den avbrutte transaksjonen (delvise skrivinger av meldinger, påloggingsinformasjon osv.); behandle med samme konfidensialitet som hoveddatabasen. Ikke åpne eller distribuer en -journal isolert uten hoveddatabasen.
Formatdetaljer
i et nøtteskallProgrammer som åpner DB-JOURNAL-filer
Tekniske detaljer
dyp spesifikasjon| Format-type | Binær midlertidig transaksjons-rollback-journal (SQLite sidevognsfil) |
| Magic bytes | 8-byte hode: 0xD9 0xD5 0x05 0xF9 0x20 0xA1 0x63 0xD7 (hot/vedvarende journal) |
| Byterekkefølge | Big-endian (journalhodets felt lagret i nettverksbyterekkefølge) |
| Journalhodestørrelse | 28 bytes (felt for sideantall, tilfeldig nonce, sektorstørrelse, sidestørrelse) |
| Koding | Binær - lagrer ordrette SQLite 3-databasesidebilder kopiert før endring |
| Sjekksum per side | To 32-bit heltall beregnet fra nonce og sidedata; avvik signaliserer en utdatert eller ufullstendig journal |
| Typisk filstørrelse | 0 bytes til hundrevis av MB avhengig av hvor mange sider den avbrutte transaksjonen berørte |
| Journalmodus | Brukes kun i DELETE-journalmodus (standard i SQLite); opprettes ikke i WAL-modus |
| Navnekonvensjon | Hoveddatabase-sti med -journal lagt til (f.eks. mydata.db → mydata.db-journal) |
| Gjenopprettingsmekanisme | SQLite oppdager en hot journal ved åpning av tilkobling, spiller av sidebilder for å gjenopprette tilstanden før transaksjonen, og sletter deretter journalen |
| WAL-erstatning | WAL-modus (.db-wal + .db-shm), introdusert i SQLite 3.7.0 (juli 2010), foretrekkes for samtidige arbeidsbelastninger og bruker ikke .db-journal-filen |
| Utgitt | SQLite 1.0, 2000 (rollback journal is the original journaling mechanism) |
| Siste versjon | SQLite 3.x current - format unchanged since early SQLite 3; superseded in practice by WAL (-wal) |
| Åpen standard | Ja · royalty-fri |
| Spesifikasjon | www.sqlite.org |
DB-JOURNAL-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om DB-JOURNAL-filer.