一、 需求分析与设计目标
-
数据源:
-
用户基本信息:用户ID、性别、出生日期、注册时间、常驻地域(省、市、区)、职业等。
-
用户体检报告:每次体检的报告ID、体检时间、各项指标(如血压、血糖、血脂、BMI等)。
-
用户关注的保健品:用户ID、关注/浏览/收藏的保健品ID、行为时间、行为类型(点击、收藏、加购)、保健品品类等。
-
-
核心需求:
-
支持以用户为主体的 360° 视图查询。
-
支持在时间(年、季度、月、周、日)和地域(国家、省、市)维度上进行灵活的上卷(Roll-up)和下钻(Drill-down)分析。
-
支持对用户标签(如“高血压风险人群”、“VC补充剂潜在客户”)的快速群体圈选和统计分析。
-
查询响应速度快,即使在大数据量下也能亚秒级响应。
-
-
设计目标:
-
高性能:利用 Doris 的预聚合、列式存储和索引技术实现极速查询。
-
可扩展性:模型能够轻松应对数据量的持续增长。
-
易维护性:表结构清晰,数据更新和ETL流程高效。
-
二、 技术选型与 Doris 特性利用
选择 Apache Doris 的原因及其核心特性的利用:
-
MPP 架构:天然支持大规模并行处理,适合复杂的分析查询。
-
列式存储:高压缩比,查询时只需读取相关列,极大降低 I/O。
-
智能预聚合(Aggregate 模型):本方案核心,可预先计算常用维度的汇总数据,使聚合查询速度极快。
-
分区与分桶:支持按时间分区,便于数据管理(如淘汰旧数据)和查询时剪枝。结合分桶(Hash分桶)实现数据均匀分布和高效点查。
-
物化视图(Materialized View):另一核心,可自动或手动为不同维度组合创建预聚合表,查询时路由到最优的物化视图,灵活支持上卷下钻。
-
Duplicate 模型:用于存储需要保留原始明细数据的表,如用户行为流水。
-
高效数据导入:支持 Broker Load / Stream Load / Routine Load,便于从 Kafka、HDFS、MySQL 等数据源批量或实时导入数据。
三、 数据模型详细设计
建议采用维度建模的思想,构建雪花模型或星型模型。这里我们采用星型模型,以保持查询的简洁和高效。
1. ODS 层(操作数据层)
-
目的:贴源数据层,结构与数据源保持一致。
-
表设计:使用 Duplicate 模型,保留原始明细。
-
ods_user_basic(用户基本信息表) -
ods_user_medical_report(用户体检报告表) -
ods_user_behavior(用户保健品关注行为表)
-
-
数据导入:使用 Routine Load 从 Kafka 实时接入用户行为数据,使用 Broker Load 每天批量导入体检报告和基本信息变更数据。
2. DWD 层(数据明细层)
-
目的:对 ODS 层数据进行清洗、整合、轻度聚合,形成明细事实表和维度表。
-
表设计:
-
事实表:
-
dwd_user_medical_fact(用户体检事实表)-
模型:Aggregate 模型
-
分区:按
exam_date(体检日期) 进行 Range Partitioning(按月分区)。 -
分桶:按
user_id分
-
-
-

最低0.47元/天 解锁文章
738

被折叠的 条评论
为什么被折叠?



