毕业设计题目:Django+Vue 电商离线数据分析系统

一、 系统总体设计目标

  1. 数据汇集与存储:定时将分散在不同数据源(如MySQL业务库、日志文件、App埋点)的电商数据汇集到专门的分析数据库中。

  2. 数据清洗与计算:对原始数据进行清洗、转换和聚合,形成面向分析的主题数据(如用户行为、销售、商品等)。

  3. 多维度数据分析:提供对关键业务指标(如销售额、订单量、用户留存、商品销量排行)的多维度(时间、地区、商品类别等)查询与分析。

  4. 交互式数据可视化:通过丰富的图表(折线图、柱状图、饼图、地图等)和仪表盘,直观、交互地展示分析结果。

  5. 离线与定时任务:核心数据分析任务在后台定时运行(如每日凌晨),不影响线上业务的性能。


二、 系统基本框架(五层结构)

这个系统通常采用典型的数据处理流水线架构。

1. 数据采集层

负责从各个数据源抽取数据。

  • 数据源

    • 业务数据库:如 MySQL 或 PostgreSQL,存储订单、用户、商品等核心业务数据。

    • 日志文件:Nginx访问日志、App用户行为埋点日志等。

    • 其他数据:如第三方推广平台API数据。

  • 采集方式

    • 直接数据库查询:对于业务库,通过SQL查询增量或全量数据。

    • 日志收集工具:如 Filebeat, Flume,将日志文件收集到中央存储。

    • Python 脚本:编写定制的采集脚本,最为灵活。

2. 数据存储与计算层

这是离线分析的核心,负责存储和加工数据。

  • 数据仓库

    • 推荐选择MySQL(数据量小、简单)、ClickHouse(极快的OLAP查询性能,强烈推荐)、Apache Doris、或传统Hadoop Hive(技术栈较重)。

    • 角色:存储清洗和聚合后的数据,为前端分析提供快速查询。

  • 数据处理

    • 核心工具Apache Airflow 或 Django Celery Beat

    • 角色:用于调度和监控定时运行的ETL任务脚本。

    • 处理流程(ETL)

      • 抽取:从数据源拉取数据。

      • 转换:数据清洗、格式化、关联、业务逻辑计算。

      • 加载:将处理好的数据导入到数据仓库的相应表中(通常是宽表或星型/雪花模型)。

3. 后端服务层

基于 Django 提供 RESTful API。

  • Django 项目结构

    • 核心Appanalytics_api

    • 模型:定义与数据仓库中分析表对应的Django模型(只读,用于查询)。

    • 序列化器:使用 Django REST Framework 将模型数据序列化为JSON格式。

    • 视图:提供各种API端点,如:

      • api/sales/daily/ (获取每日销售趋势)

      • api/users/active/ (获取活跃用户分析)

      • api/products/top10/ (获取商品销量TOP10)

    • 过滤器:使用 django-filter 库实现灵活的查询过滤(如按时间范围、商品类别、地区等)。

    • 认证与权限:确保数据接口的安全。

4. 前端可视化层

基于 Vue 构建动态、单页面的管理后台。

  • Vue 项目结构

    • 路由:使用 Vue Router 管理不同分析页面的路由。

    • 状态管理:对于复杂应用,使用 Vuex/Pinia 管理共享的过滤条件(如全局时间选择)。

    • HTTP客户端:使用 Axios 调用 Django 后端提供的 API。

    • 可视化组件库

      • UI框架:Element Plus 或 Ant Design Vue,用于快速搭建后台页面布局。

      • 图表库Apache ECharts 或 Chart.js,功能强大,社区活跃。通常会对其进行 Vue 组件化封装。

    • 页面

      • 综合仪表盘:展示核心KPI概览和最重要的图表。

      • 销售分析页:销售趋势、地区分布、渠道分析等。

      • 用户分析页:用户增长、留存率、用户画像等。

      • 商品分析页:商品销量排行、库存分析、品类效益等。

5. 任务调度与监控层

负责驱动整个离线数据处理流程。

  • 调度器

    • 选项一Apache Airflow。专业、强大,有完善的DAG(有向无环图)定义、任务依赖、重试和监控界面。这是生产环境的最佳选择

    • 选项二Celery Beat。如果系统较轻量,且团队对Django技术栈更熟悉,可以使用Celery Beat来调度定时ETL任务。

  • 监控

    • 任务执行成功/失败通知(邮件、钉钉、Slack)。

    • 数据质量校验告警。


三、 核心工作流程(以每日销售报表为例)

  1. 定时触发:Airflow 调度器在每日凌晨2:00触发 “每日ETL任务” DAG。

  2. 数据抽取:任务脚本从业务MySQL数据库中抽取前一天的订单、商品、用户数据。

  3. 转换计算:脚本进行数据清洗(处理无效订单)、关联维度信息,并聚合计算出各品类、各地区的销售额、订单量等指标。

  4. 加载入库:将计算结果写入ClickHouse的 daily_sales_summary 表中。

  5. API 调用:上午9:00,运营人员打开Vue前端管理后台,前端自动调用 Django API api/sales/daily/?start_date=2023-10-01&end_date=2023-10-31

  6. 数据返回与渲染:Django 接收到请求,查询 ClickHouse,通过DRF序列化器返回JSON数据。Vue前端接收到数据后,使用ECharts渲染出漂亮的销售趋势折线图。

运行结果展示:

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