DataWorks は、GBase 8a データソースからデータを読み取り、GBase 8a データソースにデータを書き込むための GBase 8a Reader と GBase 8a Writer を提供しています。このトピックでは、GBase 8a データソースとのデータ同期機能について説明します。
制限事項
GBase 8a Reader と GBase 8a Writer は、Data Integration 専用リソースグループのみをサポートしています。
INSERT INTO
: プライマリキーの競合または一意のインデックスの競合が発生した場合、競合する行にデータを書き込むことはできません。プライマリデータベースに格納されているテーブルにのみデータを書き込むことができます。
説明GBase 8a Writer を使用する同期タスクには、少なくとも
INSERT INTO
を実行するための権限が必要です。その他の権限が必要かどうかは、タスクの構成時に preSql パラメーターと postSql パラメーターで指定された SQL ステートメントによって異なります。GBase 8a Writer は、writeMode パラメーターをサポートしていません。
データ同期タスクの開発
データ同期タスクの開始点と構成手順については、以下のセクションを参照してください。パラメーター設定については、タスクの構成タブにある各パラメーターの情報ヒントを参照してください。
データソースの追加
特定のデータソースとのデータ同期タスクを構成する前に、DataWorks にデータソースを追加する必要があります。詳細については、「データソースの追加と管理」をご参照ください。
単一テーブルのデータを同期するためのバッチ同期タスクの構成
構成手順の詳細については、「コードレス UI を使用したバッチ同期タスクの構成」および「コードエディターを使用したバッチ同期タスクの構成」をご参照ください。
コードエディターを使用してバッチ同期タスクを構成する場合に構成されるすべてのパラメーターと実行されるコードについては、「付録: コードとパラメーター」をご参照ください。
付録: コードとパラメーター
付録: コードエディターを使用したバッチ同期タスクの構成
コードエディターを使用してバッチ同期タスクを構成する場合は、コードエディターの形式要件に基づいて、関連データソースのリーダーとライターのパラメーターを構成する必要があります。形式要件の詳細については、「コードエディターを使用したバッチ同期タスクの構成」をご参照ください。以下の情報は、コードエディターのリーダーとライターのパラメーターの構成の詳細について説明しています。
GBase 8a 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, // スロットリングを有効にするかどうかを指定します。値 false はスロットリングが無効であることを示し、値 true はスロットリングが有効であることを示します。mbps パラメーターは、throttle パラメーターが true に設定されている場合にのみ有効になります。
"concurrent": 1, // 並列スレッドの最大数。
"mbps":"12"// 最大転送速度。単位: MB/s。
}
}
}
GBase 8a Reader のコードのパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。アクティブ化した DataWorks サービスのエディションで GBase 8a データソースがサポートされている場合は、GBase 8a データソースを追加し、このパラメーターでデータソースを指定できます。 | いいえ | デフォルト値なし |
table | データを読み取るテーブルの名前。GBase 8a Reader は複数のテーブルからデータを読み取ることができます。JSON 配列でテーブル名を指定します。 複数のテーブルを指定する場合は、テーブルのスキーマが同じであることを確認する必要があります。GBase 8a Reader は、テーブルのスキーマが同じかどうかを確認しません。 説明 table パラメーターは、connection パラメーターに含める必要があります。 | はい | デフォルト値なし |
column | データを読み取る列の名前。JSON 配列で名前を指定します。デフォルト値は [ * ] で、ソーステーブルのすべての列を示します。
| はい | デフォルト値なし |
splitPk | GBase 8a Reader がデータを読み取るときにデータシャーディングに使用されるフィールド。このパラメーターを構成すると、ソーステーブルはこのパラメーターの値に基づいてシャーディングされます。その後、Data Integration は並列スレッドを実行してデータを読み取ります。このようにして、データをより効率的に同期できます。
| いいえ | デフォルト値なし |
where | WHERE 句。GBase 8a Reader は、column、table、where パラメーターの設定に基づいて SQL ステートメントを生成し、生成されたステートメントを使用してデータを読み取ります。 たとえば、テストを実行する場合、where パラメーターを limit 10 に設定できます。現在の日付に生成されたデータを読み取るには、where パラメーターを
| いいえ | デフォルト値なし |
querySql | 絞り込んだデータフィルタリングに使用される SQL ステートメント。 このパラメーターを構成すると、このパラメーターの値に基づいてのみデータがフィルタリングされます。 querySql パラメーターを構成すると、GBase 8a Reader は table、column、where、splitPk パラメーターの設定を無視します。 | いいえ | デフォルト値なし |
fetchSize | 一度に読み取るデータレコードの数。このパラメーターは、Data Integration とデータベース間のインタラクションの回数を決定し、読み取り効率に影響します。 説明 このパラメーターを 2048 より大きい値に設定すると、データ同期の際に OutOfMemory ( OOM ) エラーが発生する可能性があります。 | いいえ | 1,024 |
GBase 8a Writer のコード
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"gbase8a",// プラグイン名。
"parameter":{
"datasource": "データソースの名前",
"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,// スロットリングを有効にするかどうかを指定します。値 false はスロットリングが無効であることを示し、値 true はスロットリングが有効であることを示します。mbps パラメーターは、throttle パラメーターが true に設定されている場合にのみ有効になります。
"concurrent":1, // 並列スレッドの最大数。
"mbps":"12"// 最大転送速度。単位: MB/s。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
GBase 8a Writer のコードのパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。追加されたデータソースの名前と同じである必要があります。コードエディターを使用してデータソースを追加できます。 | はい | デフォルト値なし |
table | データを書き込むテーブルの名前。JSON 配列で名前を指定します。 説明 table パラメーターは、connection パラメーターに含める必要があります。 | はい | デフォルト値なし |
column | データを書き込む列の名前。 説明 column パラメーターを空にすることはできません。 | はい | デフォルト値なし |
preSql | 同期タスクの実行前に実行する SQL ステートメント。SQL ステートメントで | いいえ | デフォルト値なし |
postSql | 同期タスクの実行後に実行する SQL ステートメント。 | いいえ | デフォルト値なし |
batchSize | 一度に書き込むデータレコードの数。ビジネス要件に基づいて、このパラメーターを適切な値に設定します。これにより、Data Integration と GBase 8a 間のインタラクションが大幅に削減され、スループットが向上します。このパラメーターを過度に大きい値に設定すると、データ同期の際に OOM エラーが発生する可能性があります。 | いいえ | 1,024 |