Virtual DataPort 8.0 GA の変更点

ここでは、Virtual DataPort 8.0 GA で Virtual DataPort 7.0 から変更された機能について紹介します。

メモリ

Virtual DataPort のデフォルトの構成で割り当てられる RAM が、1 ギガバイトではなく 4 ギガバイトになりました (パラメーター -Xmx)。本番環境に必要な構成に近づけることが目的です。

Solution Manager のインストール環境の Virtual DataPort では、デフォルトではまだ 1 ギガバイトが使用されます。

接続時の単一ポートの利用

JDBC ドライバー、Administration Tool、および新しい Design Studio では、Virtual DataPort との通信に単一ポート (9999) が使用されるようになりました。以前のバージョンでは、この通信には 2 つのポート (9999 と 9997) が必要でした。この変更によって、ファイアウォールの構成が簡単になります。

JMX コネクションではまだ 2 つのポート、9997 (メインポート) と 9995 (補助ポート) が使用されますが、Denodo 7.0 とは異なるポートになっています (Denodo 7.0 では、JMX コネクションには 9999 と 9997 が使用されていました)。Virtual DataPort と監視クライアントの間にファイアウォールがある場合は、ポート 9997 と 9995 へのコネクションを許可するようにファイアウォールの構成を更新してください。

JDBC データソース

JDBC データソース: ドライバーの場所

JDBC ドライバーなどの jar ファイル、dll ファイルなどのライブラリをインストール環境にコピーしないでください。代わりに Administration Tool のメニュー [File] > [Extensions management] のウィザードを使用してアップロードしてください。

詳細については、管理ガイドの「 拡張機能のインポート 」セクションを参照してください。

JDBC データソース: 一部のアダプターの削除

Microsoft SQL Server のバージョン 2014 と 2016 に jTDS ドライバーを使用して接続することはサポートされなくなりました。

Microsoft SQL Server のバージョン 2000 と 2005 に Microsoft の正式な JDBC ドライバーを使用して接続することはサポートされなくなりました。

jTDS ドライバーはより新しいバージョンの SQL Server への接続を正式にサポートしなくなり、Microsoft JDBC ドライバーは古いバージョンを正式にサポートしなくなったため、これらのアダプターは削除されました。

Kerberos 認証を使用する JDBC データソース

以前のバージョンの Denodo Platform では、システムのデフォルトの Kerberos 構成をオーバーライドするために、適切な情報を入力したファイル <DENODO_HOME_7_0>/jre/lib/security/krb5.conf を作成する必要がありました。

Denodo 8.0 では、このファイルを別の場所 <DENODO_HOME>/jre/conf/security/krb5.conf に作成する必要があります。このファイルを Java Runtime Environment のフォルダーに置く場合は、Windows と Linux のどちらに置くかによらず、ファイル名は「krb5.ini」ではなく「krb5.conf」であることに注意してください。

krb5.conf ファイルを Java アプリケーションが検索する方法については、Java 11 のドキュメントの「 Locating the krb5.conf Configuration File 」セクションに記載されています。

この変更は、Kerberos を有効にしていない Virtual DataPort インストール環境にある、Kerberos 認証を必要とする JDBC データソースに主に影響します。このシナリオでは、krb5 ファイルの作成が必要になることがよくあります。ただし、その krb5 ファイルの場所を指定していない場合は、Denodo Platform のコンポーネントに影響があります。

Administration Tool

クエリでは常に実行トレースが取得される

ビューにクエリを実行するダイアログからチェックボックス [Execute with TRACE] が削除され、Administration Tool では常にクエリの実行トレースが取得されるようになりました。

以前のバージョンでは、このチェックボックスを選択した場合に、クエリの実行トレースを取得するために Administration Tool によってクエリに TRACE 句が追加されていました。現在は、常にこの句がクエリに追加されるようになりました。

構成プロパティの取得/設定

