DM(达梦)数据源

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

创建数据源

在进行数据同步任务开发时,您需要在DataWorks上创建一个对应的数据源,操作流程请参见创建并管理数据源详细的配置参数解释可在配置界面查看对应参数的文案提示

数据同步任务开发

数据同步任务的配置入口和通用配置流程可参见下文的配置指导。

单表离线同步任务配置指导

整库离线读同步配置指导

操作流程请参见数据集成侧同步任务配置

附录:脚本Demo与参数说明

离线任务脚本配置方式

如果您配置离线任务时使用脚本模式的方式进行配置,您需要按照统一的脚本格式要求,在任务脚本中编写相应的参数,详情请参见通过脚本模式配置离线同步任务,以下为您介绍脚本模式下数据源的参数配置详情。

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

一次性批量提交的记录数大小,该值可以极大减少数据集成与DM(达梦)的网络交互次数,并提升整体吞吐量。但是该值设置过大可能会造成数据集成运行进程OOM情况。

1024