数据库和数据仓库有什么区别?
有时我们在向客户介绍商业智能BI的时候,特别是客户第一次听到数据仓库的概念,感觉就分不清数据库和数据仓库的区别和联系,我这里简单讲解一下:
第一, 先说下数据库,数据库是一组存放数据的文件,这些文件存放在我们的硬盘上。通过运行在操作系统之上的数据库管理系统 DBMS,可以访问到数据库文件,以这种可视化的操作界面来看到表、行、列、视图、存储过程和查询数据等。 像我们提到的 SQL Server、Oracle、MySQL,这些都是数据库,也可以理解为数据库管理系统,一个数据库管理系统可以管理多个数据库,就是管理多组数据文件。
第二, 数据库的作用简单理解就是用来存放业务软件的数据,比如ERP系统、OA系统、CRM系统,这些系统用户登录上去在里面录入数据,这些录入的数据就进入到数据库中,写入到一张表或者不同的表。之后就可以查询,按照一定的查询规则从数据库的一张表或者多张表把数据查询出来,也可以修改,也可以删除。所有的数据处理都是通过这些软件系统,程序和数据库进行数据的交互。
第三, 数据仓库的本质也是一个数据库,也是用来存放数据的,但数据仓库不会有专门对应的业务系统软件入口和数据仓库中的数据进行交互。更多的时候是通过BI可视化的方式对数据仓库的数据做查询,之后再来展现。
第四, 数据仓库的数据来源也是来自各个业务软件系统下的数据库,可以将一个数据库或者多个数据库中的数据抽取到数据仓库,按照业务的需求对数据进行清洗、整合、合并或者计算等等。
第五, 数据库主要面向业务过程,是业务系统的基础。数据仓库主要面向分析服务,是BI系统的基础。
第六, 大部分数据库不会保留历史数据,因为通过业务系统操作底层数据库的数据,数据变了就变了,历史的数据在程序设计的时候很少会做保留,大量的增删改操作。而数据仓库通过每天定时抽取业务系统中数据库的数据,可以保留历史数据,为的是以后的分析目的。因此数据仓库中,很少有删改数据的操作,更多的是通过BI分析工具来做查询。
第七, 数据库为了业务需要,在设计底层表之间的结构关系的时候,按照三范式建模3NF,形成表之间的一对多,多对多等关系,避免数据冗余。数据仓库为了分析要求,在设计底层表之间的关系时也可以按照三范式建模,但更多的时候采用维度建模。并且通常为了架构的健壮性和可扩展性,也会采用分层的模式,比如ODS层、DIENSION 维度层、FACT 事实层、数据集市 DATA MART 层等,这个分层只是从逻辑上划分的,实际上还是数据库的表,只是通过表的命名去做一些区分。
所以简单总结,数据库面向业务系统、业务过程,少有保留历史数据,多增删改,三范式建模,通过业务系统来访问;数据仓库面向分析目的,多查询,会从一个或者多个数据库抽取数据,会保留历史数据,可以用三范式建模或者维度建模,通过BI前端可视化软件来访问。本质上是一样,都是数据库,只是组织形式、使用用途、面向软件不同。
–by packingdata