共计 2316 个字符,预计需要花费 6 分钟才能阅读完成。
数据仓库科普:概念、架构、应用与发展趋势
数据仓库、数据集市、数据湖、数据中台、数据飞轮,这些 IT 概念常让人混淆。今天就来深入说说数据仓库。
数据仓库英文全称 Data Warehouse,简称 DW 或 DWH。它和数据库名字相近,却是不同事物。
数据仓库并非新概念,已有几十年历史。上世纪 70 年代,关系数据库崛起,美国康奈尔大学博士比尔·恩门就开始定义和讨论数据仓库术语。1988 年,IBM 研究人员引入“商业数据仓库”一词并开发相关系统。1990 年,拉尔夫·金博尔创立公司推出专门的数据仓库数据库管理系统。1991 年,比尔·恩门创立公司推出开发数据仓库的软件,同年他出版经典著作《构建数据库仓库》,标志着数据仓库概念正式确立,他也被誉为“数据仓库之父”。
比尔·恩门对数据仓库的定义是:一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。
“支持管理决策”是数据仓库的作用和主要目的。传统数据库供员工支撑具体工作,如收银系统。数据仓库则供管理层掌握宏观情况以做决策。OLTP 是联机事务处理数据库,用于日常业务操作,处理大量简单读写,要求快速响应和高可靠性;OLAP 是联机分析处理数据库,用于复杂分析查询,处理大量复杂只读查询,对算力和数据吞吐量要求高。数据仓库属于 OLAP 型,是 OLAP 数据库场景的延伸和发展,它是战略级工具,用于商业智能和决策支持,帮助企业从大量数据中获有价值信息,增加洞察能力,终极目的是增加收入、提升效率、降低成本。现在很多企业的数字可视化大屏背后就有数据仓库支持。
“面向主题”方面,传统数据库围绕具体工作组织数据,数据仓库则按主题组织,主题是特定业务领域或分析目标,其数据是多个传统数据库的集合和“拉通”,提供更全面呈现,更适合支持管理者决策分析。
“集成”指数据仓库可整合来自多个不同数据源的数据,包括结构化、半结构化和非结构化数据,以提供更全面视角服务于分析和决策,不过主要还是以结构化数据为主。
“相对稳定”意味着数据一旦加载到数据仓库,通常不会更新或修改,操作主要是数据查询,架构也一般不会频繁变化。
“反映历史变化”与传统数据库不同,数据仓库保存大量历史数据,利于企业从时间维度分析业务发展趋势。
以超市为例,超市有多个基于传统数据库的系统,如收银台记录交易、库存系统记录商品信息、会员系统、购物卡系统等,数据分散杂乱。将所有系统数据整理、按主题分类后集中存到一个庞大系统,就是数据仓库。通过开发工具分析这些数据,能回答如“过去 5 年哪些商品在春节卖得最好?”等问题,还能以大屏形式观看数据,开放给各部门主管辅助决策创造价值。
数据仓库的架构一般包括原始数据层(ODS),用于采集和存储原始数据;数据公共层(CDM),又分为基础层 / 明细层(DWD)、汇总层 / 服务层(DWS)、公共维度层(DIM),DWD 清洗源数据,DWS 轻度汇总,DIM 保存维度信息用于建模;数据应用层(ADS),保存结果数据,为外部系统提供查询接口以满足特定商业智能、数据挖掘和报表应用。
数据仓库的工作流一般如下:首先是数据抽取,从不同数据源系统定期抽取数据以确保最新;接着是数据清洗和转换,清洗包括修正错误、去除重复项、处理缺失值等,转换是将数据转化为统一格式便于存储和查询;然后是数据建模,采用特定数据模型组织和存储数据,选择合适模型可简化查询和分析过程、提高查询性能,有代表性的建模方法论是 Ralph Kimball 的维度建模方法论和 Bill Inmon 建模方法论,还涉及元数据概念,元数据描述数据仓库内数据的结构、位置和建立方法,便于管理和使用;之后是数据存储,采用大容量、高性能存储系统,存储结构针对查询性能优化,如列式存储、索引等;再是数据加载,著名的 ETL 三板斧,抽取、转换和加载后的数据会被加载到数据仓库,还可能进一步加工以优化查询性能,数据加载分全量加载和增量加载两种方式根据需求选择;最后是数据访问与分析,数据仓库支持各种数据分析和报表工具,用户可通过这些工具深入分析数据找到规律和趋势,它不仅支持宏观趋势分析,也支持微观细节探究,能满足各层级需求;同时在使用过程中要注意数据安全和访问控制,确保数据安全性和合规性,防止数据泄露和滥用。
数据集市可认为是数据仓库的子集,是专用于特定业务部门或功能的数据系统,数据从数据仓库提取并进一步加工。例如销售数据集市能提供详细销售报告和分析辅助销售部门决策。其优点包括规模小,易于构建和维护;数据深,能满足特定部门或用户需求提供详细深入数据支持;响应快,数据量小且针对特定需求优化,查询响应时间快;建设周期短,规模小且面向特定需求,通常数月即可实现并投入使用(数据仓库建设周期一般需数月甚至一年以上);灵活性高,数据模型和结构可根据特定需求调整;成本低,实现成本相对较低,因数据量和复杂度较数据仓库低。
数据仓库诞生几十年来技术不断发展。早期基于传统数据库产品构建,最早是离线的,数据源通过离线方式导入离线数据仓库。21 世纪引入大数据技术,通过 MapReduce、Hive、SparkSQL 等离线计算引擎进行数据处理,效率明显提升。后来发展出 Lambda 架构(离线 + 实时结合)和 Kappa 架构(批流一体)。近几年基于 MPP 数据库和数据湖的实时数仓架构出现,支持高性能并行处理和复杂查询,处理能力和效率大幅提升,能帮助企业更及时、准确决策。从部署方面看,从本地单机部署发展到分布式部署,再到云计算崛起后的云部署。这两年,很多企业研究 AI 与数据系统深度结合,探索如何让数据仓库更智能地处理和分析数据,提高准确性和可靠性,同时研究数据仓库如何更好服务于 AI 的训练和推理,发展前景广阔。