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

DataWorks:DRDS (PolarDB-X 1.0)

最終更新日:Mar 01, 2026

DRDS (PolarDB-X 1.0) データソースを使用すると、DRDS (PolarDB-X 1.0) からのデータの読み取りと書き込みが可能になります。このトピックでは、このデータソースに対する DataWorks のデータ同期機能について説明します。

制限事項

オフライン読み書き

  • DRDS (PolarDB-X 1.0) プラグインは、MySQL エンジンとのみ互換性があります。DRDS (PolarDB-X 1.0) は分散 MySQL データベースであり、その通信プロトコルのほとんどは MySQL の標準に準拠しています。

  • DRDS (PolarDB-X 1.0) の MySQL 8.0 は、Serverless リソースグループ (推奨) および データ統合専用リソースグループ をサポートしています。

  • 内部的に、DRDS (PolarDB-X 1.0) Writer は Java Database Connectivity (JDBC) を介してリモートの DRDS (PolarDB-X 1.0) データベースのプロキシに接続し、replace into 文を実行して DRDS (PolarDB-X 1.0) にデータを書き込みます。

    実行される SQL 文は replace into であるため、重複したデータの書き込みを防ぐには、テーブルにプライマリキーまたは一意なインデックスが必要です。

  • DRDS (PolarDB-X 1.0) Writer は、データ同期フレームワークを介して Reader からプロトコルデータを取得します。その後、replace into 文を使用して DRDS (PolarDB-X 1.0) にデータを書き込みます。プライマリキーまたは一意なインデックスの競合が発生しない場合、その動作は insert into と同じです。競合が発生した場合、新しい行は既存の行のすべてのフィールドを置き換えます。DRDS (PolarDB-X 1.0) Writer はデータを蓄積し、DRDS (PolarDB-X 1.0) プロキシにコミットします。その後、プロキシはデータを 1 つ以上のテーブルに書き込むかどうか、および複数のテーブルに書き込む際のデータのルーティング方法を決定します。

    説明

    タスクには、少なくとも replace into 権限が必要です。他の権限が必要かどうかは、タスクを設定する際に preSql および postSql で指定する文によって異なります。

  • ビューからの読み取りがサポートされています。

サポートされるフィールドタイプ

DRDS (PolarDB-X 1.0) Reader と Writer は、ほとんどの DRDS (PolarDB-X 1.0) のデータの型をサポートしていますが、一部サポートされていない型もあります。ご利用のデータの型がサポートされていることをご確認ください。

次の表に、DRDS (PolarDB-X 1.0) Reader と Writer でサポートされているデータの型をリストします。

型カテゴリ

DRDS (PolarDB-X 1.0) のデータの型

整数型

INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT

浮動小数点型

FLOAT、DOUBLE、DECIMAL

文字列型

VARCHAR、CHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT

日付/時刻型

DATE、DATETIME、TIMESTAMP、TIME、YEAR

ブール型

BIT、BOOL

バイナリ型

TINYBLOB、MEDIUMBLOB、BLOB、LONGBLOB、VARBINARY

前提条件

DRDS (PolarDB-X 1.0) で操作を実行するために必要な権限を持つデータベースログインアカウントを作成します。詳細については、「アカウントの作成」をご参照ください。

データソースの追加

DataWorks で同期タスクを開発する前に、「データソース管理」の指示に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際、各パラメーターの意味については、DataWorks コンソールでパラメーターの説明をご参照ください

データ同期タスクの開発

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

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

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

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

