第2章 仮想データベース
仮想データベース(VDB)は、複数のデータソースからデータを統合するために使用されるコンポーネントのメタデータコンテナーであり、単一の統一された API を介して統合方法でアクセスできるようにします。
仮想データベースには、通常複数のスキーマコンポーネント(モデルとも呼ばれます)が含まれ、各スキーマにはメタデータ(テーブル、手順、関数)が含まれます。スキーマには、以下の 2 つのタイプがあります。
- 外部スキーマ
- 外部スキーマは ソース または 物理 スキーマとも呼ばれ、外部スキーマは Oracle、Db2、MySQL などのリレーショナルデータベース、CSV、Microsoft Excel、または SOAP や REST などの Web サービスなどの外部データソースまたはリモートデータソースを表します。
- 仮想スキーマ
- 外部スキーマのスキーマオブジェクトを使用して定義されるビュー層または論理 スキーマレイヤー。たとえば、複数のソースから複数の外部テーブルを集約するビューテーブルを作成すると、生成されるビューは、ビューを定義するデータソースの複雑度からユーザーになります。
留意すべき重要な点の 1 つは、仮想データベースにはメタデータだけが含まれていることです。Data Virtualization に関連するユースケースには、開始する仮想データベースモデルが必要です。そのため、VDB を設計および開発する方法を理解することが重要です。
以下の仮想データベースモデルの例は、PostgreSQL データベースへの接続を行う単一の外部スキーマコンポーネントを定義します。
この例の SQL DDL コマンドは、SQL/MED 仕様を実装します。
以下のセクションでは、前述の例のステートメントを使用して仮想データベースを定義する方法を説明します。前は、ソーススキーマ コンポーネントのさまざまな要素について学ぶ必要があります。
外部データソース
仮想データベースの「ソーススキーマ」コンポーネントは、外部データソースのメタデータをローカルで表現するスキーマオブジェクト、テーブル、手順、および関数のコレクションです。この例では、スキーマオブジェクトは直接定義されていませんが、サーバーからインポートされます。外部データソースへの接続の詳細は、resource-name
を介して提供されます。これは、外部データソースへの名前付きの接続参照です。
Data Virtualization の目的で、クエリーを接続および実行してこれらの外部データソースからメタデータを取得するため、Data Virtualization は 2 種類のリソースを定義/提供します。
トランスレーター
DATA WRAPPER
とも呼ばれるトランスレーターは、Data Virtualization クエリーエンジンと物理データソース間の抽象化レイヤーを提供するコンポーネントです。トランスレーターは、クエリーコマンドを Data Virtualization からソース固有のコマンドに変換し、実行する方法を認識します。トランスレーターには、物理ソースが返すデータを Data Virtualization クエリーエンジンが処理できる形式に変換する情報もあります。たとえば、Web サービストランスレーターを使用すると、トランスレーターは Data Virtualization レイヤーからの SQL 手順を HTTP 呼び出しに変換し、JSON 応答は表形式で変換されます。
Data Virtualization は、システムの一部としてさまざまなトランスレーターを提供するか、提供された java ライブラリーを使用して開発することもできます。利用可能な翻訳者の詳細は、「 翻訳者」を参照して ください。
2.1. 仮想データベースのプロパティー リンクのコピーリンクがクリップボードにコピーされました!
DATABASE プロパティー
- domain-ddl
- schema-ddl
-
query-timeout は、この VDB に対して実行されるクエリーのデフォルトクエリーのタイムアウトをミリ秒単位で設定します。
0
は、サーバーのデフォルトクエリータイムアウトを使用する必要があることを示します。デフォルトは 0 です。サーバーのデフォルトクエリータイムアウトが小さい値に設定されている場合は有効ではありません。クライアントは引き続き、クライアント側で管理する独自のタイムアウトを設定できます。 - connection.XXX: デフォルトの connection/execution プロパティーを設定するために ODBC トランスポートおよび OData で使用する場合。関連するプロパティーの詳細は、『 クライアント開発者ガイド』の「 ドライバー接続 」を参照し てください。これらは、確立後に接続に設定されることに注意してください。
CREATE DATABASE vdb OPTIONS ("connection.partialResultsMode" true);
CREATE DATABASE vdb OPTIONS ("connection.partialResultsMode" true);
- authentication-type
設定されたセキュリティードメインの認証タイプ。現在使用できる値は(GSS、USERPASSWORD)です。デフォルトではトランスポート(通常は USERPASSWORD)に設定されます。
- password-pattern
USERPASSWORD 認証が使用されるかどうかを判断する接続ユーザー名と照合される正規表現。password-pattern は authentication-type よりも優先されます。デフォルトは authentication-type です。
- gss-pattern
GSS 認証が使用されているかどうかを決定する接続ユーザー名と照合される正規表現。GSS-pattern は password-pattern よりも優先されます。デフォルトは password-pattern です。
- max-sessions-per-user (11.2+)
この VDB のユーザー名で識別される各ユーザーに許可される最大セッション数。何も設定されず、負の値の場合には、ユーザーの最大値が表示されますが、セッションサービスの最大値は引き続き適用されます。これはクラスター内の各 Data Virtualization サーバーメンバーに対して実施され、クラスター全体のデータ仮想化サーバーメンバーには適用されません。既存のセッション下のタスク用に作成される派生セッションは、この最大値に対してカウントされません。
- model.visible
インポートされた vdb モデルの可視性を上書きするのに使用します。
- include-pg-metadata
デフォルトでは、org.teiid.addPGMetadata プロパティーを false に設定していない限り、PostgreSQL メタデータは常に VDB に追加されます。このプロパティーにより、VDB ごとに PG メタデータを追加できます。詳細は、『 管理者ガイド』の「 システムプロパティー 」を参照してください。ODBC を使用して VDB にアクセスする場合には、VDB には PG メタデータが含まれている必要があります。
- lazy-invalidate
デフォルトでは、TTL の有効期限が無効になります。詳細は、『 キャッシュガイド』 の「 内部ドラフト 」を参照してください。lazy-invalidate を true
に設定すると、TTL の更新は非検証になります。
- deployment-name
実質的に予約されています。サーバーによるデプロイ時、サーバーデプロイメントの名前に設定されます。
スキーマおよびモデルのプロパティー
- visible
値が true
の場合にスキーマに表示済みとしてマークします(デフォルト設定)。表示される
フラグが false
に設定されている場合、スキーマのメタデータはメタデータ要求から非表示になります。プロパティーを false
に設定しても、このスキーマに対してクエリーを発行することは禁止されません。データへのアクセスを制御する方法は、「データ ロール」を参照し てください。
- multisource
スキーマをマルチソースモードに設定し、データを複数の異なるソースのパーティションに存在するように設定します。スキーマのメタデータがすべてのデータソースで同じであることを前提とします。
- multisource.columnName
マルチソーススキーマでは、パーティションを指定する追加の列が暗黙的にすべてのテーブルに追加され、ソースを特定します。このプロパティーは列の名前を定義します。型は常に String
になります。
- multisource.addColumn
このフラグは、このスキーマのすべてのテーブルに暗黙的なパーティション列を追加するように指定します。true 値により列が追加されます。デフォルトは false です。
- allowed-languages
VDB の任意の目的に使用できるプログラミング言語のコンマ区切りリストを指定します。名前は大文字と小文字を区別し、リストにはエントリー間の空白を含めることはできません。例: & lt;property name="allowed-languages" value="javascript"/>
-
allow- languages は、ロールに
allowed-languages
プロパティーに記載されている言語を使用するパーミッションがあることを指定します。たとえば、以下の抜粋のallow-language
プロパティーは、RoleA
ロールを持つユーザーに Javascript を使用するパーミッションがあることを指定します。