Projetando para a Internet das Coisas
Se você está pensando em projetar uma estrutura de dados ideal para sua aplicação de Internet das Coisas, então aqui está o que você deve fazer: não faça isso.
Como se vê, a Internet das Coisas exige uma enorme flexibilidade. Por quê? Porque existem milhões — senão bilhões — de objetos heterogêneos que começarão a interagir entre si de maneiras que não podemos prever. As tabelas estruturadas e rígidas oferecidas pelos bancos de dados tradicionais não nos ajudarão, pois exigem um conjunto predefinido de propriedades e tabelas, que, novamente, não podemos prever.
Para entender por que isso é importante, vamos usar como exemplo um aplicativo de gerenciamento de água.
O problema
Suponhamos que desejamos medir os níveis de água em um grande número de poços. Uma arquitetura de dados simplificada para essa aplicação seria assim:

Isso parece perfeito e deveria funcionar sem problemas com um banco de dados relacional. Mas aí, dois anos depois do sistema estar em funcionamento, alguém tem uma ideia:
"Ei, agora que compramos esses novos geradores a diesel com acesso à internet para alimentar as bombas d'água, vamos ver os dados deles em tempo real!"“.
Para fazer essa alteração, precisaríamos adicionar uma nova tabela chamada “Usinas Elétricas” e uma nova coluna à tabela “Poços”, marcada em vermelho abaixo:

Mas em um banco de dados relacional, essa alteração exigiria que reescrevêssemos todas as linhas da tabela para incluir um valor na nova coluna. Com dois anos de dados históricos, isso poderia levar algumas horas, bloqueando o banco de dados durante o processo.
Você consegue imaginar esse procedimento a cada mudança futura? Como isso impactaria a estabilidade do sistema, o tempo de atividade e as necessidades de pessoal técnico?
A solução
Uma forma interessante de lidar com dados IoT é a abordagem orientada a documentos. Em vez de tabelas, colunas e linhas fixas, você tem documentos que descrevem cada objeto. Imagine milhares de papéis (documentos) espalhados pelo chão, em vez de perfeitamente organizados em pastas dentro de armários.
Por mais confuso que possa parecer, esses documentos não possuem um esquema predefinido como os bancos de dados relacionais, o que é perfeito para as aplicações IoT atuais e futuras. Isso também ajuda a distribuir os dados por vários servidores, tornando-os mais adequados para a nuvem.
Voltando ao nosso exemplo, os dados sobre cada poço agora estão armazenados em um documento e não em uma tabela:

Como podem ver, reunimos todas as propriedades do poço em um único documento, independentemente das relações entre o poço (nível da água, precipitação, umidade), seu entorno (cidade, país) e a usina hidrelétrica (pressão do óleo, consumo de energia, etc.).
Essa simplificação permite qualquer alteração futura das propriedades do documento.
Como fazer isso no mundo real?
Na Ubidots , nossa prioridade sempre foi oferecer um esquema de dados flexível e colocá-lo ao alcance de nossos usuários por meio de uma API RESTful (e temos orgulho de usar o MongoDB para isso :).
Temos um esquema básico que é compatível com a maioria das aplicações IoT :
- Fontes de dados que contêm variáveis
- Variáveis que contêm valores
- Os valores são pontos de dados com registro de data e hora que contêm as informações do sensor.

Mas os usuários também podem especificar atributos e propriedades adicionais para atender às suas necessidades. Em nosso exemplo, isso poderia incluir informações adicionais sobre cada fonte de dados , variável ou valor :

Vale ressaltar que os últimos valores são armazenados ao longo do tempo, o que significa que você pode manter seus registros históricos.
Consulte nossa documentação para aprender como adicionar esse contexto aos seus dados:
- Criar uma fonte de dados
- Criar uma variável dentro de uma fonte de dados
- Criar um valor dentro de uma variável
- Envio dos dados geográficos da ISS para Ubidots
Finalizando
Existe uma ampla gama de aplicações IoT , cada uma exigindo diferentes esquemas de dados. Neste artigo, analisamos bancos de dados orientados a documentos como uma boa alternativa para futuros desenvolvimentos IoT e como Ubidots pode dar suporte a eles.
Tem alguma ideia para uma aplicação IoT Cadastre-se e crie suas próprias aplicações hoje mesmo!