Die Web SQL Database API, mit der Sie um Daten strukturiert auf dem Computer des Nutzers zu speichern (intern basierend auf SQLite-Datenbankmodul) Einführung im April 2009 und ab November 2010 eingestellt. Sie wurde zwar in das WebKit, das für Safari eingesetzt wird, implementiert und blieb in die Blink-Engine (die für Chrome verwendet wird), Gecko (für Firefox) niemals diese Funktion implementiert und WebKit hat sie 2019 entfernt.
World Wide Web Consortium (W3C)
fördert
die Webdatenbanken benötigen,
Web Storage API
Technologien wie
localStorage
und
sessionStorage
oder
IndexedDB.
Diese Technologien zeigen ihre Stärken in Bezug auf Schlüssel/Wert-Speicher und
strukturierte Daten, haben aber anerkannt auch Schwächen wie das Fehlen eines
Abfragesprache verwenden. Die Leute wollen SQL im Web nicht ohne Grund.
Schritte zur Einstellung und Entfernung von Web SQL
- [ Fertig.] Web SQL wurde eingestellt und aus Drittanbieter-Kontexten entfernt: Chromium 97 ( 4. Januar 2022).
- [ Fertig.] Der Web SQL-Zugriff in unsicheren Kontexten wurde ab dem Chromium 105 ( ab dem 4. Januar 2022), zu welchem Zeitpunkt wurde im Bereich „Probleme“ in den Chrome-Entwicklertools angezeigt.
- [ Fertig.] Kein Web-SQL-Zugriff in unsicheren Kontexten mehr verfügbar ab Chromium 110 ( 4. Januar 2022). Eine Unternehmensrichtlinien, um die Funktion weiterhin zu nutzen, ist verfügbar unter Chromium 110 ( vom 4. Januar 2022) an Chromium 123 übertragen ( 4. Januar 2022).
- [ Fertig.] Der Web SQL-Zugriff wurde in allen Kontexten eingestellt ab dem Chromium 115 ( 4. Januar 2022) und eine Warnmeldung wird angezeigt. im Bereich „Probleme“ in den Chrome-Entwicklertools.
- [Test zur Einstellung von Web SQL weiter zu verwenden war in Chromium 117 verfügbar ( vom 4. Januar 2022) an Chromium 123 ( 4. Januar 2022). Weitere Informationen zu Tests zur Einstellung finden Sie unter Erste Schritte mit Ursprungstests Fertig.] A
- [ Fertig.] Web SQL-Zugriff ist in allen Kontexten nicht mehr verfügbar von Chromium 119
So geht es weiter
Wie in der Einleitung erwähnt,
Web Storage API
Technologien wie
localStorage
und
sessionStorage
,
oder die
IndexedDB
sind in vielen, aber bei Weitem nicht allen Fällen gute Alternativen.
Gründe dafür, dass Webentwicklern Speicherplatz zur Verfügung gestellt werden
Mit der Einführung von Wasm können SQL- oder NoSQL-Lösungen im Web eingeführt werden. Ein Beispiel ist DuckDB-Wasm, ein weiterer absurd-sql. Basierend auf diesen Kreationen Wir sind überzeugt, dass die Entwickler-Community schneller und besser als Browseranbieter.
Wir haben nicht vor, Web SQL einfach zu entfernen. Tatsächlich haben wir es durch irgendwas das von der Open-Source-Community gepflegt wird und als Paket dient, können nach Belieben aktualisiert werden, ohne dass Sie Korrekturen und neue Funktionen einführen müssen. direkt im Browser. Unser Ziel ist es, Entwicklern die Möglichkeit zu geben, eine eigene Datenbank ins Web.
Außerdem hoffen wir, dass dieses Beispiel Open-Source-Datenbanken florieren! Die Veröffentlichung von Zugriffs-Handles des Dateisystems bietet schließlich die neue Primitive, mit der sich benutzerdefinierte Speicherlösungen entwickelt.
Gründe für die Einstellung von Web SQL
Nachhaltigkeits- und Sicherheitsbedenken
Die Web SQL-Spezifikation kann nicht nachhaltig implementiert werden, was schränkt Innovationen und neue Funktionen. Die letzte Version des Standards status „User-Agents müssen Implementieren Sie den von Sqlite 3.6.19" unterstützten SQL-Dialekt.
SQLite war ursprünglich nicht die schädliche SQL-Anweisungen ausführen können. Die Implementierung von Web SQL bedeutet, genau das tun müssen. Die Notwendigkeit, mit Sicherheits- und Stabilitätskorrekturen erfordern die Aktualisierung von SQLite in Chromium. Dies kommt direkt Konflikt mit der Anforderung von Web SQL, sich genau wie SQLite 3.6.19 zu verhalten.
API-Form
Web SQL ist ebenfalls eine API, die ihr Alter anzeigt. Als Kind der späten 2000er-Jahre ein gutes Beispiel für die Rückrufhölle, wie im folgenden Codebeispiel (mit freundlicher Genehmigung von Nolan Lawson) demonstriert wird. Wie Sie sehen, werden die SQL-Anweisungen (mithilfe der SQLite-SQL-Dialekt) werden als Strings übergeben. bis hin zu Datenbankmethoden.
openDatabase(
// Name
'mydatabase',
// Version
1,
// Display name
'mydatabase',
// Estimated size
5000000,
// Creation callback
function (db) {
db.transaction(
// Transaction callback
function (tx) {
// Execute SQL statement
tx.executeSql(
// SQL statement
'create table rainstorms (mood text, severity int)',
// Arguments
[],
// Success callback
function () {
// Execute SQL statement
tx.executeSql(
// SQL statement
'insert into rainstorms values (?, ?)',
// Arguments
['somber', 6],
// Success callback
function () {
// Execute SQL statement
tx.executeSql(
// SQL statement
'select * from rainstorms where mood = ?',
// Arguments
['somber'],
// Success callback
function (tx, res) {
// Do something with the result
var row = res.rows.item(0);
console.log(
'rainstorm severity: ' +
row.severity +
', my mood: ' +
row.mood,
);
},
);
},
);
},
);
},
// Error callback
function (err) {
console.log('Transaction failed!: ' + err);
},
// Success callback);
function () {
console.log('Transaction succeeded!');
},
);
},
);
Wenn Sie diesen Code ausführen und die erstellte Tabelle mit den Chrome-Entwicklertools lautet das Ergebnis:
Fehlende Unterstützung durch den Implementierer
Abgesehen von der arkanen API-Form (zumindest aus heutiger Sicht), hatte viele Bedenken über Web SQL, das auf SQLite basiert:
„Wir glauben nicht, dass [SQLite] die richtige Grundlage für eine API ist, die dem allgemeinen Web nicht zuletzt deshalb, weil es keine glaubwürdigen, weithin anerkannten der SQL auf nützliche Weise unterteilt. Außerdem möchten wir keine Änderungen SQLite zu nutzen, um sich später auf das Web auszuwirken, und glaubt nicht, die Nutzung größerer Browser (und ein Webstandard) auf SQLite zu veröffentlichen.“
Weitere Informationen zu den Bedenken von Mozilla finden Sie hier: im Blogpost von Mozillan Vladimir Vukićević. Einen ausführlicheren Verlauf findest du in der W3C-Arbeitsgruppenminuten für Webanwendungen (Und wenn Sie wirklich ins Detail gehen möchten, lesen Sie die IRC-Logs) und den Mailinglisten-Archive). Außerdem Blogpost von Nolan Lawson gibt einen guten Überblick darüber, was passiert ist.
Feedback
Falls Sie Anliegen bezüglich der in diesem Dokument beschriebenen Einstellungsschritte haben veröffentlicht haben, teilen Sie uns dies auf der Mailingliste für blink-dev. Jeder kann in dieser Gruppe Mitglied werden und jeder darf posten.
Weitere Informationen
- ChromeStatus-Eintrag: WebSQL im Zusammenhang mit Drittanbietern einstellen und entfernen
- ChromeStatus-Eintrag: WebSQL in nicht sicheren Kontexten einstellen und entfernen
- Einstellung und Entfernung geplant: WebSQL in Drittanbieterkontexten
- Einstellung und Entfernung geplant: WebSQL in nicht sicheren Kontexten
- Chromium-Problem: WebSQL im Zusammenhang mit Drittanbietern einstellen und entfernen
- Chromium-Problem: WebSQL in unsicheren Kontexten einstellen und entfernen
- Chromium-Problem: WebSQL verwerfen und entfernen (Window#openDatabase)
- SQLite Wasm im Browser, unterstützt vom privaten Dateisystem des Ursprungs
Danksagungen
Dieser Artikel wurde von Joe Medley geprüft und Ben Morss und Joshua Bell