当前位置:网站首页>一篇文章讲清楚!数据库和数据仓库到底有什么区别和联系?
一篇文章讲清楚!数据库和数据仓库到底有什么区别和联系?
2022-07-31 13:43:00 【派可数据BI可视化】
有位做数据分析的小伙伴问我:老师,你们做商业智能BI的总在讲数据仓库、数据仓库,我感觉在数据仓库上还是跟其它数据库一样操作写SQL就可以跑一些数据出来,感觉跟数据库没有什么区别啊,他们的区别到底在哪里啊?
数据库和数据仓库的区别
事实上,数据仓库和数据库的区别到底在哪里,这个问题其实很多很多人也问过,简单来说:数据仓库的本质就是数据库,存储方式都是一样的。只是两者的定位和服务对象不同、内部的数据组织形式不同。
可以从这几个角度来描述:
第一, 数据库通常服务于业务,数据仓库通常服务于分析。我们通常所提到的数据库一般都是服务于业务应用软件的,不管这些软件是 B/S 架构还是 C/S 架构,例如企业里面常用到的 ERP 系统、OA 系统,或者像我们手机上的点餐 APP、网上购票的 APP 等等。
这些业务系统的特点都是用户在这些软件系统上操作,比如登录、填写个人的信息、修改个人资料、查询一条记录等等,数据通过这些软件程序和背后的数据库进行交互,在底层的数据表上进行增删改查的操作。所以,通常这些数据库是服务于各种各样跑在操作系统之上的各种业务系统、应用软件,更多的面向业务流程、业务管理。
业务数据 - 派可数据商业智能BI可视化分析平台
数据仓库就不一样了,它不是服务于业务信息化系统的,它是服务于分析型应用的。更多的是通过各种商业智能BI前端可视化分析工具或者报表工具来访问数据仓库,最终是面向报表查询,数据分析服务的。
第二,数据库的数据来源来自各种业务系统软件程序的产生的数据,或者是由和这些业务系统软件交互的用户产生的数据,而数据仓库的数据来源则直接是这些业务系统的一个或者多个数据库或者文件,比如 SQL Server、Oracle、MySQL、Excel、文本文件等。也可以简单理解为很多个业务系统的数据库往数据仓库输送数据,是各个数据库的集合体,一个更大的数据库,数据仓库的建立是要打通这些基础数据库的数据的。
商业智能BI - 派可数据商业智能BI可视化分析平台
第三, 数据库在设计的时候很少存放历史数据,通常只是描述某一个业务时刻的数据,随着业务系统的变化而变化。数据仓库为了分析的目的会存放大量的历史数据,因为是每天抽取业务系统数据库的数据每天存放起来,大部分的数据都是静态的。
第四, 最核心的区别在于建模方式和数据的冗余。业务系统的数据库为了实现一个业务流程,在表的设计上通常采用的是三范式 3NF 建模方式,最小原子列不可细分、主外键等,通过一对多或者多对多的形式,减少数据冗余。而数据仓库在建模方式上既有三范式 3NF 建模,也有维度建模比如星型或雪花型的建模方式,通常一般都是使用 Kimball 的维度建模。
建模方式 - 派可数据商业智能BI可视化分析平台
像Kimball的这种维度建模的方式都是反规范性设计的,保留了大量的数据冗余,为了查询的效率。所以,业务系统的数据库更多的是增删改操作,而数据仓库更多的是查询操作,这就决定了建模方式会有很大的差异。一个是面向业务流程,一个是面向分析服务。
同时,为了底层架构的稳定性和健壮性,数据仓库还会进行底层表的分层设计,比如经常看到的 ODS 层、Staging 层、Trans 层、Dimension 层、Fact 层、Data Mart 层等。这种分层的好处就是解耦,隔离底层业务系统的变化对上层模型以及页面的影响,也便于后期的数据维护。
数据仓库 - 派可数据商业智能BI可视化分析平台
简单总结一下:数据仓库的本质仍然是数据库,只是服务对象不同。一个是服务于业务系统,一个是服务于商业智能BI可视化分析。服务对象的不同决定了数据库底层的数据组织形式主要是以三范式建模,来适应业务系统频繁增删改的需要。
而数据仓库为了业务分析的目的,因此需要拉通各个业务系统数据库的数据,保留大量历史数据,同时为了分析效率的提升改变了传统数据库的数据组织形式,例如利用适合于分析型模型的Kimball维度建模方式来组织底层数据架构。数据库服务于业务流程,通过业务软件来访问;数据仓库服务于商业智能BI分析,通过商业智能BI前端可视化分析工具来访问。
边栏推荐
- PHP Serialization: eval
- [RPI]树莓派监控温度及报警关机保护「建议收藏」
- 报错IDEA Terminated with exit code 1
- 网络协议及相关技术详解
- 已解决(pymysqL连接数据库报错)pymysqL.err.ProgrammingError: (1146,“Table ‘test.students‘ doesn‘t exist“)
- C#控件StatusStrip使用
- ICML2022 | Fully Granular Self-Semantic Propagation for Self-Supervised Graph Representation Learning
- 拥塞控制,CDN,端到端
- Text similarity calculation (Chinese and English) detailed explanation of actual combat
- Error: npm ERR code EPERM
猜你喜欢
拥塞控制,CDN,端到端
Install the latest pytorch gpu version
C#高级--委托
Invalid bound statement (not found)出现的原因和解决方法
Grab the tail of gold, silver and silver, unlock the programmer interview "Artifact of Brushing Questions"
机器学习模型验证:被低估的重要一环
ECCV 2022 | 机器人的交互感知与物体操作
ICML2022 | 面向自监督图表示学习的全粒度自语义传播
八大排序汇总及其稳定性
技能大赛训练题:域用户和组织单元的创建
随机推荐
网络层重点协议——IP协议
Detailed explanation of network protocols and related technologies
技能大赛训练题:交换机的远程管理
技能大赛dhcp服务训练题
Solution for browser hijacking by hao360
AI cocoa AI frontier introduction (7.31)
ECCV2022:在Transformer上进行递归,不增参数,计算量还少!
C# control ToolStripProgressBar usage
VU 非父子组件通信
Install the latest pytorch gpu version
0X7FFFFFFF,0X80000000「建议收藏」
报错:npm ERR code EPERM
The cluster of safe mode
endnote引用
Open Inventor 10.12 重大改进--和谐版
PHP Serialization: eval
20.nn.Module
自制的数据库安全攻防题,相关靶机自己制作
pytorch gpu版本安装最新
Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)