第9章 翻訳者


Data Virtualization は Teiid Connector Architecture(TCA)を使用します。これは、外部システムと統合するための強力なメカニズムを提供します。TCA は、プッシュダウンに使用できる SQL コンストラクトや外部システムからメタデータをインポートする機能として、Data Virtualization と外部システム間の共通のクライアントインターフェースを定義します。

Translator は TCA の中核で、Data Virtualization と外部システム間のブリッジロジックとして機能します。

トランスフォーマーには、設定可能なさまざまなプロパティーを含めることができます。これらは、データの取得方法を決定する実行プロパティーと、インポート用に読み取るメタデータを決定するインポート設定に分割されます。

通常、トランスレーターの実行プロパティーには適切なデフォルト値があります。Derby translator などの特定のトランスレータータイプの場合、ベース実行プロパティーはすでにソースと一致するように調整されています。ほとんどの場合、ユーザーは値を調整する必要はありません。

Expand
表9.1 ベース実行プロパティー - すべての翻訳者によって共有される
名前説明デフォルト

Immutable

ソースが変更されないことを示すには、true に設定します。トランザクション機能は NONE として報告され、更新コマンドは失敗します。

false

RequiresCriteria

true に設定して、ソース SELECT/UPDATE/DELETE クエリーに where 句が必要であることを示します。

false

SupportsOrderBy

ORDER BY 句を使用できることを示すには、true に設定します。

false

SupportsOuterJoins

true に設定して、OUTER JOINs が使用できることを示します。

false

SupportsFullOuterJoins

SupportsOuterJoins が true に設定されている場合、 true は FULL OUTER JOINs を使用できることを示します。

false

SupportsInnerJoins

true に設定して INNER JOINs を使用できることを示します。

false

SupportedJoinCriteria

結合機能が有効な場合は、結合条件として使用できる基準を定義します。可能性は、ANY、WiveTA、EQUI、または KEY のいずれかです。

任意

MaxInCriteriaSize

IN 条件の使用が有効な場合は、述語ごとの IN エントリーの最大数を指定します。-1 は無 制限を意味します。

-1

MaxDependentInPredicates

IN 条件の使用が有効にされている場合、依存する結合に使用できる述語の最大数を定義します。1 未満の値は、プッシュされる依存値ごとに 1 つの IN 述語(pre-7.4 の動作と一致する)のみを使用します。

-1

DirectQueryProcedureName

トランスレーターの SupportsDirectQueryProceduretrue に設定されている場合、このプロパティーは手順の名前を示します。

native

SupportsDirectQueryProcedure

トランスレーターでコマンドを直接実行できるようにするには、true に設定します。

false

ThreadBound

トランスレーターの実行が単一のスレッドによってのみ処理される場合は true に設定します。

false

CopyLobs

true の場合、大きなオブジェクト(LOB)データ(clob、Blob、sql/xml)が返され、メモリーを安全にエンジンによってコピーされます。ソースがメモリーセーフ LOBS を提供しない場合や、ソース接続から LOBS を切断する場合は、このオプションを使用します。

false

TransactionSupport

最高レベルのトランザクション機能。autoCommitTxn=DETECT モードにトランザクションが必要であるかどうかを判断するためのヒントとしてエンジンによって使用されます。XA、NONE、または LOCAL のいずれかを使用できます。XA または LOCAL の場合は、トランザクション下でアクセスがシリアライズされます。

XA

注記

ベース ExecutionFactory の実行プロパティーを使用すると、利用可能なメタデータのサブセットのみを設定できます。すべてのメソッドは BaseDelegatingExecutionFactory で利用できます。

ベースインポーターの設定はありません。

実行プロパティーの上書き

すべての変換を行う場合は、メインの vdb ファイルの Execution Properties を上書きできます。

例: トランスレータープロパティーの上書き

.

CREATE FOREIGN DATA WRAPPER "oracle-override" TYPE oracle OPTIONS (RequiresCriteria 'true');

CREATE SERVER ora FOREIGN DATA WRAPPER "oracle-override" OPTIONS ("resource-name" 'java:/oracle');

CREATE SCHEMA ora SERVER ora;

SET SCHEMA ora;

IMPORT FROM SERVER ora INTO ora;
Copy to Clipboard Toggle word wrap

上記の例では、oracle トランスレーターを上書きし、RequiresCriteria プロパティーを true に設定します。変更されたトランスレーターは、この VDB のスコープでのみ利用可能です。必要な多くのプロパティーはオーバーライドできます。

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 です。

Expand
名前説明デフォルト

autoCorrectColumnNames

Data Virtualization 列名ではピリオド文字が有効ではないため、列名の . の使用を _ に置き換えます。

true

renameDuplicateColumns

true の場合、大文字と小文字の競合または autoCorrectColumnNames が原因となる重複列の名前を _ に置き換えます。 接尾辞 _nn は整数を追加して、名前を一意にします。

false

renameDuplicateTables

true の場合、大文字と小文字の競合によって生じる重複テーブルの名前を変更します。接尾辞 _nn は整数を追加して、名前を一意にします。

