Release der DBMS SQLite 3.40

Die Veröffentlichung von SQLite 3.40, einem leichtgewichtigen DBMS, das als dynamische Bibliothek präsentiert wird, wurde bekannt gegeben. Der Code von SQLite ist als Public Domain verfügbar, d.h. er kann ohne Einschränkungen und kostenlos für beliebige Zwecke verwendet werden. Die finanzielle Unterstützung der SQLite-Entwickler erfolgt durch ein eigens gegründetes Konsortium, dem Unternehmen wie Adobe, Oracle, Mozilla, Bentley und Bloomberg angehören.

Hauptänderungen:

  • Eine experimentelle Möglichkeit zur Kompilierung von SQLite in den WebAssembly-Zwischencode wurde umgesetzt, der im Webbrowser ausgeführt werden kann und sich für die Arbeit mit Datenbanken aus Webanwendungen in JavaScript eignet. Webentwicklern wird eine hochgradig objektorientierte Schnittstelle für den Umgang mit Daten im Stil von sql.js oder Node.js sowie eine Wrapper-API über das low-level C-API und eine Web Worker-basierte API bereitgestellt, die es ermöglicht, asynchrone Handler in separaten Threads zu erstellen. Daten, die von Webanwendungen in der WASM-Version von SQLite gespeichert werden, können auf der Client-Seite mithilfe von OPFS (Origin-Private FileSystem) oder der API window.localStorage gespeichert werden.
  • Das Erweiterung recovery wurde hinzugefügt, um Daten aus beschädigten Dateien der Datenbank wiederherzustellen. Für die Wiederherstellung wird im Kommandozeileninterface der Befehl „.recover“ verwendet.
  • Die Funktionsweise des Query-Planers wurde verbessert. Einschränkungen bei der Verwendung von Indizes mit Tabellen, die mehr als 63 Spalten umfassen, wurden aufgehoben (früher fand bei Operationen mit Spalten, deren ordnungsgemäßer Nummer über 63 lag, keine Indizierung statt). Die Indizierung von Werten, die in Ausdrücken verwendet werden, wurde verbessert. Das Laden großer Zeilen und Blobs von der Festplatte bei der Verarbeitung der Operatoren NOT NULL und IS NULL wurde beendet. Die Materialisierung von Ansichten wurde ausgeschlossen, bei denen eine vollständige Abtastung nur einmal durchgeführt wird.
  • In der Codebasis wurde anstelle von „char *“ für die Darstellung von Dateinamen ein separater Typ sqlite3_filename verwendet.
  • Die interne Funktion sqlite3_value_encoding() wurde hinzugefügt.
  • Der Modus SQLITE_DBCONFIG_DEFENSIVE wurde hinzugefügt, der Änderungen an der Version des Datenschema verbietet.
  • Die Implementierung des Parameters „PRAGMA integrity_check“ wurde um zusätzliche Prüfungen erweitert. Beispielsweise dürfen in Tabellen ohne das Kennzeichen STRICT keine numerischen Werte in Spalten des Typs TEXT und keine Zeichenfolgen mit Zahlen in Spalten des Typs NUMERIC enthalten sein. Zudem wurde eine Überprüfung der korrekten Reihenfolge der Zeilen in Tabellen mit dem Merkmal „WITHOUT ROWID“ hinzugefügt.
  • Im Ausdruck „VACUUM INTO“ wurden die Einstellungen „PRAGMA synchronous“ berücksichtigt.
  • Eine Build-Option SQLITE_MAX_ALLOCATION_SIZE wurde hinzugefügt, die die Größe der Blöcke bei der Speicherzuweisung begrenzt.
  • Der in SQLite integrierte Algorithmus zur Erzeugung von Pseudo-Zufallszahlen wurde von der Verwendung des Stromchiffrierverfahrens RC4 auf Chacha20 umgestellt.
  • Die Verwendung von Indizes mit gleichen Namen in verschiedenen Datenschemata ist erlaubt.
  • Leistungsoptimierungen wurden implementiert, die die CPU-Belastung bei typischen Aktivitäten um etwa 1% reduzieren.

Quelle: opennet.ru

60GB SSD 8Gb DDR4