今後、プロパティの値を変更する場合は、ファイル <DENODO_HOME>/conf/vdp/VDBConfiguration.properties を変更するのではなく、コマンド SET必ず使用 してください。この変更が特に重要になるのは、Virtual DataPort の構成とメタデータを外部データベースに保管するように構成している場合です。 SET を使用すると、プロパティの変更が他のサーバーに伝達されます。

多くの構成プロパティは、 SET を使用して値を変更すると即座に変更が適用されます。構成ファイルで値を変更した場合は必ず再起動が必要です。加えて、Denodo が実行されているコンピューターへの接続を必要とするユーザーの数も減ります。

さらに、新しいストアドプロシージャ GET_PARAMETER を使用して構成プロパティの値を取得することもできます。これは、コンピューターに接続して <DENODO_HOME>/conf/vdp/VDBConfiguration.properties でパラメーターの値を確認するよりも便利です。

SQL の互換性

このバージョンには、SQL ステートメントを実行するノースバンドアプリケーションの下位互換性を破る変更は 含まれていません 。つまり、バージョン 7.0 で機能するクエリはすべて新しいバージョンでも機能します。

権限

WEBCONTAINER SET

Denodo 8.0 以降では、グローバル管理者だけが WEBCONTAINER SET コマンドを実行できます。Denodo 7.0 では、接続しているデータベースに対して「Connect」および「Write」権限を持っているユーザーも、このコマンドを実行できました。

Solution Manager および JMXAdmin のロール

次のロールは Virtual DataPort に定義されなくなりました。

  • solution_manager_admin

  • solution_manager_promotion

  • solution_manager_promotion_admin

  • solution_manager_promotion_admin_development

  • solution_manager_promotion_admin_production

  • solution_manager_promotion_admin_staging

  • solution_manager_promotion_development

  • solution_manager_promotion_production

  • solution_manager_promotion_staging

Virtual DataPort 7.0 では、これらのロールが自動的に Virtual DataPort に作成されていました。これらのロールは Solution Manager で特定のタスクを実行する権限を付与するためのものです。

その他の目的にこれらのロールを使用していた場合は、ユーザーがロールを作成することができます。ただし、「デフォルトのロール」ではないので削除できるということに留意してください。

Solution Manager と一緒にインストールされる Virtual DataPort では、引き続きこれらのロールが作成されます。ただし、それらは Solution Manager の新しいユーザーインターフェイスから管理するものであり、Virtual DataPort の Administration Tool で管理するものではありません。


「jmxadmin」ロールは非推奨になりました。詳細については、「 Virtual DataPort 8.0 で非推奨となった機能 」のリストの「 ロール JMXAdmin 」セクションを参照してください。

列権限、行制限、カスタムポリシーが常に伝達される

Denodo 7.0 では、デフォルトでは実行エンジンは、ビューがステートメントで直接参照されている場合に だけ 、ユーザー/ロールに付与された、そのビューに対する 列権限、行制限、およびカスタムポリシー を適用します。

Denodo 8.0 では、ビューがステートメントで直接参照されているか間接的に参照されているかにかかわらず、常に列/行の制限、カスタムポリシーが適用されます。この動作は 7.0 ですでに導入されていましたが、デフォルトでは無効にされていました。

たとえば、「developer」ロールに「employee」ビューに対する列制限を定義するとします。その制限では、「salary」列を投影することをこのロールに禁止しています。

このロールを持つユーザーが次のクエリを実行した場合、Denodo 7.0 および 8.0 ではクエリは失敗します。

SELECT ename, salary
FROM employee

しかし、別のユーザーが次のビューを作成したとします。

CREATE VIEW employee_dept1 AS
  SELECT ename, salary
  FROM employee
  WHERE deptno = 1
Denodo 7.0 では、「developer」ロールを持つユーザーが、データベース全体またはこの新しいビューに対する EXECUTE 権限も持っている場合は、ロールに「employee」に対する列制限が定義されているにもかかわらず、このビューにクエリを実行する (つまり、「salary」列の取得) ことができます。

Denodo 8.0 では、このクエリは権限不足のために失敗します。