false

renameAllDuplicates

true の場合、ケースの競合が混在する重複したテーブル、列、手順、およびパラメーターの名前を変更します。接尾辞 _nn は整数を追加して、名前を一意にします。それぞれの名前が重複しているオプションに置き換わります。

false

nameFormat

インポート時にテーブルおよび手順名を修正するには、Java 文字列の形式に設定します。唯一の引数は、元の名前 Data Virtualization 名になります。たとえば、すべての名前に prod_ のプレフィックスを付けるには、prod_%s を使用します。

 

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
Copy to Clipboard Toggle word wrap
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<vdb name="example" version="1">
    <model name="s3">
        <source name="web-connector" translator-name="user-s3" connection-jndi-name="java:/amazon-s3"/>
    </model>
    <model name="Stocks" type="VIRTUAL">
        <metadata type="DDL"><![CDATA[
        CREATE VIEW G2 (e1 integer, e2 string, e3 double,PRIMARY KEY (e1))
            AS  SELECT SP.e1, SP.e2,SP.e3
                FROM (EXEC s3.getTextFile(name=>'g2.txt')) AS f,
                TEXTTABLE(f.file COLUMNS e1 integer, e2 string, e3 double HEADER) AS SP;
        ]]> </metadata>
    </model>
    <translator name="user-s3" type="amazon-s3">
      <property name="accesskey" value="xxxx"/>
      <property name="secretkey" value="xxxx"/>
      <property name="region" value="us-east-1"/>
      <property name="bucket" value="teiidbucket"/>
    </translator>
</vdb>
Copy to Clipboard Toggle word wrap

実行プロパティー

トランスレーターオーバーライドメカニズムを使用して以下のプロパティーを提供します。

Expand
名前説明デフォルト

エンコーディング

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);
Copy to Clipboard Toggle word wrap
注記

エンドポイント はオプションです。指定されている場合、提供されたプロパティーで構築されるエンドポイント 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;
Copy to Clipboard Toggle word wrap

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)
Copy to Clipboard Toggle word wrap
注記

エンドポイント はオプションです。指定されている場合、提供されたプロパティーで構築されるエンドポイント 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;
Copy to Clipboard Toggle word wrap

saveFile(…​)

CLOB、BLOB、または XML の値を指定された名前およびバケットに保存します。以下の手順では、content パラメーター は LOB タイプのいずれかになります。

call saveFile(string name NOT NULL, string bucket, string region, string endpoint,
   string accesskey, string secretkey, contents object)
Copy to Clipboard Toggle word wrap
注記

saveFile を使用してファイルの内容のストリームまたはチャンクのアップロードを行うことはできません。非常に大きなオブジェクトのロードを試みると、メモリー不足の問題が発生することがあります。SSE-C 暗号化を使用するように saveFile を設定することはできません。

exec saveFile(name=>'g4.txt', contents=>'e1,e2,e3\n1,one,1.0\n2,two,2.0');
Copy to Clipboard Toggle word wrap

deleteFile(…​)

バケットから名前付きオブジェクトを削除します。

call deleteFile(string name NOT NULL, string bucket, string region, string endpoint, string accesskey, string secretkey)
Copy to Clipboard Toggle word wrap

exec deleteFile(name=>'myfile.txt');
Copy to Clipboard Toggle word wrap

list(…​)

バケットの内容を一覧表示します。

call list(string bucket, string region, string accesskey, string secretkey, nexttoken string)
    returns Table(result clob)
Copy to Clipboard Toggle word wrap

結果として、Amazon S3 が提供する XML ファイルが以下の形式で提供されます。

<?xml version="1.0" encoding="UTF-8"?>/n
<ListBucketResult
    xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Name>teiidbucket</Name>
    <Prefix></Prefix>
    <KeyCount>1</KeyCount>
    <MaxKeys>1000</MaxKeys>
    <IsTruncated>false</IsTruncated>
    <Contents>
        <Key>g2.txt</Key>
        <LastModified>2017-08-08T16:53:19.000Z</LastModified>
        <ETag>&quot;fa44a7893b1735905bfcce59d9d9ae2e&quot;</ETag>
        <Size>48</Size>
        <StorageClass>STANDARD</StorageClass>
    </Contents>
</ListBucketResult>
Copy to Clipboard Toggle word wrap

以下の例のようなクエリーを使用すると、ビューに解析できます。

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;
Copy to Clipboard Toggle word wrap

すべてのプロパティー(バケットリージョンアクセスキー、およびシークレットキー )がトランスレーターオーバーライドプロパティーとして定義されている場合、以下の単純なクエリーを実行できます。

SELECT * FROM Bucket
Copy to Clipboard Toggle word wrap
注記

バケットに 1000 以上のオブジェクトがある場合、オブジェクトの次のバッチを取得するために 'NextContinuationToken' の値を リスト 呼び出しに 'nexttoken' として指定する必要があります。これは、拡張リクエストのある Data Virtualization で自動化できます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat