DM(達夢)資料來源作為資料中樞,為您提供讀取和寫入DM資料庫的雙向通道,能夠快速解決海量資料的計算問題。本文為您介紹DataWorks的DM資料同步的能力支援情況。
使用限制
離線同步支援閱讀檢視表。
DM Reader和DM Writer僅支援使用獨享Data Integration資源群組。
支援的欄位類型
DM Reader和DM Writer支援大部分通用的關聯式資料庫資料類型,例如數字、字元等。但也存在部分類型沒有支援的情況,請注意檢查您的資料類型,根據具體的資料庫進行選擇。
DM Reader針對DM類型的轉換列表,如下所示。
類型分類 | DM資料類型 |
整數類 | INT、TINYINT、SMALLINT和BIGINT |
浮點類 | REAL、FLOAT、DOUBLE、NUMBER和DECIMAL |
字串類 | CHAR、VARCHAR、LONGVARCHAR和TEXT |
日期時間類 | DATE、DATETIME、TIMESTAMP和TIME |
布爾型 | BIT |
二進位類 | BINARY、VARBINARY和BLOB |
資料同步任務開發
DM資料同步任務的配置入口和通用配置流程指導可參見下文的配置指導,詳細的配置參數解釋可在配置介面查看對應參數的文案提示。
建立資料來源
在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見建立並管理資料來源。
單表離線同步任務配置指導
操作流程請參見通過嚮導模式配置離線同步任務、通過指令碼模式配置離線同步任務。
指令碼模式配置的全量參數和指令碼Demo請參見下文的附錄:指令碼Demo與參數說明。
整庫離線讀同步配置指導
操作流程請參見Data Integration側同步任務配置。
附錄:指令碼Demo與參數說明
附錄:離線任務指令碼配置方式
如果您配置離線任務時使用指令碼模式的方式進行配置,您需要在任務指令碼中按照指令碼的統一格式要求編寫指令碼中的reader參數和writer參數,指令碼模式的統一要求請參見通過指令碼模式配置離線同步任務,以下為您介紹指令碼模式下的資料來源的Reader參數和Writer參數的指導詳情。
Reader指令碼Demo
{
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
"concurrent":1 //作業並發數。
"mbps":"12"//限流,此處1mbps = 1MB/s。
}
},
"steps": [
{
"category": "reader",
"name": "Reader",
"parameter": {
"datasource": "dm_datasource",
"table": "table",
"column": [
"*"
],
"preSql": [
"delete from XXX;"
],
"fetchSize": 2048
},
"stepType": "dm"
},
{
"category": "writer",
"name": "Writer",
"parameter": {},
"stepType": "stream"
}
],
"type": "job",
"version": "2.0"
}
Reader指令碼參數
參數 | 描述 | 是否必選 | 預設值 |
datasource | 輸入DM資料來源名稱,配置資料來源詳情請參見配置DM資料來源。 | 是 | 無 |
table | 所選取的需要同步的表。 | 是 | 無 |
column | 所配置的表中需要同步的列名集合,使用JSON的數組描述欄位資訊,預設使用所有列配置,例如[ * ]:
| 是 | 無 |
splitPk | DM Reader進行資料幫浦時,如果指定splitPk,表示您希望使用splitPk代表的欄位進行資料分區。資料同步系統會啟動並發任務進行資料同步,以提高資料同步的效能:
| 否 | 空 |
where | 篩選條件,DM Reader根據指定的column、table和where條件拼接SQL,並根據該SQL進行資料幫浦。例如在做測試時,可以將where條件指定為limit 10。 在實際業務情境中,通常會選擇當天的資料進行同步,可以將where條件指定為
| 否 | 無 |
querySql | 在部分業務情境中,where配置項不足以描述所篩選的條件,您可以通過該配置型來自訂篩選SQL。當您配置該項後,資料同步系統會忽略column、table等配置,直接使用該配置項的內容對資料進行篩選。 例如,需要進行多表join後同步資料,使用 | 否 | 無 |
fetchSize | 該配置項定義了外掛程式和資料庫伺服器端每次批量資料擷取條數,該值決定了資料同步系統和伺服器端的網路互動次數,能夠提升資料幫浦效能。 說明 fetchSize值過大(>2048)可能造成資料同步進程OOM。 | 否 | 1,024 |
Writer指令碼Demo
{
"type": "job",
"steps": [
{
"stepType": "oracle",
"parameter": {
"datasource": "aaa",
"column": [
"PROD_ID",
"name"
],
"where": "",
"splitPk": "",
"encoding": "UTF-8",
"table": "PENGXI.SALES"
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "dm",
"parameter": {
"datasource": "dm_datasource",
"table": "table",
"column": [
"id",
"name"
],
"preSql": [
"delete from XXX;"
]
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": ""
},
"speed": {
"throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
"concurrent":2, //作業並發數。
"mbps":"12"//限流,此處1mbps = 1MB/s。
}
}
}
Writer指令碼參數
參數 | 描述 | 是否必選 | 預設值 |
datasource | 輸入DM資料來源名稱,配置資料來源詳情請參見配置DM資料來源。 | 是 | 無 |
table | 目標表名稱,如果表的Schema資訊和上述配置username不一致,請使用 | 是 | 無 |
column | 所配置的表中需要同步的列名集合。以英文逗號(,)進行分隔。 說明 建議您不要使用預設列情況。 | 是 | 無 |
preSql | 執行資料同步任務之前率先執行的SQL語句,目前只允許執行一條SQL語句,例如清除舊資料。 說明 當有多條SQL語句時,不支援事務。 | 否 | 無 |
postSql | 執行資料同步任務之後執行的SQL語句,目前只允許執行一條SQL語句,例如加上某一個時間戳記。 說明 當有多條SQL語句時,不支援事務。 | 否 | 無 |
batchSize | 一次性批量提交的記錄數大小,該值可以極大減少Data Integration與DM(達夢)的網路互動次數,並提升整體輸送量。但是該值設定過大可能會造成Data Integration運行進程OOM情況。 | 否 | 1024 |