數據庫和數據倉庫的區別

在學習和使用Hive的時候,把Hive定義爲數據倉庫而不是數據庫。都是用於數據存儲的地方,爲什麼把hive定義爲數據倉庫,而不是數據庫呢?那數據庫和數據倉庫有什麼區別呢?
數據庫: 主要是用於系統業務數據的存儲,且支持事務處理,更關注的是業務交易,屬於業務性數據庫。我們很熟悉的Oracle、mysql等關係型數據庫都是常用的數據庫。
數據倉庫: 主要是用於數據分析,即OLAP(On-Line Analytical Processing),支持複雜的分析操作,側重決策支持,並且提供直觀易懂的查詢結果,屬於分析性數據庫。
舉個栗子
    爲了更好理解一些,舉個最常見的電商系統例子來說:
基本每家電商公司都會經歷,從只需要業務數據庫到要數據倉庫的階段。電商入行門檻低,找個外包團隊,做了一個可以下單的網頁前端 + 幾臺服務器 + 一個MySQL,就能開門迎客了。這好比手工作坊時期。
    第二階段,流量來了,客戶和訂單都多起來了,普通查詢已經有壓力了,這個時候就需要升級架構變成多臺服務器和多個業務數據庫(量大+分庫分表),這個階段的業務數字和指標還可以勉強從業務數據庫裏查詢。初步進入工業化。
    第三個階段,隨着業務指數級的增長,數據量的會陡增,公司角色也開始多了起來,開始有了 CEO、CTO、CFO,大家需要面臨的問題越來越複雜,越來越深入。高管們關心的問題,從最初非常粗放的:“昨天的收入是多少”、“上個月的 PV、UV 是多少”,逐漸演化到非常精細化和具體的用戶的集羣分析,特定用戶在某種使用場景中,例如“20~30歲女性用戶在過去五年的第一季度化妝品類商品的購買行爲與公司進行的促銷活動方案之間的關係”。
    對於這類非常具體,且能夠對公司決策起到關鍵性作用的問題,基本很難從業務數據庫從調取出來。原因在於:業務數據庫中的數據結構是爲了完成交易而設計的,不是爲了而查詢和分析的便利設計的。業務數據庫大多是讀寫優化的,即又要讀(查看商品信息),也要寫(產生訂單,完成支付)。因此對於大量數據的讀(查詢指標,一般是複雜的只讀類型查詢)是支持不足的。 而怎麼解決這個問題,此時我們就需要建立一個數據倉庫了,公司也算開始進入信息化階段了。數據倉庫的作用在於:數據結構爲了分析和查詢的便利;只讀優化的數據庫,即不需要它寫入速度多麼快,只要做大量數據的複雜查詢的速度足夠快就行了。

其實數據庫與數據倉庫的區別實際講的是OLTP與OLAP的區別。
    操作型處理,叫聯機事務處理OLTP(On-Line Transaction Processing),也可以稱面向交易的處理系統,它是針對具體業務在數據庫聯機的日常操作,通常對少數記錄進行查詢、修改。用戶較爲關心操作的響應時間、數據的安全性、完整性和併發的支持用戶數等問題。傳統的數據庫系統作爲數據管理的主要手段,主要用於操作型處理。
    分析型處理,叫聯機分析處理OLAP(On-Line Analytical Processing)一般針對某些主題歷史數據進行分析,支持管理決策。

以上內容也是自己查詢相關資料再加上自己的一些理解的總結,只有弄清這些概念才能對數據庫學習有更深入的理解,歡迎留言交流指正。

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