EMZETT.
Login

SQLite: Die Datenbank in einer Datei

Kurz: SQLite ist eine kleine, eingebettete SQL-Datenbank, die ganz ohne Server auskommt und alle Daten in einer einzigen Datei speichert.

Genauer: Die meisten Datenbanken (PostgreSQL, MySQL) laufen als eigener Server, mit dem sich Programme verbinden. SQLite ist eine Bibliothek, die direkt im Programm steckt und eine Datei liest und schreibt. Es ist die am häufigsten eingesetzte Datenbank der Welt: in jedem Smartphone, Browser und in vielen Anwendungen.

Im Detail

Eigenschaften

  • Keine Installation, keine Konfiguration, kein Server.
  • Eine Datenbankdatei (.db, .sqlite), leicht zu kopieren und zu sichern.
  • Unterstützt weitgehend normales SQL, Transaktionen (ACID), Indizes, Trigger, Views, JSON-Funktionen.
  • Sehr schnell für Lesezugriffe und kleine bis mittlere Datenmengen (bis viele Gigabyte).
  • Public Domain, sehr gut getestet.

Beispiel

sqlite3 test.db
sqlite> CREATE TABLE tier (id INTEGER PRIMARY KEY, name TEXT, alter INT);
sqlite> INSERT INTO tier (name, alter) VALUES ('Mia', 4);
sqlite> SELECT * FROM tier;

In Python gehört sqlite3 zur Standardbibliothek:

import sqlite3
con = sqlite3.connect('test.db')
print(con.execute('SELECT name FROM tier').fetchall())

Grenzen

SQLite erlaubt viele Leser, aber nur einen Schreiber gleichzeitig (mit dem WAL-Modus laufen Leser dabei weiter). Für viele gleichzeitige Schreibzugriffe aus mehreren Servern ist ein richtiger Datenbankserver besser. Es gibt keine eigene Benutzerverwaltung, der Schutz liegt im Dateisystem. Typen sind flexibel („Typ-Affinität“), nicht streng, außer mit STRICT-Tabellen. Netzwerkdateisysteme sind für die Datei riskant.

Einsatzgebiete

Mobile Apps, Desktop-Programme, Browser (Lesezeichen, Verlauf), Konfigurations- und Cache-Speicher, kleine bis mittlere Webseiten, Tests, Datenanalyse mit Dateien und Prototypen. Moderne Varianten und Erweiterungen wie libSQL/Turso und Litestream (Replikation) bringen SQLite auch in Server-Umgebungen. Wenn eine Anwendung wächst, lässt sich SQL oft auf PostgreSQL übertragen.

Siehe auch: SQL, PostgreSQL, Transaktionen und ACID, MySQL