キャッシュモジュール¶
Virtual DataPort には、データソースから取得したデータを外部のリレーショナルデータベースに保存できる「キャッシュエンジン」が搭載されています。データをキャッシュするビューに対してキャッシュエンジンを有効にします (デフォルトではデータはキャッシュされません)。
特に、複雑な計算を伴うクエリや、数百万行を集約するクエリ、低速のデータソースを扱う場合は、ビューのデータをキャッシュすることで、データソースに繰り返しあたるクエリの影響を減らし、データ検索の速度を上げることができます。
この目的で使用できるデータベースのリストを以下に示します。
データベース |
Denodo Platform におけるドライバーの提供 |
---|---|
AlloyDB for PostgreSQL |
同梱 |
Amazon Athena |
ドライバーが同梱 |
Amazon Aurora MySQL |
ドライバーが同梱 |
Amazon Aurora PostgreSQL |
ドライバーが同梱 |
Amazon Redshift |
ドライバーが同梱 |
Azure SQL Database |
ドライバーが同梱 |
Azure Synapse SQL (旧称 Azure SQL Data Warehouse) |
○ (Microsoft SQL Server ドライバー) |
Google BigQuery |
ドライバーが同梱されない |
Databricks |
ドライバーが同梱 |
Exasol |
ドライバーが同梱 |
Hive 2.0.0 (HiveServer2) (*) |
ドライバーが同梱されない |
Hive 3.1.2 以降 (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 |
ドライバーが同梱されない |
Impala 3.x Kudu |
ドライバーが同梱されない |
Microsoft SQL Server 2000、2005、2008、2008 R2 (*) |
以下の 2 つのドライバーを使用でき、どちらも提供されています。
|
Microsoft SQL Server 2012、2014、および 2016 |
|
Microsoft SQL Server 2017、2019 以降 |
○ (Microsoft ドライバーのみ) |
MySQL 4、5、8 以降、および GCP Cloud SQL for MySQL |
ドライバーが同梱されない |
Netezza 6.0、7.0 以降 |
ドライバーが同梱されない |
Oracle 8i、9i、10g、11g、12c、12c In-Memory、18c、および 19c 以降 |
ドライバーが同梱 |
Oracle TimesTen 11g |
ドライバーが同梱されない |
PostgreSQL 9、10、11、12 以降、および GCP Cloud SQL for PostgreSQL |
ドライバーが同梱 |
PrestoDB 0.1x |
ドライバーが同梱 |
Trino 4xx |
ドライバーが同梱 |
SAP HANA 1.0 および 2.0 |
ドライバーが同梱されない |
Snowflake |
ドライバーが同梱 |
Spark SQL 2.x、3.x 以降 |
ドライバーが同梱されない |
Teradata 12、13、14、15、16、および 17 |
ドライバーが同梱されない |
Vertica 7 および 9 |
ドライバーが同梱されない |
Yellowbrick |
ドライバーが同梱 |
(*): アダプターは非推奨であり、Denodo Platform の今後のメジャーバージョンで削除される可能性があります。非推奨のすべての機能のリストは、「 Denodo Platform 8.0 で非推奨となった機能 」を参照してください。
以下の点に留意してください。
データベースベンダーによっては、他のソフトウェア会社が自社のドライバーを配布することを禁止しています (上の表で、 Denodo Platform にドライバーが同梱 = ドライバーが同梱されない の列のデータベースを参照してください)。
これらのデータベースに接続するには、他のサードパーティー会社のドライバーではなく、そのデータベースの正規のドライバーをダウンロードしてください。以下の点に留意してください。
各アダプターのテストは、正規のドライバーを使用して行っています。
実際にサポートされるのは正規のドライバーのみです。他社製ドライバーを使用して問題がある場合は、Denodo サポートチームで対応しますが、解決策を提供できない場合があります。
ドライバーをインポートするには、メニュー [File] > [Extension management] のウィザードを使用します。この方法については、「 JDBC ドライバーのインポート 」のページを参照してください。
Denodo Platform にはデータベースのドライバーが同梱されているため、開発者はデータソースへの接続を簡単に作成できます。定期的にドライバーをアップグレードし、バグ修正や機能強化を行っています。ただし、他社製ドライバーのバグは修正できません (Denodo 開発ドライバーのみ)。これらのドライバーのバグが原因で問題が生じた場合、可能な限り対応策を提供するように努めますが、最終的にはデータベースベンダーで自社ドライバーのバグを修正することになります。
上記のアダプターに加えて、キャッシュエンジンでは、他の任意の JDBC データベースと一緒に使用してキャッシュデータを保存できる汎用アダプターを提供しています。その構成手順については、「 他のデータベースの汎用サポート 」を参照してください。ただし、上記のリストに含まれるデータベースのいずれかを使用することが強く推奨されます。なぜなら、Virtual DataPort では、汎用アダプターを使用する場合と比較して、より多くの操作をサポートしているデータベースにプッシュダウンするので、キャッシュデータベースに対してクエリを実行するときのパフォーマンスが優れているからです。
キャッシュエンジンを初めて有効にする場合、キャッシュデータを保存するデフォルトデータベースは、Denodo に組み込まれている Apache Derby データベースです。
重要
この Apache Derby 組み込みデータベースを使用することは推奨されません。このデータベースは、キャッシュエンジンと小規模なプロジェクトの実行という事例を見せるために提供されています。代わりに、特に本番環境では、外部データベースを使用してください。
キャッシュエンジンを有効にするには、以下の手順に従って実施してください。
データベースに Denodo のキャッシュエンジン専用のカタログまたはスキーマを作成します。
これは必須ではありませんが、強く推奨されます。なぜなら、キャッシュエンジンは、多数のテーブル (キャッシュが有効な Denodo の各ビューに 1 つずつ) を作成するからです。したがって、これらのテーブルを同じデータベースの他のエレメントから分離することは有益です。
データベース管理者がキャッシュに割り当てる容量を把握するには、ナレッジベースの記事「 Cache database size estimate 」を参照してください。
この新しいカタログまたはスキーマは、以下のオプションを使用して作成する必要があります。
マルチバイト文字のサポート (例: UTF-8)。これにより、マルチバイト文字 (例: 日本語の文字) を含むデータを保存できるようになります。また、名前やフィールドにマルチバイト文字を含むビューのキャッシュを有効化することもできます。
バイナリ照合順序 。データベース管理システムでは、 照合順序 は、データベースが文字列を比較および並べ替える方法を指定します。照合順序の主な効果の 1 つは、ORDER BY で文字列型の列を指定しているクエリの結果の順序です。たとえば、照合によって、大文字と小文字を区別するかどうか、アクセントを区別するかどうか (例: 「A」と「Á」を同じものとして扱うか) などが決まります。
バイナリ照合順序を使用すると、データは、文字列の各バイトの数値に従って並べられます。
重要
このカタログ/スキーマの照合順序がバイナリであることを、このデータベースの管理者に確認してください。
Virtual DataPort の実行エンジンは、データがバイナリ照合順序のルールに従って並べ替えられることを想定しています。照合順序がバイナリではない場合、キャッシュデータベースから取得したデータと他のデータベースから取得したデータの JOIN 操作を実行するクエリは、間違った結果を返す可能性があります。
サーバーレベルでキャッシュエンジンを有効にします (「 キャッシュの構成 」を参照)。または別の方法として、一部のデータベースに対してのみキャッシュモジュールを有効にすることもできます (「 データベースの構成および削除 」を参照)。
サーバーがキャッシュを初期化する際、データベースに、キャッシュデータに関する情報を保存する一連のテーブルを作成します。サーバーは、データがキャッシュされるクエリごとに、 クエリパターン を保存します。クエリパターンはその後、キャッシュに保存されているデータでクエリを「解決」できるかどうかを確認するために使用されます。クエリパターンは、以下の情報で構成されます。
すべてのクエリパターンを一意に識別する ID。
保存されているデータが属すビューの名前。
データソースからデータを取得するために使用したクエリの WHERE 句の条件。
クエリパターンが表すデータセットの有効期限。この有効期限に達すると、このクエリパターンに関連付けられているデータセットは無効とマークされ、使用できなくなります。サーバーは、一定間隔 (Maintenance Period) で無効とマークされているデータセットを削除します。これは部分キャッシュにのみ適用されることに注意してください。全体キャッシュの場合、有効期限は最新のキャッシュ日時を表します。
クエリパターンのステータス。取り得る値は、有効、処理中 (データをキャッシュに保存する処理の実行中)、または無効 (クエリパターンの有効期限に達している) のいずれかです。
キャッシュを必要とするビューでキャッシュを有効にします (「 ビューのキャッシュの構成 」を参照)。
ビューのキャッシュを有効にすると、そのビューのキャッシュデータを保存するテーブルがキャッシュのデータベースに作成されます。このテーブルのフィールドのデータ型は、Virtual DataPort のビューのフィールドのデータ型と等価です。
ユーザーが、キャッシュが有効なビューを使用するクエリを実行すると、サーバーでは、キャッシュからデータを取得できるかどうかを確認します。取得できない場合、データソースからデータを取得してキャッシュに保存し、保存したデータを表すクエリパターンを作成します。
実際のデータにアクセスする必要がある場合、特定のクエリでキャッシュを迂回することもできます。
必須フィールドを持つビュー (必須入力パラメータが存在する Web サービス基本ビューなど) に対してクエリを実行する場合に、そのビューがキャッシュされていれば、入力パラメータの値を渡す必要はありません。ただし、データソースからのデータ取得が必要な場合は、入力パラメータの値を渡す必要があります。
警告
パススルー資格情報が有効なデータソースを使用するビューに対してキャッシュを有効にする場合は注意が必要です。詳細については、「 データソースをパススルー資格情報を使用して構成する場合の検討事項 」を参照してください。
警告
キャッシュデータを保存するデータベースのテーブルは、過剰に断片化していないか監視して、必要に応じて定期的に圧縮しなければなりません。特に、行が無効になる頻度が非常に高いテーブルでは、この処理が必要です。
Denodo ストアドプロシージャ CACHE_CONTENT
を実行すると、データベースのクエリパターンに関する情報を得られます。このプロシージャを呼び出す手順については、『VQL ガイド』の「 キャッシュのコンテンツの表示 」を参照してください。
Denodo では、キャッシュテーブルの作成に組み込みの SQL ステートメントを使用します。これでほとんどのシナリオに対応できますが、Denodo ではキャッシュテーブルの作成に使用するコマンドをカスタマイズできます。詳細については、「 キャッシュテーブル作成テンプレート 」のセクションを参照してください。