在磚Lakehouse的數據對象

磚Lakehouse組織與三角洲湖雲存儲的數據對象存儲熟悉關係數據庫、表和視圖。該模型結合了許多數據倉庫的好處和數據的可伸縮性和靈活性。了解更多關於這個模型是如何工作的,以及對象之間的關係數據和元數據,這樣您就可以應用最佳實踐在設計和實現數據磚Lakehouse為您的組織。

在磚Lakehouse數據對象是什麼?

磚Lakehouse架構結合與三角洲湖協議在雲存儲的數據對象存儲元數據登記metastore。有五個主要磚Lakehouse中的對象:

  • 目錄:一個分組的數據庫。

  • 數據庫或模式:對象的分組在一個目錄中。數據庫包含表、視圖和函數。

  • :行和列的集合對象存儲中存儲為數據文件。

  • 視圖:保存查詢通常與一個或多個表或數據來源。

  • 函數:保存邏輯返回標量值或一組行。

統一目錄對象模型圖

為保護對象的信息統一目錄,看看可獲得的對象模型

什麼是metastore ?

metastore包含所有的元數據定義lakehouse數據對象。磚提供了以下metastore選項:

  • 統一目錄:您可以創建一個metastore存儲和跨多個磚共享元數據工作區。統一目錄管理帳戶級別。

  • 蜂巢metastore:磚商店所有的元數據內置蜂巢metastore為管理服務。metastore的實例部署到每個集群和安全地訪問元數據為每個客戶從一個中央存儲庫工作區。

  • 外部metastore:你也可以自己帶metastore磚。

不管metastore使用,磚與表相關聯的所有數據存儲在對象存儲配置雲賬戶的客戶。

目錄是什麼?

目錄是最高的抽象(或粗粒)磚Lakehouse關係模型。每個數據庫將被關聯到一個目錄中。在metastore目錄作為對象存在。

在引入統一目錄之前,磚使用雙重名稱空間。目錄是第三層統一目錄命名空間模型:

catalog_namedatabase_nametable_name

內置的蜂巢metastore隻支持一個目錄,hive_metastore

什麼是數據庫?

數據庫是數據對象的集合,如表或視圖(也稱為“關係”),和功能。在磚,術語“模式”和“數據庫”是交替使用(而在許多關係係統,數據庫是模式)的集合。

數據庫將永遠被關聯到一個雲對象存儲位置。你可以指定一個位置當注冊一個數據庫時,要記住:

  • 位置關聯到一個數據庫總是被認為是一個成功的位置。

  • 創建一個數據庫不創建任何文件在目標位置。

  • 位置數據庫將決定默認位置的數據登記的所有表的數據庫。

  • 成功刪除一個數據庫將遞歸刪除所有數據和文件存儲在一個位置管理。

這個位置由數據庫管理和數據文件之間的相互作用是非常重要的。為了避免意外刪除數據:

  • 不共享數據庫位置跨多個數據庫定義。

  • 不注冊一個數據庫已經包含數據的位置。

  • 數據生命周期管理獨立於數據庫,將數據保存到一個位置,不是嵌套在任何數據庫的位置。

一個表是什麼?

一個磚表是結構化數據的集合。δ表存儲數據作為雲對象存儲上的文件和注冊表的目錄元數據中的metastore目錄和模式。三角洲湖是表中創建的默認存儲提供商磚,磚三角洲表中創建的所有表,默認情況下。因為δ表在雲存儲數據對象存儲和通過metastore提供參考數據,用戶在一個組織可以使用他們喜歡的api訪問數據;磚,這包括SQL, Python, PySpark, Scala, R。

請注意,有可能磚不三角洲的表上創建表。這些表不是由三角洲湖,也不會提供δ的ACID事務和優化性能表。注冊表落入這個類別包括表數據外部係統和注冊表其他文件格式的數據湖

有兩種類型的表在磚,管理非托管(或外部)表。

請注意

三角洲生活表區分生活表和現場直播表不是從表中執行的視角。

什麼是管理的表?

磚管理元數據和數據管理表;當你刪除一個表,你也刪除底層數據。數據分析師和其他用戶,主要工作在SQL可能更喜歡這種行為。管理表默認創建一個表。管理表的數據駐留在位置數據庫的登記。這管理關係數據位置和數據庫意味著為了管理表移動到一個新的數據庫,你必須重寫所有的數據到新的位置。

有許多方法來創建管理表,包括:

創建table_name作為選擇*another_table
創建table_name(field_name1INT,field_name2字符串)
dfsaveAsTable(“table_name”)

一個非托管表是什麼?

磚僅為非托管(外部)管理元數據表;當你刪除一個表,你不影響底層數據。總是指定一個非托管表位置在表創建;你可以注冊一個現有的數據文件的目錄表或表時提供一個路徑定義。因為獨立管理數據和元數據,您可以重命名一個表或注冊一個新數據庫,而不需要任何數據。工程師通常喜歡非托管數據表和他們提供生產數據的靈活性。

有許多方法來創建非托管表,包括:

創建table_name使用δ位置/道路/ /現有數據的
創建table_name(field_name1INT,field_name2字符串)位置/ /空/目錄/路徑的
df選項(“路徑”,/ /空/目錄/路徑”)saveAsTable(“table_name”)

什麼是視圖?

一個視圖存儲文本查詢通常與一個或多個數據源或metastore中的表。在磚,視圖是相當於一個火花DataFrame持續作為數據庫中的一個對象。與DataFrames不同,你可以從任何查詢視圖磚產品的一部分,如果你允許這樣做。創建一個視圖不處理或寫任何數據;隻有注冊的查詢文本metastore相關聯的數據庫中。

暫時的觀點是什麼?

一個臨時視圖範圍有限,持久性和不是注冊一個模式或目錄。臨時的生命周期視圖基於不同環境的使用:

  • 在筆記本和工作,臨時視圖範圍到筆記本或腳本的水平。他們不能引用外部的筆記本中宣稱,和將不再存在時,筆記本從集群分離。

  • 在磚SQL,臨時視圖範圍查詢。多個語句在同一個查詢可以使用臨時觀點,但它不能被其他查詢中引用,即使在相同的儀表板。

  • 全局臨時觀點局限於集群級別和筆記本電腦之間可以共享或共享計算資源的工作。磚建議使用適當意見而不是全局臨時表acl的觀點。

一個函數是什麼?

函數允許您將用戶定義的邏輯與數據庫相關聯。函數可以返回標量值或設置的行。函數是用於聚合數據。磚允許您保存的各種語言的功能,根據您的執行上下文,使用SQL被廣泛支持。您可以使用函數來提供管理訪問自定義邏輯在各種語境下的磚產品。

關係對象在三角洲生活工作表怎麼樣?

三角洲生活表使用聲明性語法來定義和管理DDL, DML、和基礎設施的部署。三角洲生活表使用一個“虛擬模式”的概念在邏輯計劃和執行。三角洲生活表可以在磚環境與其他數據庫交互,和δ生活表可以發布和持續表指定一個目標數據庫查詢其他的管道配置設置。所有表中創建生活表δ表,並且可以聲明為管理或非托管表。

視圖可以宣布在三角洲生活表,這些應該被認為是臨時視圖內的管道。臨時表在三角洲住表是一個獨特的概念:這些表保存數據存儲,但不公布數據到目標數據庫中。

等操作應用變化同時,將注冊表和視圖數據庫;表名會用下劃線(_)和視圖將表名宣布的目標應用變化操作。隱藏視圖查詢相應的表來實現結果。