このトピックでは、Gbase8a Writer によってサポートされるデータタイプとパラメーター、およびコードエディターを使用した Gbase8a Writer の構成方法について説明します。

Gbase8a は、新しいタイプの列指向分析データベースです。 Gbase8a Writer を使用すると、Gbase8a データベースにデータを書き込むことができます。
現在、Gbase8a Writer は、デフォルトのリソースグループをサポートしていません。 データ統合またはカスタムリソースグループに対しては、排他的リソースグループを使用します。 詳細については、 「Use exclusive resource groups for data integration」および「カスタムリソースグループの追加」をご参照ください 。

具体的には、Gbase8a Writer は、Java Database Connectivity (JDBC) を介してリモート Gbase8a データベースに接続され、INSERT INTO文を実行することによって、Gbase8a データベースにデータを書き込みます。 内部的には、データはバッチでデータベースに書き込まれます。

Gbase8a Writer は、抽出-変換-格納 (ETL) の開発者向けに設計されたもので、データウェアハウスから Gbase8a データベースにデータをインポートします。 Gbase8a Writer は、データベース管理者 (DBA) などのユーザーがデータ移行ツールとして使用することもできます。

Gbase8a Writer は、Data Integration reader からデータを取得し、設定に基づいて INSERT INTO 文を生成します。

制限事項

  • INSERT INTO:プライマリキーまたは一意のインデックスの競合が発生した場合、競合している行にデータを書き込むことはできません。
  • データは、プライマリ Gbase8a データベースに保存されているテーブルにのみ書き込むことができます。
    Gbase8a Writer を使用する同期ノードは、少なくとも、 INSERT INTO文を実行する権限を保持している必要があります。 他の権限の必要性は、ノードの設定時にpreSqlパラメーターとpostSqlパラメーターで指定された SQL 文によって異なります。
  • Gbase8a Writerは、writeModeパラメーターをサポートしていません。
  • Gbase8a Writerは、MySQL データベースドライバーを介して Gbase8a データベースにアクセスします。 ドライバーのバージョンと Gbase8a データベースの間の互換性を確認します。 Gbase8a Writer は、次のバージョンの MySQL データベースドライバーを使用します。
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.22</version>
    </dependency>

パラメーター

パラメーター 説明 必須事項 デフォルト値
jdbcUrl Gbase8a データベースに接続するための JDBC URL。 システムは接続パラメーターから自動的に値を取得するため、このパラメーターを設定する必要はありません。
  • データベースには、JDBC URL を1 つだけ設定できます。 Gbase8a Writer は、複数のプライマリデータベースを持つデータベースにデータを書き込むことはできません。
  • フォーマットは、Gbase8a の公式仕様に準拠している必要があります。 接続機能情報を指定することもできます。 例: jdbc:mysql://127.0.0.1:3306/database
必須 なし
username データベースに接続するためのユーザー名。 必須 なし
password データベースに接続するためのパスワード。 必須 なし
table JSON 配列に記述されている宛先テーブルの名前。
システムは接続パラメーターから自動的に値を取得するため、このパラメーターを設定する必要はありません。
必須 なし
データが書き込まれる宛先テーブルの列。 列はカンマ (,) で区切ります。 たとえば、"column":["id"、 "name"、 "age"]
このパラメーターは空白のままにできません。
必須 なし
preSql 同期ノードが実行される前に実行する SQL 文。 @テーブルを使用して、SQL 文で変更されるテーブルの名前を指定します。 この SQL 文を実行すると、DataWorks は @table をターゲットテーブルの名前に置き換えます。 いいえ なし
postSql 同期ノードの実行後に実行する SQL ステートメント。 いいえ なし
batchSize 一度に書き込まれるデータレコード数。 このパラメータを設定すると、ネットワーク上の Data Integration と Gbase8a データベース間のやりとりを大幅に減らすことができ、スループットが向上します。 ただし、値が大きすぎると、データ同期プロセス中にメモリ不足 (OOM) が発生する可能性があります。 いいえ 1024

コードレス UI を使用した Gbase8a Writer の構成

現在、Gbase8a Writer はコードレスユーザーインターフェイス (UI) をサポートしていません。

コードエディターを使用した Gbase8a Writer の構成

次のコードでは、Gbase8a データベースにデータを書き込むようにノードが構成されます。
{
    "type":"job",
    "version": "2.0", // version number
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType": "gbase8a"、// The writer type.
            "parameter":{
                "datasource": "The connection name.",
                "userName": "",
                "password": "",
                "column": [// The columns to which data is written.
                    "id"、
                    "name"
                ],
                "connection": [
                    {
                        "table":[// The name of the destination table.
                            "Gbase8a_table"
                        ],
                        "jdbcUrl": "jdbc:mysql://ip:port/database"
                    }
                ],
                "preSql": [ // The SQL statement to run before the sync node is run.
                    "delete from @table where db_id = -1"
                ],
                "postSql": [// The SQL statement to run after the sync node is run.
                    "update @table set db_modify_time = now() where db_id = 1"
                ]
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        &quot;errorLimit&quot;:{
            "record":"0"// The maximum number of dirty data records allowed.
        },
        "speed": {
            "throttle":false,// Specifies whether to enable bandwidth throttling. A value of false indicates that the bandwidth is not throttled. A value of true indicates that the bandwidth is throttled. The maximum transmission rate takes effect only if you set this parameter to true.
            "concurrent":1,// The maximum number of concurrent threads.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}