一般化資料匯出

一般化資料匯出方法提供採用 JSON 格式的檔案式資料匯出。使用此方法匯出維護物件的資料,會初始匯出實體的整個資料,接著會隨時間持續匯出對該資料所做的變更。下圖說明這些處理:

左邊描述「應用程式」、右邊描述「客戶物件儲存」的影像。在「應用程式」中有一個包含「要匯出的實體」的資料庫,在此圖表中,該資料庫透過一個箭頭連接到資料庫外部的「初始資料匯出批次處理」。箭頭上方的文字顯示「透過大量 SQL 擷取資料」。另一個箭頭從批次處理方塊指向「客戶物件儲存」區段內的 JSON 檔案。批次處理方塊有與此步驟相關的備註參考,以接下來的整體步驟摘要進行描述。下方還有另一個箭頭,從「要匯出的實體」方塊指向資料庫中標示為「更新」的圓圈。此箭頭的文字為「變更資料擷取 (CDC)」。有一個從「更新」圓圈指向資料庫外部「持續匯出批次處理」方塊的箭頭,此箭頭的文字為「透過大量 SQL 擷取資料」。此批次處理透過箭頭連接到另一組 JSON 檔案。

整體處理包含下列步驟:
  • 一般化匯出操作面板入口中,啟用要匯出的實體。您可以同時啟用多個實體。此步驟也可讓您啟用這些實體的持續匯出作業。

  • 提交「一般化初始匯出起始器」(F1-GEXPI) 批次處理,以匯出所有已啟用實體目前的內容。此步驟會分別為您已啟用要匯出的每個實體,提交個別的批次處理。

    備註:您可以改用完整的資料庫匯出作業。您可以將匯出檔案匯入目標環境,以建立初始基準。雲端客戶可以與雲端作業聯絡,要求此類匯出以供內部部署之用。此結構匯出僅供報告之用,且只能用於初始擷取。
  • 排定「一般化持續匯出」(F1-GEEXO) 批次處理以定期執行。

下列各節將進一步討論與一般化資料匯出方法相關的概念和指導方針。

適用性

雖然大多數實體都適用於一般化資料匯出,但並非所有實體都是。以下是一些常見原因:
  • 實體管理非常大量的資料。追蹤對這類實體的變更會讓受管理的資料量加倍,進而影響整體的效能。

  • 該實體更新頻繁。追蹤這些事件可能會影響整體的效能。

  • 產品的基礎架構和作業處理會使用該實體。這些實體有不同的維護方式,無法以一般化資料匯出方法來處理。

根據預設,除非資料匯出類別選項明確標示,否則維護物件適用於一般化資料匯出方法。此選項可用來將實體標示為不允許用任何匯出類型來處理,或是只允許進行特殊化匯出作業。若未設定這類明確的選項,代表維護物件適用於一般化匯出作業。

警告:如果實體明確標示為不適用於一般化資料匯出,則該實體的組態不應變更。

一體適用的方法

一般化資料匯出方法是專門設計來以一般的方式,適應多種適用的維護物件,而且還必須將效能納入考量。因此,此方法不支援實體特定的篩選選項,也不支援任何種類的自訂規則。

下列規則適用於使用此方法匯出的所有實體:
  • 匯出整個資料。
    • 除了「索引鍵」和「日誌」資料表 (如果有的話) 之外,所有屬於維護物件之資料表的所有欄位都會匯出。

    • 維護物件日誌資料表通常不包含有用的業務資訊,因此基於效能和資料量理由,系統在匯出資料時會予以省略。不過,有些實體的日誌記錄會提供分析值。如果適用的話,請使用匯出日誌資料表選項,以明確包含特定維護物件的日誌資料表。

  • 所有實體都使用相同的資料結構及格式。如需詳細資訊,請參考記錄格式小節。

  • 只將資料匯出至檔案。如需詳細資訊,請參考只匯出至檔案小節。

  • 擷取所有變更。進行持續匯出作業時,無法根據自訂商業規則排除追蹤部分的變更。

  • 當資料變更時,系統會匯出與該實體相關之資料的完整快照,以避免在目標端進行繁重的資料合併作業。

  • 刪除實體時,只會匯出實體的主索引鍵,並指出該實體已被刪除。

