Virtual DataPort 6.0 の変更点

Virtual DataPort 6.0 の変更点は以下のとおりです。

VQL 構文の変更点

Denodo 6.0 では、VQL ステートメントを解析する処理の曖昧さを回避するため、VQL 構文が変更されました。

この変更により、サードパーティのクライアントから Virtual DataPort に送信されるクエリを見直さなければならない場合があります。

Denodo 6.0 からは、以下の点に留意してください。

  • 複数の値を扱う演算子を使用する場合、条件の右側の値を括弧で囲むことが必須になりました。該当する演算子を以下に示します。

    • in

    • not in

    • テキスト類似性を表す演算子 (~)

      以下に例を示します。

      SELECT *
      FROM V1
      WHERE field_1 IN (1, 2)
      

      以前のバージョンでは、括弧はオプションです。

  • between 演算子の値を AND 句で区切ることが必須になりました。たとえば、 field_1 BETWEEN value_1 AND value_2 のように表記します。

    以前のバージョンでは、 field_1 between value1, value2 を実行できます。

  • SQL 標準で指定されているように、リテラルを一重引用符で囲むことが必須になりました。以前のバージョンでは一重引用符または二重引用符を使用できましたが、今後は一重引用符のみです。

    Denodo 6.0 では、二重引用符は特殊文字を使用する識別子を囲むために使用されます。

  • 「Unicode」識別子は二重引用符で囲みます。Denodo 5.5 でこれに使用できるのは、山括弧のみでした。Denodo 6.0 では山括弧も使用できますが、今後、非推奨になる可能性があります。

    たとえば、以下の 2 つのステートメントは同じことです。

    CREATE VIEW `view with spaces in the name` ...
    
