前言:
现时大家对“数据库和数据仓库的不同之处”都比较珍视,朋友们都想要了解一些“数据库和数据仓库的不同之处”的相关知识。那么小编在网摘上网罗了一些有关“数据库和数据仓库的不同之处””的相关内容,希望大家能喜欢,咱们快快来了解一下吧!视频加载中...
以往我们和客户的沟通过程中,大家经常会问到这样的一个问题,数据库和数据仓库有什么区别,我这里简单讲解一下:
首先,数据仓库实际上就是数据库,也是由一张一张的数据表组成的,本质上没有任何区别,都是存放数据的。
要说差别呢,可以从这几个角度来描述:
第一, 数据库通常服务于业务,数据仓库通常服务于分析。我们通常所提到的数据库一般都是服务于业务应用软件的,不管这些软件是B/S架构还是C/S架构,例如企业里面常用到的ERP系统、OA系统,或者像我们手机上的点餐APP、网上购票的APP等等。特点都是用户在这些软件系统上操作,比如登录、填写个人的信息、修改个人资料、查询一条记录等等,数据通过这些软件程序和背后的数据库进行交互,在底层的数据表上进行增删改查的操作。所以,通常这些数据库是服务于各种各样跑在操作系统之上的各种业务系统、应用软件,更多的面向业务流程、业务管理。
数据仓库就不一样了,很少有什么业务系统、分析应用是基于数据仓库来做的。更多的是通过各种BI可视化分析工具、ETL工具来访问数据仓库,最终是面向报表查询,数据分析服务的。
第二, 数据库的数据来源来自各种业务系统软件程序的产生的数据,或者是由和这些业务系统软件交互的用户产生的数据。而数据仓库的数据来源则直接是这些业务系统的一个或者多个数据库或者文件,比如SQL Server、Oracle、MySQL、Excel、文本文件等。也可以简单理解为很多个业务系统的数据库往数据仓库输送数据,是各个数据库的集合体,数据仓库的建立是基于这些数据库之上的。
第三, 数据库在设计的时候很少存放历史数据,通常只是描述某一个业务时刻的数据,随着业务系统的变化而变化;数据仓库为了分析的目的会存放大量的历史数据,因为是每天抽取业务系统数据库的数据每天存放起来,大部分的数据都是静态的。
第四, 最核心的区别在于建模方式和数据的冗余。业务系统的数据库为了实现一个业务流程,在表的设计上通常采用的是三范式3NF建模方式,最小原子列不可细分、主外键等,通过一对多或者多对多的形式,减少数据冗余。而数据仓库在建模方式上既有三范式3NF建模,也有维度建模比如星型或雪花型的建模方式,通常一般都是使用Kimball 的维度建模。那么这种建模的方式都是反规范性设计的,保留了大量的数据冗余,为了查询的效率。所以,业务系统的数据库更多的是增删改操作,而数据仓库更多的是查询操作,这就决定了建模方式会有很大的差异。一个是面向业务流程,一个是面向分析服务。同时,为了底层架构的稳定性和健壮性,数据仓库还会进行底层表的分层设计,比如经常看到的ODS 层、Staging 层、Trans 层、Dimension 层、Fact 层、Data Mart 层等,都是为了分析的需要而进行设计。
所以,简单总结。数据仓库的本质仍然是数据库,只是为了BI建设和分析的目的在底层表与表的关系建模设计上和传统基于业务系统的数据库建模设计上有很大的差异。传统数据库多增删改,数据仓库多查询分析。传统数据库服务于业务流程,通过业务软件来访问;数据仓库服务于BI分析,通过BI分析软件来访问。
标签: #数据库和数据仓库的不同之处 #数据库与数据仓库有什么不同 #数据库与数据仓库区别 #数据库与数据仓库的区别与联系