Web SQL

La API Web SQL brinda la posibilidad de acceder a una base de datos local en el cliente (navegador del usuario) desde Javascript.

A día de hoy, es soportada desde Chrome/Chromium/Iron 4, Opera 10.5 y Safari 4. A nadie le sorprender que Internet Explorer 8 no lo soporte, aunque a más de uno le sorprenderá que Firefox/SeaMonkey siga apostando por la alternativa no estándar de MDM

Típicamente Web SQL está implementado sobre SQLite, que hace que sea ligero y rápido.

De momento no hay demasiados sites que aprovechen Web SQL, aunque dado lo sencillo que es de usar, preveo una paulatina migración de base de datos de servidor a cliente, al menos en aquellos casos que tenga sentido.

Como lo más sencillo, es verlo directamente sobre un fragmento de código, veamos que pinta tiene esta API.

Para ello he creado un sencillo programa, que puedes acceder aquí (1 Kb. en formato HTML), que crea una tabla SQLite para una agenda telefónica, la llena con 100 registros, y a partir de ahí, los cuenta, y los muestra. Dentro de la simplicidad del pequeño snippet, se muestra como conectar, crear la BD, insertar, consultar, contar, y por supuesto, comprobar si el navegador soporta Web SQL:

if (window.openDatabase)
{
var moDb=openDatabase('WebSQL', '1.0', 'HTML5 WebSQL demo', 128*1024);

moDb.transaction(
function(oTransaction)
{
oTransaction.executeSql('DROP TABLE IF EXISTS t_mstr_agenda;');
oTransaction.executeSql('CREATE TABLE t_mstr_agenda (agenda_nombre TEXT, agenda_telefono TEXT);');
for (var iCont=0; iCont<100; iCont++)
{
oTransaction.executeSql('INSERT INTO t_mstr_agenda (agenda_nombre, agenda_telefono) VALUES (\'Nombre ' + iCont + '\', \'Telefono ' + iCont + '\');');
}

oTransaction.executeSql('SELECT * FROM t_mstr_agenda', [], function (oTransaction, oResults)
{
var iLen=oResults.rows.length;
var sRes='';
for (var iCont=0; iCont<iLen; iCont++)
{
sRes=sRes + oResults.rows.item(iCont).agenda_nombre + ': ' + oResults.rows.item(iCont).agenda_telefono + '\n';
}
alert(sRes);
});
}
);
}
else
{
alert('Web SQL no soportado.');
}

2 comentarios en “Web SQL”

  1. La principal ventaja que yo le veo, es traspasar carga del servidor al cliente en los procesos que sean susceptibles.

    Por un lado, esto redunda en una mejora del tiempo de respuesta para el usuario, tal y como tu indicas, pero al mismo tiempo descarga el servidor.

    Naturalmente es difícil encontrar escenarios donde aplicarlo, pero me viene ahora a la mente el típico carrito de productos, que se almacena en una tabla del servidor, vinculando su contenido al usuario, y que debe ser consultada en cada página.

Deja un comentario