CREATE VIEW "view with spaces in the name" ...
  • 補間変数の値を入力するには、「=」演算子を使用します。次のクエリは、今後無効になります。

    SELECT *
    FROM view1
    WHERE input_status > 'value'
    

    以前のバージョンでは、任意の演算子を使用しても結果は「=」を使用した場合と同じでしたが、これは、意味上は正しくありませんでした。

  • 今後、リテラルの表記では、バックスラッシュ (\) を使用して一重引用符 (') をエスケープすることはできません。一重引用符をエスケープするには、その前に一重引用符をもう 1 つつける必要があります。

    たとえば次のクエリは、Denodo 5.5 では「he\'llo」を返しますが、Denodo 6.0 では「he\」を返します。

    SELECT 'he\'llo' AS f1
    

VQL ステートメントの変更点

CREATE DATASOURCE JDBC

Denodo 6.0 では、JDBC データソースおよび ODBC データソースの「ソース構成」から、以下のプロパティが削除されました。

  • 「ORDER BY collation」 (CREATE DATASOURCE コマンドの SOURCECONFIGURATION 句の ORDERBYCOLLATION パラメーター)。

  • 「Delegate ORDER BY Collation」 (CREATE DATASOURCE コマンドの SOURCECONFIGURATION 句の DELEGATEORDERBYCOLLATION パラメーター)。

このようなプロパティのセットを持つデータソースをインポートすると、これらの値は無視されます。

上記のプロパティを削除しても、機能が失われることはありません。削除されたのは、これらのプロパティをデータソース内で構成すると、マージ結合によって無効な結果が生じる可能性があるからです。その理由は、データベースは、バイナリ以外の照合順序でソートされた結果を返す場合がありますが、マージ結合が前提としているのはバイナリの照合順序でソートされた結果セットだからです。代わりに、「Supports binary ORDER BY collation」プロパティ、「Delegate ORDER BY collation modifier」プロパティ、「Delegate binary ORDER BY collation」プロパティを使用すると、Virtual DataPort がデータベースに対して ORDER BY 句をプッシュダウンする方法を適切に管理できます。

これらの新しいプロパティの意味については、Virtual DataPort 管理ガイドの「 ソース構成の ORDER BY 関連プロパティ 」を参照してください。ただし、このようなプロパティのデフォルト値を変更する必要はほとんどありません。

LIST FUNCTIONS CUSTOM

Denodo 6.0 から、 LIST FUNCTIONS CUSTOM は、ユーザーによってインポートされた jar ファイルに存在する関数のリストのみを返すようになりました。以前のバージョンでは、リストにはその他の関数も含まれていました。

カスタムエレメント (関数、ラッパーなど) を開発するための依存関係

カスタムエレメント (カスタム関数、カスタムラッパー、ストアドプロシージャ、カスタム入力フィルター) の開発に必要な jar の一部では、名前が変更されました。

ただし、Java パッケージと Java クラスの名前は変わって いません 。このため、以前のバージョン向けに開発されたカスタムエレメントは、Denodo 6.0 で正しく動作します。

新しい名前は、Virtual DataPort 開発者ガイドに記載されています。

LDAP サーバーからのロールのインポート

Denodo 6.0 では、「ロール管理」の [Import roles from LDAP] ダイアログで「ロールベース」に入力する必要のある値が以前のバージョンとは異なります。

ロールをインポートするために、Virtual DataPort から LDAP サーバーに対してクエリを実行します。この LDAP クエリは特定のレベルで実行されます。

Denodo 5.5 以前のバージョンでは、このレベルは、以下の 2 つの値を連結した値になります。

  1. LDAP データソースの URI のベース検索。

  2. データベースの設定の「ロールベース」フィールドの値。

Denodo 6.0 では、このレベルは「ロールベース」フィールドの値のみになりました。

たとえば、データベースによって使用されている LDAP データソースの URI が「ldap://acme.denodo.com:389/DC=Denodo」で、データベースの「ロールベース」が DC=contoso,DC=com の場合のレベルを以下に示します。

  • Denodo 5.5 以前では、 DC=denodo,DC=contoso,DC=com のレベルで検索が実行されます。

  • Denodo 6.0 と 7.0 では、 DC=contoso,DC=com のレベルで検索が実行されます。

JDBC データソース

Teradata へのアクセス

Denodo 6.0 から、データベースアダプターが Teradata の場合、JDBC データソースの「Supports binary ORDER BY collation」プロパティがデフォルトで「yes」になりました。以前のバージョンでは、デフォルト値は「no」でした。

このプロパティを「yes」に設定すると、マージ結合を、最速の結合方法である Teradata に委任できるようになります。ただし、Teradata に関して最も重要なのは、デフォルトの照合順序がバイナリに設定されることです。そのように設定しない場合、Virtual DataPort が (データベースに委任せずに) 実行するマージ結合で正しい結果が得られない可能性があります。

デフォルトの照合順序をバイナリに設定できない場合、Teradata データベースに接続するすべてのデータソースで、このプロパティに「no」を設定します。

サブクエリとしての SQL 文の委任

Denodo 6.0 から、管理ツールを使用してクエリから作成される基本ビューの [Delegate SQL Sentence as subquery] オプションが、「yes」に設定されるようになりました。

このオプションが有効になっている場合、Virtual DataPort では、基本ビューの SQL クエリを FROM 句のサブクエリとして実行時に委任できます。これにより、データベースに委任できる操作が多くなります。ただし、一部のクエリでは、委任されるクエリの構文がデータベースに承認されない場合に失敗する可能性があります。

このプロパティの動作と制限事項の詳細については、Virtual DataPort 管理ガイドの「 ビュー構成プロパティ 」を参照してください。

JDBC ドライバー

JDBC ドライバーの場所

Denodo 6.0 から、Denodo JDBC ドライバーは <DENODO_HOME>/tools/client-drivers/jdbc ディレクトリにあります。

JDBC ドライバーによって返されるメタデータ

Denodo 6.0 から、Denodo JDBC ドライバーの DatabaseMetadata.getMaxColumnNameLength() メソッドは、Virtual DataPort で列名に対して許可される最大文字数を返すようになりました。

以前のバージョンでは、このメソッドは常に、制限が不明であることを示す 0 を返します。「JasperReports」など、一部の JDBC クライアントでは、この値ではうまく機能しません。

Java 7 でコンパイルされた JDBC ドライバー

Denodo 6.0 から、Denodo JDBC ドライバーは Java 7 でコンパイルされます。

このドライバーを使用し、以前のバージョンの Java で動作するアプリケーションでは、Java のバージョンを更新する必要があります。更新しない場合、アプリケーションはこのドライバーを読み込めなくなります。

注釈

以前のバージョンの Denodo の JDBC ドライバーは、Denodo 6.0 に接続できません。

JMX

Denodo 6.0 から、 VDBServerManagementInfo JMX MBean の GetActiveRequestList() 操作により、サーバーに送信されるリクエストの完全なリストが返されるようになりました。以前のバージョンでは、この操作によって返されるのは、 SELECTCALLINSERTUPDATEDELETE の各リクエストに関する情報のみです。

この変更により、データ定義言語ステートメントと DESC ステートメントの監視も可能になりました。

メモリ使用量のオプション

Denodo 6.0 から、Virtual DataPort ではデフォルトで、クエリで使用できる合計メモリ量が制限されます。

以前のバージョンの Denodo にもこの機能はありましたが、デフォルトでは無効になっていました。

このオプションの詳細については、Virtual DataPort 管理ガイドの「 クエリの最大メモリ使用量の制限 」を参照してください。

ODBC ドライバー

新しい Denodo ODBC ドライバー

バージョン 6.0 から、Denodo Platform では、PostgreSQL ODBC ドライバーを基にした独自の ODBC ドライバーを提供しています。可能な限り、PostgreSQL ドライバーの使用を止めて Denodo ODBC ドライバーの使用を開始してください。このドライバーは、 <DENODO_HOME>/tools/client-drivers/odbc にあります。

このドライバーを Linux で構成する手順は少し異なります。この手順については、Virtual DataPort 開発者ガイドを参照してください。

Denodo ODBC ドライバーは、PostgreSQL ODBC ドライバーよりも優れたパフォーマンスを発揮します。Denodo Platform に特化して調整された結果、変更がいくつか行われているからです。

ミリ秒精度の日付値

Denodo 6.0 から、ODBC インターフェイスにより、ミリ秒精度で日付フィールドが返されるようになりました。以前のバージョンで、このインターフェイスによって返される日付は秒精度です。

この変更は、ODBC インターフェイスにのみ適用されます。JDBC インターフェイスでは、バージョン 6.0 でも以前のバージョンでもミリ秒精度で日付が返されます。

REST Web サービスは今後デフォルトで HTTP Code 204 を返さない

Denodo 6.0 から、Denodo が公開する REST Web サービスでは、今後デフォルトで HTTP コード 204 (No content) を返すことはありません。

以前のバージョンでは、RESTful Web サービスと公開されている REST Web サービスは、以下の場合に HTTP コード 204 を返します。

  1. $filter パラメーターを含むリクエストに対して行が返されない場合。

  2. リクエストが、行を返さないビューに対してクエリを実行する場合。

これは、JSON 表現と XML 表現にのみ適用され、HTML 表現には適用されません。

REST Web サービスの動作を以前のバージョンの動作 (204 を返す) に戻す場合、Administration Tool の VQL シェルで次のコマンドを実行します。

SET 'com.denodo.wsgenerator.restws.noResultsReturnHTTPCode' = '204';

このステートメントを実行すると、デプロイまたは再デプロイするすべての REST Web サービスは、以下のように動作します。

  • 結果が行を返さない場合、HTTP コード 200 ではなく、204 を返す。

  • リクエストする表現に応じて、空の XML ドキュメントまたは JSON ドキュメントの代わりに空の応答を返す。

この変更を適用するために Virtual DataPort を再起動する必要はありませんが、REST Web サービスの再デプロイは必要です。

行の更新 (HTTP PUT リクエスト) または行の削除 (HTTP DELETE リクエスト) が行われた場合、REST サービスは引き続き HTTP コード 204 を返します。

RESTful Web サービス (http://localhost:9090/denodo-restfulws) の動作も同じように変更されました。上記のケースで HTTP コード 200 ではなく 204 を返すように構成するには、以下の手順に従って実施してください。

  1. <DENODO_HOME>/resources/apache-tomcat/webapps/denodo-restfulws/WEB-INF/ ディレクトリの other_settings.xml ファイルを編集します。

  2. noResultsReturnHTTPCode プロパティの値を 200 に設定します。

  3. Virtual DataPort サーバーを再起動して変更を適用します。

ストアドプロシージャ

組み込みの SOURCE_CHANGES ストアドプロシージャの old type リターンパラメーターは、名前が old_type に変更されました。

ユーザー権限

Denodo 6.0 から、接続しているデータベース以外のデータベースに属するビューに対してクエリを実行できるようになりました。したがって、あるデータベースに接続しながら、接続は許可されていないが読み取りアクセス権を持つ、別のデータベースのビューにクエリを実行できるようになりました。ただし、データベースには接続できないため、ビューの作成、編集、削除はできません。

以前のバージョンでは、ユーザーがデータベースの「Connect」権限を持つ場合にのみ、そのデータベースに属するビューにクエリを実行できます。

バージョン管理システムの統合 (VCS)

バージョン管理システム (VCS) からデータベースのチェックアウトをインポートする処理は、このバージョンで変更されました。

Denodo 5.5 では、VCS から取得したステートメントが失敗した場合、処理は停止され、何もインポートされません。

Denodo 6.0 では、VCS から取得したステートメントが失敗した場合、サーバーは引き続き次の処理を実行します。このことが必要なのは、まだ存在していない別のデータベースのエレメントに依存するエレメントをデータベースが持っている場合に、データベースを部分的に更新できるようにするためです。

Windows サービス

Denodo 6.0 から、Denodo Windows サービスを起動したユーザーを変更する場合、「jna_tmpdir」パラメーターの値を変更する必要がなくなりました。Denodo 6.0 では、このプロパティは Denodo インストール内のフォルダーを参照します。

以前のバージョンでは、このパラメーターは、Denodo Platform をインストールしたユーザーの TEMP ディレクトリを参照します。したがって、Denodo Windows サービスを実行するユーザーを変更した場合、以前のバージョンでは、「jna_tmpdir」の値を変更する必要があります。Denodo 6.0 ではその必要はなくなりました。

Denodo Platform 6.0 で非推奨となった機能

ここでは、Denodo 6.0 では非推奨として指定された機能を挙げます。非推奨となった機能は、Denodo Platform の今後のバージョンでは積極的なメンテナンスは行われず、削除される可能性もあります。今後の使用はお勧めしません。

VQL の構文

ALTER TABLE <base view name> ADD SEARCHMETHOD という構文は非推奨になりました。

基本ビューを作成する際は、 CREATE TABLE ステートメントを実行してから ALTER TABLE ステートメントで検索方法を追加するのではなく、 CREATE TABLE ステートメント内で検索方法を定義してください。

これにより、Virtual DataPort が処理しなければならないステートメント数が減ります。

たとえば、次を実行するのではなく、

CREATE TABLE internet_inc I18N us_est (
    iinc_id:long,
    summary:text,
    ...
    ...
);

ALTER TABLE internet_inc
    CACHE OFF
    TIMETOLIVEINCACHE DEFAULT
    ADD SEARCHMETHOD internet_inc(
        I18N us_est
        CONSTRAINTS (
             ADD iinc_id (any) OPT ANY
             ADD summary (any) OPT ANY
             ...
             ...
        )
        OUTPUTLIST (iinc_id, specific_field1, specific_field2, summary, taxid, ttime
        )
        WRAPPER (jdbc internet_inc)
    );

こちらを実行します (1 つのコマンドです)。

CREATE TABLE internet_inc I18N us_est (
    iinc_id:long,
    summary:text,
    ...
    ...
    )
    CACHE OFF
    TIMETOLIVEINCACHE DEFAULT
    ADD SEARCHMETHOD internet_inc(
        I18N us_est
        CONSTRAINTS (
             ADD iinc_id (any) OPT ANY
             ADD summary (any) OPT ANY
             ...
             ...
        )
        OUTPUTLIST (iinc_id, specific_field1, specific_field2, summary, taxid, ttime
        )
        WRAPPER (jdbc internet_inc)
    );

JDBC ドライバーの内部コネクションプール

Denodo JDBC ドライバーは、Virtual DataPort に独自のコネクションプールを作成できますが、この機能は非推奨です。

コネクションプールは、 poolEnabledinitSizemaxActivemaxIdle の各パラメーターで構成されますが、この機能が削除されると、これらのパラメーターは今後は有効ではなくなります。

公開されている Web サービス: 「LDAP を使用した」認証

公開されている Web サービスの以下の認証方法は非推奨になりました。

  • REST Web サービス向けの「HTTP Basic with LDAP」と「WSS Basic with LDAP」

  • SOAP Web サービス向けの「HTTP Basic with LDAP」

SQLFRAGMENT 句

CREATE WRAPPER JDBC ステートメントの SQLFRAGMENT 句は非推奨になりました。

ストアドプロシージャ API: getNumOfAffectedRows メソッド

ストアドプロシージャ API の getNumOfAffectedRows() メソッドは非推奨になりました。新しいストアドプロシージャ内でこのメソッドをオーバーライドしないでください。

このメソッドは非推奨ですが、今後のバージョンの API からは削除されないと考えられます。既存のストアドプロシージャとのバイナリ互換性を維持するためです。

カスタムラッパー API: 非推奨となったメソッド

カスタムラッパー API の次のメソッドは非推奨になりました。

  • com.denodo.vdb.engine.customwrapper.expression.CustomWrapperFieldExpression.getSubFields()

  • com.denodo.vdb.engine.customwrapper.expression.CustomWrapperFieldExpression.hasSubFields()

SAP 向け XMLA コネクター

SAP (「SAP BW 3.x (XMLA)」および「SAP BI 7.x (XMLA)」) 向け XMLA アダプターは非推奨になりました。「SAP BI 7.x (BAPI)」アダプターの使用を開始するようお勧めします。

JDBC データソースダイアログ: Choose Automatically

[Choose automatically] チェックボックスは、Denodo Platform の今後のメジャーバージョンで削除されます。

Denodo 6.0 で削除された機能

ここでは、Denodo 6.0 で今後使用できない機能を挙げます。

enumerated 型と money 型

enumerated 型と money 型は削除されました。

money 型ではなく、 decimal 型を使用してください。

SOAP Web サービス汎用インターフェイス

SOAP Web サービス汎用インターフェイスは削除されました。以前のバージョンでは、このインターフェイスは http://localhost:9090/denodo-vdp-wsclient/services にデプロイされます。

この変更は、1 つまたは複数のビューを公開している SOAP Web サービスには影響を 与えません 。これらのサービスは、引き続きフルサポートの対象です。

JDBC ドライバーを使用できないクライアント向けの代替手段として、Denodo では、RESTful Web サービス (http://localhost:9090/denodo-restfulws) と ODBC インターフェイスを用意しています。

サーバー管理モード

Virtual DataPort Administration Tool の「サーバー管理モード」は削除されました。Denodo 6.0 から、Virtual DataPort サーバーに接続する場合は常に、URL にデータベース名を含める必要があります。