ADO.NET Provider for Apache Hive

Build 22.0.8479

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

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

キャッシュの作成

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

CACHE SELECT * FROM tableName WHERE ...

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

キャッシュの更新

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

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

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

C#

ApacheHiveCommand cmd = new ApacheHiveCommand("CACHE SELECT * FROM [CData].[Default].Customers WHERE Country = 'US'", connection);
cmd.ExecuteNonQuery();
connection.Close();

VB.NET

Dim cmd As ApacheHiveCommand = New ApacheHiveCommand("CACHE SELECT * FROM [CData].[Default].Customers WHERE Country = 'US'", connection)
cmd.ExecuteNonQuery()
connection.Close()

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

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

C#

ApacheHiveCommand cmd = new ApacheHiveCommand("CACHE WITH TRUNCATE SELECT * FROM [CData].[Default].Customers WHERE Country = 'US'", connection);
cmd.ExecuteNonQuery();
connection.Close();

VB.NET

Dim ApacheHiveCommand As cmd = New ApacheHiveCommand("CACHE WITH TRUNCATE SELECT * FROM [CData].[Default].Customers WHERE Country = 'US'", connection)
cmd.ExecuteNonQuery()
connection.Close()

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

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

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

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

SELECT * FROM [CData].[Default].Customers#CACHE

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

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

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

C#

using (ApacheHiveConnection connection = new ApacheHiveConnection("Server=127.0.0.1;Port=10000;TransportMode=BINARYOffline=true;Cache Location=C:\\cache.db;") {
  String query = "SELECT * FROM [CData].[Default].Customers WHERE Country='US' ORDER BY CompanyName ASC";
  ApacheHiveCommand cmd = new ApacheHiveCommand(query, connection);
  cmd.ExecuteReader();
}

VB.NET

Using conn As New ApacheHiveConnection("Server=127.0.0.1;Port=10000;TransportMode=BINARYOffline=true;Cache Location=C:\\cache.db;")
  Dim query As String = "SELECT * FROM [CData].[Default].Customers WHERE Country='US' ORDER BY CompanyName ASC"
  Dim cmd As ApacheHiveCommand = New ApacheHiveCommand(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) 2023 CData Software, Inc. - All rights reserved.
Build 22.0.8479