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
