數據建模的最佳實踐和實現現代化Lakehouse
2022年10月20日 在Beplay体育安卓版本平台的博客
大量的客戶正在遷移遺留數據倉庫數據磚Lakebeplay体育app下载地址house它使他們不僅現代化數據倉庫也立即獲得一個成熟的流和先進的分析平台。Beplay体育安卓版本Lakehouse可以做到,因為它是一個平台,你所有的流、ETL、BI和ABeplay体育安卓版本I的需求,它可以幫助您的業務和數據團隊協作平台。
我們幫助客戶在這個領域beplay体育app下载地址,我們發現許多正在尋找最佳實踐適當的數據建模和物理數據模型實現磚。
在本文中,我們的目標是深入研究維度建模的最佳實踐在磚Lakehouse平台上,並提供一個生活的例子使用我們的表創建一個物理數據模型實現和DDL最佳實踐。Beplay体育安卓版本
這裏是高級主題我們將介紹在這個博客:
- 數據建模的重要性
- 公共數據建模技術
- 數據倉庫建模DDL實現
- 數據建模的最佳實踐和推薦磚Lakehouse
數據倉庫的數據建模的重要性
數據模型是構建數據倉庫的前麵和中心。通常這個過程始於捍衛語義業務信息模型,然後一個邏輯數據模型,最後一個物理數據模型(PDM)。這一切開始於一個適當的係統分析和設計階段,業務信息模型和流程是首先創建和關鍵業務實體、屬性和它們的相互作用捕獲的業務流程在組織內。然後創建邏輯數據模型描述實體是如何彼此相關的技術,這是一個不可知論者模型。最後創建一個PDM基於底層技術平台,以確保讀和寫可以有效地執行。Beplay体育安卓版本我們都知道,對於數據倉庫,Analytics-friendly建模風格星形架構和數據保險庫非常受歡迎的。
創建一個物理數據模型在數據磚的最佳實踐
基於定義的業務問題,數據模型設計的目的是表示數據的一種簡單的方法可重用性,靈活性和可伸縮性。這是一個典型的星形架構數據模型顯示銷售事實表包含每個事務和各種維度表如客戶、產品、商店、分片數據的日期等。beplay体育app下载地址維度可以加入到事實表回答特定的業務問題,如什麼是最受歡迎的產品對於一個給定的月或哪些商店表現最好的季度。讓我們看一下如何實現數據磚。
數據倉庫建模DDL實現磚
在下麵幾節中,我們將演示使用以下示例。
- 創建三級目錄、數據庫和表
- 主鍵、外鍵的定義
- 身份為代理鍵列
- 列約束對數據質量
- 索引,優化和分析
- 先進的技術
1。統一名稱空間目錄- 3水平
統一目錄是一個磚治理層磚管理員和數據管理員可以管理用戶及其訪問數據集中所有的工作區磚使用一個Metastore帳戶。用戶在不同的工作區可以共享訪問相同的數據,根據權限集中在統一目錄。統一目錄有3個級別名稱空間(catalog.schema(數據庫).table)組織您的數據。了解更多關於統一目錄。
這裏是如何設置目錄和模式在我們的數據庫中創建表。在我們的示例中,我們創建一個目錄US_Stores和一個模式(數據庫)Sales_DW如下所示,使用它們的後部分的一部分。
創建目錄如果不存在US_Stores;使用目錄US_Stores;創建模式,如果不存在Sales_DW;使用模式Sales_DW;
設置目錄和數據庫
這裏有一個例子查詢fact_sales表3級名稱空間。
2。主鍵、外鍵的定義
主鍵和外鍵的定義是非常重要的,當創建一個數據模型。有能力支持PK /顆定義使磚的超級簡單定義數據模型。它還幫助分析師迅速指出連接關係數據磚SQL倉庫,這樣他們可以有效地編寫查詢。像大多數其他的大規模並行處理(MPP),倉庫,和雲數據倉庫,PK /顆約束信息。磚不支持執法的PK /顆關係,但給它定義的能力語義數據模型的設計簡單。
這是創建的一個例子dim_store表可以作為一個標識列,也在同一時間定義為一個主鍵。
——存儲維度創建或取代表dim_store (可以長整型數字生成的總作為身份主鍵,business_key字符串,名稱字符串,電子郵件的字符串,城市的字符串,地址字符串,phone_number字符串,created_date時間戳,updated_date時間戳,start_at時間戳,end_at時間戳);
DDL創建存儲實現維度與主鍵定義
創建表後,我們可以看到,在創建主鍵(可以)如下表定義的約束。
這是創建的一個例子fact_sales表transaction_id作為一個主鍵,以及外國引用維度表鍵。
——事實銷售創建或取代表fact_sales (transaction_id長整型數字主鍵,date_id長整型數字不零約束dim_date_fk外國關鍵引用dim_date,customer_id長整型數字不零約束dim_customer_fk外國關鍵引用dim_customer,product_id長整型數字不零約束dim_product_fk外國關鍵引用dim_product,可以長整型數字不零約束dim_store_fk外國關鍵引用dim_store,store_business_key字符串,sales_amount雙);
DDL創建銷售實現事實與外鍵的定義
創建事實表後,我們可以看到主鍵(transaction_id)和創建外鍵約束的表定義如下。
3所示。身份為代理鍵列
一個標識列是一個列在數據庫中自動生成一個惟一的ID號碼為每個新行數據。這些都是常用的在數據倉庫中創建代理鍵。代理鍵是係統生成的,毫無意義的鑰匙,這樣我們不必依賴於各種自然主鍵和串連在幾個字段來標識的唯一性行。通常使用這些代理鍵作為數據倉庫的主鍵和外鍵。討論了細節標識列這個博客。下麵是創建一個customer_id標識列的一個例子,使用自動分配值從1開始,增加1。
——客戶維度創建或取代表dim_customer (customer_id長整型數字生成的總作為身份(開始與1增量通過1)主鍵,名稱字符串,電子郵件的字符串,地址字符串,created_date時間戳,updated_date時間戳,start_at時間戳,end_at時間戳);
DDL創建客戶實現維度與標識列
4所示。列約束對數據質量
除了主鍵和外鍵信息約束,磚也支持列級數據質量檢查約束,以確保執行的質量和完整性數據添加到表中。約束是自動驗證。這些都不是空的好例子約束和列值約束。與其他雲數據倉庫,數據磚更進一步提供列值檢查約束,這是非常有用的,以確保數據質量給定的列。我們可以看到下麵valid_sales_amount檢查約束將驗證滿足約束(即所有現有的行。銷售額> 0),然後將它添加到表中。可以找到更多的信息在這裏。
下麵是示例添加約束dim_store和fact_sales分別以確保可以和sales_amount有效值。
——添加約束dim_store以確保列可以是1 - 9998改變表US_Stores.Sales_DW.dim_store添加約束valid_store_id檢查(可以>0和可以<9999年);——添加約束fact_sales以確保列sales_amount有效值改變表US_Stores.Sales_DW.fact_sales添加約束valid_sales_amount檢查(sales_amount>0);
列約束添加到現有表,確保數據質量
5。索引、優化和分析
傳統數據庫b -樹和位圖索引,磚有許多先進形式的索引——多維z值聚集索引和我們也支持布隆過濾器索引。首先,Delta文件格式使用鑲花的文件格式,這是一個柱狀壓縮文件格式,所以它已經非常有效的修剪和在其上使用z順序列索引使您能夠篩選pb級別數據在幾秒鍾內。這兩個z值和布隆過濾器索引顯著減少需要掃描的數據量為了回答高度選擇性對大型三角洲表查詢,通常轉化成數量級運行時改進和成本節約。使用z值在你的主鍵和外鍵用於最常見的連接。並根據需要使用其他的布隆過濾器索引。
——優化customer_id和product_id fact_sales表為更好的查詢和連接性能優化US_Stores.Sales_DW。fact_salesZORDER通過(customer_id product_id);
優化fact_sales customer_id和product_id更好的性能
——創建一個bloomfilter索引啟用數據store_business_key跳過創建BLOOMFILTER指數在表US_Stores.Sales_DW.fact_sales為列(store_business_key)
創建一個Bloomfilter索引啟用數據跳過一個給定的列上
就像任何其他數據倉庫,你可以分析表更新統計數據,以確保查詢優化器有最好的統計數據來創建最好的查詢計劃。
——收集統計所有列獲得更好的性能分析表US_Stores.Sales_DW.fact_salesCOMPUTE STATISTICS為所有列;
收集數據的所有列更好的查詢執行計劃
6。先進的技術
而磚等先進技術的支持表分區,請謹慎使用這些特性,隻有當你有許多tb的壓縮數據,因為大部分時間我們優化和z順序索引會給你最好的文件和數據修剪使分區表按日期或一個月幾乎一個糟糕的做法。這不過是一個好的做法,以確保您的表ddl設置自動優化和自動壓實。這將確保你經常寫的數據在小文件壓縮成更大的柱狀三角洲的壓縮格式。
你是想要利用視覺數據建模工具?我們的合作夥伴erwin數據建模師的任務可用於逆向工程,創建和實現星形架構,數據金庫,任何行業數據模型在數據磚隻需要點擊幾下。
磚筆記本的例子
磚的平台,一個可以很容易地設計與Beplay体育安卓版本輕鬆實現各種數據模型。看到上麵例子中的一個完整的工作流,請看看這個例子。
也請看看我們的博客——有關五個簡單的步驟來實現一個星型模式與三角洲湖磚。