GBase8a データソースを使用すると、GBase8a からデータを読み取り、GBase8a にデータを書き込むことができます。このトピックでは、DataWorks における GBase8a のデータ同期機能について説明します。
制限事項
GBase8a Reader と GBase8a Writer は、Serverless リソースグループ (推奨) および Data Integration の排他的リソースグループをサポートしています。
insert into...ステートメントを使用する場合、プライマリキーまたは一意なインデックスの競合が発生すると、競合する行は書き込まれません。データはプライマリデータベースの宛先テーブルにのみ書き込むことができます。
説明このタスクには、少なくとも
insert into...権限が必要です。preSql および postSql パラメーターに指定するステートメントには、追加の権限が必要になる場合があります。GBase8a Writer は writeMode パラメーターをサポートしていません。
データソースの追加
DataWorks で同期タスクを開発する前に、「データソース管理」の手順に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールでパラメーターの意味を理解するために、パラメーターの説明を表示できます。
データ同期タスクの開発
同期タスクの構成のエントリポイントと手順については、以下の構成ガイドをご参照ください。
単一テーブルのオフライン同期タスク構成ガイド
手順については、「コードレス UI で構成」および「コードエディタで構成」をご参照ください。
コードエディタのパラメーターの説明とスクリプト例については、「付録: スクリプトデモとパラメーターの説明」をご参照ください。
付録: スクリプトデモとパラメーターの説明
コードエディタを使用したバッチ同期タスクの構成
コードエディタを使用してバッチ同期タスクを構成する場合は、統一されたスクリプト形式の要件に基づいて、スクリプト内の関連パラメーターを構成する必要があります。詳細については、「コードエディタでタスクを構成」をご参照ください。以下に、コードエディタを使用してバッチ同期タスクを構成する際に、データソースに対して構成する必要があるパラメーターについて説明します。
Reader スクリプトデモ
{
"type": "job",
"steps": [
{
"stepType": "gbase8a", // プラグイン名。
"parameter": {
"datasource": "", // データソース名。
"username": "",
"password": "",
"where": "",
"column": [ // フィールド。
"id",
"name"
],
"splitPk": "id",
"connection": [
{
"table": [ // テーブル名。
"table"
],
"datasource":""
}
]
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {
"print": false,
"fieldDelimiter": ","
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",
"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/秒。
}
}
}パラメーター | 説明 | 必須 | デフォルト値 |
datasource | DataWorks のバージョンが GBase8a データソースの追加をサポートしている場合、追加された GBase8a データソースをその名前で参照できます。 | No | None |
table | データを同期するテーブル。JSON 配列を使用してテーブルを指定します。複数のテーブルから同時にデータを読み取ることができます。 複数のテーブルを構成する場合、それらが同じスキーマであることを確認してください。GBase8a Reader は、テーブルが一貫した論理構造を持っているかどうかをチェックしません。 説明 table パラメーターは connection 構成単位に含める必要があります。 | Yes | None |
column | 構成されたテーブルから同期する列。JSON 配列を使用してフィールドを記述します。デフォルトでは、すべての列が使用されます (例: [*])。
| Yes | None |
splitPk | GBase8a Reader がデータを抽出する際、splitPk を指定すると、splitPk で表されるフィールドがデータパーティションに使用されます。その後、データ同期タスクは同時サブタスクを開始して効率を向上させます。
| No | Empty |
where | フィルター条件。GBase8a Reader は、指定された column、table、および where 条件に基づいて SQL ステートメントを構築し、その SQL ステートメントに基づいてデータを抽出します。 たとえば、テストの場合、where 条件を limit 10 に設定できます。一般的なビジネスシナリオでは、where 条件を
| No | None |
querySql | 一部のビジネスシナリオでは、where パラメーターではフィルター条件を記述するのに十分ではありません。このパラメーターを使用して、カスタムフィルター SQL ステートメントを定義できます。このパラメーターを構成すると、データ同期システムは tables、columns、および splitPk パラメーターを無視し、このパラメーターの内容を使用してデータをフィルターします。 querySql を構成すると、GBase8a Reader は table、column、where、および splitPk パラメーターを無視します。 | No | None |
fetchSize | このパラメーターは、データベースサーバーから各バッチで取得するレコード数を指定します。この値は、Data Integration とサーバー間のネットワークインタラクションの数を決定し、データ抽出パフォーマンスを大幅に向上させることができます。 説明 過度に大きい fetchSize 値 (2048 より大きい) は、データ同期プロセスでメモリ不足 (OOM) エラーを引き起こす可能性があります。 | No | 1,024 |
Writer スクリプトデモ
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"gbase8a",// プラグイン名。
"parameter":{
"datasource": "Data source name",
"username": "",
"password": "",
"column": [// フィールド。
"id",
"name"
],
"connection": [
{
"table": [// テーブル名。
"Gbase8a_table"
],
"datasource":""
}
],
"preSql": [ // データ同期タスクの実行前に実行する SQL ステートメント。
"delete from @table where db_id = -1"
],
"postSql": [// データ同期タスクの実行後に実行する SQL ステートメント。
"update @table set db_modify_time = now() where db_id = 1"
]
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// エラーレコード数。
},
"speed":{
"throttle":true,// throttle を false に設定すると、mbps パラメーターは有効にならず、レート制限は課されません。throttle を true に設定すると、レート制限が課されます。
"concurrent":1, // 同時実行ジョブ数。
"mbps":"12"// レート制限。1 mbps = 1 MB/秒。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Writer スクリプトパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。コードエディタはデータソースの追加をサポートしています。このパラメーターの値は、追加されたデータソースの名前と同じである必要があります。 | Yes | None |
table | データを書き込むテーブルの名前。JSON 配列を使用してテーブルを指定します。 説明 table パラメーターは connection 構成単位に含める必要があります。 | Yes | None |
column | データを書き込む宛先テーブルのフィールド。フィールドをコンマで区切ります。例: 説明 column パラメーターを指定する必要があります。空にすることはできません。 | Yes | None |
preSql | 宛先テーブルにデータを書き込む前に、システムはここで指定された標準 SQL ステートメントを実行します。SQL ステートメントがテーブルに対して操作を行う必要がある場合、 | No | None |
postSql | 宛先テーブルにデータを書き込んだ後、システムはここで指定された標準 SQL ステートメントを実行します。 | No | None |
batchSize | 単一バッチで送信するレコード数。この値は、データ同期システムと GBase8a 間のネットワークインタラクションの数を大幅に削減し、全体的なスループットを向上させることができます。この値が大きすぎると、データ同期プロセスでメモリ不足 (OOM) エラーが発生する可能性があります。 | No | 1,024 |