Создание платформы аналитики данных с Flask, SQL и Redis

В этой статье я расскажу о разработке веб-приложения на основе Flask, которое взаимодействует с базой данных SQL Server для анализа данных о населении. Приложение позволяет пользователям запрашивать диапазоны населения, извлекать округа по штатам и получать штаты в определенных диапазонах населения. Я также расскажу о том, как интегрировать Redis для кэширования результатов запросов для улучшения производительности.

Почему Flask, SQL Server и Redis?

Flask – это легкий и гибкий веб-фреймворк на Python, идеально подходящий для создания небольших и средних веб-приложений. Он предоставляет необходимые инструменты для создания RESTful API, отображения динамических HTML-шаблонов и взаимодействия с базами данных. С другой стороны, SQL Server – это надежная система управления реляционными базами данных (СУБД), широко используемая в корпоративных приложениях. Комбинирование Flask с SQL Server позволяет нам создать мощное приложение для анализа данных и визуализации.

Для дальнейшего улучшения производительности мы интегрируем Redis, хранилище данных в памяти, для кэширования часто запрашиваемых результатов запросов. Это снижает нагрузку на базу данных и ускоряет время ответа на повторяющиеся запросы.

Обзор приложения

Наше приложение Flask выполняет следующие задачи:

  1. Запрос диапазонов населения. Пользователи могут указать год и диапазон населения, чтобы получить количество штатов, попадающих в эти диапазоны.
  2. Получить округа по штату. Пользователи могут ввести код штата, чтобы получить список округов.
  3. Получить штаты по диапазону населения. Пользователи могут указать диапазон населения и год, чтобы получить список штатов в этом диапазоне.
  4. Примечание. Чтобы протестировать, не стесняйтесь создавать свою схему в базе данных и вставлять образцовые данные по необходимости на основе предоставленных ниже API с использованием SQL-запросов. Кроме того, HTML-страницы, используемые здесь, могут представлять собой основной дизайн таблицы, который извлекает возвращенные данные из кода приложения Flask и отображает результаты.

Давайте перейдем к деталям реализации.

Настройка приложения Flask

1. Предварительные требования

Прежде чем начать, убедитесь, что у вас установлены следующие компоненты через ваш терминал root (команды совместимы с MacOS):

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

2. Подключение к базе данных

Мы используем SQLAlchemy для подключения к базе данных SQL Server. Вот как может быть настроено подключение:

Python

 

Эта строка подключения использует ODBC-драйвер для SQL Server и включает параметры для шифрования и времени ожидания.

3. Настройка Redis

Redis используется для кэширования результатов запросов. Вот как настроить подключение к Redis:

Python

 

4. Реализация маршрутов приложения

Маршрут домашней страницы

Маршрут домашней страницы отображает основную страницу приложения:

Python

 

Запрос диапазона населения с кэшированием Redis

Этот маршрут обрабатывает запросы на диапазоны населения. Сначала он проверяет, кэширован ли результат в Redis. Если нет, он делает запрос к базе данных и кэширует результат для будущего использования:

Python

 

Получение округов по коду штата с кэшированием Redis

Этот маршрут извлекает округа для заданного кода штата. Он также использует Redis для кэширования результатов:

Python

 

Получение штатов по диапазону населения с кэшированием Redis

Этот маршрут извлекает штаты в указанном диапазоне населения и кэширует результаты:

Python

 

Сравнение производительности: SQL Server против Redis

Query Type Redis Fetch Time SQL Execution Time
Запрос диапазона населения (кэшированный) 0,002 секунды 0,000 секунд
Запрос диапазона населения (новый) 0,002 секунды 1,342 секунды

Основной вывод: Redis сокращает время выполнения с ~1,3 секунды до ~0,002 секунды, делая запросы 650 раз быстрее!

Как Redis улучшает производительность

Redis – это хранилище данных в памяти, которое действует как кэширующий слой между приложением и базой данных. Вот как это работает в нашем приложении:

  • Ключ кэша. Для каждого запроса генерируется уникальный ключ на основе его параметров.
  • Проверка кэша. Перед выполнением запроса к базе данных приложение проверяет, есть ли результат уже в кэше Redis.
  • Попадание в кэш. Если результат найден в Redis, он немедленно возвращается, избегая запроса к базе данных.
  • Промах кэша. Если результат не найден, выполняется запрос, и результат кэшируется в Redis для будущего использования.
  • Истечение срока кэширования. Кэшированные результаты устанавливаются на истечение определенного времени (например, 1 час) для обеспечения свежести данных.

Путем кэширования результатов часто используемых запросов Redis значительно снижает нагрузку на базу данных и улучшает время ответа для повторяющихся запросов.

Вывод

В этой статье мы создали приложение Flask, взаимодействующее с базой данных SQL Server для анализа данных о населении. Мы интегрировали Redis для кэширования результатов запросов, улучшая производительность и снижая нагрузку на базу данных. Следуя bewst практикам, вы можете расширить это приложение для обработки более сложных запросов и масштабировать его для использования в производстве.

Ссылка: Исходный код этого полного приложения можно найти на GitHub.

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