9.5. JDBC 翻訳者


JDBC Translators は、SQL セマンティクスと、Data Virtualization とターゲット TEMPLATES のデータ型の違いをブリッジします。Data Virtualization には、最も一般的なオープンソースおよびプロプライエタリーリレーショナルデータベースを対象とする特定のトランストラクターの範囲があります。

用途

JDBC ソースの使用は簡単です。Data Virtualization SQL を使用すると、テーブルと手順が Data Virtualization システムのローカルであるかのようにソースをクエリーできます。

リレーショナルデータベースソース、または JDBC ドライバーを持つデータソースを使用している場合で、そのデータソースタイプで利用可能な特定のトランスレーターが見つからない場合は、JDBC ANSI トランスレーター から始めます。JDBC ANSI トランスレーターにより、SQL の基本が実行できるようになります。利用できる特定のデータソース機能がある場合は、必要な操作を行うカスタムトランスレーターを定義できます。詳細は、「 Translator Development 」を参照してください。

タイプの規則

UUID、GUID、または UNIQUEIDENTIFIER を含む UID タイプは、通常 Data Virtualization 文字列タイプにマッピングされます。JDBC データソースは、UID 文字列を小文字ではないものとして処理しますが、Data Virtualization で大文字と小文字が区別されます。ソースが文字列タイプへの暗黙的な変換をサポートしていない場合、文字列の値を想定する関数の使用がソースで失敗する可能性があります。

以下の表は、すべての JDBC 翻訳者によって共有される実行プロパティーを示しています。

Expand
表9.4 すべての JDBC 翻訳者による実行プロパティーファイル
名前説明デフォルト

DatabaseTimeZone

データベースのタイムゾーン。date、time、または timestamp の値を取得する場合に使用されます。

システムのデフォルトタイムゾーン

DatabaseVersion

特定のデータベースバージョン。プッシュダウン操作の使用をさらに調整するために使用されます。

ベースと互換性のあるバージョン、または DatabaseMetadata.getDatabaseProductVersion 文字列から派生するバージョン。自動検出には接続が必要です。機能が利用できないために例外が発生する状況(例: 接続は利用できません)がある場合は、DatabaseVersion プロパティーを設定します。JDBCExecutionFactory.usesDatabaseVersion()' メソッドを使用して、トランスレーターが機能を判断するために接続を必要とするかどうかを制御します。

TrimStrings

True は、固定長の文字文字列から末尾の空白をトリミングします。Data Virtualization には文字列または varchar のみがあり、末尾の空白を意味のあるものとして処理することに注意してください。

false

RemovePushdownCharacters

ソースの許可できない文字や望ましくない文字を削除するには、正規表現に設定します。たとえば、[\u0000] は null 文字を削除します。これは、PostgreSQL や Oracle などのソースで問題となります。これにより、影響を受ける文字列リテラルの意味とバインド値の意味が事実上変更されます。これらは慎重に考慮する必要があります。

 

UseBindVariables

True は、PreparedStatements を使用する必要があり、ソースクエリーのリテラル値をバインド変数に置き換える必要があることを示します。false の場合、LOB 値のみが PreparedStatements の使用をトリガーします。

true

UseCommentsInSourceQuery

これにより、情報提供の目的で、ソース SQL に session/request id の先頭のコメントが埋め込まれます。CommentFormat プロパティーでカスタマイズできます。

false

CommentFormat

UseCommentsInSourceQuery が有効になっている場合に使用される MessageFormat 文字列。形式を以下の値のいずれかに設定できます。

  • 0 - セッション ID 文字列。
  • 1 - 親要求の ID 文字列。
  • 2 - 要求パート ID 文字列。
  • 3 - 実行カウント ID 文字列
  • 4 - ユーザー名の文字列
  • 5 - VDB 名の文字列
  • 6 - VDB バージョン整数
  • 7 - トランザクションのブール値。

