Diseñar para el Internet de las cosas

Si está pensando en diseñar una estructura de datos ideal para su aplicación de Internet de las cosas, esto es lo que debe hacer: no lo haga.

Resulta que el Internet de las cosas requiere una enorme flexibilidad. ¿Por qué? Porque hay millones -si no miles de millones- de objetos heterogéneos que empezarán a interactuar entre sí de formas que no podemos predecir. Las tablas estructuradas y rígidas que ofrecen las bases de datos tradicionales no nos ayudarán porque requieren un conjunto predefinido de propiedades y tablas que, nuevamente, no podemos predecir.

Para entender por qué esto es importante, tomemos un ejemplo de una aplicación de gestión del agua.

El problema

Digamos que queremos medir los niveles de agua en una gran cantidad de pozos. Una arquitectura de datos simplificada para esta aplicación se vería así:

Esto se ve bien y debería funcionar perfectamente usando una base de datos relacional. Pero entonces, 2 años después de que el sistema estuviera en funcionamiento, alguien tiene una idea:

“Oye, ahora que compramos estos nuevos generadores diésel con acceso a Internet para alimentar las bombas de agua, ¡veamos sus datos en vivo!“.

Para realizar este cambio, tendríamos que agregar una nueva tabla llamada “Plantas de Energía” y una nueva columna a la tabla “Pozos”, marcada en rojo a continuación:

Pero en una base de datos relacional, este cambio requeriría que reescribiéramos todas las líneas de la tabla para que incluyan un valor en la nueva columna. Con dos años de datos históricos, esto podría llevar un par de horas, bloqueando la base de datos a medida que sucede.

¿Te imaginas este procedimiento con cada cambio futuro? ¿Cómo afecta la estabilidad del sistema, el tiempo de actividad y los requisitos del personal técnico?

La solución

Una forma interesante de manejar los datos IoT es el enfoque orientado a documentos. En lugar de tablas, columnas y filas fijas, tiene documentos que describen cada objeto. Puedes imaginarlo como miles de papeles (documentos) tirados por el suelo, en lugar de tenerlos perfectamente organizados en diferentes carpetas de armarios.

Por muy complicado que parezca, estos documentos no tienen un esquema predefinido como las bases de datos relacionales, lo cual es perfecto para las aplicaciones IoT actuales y futuras. Esto también ayuda a distribuir los datos entre múltiples servidores, haciéndolos más amigables con la nube.

Volviendo a nuestro ejemplo, los datos de cada Pozo ahora se almacenan en un documento y no en una tabla:

Como puede ver, fusionamos todas las propiedades del pozo en un solo documento, independientemente de las relaciones entre el pozo (nivel de agua, precipitación, humedad), su entorno (ciudad, país) y el generador de energía (presión de petróleo, energía). uso, etcétera).

Esta simplificación permite cualquier cambio futuro de las propiedades del documento.

¿Cómo hacerlo en el mundo real?

En Ubidots , nuestra prioridad ha sido ofrecer un esquema de datos flexible y ponerlo al alcance de nuestros usuarios a través de una API RESTful (y estamos orgullosos de utilizar MongoDB para ello :).

Tenemos un esquema básico que es compatible con la mayoría de las aplicaciones IoT :

  • Fuentes de datos que contienen variables
  • Variables que contienen valores
  • Los valores son puntos de datos con marca de tiempo que contienen la información del sensor.

Pero los usuarios también pueden especificar atributos y propiedades adicionales que se ajusten a sus necesidades. En nuestro ejemplo, esto podría ser información adicional sobre cada fuente de datos , variable o valor :

Vale la pena señalar que los últimos ( valores ) se almacenan a lo largo del tiempo, lo que significa que puedes conservar sus rastros históricos.

Consulte nuestra documentación para aprender cómo agregar dicho contexto a sus datos:

Envolviéndolo

Existe una amplia gama de aplicaciones IoT , cada una de las cuales requiere diferentes esquemas de datos. En este artículo, revisamos las bases de datos orientadas a documentos como una buena alternativa para futuros desarrollos IoT y cómo Ubidots puede respaldarlas.

¿Tiene una IoT en mente? ¡Regístrese y cree sus propias aplicaciones hoy!