ヘッダーをスキップ
Oracle® Coherenceクライアント・ガイド
リリース3.7.1
B65027-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

8 Coherence for C++ APIについて

Coherence for C++ APIを使用すると、データ、データ・イベント、データ処理などのCoherenceクラスタ・サービスに、Coherenceクラスタ外部からC++アプリケーションを使用してアクセスできます。

Coherence for C++ APIのドキュメントは2つの場所にあります。1つはOracle Coherence C++ APIリファレンスで、もう1つはCoherence for C++のdocディレクトリです。

この章の内容は次のとおりです。

8.1 CacheFactory

CacheFactoryは、NamedCacheのインスタンスを取得および解放する、次の静的メソッドを提供します。

8.2 NamedCache

NamedCacheは、クラスタのメンバー間で共有しているリソースのマップです。NamedCacheは、キャッシュおよびサービスの名前の取得とキャッシュの解放または破棄に使用する、次のメソッドを提供します。

NamedCacheインタフェースは、QueryMapInvocableMapConcurrentMapCacheMapObservableMapの各インタフェースの拡張でもあります。

8.3 QueryMap

QueryMapは、Mapクラスに問合せ機能を追加して拡張したものと考えることができます。この機能により、様々なフィルタを使用してキャッシュを問い合せることができます。フィルタについては、「Filter」で説明しています。

さらに、QueryMapクラスには、索引の追加機能と削除機能があります。索引を使用すると、キャッシュに格納されている値とそれに対応するキーが関連付けられます。また、keySetメソッドとentrySetメソッドのパフォーマンスが大幅に向上します。

問合せの詳細は、「キャッシュの問合せ(C++)」を参照してください。また、「単純な問合せ」にあるC++の例も参照してください。

8.4 ObservableMap

ObservableMapは、キャッシュの変更をリスニングする機能をアプリケーションに提供します。ObservableMapを実装したアプリケーションでは、キーとフィルタのリスナーを追加して、あらゆるキャッシュで発生したイベントを受信できます。これは、そのキャッシュがローカル、パーティション、ニア、レプリケーションのいずれであっても可能であり、またリードスルー、ライトスルー、ライトビハインド、オーバーフロー、ディスク記憶域などを使用しているかどうかに関係なく可能です。ObservableMapには、これらのリスナーを削除するメソッドもあります。

「すべてのイベントのサインアップ」にあるC++の例を参照してください。

8.5 InvocableMap

InvocableMapは、エントリ別処理と集計操作の両方を起動できるキャッシュです。キャッシュの内容に対する操作は、キャッシュによって(したがって、特定の領域に制限されたキャッシュの内容の中で)実行できます。このメソッドは処理を特定の領域に制限できるため、分散環境で特に効率的です。つまり、キャッシュの内容に対する処理を、その処理の対象となるエントリを管理している場所に移動できます。プロセッサとアグリゲータの詳細は、「入力プロセッサ」および「入力アグリゲータ」を参照してください。

8.6 Filter

Filter は、結果をフィルタ処理し、指定の基準に一致するオブジェクトのみを返す機能を提供します。すべてのフィルタではFilterを実装する必要があります。多くの場合、フィルタをQueryMap APIとともに使用して、指定の基準に一致するエントリをキャッシュに問い合せます。「QueryMap」も参照。

Coherence for C++では、coherence::util::filterネームスペースに、実用的なFilter実装が数多く用意されています。使用頻度が高いフィルタを次にいくつか示します。

8.7 値エクストラクタ

値 エクストラクタ は、オブジェクトから値を抽出し、その抽出を識別する情報を提供します。すべてのエクストラクタではValueExtractorを実装する必要があります。


注意:

実用的なすべてのエクストラクタ実装では、オブジェクトのシリアル化可能な状態のみに基づくようにhashCode関数とequals関数を明示的に実装することも必要です。

Coherence for C++には次のエクストラクタがあります。

「問合せの概念」にあるC++の例を参照してください。

8.8 入力プロセッサ

入力プロセッサは、キャッシュ内のエントリ・オブジェクトに対して作動するエージェントです。すべての入力プロセッサではEntryProcessorを実装する必要があります。

Coherence for C++では、coherence::util::processorネームスペースに、EntryProcessor実装がいくつか用意されています。

第16章「サンプルC++アプリケーション」にあるhellogrid C++の例を参照してください。

8.9 入力アグリゲータ

入力アグリゲータは、InvocableMapにあるエントリの一部のサブセットに対して実行し、集計結果を得るように指定できる処理を表します。集計の一般的な例として、最小、最大、合計、平均などの関数があります。ただし、集計の概念は、エントリのグループを評価して1つの答えを算出する必要のある任意のプロセスに適用されます。集計は、分散環境などで並列に実行する機能を明示的に備えています。

すべてのアグリゲータではEntryAggregatorインタフェースを実装する必要があります。

Coherence for C++では、coherence::util::aggregatorネームスペースに、EntryAggregator実装がいくつか用意されています。


注意:

キャッシュした値オブジェクト同様、FilterValueExtractorEntryProcessorおよびEntryAggregatorのすべてのカスタム実装クラスは、C++アプリケーションのPOFコンテキストおよびクライアントが接続されているクラスタ側ノードのPOFコンテキストに正しく登録する必要があります。したがって、カスタムのC++型の対応するJava実装を、クラスタ側ノードで作成、コンパイルおよびデプロイする必要があります。このようなカスタム型を実際に実行するのは、C++の実装ではなくJavaの実装であることに注意してください。詳細は、第10章「統合オブジェクトの構築(C++)」を参照してください。