viernes, 5 de octubre de 2012

SQLite y otras técnicas de almacenamiento Javascript, HTML web Storage, Indexed Database API

Tiempo atrás cuando un desarrollador quería almacenar cierta información en cliente en ámbito HTML usaba las famosas cookies. Este sistema aún se sigue usando aunque a día de hoy han surgido alternativas como SQLite, WebStorage o Indexed Database que permiten al desarrollador trabajar con información almacenada en cliente de forma más óptima.

Si consultamos W3C veremos que trabajan en dos estándar para unificar criterios sobre almacenamiento y también existe una tercera definición que dejaron de mantener en noviembre del 2010: Conceptualmente las dos primeras son muy similares ya que se basan en el uso de colecciones indexadas (clave/valor) que permiten almacenar objetos y establecer una jerarquía sobre dichos objetos. Esta técnica mejora las cookies pero distan mucho de una base de datos relacional.

La tercera especificación (SQLite) la abandonaron en Noviembre del 2010 debido a que los fabricantes estaban de acuerdo en el uso de una librería de dominio público desarrollada en C, por tanto el trabajo de W3C dejó de tener sentido.

SQLite es la técnica de almacenamiento HTML en cliente más parecida a una base de datos relacional ya que nos permite usar código SQL estándar. De esta forma podemos crear base de datos compatibles que podríamos llegar a importar/exportar entre SQLite y otras plataformas del mercado. También soporta conexiones concurrentes y definir niveles de aislamiento (ACID) así que podría usarse en una aplicación servidor (lo descartaría en escenarios donde se manejan grandes volúmenes de información y conexiones concurrentes). SQLite nos ofrece las funcionalidades típicas a las que estamos acostumbrados (triggers, transacciones, pk, fk,…) para más información recomiendo visitar su página oficial.

A día de hoy usando Javascript podemos trabajar contra una base de datos SQLite sin necesidad de instalar ningún plugin ni librerías de terceros, la he usado estos días y funciona perfectamente sobre Windows-Chrome y Android. La contra es que Internet Explorer no soporta SQLite. Microsoft parece que apuesta por SQL Server Compact para entornos de este tipo, aun así hay quien prefiere evitar una instalación cliente y trabajar con la librería SQLite desde código .NET. También hay quien ha desarrollado librerías cliente en java para SQLite lo cual es síntoma que su uso está bastante extendido.

Opino que un buen escenario para usar SQLite son las Smart App aunque matizando un poco. Muchas aplicaciones móviles acceden a datos en servidor usando REST/JSON, esto hace que la gestión de datos la haga un Oracle, MySQL, SQLServer o lo que sea que tengamos detrás del servicio al que llamamos. Ok, pero podría darse el caso que queramos que la información esté disponible sin conexión a internet o que directamente cada dispositivo mantenga su propia base de datos local sin necesidad de implementar una parte servidor. Chrome y Mozilla incorporan SQLite, así que dispositivos móviles Android y Iphone soportan este tipo de almacenamiento por defecto.

A continuación muestro algunas alternativas para administrar las bases de datos fuera del ámbito de aplicación:
  • Chrome permite administrar las bases de datos desde linea de comando.
  • Firefox permite incorporar modo de plug-in SQLiteManager, que proporciona una interficie para administrar las bases de datos.
  • En la página oficial de SQLite, podemos descargar gestores para entornos windows y mac.
Espero te haya resultado útil la información, puedes seguir areaTIC en la redes sociales y/o RSS para recibir avisos sobre artículos que podrían interesante!


3 comentarios:

Anónimo dijo...

Echa un vistazo a una herramienta gratuita - Valentina Studio. Producto asombroso! OMI es el mejor gestor de SQLite para todas las plataformas. http://www.valentina-db.com/en/valentina-studio-overview

José Manuel ESPÁRIZ dijo...

Podrias poner un ejemplo del trabajo con SQLITE, pf?

Carlos Cañizares dijo...

buenas jose manuel, hace un tiempo que estaba con esto de sqllite he cambiado 2 o 3 veces de portátil y no encuentro ejemplos para pasarte. De todos modos si buscas conexión sqlite javascript fijo te salen. Saludos!!

Publicar un comentario