開啟鏡像登陸區域需求和格式
本文詳述 Microsoft Fabric 中開啟鏡像的登陸區域和數據表/數據行作業需求。
重要
此功能處於預覽。
一旦您透過網狀架構入口網站或 Fabric 工作區中的公用 API 建立開啟的鏡像資料庫,您就可以在鏡像資料庫專案的 [首頁] 頁面的 OneLake 中取得登陸區域 URL。 此登陸區域是您的應用程式以 Parquet 格式建立元數據檔案和登陸數據的位置(未壓縮、Snappy、GZIP、ZSTD)。
登陸區域
針對每個鏡像資料庫,OneLake 中都有元數據和差異數據表的唯一儲存位置。 開啟鏡像會為應用程式提供登陸區域資料夾,以建立元數據檔案,並將數據推送至 OneLake。 鏡像會監視登陸區域中的這些檔案,並讀取新增之數據表和數據的資料夾。
例如,如果您有在登陸區域中建立的數據表 (Table A
、 Table B
Table C
、 ),請建立資料夾,例如下列 URL:
https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/TableA
https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/TableB
https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/TableC
登陸區域中的元數據檔案
每個數據表資料夾都必須包含檔案 _metadata.json
。
此資料表元資料檔案包含 JSON 記錄,目前僅將唯一索引鍵資料列指定為 keyColumns
。
例如,若要宣告數據行 C1
,以及 C2
做為數據表的複合唯一索引鍵:
{
"keyColumns" : ["C1", "C2"]
}
如果未 keyColumns
指定 或 _metadata.json
,則無法更新/刪除。 您可以隨時新增此檔案,但一旦新增 keyColumns
就無法變更。
登陸區域中的數據檔和格式
開啟鏡像支援 Parquet 作為登陸區域檔格式,無論是否壓縮。 支援的壓縮格式包括Snappy、GZIP 和 ZSTD。
寫入登陸區域的所有 Parquet 檔案都有下列格式:
<RowMarker><DataColumns>
RowMarker
:數據行名稱是__rowMarker__
(包括前後rowMarker
的兩個底線)。RowMaker
值:0
針對 INSERT1
適用於UPDATE2
for DELETE4
for UPSERT
數據列順序:檔案中的所有記錄都應該按照交易中套用的自然順序。 對於更新多次的相同數據列而言,這很重要。 開啟鏡像會使用檔案中的順序來套用變更。
檔案順序:檔案應該以單調遞增的數位新增。
檔案名:檔案名為 20 位數,例如
00000000000000000001.parquet
第一個檔案,而00000000000000000002.parquet
第二個數位則為 。 檔名應以連續數字為單位。 鏡像服務會自動刪除檔案,但最後一個檔案將會保留,讓發行者系統可以參考它,以依序新增下一個檔案。
初始載入
若要將數據初始載入至開啟的鏡像資料庫,所有數據列都應該有 INSERT 做為數據列標記。 如果沒有 RowMarker
檔案中的數據,鏡像會將整個檔案視為 INSERT。
累加變更
開啟鏡像會依序讀取累加變更,並將其套用至目標 Delta 數據表。 順序在變更記錄檔和檔案的順序中是隱含的。
更新的數據列必須包含完整數據列數據,且所有數據行。
以下是將數據列記錄的一些範例 parquet 數據從 Redmond 變更EmployeeLocation
EmployeeID
為 Bellevue 的 E0001。 在此案例中,數據EmployeeID
行已標示為登陸區域中元數據檔案中的索引鍵數據行。
__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Redmond
0,E0002,Redmond
0,E0003,Redmond
1,E0001,Bellevue
如果索引鍵數據行已更新,則應該由上一個索引鍵數據行上的 DELETE 和具有新索引鍵和數據之 INSERT 數據列呈現。 例如,將 E0001 的唯一RowMarker
EmployeeID
標識碼變更為 E0002 的數據列記錄。 您不需要提供 DELETE 資料列的所有資料行數據,只有索引鍵數據行。
__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Bellevue
2,E0001,NULL
0,E0002,Bellevue
數據表作業
開啟鏡像支持數據表作業,例如新增、卸除和重新命名數據表。
新增資料表
開啟鏡像會挑選應用程式新增至登陸區域的任何數據表。 在每次反覆運算中開啟新數據表的鏡像掃描。
卸除資料表
開啟鏡像會追蹤資料夾名稱。 如果刪除數據表資料夾,開啟鏡像會卸除鏡像資料庫中的數據表。
如果重新建立資料夾,開啟鏡像會卸除數據表,並使用資料夾中的新數據重新建立該數據表,方法是追蹤資料夾的ETag來完成。
嘗試卸除數據表時,您可以嘗試刪除資料夾,但有可能開啟鏡像仍在使用資料夾中的數據,而導致發行者刪除失敗。
重新命名數據表
若要重新命名數據表,請卸除並重新建立具有初始和增量數據的資料夾。 數據必須重新填入重新命名的數據表。
結構描述
您可以在架構資料夾內指定資料表路徑。 架構登陸區域應該有 <schemaname>.schema
資料夾名稱。 可以有多個架構,而且架構中可以有多個數據表。
例如,如果您有要在登陸區域中建立的架構 (Schema1
、 Schema2
) 和數據表 (Table A
、 Table B
Table C
、 ),請在 OneLake 中建立類似下列路徑的資料夾:
https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/Schema1.schema/TableA
https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/Schema1.schema/TableB
https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/Schema2.schema/TableC
數據表數據行和數據行作業
資料行類型
- 登陸區域支持簡單的 parquet 類型。
- 複雜類型應該寫入為 JSON 字串。
- 地理、影像等二進位複雜類型可以儲存為登陸區域中的二進位類型。
新增資料行
如果新的數據行新增至 parquet 檔案,則開啟鏡像會將數據行新增至差異數據表。
刪除資料行
如果從新的記錄檔卸除數據行,請開啟新數據列中這些數據行的鏡像存放區 NULL
,而舊數據列具有數據中的數據行。 若要刪除數據行, 請卸除數據表 ,然後再次在登陸區域中建立數據表資料夾,這會導致使用新的架構和數據重新建立 Delta 資料表。
開啟鏡像一律會聯集舊版新增數據的所有數據行。 若要移除數據行,請重新建立資料表/資料夾。
變更資料行類型
若要變更數據行類型,請卸除並重新建立具有新數據行類型之初始和累加數據的資料夾。 提供新的數據行類型而不重新建立數據表會導致錯誤,而該數據表的復寫將會停止。 重新建立數據表資料夾之後,複寫會以新的資料和架構繼續執行。
重新命名資料行
若要重新命名數據行,請刪除資料表資料夾,然後使用所有資料和新的資料列名稱重新建立資料夾。