Concevoir pour l'Internet des objets
Si vous envisagez de concevoir une structure de données idéale pour votre application Internet des objets, voici ce que vous devez faire : ne le faites pas.
Il s’avère que l’Internet des objets nécessite une grande flexibilité. Pourquoi? Parce qu'il existe des millions, voire des milliards, d'objets hétérogènes qui commenceront à interagir les uns avec les autres d'une manière que nous ne pouvons pas prédire. Les tableaux structurés et rigides proposés par les bases de données traditionnelles ne nous aideront pas car ils nécessitent un ensemble prédéfini de propriétés et de tableaux, ce que, encore une fois, nous ne pouvons pas prédire.
Pour comprendre pourquoi c'est important, prenons un exemple d'application de gestion de l'eau.
Le problème
Disons que nous voulons mesurer les niveaux d'eau dans un grand nombre de puits. Une architecture de données simplifiée pour cette application ressemblerait à ceci :
Cela semble très bien et devrait fonctionner parfaitement en utilisant une base de données relationnelle. Mais voilà, 2 ans après que le système soit opérationnel, quelqu'un a une idée :
« Hé, maintenant que nous avons acheté ces nouveaux générateurs diesel compatibles Internet pour alimenter les pompes à eau, voyons leurs données en direct !“.
Pour effectuer ce changement, il faudrait ajouter un nouveau tableau appelé « Centrales électriques » et une nouvelle colonne au tableau « Puits », marquée en rouge ci-dessous :
Mais dans une base de données relationnelle, ce changement nécessiterait de réécrire toutes les lignes du tableau pour qu'elles incluent une valeur dans la nouvelle colonne. Avec deux années de données historiques, cela pourrait prendre quelques heures, bloquant ainsi la base de données.
Pouvez-vous imaginer cette procédure à chaque changement futur ? Quel impact cela a-t-il sur la stabilité, la disponibilité et les exigences en matière de personnel technique du système ?
La solution
Une manière intéressante de gérer les données IoT est l’approche orientée document. Au lieu de tableaux, de colonnes et de lignes fixes, vous disposez de documents décrivant chaque objet. Vous pouvez le considérer comme des milliers de papiers (documents) qui traînent sur le sol, au lieu de les organiser parfaitement dans les différents dossiers du cabinet.
Aussi compliqué que cela puisse paraître, ces documents n'ont pas de schéma prédéfini comme les bases de données relationnelles, ce qui est parfait pour les applications IoT d'aujourd'hui et de demain. Cela permet également de répartir les données sur plusieurs serveurs, ce qui les rend plus conviviales pour le cloud.
Pour revenir à notre exemple, les données de chaque puits sont désormais stockées dans un document et non dans un tableau :
Comme vous pouvez le constater, nous avons fusionné toutes les propriétés du puits en un seul document, quelles que soient les relations entre le puits (niveau d'eau, précipitations, humidité), son environnement (ville, pays) et le générateur d'électricité (pression de pétrole, énergie). utilisation, etc.).
Cette simplification permet toute modification future des propriétés du document.
Comment le faire dans le monde réel ?
Chez Ubidots , notre priorité a été d'offrir un schéma de données flexible et de le mettre à la portée de nos utilisateurs via une API RESTful (et nous utilisons fièrement MongoDB pour cela :).
Nous disposons d'un schéma de base compatible avec la plupart des applications IoT :
- Sources de données contenant des variables
- Variables contenant des valeurs
- Les valeurs sont des points de données horodatés contenant les informations du capteur.
Mais les utilisateurs peuvent également spécifier des attributs et des propriétés supplémentaires pour répondre à leurs besoins. Dans notre exemple, il peut s'agir d'informations supplémentaires sur chaque source de données , variable ou valeur :
Il est à noter que les dernières ( values ) sont stockées au fil du temps, ce qui signifie que vous conservez leurs traces historiques.
Consultez notre documentation pour savoir comment ajouter un tel contexte à vos données :
- Créer une source de données
- Créer une variable dans une source de données
- Créer une valeur dans une variable
- Envoi des données géographiques de l'ISS à Ubidots
L'emballer
Il existe un large éventail d'applications IoT , chacune nécessitant des schémas de données différents. Dans cet article, nous avons examiné les bases de données orientées documents comme une bonne alternative pour les futurs développements IoT et comment Ubidots peut les prendre en charge.
Vous avez une application IoT Inscrivez-vous et créez vos propres applications dès aujourd'hui !