基于 Couchbase 的数仓建模方案

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


1. Couchbase 数仓建模原则

  1. Scopes 对应库(Schemas):

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

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

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

    • 每个 Collection 至少有一个主键索引(PRIMARY INDEX)。
    • 根据查询需求添加二级索引,例如时间字段索引(date)、业务主键索引(order_id、payment_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:order、dws:payment、ads:revenue。
  • Collections(表):

    • 格式:业务域:主题 或 报表主题:具体报表。
    • 示例:order:detail、revenue: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 数据仓库,也能满足复杂的对账报表需求。

相关推荐
西木莉3 天前
数据仓库概述
数据仓库
Francek Chen4 天前
【大数据处理与分析】数据仓库Hive:04 数据仓库Hive概述
大数据·数据仓库·hive·hadoop·分布式
Moshow郑锴5 天前
从“水库”到“直饮水站”:重新理解 Data Mart 与 Data Lake、Data Lakehouse、Data Warehouse 的区别
数据仓库·data·湖仓一体
躺柒5 天前
读数据架构知识体系指南01关系数据仓库(上)
数据仓库·架构·数据分析·spark·数据湖·关系数据库·企业数据仓库
tianhuo0037 天前
从MySQL到Apache Doris:生鲜供应链数仓的ETL流水线与SARIMA需求预测全实
数据仓库·数据中台·零售行业供应链数字化
SendTomo7 天前
.ico透明图标在线生成下载平台深度解析
大数据·数据结构·数据库·数据仓库·个人开发
qingwufeiyang_5308 天前
IceBerg学习笔记2
数据仓库·数据湖
学代码的CJY10 天前
CJY 知识工作台:博客写作使用指南
数据仓库·知识图谱
喻师傅10 天前
Apache Hudi 概述:从 Parquet 更新难题到数据湖 Upsert
大数据·数据仓库·big data
智码看视界11 天前
大数据架构深度解析:StarRocks 实时数仓搭建:比 ClickHouse 更适合多维分析的场景
大数据·starrocks·olap·数据建模·列式存储·clickhouse对比