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

DataWorks:HybridDB for MySQL データソース

最終更新日:Jun 21, 2025

DataWorks は、HybridDB for MySQL データソースからデータを読み書きするための HybridDB for MySQL Reader と HybridDB for MySQL Writer を提供しています。このトピックでは、HybridDB for MySQL データソースとのデータ同期機能について説明します。

制限事項

  • バッチ同期の際にビューのデータを読み取ることができます。

  • HybridDB for MySQL Reader は、テーブルとビューを読み取ることができます。 HybridDB for MySQL Reader を使用してテーブルからデータを読み取る場合は、テーブル内のすべてまたは一部の列を順番に指定したり、列の順序を変更したり、定数フィールドを指定したり、now()などの HybridDB for MySQL 関数を構成したりできます。

データ型マッピング

次の表に、HybridDB for MySQL Reader または HybridDB for MySQL Writer がデータ型を変換する際に基づくデータ型マッピングを示します。

カテゴリ

HybridDB for MySQL データ型

整数

INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT、および YEAR

浮動小数点

FLOAT、DOUBLE、および DECIMAL

文字列

VARCHAR、CHAR、TINYTEXT、TEXT、MEDIUMTEXT、および LONGTEXT

日付と時刻

DATE、DATETIME、TIMESTAMP、および TIME

ブール値

BOOL

バイナリ

TINYBLOB、MEDIUMBLOB、BLOB、LONGBLOB、および VARBINARY

説明
  • 上記の表にリストされていないデータ型はサポートされていません。

  • HybridDB for MySQL Reader は、TINYINT(1)を整数データ型として処理します。

データソースを追加する

DataWorks で同期タスクを開発する前に、データソースを追加および管理するの手順に従って、必要なデータソースを DataWorks に追加する必要があります。 データソースを追加する際に、DataWorks コンソールのパラメータのヒントを表示して、パラメータの意味を理解することができます

データ同期タスクを開発する

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

単一テーブルのデータ同期を設定するバッチ同期タスクを構成する

データベース内のすべてのデータのバッチ同期を実装するための同期設定を構成する

構成手順の詳細については、「Data Integration で同期タスクを構成する」をご参照ください。

付録:コードとパラメータ

コードエディタを使用してバッチ同期タスクを構成する

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

HybridDB for MySQL Reader のコード

シャードされていないテーブルからデータを読み取る HybridDB for MySQL Reader のサンプルコード:

