基于 Couchbase 的数仓建模方案

以下是一份基于 Couchbase 的数仓建模方案,结合你的业务需求(订单、支付、退款业务)以及报表需求(营收报表、优惠报表、支付方式报表),为 ODS、DWD、DWS、ADS 层提供了存储方式、库名、表名的标准化设计。


1. Couchbase 数仓建模原则

  1. Scopes 对应库(Schemas)

    • 一个 Scope 代表一个逻辑数据库,主要根据层级划分:ODS、DWD、DWS、ADS。
    • Scope 名称采用 数仓层级:业务域 格式(如 ods:orderdws:payment)。
  2. Collections 对应表(Tables)

    • 每个 Collection 对应一张表,表名建议标准化为 业务域:主题
    • 采用 JSON 文档存储数据,每个文档代表一条记录,支持嵌套字段。
  3. 分区策略

    • 按业务域(如订单、支付、退款)或时间分区(如按日期、月份)。
    • 分区键建议选用访问频率高且查询条件常用的字段(如 order_idpayment_iddate)。
  4. 索引策略

    • 每个 Collection 至少有一个主键索引(PRIMARY INDEX)。
    • 根据查询需求添加二级索引,例如时间字段索引(date)、业务主键索引(order_idpayment_id)。

2. 数仓层级设计

ODS 层(原始数据层)

  • 特点:存储从源系统直接采集的原始数据,贴近业务系统,按业务域划分。
  • Scope 名称ods:业务域
  • Collections(表名)标准化
    • 命名格式:业务域:数据来源
    • 数据尽量按照业务记录,字段多保持原样。
Scope Collection 名称 说明 分区键 示例字段
ods:order order:raw 订单业务原始数据 order_id order_id, customer_id
ods:payment payment:raw 支付业务原始数据 payment_id payment_id, order_id
ods:refund refund:raw 退款业务原始数据 refund_id refund_id, payment_id

DWD 层(明细数据层)

  • 特点:对 ODS 数据进行清洗和规范化,打平嵌套结构,按主题存储明细数据。
  • Scope 名称dwd:业务域
  • Collections(表名)标准化
    • 命名格式:业务域:主题
    • 数据以明细记录为主,具备较高查询效率。
Scope Collection 名称 说明 分区键 示例字段
dwd:order order:detail 清洗后的订单明细 order_id order_id, customer_id
dwd:payment payment:detail 清洗后的支付明细 payment_id payment_id, payment_type
dwd:refund refund:detail 清洗后的退款明细 refund_id refund_id, refund_reason

DWS 层(汇总数据层)

  • 特点:基于 DWD 数据进行轻量汇总,支持多维分析,通常按照主题域划分。
  • Scope 名称dws:业务域
  • Collections(表名)标准化
    • 命名格式:主题域:汇总维度
    • 数据按维度聚合存储,支持 OLAP 查询。
Scope Collection 名称 说明 分区键 示例字段
dws:order order:daily_summary 每日订单汇总 date date, total_orders, total_sales
dws:payment payment:method_summary 每种支付方式的每日汇总 date date, payment_type, total_amt
dws:refund refund:reason_summary 每种退款原因的每日汇总 date date, refund_reason, refund_amt

ADS 层(应用数据层)

  • 特点:为具体的报表和分析需求提供高性能的数据支持。数据通常是面向特定报表需求设计的,便于前端直接查询。
  • Scope 名称ads:报表主题
  • Collections(表名)标准化
    • 命名格式:报表主题:具体报表
    • 数据是高度聚合后的结果表。
Scope Collection 名称 说明 分区键 示例字段
ads:revenue revenue:report 营收报表 date date, total_revenue, discount
ads:discount discount:report 优惠报表 date date, total_discount, count
ads:payment payment:report 支付方式分布报表 date date, payment_type, total_amt

3. 建模示例:营收报表

假设需要生成营收报表,查询条件包括 今日、昨日、本周、本月、上月、自定义日期范围,具体建模和数据流设计如下:

  1. ODS 层

    • 收集订单业务、支付业务的原始数据。
    • Scope: ods:order
    • Collection: order:raw
  2. DWD 层

    • 从 ODS 数据中提取订单明细和支付明细。
    • Scope: dwd:order
    • Collection: order:detail, payment:detail
  3. DWS 层

    • 按天汇总订单金额和支付方式金额。
    • Scope: dws:order
    • Collection: order:daily_summary
  4. ADS 层

    • 生成营收报表,包括总营收、优惠金额、支付方式分布等。
    • Scope: ads:revenue
    • Collection: revenue:report

4. 标准化命名规则总结

  • Scopes(库)

    • 格式:数仓层级:业务域数仓层级:报表主题
    • 示例:ods:orderdws:paymentads:revenue
  • Collections(表)

    • 格式:业务域:主题报表主题:具体报表
    • 示例:order:detailrevenue:report

5. 索引策略

  1. Primary Index

    • 每个 Collection 都需要创建主键索引。
  2. Secondary Index

    • 按查询需求创建,如:
      • CREATE INDEX idx_date ON dws:order:daily_summary(date);
      • CREATE INDEX idx_payment_type ON dwd:payment:detail(payment_type);

这套方案实现了 分层存储命名规范化高效查询支持,既适配你的 Couchbase 数据仓库,也能满足复杂的对账报表需求。

相关推荐
不剪发的Tony老师2 小时前
Apache Hop:开源版本的Kettle
数据仓库·etl
专注API从业者1 天前
分布式电商系统中的API网关架构设计
大数据·数据仓库·分布式·架构
我要用代码向我喜欢的女孩表白2 天前
hive迁移补数脚本细粒度 表名-分区唯一键
数据仓库·hive·hadoop
人类群星闪耀时3 天前
数据湖与数据仓库:初学者的指南
大数据·数据仓库·spark
python资深爱好者3 天前
Hive中的分区和桶的概念及其作用
数据仓库·hive·hadoop
我要用代码向我喜欢的女孩表白4 天前
hive(hdfs)补数脚本
数据仓库·hive·hadoop
风子~4 天前
hive—常用的函数整理
数据仓库·hive·hadoop
moton20174 天前
一.数据治理理论架构
大数据·数据仓库·数据治理·etl·数据湖·元数据管理·主数据管理
我要用代码向我喜欢的女孩表白4 天前
Hive增量迁移方案与实操PB级
数据仓库·hive·hadoop
莫叫石榴姐4 天前
DeepSeek驱动下的数据仓库范式转移:技术解耦、认知重构与治理演进
大数据·数据仓库·人工智能·重构·数据分析·deep learning