数据堆栈筹划中宽表和窄表是什么意思?

[复制链接]
发表于 2025-12-2 10:51:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在数据堆栈筹划中,“宽表”和“窄表”(数表)是两种常见的筹划方式,每种方式在差异场景下有差异的优缺点和实用场景。以下是详细剖析,以及针对你需求的保举方案:

宽表和窄表的概念


  • 宽表(横表)

    • 将多种指标和维度都存储在一张表里,字段许多,行数相对较少。
    • 特点:

      • 每条记载包罗全部维度和指标,镌汰了查询时的关联利用。
      • 存储冗余较高,占用更多存储空间。

    • 实用场景:

      • 查询性能要求高,重要以读取为主。
      • OLAP(在线分析处置处罚)场景,用于直接展示和分析(如报表或看板)。
      • 不常变动的汗青性数据汇总。

    示例:
    1. 日期       | 订单ID    | 门店ID  | 品牌ID | 支付金额 | 优惠金额 | 退款金额 | ...
    2. 2024-12-19 | 12345     | 1001    | 2001   | 100.0    | 20.0     | 5.0      | ...
    3. 2024-12-19 | 12346     | 1002    | 2002   | 150.0    | 30.0     | 0.0      | ...
    复制代码


  • 窄表(竖表/数表)

    • 将数据以“指标范例”为行的方式存储,每种范例单独成行,字段较少但行数较多。
    • 特点:

      • 更机动,便于扩展(新增指标时不必要修改表布局)。
      • 存储服从较高,但查询时必要多次聚合或关联。

    • 实用场景:

      • 数据收罗或存储层,用于机动扩展和高效存储。
      • 必要动态增长指标、范例较多的场景。
      • 得当 OLTP(在线事故处置处罚)场景。

    示例:
    1. 日期       | 订单ID    | 门店ID  | 品牌ID | 指标类型 | 指标值
    2. 2024-12-19 | 12345     | 1001    | 2001   | 支付金额 | 100.0
    3. 2024-12-19 | 12345     | 1001    | 2001   | 优惠金额 | 20.0
    4. 2024-12-19 | 12345     | 1001    | 2001   | 退款金额 | 5.0
    复制代码

需求分析

必要按 日期、订单、门店、品牌维度,清算出 付出单、优惠单、退款单,并天生 小时级的付出、退款、优惠和应收表。以下是保举方案的详细分析:
需求特点:


  • 维度固定:

    • 日期、订单、门店、品牌。

  • 指标种类有限:

    • 付出金额、优惠金额、退款金额、应收金额等。

  • 查询粒度较高:

    • 按小时级别,针对固定维度和指标举行查询分析。

  • 聚合频仍:

    • 必要快速天生报表或看板,查询性能要求较高。


保举使用宽表

来由:


  • 查询性能更优:

    • 宽表中指标是直接列存储,不必要在查询时举行多表关联或动态聚合。
    • 聚合查询(如小时级汇总)速率快,得当报表或实时看板场景。

  • 数据量相对可控:

    • 维度(日期、订单、门店、品牌)和指标(付出金额、优惠金额、退款金额)相对固定,宽表不会显着增长存储本钱。

  • 得当业务逻辑清楚的场景:

    • 你的指标和维度是清楚且固定的,不必要机动扩展额外指标。

  • 报表筹划的最佳实践:

    • 宽表是一种典范的 OLAP 模式,镌汰了查询时复杂的运算和关联。

宽表筹划示例:
  1. 日期       | 小时      | 订单ID    | 门店ID  | 品牌ID | 支付金额 | 优惠金额 | 退款金额 | 应收金额
  2. 2024-12-19 | 10:00     | 12345     | 1001    | 2001   | 100.0    | 20.0     | 5.0      | 75.0
  3. 2024-12-19 | 11:00     | 12346     | 1002    | 2002   | 150.0    | 30.0     | 0.0      | 120.0
复制代码

何时使用窄表?

窄表实用于以了局景:

  • 指标种类动态增长:

    • 如果未来大概频仍增长新的指标(如其他金额范例)。

  • 必要存储更大数据量:

    • 如果必要支持的维度或数据量特殊大,窄表存储服从更高。

窄表现例:
  1. 日期       | 小时      | 订单ID    | 门店ID  | 品牌ID | 指标类型 | 指标值
  2. 2024-12-19 | 10:00     | 12345     | 1001    | 2001   | 支付金额 | 100.0
  3. 2024-12-19 | 10:00     | 12345     | 1001    | 2001   | 优惠金额 | 20.0
  4. 2024-12-19 | 10:00     | 12345     | 1001    | 2001   | 退款金额 | 5.0
  5. 2024-12-19 | 11:00     | 12346     | 1002    | 2002   | 支付金额 | 150.0
复制代码

实现发起


  • 选择宽表实现:

    • 创建一张宽表,每小时对付出单、优惠单、退款单的数据举行 ETL 清算,汇总后存储。
    • 定期清算汗青数据,制止宽表过大。

  • 保存窄表原始数据(可选):

    • 如果后续需求大概变动,可保存窄表作为存储层,用于天生宽表时的增补数据源。


总结


  • 保举使用宽表:满足当前高性能分析和固定维度的需求。
  • 宽表长处:查询服从高、布局清楚,得当固定维度的报表天生。
  • 窄表实用场景:必要机动扩展的场景,但查询性能相对较低。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表