數據庫和數據倉庫這幾個字看起來都差不多,不就多個倉字嘛,又不是多了蒼老師?
從本質上來說,數據庫和數據倉庫都是數據的集合。沒什么不同。
但是它們的定位確是不一樣。數據庫是服務于事務處理的(OLTP),數據倉庫是服務于商業數據分析的(OLAP)。
用戶在前端進行的操作,產生了事務和數據的變化,數據庫要對這部分的數據進行增加、刪除和修改。所以數據庫的操作是相對簡單的讀寫,只作用于相對少量的數據。由于數據庫操作的主要對象的表中的事件記錄,對其進行增刪改,對應的行式存儲就是最適合數據庫的存儲方式。
基于以上特征,數據庫一般采用的軟件為MySQL,Oracle,SQLServer等關系型數據庫進行數據存儲。基于3NF原則,搭建E-R表格,結構較為復雜,存儲緊致少冗余,對讀和寫都有優化的數據結構。
而使用數據倉庫的人主要是管理和運營人員,通過對歷史數據的分析和洞察來做出相應的商業決策。所以數據倉庫要求數據很全,需要把所有的數據整合到一起,從某些維度進行深入的分析。由于數據倉庫主要是基于某些維度對大量的數據進行查詢,那么列式存儲最能提高查詢效率。
基于以上特征,數據倉庫一般采用Hive,Greenplum,AWS Redshift等分布式數據庫。在搭建數據倉庫時則根據星型模型或雪花模型創建事實表和維度表。基于事實表和維度表查出面向各個業務主題的數據,然后可視化地展現出來。因此數據倉庫的表結構相對簡單,存儲松散多冗余,一般只對讀取做優化。
數據庫和數據倉庫對比