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

DataWorks:GBase 8a データソース

最終更新日:Jan 11, 2025

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 にデータソースを追加する必要があります。詳細については、「データソースの追加と管理」をご参照ください。

単一テーブルのデータを同期するためのバッチ同期タスクの構成

付録: コードとパラメーター

付録: コードエディターを使用したバッチ同期タスクの構成

コードエディターを使用してバッチ同期タスクを構成する場合は、コードエディターの形式要件に基づいて、関連データソースのリーダーとライターのパラメーターを構成する必要があります。形式要件の詳細については、「コードエディターを使用したバッチ同期タスクの構成」をご参照ください。以下の情報は、コードエディターのリーダーとライターのパラメーターの構成の詳細について説明しています。

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 配列で名前を指定します。デフォルト値は [ * ] で、ソーステーブルのすべての列を示します。

  • 読み取る特定の列を選択できます。

  • 列の順序を変更できます。これは、ソーステーブルのスキーマで指定された順序とは異なる順序で列を指定できることを示します。

  • 定数がサポートされています。例: '123'

  • 関数がサポートされています。例: date('now')

  • column パラメーターでは、データを読み取るすべての列を明示的に指定する必要があります。このパラメーターを空にすることはできません。

はい

デフォルト値なし

splitPk

GBase 8a Reader がデータを読み取るときにデータシャーディングに使用されるフィールド。このパラメーターを構成すると、ソーステーブルはこのパラメーターの値に基づいてシャーディングされます。その後、Data Integration は並列スレッドを実行してデータを読み取ります。このようにして、データをより効率的に同期できます。

  • splitPk パラメーターをテーブルのプライマリキー列の名前に設定することをお勧めします。プライマリキー列に基づいてデータを異なるシャードに均等に分散させることができ、特定のシャードにのみ集中的に分散されることを防ぎます。

  • splitPk パラメーターは、整数データ型のデータのみのシャーディングをサポートしています。 splitPk パラメーターを、文字列、浮動小数点、日付データ型などのサポートされていないデータ型のフィールドに設定すると、このパラメーターの設定は無視され、単一スレッドを使用してデータが読み取られます。

  • splitPk パラメーターを空のままにすると、単一スレッドを使用してデータが読み取られます。

いいえ

デフォルト値なし

where

WHERE 句。GBase 8a Reader は、columntablewhere パラメーターの設定に基づいて SQL ステートメントを生成し、生成されたステートメントを使用してデータを読み取ります。

たとえば、テストを実行する場合、where パラメーターを limit 10 に設定できます。現在の日付に生成されたデータを読み取るには、where パラメーターを gmt_create > $bizdate に設定できます。

  • WHERE 句を使用して増分データを読み取ることができます。

  • where パラメーターが指定されていないか空のままになっている場合は、すべてのデータが読み取られます。

いいえ

デフォルト値なし

querySql

絞り込んだデータフィルタリングに使用される SQL ステートメント。 このパラメーターを構成すると、このパラメーターの値に基づいてのみデータがフィルタリングされます。

querySql パラメーターを構成すると、GBase 8a Reader は tablecolumnwheresplitPk パラメーターの設定を無視します。

いいえ

デフォルト値なし

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": ["id", "name", "age"] のように、名前をコンマ ( , ) で区切ります。

説明

column パラメーターを空にすることはできません。

はい

デフォルト値なし

preSql

同期タスクの実行前に実行する SQL ステートメント。SQL ステートメントで @table を使用して、デスティネーションテーブルの名前を示します。この SQL ステートメントを実行すると、@table はデスティネーションテーブルの名前に置き換えられます。

いいえ

デフォルト値なし

postSql

同期タスクの実行後に実行する SQL ステートメント。

いいえ

デフォルト値なし

batchSize

一度に書き込むデータレコードの数。ビジネス要件に基づいて、このパラメーターを適切な値に設定します。これにより、Data Integration と GBase 8a 間のインタラクションが大幅に削減され、スループットが向上します。このパラメーターを過度に大きい値に設定すると、データ同期の際に OOM エラーが発生する可能性があります。

いいえ

1,024