備註:不支援對於利用邏輯時區功能之實體的匯出作業。此類型的定義並非經常使用,而且包含其中至少一個欄位被定義為採用邏輯標準時間來儲存的維護物件。

只匯出至檔案

初始及持續匯出處理的直接目的地,都是客戶指定位置中的檔案。在雲端安裝中,系統會在客戶擁有的「物件儲存」中建立檔案。

您可以根據業務需求,進一步讓下游應用程式 (例如,資料湖等) 使用這些檔案。

啟用資料匯出

若要啟用適用維護物件的資料匯出,必須建立資料匯出控制記錄。該記錄會指出維護物件的初始匯出是否已完成,以及是否必須要持續追蹤並匯出對實體所做的變更。指定的入口可讓您同時啟用多個維護物件的一般化資料匯出功能,還可快速監視其目前的匯出狀態。如需詳細資訊,請參考一般化匯出操作面板入口。

警告:只能透過「一般化匯出操作面板」或「資料匯出控制」入口來啟用和停用要匯出的實體,以確保組態有效且完整。
警告:如果適用的話,應先啟用持續資料匯出功能,再提交實體的初始匯出批次處理。這樣可確保能正確追蹤初始匯出期間所做的變更。

系統會在各種線上和批次快取中快取持續匯出選項。為了讓這些選項生效並追蹤任何線上或批次處理程序所做的實體變更,當這些選項變更時,必須正確地排清各種快取。使用指定的入口來啟用要匯出的實體,會觸發快取的「全域」排清作業。如果批次執行緒集區背景工作設定為在要求全域排清時,重新整理它們的快取,則此為唯一的必要步驟。如果沒有,則還應提交 F1–FLUSH 批次工作以重新整理批次處理中使用的快取。如需詳細資訊,請參閱快取概觀

初始資料匯出

適用於一般化資料匯出方法的每個維護物件,都會與使用匯出批次控制選項的維護物件所參考的初始資料匯出批次控制相關聯。所有這些批次控制都會使用相同的通用批次程式,將實體的整個資料匯出至檔案。此程序能夠以多執行緒的方式來執行,且預設會為每個執行緒產生一個檔案。選擇性批次參數可讓您針對每個執行緒產生數個較小的檔案,方法是設定寫入每個檔案的記錄數限制。如需詳細資訊,請參考檔案大小小節。

您不必為已啟用要匯出的每個維護物件手動提交一般化初始匯出批次處理,您可以提交 F1-GEXPI「一般化初始匯出起始器」批次處理來一次全部自動提交。

每個維護物件的初始匯出處理,都會更新與維護物件相對應的資料匯出控制記錄,以指出處理已開始執行,並在處理完成時再次更新該記錄。這可讓您在一般化匯出操作面板入口上,檢視所有已啟用實體的整體初始匯出狀態。

請注意,該起始器批次處理只會針對已啟用的維護物件提交批次處理,而維護物件根據其資料匯出控制記錄,其初始匯出尚未開始。如果您需要再次匯出一或多個實體,請重設其資料匯出控制記錄中的初始匯出狀態指示,並再次提交該起始器批次處理。

初始匯出檔案名稱的建構方式如下:
INIT_EXPORT[_file prefix(optional)]_[maintenance object]_[batch run]_[thread]_[thread count]_[timestamp][_file sequence].json.gz 
只有在為每個執行緒建立多個檔案時,才會使用檔案名稱的「檔案順序」部分。系統會從第二個檔案開始植入順序後綴,方式如下:_2。

如需詳細資訊,請參考任何個別的一般化初始匯出批次控制和起始器批次控制。

依日期限制初始匯出

根據預設,「初始資料匯出」批次處理會匯出實體的整個資料。在某些情況下 (通常是在有大量歷史資料時),您可能需要把匯出作業限制在較近期的資料,例如過去幾個月的資料。

初始匯出批次處理支援選擇性的批次參數依日期限制,該參數可用來限制要匯出的資料範圍。該參數會參考日期欄位與要求的時間範圍 (以業務日期之前的天數計)。如需詳細資訊,請參考 F1-GEIXP「一般化初始匯出範本」批次控制。

