aspose.info
DE

SQLite-Dateiformat

Aktualisiert

Was ist eine SQLite-Datei?

Eine Datei mit der Erweiterung .sqlite ist eine einfache SQL-Datenbankdatei, die mit der Software SQLite erstellt wurde. Es ist selbst eine Datenbank in einer Datei und implementiert eine eigenständige, voll funktionsfähige, hochzuverlässige SQL-Datenbank-Engine. SQLite-Datenbankdateien können verwendet werden, um umfangreiche Inhalte zwischen Systemen auszutauschen, indem diese Dateien einfach über das Netzwerk ausgetauscht werden. Fast alle Mobiltelefone und Computer verwenden SQLite zum Speichern und Teilen von Daten und ist das bevorzugte Dateiformat für plattformübergreifende Anwendungen. Aufgrund seiner kompakten Verwendung und einfachen Bedienbarkeit wird es in andere Anwendungen gebündelt geliefert. SQLite-Bindungen existieren für Programmiersprachen wie C, C#, C++, Java, PHP, und viele andere.

SQLite-Dateiformat

SQLite ist in Wirklichkeit eine C-Language-Bibliothek, die das SQLite-RDBMS unter Verwendung des SQLite-Dateiformats implementiert. Mit der Entwicklung neuer Geräte jeden Tag wurde das Dateiformat abwärtskompatibel gehalten, um ältere Geräte aufzunehmen. Das SQLite-Dateiformat wird als Langzeitarchivierungsformat für die Daten angesehen.

Die Datenbankdatei

Eine SQLite-Datenbank wird vollständig über zwei Dateien gepflegt.

  • Hauptdatenbankdatei - Enthält den vollständigen Status der SQLite-Datenbank
  • Rollback-Journal - Speichert zusätzliche Informationen in einer zweiten Datei und wird während der Durchführung von Transaktionen verwendet. Falls sich SQLite im WAL-Modus befindet, wird eine Write-Head-Protokolldatei verwaltet.

Journaldatei

Diese Datei dient dazu, alle Informationen aufrechtzuerhalten, falls die letzte Transaktion in Fällen wie einem Computerabsturz nicht abgeschlossen werden konnte. Diese Datei wird verwendet, um die Datenbankdatei in einem konsistenten Zustand wiederherzustellen.

Seiten

Die SQLite-Hauptdatenbankdatei besteht aus einer oder mehreren Seiten. Jede Seite in der Hauptdatenbank hat zu jedem Zeitpunkt eine einzige Verwendung, die eine der folgenden ist:

  • Die Lock-Byte-Seite
  • Eine Freelist-Seite
  • Eine Freelist-Trunk-Seite
  • Eine Freelist-Blattseite
  • Eine B-Tree-Seite
  • Eine Tabellen-B-Tree-Innenseite
  • Eine Tabellen-B-Tree-Blattseite
  • Eine Index-B-Tree-Innenseite
  • Eine Index-B-Tree-Blattseite
  • Eine Payload-Überlaufseite
  • Eine Zeigerkartenseite

Die Größe von SQLite-Datenbankdateien kann von einigen Kilobyte bis zu einigen Gigabyte reichen.

SQLite-Header

Der SQLite-Datenbank-Header befindet sich in den ersten 100 Bytes der Datenbankdatei. Jede gültige SQLite-Datenbankdatei beginnt mit 16 Bytes (in Hex):53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00. Details der Header-Felder sind in der folgenden Tabelle aufgeführt.

OffsetGrößeBeschreibung
016Die Header-Zeichenfolge: “SQLite-Format 3\000”
162Die Größe der Datenbankseite in Bytes. Muss eine Zweierpotenz zwischen 512 und 32768 sein, oder der Wert 1, der eine Seitengröße von 65536 darstellt.
181Dateiformat Schreibversion. 1 für Vermächtnis; 2 für WAL.
191Dateiformat gelesene Version. 1 für Vermächtnis; 2 für WAL.
201Bytes unbenutzter “reservierter” Platz am Ende jeder Seite. Normalerweise 0.
211Maximaler eingebetteter Nutzlastanteil. Muss 64 sein.
221Minimaler eingebetteter Nutzlastanteil. Muss 32 sein.
231Blatt-Nutzlastanteil. Muss 32 sein.
244Dateiänderungszähler.
284Größe der Datenbankdatei in Seiten. Die “In-Header-Datenbankgröße”.
324Seitennummer der ersten Stammseite der Freelist.
364Gesamtzahl der Freelist-Seiten.
404Das Schema-Cookie.
444Die Nummer des Schemaformats. Unterstützte Schemaformate sind 1, 2, 3 und 4.
484Standardgröße des Seiten-Cache.
524Die Seitenzahl der größten Stamm-B-Tree-Seite im Auto-Vakuum- oder Inkremental-Vakuum-Modus, andernfalls Null.
564Die Textcodierung der Datenbank. Ein Wert von 1 bedeutet UTF-8. Ein Wert von 2 bedeutet UTF-16le. Ein Wert von 3 bedeutet UTF-16be.
604Die “Benutzerversion”, wie sie vom user_version-Pragma gelesen und gesetzt wird.
644Wahr (nicht Null) für inkrementellen Vakuummodus. Sonst False (Null).
684Die von PRAGMA application_id.
7220Reserviert für Erweiterung. Muss Null sein.
924Die Gültig-für-Version-Nummer.
964SQLITE_VERSION_NUMBER

Verweise

Siehe auch