SQLite

Sqlite
SQLite370.svg
Entwickler (en) D. Richard Hipp
Erstveröffentlichung 17. August 2000;
Vor 21 Jahren
Stabile Version 3.39.1[1] Edit this on Wikidata (13. Juli 2022; Vor 16 Tagen) [±]
Repository
Geschrieben in C
Betriebssystem Plattformübergreifend
Größe 699Kib
Typ RDBMS (eingebettet)
Lizenz Public domain[2]
Webseite sqlite.org Edit this at Wikidata
SQLite -Datenbankdateiformat
Dateiname Erweiterung
.sqlite3, .sqlite, .db
Internet -Medientyp Anwendung/vnd.sqlite3[3]
magische Zahl 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 (Nullterminiert ASCII "SQLite Format 3")
Erstveröffentlichung 2004-06-18
Offenes Format? Jawohl (Öffentlich zugänglich)
Webseite www.sqlite.org/FileFormat2.html

Sqlite (/ˌɛsˌkJuːˌɛlˈt/,[4][5] /ˈsichkwəˌlt/[6]) ist ein Datenbankmotor geschrieben in der C Programmiersprache. Es ist keine eigenständige App; Vielmehr ist es ein Bibliothek das Softwareentwickler in ihre Apps einbetten. Als solche gehört es zur Familie von Eingebettete Datenbanken. Es ist die am weitesten verbreitete Datenbank -Engine, da sie von mehreren der oberen verwendet wird Internetbrowser, Betriebssysteme, Mobiltelefone, und andere eingebettete Systeme.[7]

Sqlite hat Bindungen zu vielen Programmiersprachen. Es folgt im Allgemeinen PostgreSQL Syntax, aber nicht durchsetzen Geben Sie die Überprüfung ein.[8] Dies bedeutet, dass man beispielsweise eine Zeichenfolge in a einfügen kann Säule definiert als Ganzzahl.

Geschichte

D. Richard Hipp entworfen SQLite im Frühjahr 2000 während der Arbeit für Generaldynamik auf Vertrag mit dem Marine der Vereinigten Staaten.[9] HIPP entwirkte Software, die für a verwendet wurde Schadenskontrolle System an Bord von geführten Missibilien, die ursprünglich verwendet wurden HP-UX mit einem IBM Informix Datenbank Back-End. Sqlite begann als Tcl Verlängerung.[10]

Die Entwurfsziele von SQLITE bestanden darin, das Programm ohne Installation eines Datenbankverwaltungssystems zu ermöglichen oder a zu erfordern Datenbankadministrator. HIPP basierte die Syntax und die Semantik auf denen von PostgreSQL 6.5. Im August 2000 wurde Version 1.0 von SQLite veröffentlicht, mit Speicher basierend auf GDBM (GNU -Datenbankmanager). Im September 2001 ersetzte SQLite 2.0 GDBM durch einen Brauch B-Baum Implementierung, Hinzufügen Transaktion Fähigkeit. Im Juni 2004 fügte SQLite 3.0 hinzu Internationalisierung, Manifestiert Typingund andere wichtige Verbesserungen, teilweise finanziert von Amerika online.

Im Jahr 2011 kündigte HIPP seine Pläne an, a hinzuzufügen NoSQL Schnittstelle zu SQLite sowie Ankündigung von UNQL, einem funktionalen Supersatz von Sql designed für dokumentorientierte Datenbanken.[11]

SQLite ist eines von vier Formaten, die für eine langfristige Lagerung von empfohlen werden Datensätze zugelassen für die Verwendung durch die Kongressbibliothek.[12][13][14]

Entwurf

nicht wie Kundenserver Datenbankverwaltungssysteme, die SQLite Engine hat keinen Standalone Prozesse mit dem das Anwendungsprogramm kommuniziert. Stattdessen ist die SQLite -Bibliothek verknüpft in und so wird ein integraler Bestandteil des Anwendungsprogramms. Verknüpfung kann sein statisch oder dynamisch. Das Anwendungsprogramm verwendet die Funktionalität von SQLite durch einfache Funktionsaufrufe, was reduziert Latenz Im Datenbankzugriff: Funktionsaufrufe innerhalb eines einzelnen Prozesses sind effizienter als Interprozesskommunikation.

SQLite speichert die gesamte Datenbank (Definitionen, Tabellen, Indizes und die Daten selbst) als einzelne plattformübergreifend Datei auf einem Host -Computer. Es implementiert dieses einfache Design von Sperren Die gesamte Datenbankdatei während des Schreibens. SQLite -Lesevorgänge können multitaskiert werden, obwohl Schreibvorgänge nur nacheinander durchgeführt werden können.

