Verticaは、超並列処理(MPP)アーキテクチャを使用する列指向データベースです。DataWorksは、Verticaデータソースとのデータの読み取りおよび書き込みを行うためのVertica ReaderとVertica Writerを提供します。このトピックでは、Verticaデータソースとのデータ同期機能について説明します。
サポートされているVerticaバージョン
Vertica Readerは、Vertica Java Database Connectivity(JDBC)ドライバーを使用してVerticaデータベースに接続します。ドライバーのバージョンがVerticaデータベースと互換性があることを確認する必要があります。次のバージョンのVertica JDBCドライバーが使用されます。
<dependency>
<groupId>com.vertica</groupId>
<artifactId>vertica-jdbc</artifactId>
<version>7.1.2</version>
</dependency>制限事項
Verticaデータソースは、Data Integrationの排他リソースグループのみをサポートします。
Vertica Writerは、writeModeパラメーターをサポートしていません。
同期タスクの設定には、コードエディターのみを使用できます。
データ型マッピング
整数、浮動小数点、文字列、および時間カテゴリのデータ型を含む、一般的なVerticaデータ型がサポートされています。ただし、一部の高度なデータ型のサポートは制限されています。
データ同期タスクの開発
データ同期タスクの設定のエントリポイントと手順については、以下のセクションを参照してください。パラメーター設定については、タスクの設定タブにある各パラメーターのヒントをご覧ください。
データソースの追加
特定のデータソースとのデータ同期を行うデータ同期タスクを設定する前に、DataWorksにデータソースを追加する必要があります。詳細については、「データソースの追加と管理」をご参照ください。
単一テーブルのデータを同期するバッチ同期タスクの設定
設定手順については、「コードエディターを使用したバッチ同期タスクの設定」をご参照ください。
コードエディターを使用してバッチ同期タスクを設定する場合に設定されるすべてのパラメーターと実行されるコードについては、「付録:コードとパラメーター」をご参照ください。
付録:コードとパラメーター
付録:コードエディターを使用したバッチ同期タスクの設定
コードエディターを使用してバッチ同期タスクを設定する場合は、コードエディターの形式要件に基づいて、関連データソースのリーダーとライターのパラメーターを設定する必要があります。形式要件の詳細については、「コードエディターを使用したバッチ同期タスクの設定」をご参照ください。以下の情報は、コードエディターのリーダーとライターのパラメーターの設定の詳細について説明しています。
Vertica Readerのコード
{
"type": "job",
"steps": [
{
"stepType": "vertica", // プラグイン名
"parameter": {
"datasource": "", // データソースの名前
"where": "",
"column": [ // 列の名前
"id",
"name"
],
"splitPk": "id",
"connection": [
{
"table": [ // テーブルの名前
"table"
]
}
]
},
"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。
}
}
}Vertica Readerのコードのパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。追加されたデータソースの名前と同じである必要があります。コードエディターを使用してデータソースを追加できます。 | はい | デフォルト値なし |
table | データを読み取るテーブルの名前。Vertica Readerは複数のテーブルからデータを読み取ることができます。JSON配列でテーブル名を指定します。 複数のテーブルを指定する場合は、テーブルのスキーマが同じであることを確認する必要があります。Vertica Readerは、テーブルのスキーマが同じかどうかを確認しません。 説明 tableパラメーターは、connectionパラメーターに含める必要があります。 | はい | デフォルト値なし |
column | データを読み取る列の名前。JSON配列で名前を指定します。デフォルト値は[ * ]で、ソーステーブルのすべての列を示します。
| はい | デフォルト値なし |
splitPk | Vertica Readerがデータを読み取るときにデータシャーディングに使用されるフィールド。このパラメーターを指定すると、ソーステーブルはこのパラメーターの値に基づいてシャーディングされます。その後、Data Integrationは並列スレッドを実行してデータを読み取ります。これにより、データ同期の効率が向上します。
| いいえ | デフォルト値なし |
where | WHERE句。Vertica Readerは、table、column、およびwhereパラメーターの設定に基づいてSQLステートメントを生成し、生成されたステートメントを使用してデータを読み取ります。 たとえば、テストを実行するときに、whereパラメーターを設定してデータをフィルタリングできます。実際のビジネスシナリオでは、whereパラメーターを
| いいえ | デフォルト値なし |
querySql | 絞り込んだデータフィルタリングに使用されるSQLステートメント。このパラメーターを設定すると、このパラメーターの値のみに基づいてデータがフィルタリングされます。 querySqlパラメーターを設定すると、Vertica Readerはtable、column、およびwhereパラメーターの設定を無視します。 | いいえ | デフォルト値なし |
fetchSize | 一度に読み取るデータレコードの数。このパラメーターは、Data Integrationとデータベース間のインタラクションの数を決定し、読み取り効率に影響します。 説明 このパラメーターを 2048 より大きい値に設定すると、データ同期の際にメモリ不足(OOM)エラーが発生する可能性があります。 | いいえ | 1,024 |
Vertica Writerのコード
{
"type":"job",
"version":"2.0",// バージョン番号
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"vertica", // プラグイン名
"parameter":{
"datasource": "データソースの名前",
"column": [// 列の名前
"id",
"name"
],
"connection": [
{
"table": [// テーブルの名前
"vertica_table"
]
}
],
"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"
}
]
}
}Vertica Writerのコードのパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。追加されたデータソースの名前と同じである必要があります。コードエディターを使用してデータソースを追加できます。 | はい | デフォルト値なし |
jdbcUrl | VerticaデータベースのJDBC URL。jdbcUrlパラメーターは、connectionパラメーターに含める必要があります。
| はい | デフォルト値なし |
username | データベースへの接続に使用するユーザー名。 | はい | デフォルト値なし |
password | データベースへの接続に使用するパスワード。 | はい | デフォルト値なし |
table | データを書き込むテーブルの名前。JSON配列で名前を指定します。 説明 tableパラメーターは、connectionパラメーターに含める必要があります。 | はい | デフォルト値なし |
column | データを書き込む列の名前。カンマ(,)で区切って名前を指定します(例: | はい | デフォルト値なし |
preSql | 同期タスクの実行前に実行するSQLステートメント。 | いいえ | デフォルト値なし |
postSql | 同期タスクの実行後に実行するSQLステートメント。 | いいえ | デフォルト値なし |
batchSize | 一度に書き込むデータレコードの数。ビジネス要件に基づいてこのパラメーターを適切な値に設定します。これにより、Data IntegrationとVertica間のインタラクションが大幅に削減され、スループットが向上します。このパラメーターを過度に大きい値に設定すると、データ同期の際にOOMエラーが発生する可能性があります。 | いいえ | 1,024 |