La API de Web SQL Database, que te permite para almacenar datos de manera estructurada en la computadora del usuario (internamente, según el motor de base de datos SQLite), se presentado en abril de 2009 y abandonó en noviembre de 2010. Si bien se implementó en WebKit (en el que se basa Safari), se mantuvo activa en el motor Blink (que impulsa Chrome), Gecko (que utiliza Firefox) nunca implementó esta función y WebKit lo quitó en 2019.
El World Wide Web Consortium (W3C)
recomienda
quienes necesitan bases de datos web para adoptar
API de Web Storage
tecnologías como
localStorage
y
sessionStorage
,
o
IndexedDB.
Estas tecnologías muestran sus fortalezas
en las tiendas de pares clave-valor
datos estructurados, pero se sabe que también tienen debilidades, como la falta de
lenguaje de consulta sólido. Las personas quieren usar SQL en la Web por alguna razón.
Pasos de eliminación y baja de SQL Web
- [ Listo] Web SQL dejó de estar disponible y se quitó para contextos de terceros en Chromium 97 ( 4 de enero de 2022).
- [ Listo] El acceso a SQL web en contextos no seguros dejó de estar disponible a partir del Chromium 105 ( 4 de enero de 2022), en ese momento aparecerá un mensaje de advertencia se mostró en el panel de problemas de Herramientas para desarrolladores de Chrome.
- [ Listo] El acceso a SQL web en contextos no seguros ya no es disponibles a partir de Chromium 110 ( 4 de enero de 2022). Los política empresarial para seguir usando la función esté disponible en Chromium 110 ( 4 de enero de 2022) a Chromium 123 ( 4 de enero de 2022).
- [ Listo] El acceso a SQL web en todos los contextos dejó de estar disponible a partir de Chromium 115 ( 4 de enero de 2022) y se muestra un mensaje de advertencia en el panel de problemas de Herramientas para desarrolladores de Chrome.
- [prueba de baja hasta seguir usando Web SQL estaba disponible en Chromium 117 ( 4 de enero de 2022) a Chromium 123 ( 4 de enero de 2022). Para obtener más información sobre las pruebas de baja, consulta Comienza a usar las pruebas de origen. Listo] R
- [ Listo] El acceso a SQL web en todos los contextos ya no está disponible desde Chromium 119.
Lo que vendrá
Como se mencionó en la introducción,
API de Web Storage
tecnologías como
localStorage
y
sessionStorage
,
o el
IndexedDB
estándar son buenas alternativas en muchos casos, pero no en todos.
Razones para dejarles el almacenamiento a los desarrolladores web
Con la llegada de Wasm, las soluciones de SQL o NoSQL pueden llegar a la Web. Un ejemplo es DuckDB-Wasm, otra es absurd-sql. Basándonos en estas creaciones, creemos que la comunidad de desarrolladores puede iterar y crear un nuevo almacenamiento más rápidas y mejores que los proveedores de navegadores.
No planeamos simplemente quitar Web SQL. De hecho, la reemplazamos algo que será mantenida por la comunidad de código abierto, y se presentará como un paquete que se pueden actualizar a voluntad, sin la carga de introducir correcciones y funciones nuevas directamente en los navegadores. Nuestro objetivo es que los desarrolladores tu propia base de datos en la Web.
Además, esperamos que este ejemplo ayude a un nuevo ecosistema bases de datos de código abierto para prosperar. El lanzamiento de identificadores de acceso al sistema de archivos por último brinda la nueva primitiva en la que se pueden construyen.
Motivos para dar de baja Web SQL
Inquietudes sobre sustentabilidad y seguridad
La especificación de SQL Web no se puede implementar de forma sustentable, lo que limita y funciones nuevas. La última versión del estándar states "Los usuarios-agentes deben implementar el dialecto SQL compatible con Sqlite 3.6.19”.
En un principio, SQLite no era diseñados para ejecutar instrucciones de SQL maliciosas; sin embargo, implementar Web SQL significa los navegadores deben hacer eso. La necesidad de mantenerse al día con la seguridad y las correcciones de estabilidad exigen la actualización de SQLite en Chromium. Esto se produce directamente en conflicto con el requisito de Web SQL de comportarse exactamente como SQLite 3.6.19.
Forma de la API
Web SQL también es una API que muestra su antigüedad. Como hijo de finales de la década del 2000, un buen ejemplo de "infierno de devolución de llamada", como en la siguiente muestra de código (Cortesía de Nolan Lawson) demuestra. Como puedes ver, las instrucciones de SQL (con el SQLite, dialecto SQL) se pasan como cadenas a los métodos de base de datos.
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 ejecutaras este código y Inspeccionar la tabla creada con las Herramientas para desarrolladores de Chrome, este es el resultado:
Falta de asistencia para implementadores
Además de la forma arcana de API (al menos desde el punto de vista actual), Mozilla tuvo muchas inquietudes sobre la compilación de Web SQL sobre SQLite:
“Creemos que [SQLite] no es la base adecuada para una API expuesta a la Web en general de contenido, sobre todo porque no hay un modelo creíble y ampliamente aceptado estándar que agrupa SQL de forma útil. Además, no queremos cambios a SQLite para modificar la Web más adelante y no creas aprovechar los navegadores más populares (y un estándar web) a SQLite es prudente".
Puedes leer acerca de las inquietudes de Mozilla en entrada de blog del antiguo Mozillan Vladimir Vukićević. Para obtener un poco más de historia, consulta la Minutas del grupo de trabajo de aplicaciones web del W3C (Si realmente quieres entrar en detalles, lee el registros de IRC) y archivos de listas de distribución). Además: Entrada de blog de Nolan Lawson proporciona un buen resumen de lo sucedido.
Comentarios
Si tienes alguna preocupación sobre los pasos de baja que se comunicaron en este , avísanos en la lista de distribución de blink-dev. La pertenencia a este grupo está abierta para cualquier persona, y cualquier persona tiene permiso para publicar.
Vínculos relacionados
- Entrada de ChromeStatus: WebSQL dejará de estar disponible y se quitará en contextos de terceros
- Entrada de ChromeStatus: WebSQL dejará de estar disponible y se quitará en contextos no seguros
- Intención de dar de baja y de quitar: WebSQL en contextos de terceros
- Intención de dar de baja y de quitar: WebSQL en contextos no seguros
- Problema en Chromium: WebSQL dejará de estar disponible y se quitará en contextos de terceros
- Problema en Chromium: WebSQL dejará de estar disponible y se quitará en contextos no seguros
- Problema en Chromium: WebSQL dejará de estar disponible y se quitará (Window#openDatabase)
- SQLite Wasm en el navegador respaldado por Origin Private File System
Agradecimientos
Joe Medley revisó este artículo, y Ben Morss y Joshua Bell.