Visualización de datos en tiempo real a través del navegador web

Resumen : Se presenta un mecanismo para lograr la visualización de datos almacenados en una base de datos en una base regular (tiempo real) a través del navegador web. Para llevar a cabo la implementación se utiliza la infraestructura de análisis de datos ROOT para la generación de datos, PHP como mediador entre el navegador web y la base de datos, y flotcharts (librería de JavaScript) para graficar los datos.

Introducción

Diferentes actividades requieren la medición de variables en tiempo real. Adicionalmente, en algunos sistemas se requiere el almacenamiento de estos datos, como en el caso de los sistemas de adquisición de datos. Una solución efectiva para el almacenamiento de los datos adquiridos es una base de datos, y en cuanto a la visualización es posible utilizar el navegador web, este sistema permite realizar un monitoreo remotamente.

Inicialmente se pensó que el servidor podría generar la gráfica y luego de ello servirla cada determinado tiempo en el cliente (el navegador). sin embargo, ésto es ineficiente debido a que la generación y transporte de la imagen representa un costo alto para el servidor, por lo que se propuso una solución en la que el cliente es el que asume el costo computacional para generar la visualización de los datos; mientras que el servidor se encarga de proporcionar un flujo continuo de datos al cliente. Esto último (comparado con el transporte de la imagen) representa un uso menos intensivo de los recursos de red, debido a que estos datos (al ser texto plano) pueden ser comprimidos y enviados de una forma regular sin representar un consumo exagerado de los recursos de red.

Diseño

Diseño del sistema para la visualización de datos en tiempo real a través del navegador web

Para simular un proceso de adquisición continua de datos se creó un algoritmo (genData.C) que alimenta constantemente una tabla de una base de datos en un servidor (MySQL). Ésta tabla contiene las variables que han sido medidas x, y y z, así como el tiempo en el que se realizó la medición.

Para la interfaz entre el cliente (el navegador web) y la base de datos, se creo un script en PHP (getData.php), el cual realiza una consulta SQL (SQL Query) a la base de datos, obteniendo los últimos n datos (en este caso n=50) registrados en la tabla y los envía al cliente en formato JSON.

Finalmente a través del uso de flotcharts (librería de JavaScript basada en JQuery) se realiza el trazo de los datos recibidos por el navegador web y cada cierto intervalo de tiempo (en éste caso cada 200ms) recibe un nuevo conjunto de datos (realizando la petición al servidor de getData.php) y renueva la gráfica. Como es posible ver el costo computacional de la visualización de los datos es asumido por el cliente (el navegador web) mientras que el servidor se encarga de proveer el flujo continuo de los valores de las variables que están siendo medidas.

El término "tiempo real" no es del todo exacto. Siempre existe un periodo de latencia, debido a factores como:

Pero si se tiene en cuenta que la rapidez de la luz es finita, es necesario recordar que siempre existirán periodos de latencia. Lo importante es reducir al máximo estos intervalos de tiempo. De ésta forma, éste ejercicio puede ser mejorado si en vez de solicitar siempre los últimos 50 datos al servidor se logrará solicitar sólo los últimos datos que han sido obtenidos y que no han sido transportados lo que representaría una disminución en el periodo de latencia debido a que el tiempo de transporte de la información se vería reducido, además esto implicaría un menor consumo de los recursos de la red.

Entradas Relacionadas:

Comentarios

Agregue usted un comentario,

Nombre:

Dirección de correo electrónico:

URL:

Mensaje:



* La dirección de correo electrónico no será publicada.




This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 Colombia License.


I'm committed to the privacy of k-lab users. Each time you access content delivered by http://www.k-lab.tk/, information like referrer, anonymized IP (255.255.X.X), date, time and requested resources are sent to a Google Analytics. This is done in order to know user preferences to adapt our content for users needs and to detect failures in the website. However, respecting your decision we don't store any of this information if you have enabled Do Not Track option in your web browser (Preferences/Privacy/Tracking/Tell Websites I do not want to be tracked). Protect your privacy.