數據庫與數據倉庫的區別

首先,定義三個概念:數據庫軟件、數據庫、數據倉庫。
數據庫軟件:是一種軟件,可以看得見,可以操作。用來實現數據庫邏輯功能。屬於物理層。
數據庫:是一種邏輯概念,用來存放數據的倉庫。通過數據庫軟件來實現。數據庫由很多表組成,表是二維的,一張表裏可以有很多字段。字段一字排開,對應的數據就一行一行寫入表中。數據庫的美,在於能夠用二維表現多維關係。目前市面上流行的數據庫都是二維數據庫。如:Oracle、DB2、MySQL、Sybase、MS SQL Server等。
數據倉庫:是數據庫概念的升級。從邏輯上理解,數據庫和數據倉庫沒有區別,都是通過數據庫軟件實現的存放數據的地方,只不過從數據量來說,數據倉庫要比數據庫更龐大得多。數據倉庫主要用於數據挖掘和數據分析。
接下來,就是詳細說明了。在IT的架構體系中,數據庫是必須存在的。必須要有地方存放數據。比如現在的網購,淘寶,京東等等。物品的存貨數量,貨品的價格,用戶的賬戶餘額之類的。這些數據都是存放在後臺數據庫中。或者最簡單理解,我們現在微博,QQ等賬戶的用戶名和密碼。在後臺數據庫必然有一張user表,字段起碼有兩個,即用戶名和密碼,然後我們的數據就一行一行的存在表上面。當我們登錄的時候,我們填寫了用戶名和密碼,這些數據就會被傳回到後臺去,去跟表上面的數據匹配,匹配成功了,你就能登錄了。匹配不成功就會報錯說密碼錯誤或者沒有此用戶名等。這個就是數據庫,數據庫在生產環境就是用來幹活的。凡是跟業務應用掛鉤的,我們都使用數據庫。
而數據倉庫則是BI下的其中一種技術。由於數據庫是跟業務應用掛鉤的,所以一個數據庫不可能裝下一家公司的所有數據。數據庫的表設計往往是針對某一個應用進行設計的。比如剛纔那個登錄的功能,這張user表上就只有這兩個字段,沒有別的字段了。但是這張表符合應用,沒有問題。但是這張表不符合分析。比如我想知道在哪個時間段,用戶登錄的量最多?哪個用戶一年購物最多?諸如此類的指標。那就要重新設計數據庫的表結構了。對於數據分析和數據挖掘,我們引入數據倉庫概念。數據倉庫的表結構是依照分析需求,分析維度,分析指標進行設計的。數據倉庫的數據來源於那些後臺持續不停運作的數據庫表。數據的搬運就牽涉到另一個技術叫ETL。這個過程就是數據從一個數據庫到了數據倉庫。舉個例子:
一家公司有5個分公司,月末要進行財務統計。那每家分公司都有自己的數據庫可對自己分公司進行數據統計,可是,這5家分公司各自數據庫的表結構設計都不同。可以理解爲數據庫中的表的數量不同,表中的字段也不同。如果要統計整個公司,那勢必要制定統一標準。那就用到數據倉庫,數據倉庫作爲一個新的彙總數據庫,定義表的數量和字段內容。那各家分公司就要根據總公司的標準將自己數據庫中的數據向總公司的字段安排靠攏。當然這個過程就交給ETL中的T來完成,transform轉換。E是extract,L是load。抽取,導入。那這樣,數據就被運送到數據倉庫中了。統計學告訴我們,樣本要足夠多,得出的結論才能更準確,更具普遍性。這也就是要將各地的數據庫數據彙總到一個數據倉庫之中的原因。
數據倉庫所用的數據庫軟件,聽的比較多的是Teradata。用下來感覺Teradata也是很強悍的。數據倉庫對於數據軟件的要求是非常高的,對硬件要求也高,所以能夠用得起數據倉庫的公司都是有錢的主。Teradata是軟件與硬件綁定的。也就是說TD公司會給你送來一個大機櫃,裏面是一臺計算機服務器和存儲設備。服務器中已經安裝好數據庫軟件了。數據挖掘,數據統計映射到數據庫軟件這裏的操作,就是排序和分組。對於海量數據庫來說,排序是很可怕的事情。數據倉庫每天將承受住大量的外來數據往庫裏插入,往數據庫裏插數據,也是很慢的。所以數據倉庫的技術在於調優,架構不解決更本性問題。而普通生產數據,可以通過架構來調整,相對來說更注重HA,一般做數據庫集羣。

題外話,集羣就是雲計算的底層架構實現。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章