Aufgrund des serverlosen Designs benötigen SQLite-Anwendungen weniger Konfiguration als Client-Server-Datenbanken. SQLite wird genannt Null-Conf[15] Da es keine Serviceverwaltung (z. B. Startskripte) oder Zugangskontrolle basierend auf erfordert GEWÄHREN und Passwörter. Die Zugangskontrolle wird mithilfe von Dateisystemberechtigungen an die Datenbankdatei selbst gegeben. Datenbanken in Client-Server-Systemen verwenden Berechtigungen des Dateisystems, die Zugriff auf die Datenbankdateien nur auf den Daemon-Prozess erhalten.

Eine weitere Implikation des serverlosen Designs ist, dass mehrere Prozesse möglicherweise nicht in die Datenbankdatei schreiben können. In serverbasierten Datenbanken stellt mehrere Autoren eine Verbindung zu demselben Daemon her, das seine Schlösser intern verarbeiten kann. SQLITE hingegen muss sich auf Dateisystemschlösser verlassen. Es gibt weniger Kenntnisse der anderen Prozesse, die gleichzeitig auf die Datenbank zugreifen. Daher ist SQLite nicht die bevorzugte Wahl für schreibintensive Bereitstellungen.[16] Für einfache Abfragen mit geringer Parallelität profitiert die Leistung von SQLite jedoch daran, den Overhead zu vermeiden, seine Daten an einen anderen Prozess zu übergeben.

SQLite verwendet PostgreSQL als Referenzplattform. "Was postgresql do" wird verwendet, um den SQL -Standard zu verstehen.[17][18] Eine Hauptabweichung ist das, mit Ausnahme von PrimärschlüsselSQLITE erzwingt nicht Geben Sie die Überprüfung ein; Die Art eines Wertes ist dynamisch und nicht streng eingeschränkt von der Schema (Obwohl das Schema beim Speichern eine Konvertierung auslöst, wenn eine solche Umwandlung möglicherweise reversibel ist). Sqlite strebt nach folgen Postels Regel.[19]

Merkmale

SQLite implementiert den größten Teil der SQL-92 Standard für SQL, aber es fehlen einige Funktionen. Zum Beispiel bietet es nur teilweise teilweise löst aus und kann nicht schreiben an Ansichten (Es bietet jedoch anstelle von Triggern, die diese Funktionalität liefern). Seine Unterstützung von Tabelle ändern Aussagen sind begrenzt.[20]

SQLite verwendet eine ungewöhnliche Typ System Für ein SQL-kompatibler DBMS: anstatt a zuzuweisen Typ In eine Spalte wie in den meisten SQL -Datenbanksystemen werden einzelne Werte zugewiesen. In Sprachbegriffen ist es dynamisch getippt. Darüber hinaus ist es schwach tippt auf einige der gleichen Arten wie Perl IS: Man kann a einfügen Saite In ein ganze Zahl Die Spalte (obwohl SQLite versucht, die Zeichenfolge zuerst in eine Ganzzahl umzuwandeln, wenn der bevorzugte Typ der Spalte eine Ganzzahl ist). Dies fügt Spalten Flexibilität hinzu, insbesondere wenn sie an eine dynamisch typisierte Skriptsprache gebunden ist. Die Technik ist jedoch nicht für andere SQL -Produkte tragbar. Eine häufige Kritik ist, dass das Typensystem von SQLITE den Datenintegritätsmechanismus fehlt, der durch statisch typisierte Spalten in anderen Produkten bereitgestellt wird. Die SQLite -Website beschreibt einen "strengen Affinitäts" -Modus, diese Funktion wurde jedoch noch nicht hinzugefügt.[19] Es kann jedoch mit Einschränkungen wie implementiert werden Check (typeof (x) = 'Integer').[9]

Die Tische enthalten normalerweise eine versteckte Rowid Indexspalte, die einen schnelleren Zugriff ergibt.[21] Wenn eine Datenbank eine ganzzahlige Primärschlüsselspalte enthält, optimiert SQLite sie normalerweise, indem sie sie als Alias ​​für behandelt Rowid, was den Inhalt als speichern lässt streng tippt 64-Bit signierte Ganzzahl und verändert sein Verhalten so etwas wie eine automatische Inkrementierungssäule. Zukunft[wenn?] Versionen von SQLITE können einen Befehl enthalten, um zu introspektieren, ob eine Spalte ein Verhalten wie das von hat Rowid Um diese Säulen von schwach typisierten, nicht-autoinkrementierenden Ganzzahl-Primärschlüssel zu unterscheiden.[22][Fehlgeschlagene Überprüfung]

