web-dev-qa-db-fra.com

Pourquoi la base de données Web SQL est-elle obsolète?

Je crée une application hybride Android.

Au début, j'ai décidé d'utiliser localStorage, après avoir passé 2 jours, j'ai réalisé que c'était très étrange et je l'ai donc abandonné.

Ensuite, j'ai récupéré indexedDB, après avoir passé toute la journée et avoir effectivement obtenu la sortie dans Google Chrome, il ne s'exécute pas dans une WebView de l'application Android Android.

Et je n'ai jamais utilisé de base de données Web SQL car elle était obsolète. Quoi qu'il en soit, j'ai remarqué que PhoneGap utilise toujours Web SQL et les navigateurs Android le prennent en charge.

Pourquoi Web SQL a-t-il été déconseillé en premier lieu? Et sera-ce une bonne idée pour moi d'aller avec Web SQL maintenant?

97
user52009

Version courte: Web SQL était obsolète parce que les normes sont vraiment importantes et transformer Web SQL en une norme appropriée aurait été extrêmement difficile.

Étant donné que les implémentations existantes de Web SQL sont essentiellement des enveloppes autour de SQLite, toute tentative pour en définir une norme consistait essentiellement à "faire ce que fait SQLite". Ce n'est pas assez bon; un véritable standard doit être autonome, pour définir l'interface et les cas d'angle et les exceptions lui-même au lieu de pointer vers une implémentation existante (en particulier une implémentation tierce comme SQLite). Sinon, vous risquez de prendre les bizarreries d'une implémentation particulière et de les consacrer en tant que norme. D'après ce que j'ai lu, le W3C préfère plusieurs implémentations indépendantes des normes proposées pour garantir que cela se produise; puisque Web SQL était tellement lié à SQLite, cela n'allait tout simplement pas se produire.

blog de Mozilla donne plus de détails sur leur raisonnement en particulier pour ne pas supporter Web SQL; apparemment, ils étaient l'une des principales voix pour obtenir la dépréciation de Web SQL.

Devriez-vous utiliser Web SQL maintenant? Je ne m'attends pas à ce que les fournisseurs qui le prennent actuellement en charge (comme Google et Apple) l'abandonnent de sitôt, mais IE et Firefox ne l'ajouteront pas, et comme il est obsolète, pourquoi y investir? (Par exemple, Ido Green , avec Google Developer Relations, ne recommande pas de l'utiliser.)

102
Josh Kelley

La réponse de Josh Kelley est jusqu'à présent la MEILLEURE réponse que j'ai jamais trouvée sur la raison de l'arrêt du travail standard. Cela dit, je pense qu'il y a une perspective supplémentaire à considérer concernant la base d'utilisateurs.

Quoi qu'il en soit, je ne suis pas d'accord sur l'approche d'Ido Green sur le sujet ("Il s'agit d'une recommandation pour les développeurs Web de ne plus utiliser la technologie aussi efficacement") ...

Je crois (comme l'indique vi4m dans les commentaires de l'article d'Ido Green):

Nous (développeurs) pouvons toujours utiliser cette technologie. Aucun fournisseur de navigateur n'a demandé la suppression de cette technologie, ni n'a l'intention de la supprimer. Les développeurs sont la voix du web. Nous pouvons simplement l'utiliser, peut-être que Mozilla changera d'avis ;-)

Et j'ajouterais une autre approche logique: si vous développez pour l'ambiance mobile ... ¿quels ambients sont entre plus de mains? Réponse: iOS et Android ... Donc, si les DEUX prennent en charge webSQL, et que votre cible est MASSIVE MOBILE, allez-y!

Pensez comme les grandes applications l'ont fait presque toujours au début, obtenez d'abord le PLUS, puis (une fois le succès atteint) recréez le travail pour obtenir le moins restant (si vous voulez vraiment les atteindre ou si vous êtes invité à le faire). Enfin, n'est-ce pas toujours le succès qui marque le chemin?


Après avoir lu l'article de Nolan Lawson (dans lequel est clairement son intention de donner une chance à son invention), je crois que cette affaire est devenue une nouvelle guerre froide entre géants de la technologie qui ne devrait même pas exister. Je crois que les spécifications sont faites pour rester (aussi longues et intactes que possible - mieux pour des performances orientées client). Ironiquement, le travail des "spécificateurs" consiste à générer de NOUVELLES spécifications (parfois là où il n'y en a pas besoin, donc il peut avoir quelque chose de plus à faire), et de même les emplois de programmeurs se concentrent parfois sur la modification et la réécriture de ce qui fonctionne déjà au lieu de trouver des solutions à de nouveaux problèmes et de nouvelles tendances.

Pour moi, les bases de données côté client consistaient simplement à établir des parallèles (entre le côté serveur et le côté client) afin que nous puissions créer, stocker, télécharger et télécharger facilement des données. Dans cette approche, avoir les mêmes langages et structures (au moins pour nous, les développeurs open source LAMP) est simple et logique.

Je pense que l'intention d'IndexedDB d'être une alternative avec des possibilités plus larges et plus récentes est toujours une bonne approche, mais cela me ressemble en quelque sorte au besoin de développer un logiciel qui DOIT être installé (même lorsque la solution principale peut rester sur le cloud). Dans un monde qui a tendance à rester connecté, cela ressemble à A) une question de contrôle et de possession ou B) se concentrant sur le développement de monstres pour le client ... mais pour ce genre de besoins, il existe des applications (dans le monde mobile) et des logiciels (dans le monde PC). Je pense que l'objectif des Webapps devrait rester principalement d'étendre le Web, quel que soit l'appareil.

Je pense qu'une belle infographie pourrait sortir de cette approche.

17
DavidTaubmann

La réalité est que les parties contributrices sont parvenues à une impasse sur l'orientation de la norme. Bref, personne ne pouvait être d'accord.

Le site du W3C explique cela.

La spécification a atteint une impasse: tous les implémenteurs intéressés ont utilisé le même backend SQL (Sqlite), mais nous avons besoin de plusieurs implémentations indépendantes pour procéder le long d'un chemin de normalisation.

site WSC

1
htm11h