キャッシュモジュール

Virtual DataPort には、データソースから取得したデータのローカルコピーを JDBC データベースに保存できるキャッシュエンジンが組み込まれています。これにより、繰り返し実行するクエリがデータソースにアクセスすることによる影響を低減して、データ取得を高速化できます。特に、一定のタイプのソースで効果的です。

この目的で使用できるデータベースのリストを以下に示します。

キャッシュエンジンでサポートされているデータベースのリスト

データベース

Denodo Platform におけるドライバーの提供

Amazon Athena

Amazon Aurora MySQL

Amazon Aurora PostgreSQL

Amazon Redshift

Azure Synapse SQL (旧称 Azure SQL Data Warehouse)

○ (Microsoft SQL Server ドライバー)

Databricks

Hive 2.0.0 (HiveServer2)

×

HP Vertica 7

×

IBM DB2 8、9、9 for z/OS、10、10 for z/OS、11、および 11 for z/OS

×

Impala 2.3

×

Microsoft SQL Server 2000、2005、2008、2008 R2、2012、2014、2016、および 2017

以下の 2 つのドライバーを使用でき、どちらも提供されています。

jTDS: 提供あり

Microsoft ドライバー (MS ドライバー)

MySQL 4 および 5

×

Netezza 6.0 および 7.0

×

Oracle 8i、9i、10g、11g、12c、12c In-Memory、18c、および 19c

Oracle TimesTen 11g

×

PostgreSQL 9、10、11 および 12

PrestoDB 0.1x

PrestoSQL 3xx

SAP HANA 1

×

Snowflake

Spark SQL 2.x

Teradata 12、13、14、15、および 16

×

Vertica 7 および 9

×

Yellowbrick

Denodo Platform で提供されていないドライバーは、ベンダーの Web サイトからダウンロードする必要があります。

上記のアダプターに加えて、Virtual DataPort では、他の任意の JDBC データベースと一緒に使用してキャッシュデータを保存できる汎用アダプターを提供しています。その構成手順については、「 他のデータベースの汎用サポート 」を参照してください。ただし、上記のリストに含まれるデータベースのいずれかを使用することが強く推奨されます。なぜなら、Virtual DataPort は、汎用アダプターを使用する場合と比較して、より多くの操作をサポートしているデータベースにプッシュダウンするので、キャッシュデータベースに対してクエリを実行するときのパフォーマンスが優れているからです。


キャッシュエンジンを初めて有効にする場合、キャッシュデータを保存するデフォルトデータベースは、Denodo に組み込まれている Apache Derby データベースです。

重要

この Apache Derby 組み込みデータベースを使用することは推奨されません。このデータベースは、キャッシュエンジンと小規模なプロジェクトの実行という事例を見せるために提供されています。代わりに、特に本番環境では、外部データベースを使用してください。

