すべてのプロダクト
Search
ドキュメントセンター

DataWorks:DM (Dameng)

最終更新日:Mar 01, 2026

DM (Dameng) データソースはデータハブとして機能します。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 で同期タスクを開発する前に、「データソース管理」の指示に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際、各パラメーターの意味については、DataWorks コンソールのパラメーターの説明で確認できます

データ同期タスクの開発

同期タスクの設定のエントリポイントと手順については、以下の設定ガイドをご参照ください。

単一テーブルのオフライン同期タスクの設定

データベース全体のオフライン読み取り同期タスクの設定

詳細については、「データベース全体のリアルタイム同期タスクを設定」をご参照ください。

付録:スクリプト例とパラメーターの説明

コードエディタを使用したバッチ同期タスクの設定

コードエディタを使用してバッチ同期タスクを設定する場合、統一されたスクリプト形式の要件に基づいて、スクリプト内の関連パラメーターを設定する必要があります。詳細については、「コードエディタでタスクを設定」をご参照ください。以下では、コードエディタを使用してバッチ同期タスクを設定する際に、データソースに対して設定する必要があるパラメーターについて説明します。

Reader スクリプトの例

{
  "order": {
    "hops": [
      {
        "from": "Reader",
        "to": "Writer"
      }
    ]
  },
  "setting": {
    "errorLimit": {
      "record": "0"
    },
    "speed": {
      "throttle":true,// throttle が false に設定されている場合、mbps パラメーターは有効にならず、レート制限は適用されません。throttle が true に設定されている場合、レート制限が適用されます。
                  "concurrent":1, // 同時実行ジョブ数。
                   "mbps":"12"// レート制限。1 mbps は 1 MB/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 データソースの設定方法の詳細については、「DM データソースの設定」をご参照ください。

はい

なし

table

同期元のテーブル。

はい

なし

column

同期する列。JSON 配列を使用して列を指定します。デフォルトでは、すべての列が同期されます。例: `["*"]`。

  • 列のプルーニングがサポートされています。列のサブセットをエクスポートできます。

  • 列の並べ替えがサポートされています。テーブルスキーマとは異なる順序で列をエクスポートできます。

  • 定数がサポートされています。定数は 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 文を構築し、その文を使用してデータを抽出します。たとえば、テスト目的で where 条件を `limit 10` に設定できます。

ビジネスシナリオでは、当日生成されたデータを同期したい場合があります。この場合、where 条件を gmt_create>$bizdate に設定できます。

  • where 条件により、効率的な増分データ同期が可能になります。

  • where パラメーターを指定しないか、空のままにすると、テーブル内のすべてのデータが同期されます。

いいえ

なし

querySql

一部のビジネスシナリオでは、where パラメーターだけではフィルター条件を定義するのに不十分な場合があります。このパラメーターを使用して、フィルタリング用のカスタム SQL 文を指定できます。このパラメーターを指定すると、データ同期システムは columntable パラメーターを無視し、カスタム SQL 文を使用してデータをフィルタリングします。

たとえば、複数テーブルの結合後にデータを同期するには、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 スクリプトの例

{
  "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"// レート制限。1 mbps は 1 MB/s に相当します。
    }
  }
}
                

Writer スクリプトのパラメーター

パラメーター

説明

必須

デフォルト値

datasource

DM データソースの名前。DM データソースの設定方法の詳細については、「DM データソースの設定」をご参照ください。

はい

なし

table

宛先テーブルの名前。テーブルのスキーマがデータソース設定で指定されたユーザー名と異なる場合は、テーブル名を schema.table 形式で指定します。

はい

なし

column

宛先テーブルでデータを書き込む列。複数の列名はカンマ (,) で区切ります。

説明

デフォルトの列設定は使用しないでください。

はい

なし

preSql

データ同期タスクが開始される前に実行される SQL 文。1 つの SQL 文のみがサポートされます。たとえば、このパラメーターを使用して古いデータをパージできます。

説明

複数の SQL 文を指定した場合、トランザクションはサポートされません。

いいえ

なし

postSql

データ同期タスクが完了した後に実行される SQL 文。1 つの SQL 文のみがサポートされます。たとえば、このパラメーターを使用してタイムスタンプを追加できます。

説明

複数の SQL 文を指定した場合、トランザクションはサポートされません。

いいえ

なし

batchSize

各バッチで書き込むレコード数。値を大きくすると、データ統合と DM (Dameng) データベース間のネットワーク対話の回数が大幅に減少し、全体のスループットが向上する可能性があります。ただし、この値が大きすぎると、データ統合プロセスで OOM エラーが発生する可能性があります。

いいえ

1024