跳轉到主要內容
Beplay体育安卓版本平台的博客

五個簡單的步驟來實現一個星型模式與三角洲湖磚

如何從星型模式中持續獲得最佳性能數據庫中使用數據倉庫和數據集市與三角洲湖嗎
分享這篇文章

大多數數據倉庫開發人員非常熟悉無時不在的星型模式。由拉爾夫·金伯爾引入在1990年代,一個星型模式應該用於正規化業務數據到維度(如時間和產品)和事實(如交易金額和數量)。星型模式有效地存儲數據,維護和更新曆史數據通過減少重複重複的業務定義,使其快速聚合和過濾。

星型模式支持的共同實現商業智能應用程序變成了例行公事和成功,許多數據建模師幾乎能做他們的睡眠。在磚,我們產生了很多數據應用和不斷尋找最佳實踐方法作為一個經驗法則,基本實現,保證讓我們一個偉大的結果。

就像在傳統的數據倉庫,有一些簡單的經驗法則三角洲湖上,將大大提高你的三角洲星型模式連接。

這是成功的基本步驟:

  1. 使用增量表來創建事實表和維度表
  2. 優化文件大小快速文件修剪
  3. 創建一個z值的事實表
  4. 你的維度關鍵字段上創建z值,最有可能的謂詞
  5. 分析表收集統計的自適應查詢執行優化

1。使用增量表來創建事實表和維度表

三角洲湖是一個開放的存儲格式層提供了易於插入,更新,刪除,並添加ACID事務數據湖表,簡化維護和修改。三角洲湖還提供了執行的能力動態文件修剪為更快的SQL查詢優化。

語法很簡單在磚運行時的8。x和新三角洲湖是默認的表格格式。您可以使用SQL和創建一個增量表如下:

創建MY_TABLE (COLUMN_NAME字符串)

前8。x運行時,磚需要創建的表使用δ語法。

樣例星型模式和空間屬性通常使用三角洲湖表。

2。優化文件大小快速文件修剪

兩個最大的時間彙一個Apache火花™查詢所花費的時間從雲存儲和讀取數據需要閱讀所有底層文件。與數據不在三角洲湖,查詢可以有選擇地隻讀Delta文件包含相關數據,節省大量的時間。與靜態文件數據不可以幫助修剪,修剪動態文件,靜態分區修剪和動態分區修剪。

的第一件事時要考慮設置數據不理想的數據文件大小——太小,你會有太多的文件(著名的“小文件問題”);太大,你無法跳過足夠的數據。

一個好的文件大小範圍是32 - 128 mb (1024 * 1024 * 32 = 33554432 32 mb的課程)。再一次,我們的想法是,如果文件大小太大,動態文件修剪會跳到正確的文件或文件,但他們將如此之大,還有很多工作要做。通過創建更小的文件,您可以受益於文件修剪和減少I / O檢索需要的數據加入。

你可以設置文件大小值為整個筆記本在Python中:

spark.conf。(“spark.databricks.delta.targetFileSize”,33554432)

或在SQL:

spark.databricks.delta.targetFileSize=33554432

或者你可以把它隻對特定的表使用:

改變(數據庫)。)TBLPROPERTIES (delta.targetFileSize=33554432)

如果你閱讀這篇文章後,您已經創建了表,你仍然可以設置表屬性的文件大小,優化和創建ZORDER時,文件將被分配到新文件的大小。如果您已經添加了一個ZORDER,您可以添加和/或刪除一列迫使重寫之前到達最後ZORDER配置。閱讀更多關於ZORDER在步驟3中。

可以找到更完整的文檔在這裏,對於那些喜歡Python或Scala除了SQL,完整的語法在這裏

隨著磚繼續添加特性和功能,我們還可以自動優化文件大小基於表的大小。小型數據庫,上麵的設置可能會提供更好的性能,但對於較大的表和/或使它更簡單,你可以遵循的指導在這裏和實現delta.tuneFileSizesForRewrites表屬性。

3所示。創建一個z值的事實表

提高查詢速度,三角洲湖支持能力優化布局與z值的數據存儲在雲存儲。

提高查詢速度,三角洲湖支持能力優化布局的數據存儲在雲存儲z值,也被稱為多維聚簇。z值在類似的情況下,使用聚集索引數據庫中的世界,盡管他們實際上並不是一個輔助結構。z值將集群中的數據z值的定義,這行像列值從z值定義在盡可能少的文件配置。

大多數數據庫係統引入了索引來提高查詢性能。索引文件,因此隨著數據的增長,他們可以成為另一個大數據問題解決。相反,三角洲湖訂單拚花文件中的數據範圍選擇對象存儲更高效。結合統計數據收集過程和數據跳過,z值類似於尋求與掃描操作在數據庫中,索引解決,不創建另一個計算瓶頸找到數據查詢正在尋找。

z值的最佳實踐是限製列在z值的數量最好的1 - 4。我們選擇了外鍵(由使用外鍵,而不是實際執行外鍵)的3大尺寸太大廣播到工人。

優化MY_FACT_TABLEZORDER (LARGEST_DIM_FK NEXT_LARGEST_DIM_FK,…)

此外,如果你有巨大的規模和100年的數十億行或pb的事實表中的數據,您應該考慮分區跳過進一步改善文件。分區是有效的,當你積極地過濾分區字段。

4所示。你的維度關鍵字段上創建z值,最有可能的謂詞

盡管磚不執行增量表主鍵,因為你讀這篇文章,你可能有維度和一個代理鍵的存在——一個是整數或大整數和驗證,將是唯一的。

的一個尺寸我們有10億多行和受益的跳躍和動態文件修剪後添加謂詞到z值。較小的尺寸也有z值的維度關鍵字段,在加入到播放的事實。類似於事實表的建議,限製列的數量在1 - 4 z值字段維度最可能被包括在一個過濾器除了關鍵。

優化MY_BIG_DIMZORDER由(MY_BIG_DIM_PK LIKELY_FIELD_1 LIKELY_FIELD_2)

5。分析表收集統計的自適應查詢執行優化

的一個主要的進步在Apache火花™3.0自適應查詢執行,或簡稱為AQE。3.0的火花,有三個主要功能在AQE,包括合並post-shuffle分區,將分類合並連接播放連接,和傾斜連接優化。在一起,這些特性使加速性能維度模型的火花。

為了讓AQE知道哪個方案供您選擇,我們需要收集統計信息表。這可以通過分析表命令。beplay体育app下载地址客戶收集表統計信息報道,大大降低了查詢執行維度模型,包括複雜的連接。

分析MY_BIG_DIM計算統計數據所有

結論

遵循上述指導方針,組織可以減少查詢時間——在我們的例子中,從90秒到10秒在同一集群。大大減少了I / O的優化,確保我們隻處理正確的內容。我們也受益於三角洲湖的柔性結構,將規模和處理類型的查詢,將臨時的商業智能工具。

除了這個博客中提到的文件不優化,磚大力投資改善的火花與磚光子的SQL查詢的性能。了解更多關於光子和它將提供的性能提升與磚你所有的火花的SQL查詢。

beplay体育app下载地址顧客可以預期他們的ETL /英語教學和SQL查詢性能改善通過使光子磚運行時。這裏列出結合最佳實踐,Photon-enabled磚運行時,預期可達到的低延遲查詢性能,可以勝過最好的雲數據倉庫。

今天與磚建立星型模式數據庫的SQL

免費試著磚

相關的帖子

看到所有產品的帖子
Baidu
map