{
    "type": "job",
    "steps": [
        {
            "parameter": {
                "datasource": "px_aliyun_hymysql",// データソースの名前。
                "column": [// データを書き込む列の名前。
                    "id",
                    "name",
                    "sex",
                    "salary",
                    "age",
                    "pt"
                ],
                "where": "id=10001",// WHERE 句。
                "splitPk": "id",// シャードキー。
                "table": "person"// ソーステーブルの名前。
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "parameter": {}
    ],
    "version": "2.0",// バージョン番号。
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    },
    "setting": {
        "errorLimit": {// ダーティデータレコードの最大許容数。
            "record": ""
        },
        "speed": {
            "concurrent": 7,// 並列スレッドの最大数。
            "throttle": true,// スロットリングを有効にするかどうかを指定します。値 false はスロットリングが無効になっていることを示し、値 true はスロットリングが有効になっていることを示します。 mbps パラメータは、throttle パラメータが true に設定されている場合にのみ有効になります。
            "mbps": 1 // 最大伝送速度。単位:MB/s。
        }
    }
}

HybridDB for MySQL Reader のコードのパラメータ

パラメータ

説明

必須

デフォルト値

datasource

データソースの名前。追加されたデータソースの名前と同じである必要があります。コードエディタを使用してデータソースを追加できます。

はい

デフォルト値なし

table

データを読み取るテーブルの名前。各同期タスクは、1 つのテーブルにのみデータを同期するために使用できます。

はい

デフォルト値なし

column

データを読み取る列の名前。JSON 配列で名前を指定します。デフォルト値は [*] で、ソーステーブルのすべての列を示します。

  • 読み取る特定の列を選択できます。

  • 列の順序を変更できます。これは、ソーステーブルのスキーマで指定された順序とは異なる順序で列を指定できることを示します。

  • 定数がサポートされています。列名は、["id", "table","1","'mingya.wmy'","'null'", "to_char(a+1)","2.3","true"] など、HybridDB for MySQL Reader でサポートされている SQL 構文に準拠して配置する必要があります。

    • id:列名。

    • table:予約キーワードを含む列の名前。

    • 1:整数定数。

    • 'mingya.wmy':文字列定数。単一引用符(')で囲みます。

    • 'null':文字列 null。

    • to_char(a+1):文字列の長さを計算するために使用される関数式。

    • 2.3:浮動小数点定数。

    • true:ブール値。

  • column パラメータは、データを読み取るすべての列を明示的に指定する必要があります。パラメータを空にすることはできません。

はい

デフォルト値なし

splitPk

HybridDB for MySQL Reader がデータを読み取るときにデータシャーディングに使用されるフィールド。このパラメータを構成すると、ソーステーブルはこのパラメータの値に基づいてシャードされます。Data Integration は、並列スレッドを実行してデータを読み取ります。これにより、データ同期の効率が向上します。

  • splitPk パラメータをテーブルのプライマリキー列の名前に設定することをお勧めします。データは、特定のシャードにのみ集中的に分散されるのではなく、プライマリキー列に基づいて異なるシャードに均等に分散できます。

  • splitPk パラメータは、整数データ型のデータのみのシャーディングをサポートしています。このパラメータをサポートされていないデータ型のフィールド(文字列、浮動小数点、日付データ型など)に設定すると、HybridDB for MySQL Reader は splitPk パラメータの設定を無視し、単一スレッドを使用してデータを読み取ります。

  • splitPk パラメータが指定されていないか空の場合、HybridDB for MySQL Reader は単一スレッドを使用してデータを読み取ります。

いいえ

デフォルト値なし

where

WHERE 句。たとえば、このパラメータを gmt_create > $bizdate に設定して、現在の日付に生成されたデータを読み取ることができます。

  • WHERE 句を使用して増分データを読み取ることができます。 where パラメータが指定されていないか空の場合、HybridDB for MySQL Reader はすべてのデータを読み取ります。

  • where パラメータを limit 10 に設定しないでください。これは、SQL WHERE 句に対する HybridDB for MySQL の制約に準拠していません。

いいえ

デフォルト値なし

querySql(高度なパラメータ。コードエディタでのみ使用可能)

絞り込んだデータフィルタリングに使用される SQL ステートメント。このパラメータを指定すると、HybridDB for MySQL Reader はこのパラメータの値のみに基づいてデータをフィルタリングします。たとえば、複数のテーブルを結合してデータ同期を行う場合は、このパラメータを ["id","table","1","'mingya.wmy'","'null'","to_char(a+1)","2.3","true"] に設定します。 querySql パラメータの優先度は、table、column、where、および splitPk パラメータの優先度よりも高くなります。 querySql パラメータを指定すると、HybridDB for MySQL Reader は指定した columntablewhere、および splitPk パラメータの設定を無視します。システムは、datasource パラメータで指定されたデータソースに必要なユーザー名やパスワードなどの情報を querySql パラメータから解析します。

いいえ

デフォルト値なし

singleOrMulti(シャードテーブルでのみ使用可能)

ソーステーブルがシャードテーブルであることを指定します。コードレス UI からコードエディタに切り替えると、"singleOrMulti":"multi" 構成が自動的に生成されます。ただし、最初にコードエディタを使用する場合、構成は自動的に生成されないため、コードエディタで手動で構成を追加する必要があります。構成を追加しないと、HybridDB for MySQL Reader は最初のシャードからのみデータを読み取ります。 singleOrMulti パラメータは、フロントエンドでのみ使用されます。

はい

multi

HybridDB for MySQL Writer のコード

{
    "type": "job",
    "steps": [
        {
            "parameter": {},
        {
            "parameter": {
                "postSql": [],// 同期タスクの実行後に実行する SQL ステートメント。
                "datasource": "px_aliyun_hy***",// データソースの名前。
                "column": [// 列の名前。
                    "id",
                    "name",
                    "sex",
                    "salary",
                    "age",
                    "pt"
                ],
                "writeMode": "insert",// 書き込みモード。
                "batchSize": 256,// 一度に書き込むデータレコードの数。
                "encoding": "UTF-8",// エンコーディング形式。
                "table": "person_copy",// デスティネーションテーブルの名前。
                "preSql": []// 同期タスクの実行前に実行する SQL ステートメント。
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "version": "2.0",// バージョン番号。
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    },
    "setting": {
        "errorLimit": {// ダーティデータレコードの最大許容数。
            "record": ""
        },
        "speed": {
            "concurrent": 7,// 並列スレッドの最大数。
            "throttle": true,// スロットリングを有効にするかどうかを指定します。値 false はスロットリングが無効になっていることを示し、値 true はスロットリングが有効になっていることを示します。 mbps パラメータは、throttle パラメータが true に設定されている場合にのみ有効になります。
            "mbps": 1,// 最大伝送速度。単位:MB/s。
        }
    }
}

HybridDB for MySQL Writer のコードのパラメータ

パラメータ

説明

必須

デフォルト値

datasource

データソースの名前。追加されたデータソースの名前と同じである必要があります。コードエディタを使用してデータソースを追加できます。

はい

デフォルト値なし

table

データを書き込むテーブルの名前。

はい

デフォルト値なし

writeMode

書き込みモード。有効な値:

  • replace:プライマリキーの競合または一意なインデックスの競合が発生しない場合、データは、このパラメータを insert に設定した場合と同じ方法で処理されます。競合が発生した場合、デスティネーションテーブルの行の指定されたフィールドが更新されます。

  • insert:プライマリキーの競合または一意なインデックスの競合が発生しない場合、データはデスティネーションテーブルに直接書き込まれます。プライマリキーの競合または一意なインデックスの競合が発生した場合、データは競合する行に書き込むことができず、これらの行に書き込まれないデータはダーティデータと見なされます。

いいえ

insert

column

データを書き込む列の名前。"column":["id","name","age"] など、名前をコンマ(,)で区切ります。デスティネーションテーブルのすべての列にデータを書き込む場合は、"column":["*"] など、値をアスタリスク(*)に設定します。

はい

デフォルト値なし

preSql

バッチ同期タスクの実行前に実行する SQL ステートメント。たとえば、このパラメータを古いデータを削除するために使用される SQL ステートメントに設定できます。コードレス UI では 1 つの SQL ステートメントのみを実行でき、コードエディタでは複数の SQL ステートメントを実行できます。

いいえ

デフォルト値なし

postSql

バッチ同期タスクの実行後に実行する SQL ステートメント。たとえば、このパラメータをタイムスタンプを追加するために使用される SQL ステートメントに設定できます。コードレス UI では 1 つの SQL ステートメントのみを実行でき、コードエディタでは複数の SQL ステートメントを実行できます。

いいえ

デフォルト値なし

batchSize

一度に書き込むデータレコードの数。ビジネス要件に基づいて、このパラメータを適切な値に設定します。これにより、Data Integration と HybridDB for MySQL の間の相互作用が大幅に削減され、スループットが向上します。このパラメータを過度に大きな値に設定すると、データ同期の際にメモリ不足(OOM)エラーが発生する可能性があります。

いいえ

1,024