数据仓库中,business key是指与业务相关的那些主键或少数标识符,通常由业务领域专家确定。它是用于标识业务实体或事务的关键属性,可以帮助将数据转换为可分析的形式,并且为数据集成提供了一个很好的起点。
一、数据仓库中,什么是business key
在数据仓库中,Business key(业务键)是指与业务相关的那些主键或少数标识符,通常由业务领域专家确定。它是用于标识业务实体或事务的关键属性,例如客户姓名、订单编号、产品代码等。
在数据仓库建模中,Business key是一个重要的概念,因为它可以帮助将数据转换为可分析的形式并且为数据集成提供了一个很好的起点。通常,数据仓库和数据仓库中的数据模型都是基于业务键而不是原始数据库中的物理主键来设计的。
二、数据仓库概述
1、数据仓库诞生的原因
- 历史数据积存:历史数据使用频率过低,堆积在业务数据库中,会导致查询性能下降
- 企业数据分析需要:各个部门自己建立独立的数据抽取系统,导致数据不一致,资源 浪费严重,数据库权限也会存在风险
2、数据仓库的基本概念
数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库顾名思义,是一个很大的数据存储集合,出于企业的分析性报告和决策支持目的而创建,对多样的业务数据进行筛选与整合。它为企业提供一定的BI(商业智能)能力,指导业务流程改进、监视时间、成本、质量以及控制。
数据仓库将各个异构的数据源数据库的数据给统一管理起来,并且完成了质量较差的数据的剔除、格式转换,最终按照一种合理的建模方式来完成源数据组织形式的转变,以更好的支持到前端的可视化分析。数据仓库的输入方式是各种各样的数据源,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向。
3、数据仓库的主要特征
数据仓库是面向主题的(Subject-Oriented )、集成的(Integrated)、稳定的(Non-Volatile)和时变的(Time-Variant )数据集合,面向数据分析,用以支持管理决策。
- 主题性:不同于传统数据库对应于某一个或多个项目,数据仓库根据使用者实际需求,将不同数据源的数据在一个较高的抽象层次上做整合,所有数据都围绕某一主题来组织。
- 集成性:数据仓库中存储的数据是来源于多个数据源的集成,原始数据来自不同的数据源,存储方式各不相同。要整合成为最终的数据集合,需要从数据源经过一系列抽取、清洗、转换的过程。
- 稳定性:数据仓库中保存的数据是一系列历史快照,不允许被修改。用户只能通过分析工具进行查询和分析。这里说明一点,数据仓库基本上是不许允许用户进行修改,删除操作的。大多数的场景是用来查询分析数据。
- 时变性:数据仓库会定期接收新的集成数据,反应出最新的数据变化。这和稳定特点并不矛盾。
另外说明,上面我们已经说了数据仓库中的历史数据是不能修改的,那我们每天修改或新增的数据,从业务数据库中导入数据仓库中,可以以时间戳标记版本来标记最新数据,老旧的数据就可以定期删除,保证数据分析的准确性。
4、数据仓库分层架构
按照数据流入流出的过程,数据仓库架构可分为三层——源数据、数据仓库、数据应用。
数据仓库的数据来源于不同的源数据,并提供多样的数据应用,数据自下而上流入数据仓库后向上层开放应用,而数据仓库只是中间集成化数据管理的一个平台。
- 源数据层(ODS): 操作性数据(Operational Data Store) ,是作为数据库到数据仓库的一种过渡,ODS的数据结构一般与数据来源保持一致,可以增加字段用来进行数据管理,存储的历史数据只是只读的,提供业务系统查询使用, 而且ODS的数据周期一般比较短。ODS的数据为后一步的数据处理做准备。
- 数据仓库层(DW):数据仓库(Data Warehouse),是数据的归宿,这里保持这所有的从ODS到来的数据,并长期保存,而且这些数据不会被修改,DW层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。
- 数据应用层(DA):数据应用(Data Application),为了特定的应用目的或应用范围,而从数据仓库中独立出来的一部分数据,也可称为部门数据或主题数据,该数据面向应用。如根据报表、专题分析需求而计算生成的数据。
5、数据仓库之ETL
建立OLAP应用之前,我们要想办法把各个独立系统的数据抽取出来,经过一定的转换和过滤,存放到一个集中的地方,成为数据仓库。这个抽取,转换,加载的过程叫ETL(Extract, Transform,Load),目的是将企业中分散、零乱、标准不统一的数据整合到一起。
ETL是数据仓库的流水线,也可以认为是数据仓库的血液,它维系着数据仓库中数据的新陈代谢,而数据仓库日常的管理和维护工作的大部分精力就是保持ETL的正常和稳定。
6、与数据库的区别
- 数据库是面向事务的设计,数据仓库是面向主题设计的。
- 数据库一般存储业务数据,数据仓库存储的一般是历史数据。
- 数据库设计是尽量避免冗余,一般针对某一业务应用进行设计,比如一张简单的User表,记录用户名、密码等简单数据即可,符合业务应用,但是不符合分析。数据仓库在设计是有意引入冗余,依照分析需求,分析维度、分析指标进行设计。
- 数据库是为捕获数据而设计,数据仓库是为分析数据而设计。
延伸阅读1:数据仓库使用的主要技术
- 并行:计算的硬件环境、操作系统环境、 数据库管理系统和所有相关的数据库操作、查询工具和技术、应用程序等各个领域都可以从并行的最新成就中获益。
- 分区:分区功能使得支持大型表和索引更容易,同时也提高了数据管理和查询性能。
- 数据压缩:数据压缩功能降低了数据仓库环境中通常需要的用于存储大量数据的磁盘系统的成本,新的数据压缩技术也已经消除了压缩数据对查询性能造成的负面影响。