キャッシュエンジンを有効にするには、以下の手順に従って実施してください。

  1. データベースに Denodo のキャッシュエンジン専用のカタログまたはスキーマを作成します。

    これは必須ではありませんが、強く推奨されます。なぜなら、キャッシュエンジンは、多数のテーブル (キャッシュが有効な Denodo の各ビューに 1 つずつ) を作成するからです。したがって、これらのテーブルを同じデータベースの他のエレメントから分離することは有益です。

    この新しいカタログまたはスキーマは、以下のオプションを使用して作成する必要があります。

    • マルチバイト文字のサポート (例: UTF-8)。これにより、マルチバイト文字 (例: 日本語の文字) を含むデータを保存できるようになります。また、名前やフィールドにマルチバイト文字を含むビューのキャッシュを有効化することもできます。

    • バイナリ照合順序 。データベース管理システムでは、 照合順序 は、データベースが文字列を比較および並べ替える方法を指定します。照合順序の主な効果の 1 つは、ORDER BY で文字列型の列を指定しているクエリの結果の順序です。たとえば、照合によって、大文字と小文字を区別するかどうか、アクセントを区別するかどうか (例: 「A」と「Á」を同じものとして扱うか) などが決まります。

      バイナリ照合順序を使用すると、データは、文字列の各バイトの数値に従って並べられます。

    重要

    このカタログ/スキーマの照合順序がバイナリであることを、このデータベースの管理者に確認してください。

    Virtual DataPort の実行エンジンは、データがバイナリ照合順序のルールに従って並べ替えられることを想定しています。照合順序がバイナリではない場合、キャッシュデータベースから取得したデータと他のデータベースから取得したデータの JOIN 操作を実行するクエリは、間違った結果を返す可能性があります。

  2. サーバーレベルでキャッシュエンジンを有効にします (「 キャッシュの構成 」を参照)。または別の方法として、一部のデータベースに対してのみキャッシュモジュールを有効にすることもできます (「 データベースの構成および削除 」を参照)。

    サーバーがキャッシュを初期化する際、データベースに、キャッシュデータに関する情報を保存する一連のテーブルを作成します。サーバーは、データがキャッシュされるクエリごとに、 クエリパターン を保存します。クエリパターンはその後、キャッシュに保存されているデータでクエリを「解決」できるかどうかを確認するために使用されます。クエリパターンは、以下の情報で構成されます。

    • すべてのクエリパターンを一意に識別する ID。

    • 保存されているデータが属すビューの名前。

    • データソースからデータを取得するために使用したクエリの WHERE 句の条件。

    • クエリパターンが表すデータセットの有効期限。この有効期限に達すると、このクエリパターンに関連付けられているデータセットは無効とマークされ、使用できなくなります。サーバーは、一定間隔 (Maintenance Period) で無効とマークされているデータセットを削除します。これは部分キャッシュにのみ適用されることに注意してください。全体キャッシュの場合、有効期限は最新のキャッシュ日時を表します。

    • クエリパターンのステータス。取り得る値は、有効、処理中 (データをキャッシュに保存する処理の実行中)、または無効 (クエリパターンの有効期限に達している) のいずれかです。

  3. キャッシュを必要とするビューでキャッシュを有効にします (「 ビューのキャッシュの構成 」を参照)。

    ビューのキャッシュを有効にすると、そのビューのキャッシュデータを保存するテーブルがキャッシュのデータベースに作成されます。このテーブルのフィールドのデータ型は、Virtual DataPort のビューのフィールドのデータ型と等価です。

ユーザーが、キャッシュが有効なビューを使用するクエリを実行すると、サーバーでは、キャッシュからデータを取得できるかどうかを確認します。取得できない場合、データソースからデータを取得してキャッシュに保存し、保存したデータを表すクエリパターンを作成します。

実際のデータにアクセスする必要がある場合、特定のクエリでキャッシュを迂回することもできます。

必須フィールドを持つキャッシュ (必須入力パラメーターが存在する Web サービス基本ビューなど) に対してクエリを実行して、そのビューがキャッシュされている場合は、入力パラメーターの値を渡す必要はありません。ただし、データをデータソースから取得する必要がある場合は、入力パラメーターの値を渡す必要があります。

警告

パススルー資格情報が有効なデータソースを使用するビューに対してキャッシュを有効にする場合は注意が必要です。詳細については、「 データソースをパススルー資格情報を使用して構成する場合の検討事項 」を参照してください。

警告

キャッシュデータを保存するデータベースのテーブルは、過剰に断片化していないか監視して、必要に応じて定期的に圧縮しなければなりません。特に、行が無効になる頻度が非常に高いテーブルでは、この処理が必要です。

Denodo ストアドプロシージャ CACHE_CONTENT を実行すると、データベースのクエリパターンに関する情報を得られます。このプロシージャを呼び出す手順については、『VQL ガイド』の「 キャッシュのコンテンツの表示 」を参照してください。