KingbaseES データソースは、KingbaseES からデータを読み取るだけでなく、KingbaseES へデータを書き込む双方向チャネルを提供します。本トピックでは、DataWorks における KingbaseES データソースのデータ同期機能について説明します。
制限事項
本データソースは、サーバーレスリソースグループ(推奨)およびData Integration 専用リソースグループのみをサポートします。
同期タスクには
insert/replace into権限が必要です。同期タスクの設定時に、preSql および postSql パラメーターに任意の文を指定することで、その他の権限が必要かどうかを判断できます。
サポートされるフィールドの型
以下の表に、KingbaseES Reader がサポートするデータの型を示します。
カテゴリ | データソース内のデータの型 |
整数 | 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 |
上記の表に記載されていないフィールドの型はサポートされません。
KingbaseES Reader プラグインでは、tinyint(1) を整数として扱います。
データソースの追加
DataWorks で同期タスクを開発する前に、データソース管理の手順に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソール上の パラメーターの説明を表示して、各パラメーターの意味を確認できます。
データ同期タスクの開発
同期タスクの設定手順および設定画面へのアクセス方法については、以下の構成ガイドをご参照ください。
単一テーブル向けのオフライン同期タスクの構成
構成手順については、「コードレス UI によるタスク構成」および「コードエディタによるタスク構成」をご参照ください。
コードエディタで使用可能なすべてのパラメーターおよびサンプルスクリプトについては、「付録:スクリプトデモおよびパラメーターの説明」をご参照ください。
付録:スクリプトデモおよびパラメーターの説明
コードエディタを使用したバッチ同期タスクの構成
コードエディタを使用してバッチ同期タスクを構成する場合、統一されたスクリプトフォーマット要件に基づき、関連するパラメーターをスクリプト内に設定する必要があります。詳細については、「コードエディタによるタスク構成」をご参照ください。以下に、コードエディタでバッチ同期タスクを構成する際に、データソースに対して設定する必要があるパラメーターについて説明します。
Reader スクリプトデモ
単一データベース・単一テーブルの構成
{ "type":"job", "version":"2.0",// バージョン番号。 "steps":[ { "stepType":"kingbasees",// プラグイン名。 "parameter":{ "column":[// カラム名。 "id" ], "connection":[ { "querySql":["select a,b from join1 c join join2 d on c.id = d.id;"], // connection 内で 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" } ] } }シャード化されたデータベースおよびテーブルのサンプル構成
説明シャーディングとは、KingbaseES Reader で複数の KingbaseES テーブルを選択できることを意味します。これらのテーブルのスキーマは同一である必要があります。
{ "type": "job", "version": "1.0", "configuration": { "reader": { "plugin": "kingbasees", "parameter": { "connection": [ { "table": [ "tbl1", "tbl2", "tbl3" ], "datasource": "datasourceName1" }, { "table": [ "tbl4", "tbl5", "tbl6" ], "datasource": "datasourceName2" } ], "singleOrMulti": "multi", "splitPk": "db_id", "column": [ "id", "name", "age" ], "where": "1 < id and id < 100" } }, "writer": { } } }
パラメーター | 説明 |
username | ユーザー名。 |
password | パスワード。 |
column | 同期対象のフィールド名。すべてのカラムを同期する場合はアスタリスク (*) を使用します。 |
table | 同期対象のテーブル名。 |
jdbcUrl | KingbaseES への接続に使用する Java Database Connectivity (JDBC) URL。例:jdbc:kingbase8://127.0.0.1:30215?currentschema=TEST。 |
splitPk | 同期処理の分割キーとして使用する KingbaseES テーブル内のフィールド。分割キーを指定することで、高い同時実行性を実現した KingbaseES テーブルの同期が可能になります。 分割キーは数値型の整数フィールドである必要があります。該当するフィールドがない場合は、このパラメーターを空欄のままにしてください。 |
Writer スクリプトデモ
以下のコードは、サンプルスクリプト構成を示しています。
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"kingbasees",// プラグイン名。
"parameter":{
"postSql":[],// インポート後に実行する準備文。
"datasource":"",// データソース。
"column":[// カラム名。
"id",
"value"
],
"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"
}
]
}
}パラメーター | 説明 | 必須 | デフォルト値 |
datasource | データソースの名称。コードエディタではデータソースの追加が可能です。このパラメーターの値は、追加済みのデータソースの名称と一致させる必要があります。 | はい | なし |
table | 同期対象のテーブル名。 | はい | なし |
column | データを書き込む先の宛先テーブルのフィールド。フィールド名はカンマ (,) で区切ります。例: すべてのカラムに順番通りにデータを書き込む場合は、アスタリスク (*) を使用します。例: 説明 ソース側のフィールド名にスラッシュ (/) が含まれる場合は、バックスラッシュおよび二重引用符でエスケープする必要があります(\"your_column_name\")。たとえば、フィールド名が /abc/efg の場合、エスケープ後のフィールド名は \"/abc/efg\" となります。 | はい | なし |
preSql | データ同期タスク実行前に実行する SQL 文。コードレス UI では 1 つの SQL 文のみをサポートします。コードエディタでは複数の SQL 文をサポートします。たとえば、タスク実行前にテーブル内の既存データをクリアするには、次の文を実行できます: 説明 複数の SQL 文を指定した場合、トランザクションの原子性は保証されません。 | いいえ | なし |
postSql | データ同期タスクの実行後に実行する SQL 文です。コードレス UI では、1 つの SQL 文のみがサポートされます。コードエディタでは、複数の SQL 文がサポートされます。たとえば、タイムスタンプを追加できます: | いいえ | なし |
batchSize | 1 回のバッチで送信するレコード数。この値を大きくすると、データ同期システムとデータソース間のネットワーク通信回数が大幅に削減され、全体的なスループットが向上します。ただし、この値が大きすぎると、データ同期プロセスでメモリ不足 (OOM) エラーが発生する可能性があります。 | いいえ | 1024 |