警告:若要排除某些記錄而不予以匯出時,應仔細考量,因為若有其他已匯出的實體參考排除的資料時,可能會導致資料產生差異。
備註:此選項僅適用於有合格參考日期的特定實體,且每個客戶的匯出時間範圍可能會有所不同。因此,我們不會在任何基準產品「初始匯出」批次控制中新增參數,但用於建立文件的範本批次控制除外。您可以針對特定實體來複製基準產品批次控制,並依據您的業務需求來新增參數。

持續資料匯出

「擷取變更以供持續匯出使用 (F1-MO-REGCHN) 維護物件稽核」演算法會追蹤資料變更。該演算法會將已變更實體的主索引鍵記錄在指定的資料匯出更新資料表中,作為要匯出的已變更實體佇列。持續資料匯出批次處理稍後會使用該佇列。

備註:「維護物件稽核」外掛點可追蹤任何應用程式層對實體所做的變更。使用直接 SQL 進行變更會略過此機制,因此應避免使用。

當您啟用與維護物件相對應之資料匯出控制記錄上的持續資料匯出選項時,系統會為該維護物件新增稽核規則。同樣地,當您停用持續匯出選項時,系統就會移除維護物件的稽核規則。

備註:您必須先啟用實體之資料匯出控制記錄上的持續匯出選項,才能進行該實體的初始匯出作業。這可確保系統不會遺漏在初始匯出處理執行期間所做的變更。

與需要為每個適用的維護物件定義批次控制的初始匯出批次處理不同,您只需要使用單一批次處理就能匯出對所有實體所做的持續變更。

以下概略說明持續匯出批次處理功能:
  • 系統會將「資料匯出更新」資料表中已加入佇列的所有變更匯出至指定的持續匯出檔案。如需詳細資訊,請參考管理大存量小節。

  • 系統會匯出與已變更實體相關之資料的完整快照,以避免在目標端進行繁重的資料合併作業。

  • 匯出記錄後,就會刪除「資料匯出更新」資料表中的記錄。

此處理為多執行緒,且預設會為每個執行緒產生個別的檔案。選擇性批次參數可讓您針對每個執行緒產生數個較小的檔案,方法是設定寫入每個檔案的記錄數限制。如需詳細資訊,請參考檔案大小小節。

備註:請務必將持續匯出批次處理排定為經常執行,以避免在「資料匯出更新」資料表中累積大量記錄。您保存的資料表越小,變更資料擷取機制為該資料表新增記錄的速度就越快。
持續匯出檔案名稱的建構方式如下:
INC_EXPORT_[batch run]_[thread]_[thread count]_[timestamp][_file sequence].json.gz 
只有在為每個執行緒建立多個檔案時,才會使用檔案名稱的「檔案順序」部分。系統會從第二個檔案開始植入順序後綴,方式如下:_2。

如需詳細資訊,請參考「一般化持續匯出」(F1-GEEXO) 批次控制。

檔案大小

初始匯出批次處理預設會為每個執行緒產生一個檔案。對於某些大量實體,這可能會導致檔案太大而無法管理。若要為特定實體產生多個較小的檔案,請在為實體定義的初始匯出批次控制上設定對應的參數,以限制寫入每個檔案的記錄數。您可以在提交「初始匯出起始器」批次處理時,提供相同的參數;在此情況下,只有在實體的特定批次控制記錄上未定義對應的值時,才會使用起始器值。

同樣地,持續匯出批次處理預設會為每個執行緒產生一個檔案。若要產生多個較小的檔案,請在批次控制上設定對應的參數,以限制寫入每個檔案的記錄數。

為了避免讓單一批次執行建立太多檔案,系統設定每次執行最多產生 500 個檔案的限制。若每個檔案的要求記錄數確定會造成產生的檔案數超出系統限制,請調整所用的實際值以符合系統限制。

管理大存量

當系統因為某種原因,在持續匯出佇列中累積了大存量的變更時,下一個批次就需要花較長的時間來匯出,進而延遲了下游的匯入步驟。較好的選擇是清除較小「區塊」的存量,讓下游處理作業在有區塊可用時將其匯入。

