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 devriez faire : ne le faites pas.
Il s'avère que l'Internet des objets exige une grande flexibilité. Pourquoi ? Parce que des millions, voire des milliards, d'objets hétérogènes vont interagir entre eux de manière imprévisible. Les tables structurées et rigides des bases de données traditionnelles ne nous seront d'aucune utilité, car elles nécessitent un ensemble prédéfini de propriétés et de tables, là encore, imprévisibles.
Pour comprendre pourquoi c'est important, prenons l'exemple d'une application de gestion de l'eau.
Le problème
Supposons que nous souhaitions 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 parfait et devrait fonctionner sans problème avec une base de données relationnelle. Mais voilà que, deux ans après la mise en service du système, quelqu'un a une idée :
« Eh bien, maintenant que nous avons acheté ces nouveaux générateurs diesel connectés à Internet pour alimenter les pompes à eau, voyons leurs données en direct ! »“.
Pour effectuer cette modification, il faudrait ajouter un nouveau tableau intitulé « Centrales électriques » et une nouvelle colonne au tableau « Puits », indiqués en rouge ci-dessous :
Dans une base de données relationnelle, cette modification nécessiterait de réécrire toutes les lignes de la table afin d'y inclure une valeur dans la nouvelle colonne. Avec deux ans de données historiques, cela pourrait prendre plusieurs heures, bloquant ainsi la base de données.
Pouvez-vous imaginer cette procédure pour chaque modification future ? Quel impact cela aura-t-il sur la stabilité du système, sa disponibilité et les besoins en personnel technique ?
La solution
Une approche intéressante pour la gestion des données IoT consiste à utiliser des documents. Au lieu de tableaux, colonnes et lignes fixes, on utilise des documents décrivant chaque objet. On peut se représenter des milliers de feuilles de papier (documents) éparpillées sur le sol, plutôt que parfaitement rangées dans des classeurs.
Aussi désordonné que cela puisse paraître, ces documents ne possèdent pas de schéma prédéfini comme les bases de données relationnelles, ce qui est idéal pour les applications IoT actuelles et futures. Cela permet également de répartir les données sur plusieurs serveurs, les rendant ainsi plus compatibles avec le cloud.
Pour revenir à notre exemple, les données relatives à chaque puits sont désormais stockées dans un document et non plus dans un tableau :
Comme vous pouvez le constater, nous avons fusionné toutes les propriétés du puits dans un seul document, indépendamment des relations entre le puits (niveau d'eau, précipitations, humidité), son environnement (ville, pays) et le générateur électrique (pression du pétrole, consommation d'énergie, etc.).
Cette simplification permet toute modification future des propriétés du document.
Comment faire dans la réalité ?
Chez Ubidots , notre priorité a toujours été d'offrir un schéma de données flexible et de le mettre à la disposition 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 pourrait s'agir d'informations supplémentaires sur chaque source de données , variable ou valeur :
Il convient de noter que les dernières valeurs sont stockées au fil du temps, ce qui signifie que vous conservez leurs traces historiques.
Consultez notre documentation pour savoir comment ajouter ce contexte à vos données :
- Créer une source de données
- Créer une variable au sein d'une source de données
- Créer une valeur dans une variable
- Envoi des données géographiques de l'ISS à Ubidots
Pour conclure
Il existe une grande variété 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 alternative intéressante pour les développements futurs IoT et expliqué comment Ubidots peut les prendre en charge.
Vous avez une IoT en tête ? Inscrivez-vous et créez vos propres applications dès aujourd’hui !