提到数据库,各位首先想到的应该是Oracle、DB2、MySQL、SQLServer这种关系型数据库(RelationalDatabase),所以下文所称数据库如不加说明均指关系型数据库。
大多数企业机构的IT系统中,基本都使用数据库表结构来设计数据物理模型,这是从应用系统的业务角度来看。实际上,从数据库自身角度出发,它所提供的表、字段、数据行是为了实现外界访问而提供的逻辑模型,真正的数据物理模型是操作系统文件。
标准SQL访问能力,但底层实现并不相同多维数据库与数据库类似,都属于对数据进行存储与管理的基础软件。它为访问者提供的数据模型是维度与数据立方体(或称数据集市),同样,维度与数据立方体也是一种对外提供访问能力的逻辑模型,数据的真正物理结构还是存在于操作系统文件中。
Dimension与Cube经典图三维空间中的立方体结构可以很形象的表现出多维数据库的逻辑模型,而真正多维数据库能够处理的维度数量应该是不限的。在头脑中想象出更高维度空间中的超立方体形状是很难的,好在虽然多维数据库的实现原理相当之复杂,但使用起来却相当简单。
多维数据库产品数量不像关系数据库那么多,主要应用领域与关系数据库(主要应用于业务级别的增删改查操作)也不尽相同,多维数据库主要用于数据分析。
关系数据库使用SQL作为查询语言,多维数据库则利用MDX作为查询语言,MDX与SQL看上去非常类似,这会造成一些混淆,文章后部会讲解。
MDX与SQL在讲数据仓库之前,先来说说仓库。
仓库是什么?这个问题估计任何人都可以回答,而且答案也很一致。无论是物流仓库、制造车间零部件仓库或是商场存货仓库,无论仓库是大是小,其最基本且最主要功能都是有序、妥善的保管仓库中的物品。
数据仓库顾名思义,就是数据的仓库。
与前文所述的关系数据库和多维数据库不同,数据仓库并不是一种基础软件,也并没有一种称之为数据仓库的软件产品。数据仓库本身是一个概念,当一个可以对数据进行有序管理、快速查询的数据存储体系被建立起来,就可以说这是一个数据仓库。
绝大多数数据仓库的建设目的都是为了进行数据分析与挖掘,基本都是基于关系数据库与多维数据库建立,由于目前数据存储方式的多样化,也有其他的方案,如分布式数据存储或微服务数据管理系统。
数据仓库下文以一个数据分析体系的演变过程来说明数据库、多维数据库、数据仓库的关系。
第一阶段。
企业信息化达到一定程度之后,一定会有报表的需求,此时直接从业务系统的数据库进行查询。
第二阶段。
直接查询业务系统数据库,很容易对业务系统造成影响,这时可能会将数据抽取出来,放在一个镜像数据库里进行查询。
第三阶段。
当数据规模越来越大,报表与数据分析的需求也随之增多。开始对数据进行系统化的规划与管理时,数据仓库的雏形也已建立起来。
关系型数据库的星形(或雪花型)结构是数据仓库的常见形式之一,但不是唯一的形式,只要能做到将数据有序管理,基本上就可以称之为数据仓库。
当建立起心形或雪花型的数据仓库的时候,已经可以做一些基本的数据分析了。但是会有一些弊端。星形或水上行结构虽然模拟了多维数据模型,但是其本质上还是关系型数据库的表字段以及数据行的模型。无法做到真正意义上的面对业务时的数据分析。而且这种直接建立在关系型数据库之上的模型,很难让业务人员自主进行数据分析。
第四阶段。
基于关系数据库星型或雪花型结构所建立的数据仓库,虽然可以进行数据分析,但分析能力不强。
星型或雪花型结构虽然模拟了多维数据模型,但其本质上还是关系型数据库的表及字段模型,无法做到真正意义上面向业务的数据分析,而且这种直接建立在关系型数据库之上的模型,很难让业务人员独立进行数据分析。
第五阶段。
由于多维数据库维度既业务的特性,所以基于多维数据库所建立的数据体系的分析能力要强很多,而且也能将让业务人员自主分析这一目标落地实现。
多维数据库向外提供维度与数据集市模型,数据的实际物理存储则对外屏蔽。关系型数据库可以作为多维数据库的一种底层实现,当然还有其他的方式,比如数据块文件、分布式存储等。
前文我们提到过关系型数据库的星型(或雪花型)结构容易与多维数据库的维度与数据立方体结构产生一些混淆,主要是由于以下两点原因:
多维数据库可以使用关系数据库作为数据实际存储方案;多维数据库的MDX与关系数据库的SQL在语法结构上的类似。
以上两点原因使得在关系数据库的星型(或雪花型)模型上使用SQL进行查询被误认为是可以进行多维分析的,实际上这是非常错误的认识,原因在于表及字段模型和维度及数据立方体模型本质上的区别。
正是由于以上混淆的地方,使得很多的数据仓库和商业智能系统的实际效果不如预期。
关于多维数据库,传统的划分方式有ROLAP、MOLAP、HOLAP,现在随着大数据概念的兴起,分布式数据存储与微服务架构已经成为了多维数据库的新的实现方式,相关内容会在后续文章中发布。
都看到这里了!难道还不