您可以使用執行緒處理限制批次參數,來限制批次處理匯出的記錄數。指定參數後,每個執行緒所匯出的記錄數上限就會受到指定的限制,後續的批次執行就會繼續使用剩餘的記錄。您不必等待下一個排定批次執行,如果已明確要求使用自動存量清除批次參數進行處理,就會自動提交新的批次處理。

務必確保存量會逐漸清除,且佇列會及時恢復正常大小。因此,必須使用適當的值設定處理限制以便適當地清除佇列。若要這麼做,所有執行緒執行的每個批次執行都必須處理至少 20% 的佇列和至少 100,000 筆的記錄。若您指定的限制不符合最低清除要求,請據此調整該處理限制。

記錄格式

基於效能考量,系統會利用大量讀取作業,直接從資料庫擷取和匯出資料。因此,所使用的結構不會反映實體的邏輯資料模型,而是反映其實體資料表列表。指定實例的資料會依資料表、每個資料表中的資料列,以及每個資料列中採用 JSON 格式的欄位列表來進行組織。

以下說明所使用的格式和結構:

{
"OBJ": "<mo name>",
"TIMESTAMP": "<export time in ISO format for example 2019-07-25T11:06:04.740615Z>",
"PK1": "<mo pk1 value>",
"PK2": "<mo pk2 value if any>",  ← PK2-5 should only be included when applicable
"PK3": "<mo pk3 value if any>",
"PK4": "<mo pk4 value if any>",
"PK5": "<mo pk5 value if any>",
"DELETED": true,  ← should only be included when the entity is deleted
"DATA": 
{
"<MO table name 1>":
[
{<name value pairs of all fields in row 1 in that table>},
{<name value pairs of all fields in row 2 in that table>},...
{<name value pairs of all fields in row n in that table>},...
],
"<MO table name 2>":
[
{<name value pairs of all fields in row 1 in that table>},
{<name value pairs of all fields in row 2 in that table>},...
{<name value pairs of all fields in row n in that table>}
],...
 "<MO table name n>":
[
 {<name value pairs of all fields in row 1 in that table>},
{<name value pairs of all fields in row 2 in that table>},...
{<name value pairs of all fields in row n in that table>}
]
}

關於欄位值和格式的備註:

  • 即使欄位為空白或空值,也會包含資料列的所有欄位。 

  • 系統會修剪所有字串值多餘的尾端空格,但如果欄位是空白的,則會匯出為空白字串 "" 而非空值。

  • 當資料表中的實體沒有記錄時,系統會在資料表節點使用空白陣列。

  • 系統會把日期/時間資訊轉換成 UTC 時區,並以 ISO 格式匯出,例如 2019-07-25T11:06:04.740615Z。

  • 刪除項目在標頭中會有明確的指標。

檔案的使用順序

請務必先為維護物件套用所有初始匯出檔案,再套用持續變更檔案以確保資料的一致性。

以下是使用一般化資料匯出檔案的建議程序:
  • 先套用所有初始資料匯出檔案,再套用持續匯出檔案。

  • 依照執行編號的順序來套用維護物件的初始檔案。

  • 依照執行編號的順序來套用持續匯出檔案。

  • 如果有新的初始匯出可用,則應暫時變更檔案使用程序,如下所示:

    • 停止使用持續匯出檔案。

    • 套用新的初始匯出檔案。

    • 繼續使用持續匯出檔案。

復原遺漏的持續匯出檔案

持續匯出批次處理會將特定批次執行時匯出之所有實體索引鍵的備份保留在指定的備份資料表中。在極少數的情況下,如果持續匯出檔案在進行處理之前就被刪除或損毀,則可以使用該備份資料表來找出遺漏的變更,然後再次將其匯出。

使用「還原一般化匯出索引鍵」(F1-GERST) 批次處理來復原此情況。該處理會找出在指定批次執行期間匯出的實體,並將它們從備份資料表新增回持續變更佇列。接著便會下一次持續匯出執行期間,再次匯出該實體。此方法不會還原所遺失之原始檔案的確切內容,因為這是無法重新產生的。但是,此處理可確保會再次匯出遺漏檔案中所含的實體。

備註:基於效能考量,備份記錄會依照每週保留原則來處理。這是專門用來支援近期發生的檔案復原情況,而不是歷史變更資料擷取日誌。