SQLite ist eine schlanke und un­ab­hän­gi­ge Pro­gramm­bi­blio­thek bzw. Datenbank, die bereits in zahl­rei­chen An­wen­dun­gen in­te­griert wird. Ins­be­son­de­re der Verzicht auf eine Client-Server-Struktur macht das Da­ten­bank­sys­tem aus. Er­wäh­nens­wer­te SQLite-Al­ter­na­ti­ven sind MySQL, MongoDB und Post­greS­QL.

Was ist SQLite?

SQLite ist das am weitesten ver­brei­te­te und meist­ge­nutz­te Da­ten­bank­sys­tem der Welt. Die Software, die von D. Richard Hipp 2000 ur­sprüng­lich für die US Army kon­zi­piert wurde, ist heute ge­mein­frei und somit frei von Ur­he­ber­rech­ten. Der Name „SQLite“ setzt sich zusammen aus „SQL“ – kurz für „Struc­tu­red Query Language“ – und „lite“, einem um­gangs­sprach­li­chen Begriff für eine leichtere und weniger spei­cher­in­ten­si­ve Version.

Dieser Name erklärt sich u. a. dadurch, dass das re­la­tio­na­le Da­ten­bank­sys­tem SQLite im Gegensatz zu anderen gängigen Da­ten­ban­ken keine zu­sätz­li­che Server-Software benötigt. Auch die geringe Größe von nur wenigen hundert Kilobyte sowie die Spei­che­rung einer gesamten Datenbank in nur einer Datei trugen zur Na­mens­fin­dung bei.

SQLite ist in der Internet-Pro­gram­mier­spra­che C ge­schrie­ben und findet in zahl­rei­chen Be­triebs­sys­te­men und Pro­gram­men Ver­wen­dung – darunter Android, iOS und Windows Phone, der Instant-Messenger Skype sowie die Browser Google Chrome, Mozilla Firefox und Safari SQLite. Die je­wei­li­gen Daten werden in der Pro­gramm­bi­blio­thek in Tabellen abgelegt und können Spalte für Spalte abgerufen werden. Über die C-Schnitt­stel­le oder ein Interface wie etwa in Ruby, PHP oder Python ist eine In­te­gra­ti­on in andere Programme pro­blem­los möglich.

Mit SQLite3 Python verfügt die Pro­gram­mier­spra­che sogar über ein In­te­gra­ti­ons­mo­dul für SQLite. Auch eine In­stal­la­ti­on oder Kon­fi­gu­ra­ti­on des quell­of­fe­nen Da­ten­bank­sys­tems entfällt.

Wie funk­tio­niert SQLite?

SQLite benötigt keine lange Ein­ar­bei­tungs­pha­se, sondern kann direkt und ohne den Einsatz einer zu­sätz­li­chen Server-Software in eine Anwendung in­te­griert werden. Diese erhält dann au­to­ma­tisch und ohne weitere Tools um­fas­sen­de Da­ten­bank­funk­tio­nen. Sämtliche Tabellen, Bezüge, Ver­knüp­fun­gen und Ähnliches sind in einer einzigen, platz­spa­ren­den Datei un­ter­ge­bracht, wobei es auch möglich ist, diese Datei wahlweise im Haupt­spei­cher abzulegen.

Daraus folgt: Die Ver­wen­dung einer Datei in ver­schie­de­nen Systemen ist sehr einfach. Auch, weil innerhalb einer Tabelle beliebige Daten ab­ge­spei­chert werden können. Diese werden dann nur bei Bedarf kon­ver­tiert, sodass selbst der Wechsel zwischen Systemen mit un­ter­schied­li­cher Byte-Rei­hen­fol­ge in Frage kommt.

SQLite nutzt als re­la­tio­na­les Datenbank-Ma­nage­ment-System ein Prinzip mit zwei Schlüs­seln, um Einträge in einer Tabelle zu iden­ti­fi­zie­ren und un­ter­schied­li­che Tabellen mit­ein­an­der zu verbinden. Dafür werden ein Pri­mär­schlüs­sel und ein Fremd­schlüs­sel ein­ge­setzt.

  • Pri­mär­schlüs­sel: Es handelt sich hierbei um einen ein­deu­ti­gen Wert, der einer be­stimm­ten Zeile in der Tabelle zu­ge­ord­net werden kann.
  • Fremd­schlüs­sel: Dieser wird verwendet, um mehrere Tabellen mit­ein­an­der zu verbinden.

