USER MANUALS

インターフェイスビューの作成

インターフェイスビューは、フィールドの定義と別のビューへの参照のみで構成する特殊なタイプのビューです。インターフェイスビューは、ビューのコンシューマーをビューの実装から分離します。主なユースケースとして、以下の 2 つがあります。

  • コントラクトベースの開発:

    • クライアントアプリケーションと Denodo のプロジェクトマネージャーが、ビューのスキーマについて合意します。

    • その後、Denodo でビューを開発するチームが、このインターフェイスビューの実装ビューを構築します。

  • データモデルの抽象化:

    • 基盤となるデータストアをクラウドに移行するプロジェクトで、ビューのスキーマが変更されないようにする必要がある場合に効果的です。

インターフェイスを使用するクエリを Virtual DataPort サーバーで実行すると、そのクエリは実装ビューに委任されます。したがって、インターフェイスビューに対して実行できる操作 (SELECTINSERTUPDATE 、または 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] をクリックします。選択したビューの各フィールドの値が、インターフェイスの定義に入力されます。

Creating a new interface view: “Definition” tab

新しいインターフェイスビューの作成: [Definition] タブ

Interface View ウィザードには以下の 3 つのタブがあります。

  1. Definition: 次のようにビューの各定義を構成できます。

    1. インターフェイスビューの名前を変更する。

    2. インターフェイスのフィールドの名前と型を管理する。

      1. 既存のビューのスキーマに基づいてインターフェイスを定義する場合は、そのビューをこのタブにドラッグします。既存のスキーマが、ドラッグしたビューのスキーマに置き換えられます。

      2. 新しいフィールドをインターフェイスに追加するには [New field] をクリックします。

        フィールド名の隣にあるボックスで、フィールドの型を選択できます。デフォルトでは、このボックスには基本的なデータ型 (intfloattext など) のみが用意されています。複合フィールドを選択する場合は、[Enable compound types] チェックボックスをチェックします。

      3. インターフェイスからフィールドを削除するには、そのチェックボックスをチェックして [Remove selected] をクリックします。

      4. 誤って削除したフィールドを復元する場合は [Restore fields] をクリックします。[Restore Fields] ダイアログが開くので、ここでインターフェイスビューに再度追加するフィールドを選択する必要があります。

Creating a new interface view: “Implementation” tab

新しいインターフェイスビューの作成: [Implementation] タブ

  1. Implementation: インターフェイスビューのフィールドから実装ビューのフィールドへのマッピングを定義します。

    まず、[Server Explorer] から実装ビューをドラッグして追加する必要があります。この実装ビューは、インターフェイスビューとは異なるデータベースに属していてもかまいません。

    ビューを追加すると、同じ名前のフィールドは自動的にリンクされます。それ以外のフィールドは、定義にあるフィールドを実装ビュー側のリンク先フィールドにドラッグすることによってリンクできます。または、その下の [Implementation Expression] 列にフィールド名または実装式を入力してリンクを定義することもできます。

    Creating a new interface view: “Implementation” tab から以下のことがわかります。

    • 実装 (ttime と taxid) または複雑な式 (summary) にフィールドをマッピングできます。

      実装式は、定義の型と同じ型とするか、それと互換性がある型とする必要があります。たとえば、インターフェイスに double 型の F_1 フィールドがある場合、実装式は double 型、またはそれと互換性がある int 型、 long 型、 float 型とする必要があります。フィールドが int 型である場合、実行時にそのフィールドの値はインターフェイスの型である double に変換されます。

    • インターフェイスビューのフィールドのうち、複雑な式にマッピングされたフィールドは更新できません。つまり、それらのフィールドを指定した INSERTUPDATEDELETE の各操作は失敗します。

    • 実装ビューには、定義より多いフィールドを設定できます。余分なフィールドは無視されるにすぎません。図 Creating a new interface view: “Implementation” tab では、実装ビューの inc_type フィールドが、定義のどのフィールドにもマッピングされていません。

    インターフェイスビューにエラーがある場合、このタブには image2 アイコンおよびエラーについて説明するヒントが表示されます。エラーの原因として以下が考えられます。

    1. インターフェイスビューに実装ビューが存在しない。

    2. 定義のフィールドの中に、「実装式」が存在しないものがある。

  2. Metadata: インターフェイスの格納先フォルダと説明を定義できます。

Add feedback