Denodo 7.0 の動作に戻すには、次の手順に従ってください。

  1. 管理者アカウントで Administration Tool にログインします。

  2. VQL シェルから以下のコマンドを実行します。

    SET 'com.denodo.vdb.catalog.user.User.enableCheckViewRestrictionAlways' = 'false';
    

    この変更は即座に適用されます。再起動する必要はありません。

  3. 特定のデータベースでのみ以前の動作に戻すには、以下のコマンドを実行します。

    SET 'com.denodo.vdb.catalog.user.User.checkViewRestrictionAlways' = 'true';
    
    ALTER DATABASE <database> CHECK_VIEW_RESTRICTIONS DIRECT_QUERIES_ONLY;
    

    この変更は即座に適用されます。再起動する必要はありません。

    将来、このデータベースでこれらの制限を常に適用するようにするには、以下のコマンドを実行します。

    ALTER DATABASE <database> DEFAULT;
    

    DEFAULT を指定すると、データベースはプロパティ com.denodo.vdb.catalog.user.User.checkViewRestrictionAlways で指定されている動作に従うようになります。

これはクエリ (SELECT) および INSERT、UPDATE、DELETE ステートメントに影響があります。

Web サービス

配列型の値の XML 表現

Denodo 7.0 では、デフォルトでは、サブフィールドが 1 つしかない配列フィールドの XML 表現が、Denodo REST Web サービスによって簡素化され、外側の配列を含めずに、サブフィールドだけが返されていました。

注釈

このサブセクションの情報は XML 表現についての情報です。HTML 表現および JSON 表現には関係ありません。

たとえば、次のスキーマのビューをパブリッシュする Web サービスがあるとします。

Schema with nested arrays

ネスト配列のスキーマ

7.0 では、この XML ドキュメントでデータは次のように表されます。

ネスト配列の値を持つエレメントの簡素化された XML 表現
<test_view>
   <f_n>
      <f1>10</f1>
      <f2>20</f2>
   </f_n>
   <f_n>
      <f1>10</f1>
      <f2>20</f2>
   </f_n>
   <f_n>
      <f1>10</f1>
      <f2>20</f2>
   </f_n>
   <f_n>
      <f1>10</f1>
      <f2>20</f2>
   </f_n>
</test_view>

「f_n_n」配列が結果に含められずに、「f_n」レジスターだけが表されていることに注目してください。


Denodo 8.0 では、次の XML が同じ例のデフォルトの出力になります。

ネスト配列の値を持つエレメントの XML 表現
<test_view>
   <f_n_n>
      <f_n>
         <f1>10</f1>
         <f2>20</f2>
      </f_n>
      <f_n>
         <f1>10</f1>
         <f2>20</f2>
      </f_n>
   </f_n_n>
   <f_n_n>
      <f_n>
         <f1>10</f1>
         <f2>20</f2>
      </f_n>
      <f_n>
         <f1>10</f1>
         <f2>20</f2>
      </f_n>
   </f_n_n>
</test_view>

バージョン 7.0 の動作に戻すには、次の手順に従ってください。

  1. 次のコマンドを実行します。

    SET 'com.denodo.wsgenerator.restws.xmlArraySimpleOutput' = 'true';
    
  2. すべての REST Web サービスを再デプロイします。Web サービスを再デプロイすると、このプロパティの変更が Web サービスに適用されます。

エラーの XML 表現および JSON 表現が変更された

Denodo 7.0 では、デフォルトでは、Denodo REST Web サービスのエラー形式が XML 表現と JSON 表現で異なっていました。

Denodo 8.0 では、デフォルトでは、Denodo REST Web サービスのエラー形式は XML 表現と JSON 表現で同じです。

注釈

このサブセクションの情報は XML 表現と JSON 表現についての情報です。HTML 表現には関係ありません。

Web サービスが結果を返す前にエラーが発生した場合:

部分的な結果を含まないエラー応答の JSON 表現 (7.0)
{
   "errors":[
      {
         "message":"The field 'somefield' does not exist."
      }
   ]
}
部分的な結果を含まないエラー応答の JSON 表現 (8.0)
{
   "__errors__":[
      {
         "message":"The field 'somefield' does not exist."
      }
   ]
}
部分的な結果を含まないエラー応答の XML 表現 (7.0)
<?xml version="1.0" encoding="UTF-8"?>
<error xmlns="http://www.denodo.com/restful">
   <message>The field 'somefield' does not exist.</message>
</error>
部分的な結果を含まないエラー応答の XML 表現 (8.0)
<?xml version="1.0" encoding="UTF-8"?>
<__errors__ xmlns="http://www.denodo.com/restful">
   <error message="The field 'somefield' does not exist." />
</__errors__>

Web サービスが結果を返し始めた後にエラーが発生した場合:

部分的な結果を含むエラー応答の JSON 表現 (7.0)
{
   "name":"v41271",
   "elements":[
      {
         "iinc_id":1,
      },
[...]
   ],
   "__errors__":[
      {
         "code":50001,
         "message":"Error executing query. Total time 1.041 seconds.\n\nQUERY [PROJECTION] [ERROR] \nV41271 [PROJECTION] [ERROR] \nV41271 [UNION] [ERROR] \nV41271 [VIRTUAL] [ERROR] \nV41271 [JDBC WRAPPER] [ERROR] \nV41271 [JDBC ROUTE] [CONNECTION_ERROR]  Unexpected error creating a connection: ORA-01017: invalid username/password; logon denied\n Received exception with message 'ORA-01017: invalid username/password; logon denied'"
      },
[...]
      {
         "code":11,
         "message":"V41271 [JDBC ROUTE]  [CONNECTION_ERROR] Unexpected error creating a connection: ORA-01017: invalid username/password; logon denied"
      }
   ]
}
部分的な結果を含むエラー応答の JSON 表現 (8.0)
{
   "name":"v41271",
   "elements":[
      {
         "iinc_id":1,
      },
[...]
   ],
   "__errors__":[
      {
         "code":50001,
         "message":"Error executing query. Total time 1.041 seconds.\n\nQUERY [PROJECTION] [ERROR] \nV41271 [PROJECTION] [ERROR] \nV41271 [UNION] [ERROR] \nV41271 [VIRTUAL] [ERROR] \nV41271 [JDBC WRAPPER] [ERROR] \nV41271 [JDBC ROUTE] [CONNECTION_ERROR]  Unexpected error creating a connection: ORA-01017: invalid username/password; logon denied\n Received exception with message 'ORA-01017: invalid username/password; logon denied'"
      },
[...]
      {
         "code":11,
         "message":"V41271 [JDBC ROUTE]  [CONNECTION_ERROR] Unexpected error creating a connection: ORA-01017: invalid username/password; logon denied"
      }
   ]
}
部分的な結果を含むエラー応答の XML 表現 (7.0)
<?xml version="1.0" encoding="UTF-8"?>
<denodo:view xmlns:denodo="http://www.denodo.com/restful" xmlns="http://www.denodo.com/restful/admin/views/v41271" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="v41271">
   <v41271>
      <iinc_id>1</iinc_id>
   </v41271>
[...]
   <__errors__>
      <error xmlns="http://www.denodo.com/restful">
         <message code="50001">Error executing query. Total time 1.043 seconds. QUERY [PROJECTION] [ERROR] V41271 [PROJECTION] [ERROR] V41271 [UNION] [ERROR] V41271 [VIRTUAL] [ERROR] V41271 [JDBC WRAPPER] [ERROR] V41271 [JDBC ROUTE] [CONNECTION_ERROR] Unexpected error creating a connection: ORA-01017: invalid username/password; logon denied Received exception with message 'ORA-01017: invalid username/password; logon denied'</message>
[...]
         <message code="11">V41271 [JDBC ROUTE] [CONNECTION_ERROR] Unexpected error creating a connection: ORA-01017: invalid username/password; logon denied</message>
      </error>
   </__errors__>
