基于 Apache Doris 的用户画像数据模型设计方案

一、 需求分析与设计目标
  1. 数据源

    • 用户基本信息:用户ID、性别、出生日期、注册时间、常驻地域(省、市、区)、职业等。

    • 用户体检报告:每次体检的报告ID、体检时间、各项指标(如血压、血糖、血脂、BMI等)。

    • 用户关注的保健品:用户ID、关注/浏览/收藏的保健品ID、行为时间、行为类型(点击、收藏、加购)、保健品品类等。

  2. 核心需求

    • 支持以用户为主体的 360° 视图查询。

    • 支持在时间(年、季度、月、周、日)和地域(国家、省、市)维度上进行灵活的上卷(Roll-up)和下钻(Drill-down)分析。

    • 支持对用户标签(如“高血压风险人群”、“VC补充剂潜在客户”)的快速群体圈选和统计分析。

    • 查询响应速度快,即使在大数据量下也能亚秒级响应。

  3. 设计目标

    • 高性能:利用 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 分

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值