Hva er en SQLite-fil?
En fil med filtypen .sqlite er en lettvekts SQL-databasefil opprettet med programvaren SQLite. Det er en database i selve filen og implementerer en selvstendig, fullverdig, svært pålitelig SQL databasemotor. SQLite-databasefiler kan brukes til å dele rikt innhold mellom systemer ved å enkelt utveksle disse filene over nettverket. Nesten alle mobiler og datamaskiner bruker SQLite for lagring og deling av data, og er valget av filformat for applikasjoner på tvers av plattformer. På grunn av den kompakte bruken og den enkle brukervennligheten, kommer den sammen med andre applikasjoner. SQLite-bindinger finnes for programmeringsspråk som C, C#, C++, Java, PHP, og mange andre.
SQLite-filformat
SQLite er i virkeligheten et C-Language-bibliotek som implementerer SQLite RDBMS ved å bruke SQLite-filformatet. Med utviklingen av nye enheter hver eneste dag, har filformatet blitt holdt bakoverkompatibelt for å imøtekomme eldre enheter. SQLite-filformat blir sett på som langsiktig arkivformat for dataene.
Databasefilen
En SQLite-database vedlikeholdes fullt ut via to filer.
- Hoveddatabasefil - Inneholder fullstendig tilstand til SQLite-databasen
- Tilbakerullingsjournal - Lagrer tilleggsinformasjon i en andre fil og brukes under utføring av transaksjoner. I tilfelle SQLite er i WAL-modus, opprettholdes en skrivehodeloggfil.
Journal File
Denne filen er ment å beholde all informasjon i tilfelle den siste transaksjonen ikke kunne fullføres i tilfeller som en datamaskinkrasj. Denne filen brukes til å gjenopprette databasefilen til en konsistent tilstand.
Pages
Hoved SQLite-databasefilen består av én eller flere sider. På ethvert tidspunkt har hver side i hoveddatabasen en enkelt bruk som er en av følgende:
- The lock-byte page
- A freelist page
- A freelist trunk page
- A freelist leaf page
- A b-tree page
- A table b-tree interior page
- A table b-tree leaf page
- An index b-tree interior page
- An index b-tree leaf page
- A payload overflow page
- A pointer map page
Størrelsen på SQLite-databasefiler kan variere fra få kilobyte til få gigabyte.
SQLite Header
SQLite-databaseoverskriften er plassert i de første 100 bytene i databasefilen. Hver gyldig SQLite-databasefil starter med 16 byte (i hex):53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00. Detaljer om overskriftsfeltene er som i følgende tabell.
Offset | Size | Description |
---|---|---|
0 | 16 | The header string: “SQLite format 3\000” |
16 | 2 | The database page size in bytes. Must be a power of two between 512 and 32768 inclusive, or the value 1 representing a page size of 65536. |
18 | 1 | File format write version. 1 for legacy; 2 for WAL. |
19 | 1 | File format read version. 1 for legacy; 2 for WAL. |
20 | 1 | Bytes of unused “reserved” space at the end of each page. Usually 0. |
21 | 1 | Maximum embedded payload fraction. Must be 64. |
22 | 1 | Minimum embedded payload fraction. Must be 32. |
23 | 1 | Leaf payload fraction. Must be 32. |
24 | 4 | File change counter. |
28 | 4 | Size of the database file in pages. The “in-header database size”. |
32 | 4 | Page number of the first freelist trunk page. |
36 | 4 | Total number of freelist pages. |
40 | 4 | The schema cookie. |
44 | 4 | The schema format number. Supported schema formats are 1, 2, 3, and 4. |
48 | 4 | Default page cache size. |
52 | 4 | The page number of the largest root b-tree page when in auto-vacuum or incremental-vacuum modes, or zero otherwise. |
56 | 4 | The database text encoding. A value of 1 means UTF-8. A value of 2 means UTF-16le. A value of 3 means UTF-16be. |
60 | 4 | The “user version” as read and set by the user_version pragma. |
64 | 4 | True (non-zero) for incremental-vacuum mode. False (zero) otherwise. |
68 | 4 | The “Application ID” set by PRAGMA application_id. |
72 | 20 | Reserved for expansion. Must be zero. |
92 | 4 | The version-valid-for number. |
96 | 4 | SQLITE_VERSION_NUMBER |