# mall_warehouse **Repository Path**: cooldwhite/mall_warehouse ## Basic Information - **Project Name**: mall_warehouse - **Description**: 电商平台实时数仓和BI展示 - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-12 - **Last Updated**: 2025-04-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: DataWarehouse, 数据仓库, flink, Scala, doris ## README # mall warehouse #### 介绍 电商平台实时数仓建设 #### 软件架构 ![architecture](./img/architecture.png) ##### 数据源 电商业务数据库和用户日志,实际数据由程序模拟生成。 ##### 数据采集 使用Maxwell同步业务数据,以及Flume采集日志。 ##### 数仓建设 ###### ODS Maxwell、Flume写入数据到kafka的对应主题,分别为Topic_db、Topic_log。 ###### DIM Flink根据Flink CDC从数据库获得的配置信息表,从Topic_db主题中筛选出与维度表相关的业务表数据,随后将其写入到Hbase。得益于Flink CDC的实时同步,程序能检测到配置表的变化,实现动态的筛选维度表,从而避免服务的重启。另外,为了加快DIM层的查询,项目使用Redis作为旁路缓存。 ###### DWD Flink通过将业务主题的数据映射为Table的方式来消费上游数据,使用FlinkSQL筛选并关联表,同时对于一些固定不变的维度,采用维度退化的方式,提前关联事实表。对于日志主题,使用Stream API对日志数据做处理。最后写入到Kafka对应事实表的主题。 ###### DWS 使用FlinkSQL对DWD层事实表进行开窗聚合,同时关联DIM层维度表。对于独立访客、新老用户判断等需求,使用Stream状态编程实现。最后写入到Doris,为应用层提供快速的查询响应。 #### 项目业务 以下是本电商项目的数据域和业务过程的划分: | ***数据域*** | ***业务过程*** | | ------------ | -------------------------------------------------- | | ***交易域*** | 加购、下单、取消订单、支付成功、退单、退款成功 | | ***流量域*** | 页面浏览、启动应用、动作、曝光、错误 | | ***用户域*** | 注册、登录 | | ***互动域*** | 收藏、评价 | | ***工具域*** | 优惠券领取、优惠券使用(下单)、优惠券使用(支付) | #### BI展示 ![sugar](./img/sugar.png)