面試 數倉 數倉和資料庫的區別

2021-10-07 09:13:31 字數 1770 閱讀 1869

2者的命名無論中英文其實並無不同,base和warehouse。要從以下幾個方面來區分:

拿mysql這個資料庫和apache hive這個資料倉儲為例。這裡hive事實上就是乙個很巨集大的「體系結構」。它可以把元資料儲存在mysql、oracle或者derby這些具體的資料庫「技術」裡;它在進行查詢時把sql轉化成mapreduce job,這裡它又用到了mapreduce計算模型這種「技術」。

再抽象一下,資料倉儲和資料庫的關係就像川菜和辣椒的關係一樣。當我吃川菜的時候,肯定是要放辣椒的。但不光川菜放辣椒,南韓料理裡也有辣椒,但川菜和韓料明顯是不同的。川菜不僅僅使用了辣椒,還包括如何處理辣椒的操作。

資料庫:傳統的關係型資料庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。傳統oracle, mysql 資料量儲存有限,到達一定值後,查詢響應速度就慢了。

資料倉儲:資料倉儲系統的主要應用主要是olap(on-line analytical processing),支援複雜的分析操作,側重決策支援,並且提供直觀易懂的查詢結果。

數倉是如何產生的呢。解決了什麼痛點呢?

相對於檔案系統而言,資料庫是易於查詢和修改的格式化資料儲存形式。各家軟體公司又圍繞它製作了管理系統和各種工具。

檔案系統很好理解,開啟電腦,那些資料夾啊,檔案啊就是了。但檔案系統不易於做複雜的分析和修改。為了滿足這個需求,資料庫就出現了。

本質上資料倉儲也是資料庫,為一種特定需求服務的資料庫。服務於資料量大,需要進行複雜分析的場景。資料庫還能應用於其他場景。比如事務性場景,如商業交易,買賣的記錄和客戶資料的儲存更新。

基本每家電商公司都會經歷,從只需要業務資料庫到要資料倉儲的階段。

電商早期啟動非常容易,入行門檻低。找個外包團隊,做了乙個可以下單的網頁前端 + 幾台伺服器 + 乙個mysql,就能開門迎客了。這好比手工作坊時期。

第二階段,流量來了,客戶和訂單都多起來了,普通查詢已經有壓力了,這個時候就需要公升級架構變成多台伺服器和多個業務資料庫(量大+分庫分表),這個階段的業務數字和指標還可以勉強從業務資料庫裡查詢。初步進入工業化。

第三個階段,一般需要 3-5 年左右的時間,隨著業務指數級的增長,資料量的會陡增,公司角色也開始多了起來,開始有了 ceo、cmo、cio,大家需要面臨的問題越來越複雜,越來越深入。高管們關心的問題,從最初非常粗放的:「昨天的收入是多少」、「上個月的 pv、uv 是多少」,逐漸演化到非常精細化和具體的使用者的集群分析,特定使用者在某種使用場景中,例如「20~30歲女性使用者在過去五年的第一季度化妝品類商品的購買行為與公司進行的**活動方案之間的關係」。

這類非常具體,且能夠對公司決策起到關鍵性作用的問題,基本很難從業務資料庫從調取出來。原因在於:

怎麼解決這個問題呢?此時我們就需要建立乙個資料倉儲了,公司也算開始進入資訊化階段了。資料倉儲的作用在於:

資料結構為了分析和查詢的便利,也就是說dw是分析性資料庫

唯讀優化的資料庫,即不需要它寫入速度多麼快,只要做大量資料的複雜查詢的速度足夠快就行了。

也就是說資料庫/資料倉儲的使用者群體和工作場景不同,dw面向決策者,db面向操作者、使用者。

資料庫屬於操作型系統,資料倉儲屬於分析性系統。操作性系統(資料庫)的使用者群體是大量客戶,每次操作修改的資料量非常小,對時間敏感度非常高。分析性系統(資料倉儲)的使用者是決策人員,他們不修改資料但是會分析大量資料,而且他們對得出結果的時間不敏感。

比如說微博每天有上千萬使用者在發微博、修改個人資料,每個人都只修改屬於自己的那幾條資料,同時希望修改後立刻可以用。而為數不多的決策者希望通過微博進行挖掘,他們不可能修改使用者資料,但是他們會訪問大量資料。最後他們對時間不敏感,等到乙個結果跑5分鐘到1小時都可以的。

面試題 數倉

如何判定乙個表是事實表還是維度表?資料建模過程說一下?三正規化緩慢變化維處理方式?什麼也不該,保留原始值 直接覆蓋 增加新行,需要為新航分配新的 鍵 增加新屬性列 增加微型維度 某些維度屬性變化較快導致維度表越來越大可以把這些屬性柴麗出來單獨構建微型維度表 雙重外來鍵並且方式1與方式2結合 在方式2...

tez什麼意思 傳統數倉和大資料數倉的區別是什麼?

概念與容器 為什麼先說這個,其實很簡單 因為絕大多數人都把這兩個概念混為一談。然後就會出現各種各樣的問題 oracle不是資料庫麼,怎麼又是資料倉儲?hive不是資料倉儲麼?怎麼又是資料庫?資料倉儲 資料庫是乙個概念,是一些技術的集合。類同於切菜刀法和雕刻刀法 oracel db2 mysql hi...

tez什麼意思 傳統數倉和大資料數倉的區別是什麼?

概念與容器 為什麼先說這個,其實很簡單 因為絕大多數人都把這兩個概念混為一談。然後就會出現各種各樣的問題 oracle不是資料庫麼,怎麼又是資料倉儲?hive不是資料倉儲麼?怎麼又是資料庫?資料倉儲 資料庫是乙個概念,是一些技術的集合。類同於切菜刀法和雕刻刀法 oracel db2 mysql hi...