/*Teiid sessionid:\{0}, requestid:\gitops.\{2}*/

MaxPreparedInsertBatchSize

準備済み挿入バッチの最大サイズ。

2048

StructRetrieval

以下の Struct 取得モードのいずれかを指定します。

  • OBJECT - getObject 値が返されます。
  • COPY - SerialStruct として返されます。
  • ARRAY - アレイとして返されます。

OBJECT

EnableDependentJoins

一時テーブル(DB2、Derby、H2、HSQL 2.0+、MySQL 5.0+、Oracle、PostgreSQL、SQLServer、SQP IQ、Sybase)を使用するソースに依存のプッシュダウンを許可します。

false

インポータープロパティーですべての JDBC 翻訳者によるインポーターの使用

インポータープロパティーを指定する場合は、importer のプレフィックスを指定する必要があり ます。例: importer.tableTypes

Expand
名前説明デフォルト

catalog

See DatabaseMetaData.getTables [1]

null

schemaName

単一のスキーマからインポートするために推奨される設定。スキーマ名は、エスケープされたパターン(設定されている場合は schemaPattern の上書き)に変換されます。

null

schemaPattern

See DatabaseMetaData.getTables [1]

null

tableNamePattern

See DatabaseMetaData.getTables [1]

null

procedureNamePattern

See DatabaseMetaData.getProcedures [1]

null

tableTypes

登録済みのテーブルタイプでスペースを区切られずに、スペースを区切ったリストを使用。See DatabaseMetaData.getTables [1]

null

excludeTables 

完全修飾テーブル名に対して一致する、大文字と小文字を区別しない正規表現 [2] はインポートから除外します。テーブル名の取得後に適用されます。  負の先読み(?!<inclusion pattern>)を使用して、包含フィルターとして機能します。

null 

excludeProcedures 

完全修飾手順名に対して一致する、大文字と小文字を区別しない正規表現 [2] はインポートから除外します。  手順名の取得後に適用されます。  負の先読み(?!<inclusion pattern>)を使用して、包含フィルターとして機能します。

null 

importKeys

プライマリー キーおよび外部キーをインポートする場合は True。

注記: インポートされていないテーブルにキーを配置すると無視されます。

true

autoCreateUniqueConstraints

true: 外部キーについて 1 つの一意の制約が見つからない場合に一意の制約を作成します。

true

importIndexes

インデックス/一意キー/カーディナリティー情報をインポートする場合は true

false

importApproximateIndexes

true: 概算インデックス情報をインポートします。DatabaseMetaData.getIndexInfo [1] を参照してください。

警告: false に設定すると、インポート時間が長くなることがあります。

true

importProcedures

True : 手順と手順列をインポートするには、データベースの制限により、手順の結果の設定列を常にインポートできるわけではないことに注意してください。現在、オーバーロードされた手順をインポートすることはできません。

false

importSequences

シーケンス インポートする場合は True。Db2、Oracle、PostgreSQL、SQL Server、および H2 にのみ互換性があります。一致するシーケンスが 0 引数の Data Virtualization 関数 name_nextval にインポートされます。

false

sequenceNamePattern

シーケンスをインポートするときに使用する LIKE パターン文字列。Null または % が すべて に一致します。

null

useFullSchemaName

false の場合、インポーターに対してオブジェクト名のみを Data Virtualization 名として使用するように指示します。すべてのオブジェクトが同じ外部スキーマから取得されることが想定されています。true (推奨)される場合、Data Virtualization 名は useCatalogName および useQualifiedName プロパティーの指示どおりにカタログおよびスキーマ名を使用して形成されます。複数の外部スキーマからオブジェクトを取得できるようになります。このオプションはソースプロパティーの名前には影響しません。

false(複数の外部スキーマからのインポートする場合のみ変更)。

useQualifiedName

