インターフェイスビューの作成¶
インターフェイスビューは、フィールドの定義と別のビューへの参照のみで構成する特殊なタイプのビューです。インターフェイスビューは、ビューのコンシューマーをビューの実装から分離します。主なユースケースとして、以下の 2 つがあります。
コントラクトベースの開発:
クライアントアプリケーションと Denodo のプロジェクトマネージャーが、ビューのスキーマについて合意します。
その後、Denodo でビューを開発するチームが、このインターフェイスビューの実装ビューを構築します。
データモデルの抽象化:
基盤となるデータストアをクラウドに移行するプロジェクトで、ビューのスキーマが変更されないようにする必要がある場合に効果的です。
インターフェイスを使用するクエリを Virtual DataPort サーバーで実行すると、そのクエリは実装ビューに委任されます。したがって、インターフェイスビューに対して実行できる操作 (SELECT
、 INSERT
、 UPDATE
、または DELETE
) は、その実装ビューに対して実行できる操作と同一になります。
インターフェイスビューのステータスとして以下があります。
Ok: インターフェイスビューのすべてのフィールドに有効な「実装式」が設定された状態。このビューを指定したクエリは正常に動作します。
Without implementation: 実装ビューを伴わずにインターフェイスが作成されている状態、または実装ビューが削除された状態。このビューを指定したクエリは失敗します。
Invalid: インターフェイスに実装ビューが存在するものの、インターフェイスのフィールドの中に実装式を持たないものが存在する状態、または無効な実装式が設定されている状態。実装ビューが存在するインターフェイスを作成した後で実装を変更し、実装式が有効ではなくなると、このステータスになることが考えられます。このビューを指定したクエリは失敗します。
インターフェイスビューのフィールド (例: [Type]、[Type size] など) の「ソース型プロパティ」について、以下の点を考慮します。
インターフェイスビューのフィールドでは、独自の「ソース型プロパティ」を定義する場合としない場合があります。
インターフェイスビューでフィールドに独自のプロパティがない場合、Virtual DataPort ではこれらのプロパティを実装ビューからインターフェイスビューに伝播します。そのため、実装ビューが変更されると、インターフェイスビューのフィールドのプロパティも変更されます。
インターフェイスビューのフィールドで独自のプロパティ値を定義する場合、実装ビューが変更されても、プロパティ値は更新されません。
たとえば、ソース型が明示されていない「text」型の「f_1」というフィールドのインターフェイスビュー「I_1」があるとします。その実装ビューでは、ソース型「f_1」は長さ 15 の「VARCHAR」になります。「I_1」にクエリを実行すると、Denodo JDBC ドライバーで報告される「f_1」の型は「VARCHAR(15)」になります。
実装ビューを編集して、ソース型を「NVARCHAR」に変更すると、ドライバーでは「NVARCHAR」型を報告します。ただし、実装ビューを「VARCHAR」のままにして、インターフェイスの列を「NVARCHAR」に編集すると、ドライバーでは「NVARCHAR」と報告し、今後実装ビューでプロパティを変更してもインターフェイスに反映されません。
以上のことから、実装値を常に伝播させる場合は、インターフェイスビューではなく、実装ビューの [Edit view] ダイアログでフィールドの「ソース型プロパティ」を変更します。
これらのプロパティの詳細と役立つ理由については、「 基本ビューのスキーマの表示 」のセクションを参照してください。
ビューをテンプレートとして使用してインターフェイスを構築する場合、ビューを [Definition] タブにドロップすると、ドロップしたビューのフィールドのプロパティがすべてインターフェイスにコピーされます。つまり、プロパティはインターフェイスレベルで明示的に設定されます。
インターフェイスの実装によって使用されるビューか、インターフェイスの実装として直接使用されるビューを削除する際には、インターフェイスが [Without implementation] 状態に変化することを Administration Tool が警告します。
インターフェイスビューを作成するには、[File] > [New] メニューで [Interface] をクリックするか、[Server Explorer] で右クリックして [New] メニューで [Interface] をクリックします。選択したビューの各フィールドの値が、インターフェイスの定義に入力されます。
Interface View ウィザードには以下の 3 つのタブがあります。
Definition: 次のようにビューの各定義を構成できます。
インターフェイスビューの名前を変更する。
インターフェイスのフィールドの名前と型を管理する。
既存のビューのスキーマに基づいてインターフェイスを定義する場合は、そのビューをこのタブにドラッグします。既存のスキーマが、ドラッグしたビューのスキーマに置き換えられます。
新しいフィールドをインターフェイスに追加するには [New field] をクリックします。
フィールド名の隣にあるボックスで、フィールドの型を選択できます。デフォルトでは、このボックスには基本的なデータ型 (
int
、float
、text
など) のみが用意されています。複合フィールドを選択する場合は、[Enable compound types] チェックボックスをチェックします。インターフェイスからフィールドを削除するには、そのチェックボックスをチェックして [Remove selected] をクリックします。
誤って削除したフィールドを復元する場合は [Restore fields] をクリックします。[Restore Fields] ダイアログが開くので、ここでインターフェイスビューに再度追加するフィールドを選択する必要があります。
Implementation: インターフェイスビューのフィールドから実装ビューのフィールドへのマッピングを定義します。
まず、[Server Explorer] から実装ビューをドラッグして追加する必要があります。この実装ビューは、インターフェイスビューとは異なるデータベースに属していてもかまいません。
ビューを追加すると、同じ名前のフィールドは自動的にリンクされます。それ以外のフィールドは、定義にあるフィールドを実装ビュー側のリンク先フィールドにドラッグすることによってリンクできます。または、その下の [Implementation Expression] 列にフィールド名または実装式を入力してリンクを定義することもできます。
図 Creating a new interface view: “Implementation” tab から以下のことがわかります。
実装 (ttime と taxid) または複雑な式 (summary) にフィールドをマッピングできます。
実装式は、定義の型と同じ型とするか、それと互換性がある型とする必要があります。たとえば、インターフェイスに
double
型のF_1
フィールドがある場合、実装式はdouble
型、またはそれと互換性があるint
型、long
型、float
型とする必要があります。フィールドが int 型である場合、実行時にそのフィールドの値はインターフェイスの型であるdouble
に変換されます。インターフェイスビューのフィールドのうち、複雑な式にマッピングされたフィールドは更新できません。つまり、それらのフィールドを指定した
INSERT
、UPDATE
、DELETE
の各操作は失敗します。実装ビューには、定義より多いフィールドを設定できます。余分なフィールドは無視されるにすぎません。図 Creating a new interface view: “Implementation” tab では、実装ビューの inc_type フィールドが、定義のどのフィールドにもマッピングされていません。
インターフェイスビューにエラーがある場合、このタブには アイコンおよびエラーについて説明するヒントが表示されます。エラーの原因として以下が考えられます。
インターフェイスビューに実装ビューが存在しない。
定義のフィールドの中に、「実装式」が存在しないものがある。
Metadata: インターフェイスの格納先フォルダと説明を定義できます。