Construisez une plateforme d’analyse de données avec Flask, SQL et Redis

Dans cet article, je vais vous présenter le développement d’une application web basée sur Flask qui interagit avec une base de données SQL Server pour analyser des données de population. L’application permet aux utilisateurs de consulter des plages de population, de récupérer des comtés par état et d’extraire des états dans des plages de population spécifiques. Je discuterai également de l’intégration de Redis pour mettre en cache les résultats des requêtes afin d’améliorer les performances.

Pourquoi Flask, SQL Server et Redis ?

Flask est un framework web Python léger et flexible qui est parfait pour créer des applications web de petite à moyenne taille. Il fournit les outils nécessaires pour créer des API RESTful, rendre des modèles HTML dynamiques et interagir avec des bases de données. D’autre part, SQL Server est un système de gestion de base de données relationnelle (SGBDR) robuste qui est largement utilisé dans les applications d’entreprise. Combiner Flask avec SQL Server nous permet de construire une application puissante pour l’analyse et la visualisation des données.

Pour améliorer encore les performances, nous allons intégrer Redis, un magasin de données en mémoire, pour mettre en cache les résultats de requêtes fréquemment consultés. Cela réduit la charge sur la base de données et accélère les temps de réponse pour les requêtes répétées.

Aperçu de l’application

Notre application Flask effectue les tâches suivantes :

  1. Plages de population de requête. Les utilisateurs peuvent spécifier une année et une plage de population pour obtenir le nombre d’États se situant dans ces plages.
  2. Récupérer les comtés par État. Les utilisateurs peuvent saisir un code d’État pour obtenir une liste de comtés.
  3. Récupérer les États par plage de population. Les utilisateurs peuvent spécifier une plage de population et une année pour obtenir une liste d’États dans cette plage.
  4. Remarque. Pour tester, n’hésitez pas à créer votre propre schéma dans la base de données et insérez des données d’exemple selon les besoins en fonction des API partagées suivantes à l’aide de requêtes SQL. De plus, les pages HTML utilisées ici peuvent être une conception de tableau de base qui récupère les données renvoyées du code de l’application Flask et affiche les résultats.

Plongeons dans les détails de mise en œuvre.

Configuration de l’application Flask

1. Prérequis

Avant de commencer, assurez-vous d’avoir installé les éléments suivants via votre terminal root (commandes compatibles avec MacOS):

  • Python 3.x 
  • Flask (pip install flask)
  • SQLAlchemy (pip install sqlalchemy)
  • PyODBC (pip install pyodbc)
  • Redis (pip install redis

2. Connexion à la base de données

Nous utilisons SQLAlchemy pour se connecter à la base de données SQL Server. Voici comment la connexion peut être configurée:

Python

 

Cette chaîne de connexion utilise le pilote ODBC pour SQL Server et inclut des paramètres pour le chiffrement et le délai d’attente.

3. Configuration Redis

Redis est utilisé pour mettre en cache les résultats de requête. Voici comment configurer la connexion Redis :

Python

 

4. Implémentation des itinéraires de l’application

Itinéraire de la page d’accueil

L’itinéraire de la page d’accueil affiche la page principale de l’application :

Python

 

Requête de plage de population avec mise en cache Redis

Cet itinéraire gère les requêtes pour les plages de population. Il vérifie d’abord si le résultat est mis en cache dans Redis. Sinon, il interroge la base de données et met en cache le résultat pour une utilisation future :

Python

 

Récupérer les comtés par État avec mise en cache Redis

Cet itinéraire récupère les comtés pour un code d’État donné. Il utilise également Redis pour mettre en cache les résultats :

Python

 

Récupérer les États par plage de population avec mise en cache Redis

Cet itinéraire récupère les États dans une plage de population spécifiée et met en cache les résultats :

Python

 

Comparaison des performances : SQL Server vs Redis

Query Type Redis Fetch Time SQL Execution Time
Requête de plage de population (mise en cache) 0,002 secondes 0,000 secondes
Requête de plage de population (fraîche) 0,002 secondes 1,342 secondes

Principale conclusion : Redis réduit le temps d’exécution de ~1,3 secondes à ~0,002 secondes, rendant les requêtes 650 fois plus rapides !

Comment Redis améliore les performances

Redis est un magasin de données en mémoire qui agit comme une couche de mise en cache entre l’application et la base de données. Voici comment il fonctionne dans notre application :

  • Clé de cache. Une clé unique est générée pour chaque requête en fonction de ses paramètres.
  • Vérification de cache. Avant d’exécuter une requête à la base de données, l’application vérifie si le résultat est déjà mis en cache dans Redis.
  • Accès au cache. Si le résultat est trouvé dans Redis, il est renvoyé immédiatement, évitant ainsi une requête à la base de données.
  • Échec du cache. Si le résultat n’est pas trouvé, la requête est exécutée et le résultat est mis en cache dans Redis pour une utilisation ultérieure.
  • Expiration du cache. Les résultats mis en cache sont programmés pour expirer après un temps spécifié (par exemple, 1 heure) afin d’assurer la fraîcheur des données.

En mettant en cache les résultats de requêtes fréquemment accédés, Redis réduit considérablement la charge sur la base de données et améliore les temps de réponse pour les requêtes répétées.

Conclusion

Dans cet article, nous avons construit une application Flask qui interagit avec une base de données SQL Server pour analyser des données démographiques. Nous avons intégré Redis pour mettre en cache les résultats des requêtes, améliorant les performances et réduisant la charge de la base de données. En suivant les bonnes pratiques, vous pouvez étendre cette application pour gérer des requêtes plus complexes et la mettre à l’échelle pour une utilisation en production.

Lien : Le code source de cette application complète est disponible sur GitHub.

Source:
https://dzone.com/articles/build-data-analytics-platform-flask-sql-redis