数仓和mysql的区别_数据库和数据仓库的区别和联系
數據庫與數據倉庫的區別和聯系https://www.zhihu.com/video/1252167793992593408
在以往我們和客戶的溝通過程中,大家經常會問到這樣的一個問題,數據庫和數據倉庫有什么區別,我這里簡單講解一下:
首先,數據倉庫實際上就是數據庫,也是由一張一張的數據表組成的,本質上沒有任何區別,都是存放數據的。
要說差別呢,可以從這幾個角度來描述:
第一, 數據庫通常服務于業務,數據倉庫通常服務于分析。我們通常所提到的數據庫一般都是服務于業務應用軟件的,不管這些軟件是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分析軟件來訪問。
總結
以上是生活随笔為你收集整理的数仓和mysql的区别_数据库和数据仓库的区别和联系的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: python为text添加滚动条_动态创
- 下一篇: mysql5.7环境搭建_mysql5.