Volle Unterstützung für Unicode Fallkonversionen können optional über eine Erweiterung aktiviert werden.[23]

Mehrere Computerprozesse oder Themen Kann gleichzeitig auf die gleiche Datenbank zugreifen. Mehrere Lesezugriffe können parallel erfüllt werden. Ein Schreibzugriff kann nur erfüllt werden, wenn derzeit keine anderen Zugriffe gewartet werden. Andernfalls schlägt der Schreibzugriff mit einem fehl Fehlercode (oder kann automatisch wiedergegeben werden, bis eine konfigurierbare Zeitüberschreitung abläuft). Diese gleichzeitige Situation würde sich im Umgang mit temporären Tabellen ändern. Diese Einschränkung ist in Version 3.7 gelockert, wenn Schreibbeindämmerung (Wal) wird eingeschaltet und ermöglicht gleichzeitige Lese- und Schreibvorgänge.[24]

Version 3.6.19 veröffentlicht am 14. Oktober 2009 Unterstützung für ausländische Schlüsselbeschränkungen.[25][26]

SQLITE Version 3.7.4 sah zuerst das FTS4-Modul (Volltext-Such-Such), das Verbesserungen über das ältere FTS3-Modul enthält.[27] Mit FTS4 können Benutzer Volltext-Suchen in Dokumenten ausführen, ähnlich wie Suchmaschinen-Suchwebseiten.[28] Version 3.8.2 fügte Unterstützung für das Erstellen von Tabellen ohne hinzu Rowid,[29] Dies kann Raum- und Leistungsverbesserungen bieten.[30] Gemeinsame Tabellenausdrücke Die Unterstützung wurde zu SQLite in Version 3.8.3 hinzugefügt.[31] 3.8.11 fügte ein neueres Suchmodul namens FTS5 hinzu, desto radikaler (im Vergleich zu FTS4) ändert sich eine Version in der Version.

Im Jahr 2015 mit dem JSON1 -Erweiterung[32] und neue Subtyp -Schnittstellen, SQLite Version 3.9 führte JSON Content Managing ein.

Ab Version 3.33.0 beträgt die maximal unterstützte Datenbankgröße 281 TB.

Entwicklung und Verteilung

Der Code von SQLite wird mit gehostet Fossil, a Verteilter Versionskontrollsystem Das basiert selbst auf einer SQLite -Datenbank.[33]

Ein eigenständiges Befehlszeile Das Programm wird in der Verteilung von SQLite bereitgestellt. Es kann verwendet werden, um eine Datenbank zu erstellen, Tabellen zu definieren, Zeilen einzufügen und zu ändern, Abfragen auszuführen und eine SQLite -Datenbankdatei zu verwalten. Es dient auch als Beispiel für das Schreiben von Anwendungen, die die SQLite -Bibliothek verwenden.

SQLite verwendet automatisiert Regressionstests vor jeder Veröffentlichung. Über 2 Millionen Tests[34] werden als Teil der Überprüfung einer Veröffentlichung ausgeführt. Beginnend mit der Veröffentlichung von SQLite 3.6.17 vom 10. August 2009 haben SQLite -Freisetzungen eine 100% ige Zweig -Testabdeckung, eine der Komponenten von Codeabdeckung. Die Tests und Testgurte sind teilweise öffentlich und teilweise proprietär.[34]

Bemerkenswerte Verwendungen

Betriebssysteme

SQLITE ist standardmäßig enthalten in:[10]

Middleware

  • Ado.net Der ursprünglich von Robert Simpson entwickelte Adapter wird seit April 2010 gemeinsam mit den SQLite -Entwicklern unterhalten.[36]
  • ODBC Der Fahrer wurde entwickelt und wird von Christian Werner getrennt gehalten.[37] Der ODBC -Treiber von Werner ist die empfohlene Verbindungsmethode zum Zugriff auf SQLite von OpenOffice.org.[38]
  • Com (ActiveX) Wrapper, das SQLite auf Windows zugegriffen wird, um Sprachen wie z. Jscript und Vbscript. Dies fügt SQLite -Datenbankfunktionen hinzu HTML -Anwendungen (HTA).[39]

