基于 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 数据仓库,也能满足复杂的对账报表需求。

相关推荐
焚琴煮鹤的熊熊野火8 小时前
数据仓库实验一 建立警务数据仓库完成ETL
数据仓库·etl
PersistJiao9 小时前
Couchbase的OLAP支持情况
olap·couchbase
叫我DPT18 小时前
Hive——HQL数据查询语言
数据仓库·hive·hadoop
Yz987618 小时前
Hive的Serde
大数据·数据仓库·hive·hadoop·数据库架构·bigdata
smilejingwei19 小时前
数据仓库的性能问题及解决之道
数据仓库·spl·esproc spl
PersistJiao19 小时前
基于 Couchbase 数据仓库元数据管理的可行性方案
数据仓库·元数据管理·数据血缘
liuwufei19 小时前
数据仓库-查看表和数据库的信息
数据库·数据仓库
PersistJiao1 天前
基于Couchbase的数据构建方案:数仓分层
数据仓库·数仓分层·couchbase