よくある質問

  • 一貫性ビューの問題

    DRDS (PolarDB-X 1.0) は分散データベースであり、複数のシャーディングされたデータベースとテーブルの一貫性のあるビューを提供することはできません。単一の MySQL データベースとテーブルのデータ同期とは異なり、DRDS (PolarDB-X 1.0) Reader は、同じタイムスライスからシャーディングされたデータベースとテーブルのスナップショット情報を抽出できません。これは、DRDS (PolarDB-X 1.0) Reader が基盤となる異なるシャーディングされたテーブルからデータを抽出する際に、異なるテーブルスナップショットを取得することを意味します。強力な一貫性は保証できません。

  • データベースのエンコーディングの問題

    DRDS (PolarDB-X 1.0) は柔軟なエンコーディング設定を提供します。データベース、テーブル、フィールドの各レベルで異なるエンコーディングを指定できます。エンコーディング設定の優先順位は、高いものから順に、フィールド、テーブル、データベース、そしてインスタンスとなります。データベースレベルでエンコーディングを UTF-8 に設定することを推奨します。

    DRDS (PolarDB-X 1.0) Reader は JDBC を使用してデータを抽出します。JDBC はさまざまなエンコーディングと互換性があり、基盤となるレイヤーでエンコーディング変換を実行します。したがって、DRDS (PolarDB-X 1.0) Reader にエンコーディングを指定する必要はありません。エンコーディングを自動的に取得し、トランスコードできます。

    DRDS (PolarDB-X 1.0) の基盤となるレイヤーへのデータ書き込みに使用されるエンコーディングが、指定されたエンコーディングと一致しない場合、DRDS (PolarDB-X 1.0) Reader はこの不一致を検出できません。このような場合、同期結果に文字化けが含まれる可能性があります。

  • 増分データ同期の方法

    DRDS (PolarDB-X 1.0) Reader は JDBC の SELECT 文を使用してデータを抽出します。次の方法で SELECT…WHERE… を使用して増分データ抽出を実行できます。

    • オンラインアプリケーションがデータベースにデータを書き込む際、追加、更新、または論理的な削除などの変更を示すタイムスタンプで `modify` フィールドを埋めます。これらのアプリケーションでは、DRDS (PolarDB-X 1.0) Reader の設定に、最後の同期のタイムスタンプを含む `WHERE` 句を追加するだけです。

    • 新しいストリーミングデータの場合、前の段階からの最大自動インクリメント ID を含む `WHERE` 句を DRDS (PolarDB-X 1.0) Reader の設定に追加できます。

    アプリケーションに新規データと変更済みデータを区別するフィールドがない場合、DRDS (PolarDB-X 1.0) Reader は増分データ同期を実行できません。完全データのみを同期できます。

  • `WHERE` 句では、物理テーブルに関連するフィルター条件はサポートされていません。

付録:スクリプトのデモとパラメーター

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

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

Reader スクリプトのデモ

