Was bedeutet SQLite
SQLite ist nicht direkt vergleichbar mit Client/Server SQL-Datenbank-Engines wie MariaDB, Oracle (mehr dazu Oracle Seminare) , PostgreSQL (mehr dazu PostgreSQL Schulung) oder SQL (mehr Infos SQL Seminar) Server (mehr dazu SQL Server Training) . SQLite (siehe SQLite Schulung) versucht, ein anderes Problem zu lösen.
Client/Server-SQL-Datenbank-Engines streben danach, ein gemeinsames Repository für Unternehmensdaten zu implementieren. Sie legen Wert auf Skalierbarkeit, Gleichzeitigkeit, Zentralisierung und Kontrolle. SQLite ist bestrebt, lokale Datenspeicherung für einzelne Anwendungen und Geräte bereitzustellen. SQLite legt den Schwerpunkt auf Wirtschaftlichkeit, Effizienz, Zuverlässigkeit, Unabhängigkeit und Einfachheit.
SQLite wird vor jeder Veröffentlichung sehr sorgfältig getestet und hat den Ruf, sehr zuverlässig zu sein. Der größte Teil des SQLite-Quellcodes ist ausschließlich dem Testen und Verifizieren gewidmet. Eine automatisierte Testsuite führt Millionen und Abermillionen von Testfällen aus, die Hunderte von Millionen einzelner SQL-Anweisungen umfassen, und erreicht eine 100%ige Branch-Testabdeckung. SQLite reagiert problemlos auf Speicherzuweisungsfehler und Platten-E/A-Fehler. Transaktionen sind ACID, selbst wenn sie durch Systemabstürze oder Stromausfälle unterbrochen werden. All dies wird durch die automatisierten Tests unter Verwendung spezieller Testharnische, die Systemausfälle simulieren, verifiziert. Natürlich gibt es auch bei all diesen Tests noch Fehler. Aber im Gegensatz zu einigen ähnlichen Projekten (insbesondere kommerziellen Konkurrenten) ist SQLite offen und ehrlich in Bezug auf alle Fehler und bietet Fehlerlisten und minütliche Chronologien der Codeänderungen.
Embedded Devices und IoT
Da eine SQLite- Datenbank (mehr Infos Datenbank Schulungen) keine Verwaltung erfordert, funktioniert sie gut in Geräten, die ohne menschliche Expertenunterstützung arbeiten müssen. SQLite eignet sich gut für den Einsatz in Mobiltelefonen, Set-Top-Boxen, Fernsehern, Spielkonsolen, Kameras, Uhren, Küchengeräten, Thermostaten, Autos, Werkzeugmaschinen, Flugzeugen, Fernsensoren, Drohnen, medizinischen Geräten und Robotern. Client/Server-Datenbanken sind so konzipiert, dass sie in einem lückenlos überwachten Rechenzentrum im Kern des Netzwerks funktionieren. SQLite arbeitet auch dort, aber SQLite gedeiht auch am Rande des Netzwerks, indem es für sich selbst sorgt und gleichzeitig schnelle und zuverlässige Datendienste für Anwendungen bereitstellt, die sonst nur schwer zu verbinden wären.
Dateiformat der Anwendung
SQLite wird häufig als Dateiformat für Desktop-Anwendungen wie Versionskontrollsysteme, Finanzanalyse-Tools, Medienkatalogisierungs- und Bearbeitungs-Suites, CAD-Pakete, Aufzeichnungsprogramme usw. verwendet. Die traditionelle Datei/Öffnen-Operation ruft sqlite3_open() auf, um an die Datenbankdatei anzuhängen. Aktualisierungen erfolgen automatisch, wenn der Inhalt der Anwendung überarbeitet wird, so dass die Menüoption Datei/Speichern überflüssig wird.
Dieser Ansatz bietet viele Vorteile, einschließlich verbesserter Leistung, geringerer Kosten und Komplexität sowie höherer Zuverlässigkeit. Dieser Anwendungsfall steht in engem Zusammenhang mit Anwendungsfällen des Datenübertragungsformats und des Datencontainers.
Webseiten
SQLite funktioniert hervorragend als Datenbank-Engine für die meisten Websites mit geringem bis mittlerem Traffic (d.h. die meisten Websites). Der Umfang des Webverkehrs, den SQLite bewältigen kann, hängt davon ab, wie stark die Website ihre Datenbank nutzt. Im Allgemeinen sollte jede Website, die weniger als 100K Treffer/Tag erzielt, mit SQLite problemlos funktionieren. Die Zahl 100K Treffer/Tag ist eine konservative Schätzung, keine harte Obergrenze. SQLite funktioniert nachweislich mit der 10-fachen Menge an Datenverkehr.
Datenanalyse
SQL-Programmierer können die Kommandozeilen- Shell (mehr Infos Shell Training) sqlite3 (oder verschiedene SQLite-Zugriffsprogramme von Drittanbietern) verwenden, um große Datensätze zu analysieren. Rohdaten können aus CSV-Dateien importiert und dann in Scheiben geschnitten werden, um eine Vielzahl von zusammenfassenden Berichten zu erstellen. Komplexere Analysen können mit Hilfe einfacher Skripte in Tcl oder Python (mehr Infos Python Schulungen) (die beide in SQLite integriert sind) oder in R (mehr Infos R Seminar) oder anderen Sprachen unter Verwendung leicht verfügbarer Adapter durchgeführt werden. Zu den möglichen Anwendungen gehören die Analyse von Website-Protokollen und die Analyse von Versuchsergebnissen. Viele Bioinformatik-Forscher verwenden SQLite auf diese Weise.
Dasselbe kann natürlich auch mit einer unternehmensweiten Client/Server-Datenbank gemacht werden. Der Vorteil von SQLite besteht darin, dass es einfacher zu installieren und zu benutzen ist und die resultierende Datenbank eine einzige Datei ist, die auf einen USB-Speicherstick geschrieben oder per E-Mail (siehe auch E-Mail Schulung) an einen Kollegen geschickt werden kann.
Cache für Unternehmensdaten
Viele Anwendungen verwenden SQLite als Cache für relevante Inhalte aus einem Unternehmens-RDBMS. Dies verringert die Latenzzeit, da die meisten Abfragen jetzt gegen den lokalen Cache erfolgen und ein Round-Trip im Netzwerk (mehr Infos Netzwerk Seminare) vermieden wird. Es reduziert auch die Belastung des Netzwerks und des zentralen Datenbankservers. Und in vielen Fällen bedeutet es, dass die clientseitige Anwendung auch bei Netzwerkausfällen weiterarbeiten kann.
Server-seitige Datenbank
Systemdesigner berichten von Erfolgen bei der Verwendung von SQLite als Datenspeicher für Serveranwendungen, die im Rechenzentrum laufen, oder mit anderen Worten, bei der Verwendung von SQLite als zugrunde liegende Speicher-Engine für einen anwendungsspezifischen Datenbankserver.
Bei diesem Muster ist das Gesamtsystem immer noch Client/Server: Clients senden Anfragen an den Server und erhalten Antworten über das Netzwerk zurück. Anstatt jedoch generisches SQL zu senden und rohe Tabelleninhalte zurückzubekommen, sind die Client-Anfragen und Server-Antworten auf hoher Ebene und anwendungsspezifisch. Der Server übersetzt die Anfragen in mehrere SQL-Abfragen, sammelt die Ergebnisse, führt eine Nachbearbeitung, Filterung und Analyse durch und konstruiert dann eine Antwort auf hoher Ebene, die nur die wesentlichen Informationen enthält.
Entwickler berichten, dass SQLite in diesem Szenario oft schneller ist als eine Client/Server-SQL-Datenbank-Engine. Datenbankanfragen werden vom Server serialisiert, so dass Gleichzeitigkeit kein Problem darstellt. Die Gleichzeitigkeit wird auch durch " Datenbank-Sharing" verbessert: Verwendung separater Datenbankdateien für verschiedene Unterdomänen. Beispielsweise könnte der Server über eine separate SQLite-Datenbank für jeden Benutzer verfügen, so dass der Server Hunderte oder Tausende von gleichzeitigen Verbindungen verarbeiten kann, aber jede SQLite-Datenbank wird nur von einer Verbindung verwendet.
Dateiarchiv und/oder Datencontainer
Die Idee des SQLite-Archivs zeigt, wie SQLite als Ersatz für ZIP-Archive verwendet werden kann. Ein Archiv von Dateien, die in SQLite gespeichert sind, ist nur geringfügig größer und in einigen Fällen sogar kleiner als das entsprechende ZIP-Archiv. Und ein SQLite-Archiv zeichnet sich durch inkrementelle und atomare Aktualisierung und die Fähigkeit aus, viel reichhaltigere Metadaten zu speichern.
SQLite ist eine gute Lösung für alle Situationen, in denen unterschiedliche Inhalte zu einem in sich geschlossenen und selbstbeschreibenden Paket für den Versand über ein Netzwerk gebündelt werden müssen. Der Inhalt wird in einem gut definierten, plattformübergreifenden und stabilen Dateiformat kodiert. Die Kodierung ist effizient, und die Empfänger können kleine Teilmengen des Inhalts extrahieren, ohne die gesamte Datei lesen und analysieren zu müssen.
SQL-Archive sind als Verteilungsformat für Software- oder Inhaltsaktualisierungen nützlich, die an viele Clients übertragen werden. Variationen dieser Idee werden z.B. zur Übertragung von TV-Programmzeitschriften an Set-Top-Boxen und zur Übermittlung von Over-the-Air-Updates an Fahrzeugnavigationssysteme verwendet.
Interne oder temporäre Datenbanken
Bei Programmen, die viele Daten haben, die auf unterschiedliche Weise gesichtet und sortiert werden müssen, ist es oft einfacher und schneller, die Daten in eine In-Memory-SQLite-Datenbank zu laden und Abfragen mit Joins und ORDER BY-Klauseln zu verwenden, um die Daten in der benötigten Form und Reihenfolge zu extrahieren, anstatt zu versuchen, die gleichen Operationen manuell zu codieren. Die interne Verwendung einer SQL-Datenbank auf diese Weise gibt dem Programm auch eine größere Flexibilität, da neue Spalten und Indizes hinzugefügt werden können, ohne jede Abfrage neu codieren zu müssen.
Unternehmensdatenbank während Demos oder Tests
Client-Anwendungen verwenden in der Regel eine generische Datenbankschnittstelle, die Verbindungen zu verschiedenen SQL-Datenbank-Engines ermöglicht. Es ist sinnvoll, SQLite in den Mix der unterstützten Datenbanken aufzunehmen und die SQLite-Engine statisch mit dem Client zu verknüpfen. Auf diese Weise kann das Clientprogramm eigenständig mit einer SQLite-Datendatei zum Testen oder für Demonstrationen verwendet werden.
Schulung und Training
Da es einfach einzurichten und zu benutzen ist (die Installation ist trivial: einfach die ausführbare Datei sqlite3 oder sqlite3.exe auf den Zielrechner kopieren und ausführen), ist SQLite eine gute Datenbank-Engine für den Einsatz im SQL-Unterricht. Die Teilnehmer können so viele Datenbanken erstellen, wie sie möchten, und Datenbanken per E-Mail an den Dozenten senden, um Kommentare oder Bewertungen zu erhalten. Näheres findet sich bei SQL Schulung. Für fortgeschrittenere Studenten, die daran interessiert sind zu studieren, wie ein RDBMS implementiert wird, kann der modulare und gut kommentierte und dokumentierte SQLite-Code als gute Grundlage dienen.
Schlüsselwörter können oft als Identifikatoren verwendet werden
Die Sprache SQL ist reich an Schlüsselwörtern. Die meisten SQL-Implementierungen erlauben keine Verwendung von Schlüsselwörtern als Bezeichner (die Namen von Tabellen oder Spalten), es sei denn, sie sind in doppelte Anführungszeichen eingeschlossen. SQLite ist jedoch flexibler. Viele Schlüsselwörter können als Bezeichner verwendet werden, ohne dass sie in Anführungszeichen gesetzt werden müssen, solange diese Schlüsselwörter in einem Kontext verwendet werden, in dem klar ist, dass sie als Bezeichner gedacht sind.
Client/Server-SQL-Datenbank-Engines streben danach, ein gemeinsames Repository für Unternehmensdaten zu implementieren. Sie legen Wert auf Skalierbarkeit, Gleichzeitigkeit, Zentralisierung und Kontrolle. SQLite ist bestrebt, lokale Datenspeicherung für einzelne Anwendungen und Geräte bereitzustellen. SQLite legt den Schwerpunkt auf Wirtschaftlichkeit, Effizienz, Zuverlässigkeit, Unabhängigkeit und Einfachheit.
SQLite wird vor jeder Veröffentlichung sehr sorgfältig getestet und hat den Ruf, sehr zuverlässig zu sein. Der größte Teil des SQLite-Quellcodes ist ausschließlich dem Testen und Verifizieren gewidmet. Eine automatisierte Testsuite führt Millionen und Abermillionen von Testfällen aus, die Hunderte von Millionen einzelner SQL-Anweisungen umfassen, und erreicht eine 100%ige Branch-Testabdeckung. SQLite reagiert problemlos auf Speicherzuweisungsfehler und Platten-E/A-Fehler. Transaktionen sind ACID, selbst wenn sie durch Systemabstürze oder Stromausfälle unterbrochen werden. All dies wird durch die automatisierten Tests unter Verwendung spezieller Testharnische, die Systemausfälle simulieren, verifiziert. Natürlich gibt es auch bei all diesen Tests noch Fehler. Aber im Gegensatz zu einigen ähnlichen Projekten (insbesondere kommerziellen Konkurrenten) ist SQLite offen und ehrlich in Bezug auf alle Fehler und bietet Fehlerlisten und minütliche Chronologien der Codeänderungen.
Embedded Devices und IoT
Da eine SQLite- Datenbank (mehr Infos Datenbank Schulungen) keine Verwaltung erfordert, funktioniert sie gut in Geräten, die ohne menschliche Expertenunterstützung arbeiten müssen. SQLite eignet sich gut für den Einsatz in Mobiltelefonen, Set-Top-Boxen, Fernsehern, Spielkonsolen, Kameras, Uhren, Küchengeräten, Thermostaten, Autos, Werkzeugmaschinen, Flugzeugen, Fernsensoren, Drohnen, medizinischen Geräten und Robotern. Client/Server-Datenbanken sind so konzipiert, dass sie in einem lückenlos überwachten Rechenzentrum im Kern des Netzwerks funktionieren. SQLite arbeitet auch dort, aber SQLite gedeiht auch am Rande des Netzwerks, indem es für sich selbst sorgt und gleichzeitig schnelle und zuverlässige Datendienste für Anwendungen bereitstellt, die sonst nur schwer zu verbinden wären.
Dateiformat der Anwendung
SQLite wird häufig als Dateiformat für Desktop-Anwendungen wie Versionskontrollsysteme, Finanzanalyse-Tools, Medienkatalogisierungs- und Bearbeitungs-Suites, CAD-Pakete, Aufzeichnungsprogramme usw. verwendet. Die traditionelle Datei/Öffnen-Operation ruft sqlite3_open() auf, um an die Datenbankdatei anzuhängen. Aktualisierungen erfolgen automatisch, wenn der Inhalt der Anwendung überarbeitet wird, so dass die Menüoption Datei/Speichern überflüssig wird.
Dieser Ansatz bietet viele Vorteile, einschließlich verbesserter Leistung, geringerer Kosten und Komplexität sowie höherer Zuverlässigkeit. Dieser Anwendungsfall steht in engem Zusammenhang mit Anwendungsfällen des Datenübertragungsformats und des Datencontainers.
Webseiten
SQLite funktioniert hervorragend als Datenbank-Engine für die meisten Websites mit geringem bis mittlerem Traffic (d.h. die meisten Websites). Der Umfang des Webverkehrs, den SQLite bewältigen kann, hängt davon ab, wie stark die Website ihre Datenbank nutzt. Im Allgemeinen sollte jede Website, die weniger als 100K Treffer/Tag erzielt, mit SQLite problemlos funktionieren. Die Zahl 100K Treffer/Tag ist eine konservative Schätzung, keine harte Obergrenze. SQLite funktioniert nachweislich mit der 10-fachen Menge an Datenverkehr.
Datenanalyse
SQL-Programmierer können die Kommandozeilen- Shell (mehr Infos Shell Training) sqlite3 (oder verschiedene SQLite-Zugriffsprogramme von Drittanbietern) verwenden, um große Datensätze zu analysieren. Rohdaten können aus CSV-Dateien importiert und dann in Scheiben geschnitten werden, um eine Vielzahl von zusammenfassenden Berichten zu erstellen. Komplexere Analysen können mit Hilfe einfacher Skripte in Tcl oder Python (mehr Infos Python Schulungen) (die beide in SQLite integriert sind) oder in R (mehr Infos R Seminar) oder anderen Sprachen unter Verwendung leicht verfügbarer Adapter durchgeführt werden. Zu den möglichen Anwendungen gehören die Analyse von Website-Protokollen und die Analyse von Versuchsergebnissen. Viele Bioinformatik-Forscher verwenden SQLite auf diese Weise.
Dasselbe kann natürlich auch mit einer unternehmensweiten Client/Server-Datenbank gemacht werden. Der Vorteil von SQLite besteht darin, dass es einfacher zu installieren und zu benutzen ist und die resultierende Datenbank eine einzige Datei ist, die auf einen USB-Speicherstick geschrieben oder per E-Mail (siehe auch E-Mail Schulung) an einen Kollegen geschickt werden kann.
Cache für Unternehmensdaten
Viele Anwendungen verwenden SQLite als Cache für relevante Inhalte aus einem Unternehmens-RDBMS. Dies verringert die Latenzzeit, da die meisten Abfragen jetzt gegen den lokalen Cache erfolgen und ein Round-Trip im Netzwerk (mehr Infos Netzwerk Seminare) vermieden wird. Es reduziert auch die Belastung des Netzwerks und des zentralen Datenbankservers. Und in vielen Fällen bedeutet es, dass die clientseitige Anwendung auch bei Netzwerkausfällen weiterarbeiten kann.
Server-seitige Datenbank
Systemdesigner berichten von Erfolgen bei der Verwendung von SQLite als Datenspeicher für Serveranwendungen, die im Rechenzentrum laufen, oder mit anderen Worten, bei der Verwendung von SQLite als zugrunde liegende Speicher-Engine für einen anwendungsspezifischen Datenbankserver.
Bei diesem Muster ist das Gesamtsystem immer noch Client/Server: Clients senden Anfragen an den Server und erhalten Antworten über das Netzwerk zurück. Anstatt jedoch generisches SQL zu senden und rohe Tabelleninhalte zurückzubekommen, sind die Client-Anfragen und Server-Antworten auf hoher Ebene und anwendungsspezifisch. Der Server übersetzt die Anfragen in mehrere SQL-Abfragen, sammelt die Ergebnisse, führt eine Nachbearbeitung, Filterung und Analyse durch und konstruiert dann eine Antwort auf hoher Ebene, die nur die wesentlichen Informationen enthält.
Entwickler berichten, dass SQLite in diesem Szenario oft schneller ist als eine Client/Server-SQL-Datenbank-Engine. Datenbankanfragen werden vom Server serialisiert, so dass Gleichzeitigkeit kein Problem darstellt. Die Gleichzeitigkeit wird auch durch " Datenbank-Sharing" verbessert: Verwendung separater Datenbankdateien für verschiedene Unterdomänen. Beispielsweise könnte der Server über eine separate SQLite-Datenbank für jeden Benutzer verfügen, so dass der Server Hunderte oder Tausende von gleichzeitigen Verbindungen verarbeiten kann, aber jede SQLite-Datenbank wird nur von einer Verbindung verwendet.
Dateiarchiv und/oder Datencontainer
Die Idee des SQLite-Archivs zeigt, wie SQLite als Ersatz für ZIP-Archive verwendet werden kann. Ein Archiv von Dateien, die in SQLite gespeichert sind, ist nur geringfügig größer und in einigen Fällen sogar kleiner als das entsprechende ZIP-Archiv. Und ein SQLite-Archiv zeichnet sich durch inkrementelle und atomare Aktualisierung und die Fähigkeit aus, viel reichhaltigere Metadaten zu speichern.
SQLite ist eine gute Lösung für alle Situationen, in denen unterschiedliche Inhalte zu einem in sich geschlossenen und selbstbeschreibenden Paket für den Versand über ein Netzwerk gebündelt werden müssen. Der Inhalt wird in einem gut definierten, plattformübergreifenden und stabilen Dateiformat kodiert. Die Kodierung ist effizient, und die Empfänger können kleine Teilmengen des Inhalts extrahieren, ohne die gesamte Datei lesen und analysieren zu müssen.
SQL-Archive sind als Verteilungsformat für Software- oder Inhaltsaktualisierungen nützlich, die an viele Clients übertragen werden. Variationen dieser Idee werden z.B. zur Übertragung von TV-Programmzeitschriften an Set-Top-Boxen und zur Übermittlung von Over-the-Air-Updates an Fahrzeugnavigationssysteme verwendet.
Interne oder temporäre Datenbanken
Bei Programmen, die viele Daten haben, die auf unterschiedliche Weise gesichtet und sortiert werden müssen, ist es oft einfacher und schneller, die Daten in eine In-Memory-SQLite-Datenbank zu laden und Abfragen mit Joins und ORDER BY-Klauseln zu verwenden, um die Daten in der benötigten Form und Reihenfolge zu extrahieren, anstatt zu versuchen, die gleichen Operationen manuell zu codieren. Die interne Verwendung einer SQL-Datenbank auf diese Weise gibt dem Programm auch eine größere Flexibilität, da neue Spalten und Indizes hinzugefügt werden können, ohne jede Abfrage neu codieren zu müssen.
Unternehmensdatenbank während Demos oder Tests
Client-Anwendungen verwenden in der Regel eine generische Datenbankschnittstelle, die Verbindungen zu verschiedenen SQL-Datenbank-Engines ermöglicht. Es ist sinnvoll, SQLite in den Mix der unterstützten Datenbanken aufzunehmen und die SQLite-Engine statisch mit dem Client zu verknüpfen. Auf diese Weise kann das Clientprogramm eigenständig mit einer SQLite-Datendatei zum Testen oder für Demonstrationen verwendet werden.
Schulung und Training
Da es einfach einzurichten und zu benutzen ist (die Installation ist trivial: einfach die ausführbare Datei sqlite3 oder sqlite3.exe auf den Zielrechner kopieren und ausführen), ist SQLite eine gute Datenbank-Engine für den Einsatz im SQL-Unterricht. Die Teilnehmer können so viele Datenbanken erstellen, wie sie möchten, und Datenbanken per E-Mail an den Dozenten senden, um Kommentare oder Bewertungen zu erhalten. Näheres findet sich bei SQL Schulung. Für fortgeschrittenere Studenten, die daran interessiert sind zu studieren, wie ein RDBMS implementiert wird, kann der modulare und gut kommentierte und dokumentierte SQLite-Code als gute Grundlage dienen.
Schlüsselwörter können oft als Identifikatoren verwendet werden
Die Sprache SQL ist reich an Schlüsselwörtern. Die meisten SQL-Implementierungen erlauben keine Verwendung von Schlüsselwörtern als Bezeichner (die Namen von Tabellen oder Spalten), es sei denn, sie sind in doppelte Anführungszeichen eingeschlossen. SQLite ist jedoch flexibler. Viele Schlüsselwörter können als Bezeichner verwendet werden, ohne dass sie in Anführungszeichen gesetzt werden müssen, solange diese Schlüsselwörter in einem Kontext verwendet werden, in dem klar ist, dass sie als Bezeichner gedacht sind.