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

DataWorks:MariaDB

最終更新日:Mar 01, 2026

MariaDB データソースは、MariaDB からのデータ読み取りと MariaDB へのデータ書き込みを行うための双方向チャネルを提供します。このトピックでは、DataWorks が MariaDB に対して提供するデータ同期機能について説明します。

サポート対象の MariaDB バージョン

MariaDB データソースは、以下のバージョンをサポートしています:

MariaDB バージョン 5.5.x、10.0.x、10.1.x、10.2.x、10.3.x がサポートされています。また、オフライン同期を使用してビューからデータを読み取ることもできます。

サポート対象のフィールドタイプ

各 MariaDB バージョンのフィールドタイプの完全なリストについては、MariaDB の公式ドキュメントをご参照ください。次の表に、MariaDB 10.3.x でサポートされている主要なフィールドタイプを示します。

フィールドタイプ

オフライン読み取り (MariaDB Reader)

オフライン書き込み (MariaDB Writer)

TINYINT

サポート

サポート

SMALLINT

サポート

サポート

INTEGER

サポート

サポート

BIGINT

サポート

サポート

FLOAT

サポート

サポート

DOUBLE

サポート

サポート

DECIMAL/NUMERIC

サポート

サポート

REAL

非サポート

非サポート

VARCHAR

サポート

サポート

JSON

サポート

サポート

TEXT

サポート

サポート

MEDIUMTEXT

サポート

サポート

LONGTEXT

サポート

サポート

VARBINARY

サポート

サポート

BINARY

サポート

サポート

TINYBLOB

サポート

サポート

MEDIUMBLOB

サポート

サポート

LONGBLOB

サポート

サポート

ENUM

サポート

サポート

SET

サポート

サポート

BOOLEAN

サポート

サポート

BIT

サポート

サポート

DATE

サポート

サポート

DATETIME

サポート

サポート

TIMESTAMP

サポート

サポート

TIME

サポート

サポート

YEAR

サポート

サポート

LINESTRING

非サポート

非サポート

POLYGON

非サポート

非サポート

MULTIPOINT

非サポート

非サポート

MULTILINESTRING

非サポート

非サポート

MULTIPOLYGON

非サポート

非サポート

GEOMETRYCOLLECTION

非サポート

非サポート

前提条件:MariaDB 環境の準備

DataWorks を使用してデータを同期する前に、ご利用の MariaDB 環境を準備する必要があります。これにより、MariaDB のデータ同期タスクを問題なく設定および実行できるようになります。

MariaDB バージョンの確認

Data Integration は、特定のバージョンの MariaDB をサポートしています。詳細については、「サポート対象の MariaDB バージョン」セクションをご参照ください。ご利用の MariaDB データベースで以下の文を実行して、バージョンを確認できます。

アカウント権限の設定

DataWorks がデータソースにアクセスするための専用の MariaDB アカウントを作成します。

  1. (任意) アカウントの作成。

    詳細については、「MariaDB ユーザーの作成」をご参照ください。

  2. 権限の設定。

    • MariaDB からのオフライン読み取りの場合、アカウントには同期対象のテーブルに対する SELECT 権限が必要です。

    • MariaDB へのオフライン書き込みの場合、アカウントには同期対象のテーブルに対する INSERTDELETEUPDATE 権限が必要です。

  3. 以下のコマンドを実行してアカウントに権限を付与するか、直接 SUPER 権限を付与することができます。以下の文を実行する際は、「sync_account」を作成したアカウントに置き換えてください。

    -- CREATE USER 'sync_account'@'%' IDENTIFIED BY 'password'; // 同期アカウントを作成し、パスワードを設定し、任意のホストからのログインを許可します。アットマーク (%) は任意のホストを示します。
    GRANT SELECT, INSERT, DELETE, UPDATE ON *.* TO 'sync_account'@'%'; // データベースに対する SELECT、INSERT、DELETE、UPDATE 権限を同期アカウントに付与します。

データソースの追加

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

データ同期タスクの開発

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

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

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

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

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

Reader スクリプトのデモ

