全部產品
Search
文件中心

DataWorks:DM(達夢)資料來源

更新時間:Jun 19, 2024

DM(達夢)資料來源作為資料中樞,為您提供讀取和寫入DM資料庫的雙向通道,能夠快速解決海量資料的計算問題。本文為您介紹DataWorks的DM資料同步的能力支援情況。

使用限制

支援的欄位類型

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上建立一個對應的資料來源,操作流程請參見建立並管理資料來源

單表離線同步任務配置指導

整庫離線讀同步配置指導

操作流程請參見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的數組描述欄位資訊,預設使用所有列配置,例如[ * ]:

  • 支援列裁剪,即列可以挑選部分列進行匯出。

  • 支援列換序,即列可以不按照表schema資訊順序進行匯出。

  • 支援常量配置,您需要按照JSON格式["id","1", "'bazhen.csy'", "null", "to_char(a + 1)", "2.3" , "true"]

    • id為普通列名。

    • 1為整型數字常量。

    • 'bazhen.csy'為字串常量。

    • null為空白指標。

    • to_char(a + 1)為函數運算式。

    • 2.3為浮點數。

    • true為布爾值。

  • column必須顯示您指定同步的列集合,不允許為空白 。

splitPk

DM Reader進行資料幫浦時,如果指定splitPk,表示您希望使用splitPk代表的欄位進行資料分區。資料同步系統會啟動並發任務進行資料同步,以提高資料同步的效能:

  • 推薦splitPk使用者使用表主鍵,因為表主鍵通常情況下比較均勻,切分出來的分區也不容易出現資料熱點。

  • 目前splitPk僅支援整型資料切分,不支援浮點、字串和日期等其他類型。如果您指定其他非支援類型,DM Reader將報錯。

  • 如果不填寫splitPk,將視作您不對單表進行切分,DM Reader使用單通道同步全量資料。

where

篩選條件,DM Reader根據指定的columntablewhere條件拼接SQL,並根據該SQL進行資料幫浦。例如在做測試時,可以將where條件指定為limit 10。

在實際業務情境中,通常會選擇當天的資料進行同步,可以將where條件指定為gmt_create>$bizdate

  • where條件可以有效地進行業務增量同步處理。

  • where條件不配置或為空白時,則視作全表同步資料。

querySql

在部分業務情境中,where配置項不足以描述所篩選的條件,您可以通過該配置型來自訂篩選SQL。當您配置該項後,資料同步系統會忽略columntable等配置,直接使用該配置項的內容對資料進行篩選。

例如,需要進行多表join後同步資料,使用select a,b from table_a join table_b on table_a.id = table_b.id 。當您配置querySql時,DM Reader直接忽略columntablewhere條件的配置。

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不一致,請使用schema.table的格式填寫table資訊。

column

所配置的表中需要同步的列名集合。以英文逗號(,)進行分隔。

說明

建議您不要使用預設列情況。

preSql

執行資料同步任務之前率先執行的SQL語句,目前只允許執行一條SQL語句,例如清除舊資料。

說明

當有多條SQL語句時,不支援事務。

postSql

執行資料同步任務之後執行的SQL語句,目前只允許執行一條SQL語句,例如加上某一個時間戳記。

說明

當有多條SQL語句時,不支援事務。

batchSize

一次性批量提交的記錄數大小,該值可以極大減少Data Integration與DM(達夢)的網路互動次數,並提升整體輸送量。但是該值設定過大可能會造成Data Integration運行進程OOM情況。

1024