整篇文案还是按照先按照比较通俗易懂的方式讲解,然后再归纳总结
一、为什么要对数仓分层
首先,我们先回归下数据仓库的发展历史,在早期数据仓库通常是一个大型的的、集中的数据存储系统。随着数据量的增加和业务需求的复杂化,这种单一结构的数据仓库开始面临各种挑战。
主要是遇到了以下的问题:
1. 数据管理复杂:所有的数据混在一起,就像一个巨大的杂货店,找东西变得非常困难
2. 性能问题:当所有查询都直接访问原始数据时,会导致系统负担太重,影响查询速度
3. 数据质量难以保证:没有统一的数据处理流程,不同的人可能会对同一份数据进行不同的处理,导致数据不一致。
4. 难以应对变化:业务需求经常变化,如果没有良好的结构,每次变更都可能需要大规模的重构。
5. 数据安全和权限管理困难:不同意用户可能需要访问不同层次的数据,如果所有数据都在一起,很难进行精细的权限控制。
那么,数据分层是如何解决这些问题的呢?
- 数据隔离:通过分层,我们可以将原始数据、中间处理数据和最终的分析数据分开存储。这就像是把杂货店的商品按类别整理到不同的货架上,大大提高了数据的可管理性。
- 性能优化:分层允许我们在不同的层次上进行数据聚合和优化。比如,我们可以在较高的层次上预先计算一些常用的聚合指标,这样就不需要每次查询的时候都从原始数据开始计算,大大提高了查询效率。
- 数据质量控制:每一层都可以有其特定的数据质量标准和处理规则。这样,我们可以在数据流转的过程中逐步提高数据质量。确保最终呈现给用户的数据是高质量的。
- 灵活应对变化:分层架构使得我们可以在不影响其他层的情况下,对某一层进行修改或优化。这大大提高了系统的灵活性和可维护性。
- 支持多样化的数据需求:不同的用户可能需要不同粒度的数据。通过分层,我们可以同时满足需要细节数据的数据科学家和需要高度汇总数据的管理者的需求。
- 数据血缘追踪:分层架构使得我们可以清晰地追踪数据的来源和变化过程,这对与数据治理和问题诊断非常重要。
- 安全和权限管理:通过分层,我们可以更容易地实现细粒度的访问控制,确保用户只能访问到他们有权限的数据
- 支持增量ETL:分层架构使得我们可以更容易的视线增量数据处理,只需要处理变化的数据,而不是每次都处理全量的数据。
- 提高开发效率:不同的团队可以专注于不同的层次,这种分工可以提高开发效率和专业化程度。
总的来说,数据仓库的分层是为了应对数据量增长、需求复杂化、性能要求提高等挑战而演进出来的一种架构模式。它通过将复杂的问题分解为多个相对简单的子问题,从而提高了整个系统的可管理性、灵活性和效率。
这让我想到了软件工程中的“分而治之”原则。数据仓库的分层本质上也是这个原则的一种应用,通过合理的分层,我们可以更好地管理和利用日益增长的数据资产,从而为业务创造更大的价值。
1.为什么数据仓库要分层
数据仓库分层主要是为了应对数据量增长、业务需求复杂化、性能要求提高等挑战。在早期单一结构数据仓库中,随着数据规模的扩大和使用场景的多样化、出现了一系列的问题,入数据管理复杂、查询性能下降、数据质量难以保证、难以应对业务变化等。分层架构就是为了解决这些问题而演进出来的。
2.没有分层的数据仓库遇到的主要问题
a) 数据管理复杂:所有数据混在一起,难以组织和查找。
b) 性能问题:所有查询直接访问原始数据,导致系统负担重,响应慢。
c) 数据质量难以保证:缺乏统一的数据处理流程,容易导致数据不一致。
d) 难以应对变化:业务需求变更时,可能需要大规模重构。
e) 数据安全和权限管理困难:难以实现精细的访问控制
3.数据分层的作用
a) 数据隔离:将原始数据、中间处理数据和最终分析数据分开存储,提高可管理性。b) 性能优化:允许在不同层次上进行数据聚合和优化,提高查询效率。c) 数据质量控制:每层设定特定的质量标准和处理规则,逐步提高数据质量。d) 灵活应对变化:可以在不影响其他层的情况下,对某一层进行修改或优化。e) 支持多样化的数据需求:同时满足需要细节数据和高度汇总数据的不同用户需求。f) 数据血缘追踪:清晰地追踪数据的来源和变化过程,有利于数据治理和问题诊断。g) 安全和权限管理:实现更细粒度的访问控制,确保数据安全。h) 支持增量ETL:更容易实现增量数据处理,提高效率。i) 提高开发效率:不同团队可以专注于不同层次,提高开发效率和专业化程度。