Diese Verweise sorgen für eine deutlich schlan­ke­re Struktur und er­leich­tern die Arbeit mit SQLite im Vergleich zu anderen Da­ten­ban­ken. Auch diese Attribute haben zur welt­wei­ten Ver­brei­tung des Da­ten­bank­sys­tems bei­getra­gen.

Welche Da­ten­ty­pen sind unter SQLite möglich?

Unter SQLite können Daten in ver­schie­de­nen Formaten abgelegt werden. Das führt auch dazu, dass für eine sys­tem­über­grei­fen­de Wei­ter­ver­ar­bei­tung nicht zwangs­läu­fig eine Kon­ver­tie­rung notwendig ist. Die möglichen Da­ten­ty­pen, die ge­spei­chert und abgelegt werden können, sind die folgenden:

  • INTEGER: Umfasst alle ganz­zah­li­gen Werte.
  • REAL: Umfasst an­ge­nä­her­te Dar­stel­lun­gen einer reellen Zahl als Gleit­kom­ma­zahl oder auch Fließ­kom­ma­zahl.
  • TEXT: Enthält alle klar­text­li­chen Inhalte.
  • BLOB: Steht für Binary Large Object und be­inhal­tet Bi­när­wer­te wie zum Beispiel Vor­schau­bil­der oder Kon­fi­gu­ra­ti­ons­da­tei­en im XML-Format.
  • NULL: Auch Nullwerte können in SQLite ab­ge­bil­det werden.

Das bedeutet, dass in SQLite alle gängigen Da­ten­ty­pen ge­spei­chert werden können.

Wie werden Daten unter SQLite gesichert?

Es gibt zwei Mög­lich­kei­ten, um in SQLite zu ge­währ­leis­ten, dass die Kon­sis­tenz einer Datenbank bei­be­hal­ten wird. Diese funk­tio­nie­ren fol­gen­der­ma­ßen:

  • Rollback Journal: Bei dieser Methode wird au­to­ma­tisch ein tem­po­rä­res Journal aller durch­ge­führ­ten Än­de­run­gen angelegt, welches den Namen der je­wei­li­gen Datenbank und die Endung „-journal“ enthält. Sollte es zu Problemen mit der Datenbank oder einzelnen Dateien kommen, kann dadurch ein Rollback durch­ge­führt werden, bei dem ein früherer Stand wie­der­her­ge­stellt wird.
  • Write Ahead Log (WAL): Bei einem Write Ahead Log werden alle Än­de­run­gen in einer Log-Datei ge­spei­chert. Wenn die Datenbank dann planmäßig ge­schlos­sen wird, werden die Daten final in die Datenbank eingefügt. Al­ter­na­tiv können Sie sie mit einem Commit-Befehl manuell speichern. Gleich­zei­tig wird ein Index in der Shared Memory Datei (SHM) erstellt.

Welche Vorteile bietet SQLite?

SQLite bietet zahl­rei­che Vorteile und hat sich einen guten Ruf sowohl bei den Ent­wick­le­rin­nen und Ent­wick­lern kom­mer­zi­el­ler An­wen­dun­gen als auch bei privaten Userinnen und Usern er­ar­bei­tet. Für das re­la­tio­na­le System sprechen u. a. die folgenden Aspekte:

Umfang

Der geringe Spei­cher­be­darf ist ein großer Vorteil des Da­ten­bank­sys­tems. Mit nur wenigen hundert Kilobyte nimmt eine Bi­blio­thek nur sehr wenig Platz ein, was sich natürlich wiederum positiv auf die Ge­schwin­dig­keit auswirkt. An dieser Stelle wird SQLite seinem Namen voll­kom­men gerecht und zeigt sich als starke Lösung für große und kleine An­wen­dun­gen glei­cher­ma­ßen.

Verzicht auf zu­sätz­li­che Software

SQLite funk­tio­niert ohne weitere Server-Software und lässt sich statt­des­sen einfach und pro­blem­los einbinden. Weitere Programme oder externe Pakete sind nicht nötig. Die Ser­ver­leis­tung, die dadurch be­reit­ge­stellt werden muss, ist dem­entspre­chend ebenfalls sehr über­sicht­lich.

Viel­sei­tig­keit

