L'API Web SQL Database, qui vous permet pour stocker des données de façon structurée sur l'ordinateur de l'utilisateur (en interne, en fonction le moteur de base de données SQLite), était lancé en avril 2009 et abandonnés en novembre 2010. Elle a été implémentée dans WebKit (qui alimente Safari) et est restée active dans le moteur Blink (qui alimente Chrome), Gecko (qui alimente Firefox) n'ont jamais mis en œuvre cette fonctionnalité et WebKit l'a supprimée en 2019.
The World Wide Web Consortium (W3C)
encourage
à ceux qui ont besoin de bases
de données Web pour adopter
API Web Storage
technologies telles que
localStorage
et
sessionStorage
ou
IndexedDB.
Ces technologies montrent leurs atouts lorsqu'il s'agit de magasins de clés-valeurs
des données structurées, mais nous reconnaissons aussi qu'ils présentent également des faiblesses comme l'absence
un langage de requête efficace. Les gens veulent avoir SQL sur le Web pour une raison.
Étapes d'abandon et de suppression de Web SQL
- [ OK] Web SQL a été abandonné et supprimé pour les contextes tiers dans Chromium 97 ( 4 janvier 2022).
- [ OK] L'accès SQL Web dans les contextes non sécurisés est obsolète depuis le Chromium 105 ( 4 janvier 2022), date à laquelle un message d'avertissement s'affiche dans le panneau des problèmes des outils pour les développeurs Chrome.
- [ OK] L'accès SQL Web dans les contextes non sécurisés n'est plus disponible à partir de Chromium 110 ( 4 janvier 2022). Une règle d'entreprise permettant de continuer à utiliser la fonctionnalité est disponible Chromium 110 ( 4 janvier 2022) vers Chromium 123. ( 4 janvier 2022).
- [ OK] L'accès à Web SQL dans tous les contextes est obsolète depuis le Chromium 115 ( 4 janvier 2022) et qu'un message d'avertissement s'affiche dans le panneau des problèmes des outils pour les développeurs Chrome.
- [évaluation avant arrêt "Continuer à utiliser Web SQL" était disponible sur Chromium 117 ( 4 janvier 2022) vers Chromium 123 ( 4 janvier 2022). Pour en savoir plus sur les versions d'évaluation avant arrêt, consultez Premiers pas avec les phases d'évaluation OK] A
- [ OK] L'accès à Web SQL n'est plus disponible dans tous les contextes de Chromium 119.
Étapes suivantes
Comme indiqué dans l'introduction,
API Web Storage
technologies telles que
localStorage
et
sessionStorage
,
ou
IndexedDB
sont de bonnes alternatives dans de nombreux cas, mais de loin dans tous les cas.
Pourquoi laisser le stockage aux développeurs Web ?
Avec l'avènement de Wasm, les solutions SQL ou NoSQL peuvent désormais être disponibles sur le Web. Exemple : est DuckDB-Wasm, et un autre est absurd-sql. Sur la base de ces créations, nous pensons que la communauté des développeurs peut effectuer des itérations et créer plus rapidement et mieux que les fournisseurs de navigateurs.
Nous ne prévoyons pas de simplement supprimer Web SQL. En fait, nous l'avons remplacé par quelque chose qui sera géré par la communauté Open Source, servi de package peuvent être mises à jour à leur guise, sans qu'il soit nécessaire d'introduire des correctifs et de nouvelles fonctionnalités ; directement dans les navigateurs. Notre objectif est de permettre aux développeurs votre propre base de données sur le Web.
De plus, nous espérons que cet exemple aidera un nouvel écosystème que les bases de données Open Source prospèrent ! La sortie de poignées d'accès au système de fichiers fournit enfin la nouvelle primitive, qui permet d'utiliser des solutions de stockage personnalisées conçue.
Raisons de l'abandon de Web SQL
Inquiétudes liées au développement durable et à la sécurité
La spécification Web SQL ne peut pas être mise en œuvre de manière durable, ce qui limite l'innovation et les nouvelles fonctionnalités. La dernière version de la norme states "Les user-agents doivent implémenter le dialecte SQL compatible avec Sqlite 3.6.19".
Au départ, SQLite n'était pas conçu pour exécuter des instructions SQL malveillantes, alors que l'implémentation de Web SQL implique les navigateurs doivent le faire exactement. Le besoin de rester au fait de la sécurité et les correctifs de stabilité imposent la mise à jour de SQLite dans Chromium. Cela intervient directement entrent en conflit avec l'exigence de Web SQL de se comporter exactement comme SQLite 3.6.19.
Forme de l'API
Web SQL est également une API qui indique son ancienneté. Étant un enfant de la fin des années 2000, un excellent exemple de « rappel de l'enfer », comme dans l'exemple de code suivant (avec l'aimable autorisation de Nolan Lawson) démontre. Comme vous pouvez le voir, les instructions SQL (à l'aide de la fonction SQLite) sont transmises sous forme de chaînes. aux méthodes de base de données.
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!');
},
);
},
);
Si vous exécutez ce code et inspecter la table créée avec les outils pour les développeurs Chrome ; voici le résultat:
Manque d'assistance par l'équipe chargée de l'implémentation
Outre la forme obscur de l'API (du moins du point de vue actuel), Mozilla avait beaucoup sur le développement de Web SQL à partir de SQLite:
"Nous pensons que [SQLite] ne constitue pas la base idéale pour une API exposée au Web non seulement parce qu'il n'existe pas de modèle crédible ni largement accepté, standard qui sous-ensemble SQL d'une manière utile. De plus, nous ne voulons pas que à SQLite pour affecter le Web par la suite, et ne pensez pas à exploiter les principaux navigateurs (ainsi qu'une norme Web) à SQLite."
Pour en savoir plus sur les préoccupations de Mozilla, consultez article de blog publié par Mozillan Vladimir Vukićević. Pour en savoir plus sur l'historique, consultez le Minutes du groupe de travail sur les applications Web du W3C (Si vous voulez vraiment entrer dans les détails, lisez le journaux IRC) et archives de listes de diffusion). En outre, Article de blog de Nolan Lawson donne un bon aperçu de ce qui s'est passé.
Commentaires
Si vous avez des questions concernant les étapes d'abandon communiquées dans ce n'hésitez pas à nous contacter sur le liste de diffusion blink-dev. L'adhésion à ce groupe est ouverte à tout le monde, et tout le monde est autorisé à envoyer des messages.
Liens associés
- Entrée ChromeStatus: Arrêt et suppression de WebSQL dans des contextes tiers
- Entrée ChromeStatus: Arrêt et suppression de WebSQL dans les contextes non sécurisés
- Projet d'abandon et de suppression: WebSQL dans des contextes tiers
- Projet d'abandon et de suppression: WebSQL dans des contextes non sécurisés
- Problème Chromium: Arrêt et suppression de WebSQL dans des contextes tiers
- Problème Chromium: Arrêt et suppression de WebSQL dans les contextes non sécurisés
- Problème Chromium: Arrêt et suppression de WebSQL (Window#openDatabase)
- SQLite Wasm dans le navigateur reposant sur le système de fichiers privé d'origine
Remerciements
Cet article a été lu par Joe Medley et Ben Morss Joshua Bell.