True は、useCatalogName および useFullSchemaName プロパティーによりさらに改良されたように、Data Virtualization 名および名前の両方に名前修飾を使用します。  Data Virtualization 名とソースの名前の両方に対するすべての修飾を無効にするには、false に設定します。これにより、useCatalogName および useFullSchemaName プロパティーを効果的に無視します。 

警告: このオプションを false に設定すると、複数のスキーマからインポートすると、重複する名前がオブジェクトに含まれる可能性があり、例外が発生します。

True(必須の変更)

useCatalogName

true は、null または空でないカタログ名をソースの名前の一部として使用します(例: "catalog"."schema"."table"."column")、および Data Virtualization ランタイム名(該当する場合)。false は、ソースの名前または Data Virtualization ランタイム名のいずれかでカタログ名を使用しません。カタログの概念を使用しない HSQL などのソースには false に設定する必要があるが、メタデータに null 以外または空でないカタログ名を返す必要があります。

True(必須の変更)

widenUnsignedTypes

true: 署名なしタイプを次の幅広い型に変換します。たとえば、SQL Server は tinyint を非署名タイプとして報告します。このオプションを有効にすると、tinyint がバイトではなく短い状態でインポートされます。

true

useIntegralTypes

True: スケールが 0 の場合に 10 進数ではなく必須型を使用します。

false

quoteNameInSource

false はデフォルトを上書きし、データ仮想化に引用なしの識別子を使用してソースクエリーを作成するように指示します。

true

useAnyIndexCardinality

True DatabaseMetaData.getIndexInfo から返される最大カーディナリティーを使用します。この設定を有効にするには、importKeys または importIndexes を有効にする必要があります。これにより、統計インデックスを返さないソースから統計収集を改善できます。

false

importStatistics

True 、データベース依存ロジックを使用して、何も判断されない場合のカーディナリティーを決定します。Oracle および MySQL でしか利用できないすべてのデータベースタイプでは使用できません。

false

importRowIdAsBinary

trueRowId 列を varbinary の値としてインポートします。

false

importLargeAsLob

True は、Data Virtualization max よりも大きな文字およびバイナリータイプをそれぞれ CLOB または BLOB としてインポートします。プロパティーが有効になっている場合でもメモリーの問題が発生した場合は、copyLob 実行プロパティーも使用する必要があります。

false

[1] DatabaseMetaData
[2] 除外の完全修飾名は、トランスレーターの設定とデータベースの特定に基づいています。トランスレーターの設定で使用される適用可能な名前の部分すべて( useQualifiedName および useCatalogNameを参照)には、カタログ、スキーマ、テーブルを含む catalogName.schemaName.tableName が引用なしの catalogName.schemaName.tableName として組み合わされます。たとえば、Oracle はカタログを報告しないため、比較用のデフォルト設定で使用される名前は schemaName.tableName のみです。

警告

デフォルトのインポート設定により、利用可能なすべてのメタデータが取り消されます。このインポートプロセスには時間がかかるため、ほとんどの状況では完全なメタデータのインポートは必要ありません。最も一般的なものは、少なくとも schemaName または schemaPattern、および tableTypes でインポートを制限します。

例: my-schema からテーブルとビューのみをインポートする Importer 設定。

SET SCHEMA ora;

IMPORT FOREIGN SCHEMA "my-schema" FROM SERVER ora INTO ora OPTIONS ("importer.tableTypes" 'TABLE,VIEW');
Copy to Clipboard Toggle word wrap

インポーターの設定に関する詳細は、「 仮想データベース」を参照して ください。

ネイティブクエリー

