欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > 基于 Couchbase 的数仓建模方案

基于 Couchbase 的数仓建模方案

2024/12/22 0:12:04 来源:https://blog.csdn.net/z1941563559/article/details/144437905  浏览:    关键词:基于 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(表名)标准化
    • 命名格式:业务域:数据来源
    • 数据尽量按照业务记录,字段多保持原样。
ScopeCollection 名称说明分区键示例字段
ods:orderorder:raw订单业务原始数据order_idorder_id, customer_id
ods:paymentpayment:raw支付业务原始数据payment_idpayment_id, order_id
ods:refundrefund:raw退款业务原始数据refund_idrefund_id, payment_id

DWD 层(明细数据层)

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

DWS 层(汇总数据层)

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

ADS 层(应用数据层)

  • 特点:为具体的报表和分析需求提供高性能的数据支持。数据通常是面向特定报表需求设计的,便于前端直接查询。
  • Scope 名称ads:报表主题
  • Collections(表名)标准化
    • 命名格式:报表主题:具体报表
    • 数据是高度聚合后的结果表。
ScopeCollection 名称说明分区键示例字段
ads:revenuerevenue:report营收报表datedate, total_revenue, discount
ads:discountdiscount:report优惠报表datedate, total_discount, count
ads:paymentpayment:report支付方式分布报表datedate, 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 数据仓库,也能满足复杂的对账报表需求。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com