USER MANUALS

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 の互換性

Virtual DataPort の SQL サポートでは、次の 2 点が強化されています。

UNION と UNION ALL

Denodo 8.0 では演算子 UNIONUNION ALL が SQL 標準に従って動作します。つまり、UNION 演算子の結果は重複行を返しません。重複行がある場合は UNION 演算子によって削除されます。この変更の目的は SQL 標準への準拠を進めるためです。重複行を残したい場合は、UNION ALL を使用してください。

演算子の動作の詳細については、VQL ガイドの「 UNION 句 」のページを参照してください。UNION と UNION ALL のそれぞれを実行した場合のパフォーマンスへの影響を比較してください (UNION ALL の方がはるかに高速です)。

以下の点に留意してください。

  • この変更により、UNION 演算子を使用するクエリの結果が影響を受ける場合があります。

  • 前バージョンの Denodo で Administration Tool から「和結合ビュー」を作成する際には、「UNION」ではなく「UNION ALL」が使用されていました。そのため、このビューに関してはすでに「UNION ALL」演算子が使用されているため、実行結果は変更の影響を受けません。

  • 前バージョンの Denodo では、UNION と UNION ALL が同じ結果を返していました (重複行を削除しない)。Denodo 7.0 には、 UNION 演算子の動作を SQL 標準に合わせる設定 が存在しましたが、この設定はデフォルトで無効になります。

フィールドを投影せずに ORDER BY を使用

ビューの列を投影しなくても、クエリの ORDER BY 句にビューの列を含めることができるようになりました。

ID の先頭と末尾のスペースを削除

ID の先頭と末尾のスペースが自動的に削除されるようになりました。たとえば、次のステートメントを実行すると、

CREATE VIEW " customer_australia " AS SELECT * FROM customer WHERE country = 'Australia';

ビューの名称は「customer_australia」 (前後のスペースなし) となります。この機能は Denodo 7.0u20200310 で追加済みです。

権限

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 ステートメントに影響があります。

WRITE 権限には今後 INSERT 権限、UPDATE 権限、および DELETE 権限が含まれない

Denodo 7.0 では、WRITE 権限を付与されたユーザーおよびロールには、自動的に INSERT 権限、UPDATE 権限、および DELETE 権限が付与されます。Denodo 8.0 では、WRITE 権限を付与されても、INSERT 権限、UPDATE 権限、および DELETE 権限は付与されません。これらの権限は明示的に付与する必要があります。

アップグレードガイド 』の手順に従って Denodo 7.0 を 8.0 にアップグレードした場合、7.0 から取得する VQL によって、WRITE 権限を持つユーザーに INSERT 権限、UDPATE 権限、および DELETE 権限が割り当てられます。これにより、ユーザーアカウントおよびロールは同じ権限を持ち続けます。

WRITE 権限を持つユーザーが実行できるアクションのリストについては、「 Virtual DataPort におけるユーザーおよびアクセス権限 」を参照してください。

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:9443/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/Trino

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

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

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

Add feedback