Nicht nur un­ter­stützt SQLite die meisten SQL-Sprach­be­feh­le, auch die Kom­pa­ti­bi­li­tät mit einem Großteil der gängigen Da­ten­spei­cher ist ein großer Vorteil. Nicht umsonst findet die Bi­blio­thek in zahl­rei­chen Apps wie Facebook oder WhatsApp ebenso Ver­wen­dung wie in allen gängigen Be­triebs­sys­te­men für Desktop und Mo­bil­te­le­fo­ne, Browsern und vielen kom­mer­zi­el­len Pro­gram­men. Da auch der Austausch zwischen zwei un­ter­schied­li­chen Systemen ohne große Probleme möglich ist, setzen zahl­rei­che Ent­wick­le­rin­nen und Ent­wick­ler auf die schlanke Lösung als Unterbau für ihre Software.

Por­ta­bi­li­tät

Die oben genannten Aspekte führen auch dazu, dass SQLite-Dateien sehr einfach zu sichern und trans­por­tie­ren sind. Da es keine Not­wen­dig­keit gibt, SQLite ausgiebig zu kon­fi­gu­rie­ren, und da die je­wei­li­gen Dateien un­ab­hän­gig von Server-Pro­gram­men sind, ist eine Ver­wen­dung auf un­ter­schied­li­chen Systemen pro­blem­los möglich.

Aus­fall­si­cher­heit

Der ver­ein­heit­lich­te Da­ten­zu­griff, der geringe Res­sour­cen­ver­brauch und die Un­ab­hän­gig­keit von einer Server-Client-Struktur machen SQLite zu einer sehr sicheren Option. Auch Spei­cher­feh­ler oder Probleme durch fehlenden Ar­beits­spei­cher fallen hier deutlich weniger ins Gewicht.

Ge­mein­frei­heit

SQLite ist li­zenz­frei er­hält­lich. Lediglich einige Add-ons und der Support sind kos­ten­pflich­tig.

Welche Nachteile hat SQLite?

Neben seinen Vorteilen hat SQLite auch ein paar Nachteile, die Sie beachten und be­rück­sich­ti­gen sollten, falls Sie darüber nach­den­ken, das Da­ten­bank­sys­tem zu verwenden. Dazu gehören vor allem folgende:

Nut­zer­be­schrän­kung

SQLite hat keine Option für mehrere Be­nut­zer­kon­ten. Das un­ter­schei­det die Lösung von anderen Anbietern. Eine Ver­bin­dung mehrerer Clients ist so nicht möglich.

Stei­gen­der Platz­be­darf

Auch wenn SQLite ei­gent­lich eine sehr schlanke Lösung ist, steigt der Bedarf, je größer die Datenbank wird. Dies kann auch die Leistung negativ be­ein­flus­sen.

Fle­xi­bi­li­tät

Zwar ist SQLite eine insgesamt flexible Lösung, was vor allem an der Un­ab­hän­gig­keit von externen Ser­ver­struk­tu­ren liegt. Das bedingt al­ler­dings auch, dass keine Da­ten­ab­fra­ge vom Client aus getätigt werden kann. Darüber hinaus können nicht mehrere Ver­bin­dun­gen gleich­zei­tig ver­ar­bei­tet werden, sodass es zu Zeit­ver­zö­ge­run­gen kommen kann.

Welche Al­ter­na­ti­ven gibt es zu der Pro­gramm­bi­blio­thek?

Es gibt zahl­rei­che Al­ter­na­ti­ven zu SQLite. Neben der do­ku­ment­ori­en­tie­ren NoSQL-Lösung MongoDB und dem re­la­tio­na­len Post­greS­QL stellt ins­be­son­de­re MySQL eine sehr weit ver­brei­te­te Al­ter­na­ti­ve dar, die teilweise pro­prie­tär und teilweise Open Source ist. Auch diese Option fällt sehr be­nut­zer­freund­lich aus. Wie Sie dieses Da­ten­bank­sys­tem verwenden, erfahren Sie im um­fang­rei­chen MySQL-Tutorial des Digital Guides.

Tipp

Maximale Fle­xi­bi­li­tät zum kleinen Preis: Mit Managed MongoDB von IONOS pro­fi­tie­ren Sie von ho­ri­zon­ta­ler Ska­lie­rung, voller Kom­pa­ti­bi­li­tät und einer sach­kun­di­gen Un­ter­stüt­zung durch unsere Ex­per­tin­nen und Experten. Wählen Sie aus den un­ter­schied­li­chen Tarifen das Modell, das am besten zu Ihren Be­dürf­nis­sen passt.

Zum Hauptmenü