物理テーブル、機能、および手順には、任意でネイティブクエリーが関連付けられています。  ネイティブクエリーの検証は実行されません。ソース SQL を生成するためのシンプルな方法で使用されます。  teiid_rel:native-query 拡張メタデータを設定すると、ソースクエリーのインラインビューとしてネイティブクエリーが実行されます。  この機能は、インラインビューを提供するソースでのみ使用する必要があります。  ネイティブクエリーはそのまま使用され、パラメーター化された文字列として処理されません。たとえば、nameInSource="x"'teiid_rel:native-query="select c from g" の物理テーブル y では、Data Virtualization ソースクエリー "SELECT c FROM y" は SQL クエリー "SELECT c FROM(select c FROM(select c from g)を x" と して生成します。  ネイティブクエリーの列名は、SQL が有効になるように、物理テーブル列の nameInSource と一致する必要があります。

物理手順の場合は、teiid_rel:native-query 拡張メタデータを、位置的参照の IN パラメーターを追加する機能が追加されたクエリー文字列に設定することもできます。詳細は「 Translators でパラメーター化 可能なネイティブクエリー 」を参照してください。  teiid_rel:non-prepared 拡張メタデータプロパティーは false に設定して、パラメーターバインディングをオフにすることができます。 

適切に検証されていない場合に受信は SQL インジェクション攻撃を許容するため、このオプションの設定は注意して行ってください。  ネイティブクエリーはストアドプロシージャーを呼び出す必要はありません。  物理ストアドプロシージャーメタデータによって想定される結果セットに位置的に一致する結果セットを返す SQL はすべて機能します。  たとえば、teiid_rel:native-query="select c from g from g where c1 = $1 and c2 = '$$1"' のあるストアドプロシージャ x の場合、Data Virtualization source query '"CALL x(?)"' は SQL クエリー '"select c from g where c1 = ? and c2 = '$1"'' を生成します。  この例の ? は、パラメーター 1 にバインドされている実際の値に置き換えられます。

直接クエリーの手順

この機能は、ソースに対して任意のコマンドを実行できるようにする固有のセキュリティーリスクがあるため、デフォルトでオフになっています。この機能を有効にするには、SupportsDirectQueryProcedure と呼ばれる実行プロパティーを上書きし、true に設定します。詳細は「 Translators での 実行プロパティーの上書き 」を参照してください。

デフォルトでは、クエリーを直接実行する手順の名前は native です。名前を変更するには、実行プロパティー DirectQueryProcedureName を上書きします。

JDBC トランスレーターは、Data Virtualization の解析または解決を行わずに、アドホック SQL クエリーをソースに対して直接実行する手順を提供します。この手順の結果のメタデータは Data Virtualization には認識されないため、オブジェクト配列として返されます。ARRAYTABLE は、クライアントアプリケーションが使用するための表形式出力です。詳細は、arraytable を参照してください。

SELECT の例

SELECT x.* FROM (call jdbc_source.native('select * from g1')) w,
 ARRAYTABLE(w.tuple COLUMNS "e1" integer , "e2" string) AS x
Copy to Clipboard Toggle word wrap

INSERT の例

SELECT x.* FROM (call jdbc_source.native('insert into g1 (e1,e2) values (?, ?)', 112, 'foo')) w,
 ARRAYTABLE(w.tuple COLUMNS "update_count" integer) AS x
Copy to Clipboard Toggle word wrap

UPDATE の例

SELECT x.* FROM (call jdbc_source.native('update g1 set e2=? where e1 = ?','blah', 112)) w,
 ARRAYTABLE(w.tuple COLUMNS "update_count" integer) AS x
Copy to Clipboard Toggle word wrap

DELETE の例

SELECT x.* FROM (call jdbc_source.native('delete from g1 where e1 = ?', 112)) w,
 ARRAYTABLE(w.tuple COLUMNS "update_count" integer) AS x
Copy to Clipboard Toggle word wrap

9.5.1. Actian Vector translator(actian-vector)

また、一般的な JDBC 翻訳の 情報も併せて参照してください。

タイプが actian-vector によって認識されるアクチェンベクタートランスレーターは Actor の Actian Vector 用です

JDBC ドライバーを http://esd.actian.com/platform からダウンロードします。接続 URL のポート番号は 16967 にマップする AH7 です。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat