ADO.NET Provider for Blackbaud Raisers Edge NXT

Build 24.0.9062

明示的なデータのキャッシュ

明示的なキャッシュの場合は(AutoCache =false)、どのデータをキャッシュするかと、ライブデータではなくキャッシュをいつクエリするかを厳密に指定します。明示的なキャッシュでは、CACHE ステートメントを使用して、キャッシュの内容を完全に制御できます。このセクションでは、本製品 が提供するキャッシュ機能の活用方法をいくつか説明します。

キャッシュの作成

キャッシュにデータをロードするには、次のステートメントを発行します。

CACHE SELECT * FROM tableName WHERE ...

ステートメントが発行されると、tableName 内の一致するデータが対応するテーブルにロードされます。

キャッシュの更新

このセクションでは、キャッシュを更新する2つの方法について説明します。

SELECT ステートメントを使った更新

次の例は、キャッシュテーブル内で変更された行を更新し、不足している行を追加するステートメントを示します。ただし、このステートメントはキャッシュ内にすでに含まれている余分な行は削除しません。このステートメントは、新しい行をマージするか、または既存の行を更新するだけです。

C#

RaiserEdgeNXTCommand cmd = new RaiserEdgeNXTCommand("CACHE SELECT * FROM Constituents WHERE Type = 'Home'", connection);
cmd.ExecuteNonQuery();
connection.Close();

VB.NET

Dim cmd As RaiserEdgeNXTCommand = New RaiserEdgeNXTCommand("CACHE SELECT * FROM Constituents WHERE Type = 'Home'", connection)
cmd.ExecuteNonQuery()
connection.Close()

TRUNCATE ステートメントを使った更新

次の例は、キャッシュテーブル内で変更された行を更新し、不足している行を追加するステートメントを示します。このステートメントは、ライブデータソースに存在しないキャッシュテーブル内の行も削除できます。

C#

RaiserEdgeNXTCommand cmd = new RaiserEdgeNXTCommand("CACHE WITH TRUNCATE SELECT * FROM Constituents WHERE Type = 'Home'", connection);
cmd.ExecuteNonQuery();
connection.Close();

VB.NET

Dim RaiserEdgeNXTCommand As cmd = New RaiserEdgeNXTCommand("CACHE WITH TRUNCATE SELECT * FROM Constituents WHERE Type = 'Home'", connection)
cmd.ExecuteNonQuery()
connection.Close()

オンラインまたはオフラインモードでデータをクエリ

このセクションでは、オンラインまたはオフラインモードでデータをクエリする方法について説明します。

Online:キャッシュテーブルの選択

次の例に示すように、tableName#CACHE 構文を使用して、オンラインのままキャッシュに対して明示的にクエリを実行することができます。

SELECT * FROM Constituents#CACHE

Offline:キャッシュテーブルの選択

Offline がtrue に設定されている場合、実行するすべてのSELECT ステートメントは、キャッシュテーブルを明示的に指定するかどうかに関係なく、常にローカルキャッシュデータベースに対して実行されます。キャッシュデータだけが誤って更新されることがないように、Offline モードではキャッシュの変更は無効化されます。Offline が設定されている場合にDELETE/UPDATE/INSERT ステートメントを実行すると、例外が発生します。

次の例は、Offline がtrue に設定されているため、ライブデータソースからではなく、ローカルキャッシュに対してSELECT を実行します。

C#

using (RaiserEdgeNXTConnection connection = new RaiserEdgeNXTConnection("InitiateOAuth=GETANDREFRESH;SubscriptionKey=MySubscriptionKey;OAuthClientId=MyOAuthClientId;OAuthClientSecret=MyOAuthClientSecret;CallbackURL=http://localhost:33333;Offline=true;Cache Location=C:\\cache.db;") {
  String query = "SELECT * FROM Constituents WHERE Type='Home' ORDER BY AddressLines ASC";
  RaiserEdgeNXTCommand cmd = new RaiserEdgeNXTCommand(query, connection);
  cmd.ExecuteReader();
}

VB.NET

Using conn As New RaiserEdgeNXTConnection("InitiateOAuth=GETANDREFRESH;SubscriptionKey=MySubscriptionKey;OAuthClientId=MyOAuthClientId;OAuthClientSecret=MyOAuthClientSecret;CallbackURL=http://localhost:33333;Offline=true;Cache Location=C:\\cache.db;")
  Dim query As String = "SELECT * FROM Constituents WHERE Type='Home' ORDER BY AddressLines ASC"
  Dim cmd As RaiserEdgeNXTCommand = New RaiserEdgeNXTCommand(query, connection)
  cmd.ExecuteReader()
End Using

キャッシュからのデータの削除

データベースへの直接接続を構築することによって、キャッシュからデータを削除できます。本製品 はキャッシュからデータを手動で削除することをサポートしていないことに注意してください。

一般的なユースケース

一般的なキャッシュの用途は、アプリケーションからのクエリは常にキャッシュデータに対して実行し、キャッシュの更新は設定された間隔(1日1回、2時間ごとなど)でのみ実行するというものです。この実装には2つの方法があります。

  • AutoCache = false とOffline = false。アプリケーションによって発行されるすべてのクエリは、明示的にtableName#CACHE テーブルを参照します。キャッシュを更新する必要がある場合、アプリケーションはtableName#CACHE ... ステートメントを実行して、キャッシュデータを最新の状態に保ちます。
  • Offline = true。キャッシュは、アプリケーションでは透過的に処理されます。すべてのクエリは常にテーブルに対して実行されるため、ほとんどのアプリケーションコードは、キャッシュの実行を認識する必要はありません。キャッシュデータを更新するには、Offline = false で個別の接続を作成し、tableName#CACHE ... ステートメントを実行するだけです。

Copyright (c) 2024 CData Software, Inc. - All rights reserved.
Build 24.0.9062