Internetbrowser

  • Die Browser Google Chrome, Oper, Safari und die Android -Browser Alle ermöglichen das Speichern von Informationen in und abrufen von einer SQLite -Datenbank im Browser, wobei die Web SQL Database Technologie, obwohl dies schnell veraltet wird (nämlich abgelöst von Indexeddb). Intern, diese Chrom Basierte Browser verwenden SQLite -Datenbanken zum Speichern von Konfigurationsdaten wie Site -Besuchsgeschichte, Cookies, Download -Verlauf usw.[40]
  • Mozilla Firefox und Mozilla Thunderbird Speichern Sie eine Vielzahl von Konfigurationsdaten (Lesezeichen, Cookies, Kontakte usw.) in intern verwalteten SQLite -Datenbanken. Bis Firefox Version 57 ("Firefox Quantum") Es gab ein Add-On von Drittanbietern, bei dem die API diese Funktionalität unterstützte, um eine Benutzeroberfläche für die Verwaltung beliebiger SQLite-Datenbanken bereitzustellen.[41]
  • Mehrere Add-Ons von Drittanbietern können JavaScript-APIs verwenden, um SQLite-Datenbanken zu verwalten.[42][43]

Webanwendungs ​​-Frameworks

Andere

Programmiersprache Unterstützung

Sprachbindungen an SQLite für eine große Anzahl von Programmiersprachen existieren.

Siehe auch

Verweise

