2002年、オラクル社はCoherenceのパーティション化されたデータ管理サービスの導入に伴い、データ・ファブリックの概念を考案しました。それ以降、Forrester Research社は、Coherenceの基盤となる機能であるデータの仮想化、透過的で分散されたEISの統合、問合せ可能性および一貫したアクセス可能性を組み合せて、情報ファブリックと呼んでいます。ファブリックという用語は、交換ファブリックのような2次元の相互接続イメージに基づいています。ファブリック・アーキテクチャの目的は、ファブリック内のすべてのポイントが、その他すべてのポイントと直接相互接続することにあります。
情報ファブリック(より簡単にデータ・ファブリックまたはデータ・グリッドともいう)では、交換ファブリックの概念を分散環境におけるデータ管理の基礎として採用しています。動的メッシュ・アーキテクチャとも呼ばれているように、Coherenceでは、グリッド環境内の任意の数のサーバーで構成された、信頼性があり、回復力の高まる交換ファブリックが自動的かつ動的に形成されます。次に、このアーキテクチャの特性と利点について説明します。
ファブリックのデータ・スループットの総計は、サーバー数に線形に比例します。
ファブリックのインメモリー・データおよびデータ索引の容量は、サーバー数に線形に比例します。
ディスクベースのオーバーフローおよびデータ記憶域におけるI/Oスループットの総量は、サーバー数に線形に比例します。
ファブリックの回復力は、そのファブリックのエクステントとともに増大します。これにより、nのサーバーで構成されるエクステントを持つファブリックでは、各サーバーのフェイルオーバー時の役割が1/nのみになります。
ファブリックがトレーディング・システムなどのクライアントにサービスを提供する場合、サービスを受けられるクライアントの最大総数は、サーバー数に線形に比例します。
Coherenceは次のような様々なアルゴリズムを使用してこれらの技術的特徴を実現しています。
Coherenceは、すべてのデータ・ファブリック・ノード間でデータを動的にパーティション化します。
各データ・ファブリック・ノードで管理するデータの最大量は構成可能なため、データ・ファブリックの容量は、データ・ファブリック・ノードの数に線形に比例します。
パーティション化は自動的に行われてロード・バランシングされるため、各データ・ファブリック・ノードは最終的にデータ管理の役割を均等に分担することになります。そのため、(ネットワーク・スループット、ディスクI/Oスループット、問合せスループットなどにおける)スループットのスケーラビリティは、データ・ファブリック・ノードの数に比例します。
Coherenceでは、構成可能なデータの冗長性レベルを維持し、複数のデータ・ファブリック・ノードでデータを同期的に最新に保持することにより、自動的にシングル・ポイント障害(SPOF)を排除します。
Coherenceでは、データの冗長性を確保する役割を動的にロード・バランシングし、各サーバーが特定サーバーの全データをバックアップするのではなく、他の多くのサーバーからデータを少量ずつバックアップすることで、データ・ファブリック全体のサーバー障害時の影響を抑制します。
各データ・ファブリック・ノードは多数のクライアント接続を処理できます。このクライアント接続は、ハードウェア・ロード・バランサによってロード・バランシングされます。
Coherence情報ファブリックでは、自動リードスルー機能を使用し、必要に応じて基礎となるデータベースまたはEISから自動的にデータをロードできます。ファブリックのデータが変更されると、同じ機能によってデータを同期的にデータベースで更新したり、非同期のライトビハインド用にキューに配置することができます。リードスルーおよびライトビハインド機能の詳細は、第12章「リードスルー、ライトスルー、ライトビハインドおよびリフレッシュアヘッドのキャッシュ」を参照してください。
Coherenceでは、データ・ファブリック全体のデータ・アクセスを自動的にパーティション化し、データ・アクセスをロード・バランシングして、データベースおよびEISの接続性を効率的に利用します。さらに、リードアヘッドおよびライトビハインド機能を使用すると、データ・アクセスの待機時間をほぼ0のレベルまで削減し、データベースおよびEISの一時的な障害からアプリケーションを分離できます。
注意: Coherenceは、大規模な計算グリッドにおけるデータのボトルネックを解決します。大規模な計算グリッド(DataSynapseの金融グリッドやバイオテック・グリッドなど)では、計算処理のほとんどのボトルネックは、データセットをロードして、それを必要とする計算エンジンで使用できるようにすることです。Coherenceデータ・ファブリックを計算グリッドの上(または近く)にレイヤー化することで、これらのデータセットを常にメモリー内に維持できます。またCoherenceを使用すれば、データをワイヤ・スピードに近い速度ですべての計算ノードにパラレルに送信できます。大規模なデプロイメントでは、基礎となるデータソースの総データ・スループットの数千倍ものスループットを提供できます。 |
Coherence情報ファブリックでは、ファブリック内の任意のサーバー、またはファブリックの任意のクライアントからの問合せがサポートされます。問合せは、XPath問合せや全文検索などのカスタム基準を含め、任意の基準を使用して実行できます。Coherenceのパーティション化を使用してデータを管理する場合、問合せはファブリック全体でパラレルに処理されます(つまり問合せもパーティション化されます)。その結果、データ問合せエンジンで、最大何千ものサーバーで構成されるファブリックまで、そのスループットにスケーラビリティを持たせることができます。たとえば、取引システムにおいて、特定のトレーダーが受け持つ未決済の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);
連続問合せの結果はローカルに維持されます。またオプションで、すべての対応するデータも同様にローカルにキャッシュできます。