跑在檔案系統上的資料倉儲,強!
來源:談資料
編輯:談資料全文共 3547 個字,建議閱讀 10 分鐘
封閉的傳統資料倉儲
我們知道資料倉儲是晚於資料庫出現的,當 TP 資料庫無法滿足日益增長的資料分析需要時,人們便透過架設單獨的資料庫把 AP 業務獨立出來就形成了資料倉儲(邏輯概念)。後續出現了專門的資料倉儲產品為 AP 業務服務,由於資料倉儲在技術上本身也是個資料庫,因此繼承了資料庫的諸多特性,比如後設資料和資料約束,這使得從 TP 資料庫過渡到 AP 資料倉儲較為平滑。
但是,TP 和 AP 的目標並不一致,有些 TP 業務中有意義的特性在 AP 業務中並無好處,甚至還有很多壞處,比如封閉性。
所謂封閉性,是指要被資料庫計算和處理的資料,必須事先裝入資料庫之內,由資料庫統一管理,資料在資料庫內部還是外部是很明確的。
那麼封閉性會帶來什麼問題呢?
一個典型的現象就是 ETL 經常被做成 ELT 甚至 LET。ETL 中的 E 和 T 這兩步事實上也是某種計算,如果計算能力被封閉到資料庫之內的話,我們就只能先把資料裝入庫中才能計算了,因為無法計算庫外的資料。然而 ETL 過程中的原始資料常常並不在庫內,或者至少不在資料倉儲中,也可能存在於多個資料庫。總之,都需要先做個同庫動作之後才能再計算,費時費力。
當代應用中多樣性的資料來源越來越普遍,經常有來自外部服務的資料。如果為了計算這些資料而先把它們轉入資料庫中,也是非常累贅的。臨時轉入的效率很低(因為資料庫的 IO 成本高),很可能跟不上訪問需求,而定時批次轉入又很難獲得最新的資料,同樣影響計算結果的實時性。
封閉性的壞處還不止於此。
封閉性還會導致實時資料使用困難。當代應用的資料來源種類很多,每種資料來源都在特定場景下單獨發揮作用,但對於 OLAP 業務經常要統計全域性資料,這就涉及跨多資料來源計算。如果每次都要先把其他資料來源資料匯入再使用很低效,還會導致無法使用實時資料,因為這要求能夠跨資料來源進行實時計算,但當前資料倉儲卻沒有這個能力。
封閉性還有一個表現是對資料有約束,資料符合要求才能進來,這在一定程度能保證資料質量,但從另一面也導致有些不太合規的資料很難進來參與計算,這對於分析某些原始資料並無好處,不利於資料湖的建設。
相關的另一個特徵是整體性,庫內的資料庫邏輯上是的整體,不可拆分。如果資料種類(資料表)太多時,又會造成後設資料資訊臃腫、運維管理困難和耦合性高等問題。實際業務中的資料倉儲中表數量通常也真地都很多,有的會高達幾萬張表。為什麼會出現這種情況?
這些表大部分是為了查詢效率採用空間換時間的辦法後事先加工出來的中間表。這種表一旦產生就很難刪除(表被共用,刪除會影響其他部分),最後越積越多達到成千上萬。
中間表要消耗資料庫計算資源定時更新資料,中間表越來越多,資源消耗就越來越大,其中很多表不用還刪不掉白白浪費資源。儲存和計算壓力會讓資料倉儲面臨擴容壓力,導致成本升高。
表被多個應用共用就會造成應用間的緊耦合問題,這與中間表越來越多互為因果。耦合性太高會導致應用擴充套件困難,運維也十分不便。
分庫分表也是資料量較大的資料倉儲中十分常見的手段,大量的分表會進一步增加表的數量,分庫則面臨跨庫計算的問題。
我們知道資料庫的結構是線性的,表的數量太多就會導致難以管理,運維複雜。雖然資料庫有模式的輔助,但最多也只能分成兩層,與很多樹狀結構(如檔案系統)的方便程度不可同日而語。
在檔案系統上構建資料倉儲
如果我們採用開放的儲存體系來構建資料倉儲,比如直接採用檔案來儲存,上述很多問題都能有效地解決。
檔案使用沒有任何約束,沒有了“城牆”的限制,什麼樣資料都能進來(甚至就沒有“進來”這樣概念),這樣更能保持“原汁原味”也更符合資料湖的初衷。檔案的使用更加靈活高效,採用樹狀目錄的結構可以分類管理資料表(檔案),這樣既不會造成應用間的耦合性問題,管理和使用也很方便,表數量再多也不怕。
同時,檔案儲存的成本也很低廉,低成本是大資料建設不可忽略的關鍵因素。
當然,檔案相對資料庫來說改寫能力較弱,但資料倉儲中歷史資料通常不再改變,犧牲代價較小的資料更新(更新意味著重寫)能力可以換來更高的計算效率(採用壓縮編碼、列存)通常是值得的,基於檔案的計算效能會更高,而且檔案系統相對資料庫也具備更高的 IO 效能。
使用檔案的另外一個好處是容易實現存算分離。原來資料庫經常是打穿檔案系統直接訪問硬碟的,要改造成存算分離的機制,使用網路檔案系統以及雲上的物件儲存時,就要從底層重構,這是個複雜的任務,也就會帶來不少實施風險。使用檔案做儲存天然支援存算分離(專業儲存保證資料安全性,專業計算引擎保證效能),上雲也更容易。
檔案儲存的確好處多多,但卻缺失一個關鍵能力:計算。如前所述,資料存起來是要使用的,檔案儲存什麼都好,但如果沒有計算能力,那對於資料倉儲的目標來講就還是個零。
檔案型資料倉儲 esProc SPL
檔案計算
將資料儲存在檔案中可以獲得更低廉的成本、靈活的使用和方便的管理,這些前面我們已經說過。而且直接使用檔案(系統)還可以獲得更高的效率,不管是寫入還是讀取都要遠高於資料庫。esProc 直接基於檔案計算就能實現完整的資料倉儲功能(儲存 + 計算)。
不過,直接使用如文字這類開放檔案格式效率仍然不高。esProc 為此設計了專有的二進位制檔案格式,提供了壓縮、列存、有序、並行分段等機制來充分保證計算效能。
在高效能檔案儲存的基礎上,esProc 還設計了諸多高效能演算法(要知道有些演算法需要儲存的配合才能應用),其中有序遊標、遍歷複用、外來鍵指標、單邊分堆、倍增分段並行等都是 esProc 的獨創發明。
esProc 提供的部分高效能演算法
跨源計算
esProc 作為開放計算引擎支援幾十種資料來源,不同資料來源只要 esProc 能訪問到都能參與運算,無非只是訪問效能上的差異(使用 esProc 提供的二進位制檔案格式效率最高)。這些資料來源不僅能單獨訪問,還可以進行混合計算,即跨源計算。原來資料庫實施跨源計算需要先 ETL 帶來的諸多問題使用 esProc 都可以完全解決,不僅具備更強的資料實時資料,還可以充分保留各類資料來源自身的優勢。
有了檔案儲存、高效能和跨源計算的保證以後,esProc 還很容易實現 HTAP。HTAP 需求本質上是由於資料量大分庫後無法進行 T+0 查詢產生的。esProc 支援多樣性資料來源混合計算,天然可以進行 T+0 分析。更多內容:HTAP 資料庫搞不定 HTAP 需求
總結
GitHub:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027827/viewspace-2942386/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 跑在檔案系統上的資料倉儲
- 在caffe上跑自己的資料
- 把檔案系統的資料檔案遷移到ASM儲存ASM
- 大資料檔案儲存系統HDFS大資料
- 儲存系統實現-資料檔案格式
- 在歸檔下恢復系統資料檔案
- [資料庫系統]儲存和檔案結構資料庫
- 【iOS資料儲存】iOS檔案系統介紹iOS
- 檔案系統儲存與oracle資料庫儲存對比Oracle資料庫
- 設計資料倉儲和資料倉儲的粒度
- 資料倉儲上雲那些事兒
- 何在Mac系統上建立大檔案?教你在Mac系統建立大檔案的方法Mac
- Oracle在NFS檔案系統上建庫OracleNFS
- 資料倉儲中的分析SQL——資料倉儲手冊SQL
- 資料倉儲—資料倉儲—Sybase IQ 介紹
- 吉特倉儲管系統(開源)--使用Grunt壓縮JS檔案JS
- Oracle資料倉儲的體系結構Oracle
- 資料倉儲
- 【Git/Github】向已有倉庫上傳檔案/資料夾Github
- [WMS]倉儲管理系統專案紀實
- 資料倉儲和傳統資料庫的區別資料庫
- 【儲存資料恢復】IBM儲存檔案NTFS系統損壞的資料恢復案例資料恢復IBM
- 分層架構在資料倉儲的應用架構
- 資料倉儲,資料探勘,OLAP,BI等系統技術深度建設
- 資料儲存--檔案儲存
- 資料倉儲—資料倉儲—NCR Teradata Warehouse 介紹
- ASM與檔案系統之間copy資料檔案--檔案系統到ASMASM
- 分散式檔案系統HDFS,大資料儲存實戰(一)分散式大資料
- 資料倉儲之路
- 資料倉儲的組成
- 資料倉儲中的概念
- 【儲存資料恢復】WAFL檔案系統下raid資料恢復案例資料恢復AI
- 最新資料倉儲建模指南頂級教程加強版
- 資料倉儲——在“啤酒與尿布”中挖掘 (轉)
- 資料庫倉庫系列:(一)什麼是資料倉儲,為什麼要資料倉儲資料庫
- 廣州WMS倉儲管理系統
- 資料庫和資料倉儲資料庫
- 資料倉儲—資料倉儲—IBM DB2 Datawarehouse 介紹IBMDB2