{
    "type":"job",
    "version":"2.0",// バージョン番号。
    "steps":[
        {
            "stepType":"mariadb",// プラグイン名。
            "parameter":{
                "column":[// カラム名。
                    "id"
                ],
                "connection":[
                    {   "querySql":["select a,b from join1 c join join2 d on c.id = d.id;"], // 接続内で querySql を文字列として記述します。
                        "datasource":"",// データソース。
                        "table":[// テーブル名。テーブルが 1 つしかない場合でも、配列形式 [] で記述する必要があります。
                            "xxx"
                        ]
                    }
                ],
                "where":"",// フィルター条件。
                "splitPk":"",// 分割キー。
                "encoding":"UTF-8"// エンコーディング形式。
            },
            "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

データを同期する元のテーブルの名前。1 つの Data Integration タスクでは、1 つの宛先テーブルにのみデータを同期できます。

以下の例は、table パラメーターを使用して範囲を設定する高度な使用法を示しています:

  • 範囲を設定して、シャーディングされたデータベースやテーブルからデータを読み取ることができます。たとえば、'table_[0-99]' は、'table_0''table_1''table_2' から 'table_99' までのデータを読み取ることを示します。

  • テーブルに 'table_000''table_001''table_002' から 'table_999' までの同じ長さの数字の接尾辞がある場合、パラメーターを '"table": ["table_00[0-9]", "table_0[10-99]", "table_[100-999]"]' のように設定できます。

説明

タスクは、一致するすべてのテーブルからデータを読み取ります。具体的には、column パラメーターで指定されたカラムを読み取ります。テーブルまたは指定されたカラムが存在しない場合、タスクは失敗します。

はい

なし

column

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

  • カラムプルーニング:特定のエクスポートするカラムを選択できます。

  • カラムの並べ替え:テーブルスキーマとは異なる順序でカラムをエクスポートできます。

  • 定数設定:MariaDB SQL 構文に従う必要があります。例:["id","table","1","'mingya.wmy'","'null'","to_char(a+1)","2.3","true"]

    • id は通常のカラム名です。

    • table は予約語でもあるカラム名です。

    • 1 は整数定数です。

    • 'mingya.wmy' は文字列定数です。単一引用符で囲む必要があることにご注意ください。

    • null について:

  • " " は空の文字列を示します。

  • null は null 値を示します。

  • 'null' は文字列 "null" を示します。

    • to_char(a+1) は文字列長を計算する関数です。

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

    • true はブール値です。

  • column パラメーターは、同期するカラムのコレクションを明示的に指定する必要があり、空にすることはできません。

はい

なし

splitPk

MariaDB Reader がデータを抽出する際に splitPk を指定すると、splitPk が表すフィールドがデータパーティション分割に使用されます。その後、データ同期タスクは同時実行のサブタスクを開始して効率を向上させます。

  • splitPk にはテーブルのプライマリキーを使用してください。プライマリキーは通常、均等に分散しているため、シャード内のデータホットスポットを防ぐのに役立ちます。

  • 現在、splitPk はパーティション分割に整数データ型のみをサポートしています。サポートされていないデータ型を指定した場合、splitPk 機能は無視され、シングルチャネルで同期が行われます。

  • splitPk を指定しない場合、または値が空の場合、シングルチャネルを使用してテーブル内のデータが同期されます。

いいえ

なし

where

フィルター条件。多くのビジネスシナリオでは、where 条件を gmt_create>$bizdate に設定することで、当日のデータを同期することがあります。

  • where 条件により、効率的な増分同期が可能になります。where 句を指定しない場合 (where キーまたは値を省略した場合を含む)、すべてのデータが同期されます。

  • where 条件を limit 10 に設定することはできません。これは MariaDB SQL の where 句の制約に準拠していません。

いいえ

なし

querySql (このパラメーターはコードレス UI ではサポートされていません。)

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

tablescolumnssplitPk

たとえば、複数テーブルの結合後にデータを同期するには、select a,b from table_a join table_b on table_a.id = table_b.id を使用します。querySql を設定すると、MariaDB Reader は table、column、where、および splitPk パラメーターを無視します。querySql パラメーターは、tablecolumnwhere、および splitPk パラメーターよりも優先度が高くなります。datasource は、ユーザー名やパスワードなどの情報を解析するために使用されます。

説明

querySql パラメーターは大文字と小文字を区別します。たとえば、querysql と記述した場合、有効になりません。

いいえ

なし

Writer スクリプトのデモ

{
    "type":"job",
    "version":"2.0",// バージョン番号。
    "steps":[ 
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"mariadb",// プラグイン名。
            "parameter":{
                "postSql":[],// インポート後に実行される文。
                "datasource":"",// データソース。
                "column":[// カラム名。
                    "id",
                    "value"
                ],
                "writeMode":"insert",// 書き込みモード。insert、replace、または update に設定できます。
                "batchSize":1024,// 1 つのバッチで送信するレコード数。
                "table":"",// テーブル名。
                "preSql":[ 
                     "delete from XXX;" // インポート前に実行される文。
                   ]
            },
            "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 into, on duplicate key update, and replace into モードがサポートされています:

  • insert into:プライマリキーまたは一意なインデックスの競合が発生した場合、競合する行は書き込まれず、ダーティデータとして扱われます。コードエディタでタスクを設定する場合、writeMode を insert に設定します。

  • on duplicate key update:プライマリキーまたは一意なインデックスの競合が発生しない場合、動作は insert into と同じです。競合が発生した場合、新しい行は既存の行の指定されたフィールドを置き換えます。コードエディタでタスクを設定する場合、writeMode を update に設定します。

  • replace into:プライマリキーまたは一意なインデックスの競合が発生しない場合、動作は insert into と同じです。競合が発生した場合、既存の行は削除され、新しい行が挿入されます。新しい行は、既存の行のすべてのフィールドを置き換えます。コードエディタでタスクを設定する場合、writeModereplace に設定します。

いいえ

insert into

column

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

はい

なし

preSql

データ同期タスクが実行される前に実行される SQL 文。コードレス UI は 1 つの SQL 文のみをサポートします。コードエディタは複数の SQL 文をサポートします。たとえば、タスクが実行される前にテーブルから古いデータをクリアできます (truncate table tablename)。

説明

複数の SQL 文に対するトランザクションはサポートされていません。

いいえ

なし

postSql

データ同期タスクの実行後に実行される SQL 文。コードレス UI は 1 つの SQL 文のみをサポートします。コードエディタは複数の SQL 文をサポートします。たとえば、タイムスタンプを追加できます ALTER TABLE tablename ADD colname TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

説明

複数の SQL 文に対するトランザクションはサポートされていません。

いいえ

なし

batchSize

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

いいえ

256

updateColumn

プライマリキーまたは一意なインデックスの競合が発生したときに更新するフィールド。このパラメーターは、writeModeupdate に設定されている場合に使用されます。フィールドはカンマ (,) で区切ります。例:"updateColumn":["name", "age"]

いいえ

なし