由于数据库面向日常事务处理,不适合进行分析处理,一种新的技术应运而生,这就是数据仓库技术。数据仓库技术是公认的信息利用的最佳解决方案,它不仅能够从容解决信息技术人员面临的问题,同时也为商业用户提供了很好的商业契机。
数据仓库并不是一个独立的个体,而是与整个大数据体系融为一体,换句话说,大数据是一个巨人,而数据仓库则是巨人的心脏,相互依赖。在这一节里,我们将讨论数据仓库的系统设计方法,建设数据仓库的三级数据模型,如何提高数据仓库的物理性能,以及数据仓库的元数据等有关内容。
数据仓库的数据具有四个基本特征:面向主题的、集成的、不可更新的、随时间不断变化的。这些特点说明了数据仓库从数据组织到面向分析的数据处理都与原来的数据库有较大区别,这决定了我们在进行数据仓库系统设计时,不能够照搬原来传统的数据库系统开发方法,因而需要寻找一个适于数据仓库设计的方法。
所谓数据模型,就是对现实世界进行抽象的工具,抽象的程度不同,也就形成了不同抽象级别层次上的数据模型。数据仓库的数据模型与操作型数据库的三级数据模型又有一定的区别,主要表现在:
(1) 数据仓库的数据模型中不包含纯操作型的数据。
(2) 数据仓库的数据模型扩充了码结构,增加了时间属性作为码的一部分。
(3) 数据仓库的数据模型中增加了一些导出数据。
可以看出,上述三点差别也就是操作型环境中的数据与数据仓库中的数据之间的差别,同样是数据仓库为面向数据分析处理所要求的。虽然存在着这样的差别,在数据仓库设计中,仍然存在着三级数据模型,即概念模型、逻辑模型和物理模型。
概念模型是主观与客观之间的桥梁,它是一个概念性的工具,用于设计系统、收集信息。
具体到计算机系统来说,概念模型是客观世界到机器世界的一个中间层次。人们首先将现实世界抽象为信息世界,然后将信息世界转化为机器世界,信息世界中的这一信息结构,即是我们所说的概念模型。
概念模型最常用的表示方法是使用E-R图作为它的描述工具。E-R图描述的是实体以及实体之间的联系,在E-R图中,长方形表示实体,在数据仓库中就表示主题,在长方形内写上主题名;椭圆形表示主题的属性,并用无向边把主题与其属性连接起来;用菱形表示主题之间的联系,菱形框内写上联系的名字。用无向边把菱形分别与有关的主题连接,给无向边标记上联系的类型。若主题之间的联系也具有属性,则把属性和菱形也用无向边连接上。
由于E-R图具有良好的可操作性,形式简单,易于理解,便于与用户交流,对客观世界的描述能力也较强,在数据库设计方面更得到了广泛的应用。因为目前的数据仓库一般建立在关系数据库的基础之上,为了和原有数据库的概念模型相一致,采用E-R图作为数据仓库的概念模型仍然是较为合适的。
在数据仓库的设计中采用的逻辑模型就是关系模型。无论是主题还是主题之间的联系,都用关系来标识。关系模型概念简单、清晰,用户易懂、易用,有严格的数学基础和在此基础上发展的关系数据理论;关系模型简化了程序员的工作和数据仓库设计开发的工作,当前比较成熟的商品化数据库产品都是基于关系模型的。因此采用关系模型作为数据仓库的逻辑模型是合适的。数据仓库的逻辑模型描述了数据仓库的主题的逻辑实现,即每个主题所对应的关系表的关系模式的定义。
所谓数据仓库的物理模型就是逻辑模型在数据仓库中的实现,如物理存取方式、数据存储结构、数据存放位置以及存储分配等等。物理模型是在逻辑模型的基础之上实现的,在进行物理模型设计实现时,所考虑的主要因素有:I/O存取时间、空间利用率和维护代价;在进行数据仓库的物理模型设计时,考虑到数据仓库的数据量大,但是操作单一的特点,可采取其他的
一些提高数据仓库性能的技术,如:合并表、建立数据序列、引入冗余、进一步细分数据、生成导出数据、建立广义索引等等。
建立数据仓库过程中的一个重要问题是如何提高系统的性能。因为数据仓库的数据量很大,分析处理时涉及的数据范围也较广,往往涉及大规模数据的查询。提高系统性能,主要是要提高系统的物理I/O性能,因为I/O瓶颈常成为影响系统性能的主要因素。在数据仓库的设计中,应尽量减少每次查询处理要求的I/O次数,而使每次I/O又能返回尽量多的记录。事实上,由于数据仓库的数据极少甚至不再更新,数据仓库的物理设计可以有更多的方法和途径来提高系统性能。下面介绍粒度划分和数据分割。
1)粒度划分
对数据仓库开发者来说,划分粒度是设计过程中最重要的问题之一。所谓粒度指数据仓库中数据单元的详细程度和级别。数据越详细,粒度越小级别就越低;数据综合度越高,粒度越大级别就越高。在传统的操作型系统中,对数据的处理和操作都是在详细数据级别上的,即最低级的粒度。但是在数据仓库环境中主要是分析型处理,粒度的划分将直接影响数据仓库中的数据量以及所适合的查询类型。一般需要将数据划分为:详细数据、轻度总结、高度总结三级或更多级粒度。不同粒度级别的数据用于不同类型的分析处理。粒度的划分是数据仓库设计工作的一项重要内容,粒度划分是否适当是影响数据仓库性能的一个重要方面。
2)数据分割
数据分割是数据仓库设计的另一项重要内容,是提高数据仓库性能的一项重要技术。数据的分割是指把逻辑上是统一整体的数据分割成较小的、可以独立管理的物理单元进行存储,以便于重构、重组和恢复,以提高创建索引和顺序扫描的效率。数据的分割使数据仓库的开发人员和用户具有更大的灵活性。数据仓库中数据分割的概念与数据库中的数据分片概念是相近的。数据库系统中的数据分片有水平分片、垂直分片、混合分片和导出分片多种方式。水平分片是指按一定的条件将一个关系按行分为若干不相交的子集,每个子集为关系的一个片段;垂
直分片是指将关系按列分为若干子集,垂直分片的片段必须能够重构原来的全局关系。在进行数据仓库设计时需要把数据分割与粒度划分结合起来考虑。
数据仓库中的元数据就是关于数据的数据,它描述了数据的结构、内容、码、索引等项内容,传统数据库中的数据字典是一种元数据,但在数据仓库中,元数据的内容比数据库中的数据字典更丰富、更复杂。设计一个描述能力强、内容完善的元数据,是有效管理数据仓库的具有决定意义的重要前提。因此元数据的设计在整个数据仓库设计中占有重要的地位,是数据仓库设计的一个重要组成部分。
数据仓库中的元数据的重要性表现在:
(1) 大数据平台通过直接读写处理业务数据,除此之外的数据都是元数据,例如任务之间的权限映射关系,数据的业务属性,数据占用的磁盘空间等等。这些元数据能够帮助用户更加高效地分析数据,有助于系统和业务的优化以及数据质量的保证。
(2) 操作型环境和数据仓库环境之间有着复杂的、多方面的区别,因此从操作型环境到数据仓库的数据转换也是复杂的、多方面的。元数据应包含对这种转换的描述。元数据要将这种转换清晰地表示出来,把从哪些数据源用怎样的转换逻辑转换成数据仓库中的哪些目的数据等内容描述出来。这样,当从数据仓库向数据库回溯时,便能够根据数据变换的历史,找到原始依据。数据仓库的元数据还要将这种转换管理起来,既保证这种转换是正确的、适当的或合理的,又要使其是可变的、灵活的,事实上,因为用户需求是不确定的,只有保证元数据的灵活
性、可变性,才能真正保证其合理性和正确性。
(3)除了描述和管理从数据库到数据仓库的转换外,数据仓库的元数据当然还要管理好数据仓库中的数据。一方面,数据仓库中的数据量很大,划分不同的粒度层次、进行分割策略的选择、建立各种各样的索引等等,都需要在元数据中进行描述和管理;另一方面,数据仓库中包含着较长时期内的数据,不同时期不同的需求使得其数据从形式到内容都可能不同。元数据的内容在数据仓库设计、开发、实施以及使用过程中不断完善,为大数据平台(如Hadoop、HBase)维持整个系统运转所需要的信息与数据。