Diseño 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 gran flexibilidad. ¿Por qué? Porque existen millones, si no miles de millones, de objetos heterogéneos que comenzarán a interactuar entre sí de maneras impredecibles. Las tablas estructuradas y rígidas que ofrecen las bases de datos tradicionales no nos servirán de nada, ya que requieren un conjunto predefinido de propiedades y tablas, que, de nuevo, no podemos predecir.
Para entender por qué esto es importante, tomemos un ejemplo de una aplicación de gestión del agua.
El problema
Supongamos que queremos medir los niveles de agua en un gran número de pozos. Una arquitectura de datos simplificada para esta aplicación sería la siguiente:

Esto parece correcto y debería funcionar a la perfección con una base de datos relacional. Pero dos años después de que el sistema estuviera en funcionamiento, a alguien se le ocurre una idea:
“Oye, ahora que compramos estos nuevos generadores diésel con conexión 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 “Centrales” 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 reescribir 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 tardar un par de horas, bloqueando la base de datos.
¿Se imagina este procedimiento con cada cambio futuro? ¿Cómo afecta la estabilidad del sistema, su disponibilidad y los requisitos del personal técnico?
La solución
Una forma interesante de gestionar los datos IoT es el enfoque basado en documentos. En lugar de tablas, columnas y filas fijas, se utilizan documentos que describen cada objeto. Se puede pensar en ello como miles de papeles (documentos) tirados por el suelo, en lugar de tenerlos perfectamente organizados en diferentes carpetas.
Aunque parezca un poco confuso, 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 facilita la distribución de los datos entre múltiples servidores, haciéndolos más compatibles 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, uso de energía, etc.).
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 orgullosamente usamos MongoDB para ello :).
Tenemos un esquema básico que es compatible con la mayoría de 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.

Los usuarios también pueden especificar atributos y propiedades adicionales según 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.
Consulta nuestra documentación para aprender cómo agregar dicho contexto a tus datos:
- Crear una fuente de datos
- Crear una variable dentro de una fuente de datos
- Crear un valor dentro de una variable
- Envío de datos geográficos de la ISS a Ubidots
Envolviéndolo
Existe una amplia gama de aplicaciones IoT , cada una con diferentes esquemas de datos. En este artículo, analizamos las bases de datos orientadas a documentos como una buena alternativa para futuros desarrollos IoT y cómo Ubidots puede respaldarlas.
¿Tienes una IoT en mente? ¡Regístrate y crea tus propias aplicaciones hoy mismo!