Projetando para a Internet das Coisas

Se você está pensando em projetar uma estrutura de dados ideal para seu aplicativo de Internet das Coisas, eis o que você deve fazer: não faça isso.

Acontece que a Internet das Coisas exige muita flexibilidade. Por que? Porque existem milhões -se não milhares de milhões- de objetos heterogéneos que começarão a interagir uns com os outros de formas que não podemos prever. As tabelas estruturadas e rígidas oferecidas pelos bancos de dados tradicionais não nos ajudarão porque exigem um conjunto predefinido de propriedades e tabelas, que novamente não podemos prever.

Para entender por que isso é importante, vejamos um exemplo de aplicativo de gerenciamento de água.

O problema

Digamos que queremos medir os níveis de água em um grande número de poços. Uma arquitetura de dados simplificada para esta aplicação seria assim:

Isso parece bom e deve funcionar perfeitamente usando um banco de dados relacional. Mas então, 2 anos depois de o sistema estar instalado e funcionando, alguém tem uma ideia:

“Ei, agora que compramos esses novos geradores a diesel habilitados para Internet para alimentar as bombas d'água, vamos ver seus dados ao vivo!“.

Para fazer essa alteração, teríamos que adicionar uma nova tabela chamada “Centrais” e uma nova coluna à tabela “Poços”, marcada em vermelho abaixo:

Mas em um banco de dados relacional, essa mudança exigiria reescrever todas as linhas da tabela para que incluíssem um valor na nova coluna. Com dois anos de dados históricos, isso pode levar algumas horas, bloqueando o banco de dados no momento em que acontece.

Você consegue imaginar esse procedimento a cada mudança futura? Como isso afeta a estabilidade do sistema, o tempo de atividade e os requisitos da equipe técnica?

A solução

Uma maneira 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. Você pode pensar nisso como milhares de papéis (documentos) espalhados pelo chão, em vez de tê-los perfeitamente organizados em diferentes pastas do armário.

Por mais confuso que possa parecer, esses documentos não possuem um esquema predefinido como os bancos de dados relacionais, o que é perfeito para os aplicativos IoT atuais e futuros. Isso também ajuda a espalhar os dados por vários servidores, tornando-os mais compatíveis com a nuvem.

Voltando ao nosso exemplo, os dados de cada Poço agora são armazenados em um documento e não em uma tabela:

Como você pode ver, mesclamos todas as propriedades do poço em um único documento, independentemente das relações entre o poço (nível de água, precipitação, umidade), seu ambiente (cidade, país) e o gerador de energia (pressão do óleo, energia uso, etc.).

Esta simplificação permite qualquer alteração futura nas propriedades do documento.

Como fazer isso no mundo real?

Na Ubidots , nossa prioridade é oferecer um esquema de dados flexível e colocá-lo ao alcance de nossos usuários por meio de uma API RESTful (e orgulhosamente usamos o MongoDB para isso :).

Temos um esquema básico 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, poderiam ser informações adicionais sobre cada fonte de dados , variável ou valor :

É importante notar que os últimos ( valores ) são armazenados ao longo do tempo, o que significa que você consegue manter seus rastros históricos.

Confira nossa documentação para saber como adicionar esse contexto aos seus dados:

Resumindo

Há uma ampla variedade de aplicações IoT , cada uma exigindo esquemas de dados diferentes. Neste artigo, revisamos bancos de dados orientados a documentos como uma boa alternativa para futuros desenvolvimentos IoT e como Ubidots pode apoiá-los.

Tem um IoT em mente? Cadastre-se e crie seus próprios aplicativos hoje!