Vertica は、超並列処理 (MPP) アーキテクチャを使用する列指向データベースです。Vertica データソースは、Vertica との間でデータの読み書きを行うための双方向チャネルを提供します。このトピックでは、DataWorks における Vertica データソースのデータ同期機能について説明します。
サポートしているバージョン
Vertica Reader は、Vertica データベースドライバーを使用して Vertica にアクセスします。ご使用の Vertica サービスとドライバーに互換性があることを確認する必要があります。DataWorks では、以下のバージョンのドライバーを使用します。
<dependency>
<groupId>com.vertica</groupId>
<artifactId>vertica-jdbc</artifactId>
<version>7.1.2</version>
</dependency>制限事項
Vertica データソースは、サーバーレスリソースグループ (推奨) および Data Integration 専用リソースグループ でのみ使用できます。
Vertica Writer は writeMode パラメーターをサポートしていません。
タスクはコードエディタでのみ設定できます。
サポートしているフィールドタイプ
整数、浮動小数点数、文字列、時間など、一般的な Vertica のデータ型がサポートされています。高度なデータ型のサポートには制限があります。
データソースの追加
DataWorks で同期タスクを開発する前に、「データソース管理」の手順に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールでパラメーターの説明を表示して、各パラメーターの意味を理解できます。
データ同期タスクの開発
同期タスクの設定のエントリーポイントと手順については、以下の設定ガイドをご参照ください。
単一テーブルのオフライン同期タスクの設定ガイド
手順については、「コードエディタでのタスクの設定」をご参照ください。
コードエディタのすべてのパラメーターとスクリプト例については、本トピックの「付録:スクリプト例とパラメーターの説明」セクションをご参照ください。
付録:スクリプト例とパラメーターの説明
コードエディタを使用したバッチ同期タスクの設定
コードエディタを使用してバッチ同期タスクを設定する場合、統一されたスクリプト形式の要件に基づいて、スクリプト内の関連パラメーターを設定する必要があります。詳細については、「コードエディタでのタスクの設定」をご参照ください。以下では、コードエディタを使用してバッチ同期タスクを設定する際に、データソースに対して設定する必要があるパラメーターについて説明します。
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, // throttle が false の場合、mbps パラメーターは有効にならず、速度制限は無効になります。throttle が true の場合、速度制限は有効になります。
"concurrent": 1, // 同時実行ジョブ数。
"mbps":"12"// 最大転送レート。1 mbps は 1 MB/s に相当します。
}
}
}Reader スクリプトのパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。この値は、コードエディタで追加したデータソースの名前と同じである必要があります。 | はい | なし |
table | データを同期するテーブル。JSON 配列を使用してテーブルをリストします。複数のテーブルから同時にデータを読み取ることができます。 複数のテーブルを設定する場合、それらが同じスキーマを持つことを確認してください。Vertica Reader は、テーブルのロジックが一貫しているかどうかをチェックしません。 説明 table パラメーターは、connection 設定ブロックに含める必要があります。 | はい | なし |
column | ソーステーブルから同期する列。JSON 配列を使用して列を記述します。デフォルトでは、すべての列が使用されます (例:`["*"]`)。
| はい | なし |
splitPk | Vertica Reader がデータを抽出する際に splitPk パラメーターを指定すると、splitPk が表すフィールドに基づいてデータがパーティション分割されます。これにより、データ同期で同時実行タスクを開始でき、同期効率が向上します。
| いいえ | なし |
where | フィルター条件。 Vertica Reader は、column、table、および where パラメーターからデータを抽出するための SQL 文を構築します。 たとえば、テスト中に where 条件を指定できます。実際のビジネスシナリオで、当日のデータを同期するには、where 条件を
| いいえ | なし |
querySql | 一部のビジネスシナリオでは、where パラメーターだけではフィルター条件を記述するのに不十分な場合があります。このパラメーターを使用して、フィルタリング用のカスタム SQL 文を定義できます。このパラメーターを設定すると、データ同期システムは tables、columns、および splitPk パラメーターを無視し、カスタム SQL 文を使用してデータをフィルタリングします。 querySql を設定すると、Vertica Reader は table、column、および where パラメーターを無視します。 | いいえ | なし |
fetchSize | このパラメーターは、各バッチでデータベースサーバーから取得するレコード数を指定します。この値は、Data Integration とサーバー間のネットワーク対話の数を決定し、データ抽出パフォーマンスを大幅に向上させることができます。 説明 fetchSize を大きな値 (> 2048) に設定すると、データ同期プロセスでメモリ不足 (OOM) エラーが発生する可能性があります。 | いいえ | 1024 |
Writer スクリプトの例
{
"type":"job",
"version":"2.0",// バージョン番号。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"vertica",// プラグイン名。
"parameter":{
"datasource": "data_source_name",
"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,// throttle が false の場合、mbps パラメーターは有効にならず、速度制限は無効になります。throttle が true の場合、速度制限は有効になります。
"concurrent":1, // 同時実行ジョブ数。
"mbps":"12"// 最大転送レート。1 mbps は 1 MB/s に相当します。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Writer スクリプトのパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。この値は、コードエディタで追加したデータソースの名前と同じである必要があります。 | はい | なし |
jdbcUrl | ターゲットデータベースの Java Database Connectivity (JDBC) URL。jdbcUrl パラメーターは、connection 設定ブロックに含まれます:
| はい | なし |
username | データソースのユーザー名。 | はい | なし |
password | 指定されたユーザー名のパスワード。 | はい | なし |
table | JSON 配列で、同期するテーブルの名前を指定します。 説明 table パラメーターは connection 設定ブロックに含める必要があります。 | はい | なし |
column | データが書き込まれるターゲットテーブルの列。列はカンマで区切ります。例: | はい | なし |
preSql | データがターゲットテーブルに書き込まれる前に実行される標準 SQL 文。SQL 文がテーブルを操作する場合、 | いいえ | なし |
postSql | データがターゲットテーブルに書き込まれた後に実行される標準 SQL 文。 | いいえ | なし |
batchSize | 1 回のバッチでコミットするレコード数。この値を設定すると、データ同期システムと Vertica 間のネットワーク対話を大幅に削減し、全体的なスループットを向上させることができます。この値が高すぎると、データ同期プロセスで OOM エラーが発生する可能性があります。 | いいえ | 1024 |