BASE DE DATOS ¿EN EL NAVEGADOR?. PARTE 1. LA TEORIA

<script src=”my own” title=”base de datos en el navegador. parte 1. la teoria”>

Como lo están leyendo, criaturitas del Señor. Ya las cosas se están poniendo algo extrañas en el sub-mundo de los RDBMS. Claro, salvando las diferencias con Oracle (del cual no voy a hablar 😛 ) o PostgreSQL (mi segundo favorito, pero de él tampoco voy a hablar 😛 ), una base de datos en el navegador tiene varios usos prácticos y mucha rapidez si se considera trabajar con pequeños volúmenes de datos.

Básicamente, existen 3 API’s de navegador para bases de datos, pero yo voy a hablar de aquellas compatibles con Mozilla Firefox:

  1. File: Bueno, no necesariamente debe ser una base de datos esto de acceder a archivos, pero si la pensamos bien, puede resultar efectivo leer archivos tipo clave:valor como se hace en el estándar de facto JSON. Podría funcionar, ¿no?
  2. localStorage: Usado para almacenar pequeñas cantidades de datos (<= 5MB) de forma persistente, por ejemplo, en formularios en los que se hayan guardado datos o almacenar un historial de cookies o de peticiones desde la misma máquina.
  3. IndexedDB: La diferencia con la API anterior, es que ésta posee mayor capacidad de almacenamiento en el navegador (de acuerdo a lo máximo permisado por el cliente), y lo mejor de esta API es que permite soporte a transacciones SQL, ¡genial!

Existe otra API llamada WebSQL, pero no quise incluirla pues se desconoce su estado de desarrollo actual y su compatibilidad con Firefox. Aún así, puedes consultar más información y ejemplos respecto a este tema en la página de los chicos de MDN. Ahora bien, la idea no es hablar cháchara sino dar ejemplos prácticos ¿no?

Hay varias razones por las que puede ser recomendable utilizar el almacenamiento en el cliente. En primer lugar, el almacenamiento en el cliente permite que una aplicación funcione cuando el usuario no está conectado, posiblemente sincronizando datos cuando vuelve a establecer conexión. En segundo lugar, aumenta el rendimiento, por lo que se puede mostrar una gran cantidad de datos en cuanto el usuario hace clic en el sitio en lugar de esperar a que vuelvan a descargarse. En tercer lugar, es un modelo de programación más sencillo que no requiere infraestructura de servidor. 
– HTML5rocks.com

Coincido completamente con el último punto de los chicos de HTML5rocks.com. De hecho, podríamos tener un CRUD completo contra el navegador para ilustrar esta afirmación (aunque no sea práctico en la práctica, valga la “rebuznancia”, pero no más por inventar 😛 ). Sin embargo, los chicos también hacen una alerta importante sobre estas API’s.

Por supuesto, los datos son más vulnerables y el usuario no puede acceder a ellos desde varios clientes, por lo que solo se debe utilizar para datos que no sean muy importantes, concretamente en versiones almacenadas en caché de datos específicos que también se encuentren “en la nube”.
– HTML5rocks.com

A pesar de esta recomendación de seguridad, las API’s de almacenamiento local siguen teniendo una importante utilidad práctica, por ejemplo en el caso de aplicaciones que usan WebGL, simulaciones en 3D, renderización de gráficos HTML5Canvas o de gráficos vectoriales tipo SVG-to-Canvas (del cual haré un post más adelante). ¡Dios mio, cuantas ideas! 😀 .

Existen en el Gato-Pulpo diferentes “wrappers” que soportan API’s de almacenamiento. Particularmente me decanté por uno llamado Dexie.js que es bastante interesante, permite soporte a IndexedDB y tiene una sintaxis bastante sencilla. A efectos de complementar este post, el siguiente será con ejemplos de uso de esta librería, construyendo un CRUD completo para datos en el navegador.

¡A programar se ha dicho! 😉

</script>

Anuncios