Exploiter Redis et Kubernetes pour créer une visualisation géospatiale de la qualité de l’air

Exploiter Redis et Kubernetes pour créer une visualisation géospatiale de la qualité de l’air

Pendant les incendies de forêt de 2020 en Californie, moi, avec des millions d’autres, j’ai constamment vérifié le VioletAir site web pour surveiller la qualité de l’air. En plus de rechercher de l’air pur à respirer, j’étais curieux de savoir comment PurpleAir agrégeait les données de ses capteurs et j’étais ravi de découvrir qu’il disposait d’une API pour accéder à ses données. Cela semblait être une occasion parfaite de démontrer la puissance de Redis en tant que base de données déployée à l’aide de Kubernetes.

Dans le passé, certaines de mes recherches portaient sur l’exposition de données géospatiales sur le Web. Pour ce projet, j’ai réinterprété ce travail avec deux nouveaux principes directeurs : (1) utiliser les fonctionnalités géospatiales de Redis pour partitionner les données et (2) déployer l’ensemble de l’application sur Kubernetes. Je voulais montrer comment les défis DevOps pour gérer la collecte, l’ingestion et l’interrogation des données seraient plus faciles à relever avec Kubernetes et le Opérateur Redis Enterprise pour Kubernetes.

J’ai choisi d’utiliser une méthodologie de mon recherche de thèse appelé PAN (Partition, Annotate, and Name) pour produire des partitions de données organisées par facettes inhérentes (par exemple, date/heure, coordonnées géospatiales, etc.). Redis fournit les éléments de base parfaits pour appliquer cette méthodologie aux données des capteurs de qualité de l’air collectées par PurpleAir. La technique que j’utilise cartographie une zone géospatiale d’intérêt (le polygone ombré) sur des partitions de données (les cases). Vous pouvez ensuite récupérer et parcourir ces partitions via leurs métadonnées, et vous pouvez sélectionner des partitions sur la période qui vous intéresse.

AQI geospatial data partitions
Partitionnement des données par facettes et liaison par métadonnées.

J’ai pu produire rapidement une application fonctionnelle qui collecte les données et fournit une interpolation simple des mesures IQA (indice de qualité de l’air) sur une carte à code couleur. Cette image a été générée à l’aide des données des capteurs du 28 août 2020 :

AQI geospatial map v2

Pour aller plus loin, il a fallu rendre toutes les pièces opérationnelles de manière fiable, et c’est là que Kubernetes est devenu essentiel. Kubernetes a facilité la description et le déploiement de la collecte de données, de l’ingestion, de la base de données Redis et de l’application Web en tant que composants évolutifs indépendants gérables par le cluster :

AQI geospatial architecture
Architecture de déploiement pour l’application cartographique de la qualité de l’air

J’ai été invité à parler de cette application pour le Données sur la réunion de la communauté Kubernetes. J’ai présenté certaines de mes recherches passées sur la représentation des données scientifiques sur le Web et comment le mécanisme clé est le partitionnement, l’annotation et la dénomination des représentations de données. J’ai montré comment j’ai implémenté cela pour collecter, stocker et utiliser des données sur la qualité de l’air via Python, Redis et un déploiement Kubernetes. Vous pouvez regarder ma présentation complète et en savoir plus dans la vidéo et le podcast intégrés ci-dessous (et voir mes diapositives de présentation ici).

Development Source

Related Posts

RLEC 4.2.1 apporte des contrôles granulaires à la haute disponibilité et aux performances

RLEC 4.2.1 apporte des contrôles granulaires à la haute disponibilité et aux performances

Comment HolidayMe utilise Redis Enterprise comme base de données principale

Comment HolidayMe utilise Redis Enterprise comme base de données principale

Annonce de RedisGears 1.0 : un moteur sans serveur pour Redis

Annonce de RedisGears 1.0 : un moteur sans serveur pour Redis

Clés Redis dans la RAM |  Redis

Clés Redis dans la RAM | Redis

No Comment

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *