9.2. 委譲トランストラクター
コアの Data Virtualization インストールで利用可能な 委譲 トランスレーターを使用して、既存のトランスレーターの機能を変更できます。デバッグの目的で多くの場合、または特別な状況では、トランスレーターの特定の機能をオンまたはオフにしたい場合があります。たとえば、最新バージョンの Hive データベースは ORDER BY
コンストラクトをサポートしますが、Hive translator の現在の Data Virtualization バージョンはサポートされません。委譲トランスレーターを使用して、実際にコードを作成せずに ORDER BY
互換性を有効にできます。同様に、逆順を実行し、特定の機能をオフにして、より良いプランを作り出すことができます。
委譲トランスレーターを使用するには、DDL で定義する必要があります。以下の例は、"hive" translator を上書きし、ORDER BY
機能を無効にする方法を示しています。
実行プロパティーを使用して上書きできるトランスレーター機能の詳細は、『Translator Development Guide』 の「 Translator_Capabilities 」を参照してください。上記の例は、Hive translator のデフォルトの ORDER BY
互換性を変更する方法を示しています。
9.2.1. 委譲トランスレーターの拡張 リンクのコピーリンクがクリップボードにコピーされました!
org.teiid.translator.BaseDelegatingExecutionFactory
を拡張してトランスレーターを作成できます。クラスがカスタムトランスレーターとしてパッケージ化された後に、別のトランスレーターインスタンスを実行時に委譲して、委譲へのすべての呼び出しをインターセプトできます。このベースクラスは委譲以外の独自の機能を提供しません。トランスレーターは、DDL 設定の一部として定義するのではなく、トランスレーターにハードコードすることができます。代替の動作を提供するためにメソッドを上書きすることもできます。
名前 | 説明 | デフォルト |
delegateName | 委譲先となる Translator インスタンス名。 | 該当なし |
cachePattern | トランスレーターキャッシュ API を使用してキャッシュされる必要があるクエリーの正規表現パターン。 | 該当なし |
cacheTtl | キャッシュパターンに一致するクエリーの有効期間(ミリ秒単位)。 | 該当なし |
たとえば、仮想データベースで oracle トランスレーターを使用し、トランスレーターを通過する呼び出しをインターセプトする場合は、以下の例のようにカスタム委譲のトランスレーターを作成できます。
その後、このトランスレーターを Data Virtualization エンジンにデプロイできます。次に DDL ファイルで、以下の例のようにインターセプタートランスレーターを定義します。
上記からのカスタムトランスレーター「 インターセプター
」に基づく「translator」オーバーライドを定義し、委譲名として「oracle」に委譲する必要があるトランスレーターを提供しました。次に、VDB でこのオーバーライド translator oracle-interceptor
を使用しています。この VDB モデルのトランスレーターに今後の呼び出しは、コードによって傍受され、どのような操作を行うことができます。