</denodo:view>
部分的な結果を含むエラー応答の XML 表現 (8.0)
<?xml version="1.0" encoding="UTF-8"?>
<denodo:view xmlns:denodo="http://www.denodo.com/restful" xmlns="http://www.denodo.com/restful/admin/views/v41271" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="v41271">
   <v41271>
      <iinc_id>1</iinc_id>
   </v41271>
[...]
   <__errors__>
      <error code="50001" message="Error executing query. Total time 1.045 seconds. QUERY [PROJECTION] [ERROR] V41271 [PROJECTION] [ERROR] V41271 [UNION] [ERROR] V41271 [VIRTUAL] [ERROR] V41271 [JDBC WRAPPER] [ERROR] V41271 [JDBC ROUTE] [CONNECTION_ERROR] Unexpected error creating a connection: ORA-01017: invalid username/password; logon denied Received exception with message 'ORA-01017: invalid username/password; logon denied'" />
[...]
      <error code="11" message="V41271 [JDBC ROUTE] [CONNECTION_ERROR] Unexpected error creating a connection: ORA-01017: invalid username/password; logon denied" />
   </__errors__>
</denodo:view>

バージョン 7.0 の動作に戻すには、次の手順に従ってください。

  1. 次のコマンドを実行します。

    SET 'com.denodo.wsgenerator.rest.consolidatedErrorsSchema' = 'false';
    
  2. すべての REST Web サービスを再デプロイします。Web サービスを再デプロイすると、このプロパティの変更が Web サービスに適用されます。

RESTful Web サービス: パラメーター $select で式を使用できる

このセクションは、Denodo の RESTful Web サービス (つまり https://denodo-server.acme.com:9090/denodo-restfulws) についての情報です。REST Web サービスには関係ありません。

以前のバージョンでは、入力パラメーター「$select」の値には、カンマ区切りにしたフィールドのリストしか指定できませんでしたが、式も使用できるようにサービスを構成することができました。

バージョン 8.0 では、デフォルトでパラメーター「$select」が式を処理するようになりました。たとえば、次を実行したとします。

https://denodo-server.acme.com:9443/denodo-restfulws/customer360/views/customer?$select=concat(last_name, ', ' , first_name) AS full_name, upper(state)

(わかりやすくするために、この URL はエスケープされていません。)

以前のバージョンの動作に戻すには、次の手順に従ってください。

  1. Virtual DataPort に管理者アカウントでログインして、以下を実行します。

    WEBCONTAINER STOP
    

    Administration Tool を使用することも Design Studio を使用することもできます。

  2. ファイル <DENODO_HOME>/resources/apache-tomcat/webapps/denodo-restfulws/WEB-INF/other_settings.xml を編集し、 processFunctionsInSelectParameter のエントリを検索して、その値を false に変更します。

  3. 以下のコマンドを実行します。

    WEBCONTAINER START
    

この変更はグローバルな RESTful Web サービスに影響します。この機能は、オプション [Process functions in $select parameter] (サービスの構成の [Advanced] タブ) を使用して REST Web サービスごとに制御できます。

キャッシュモジュール: PrestoDB/PrestoSQL

Denodo 8.0 では、Virtual DataPort は、管理されていない (外部の) Hive テーブルを使用して PrestoDB/PrestoSQL にデータを転送します。外部テーブルを使用することで、データファイルのアップロード用に構成した URI が、キャッシュまたはデータ移動に使用するスキーマの場所とは異なっている可能性があります。必ず、PrestoDB/PrestoSQL の hive.non-managed-table-writes-enabled 構成プロパティを true にしてください。そうしないと、PrestoDB/PrestoSQL にデータを保存するプロセスが失敗します。Denodo 7.0 の動作 (つまり、外部テーブルを使用しない動作) に戻すには、以下を実行してください。

SET 'com.denodo.vdb.util.tablemanagement.sql.PrestoTableManager.useExternalTables'='false';

この変更を適用するために再起動する必要はありません。