Die Veröffentlichung von SQLite 3.45, einer leichtgewichtigen Datenbank, die als dynamische Bibliothek bereitgestellt wird, wurde bekannt gegeben. Der Code von SQLite wird als Gemeineigentum (public domain) verbreitet, d.h. er kann ohne EinschrĂ€nkungen und kostenlos zu allen Zwecken verwendet werden. Die finanzielle UnterstĂŒtzung der SQLite-Entwickler erfolgt durch ein eigens gegrĂŒndetes Konsortium, zu dem Unternehmen wie Bentley, Bloomberg, Expensify und Navigation Data Standard gehören.
HauptÀnderungen:
- Alle SQL-Funktionen zur Arbeit mit dem JSON-Format wurden ĂŒberarbeitet und auf ein neues internes Format des JSONB-Parsers umgestellt, das serialisiert werden kann und in der Datenbank gespeichert wird, um eine wiederholte Analyse bei der Verwendung von JSON-Werten zu vermeiden. Neue Versionen der JSON-generierenden Funktionen erzeugen jetzt ein binĂ€res JSONB-Format anstelle eines Textformats. Der Funktion json_valid() wurde ein optionales zweites Argument hinzugefĂŒgt, ĂŒber das eine Bitmaske angegeben werden kann, die die Merkmale eines gĂŒltigen JSON definiert (zum Beispiel gilt bei Angabe von 0x04 ein JSONB-Blob als gĂŒltig, bei 0x01 ein Text-JSON im RFC-8259-Format, und bei 0x05 sind beide Varianten gĂŒltig).
- Der virtuellen Tabelle FTS5, die fĂŒr die Volltextsuche verwendet wird, wurde die Option tokendata hinzugefĂŒgt, die die Verwendung eigener Tokenizer ermöglicht.
- StandardmĂ€Ăig ist die Optimierung SQLITE_DIRECT_OVERFLOW_READ aktiviert, bei der Overflow-Seiten, die gröĂer sind als die StandardgröĂe einer B-Baum-Seite, direkt aus der Datei gelesen werden, wobei der Cache umgangen wird. Zum Deaktivieren bei der Kompilierung kann die Option "-DSQLITE_DIRECT_OVERFLOW_READ=0" verwendet werden.
- Im Abfrageplaner wurde die Effizienz der Optimierung transitativer EinschrĂ€nkungen (transitive constraint) erhöht und das Ignorieren von Indizes verbessert, die bei der AusfĂŒhrung der Operation ANALYZE als minderwertig betrachtet werden.
- Im Befehlszeilen-Interface wurde die Anzeige des Inhalts in UTF-8-Codierung auf der Windows-Plattform verbessert. Die automatische Erkennung der Verwendung des CLI-Interfaces beim AusfĂŒhren von â.dumpâ-Skripten wurde umgesetzt, und es wurden entsprechende Ănderungen an den Einstellungen vorgenommen, wie â.dbconfig defensive offâ und â.dbconfig dqs_dll onâ.
- In den auf Anwendungsebene definierten SQL-Funktionen wurde die Eigenschaft SQLITE_RESULT_SUBTYPE hinzugefĂŒgt, die es ermöglicht, die Funktion sqlite3_result_subtype() zur Inspektion der Argumentuntertypen aufzurufen.
ZusĂ€tzlich kann die Entwicklung eines neuen Transaktionsprotokollmodus - WAL2 (âPRAGMA journal_mode = wal2â), der in experimentellen SQLite-Bauten verwendet wird, hervorgehoben werden. Bei diesem Modus werden zwei wal-Dateien (âdatabase-walâ und âdatabase-wal2â) anstelle von einer verwendet. Beim Schreiben von Daten in die Datenbank werden neue Daten in die erste wal-Datei hinzugefĂŒgt. Wenn die erste wal-Datei eine ausreichende GröĂe erreicht, wird auf die zweite Datei umgeschaltet. Nach dem Umschalten auf die zweite wal-Datei wird die erste fĂŒr das Festschreiben von Ănderungen (Checkpoint) und das Ăberschreiben verfĂŒgbar. Dementsprechend, wenn die zweite wal-Datei eine groĂe GröĂe erreicht, wird wieder auf die erste umgeschaltet usw. Dies löst das Problem des unkontrollierten Wachstums der wal-Datei in Situationen, in denen Transaktionen lange nicht festgeschrieben werden oder langwierige Leseprozesse durchgefĂŒhrt werden.
Quelle: opennet.ru
