ヘッダーをスキップ
Oracle® Coherenceスタート・ガイド
リリース3.6
B61369-01
  ドキュメント・ライブラリへ
ライブラリ
製品リストへ
製品
目次
目次

戻る
戻る
 
次へ
次へ
 

3 問合せ可能なデータ・ファブリックの提供

2002年、オラクル社はCoherenceのパーティション化されたデータ管理サービスの導入に伴い、データ・ファブリックの概念を考案しました。それ以降、Forrester Researchは、Coherenceの基盤となる機能であるデータの仮想化、透過的で分散されたEISの統合、問合せ可能性および一貫したアクセス可能性を組み合せて情報ファブリックと呼んでいます。ファブリックという用語は、交換ファブリックのような2次元の相互接続イメージに基づいています。ファブリック・アーキテクチャの目的は、ファブリック内のすべてのポイントが、その他すべてのポイントと直接相互接続することにあります。

図3-1 送信側および受信側の接続を図解したデータ・ファブリック

この図については本文で説明しています。

データ・ファブリック

情報ファブリック(より簡単にデータ・ファブリックまたはデータ・グリッドともいう)では、交換ファブリックの概念を分散環境におけるデータ管理の基礎として採用しています。動的メッシュ・アーキテクチャとも呼ばれているように、Coherenceでは、グリッド環境内の任意の数のサーバーで構成された、信頼性があり、回復力の高まる交換ファブリックが自動的かつ動的に形成されます。次に、このアーキテクチャの特性と利点について説明します。

Coherenceには、様々なアルゴリズムを介した次のような技術的特徴があります。

EISおよびデータベースの統合

Coherence情報ファブリックでは、自動リードスルー機能を使用し、必要に応じて基礎となるデータベースまたはEISから自動的にデータをロードできます。ファブリックのデータが変更されると、同じ機能によってデータを同期的にデータベースで更新したり、非同期のライトビハインド用にキューに配置することができます。リードスルーおよびライトビハインド機能の詳細は、第12章「リードスルー、ライトスルー、ライトビハインドおよびリフレッシュアヘッド・キャッシュ」を参照してください。

Coherenceでは、データ・ファブリック全体のデータ・アクセスを自動的にパーティション化し、データ・アクセスをロード・バランシングして、データベースおよびEISの接続性を効率的に利用します。さらに、リードアヘッドおよびライトビハインド機能を使用すると、データ・アクセスの待機時間をほぼ0のレベルまで削減し、データベースおよびEISの一時的な障害からアプリケーションを分離できます。


注意:

Coherenceは、大規模な計算グリッドにおけるデータのボトルネックを解決します。

大規模な計算グリッド(DataSynapseの金融グリッドやバイオテック・グリッドなど)では、計算処理のほとんどのボトルネックは、データセットをロードして、それを必要とする計算エンジンで使用できるようにすることです。Coherenceデータ・ファブリックを計算グリッドの上(または近く)にレイヤー化することで、これらのデータセットを常にメモリー内に維持できます。またCoherenceを使用すれば、データをワイヤ・スピードに近い速度ですべての計算ノードにパラレルに送信できます。大規模なデプロイメントでは、基礎となるデータソースの総データ・スループットの数千倍ものスループットを提供できます。


問合せ可能

Coherence情報ファブリックでは、ファブリック内の任意のサーバー、またはファブリックの任意のクライアントからの問合せがサポートされます。問合せは、XPath問合せや全文検索などのカスタム基準を含め、任意の基準を使用して実行できます。Coherenceのパーティション化を使用してデータを管理する場合、問合せはファブリック全体でパラレルに処理されます(つまり問合せもパーティション化されます)。その結果、データ問合せエンジンで、最大1,000のサーバーで構成されるファブリックまで、そのスループットにスケーラビリティを持たせることができます。たとえば、取引システムにおいて、特定のトレーダーが受け持つ未決済のOrderオブジェクトをすべて問い合せることができます。

例3-1 特定のオブジェクトに関するキャッシュの問合せ

NamedCache mapTrades = ...
Filter filter = new AndFilter(new EqualsFilter("getTrader", traderid),
                              new EqualsFilter("getStatus", Status.OPEN));
Set setOpenTrades = mapTrades.entrySet(filter);

アプリケーションでファブリックからデータを問い合せる場合、その結果はポイント・イン・タイム・スナップショットになります。さらに、問合せをリスナー自体に配置するかCoherence連続問合せ機能を使用することにより、問合せ結果を最新に保持できます。

連続問合せ

Coherenceデータ・ファブリックからポイント・イン・タイムの問合せ結果を取得でき、その問合せ結果を変更するイベントを受信可能な場合、Coherenceでは、問合せ結果と連続的な関連するイベント・ストリームとを組み合せて、問合せ結果をリアルタイムに維持できます。目的の問合せの待機時間が0である場合と同じ効果を持ち、問合せがミリ秒ごとに数回繰り返されるため、この機能は連続問合せと呼ばれています。

Coherenceは、データ・ファブリックのパラレル問合せ機能とリアルタイムのイベント・フィルタリングおよびストリーミングとを組み合せて使用する連続問合せを実装します。その結果、トレーディング・デスクトップなどの何千ものクライアント・アプリケーション・インスタンスがサポートされます。前述のトレーディング・システムの例を使用する場合、コードを1行変更するだけで連続問合せに変換できます。

例3-2 連続問合せの実装

NamedCache mapTrades = ...
Filter filter = new AndFilter(new EqualsFilter("getTrader", traderid),
                              new EqualsFilter("getStatus", Status.OPEN));
NamedCache mapOpenTrades = new ContinuousQueryCache(mapTrades, filter);

連続問合せの結果はローカルに維持されます。またオプションで、すべての対応するデータも同様にローカルにキャッシュできます。