Zitate

  1. ^ "SQLite Release 3.39.1 auf 2022-07-13". 13. Juli 2022. Abgerufen 13. Juli 2022.
  2. ^ "SQLite Copyright". sqlite.org. Abgerufen 17. Mai, 2010.
  3. ^ "SQLite -Datenbankdatei -Medientyp bei Iana". Internet zugewiesene Zahlen Autorität. Iana. Abgerufen 2019-03-08.
  4. ^ "Warum SQLite als Datenbank erfolgreich war - Richard Hipp, Schöpfer von SQLite". Der Changelog. Episode 201. Event findet um 00:17:25 statt. Wie spreche ich den Namen des Produkts aus? Ich sage s-q-l-it, wie ein Mineral.
  5. ^ D. Richard Hipp (Moderator) (31. Mai 2006). Eine Einführung in SQLite (Video). Das Google Inc. -Ereignis findet um 00:01:14 statt. Abgerufen 23. März, 2010. [...] Ess-kju-Elite [...]
  6. ^ D. Richard Hipp (Moderator) (31. Mai 2006). Eine Einführung in SQLite. Das Google Inc. -Ereignis findet um 00:48:15 statt. Abgerufen 23. März, 2010. [...] Folge [...]
  7. ^ "Die am weitesten verbreiteten SQL -Datenbankschätzungen". Sqlite.org. Abgerufen 11. Mai, 2011.
  8. ^ Owens, Michael (2006). "Kapitel 4: SQL". In Gilmore, Jason; Thomas, Keir (Hrsg.). Die endgültige Anleitung zu SQLite. D. Richard Hipp (Vorwort), Preston Hagar (technischer Prüfer). Apress. p. 133. ISBN 978-1-59059-673-9. Abgerufen 30. Dezember 2014.
  9. ^ a b Owens, Michael (2006). Die endgültige Anleitung zu SQLite. Apress. doi:10.1007/978-1-4302-0172-4_1. ISBN 978-1-59059-673-9.
  10. ^ a b c "Bekannte Benutzer von SQLite". Sqlite. Abgerufen 5. August, 2015.
  11. ^ "Interview: Richard Hipp über UNQL, eine neue Abfragesprache für Dokumentdatenbanken". Infoq. 4. August 2011. Abgerufen 5. Oktober, 2011.
  12. ^ "LOC Empfohlenes Speicherformat". www.sqlite.org. Abgerufen 2020-04-09.
  13. ^ "SQLite, Version 3". www.loc.gov. 2017-03-28. Abgerufen 2020-04-09.
  14. ^ "Empfohlene Formatanweisung - Datensätze/Datenbanken". Kongressbibliothek. Abgerufen 2020-04-09.
  15. ^ "SQLite ist eine Datenbank mit Nullkonfiguration". Sqlite.org. Abgerufen 3. August, 2015.
  16. ^ "Angemessene Verwendungen für SQLite". Sqlite.org. Abgerufen 2015-09-03.
  17. ^ "PGCON 2014: Clustering und Wodka". Lwn.net. Abgerufen 2017-01-06.
  18. ^ "PGCON2014: SQLITE: Protégé von PostgreSQL". Pgcon.org. 20. September 2015. Abgerufen 2017-01-06.
  19. ^ a b "SQLite: StrictMode". Sqlite.org. Abgerufen 3. September, 2015.
  20. ^ "Veröffentlichungsgeschichte von SQLite".
  21. ^ "SQL wie von SQLite verstanden". Sqlite. Abgerufen 21. Mai 2018. Die Suche nach einem Datensatz mit einem bestimmten ROWID oder für alle Datensätze mit RowIDs in einem bestimmten Bereich ist etwa doppelt so schnell wie eine ähnliche Suche durch Angabe anderer Primärschlüssel oder indizierter Wert.
  22. ^ "SQLite: Check-in [2494132a]". www.sqlite.org. 2017-11-28. Fügen Sie den Befehl "pragma table_ipk (table)" für Bewertungszwecke hinzu.
  23. ^ "Fall-unempfindliches Matching von Unicode-Zeichen funktioniert nicht". SQLite stellte häufig Fragen. Abgerufen 2015-09-03.
  24. ^ "Schreiben Sie im Voraus Protokollierung in SQLite 3.7". Sqlite.org. Abgerufen 3. September, 2011. Wal bietet mehr Parallelität, da die Leser keine Autoren blockieren und ein Schriftsteller die Leser nicht blockiert. Lesen und Schreiben können gleichzeitig fortgesetzt werden.
  25. ^ Karwin, Bill (Mai 2010). Carter, Jacquelyn (Hrsg.). SQL -Antipattern: Vermeiden Sie die Fallstricke der Datenbankprogrammierung. Das pragmatische Bücherregal. p. 70. ISBN 978-1-934356-55-5. Manchmal sind Sie gezwungen, eine Datenbankmarke zu verwenden, die keine ausländischen Schlüsselbeschränkungen unterstützt (z. B. MySQL MyISAM Storage Engine oder SQLite vor Version 3.6.19).
  26. ^ "SQLite Release 3.6.19 am 2009-10-14".
  27. ^ "SQLite Release 3.7.4 auf 2010-12-08". Sqlite.org. 8. Dezember 2010. Abgerufen 3. September, 2015.
  28. ^ "SQLite FTS3 und FTS4 -Erweiterungen". Sqlite.org. Abgerufen 3. September, 2015.
  29. ^ "SQLite Release 3.8.2 am 2013-12-06". Sqlite.org. 6. Dezember 2013. Abgerufen 3. September, 2015.
  30. ^ "Die ohne Rowid -Optimierung". Sqlite.org. Abgerufen 3. September, 2015.
  31. ^ "SQLite Release 3.8.3 am 2014-02-03". Sqlite.org. 3. Februar 2014. Abgerufen 3. September, 2015.
  32. ^ "Die JSON1 -Erweiterung". Sqlite.org.
  33. ^ "Fossil: fossile Leistung". Fossile SCM.org. 23. August 2009. Abgerufen 12. September, 2009.
  34. ^ a b "Wie SQLite getestet wird". Sqlite.org. Abgerufen 12. September, 2009.
  35. ^ "Um die Version von SQLite zu verwenden, die mit Windows installiert ist".
  36. ^ "Heim". System.data.sqlite. 2016-12-30. Abgerufen 2017-01-06.
  37. ^ "SQLite ODBC -Treiber". CH-Werer.de. 2016-12-01. Abgerufen 2017-01-06.
  38. ^ "Verwenden der SQLite -Datenbank mit openOffice.org: Version 2.0" (PDF). Documentation.openoffice.org. Abgerufen 2017-01-06.
  39. ^ "SQLite - SQLite Wrapper". Sqlite.org. 7. Februar 2009. Abgerufen 7. Februar, 2009.
  40. ^ "Ort der Google Chrome History". www.foxtonforensics.com. 2020-10-06. Abgerufen 2020-10-06.
  41. ^ "SQLite Manager :: Add-Ons for Firefox". Addons.mozilla.org. 2015-02-28. Archiviert von das Original Am 2017-01-02. Abgerufen 2017-01-06.
  42. ^ "SQLite Manager-Holen Sie sich diese Erweiterung für Firefox (en-us)". Addons.mozilla.org. 2018-07-24. Abgerufen 2018-10-05.
  43. ^ "SQLite Reader-Holen Sie sich diese Erweiterung für Firefox (en-us)". Addons.mozilla.org. 2018-09-01. Abgerufen 2018-10-05.
  44. ^ "Verwenden Sie SQL, um mein bestes Foto eines Pelikans nach Apple Photo zu finden". Simon Willisons Weblog. Abgerufen 23. Mai, 2020.
  45. ^ "Audacity 3.0.0 veröffentlicht". 17. März 2021. Abgerufen 17. März, 2021.
  46. ^ Hinegardner, Jeremy (28. August 2007). "Skype -Client mit SQLite?". SQLite-Benutzer (Mailingliste). Archiviert von das Original Am 2007-11-17. Abgerufen 14. Juni, 2010.

Quellen

Externe Links