ビューのキャッシュの構成

特定のビューでキャッシュを有効にする前に、Virtual DataPort サーバーのキャッシュモジュールを有効にする必要があります (「 キャッシュの構成 」を参照)。

ビューのキャッシュを有効にするには、ビューを開いて [Options] をクリックし、以下のキャッシュモードのいずれかを選択します。

  • Partial: ビューに対してクエリを実行する際、Virtual DataPort サーバーによって、クエリに応答するために必要なデータがキャッシュに存在するかどうかが確認されます。存在しない場合、データソースに対して直接クエリが実行されます。

  • Full: Virtual DataPort サーバーでは、ビューのすべてのタプルがキャッシュに存在すると見なされます。したがって、このビューに対するクエリでは、キャッシュされたデータが必ず使用され、データソースがアクセスされることはありません。キャッシュデータを更新する場合にのみ、データソースへのアクセスが発生します。キャッシュへのデータのロードは必ず明示的なので、キャッシュにロードするにはクエリを実行する必要があります。

  • Full incremental: このモードでは、このビューに対するクエリは「増分クエリ」になります。つまり、このビューに対するクエリでは、キャッシュから取得した結果とソースから取得した最新データがマージされます。このモードの主な利点は、前回のキャッシュ更新以降に追加された行と変更された行を取得するだけで、完全に最新の結果が必ず得られることです。データソースから結果セット全体を取得する必要はありません。

    このモードを使用できるようにするには、行が前回挿入または更新された日時を格納するフィールドがビューに必要です。たとえば、ビューに last_modified_date フィールドが存在する場合、 last_modified_date > '@LASTCACHEREFRESH' のような条件を入力します。

    このクエリを実行すると、キャッシュをロードするクエリが最後に実行されて正常に完了した日時のタイムスタンプで @LASTCACHEREFRESH 変数が置き換えられます。

    このモードは Full モードの変形なので、Partial モードとは異なり、ビューのキャッシュには明示的にロードする必要があります (つまり、キャッシュをロードする適切なパラメーターを指定したクエリを実行する必要があります)。

    警告

    増分モードには、考慮を必要とする要件と制限事項がいくつかあります。そのリストについては、「 増分モード 」を参照してください。

キャッシュモードの動作の詳細については、「 キャッシュモード 」を参照してください。


[Time to Live (seconds)] は、ビューのキャッシュに保存されているエントリの 有効時間 (秒単位) です。この時間が経過すると、エントリは期限切れになり、次のクエリでは、キャッシュからではなく、データソースからデータが取得されます。[Never expire] を選択すると、キャッシュに保存されているエントリは無効になりません。ただし、その場合でも [Invalidate cache] をクリックすることで、手動でキャッシュを無効にできます。

デフォルト の有効時間は、データベースの [Cache configuration] ダイアログ ([Administration] > [Database Management] ダイアログ) でデータベースに定義されている有効時間です。データベースに有効時間を設定してない場合、キャッシュモジュールではこのプロパティのグローバル値が使用されます。このグローバル値は [Server Configuration] ダイアログの [Cache] タブで定義します。


ソースから取得した行は、バッチ単位でキャッシュに挿入されます。[Batch insert size (rows)] には、バッチあたりの行数を指定します。 デフォルトt 値は、データベースの [Cache configuration] ダイアログ ([Administration] > [Database Management] ダイアログ) でデータベースに定義した [Batch size] の値です。データベースに [Batch size] を設定していない場合、キャッシュモジュールではこのプロパティのグローバル値が使用されます。このグローバル値は [Server Configuration] ダイアログの [Cache] タブで定義します。

Cache settings: invalidating the cache of a view

キャッシュ設定: ビューのキャッシュの無効化

ビューのキャッシュのエントリは、その有効時間が経過すると期限切れになります。ただし、手動でこれらのエントリを無効にすることができます。そのためには、[Invalidate cache] をクリックして、以下のオプションのいずれかを選択します。

  • Invalidate all: ビューのキャッシュの内容がすべて削除されます。

  • Invalidate partially: [Edit condition] ダイアログの条件に一致するエントリのみが削除されます。

  • Invalidate on cascade: 選択している場合は、このビューのサブビューのキャッシュもキャッシュモジュールによって無効化されます。[Full] キャッシュモードを指定したビューでは、このオプションは無効です。また、ビューをカスケード方式で無効にする場合、キャッシュモードが [Full] のサブビューのキャッシュは無効化されません。

複数のビューのキャッシュの内容を一度に無効にする手順の詳細については、「 キャッシュの無効化 」を参照してください。

キャッシュインデックス

ビューのキャッシュを有効にすると、そのビューのキャッシュデータを保存するテーブルがキャッシュのデータベースに作成されます。このビューに「キャッシュインデックス」を定義すると、ビューのキャッシュからデータを迅速に取得できるようになります。

キャッシュインデックスと [Indexes] タブで定義されているインデックスとの相違は、[Indexes] タブのインデックスは、ソースで定義されているインデックスを表しているという点にあります。このタブでキャッシュインデックスを定義していれば、キャッシュモジュールによって、実際にキャッシュのデータベースに「キャッシュインデックス」が作成されます。

ビューのキャッシュが有効で、そのキャッシュモードが [Full] であれば、ビューの派生ビューおよび ODBC クライアントと JDBC クライアントに伝播するインデックスは、[Indexes] タブで定義されているインデックスではなく、「キャッシュインデックス」です。このビューに対するクエリでは、ソースからではなく、必ずキャッシュからデータが取得されるからです。


キャッシュインデックスを作成するには、以下の手順に従います。

  1. ビューにインデックスが存在する場合 ([Indexes] タブを参照)、[Import indexes from view] をクリックすることによって、ビューのキャッシュ済みデータを保存するテーブルにインデックスを複製できます。

    [Ok] をクリックしてダイアログを閉じないかぎり、インデックスが作成されない点に注意してください。

  2. キャッシュテーブルに別のインデックスを定義するには、[Create index] をクリックして以下の手順に従います。

    1. インデックスの名前を入力します。

      注釈

      キャッシュを保存するデータベースによっては、インデックスの名前を、編集中のビューの範囲でのみ一意にするのではなく、Virtual DataPort データベース全体で一意にすることが必要な場合もあります。データベースの中には、別々のテーブルに定義したインデックスであっても、2 つのインデックスを同じ名前で定義できないものがあるからです。

    2. 一意なインデックスとする場合は [Is unique] をチェックします。

    3. ダイアログの左側には、ビューのフィールドのリストが表示されています。このインデックスに属するフィールドを選択して [Add >>] をクリックします。複数のフィールドを一度に選択するには、Ctrl キーまたは Shift キーを押したままで目的のフィールドをクリックします。

      インデックスでフィールドが占める順序を変更するには、そのフィールドの横にあるチェックボックスをチェックして image1 または image2 をクリックします。

      インデックスからフィールドを削除するには、右側のリストでそのフィールドの横にあるチェックボックスをチェックして [<< Remove] をクリックします。

    4. [Ok] をクリックするとインデックスが作成されます。

  3. キャッシュインデックスを編集するには、そのチェックボックスをチェックして [Edit selected index] をクリックします。

  4. キャッシュインデックスを削除するには、そのチェックボックスをチェックして [Remove selected index] をクリックします。

Cache settings: defining a new "cache index"

キャッシュ設定: 新しい「キャッシュインデックス」の定義