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

相关推荐
糖醋_诗酒1 天前
数据仓库 - 转转 - 一面凉经
数据仓库
醉颜凉1 天前
数据仓库实战:自动化数据质量检测全流程——精准提升数据准确性与完整性
大数据·数据仓库·自动化
RestCloud2 天前
信创数据集成实践:某央企ETL全链路国产化迁移架构拆解
数据仓库·架构·数据安全·etl·etlcloud·数据传输·国产化替代
m0_749690232 天前
【寻迹校园 HarmonyOS NEXT 实战 06】共享权威词表:让发布表单与首页筛选使用同一套分类
harmonyos·arkts·数据建模·软件架构·arkui
SelectDB技术团队4 天前
雨润集团 统一实时数据仓库:Apache Doris / SelectDB 的技术能力与实践
数据仓库·实时数仓·apache doris·selectdb
Irene19914 天前
剑指大数据:企业级数据仓库项目实战(金融租赁版)读书笔记__大数据测试集群的服务器节点服务分配规划表__解读(附:技术选型清单)
大数据·数据仓库·金融
SelectDB技术团队5 天前
抖音集团 实时数据仓库:Apache Doris / SelectDB 的技术能力与实践
数据仓库·apache
小马过河R6 天前
数据仓库入门:是什么、怎么做、和数据库有什么区别?
大数据·数据库·数据仓库·架构·驾驭工程·fde
慧一居士8 天前
Apache StreamPark 功能和使用场景介绍、使用步骤详细示例
数据仓库
慧一居士8 天前
Hologres 功能及使用场景介绍,实践详细步骤示例
数据仓库