資料倉庫
如何理解資料倉庫?舉個簡單的例子, 我現在打算學習大資料的內容,所以我看了CSDN,博客園,微信的大資料公眾號,一些物體書等等,并且我在看某些這些東西的時候,有些不錯的文章我都收藏了,儲存在這些論壇的賬號中,物體書我也做了很多標記,來標出那些對我有用的部分, 看了好幾個月之后,我打算來一次整體的復習,結果這個時候遇到了困難:我收藏的文章太多了,我完全記不得到底哪些文章在哪里了,如果我要找某一篇文章,我可能要從頭開始一個一個的翻找這些論壇的收藏夾,看看我要找的東西到底在哪里,況且還要物體書呢!也要翻一遍! 這作業量也太大了,而且我每找一次東西都要幾乎從頭開始找一次,太麻煩了,此時我想到,我為什么不把我收藏夾的那些東西都放到一個地方呢?這樣我也不用登錄很多賬號找了,此時我就想到,我是不是可以用Word軟體呢?把收藏夾里面的文章都復制到Word里不就可以了嗎?而且Word軟體還有查找功能,比這樣翻找的快太多了!立馬行動,我開始把一篇文章從標題到內容全都復制到Word檔案里,物體書上的我也打字打進來,花了好幾天時間,我終于把所有的東西都搬到Word檔案上了,真是累死了! 這個時候我又有了新的麻煩:雖然我按照一篇檔案一個檔案來分開,但是這些檔案非常多,而且標題都不明確,單從檔案名字上來看根本就不知道內容是什么,如果要知道是什么內容,還是需要一個一個打開來看, 這樣并不比之前的操作要輕松啊?我花了這么多的時間,結果也就省了一個打開網頁的操作,反而又增加了一個打開Word檔案的操作,這樣似乎比之前更麻煩了,畢竟我的電腦打開網頁還好,打開Word可慢多了,這要怎么辦呢? 這時候我又想到了一個辦法:把這些檔案全部打開看看,然后把檔案名字改好,改成我一眼就能看得懂的名字,這樣就很便于查找了吧,畢竟看一眼名字就知道這個檔案是不是我想要的,于是我又花了好幾天的時間,把這些檔案按照文章的內容,概括出來一個主題,把它當作檔案的名字,當我完成之后我覺得目前就可以很輕松的通過Wrod自帶的查找功能來找到我想要的檔案來看了,我覺得我的整理作業以及結束了 可是當我開始復習這些資料的時候,又發現了一個問題:這些檔案讀起來很冗余,很多的地方都是重復的,而且有的幾乎都全部重復了僅僅有一小部分才是不同的,比如什么Hadoop的定義啥的,這些很多檔案都寫了,而且都是一模一樣的,每次打開檔案都要看一遍,而且還很占用我的磁盤空間,而另外一些,比如Hadoop的版本解讀,我搜集的這些檔案,從1.0.x到3.0.x的版本解讀都有,但是我想要從1.0到3.0的版本變化,這樣的話的得把這些檔案全部都打開,然后一個檔案一個檔案的看,每次這樣翻我也很煩躁,我只想更懶一點,為什么沒有一個檔案整理了從1.0到3.0所有的版本變化呢?我在網上也沒找到,哎,靠人不如靠自己,我還是自己來吧! 這個時候我經過了前兩次的整理經歷之后我學聰明了,我沒有一開始就著手整理,我想了一下,我現在到底需要整理成什么樣子? 1.不變的東西整理到一個檔案里面去,上面寫上xxxx定義 2.會變的東西,比如版本解讀啥的,每個版本都會有一個檔案,這些我也整理到一個檔案里面去,這樣我就不用到處翻來翻去了 3.但是之前的這些東西我不能刪掉,我自己合并的東西可能有的不全,或者是合并的有問題,我需要找原來的檔案對比一下,如果我把之前的刪掉,一旦我打錯了字,我可能就會一直學了錯的知識了 好吧,我目前就想到這么多,那我就開始整理吧!于是我又花了好幾天的時間,把原來的檔案中的東西提取出來,重復的定義都合并到一起并且只留一份,不同的版本解讀我放到一個檔案里面去,然后我要保存之前的那些原始的檔案,這倆東西不能都在一個都放在一個檔案夾里面吧,這樣也太亂了,于是我又打算吧這兩個放在兩個檔案夾里面,我創建了兩個檔案夾,一個存放原始的檔案,一個存放我整理好的檔案,然后把這倆檔案夾都放到 一個叫知識庫的檔案夾里面,這樣我的整理作業貌似真的已經完成了, 現在,我想看Hadoop相關的版本解讀的話,我就打開版本解讀檔案就可以了,如果我想看Hadoop的定義和版本解讀呢?我就打開這兩個檔案,一個放在螢屏左邊,一個放在右邊,這樣看起來也很舒服,至此,我的整理作業真的算完成了, 然后我突然想到,我X,我不就是在搭建資料倉庫嗎??? 是的,大家看到這里,如果對資料倉庫有了一些了解的話已經知道了資料倉庫的一般流程了,把上文的一些名詞換成資料倉庫的名詞: 各個論壇和物體書的文章 ->搭建數倉之前各個系統的資料源,比如MySQL,Oracle等傳統關系型資料,還要一些業務日志和埋點日志(比如說你在某寶點擊某個商品啊,瀏覽了某些商品啊,這些都是有記錄的,也叫做埋點資料,前端已經在你點擊進入這個商品的詳情頁的時候做了埋點,你點進去就會產生了一條資料,會記錄你點擊的商品記錄和你這個用戶的一般資訊,這就叫做埋點日志) 把這些不在同一個論壇,甚至在物體書上的文章,都統一放到Word檔案上,并且稍微改個檔案名 --->利用一些資料匯入工具,比如Sqoop,Flume,DataX(阿里云的產品,但已開源),把這些不同系統上面的資料,都匯入到同一個框架里,這里大部分都是匯入到Hive里,它利用HDFS存盤,具有天然的容災性,查詢的引擎是MR(也可以使用Spark),對于這么大的資料量是再適合不過了,這種遷移資料的行為已經是搭建數倉的一部分了,這些遷移過來的資料作為資料倉庫的ODS層(資料準備層),這一層是為加下來的資料層提供原始資料,我們盡量不做什么變動,只做一些資料按日期分表存盤,把這些資料按照主題和邏輯劃分好, 把文章去重,把版本解讀放到一起 --->對應資料倉庫的DW層,這一層的主要任務就是把原始資料進行ETL,把原始資料分為維度表和事實表(這種方法稱為維度建模),把細粒度的資料聚合成粗粒的表,把一些維度退化,形成業務寬表等等 使用檔案 --->對應數據倉庫的ADS層(也叫ST層),ST層面向用戶應用和分析需求,包括前端報表、分析圖表、KPI、儀表盤、OLAP、專題等分析,面向最終結果用戶 這樣,我們就完成了一個簡單的資料倉庫(三層),其中DW層還可以細分為DWD,DM等,這個就看實際情況了,靈活分層資料湖與資料中臺
至于資料湖和資料中臺呢? 我是這樣理解資料湖的,上面的例子里,我們在把各種不同論壇的文章匯入到Word檔案中的時候,其實已經丟失掉了一層資訊:來源 放到Word檔案之后,你就無法知道某篇文章到底來自于哪個論壇的了 ,而資料湖呢?資料湖是盡力保持所有資料的原始面貌,不丟失任何資訊,同樣,也不會做任何的處理(因為你處理資料多多少少會丟失掉一部分資訊),盡力保持資料的原汁原味,因為誰也不知道以后某些資料又擁有多達的價值,所以我們需要保持資料的原封原貌,而這個時候我們可以把資料倉庫想象成一個在湖邊的礦泉水加工廠,一邊抽取湖中的水(資料),進行各種清洗消毒加工,最后生產出各種各樣包裝的礦泉水來,這就是這兩個概念我自己理解, 下面是維基百科上關于資料湖的定義:資料湖(Data Lake)是一個存盤企業的各種各樣原始資料的大型倉庫,其中的資料可供存取、處理、分析及傳輸,資料湖是以其自然格式存盤的資料的系統或存盤庫,通常是物件blob或檔案,資料湖通常是企業所有資料的單一存盤,包括源系統資料的原始副本,以及用于報告、可視化、分析和機器學習等任務的轉換資料,資料湖可以包括來自關系資料庫(行和列)的結構化資料,半結構化資料(CSV,日志,XML,JSON),非結構化資料(電子郵件,檔案,PDF)和二進制資料(影像,音頻,視頻), 至于資料中臺呢?我們先來看下資料中臺的定義: 資料中臺是指通過企業內外部多源異構的資料采集、治理、建模、分析,應用,使資料對內優化管理提高業務,對外可以資料合作價值釋放,成為企業資料資產管理中樞,資料中臺建立后,會形成資料API,為企業和客戶提供高效各種資料服務,(這個概念最早由阿里提出,實際上阿里云的一些云產品就是一個大的資料中臺) 又回到之前說的礦泉水加工廠的例子,如果我們只有一個加工廠,那肯定是僅僅不夠的,因為我們不僅要喝水,還要喝的是安全健康的水,這個檢測如果工廠內自己做,大家還是不太相信的,那么還是需要別人來檢測,監管加工廠的質量和水質等安全問題,這些的監管檢測機制,而且還有一個問題就是,加工廠缺少一個管賬的,內部的財務狀況很混亂, 因此,加工廠又請了另一家公司來為他們做財務管理,如此,再加上加工廠內部的更新換代,又增加了新技術來加工礦泉水(機器學習,資料挖掘等),加工廠是越來越大了,而包含兼管人員,財務管理和整個加工廠在內的,就是大家常說的資料中臺了,轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/11219.html
標籤:大數據
