2016-09-15 12 views
1

私たちは私たちのプロジェクトにgemfireを実装しようとしています。現在、gemfireキャッシュをDB2データベースと同期しています。そこで、DBデータをキャッシュに入れながら問題に直面しています。gemfireキャッシュローダーから複数のデータを取得する方法は?

DBデータを領域に入れる。私はcom.gemstone.gemfire.cache.CacheLoaderを実装し、それをオーバーライドするメソッドをオーバーライドしています。 java doc loadメソッドで書かれているように、1つのObjectだけが返されます。しかし、私たちの要件のために、我々はList<CmDvceInvtrGemfireBean> GemFireの領域の形で複数のVOをreturiningながら負荷方法

public List<CmDvceInvtrGemfireBean> load(LoaderHelper<CmDvceInvtrGemfireBean, CmDvceInvtrGemfireBean> helper) 
      throws CacheLoaderException 

から複数のVOを返却する必要があります、それは単一の値としてです検討してください。だから、

、私が呼び出し、

System.out.println("return COUNT" + cmDvceInvtrRecord.query("SELECT COUNT(*) FROM /cmDvceInvtrRecord")); 

これは、1つの数を返します。しかし、私はそれに合計7つのデータ数を見ることができます。

だから、私はGemFireののCacheLoaderを使用してこれを行うにはどのような方法があります

地域

で別々のVOとして、すべての7つの値を置く仕組みのようなものを実装したいですか?

答えて

0

CacheLoaderは、キャッシュミス時にGemFire Regionの1つのエントリに対してのみ値をロードすることを意味していました。 Javadocの状態として...

はキーが複数値(例えば配列/コレクション)値にマッピングすることができますが希望 キーの値..

を..creates CacheLoaderは、1つのエントリのみを設定できます。

複数の「エントリ」を1回の操作でキャッシュに取り込む他の方法に頼る必要があります。

好奇心の渦中に、複数のエントリ(DBから)を一度に読み込むにはどうして必要なのですか?あなたはDBへの往復の回数を最小限にしようとしていますか?

また、CacheLoaderで提供されている情報(キー)に基づいて、DBから読み込むVOを決定するロジックは何ですか?

たとえば、CacheLoaderキーに基づいてDBから値を予測して選択すると、後でRegion.get(key)コールでキャッシュミスが最小限に抑えられますか?

申し訳ありませんが、私は今あなたのために良い答えがありませんが、これらの質問のいくつかの答えが私にあなたのためのいくつかのアイデアを与えるのに役立つかもしれません。

乾杯は、 ジョン

+0

は、私は複合(口座番号とデバイスシーケンス番号)それぞれのテーブルの主キーを持っています。ビジネス要件に応じて、ユーザーはアカウント番号のみを提供します。だから、そのアカウントに基づいて、私は一度にテーブルからすべてのデバイスを領域にロードしたい。だから、私はCacheLoaderを使ってそれを行うことはできますか? –

+0

@JohnBlumは、予想通りに値を読み込むことに関してあなたの脳を選ぶことを可能にします。このようなことを実装して、キャッシュローダーで小さなコンテキストを利用できるようにする方法を考えましたか? – Newbie

関連する問題