第9章 翻訳者
Data Virtualization は Teiid Connector Architecture(TCA)を使用します。これは、外部システムと統合するための強力なメカニズムを提供します。TCA は、プッシュダウンに使用できる SQL コンストラクトや外部システムからメタデータをインポートする機能として、Data Virtualization と外部システム間の共通のクライアントインターフェースを定義します。
Translator は TCA の中核で、Data Virtualization と外部システム間のブリッジロジックとして機能します。
トランスフォーマーには、設定可能なさまざまなプロパティーを含めることができます。これらは、データの取得方法を決定する実行プロパティーと、インポート用に読み取るメタデータを決定するインポート設定に分割されます。
通常、トランスレーターの実行プロパティーには適切なデフォルト値があります。Derby translator などの特定のトランスレータータイプの場合、ベース実行プロパティーはすでにソースと一致するように調整されています。ほとんどの場合、ユーザーは値を調整する必要はありません。
名前 | 説明 | デフォルト |
---|---|---|
Immutable |
ソースが変更されないことを示すには、 | false |
RequiresCriteria |
| false |
SupportsOrderBy |
ORDER BY 句を使用できることを示すには、 | false |
SupportsOuterJoins |
| false |
SupportsFullOuterJoins |
| false |
SupportsInnerJoins |
| false |
SupportedJoinCriteria | 結合機能が有効な場合は、結合条件として使用できる基準を定義します。可能性は、ANY、WiveTA、EQUI、または KEY のいずれかです。 | 任意 |
MaxInCriteriaSize |
| -1 |
MaxDependentInPredicates |
| -1 |
DirectQueryProcedureName |
トランスレーターの | native |
SupportsDirectQueryProcedure |
トランスレーターでコマンドを直接実行できるようにするには、 | false |
ThreadBound |
トランスレーターの実行が単一のスレッドによってのみ処理される場合は | false |
CopyLobs |
| false |
TransactionSupport |
最高レベルのトランザクション機能。 | XA |
ベース ExecutionFactory の実行プロパティーを使用すると、利用可能なメタデータのサブセットのみを設定できます。すべてのメソッドは BaseDelegatingExecutionFactory で利用できます。
ベースインポーターの設定はありません。
実行プロパティーの上書き
すべての変換を行う場合は、メインの vdb ファイルの Execution Properties を上書きできます。
例: トランスレータープロパティーの上書き
.
上記の例では、oracle トランスレーターを上書きし、RequiresCriteria プロパティーを true に設定します。変更されたトランスレーターは、この VDB のスコープでのみ利用可能です。必要な多くのプロパティーはオーバーライドできます。
パラメーター化可能なネイティブクエリー
場合によっては、teiid_rel:native-query
property とネイティブ手順では、位置的に参照できるパラメーター化可能な文字列を受け入れます。パラメーター参照の形式は '$integer
です(例: $1)
。1 ベースのインデックスが使用され、IN パラメーターのみが参照される可能性があることに注意してください。このため、ドル記号は予約されていますが、$$ 1
など、別の $'
でエスケープできます。値は準備済み値としてバインドされるか、またはリテラルがソース固有の方法にバインドされます。ネイティブクエリーは、呼び出し手順の想定と一致する結果セットを返す必要があります。
たとえば、native-query は g から c を選択します。c1 = $1 and c2 = '$$
1 ' を選択すると、選択した c の JDBC ソースクエリー(c1 = ? および c2 = '$
1')になります。?'
は、パラメーター 1 にバインドされている実際の値に置き換えられます。
一般的なインポートプロパティー
複数のインポートプロパティーはすべての翻訳者によって共有されます。
インポータープロパティーを指定する場合は、importer のプレフィックスを指定する必要があり ます
。たとえば、importer.tableTypes
です。
名前 | 説明 | デフォルト |
---|---|---|
autoCorrectColumnNames |
Data Virtualization 列名ではピリオド文字が有効ではないため、列名の | true |
renameDuplicateColumns |
true の場合、大文字と小文字の競合または | false |
renameDuplicateTables |
true の場合、大文字と小文字の競合によって生じる重複テーブルの名前を変更します。接尾辞 | false |
renameAllDuplicates |
true の場合、ケースの競合が混在する重複したテーブル、列、手順、およびパラメーターの名前を変更します。接尾辞 | false |
nameFormat |
インポート時にテーブルおよび手順名を修正するには、Java 文字列の形式に設定します。唯一の引数は、元の名前 Data Virtualization 名になります。たとえば、すべての名前に |
9.1. Amazon S3 Translator リンクのコピーリンクがクリップボードにコピーされました!
タイプ名 amazon-s3 によって認識される Amazon Simple Storage Service(S3)トランスレーターは、Amazon S3 オブジェクトリソースを利用するためのストアドプロシージャーを公開します。
このトランスレーターは通常 TEXTTABLE
関数または XMLTABLE
関数と共に使用され、CSV または XML 形式のデータを消費し、Amazon S3 に保存されている Microsoft Excel ファイルまたはその他のオブジェクトファイルを読み取ります。S3 トランスレーターは、AWS アクセスキー ID およびシークレットアクセスキーを使用して Amazon S3 にアクセスできます。
用途
以下の例では、仮想データベースは、teiidbucket
という Amazon S3 バケット から g2.txt
という名前の CSV ファイルを読み取ります。
e1,e2,e3 5,'five',5.0 6,'six',6.0 7,'seven',7.0
e1,e2,e3
5,'five',5.0
6,'six',6.0
7,'seven',7.0
実行プロパティー
トランスレーターオーバーライドメカニズムを使用して以下のプロパティーを提供します。
名前 | 説明 | デフォルト |
---|---|---|
エンコーディング | getTextFiles の手順によって返される CLOB に使用するエンコーディング。値は JRE に認識されるエンコーディングと一致する必要があります。 | システムのデフォルトのエンコーディング。 |
accessKey | Amazon セキュリティーアクセスキー。Amazon コンソールにログインして、セキュリティーアクセスキーを見つけます。これを指定すると、デフォルトのアクセスキーになります。 | 該当なし |
secretKey | Amazon セキュリティーシークレットキー。Amazon コンソールにログインして、セキュリティーシークレットキーを検索します。指定されると、これはデフォルトの秘密鍵になります。 | 該当なし |
リージョン | 要求で使用する Amazon リージョン。これが指定されている場合は、デフォルトのリージョンが使用されます。 | 該当なし |
Bucket | Amazon S3 バケット名。指定された場合、これはすべての要求に使用されるデフォルトバケットとして機能します。 | 該当なし |
暗号化 | 顧客提供の暗号化キー(SSE-C)を使用したサーバー側の暗号化が使用される場合、キーは使用される暗号化アルゴリズムの「タイプ」を定義するために使用されます。トランスレーターが AES-256 または AWS-KMS 暗号化アルゴリズムを使用するように設定できます。これが指定されている場合、すべての「get」ベースの呼び出しのデフォルトアルゴリズムとして使用されます。 | 該当なし |
encryptionKey | SSE-C タイプの暗号化が使用され、お客様が暗号鍵を提供する場合、このキーは「暗号化キー」を定義するために使用されます。これが指定されている場合、これはすべての「get」ベースの呼び出しのデフォルトキーとして使用されます。 | 該当なし |
プロパティーの設定に関する詳細は、「 Translators 」の「 Override execution property 」を参照し、以降のセクションの例を確認してください。
トランスレーターによって公開される手順
例のようにモデル(スキーマ)を追加すると、以下の手順コールが Amazon S3 に対して実行できます。
バケット
、リージョン
、アクセスキー、シークレットキー
、
暗号化および
は、提供されるメソッドの多くでオプションまたは null 可能なパラメーターです。前述の例に示すように、Translator オーバーライドプロパティーを使用してまだ設定されていない場合にのみ、それらを提供します。
暗号
化キー
getTextFile(…)
提供されるセキュリティー認証情報を CLOB として使用して、指定されたバケットとリージョンから指定された名前付きオブジェクトをテキストファイルとして取得します。
getTextFile(string name NOT NULL, string bucket, string region, string endpoint, string accesskey, string secretkey,string encryption, string encryptionkey, boolean stream default false) returns TABLE(file blob, endpoint string, lastModified string, etag string, size long);
getTextFile(string name NOT NULL, string bucket, string region,
string endpoint, string accesskey, string secretkey,string encryption, string encryptionkey, boolean stream default false)
returns TABLE(file blob, endpoint string, lastModified string, etag string, size long);
エンドポイント
はオプションです。指定されている場合、提供されたプロパティーで構築されるエンドポイント URL の代わりに使用されます。暗号化および
は、顧客が提供する鍵(SSE-C)によるサーバー側のセキュリティーを強制する場合にのみ使用します。
暗号
化キー
stream
の値が true の場合、返される LOB は一度だけ読み取られ、通常はディスクにバッファーされません。
例
exec getTextFile(name=>'myfile.txt'); SELECT SP.e1, SP.e2,SP.e3, f.lastmodified FROM (EXEC getTextFile(name=>'myfile.txt')) AS f, TEXTTABLE(f.file COLUMNS e1 integer, e2 string, e3 double HEADER) AS SP;
exec getTextFile(name=>'myfile.txt');
SELECT SP.e1, SP.e2,SP.e3, f.lastmodified
FROM (EXEC getTextFile(name=>'myfile.txt')) AS f,
TEXTTABLE(f.file COLUMNS e1 integer, e2 string, e3 double HEADER) AS SP;
getFile(…)
指定されたセキュリティー認証情報を BLOB として使用して、指定されたバケットとリージョンから指定された名前付きオブジェクトを取得します。
getFile(string name NOT NULL, string bucket, string region, string endpoint, string accesskey, string secretkey, string encryption, string encryptionkey, boolean stream default false) returns TABLE(file blob, endpoint string, lastModified string, etag string, size long)
getFile(string name NOT NULL, string bucket, string region,
string endpoint, string accesskey, string secretkey, string encryption, string encryptionkey, boolean stream default false)
returns TABLE(file blob, endpoint string, lastModified string, etag string, size long)
エンドポイント
はオプションです。指定されている場合、提供されたプロパティーで構築されるエンドポイント URL の代わりに使用されます。暗号化および
は、顧客が提供する鍵(SSE-C)によるサーバー側のセキュリティーを強制する場合にのみ使用します。
暗号
化キー
stream
の値が true の場合、lOB は 1 回読み取られ、通常はディスクにバッファーされません。
例
exec getFile(name=>'myfile.xml', bucket=>'mybucket', region=>'us-east-1', accesskey=>'xxxx', secretkey=>'xxxx'); select b.* from (exec getFile(name=>'myfile.xml', bucket=>'mybucket', region=>'us-east-1', accesskey=>'xxxx', secretkey=>'xxxx')) as a, XMLTABLE('/contents' PASSING XMLPARSE(CONTENT a.result WELLFORMED) COLUMNS e1 integer, e2 string, e3 double) as b;
exec getFile(name=>'myfile.xml', bucket=>'mybucket', region=>'us-east-1', accesskey=>'xxxx', secretkey=>'xxxx');
select b.* from (exec getFile(name=>'myfile.xml', bucket=>'mybucket', region=>'us-east-1', accesskey=>'xxxx', secretkey=>'xxxx')) as a,
XMLTABLE('/contents' PASSING XMLPARSE(CONTENT a.result WELLFORMED) COLUMNS e1 integer, e2 string, e3 double) as b;
saveFile(…)
CLOB、BLOB、または XML の値を指定された名前およびバケットに保存します。以下の手順では、content パラメーター は LOB タイプのいずれかになります。
call saveFile(string name NOT NULL, string bucket, string region, string endpoint, string accesskey, string secretkey, contents object)
call saveFile(string name NOT NULL, string bucket, string region, string endpoint,
string accesskey, string secretkey, contents object)
saveFile
を使用してファイルの内容のストリームまたはチャンクのアップロードを行うことはできません。非常に大きなオブジェクトのロードを試みると、メモリー不足の問題が発生することがあります。SSE-C 暗号化を使用するように saveFile
を設定することはできません。
例
exec saveFile(name=>'g4.txt', contents=>'e1,e2,e3\n1,one,1.0\n2,two,2.0');
exec saveFile(name=>'g4.txt', contents=>'e1,e2,e3\n1,one,1.0\n2,two,2.0');
deleteFile(…)
バケットから名前付きオブジェクトを削除します。
call deleteFile(string name NOT NULL, string bucket, string region, string endpoint, string accesskey, string secretkey)
call deleteFile(string name NOT NULL, string bucket, string region, string endpoint, string accesskey, string secretkey)
例
exec deleteFile(name=>'myfile.txt');
exec deleteFile(name=>'myfile.txt');
list(…)
バケットの内容を一覧表示します。
call list(string bucket, string region, string accesskey, string secretkey, nexttoken string) returns Table(result clob)
call list(string bucket, string region, string accesskey, string secretkey, nexttoken string)
returns Table(result clob)
結果として、Amazon S3 が提供する XML ファイルが以下の形式で提供されます。
以下の例のようなクエリーを使用すると、ビューに解析できます。
select b.* from (exec list(bucket=>'mybucket', region=>'us-east-1')) as a, XMLTABLE(XMLNAMESPACES(DEFAULT 'http://s3.amazonaws.com/doc/2006-03-01/'), '/ListBucketResult/Contents' PASSING XMLPARSE(CONTENT a.result WELLFORMED) COLUMNS Key string, LastModified string, ETag string, Size string, StorageClass string, NextContinuationToken string PATH '../NextContinuationToken') as b;
select b.* from (exec list(bucket=>'mybucket', region=>'us-east-1')) as a,
XMLTABLE(XMLNAMESPACES(DEFAULT 'http://s3.amazonaws.com/doc/2006-03-01/'), '/ListBucketResult/Contents'
PASSING XMLPARSE(CONTENT a.result WELLFORMED) COLUMNS Key string, LastModified string, ETag string, Size string,
StorageClass string, NextContinuationToken string PATH '../NextContinuationToken') as b;
すべてのプロパティー(バケット
、リージョン
、アクセスキー、およびシークレットキー
)がトランスレーターオーバーライドプロパティーとして定義されている場合、以下の単純なクエリーを実行できます。
SELECT * FROM Bucket
SELECT * FROM Bucket
バケットに 1000 以上のオブジェクトがある場合、オブジェクトの次のバッチを取得するために 'NextContinuationToken' の値を リスト 呼び出しに 'nexttoken' として指定する必要があります。これは、拡張リクエストのある Data Virtualization で自動化できます。