{
    "type":"job",
    "version":"2.0",// バージョン番号
    "steps":[
        {
            "stepType":"drds",// プラグイン名
            "parameter":{
                "datasource":"",// データソース名
                "column":[// 列名
                    "id",
                    "name"
                ],
                "where":"",// フィルター条件
                "table":"",// テーブル名
                "splitPk": ""// シャードキー
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",// プラグイン名
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// エラーレコード数
        },
        "speed":{
            "throttle":true,// throttle が false の場合、mbps パラメーターは有効にならず、データレートは制限されません。throttle が true の場合、データレートは制限されます。
            "concurrent":1,// 同時実行数
            "mbps":"12"// 最大データレート。1 mbps = 1 MB/s。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

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

パラメーター

説明

必須

デフォルト値

datasource

データソースの名前。コードエディタはデータソースの追加をサポートしています。このパラメーターの値は、追加されたデータソースの名前と同じである必要があります。

はい

なし

table

データを同期する元のテーブル。

はい

なし

column

指定したテーブルから同期する列。JSON 配列を使用してフィールドを記述します。デフォルトでは、すべての列が使用されます。例:[*]

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

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

  • 定数がサポートされています。MySQL 構文に従う必要があります。たとえば、["id", "`table`", "1", "'bazhen.csy'", "null", "to_char(a + 1)", "2.3", "true"]。この例のパラメーターの説明は以下のとおりです:

    • id は通常の列名です。

    • table は予約済みの列名を使用します。

    • 1 は整数定数です。

    • bazhen.csy は文字列定数です。

    • null はヌルポインタです。

    • to_char(a + 1) は関数式です。

    • 2.3 は浮動小数点数です。

    • true はブール値です。

  • column には同期する列のセットを指定する必要があります。このパラメーターを空にすることはできません。

はい

なし

where

フィルター条件。DRDS (PolarDB-X 1.0) Reader は、指定された columntable、および where パラメーターに基づいて SQL 文を構築し、その SQL 文に基づいてデータを抽出します。

  • where 条件は、増分データ同期に使用できます。

  • where 条件が設定されていないか空の場合、テーブル全体が同期されます。

たとえば、テスト中に `where` 条件を使用してビジネスシナリオを指定できます。通常、当日のデータを同期することがあります。その場合、where 条件を STRTODATE('${bdp.system.bizdate}','%Y%m%d') <= today AND today < DATEADD(STRTODATE('${bdp.system.bizdate}', '%Y%m%d'), interval 1 day) に設定できます。

いいえ

なし

Writer スクリプトのデモ

{
    "type":"job",
    "version":"2.0",// バージョン番号。
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
                },
        {
            "stepType":"drds",// プラグイン名。
            "parameter":{
                "postSql":[],// データ同期タスクの後に実行する SQL 文。
                "datasource":"",// データソース。
                "column":[// 列名。
                "id"
                ],
                "writeMode":"insert ignore",
                "batchSize":"1024",// 1 回のバッチでコミットするレコード数。
                "table":"test",// テーブル名。
                "preSql":[]// データ同期タスクの前に実行する SQL 文。
                },
            "name":"Writer",
            "category":"writer"
                }
                ],
    "setting":{
        "errorLimit":{
        "record":"0"// エラーレコード数。
            },
        "speed":{
            "throttle":true,// throttle が false の場合、mbps パラメーターは有効にならず、データレートは制限されません。throttle が true の場合、データレートは制限されます。
            "concurrent":1, // 同時実行タスクの数。
            "mbps":"12"// 最大データレート。1 mbps = 1 MB/s。
                }
            },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
                }
            ]
        }
    }

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

パラメーター

説明

必須

デフォルト値

datasource

データソースの名前。コードエディタはデータソースの追加をサポートしています。このパラメーターの値は、追加されたデータソースの名前と同じである必要があります。

はい

なし

table

データを同期する先のテーブル。

はい

なし

writeMode

インポートモード。有効な値:insert ignore および replace into

  • insert ignore:プライマリキーまたは制約違反が発生した場合、ソースデータは無視されます。

  • replace into:プライマリキーまたは制約違反が発生した場合、ソースデータが宛先データを置き換えます。

いいえ

insert ignore

column

データを書き込む宛先テーブルのフィールド。フィールドはカンマ (,) で区切ります。例:"column": ["id", "name", "age"]。すべての列に順番に書き込むには、アスタリスク (*) を使用します。例:"column": ["*"]

はい

なし

preSql

データ同期タスクの前に実行する SQL 文。コードレス UI では 1 つの SQL 文しか実行できません。コードエディタでは複数の SQL 文を実行できます。

例: delete * from table xxx; は、データが書き込まれる前に `xxx` テーブルからデータをクリアします。必要に応じてこのパラメーターを設定してください。

いいえ

なし

postSql

データ同期タスクの後に実行する SQL 文。コードレス UI では 1 つの SQL 文しか実行できません。コードエディタでは複数の SQL 文を実行できます。

例:DELETE FROM table xxx WHERE xx=xx; は、データ同期後に特定の条件を満たすデータを削除します。このパラメーターは必要に応じて設定してください。

いいえ

なし

batchSize

1 回のバッチでコミットするレコード数。値を大きくすると、データ同期システムと DRDS (PolarDB-X 1.0) 間のネットワークインタラクションが大幅に減少し、全体的なスループットが向上します。この値が大きすぎると、データ同期プロセスでメモリ不足 (OOM) エラーが発生する可能性があります。

いいえ

1,024