本発明は、データ配信システム、特に、多数のデータプロバイダからクライアント装置にデータを供給するデータ配信システムに関する。
クライアント装置は、多数の様々なデータソースにデータを要求することが多く、また、データソースは様々な形式及び品質のデータを供給する。供給されるデータの形式及び品質は、クライアントの要件に合うこともあれば、合わないこともある。
既知のデータ配信システムとして、国際公開公報第2012/073175号は、サービスプロバイダ側、サービスプロバイダ側に接続されたホスト側、及び、ホスト側に接続された顧客側を含むデータ配信システムを開示している。ホスト側のサーバは、サービスプロバイダ側の様々なサービスプロバイダからデータを収集し、顧客側のクライアントにデータを供給する。データは、各クライアントに関連付けられたユーザプロファイルに従って各クライアントに供給され、ユーザプロファイルは、ユーザが興味を持っているデータの種類を特定するものである。
クライアント装置の要件に合わせて様々なデータソースからデータを取り出し、クライアント装置に提示することができる、より高度なデータ配信システムが求められている。特に、データソースが、そういったデータの最新版を供給すること、クライアント装置が、データ要件を変更すること、前のバージョンのデータに対して、クライアントがどの時点でどのデータを有していたかなどを確認する必要がある監査を行うことがある。
様々なクライアント装置が様々な通信プロトコルを用いて、様々な方法でデータを列挙することがあるため、クライアント装置が、リストを保持して、サーバからの特定のデータの読み込みを要求することは、特に、クライアント装置がサーバにどんな新しいデータが存在するかわからない場合、困難である。
従って、本発明の目的は、既知の従来技術を改善することである。
本発明の第1の態様によれば、サーバに接続された複数のサービスプロバイダと、前記サーバに接続された複数のクライアント装置と、を備えるデータ配信システムが提供される。前記サーバは、前記サービスプロバイダからのデータインスタンスを保存するデータレポジトリと、クライアント装置ごとに、状態属性の各集合を保存するクライアントレポジトリであって、状態属性の各集合は、各クライアント装置に対する前記データインスタンスの状態を示す、クライアントレポジトリとを備える。
クライアントごとの状態属性の集合を用いるということは、クライアントが追跡ジョブを行うことなく、あるいは、クライアントが新しいデータインスタンスが来る予定であると考えた時に要求を送信することなく、サーバがクライアントに対して各データインスタンスの状態を追跡することができるということである。
サーバが、状態属性を用いて、データインスタンスに対してクライアント装置の動作の状態を追跡するということは、サーバは、クライアント装置が異なるデータインスタンスを識別するのにどの制御プロトコルを使用するかを把握する必要がなく、単に、状態属性が示すデータインスタンスであって、クライアント装置への読み込みがまだ成功していないデータインスタンスであればどんなデータインスタンスでもクライアント装置に送信することができる、ということである。
さらに、1つのデータレポジトリが各データインスタンスのコピーをたった1つ保存するだけで、データインスタンスを別のクライアントに複製する必要がなく、全てのクライアント装置をカバーするように維持できる。各クライアントは、状態属性の集合を介して、データレポジトリのデータインスタンスを個別に見ることができる。各データインスタンスに対して、別の状態属性をクライアントごとに保存してもよい。
好ましくは、各状態属性は、特定のデータインスタンスに関連付けられていてもよい。その後、状態属性には、クライアント装置に対するデータインスタンスの様々な状態を示す様々な値を割り当てられてもよい。
クライアント装置のうち第1クライアント装置に関連付けられた状態属性の集合内の各状態属性は、状態属性に関連付けられたデータインスタンスがクライアント装置のうち第1クライアント装置にまだ読み込まれていないことを示す値;及び、状態属性に関連付けられたデータインスタンスがクライアント装置のうち第1クライアント装置に読み込まれたことを示す値を含む、値をとってもよい。
従って、サーバ装置がどのデータインスタンスがクライアント装置にまだ読み込まれていないかをクライアント装置に知らせる場合、及び/または、クライアント装置が、新しいデータインスタンスを読み込む準備ができていることを示す場合、クライアント装置に関連付けられた状態属性の集合を用いて、クライアント装置がまだ読み込んでいないデータインスタンスをプッシュ配信してもよい。例えば、状態属性の値は、クライアントが対応するデータインスタンスをまだ読み込んでいない場合、「新規」でもよく、クライアントが対応するデータインスタンスを読み込んだ場合、「読み込み済み」でもよい。
好ましくは、状態属性の値は、サーバとクライアント装置の両方によって設定されてもよい。例えば、状態属性が「新規」に設定される場合はサーバによって設定され、状態属性が「未読み込み」に設定される場合はクライアントによって設定されてもよい。そのため、状態属性は、サーバとクライアント装置の両方が、サーバとクライアント装置との間で双方向通信を行うのに利用可能である。従って、状態属性は、サーバ及びクライアント装置が使用できる非常に単純な通信プロトコルを提供して、人を介さずにクライアント装置への新しいデータインスタンスの読み込みを自動的に連係させる。
状態属性の値は、クライアント装置によって自動的に行われるべき動作のリストを規定してもよい。例えば、クライアント装置は、状態属性の値が「新規」である場合、その状態属性に関連付けられたデータインスタンスの読み込みを自動的に開始してもよい。
妥当性チェックは、一般的に、サーバがサービスプロバイダから受信したデータインスタンスに対して実行するものであり、また、一般的に、サーバから受信したデータインスタンスに対してクライアント装置が実行することもある。サーバによって実行される妥当性チェックは、クライアントによって実行される妥当性チェックとは異なることがあるが、クライアント装置によって実行される妥当性チェックはいずれも、サーバ装置への通知なしに変更されてもよい。妥当性チェックは、例えば、データインスタンスが十分最新であるかの確認、または、データインスタンスに含まれるデータが所与の許容範囲よりも厳密に正しいと特定されるかについての確認を含んでもよい。
従って、クライアント装置のうち第1クライアント装置に関連付けられた状態属性の集合内の各状態属性は、さらに、状態属性に関連付けられたデータインスタンスが、例えば、クライアント装置のうち第1クライアント装置がデータインスタンスを読み込んだ後に行った妥当性チェックに合格しなかったため、クライアント装置のうち第1クライアント装置に拒否されたことを示す値を含む値をとってもよい。
従って、状態属性を用いて、クライアント装置は、データインスタンスがクライアント装置の妥当性チェックに合格しなかったことを自動的にサーバ装置にフラグで知らせることができる。このように、様々なクライアントは、特定のデータインスタンスがクライアントの妥当性チェックに合格しなかったことを知らせるための多数の異なる通信方法を有する必要はない。その代わりに、各クライアントに対して各データインスタンスの状態を中央ログに保持し、状態属性によってサーバ内に保持する。1つ以上のクライアントの妥当性チェックに合格しなかった結果、状態属性は、データレポジトリのどのデータインスタンスに注意が必要であるかを特定するのに用いられる。
状態属性に対応するデータインスタンスがクライアント装置の妥当性チェックに合格した場合、その状態属性の値は、例えば、クライアント装置によって、「有効」と設定されてもよい。データインスタンスがクライアント装置の妥当性チェックに合格しなかった場合、クライアントは、状態属性の値を「拒否」と設定してもよい。
好ましくは、サーバは、データフィードでサービスプロバイダからデータインスタンスを受信するように構成されてもよく、各データフィードは、データインスタンスのストリームを供給する。データレポジトリは、フィード、日付及びバージョン番号によってデータインスタンスを保存するように構成されてもよい。
サーバは、データフィードで受信されたデータインスタンスをデータレポジトリに保存する前に、例えば、データインスタンスが全て共通形式で保持されるように形式を整えるように構成されてもよい。好ましくは、クライアント装置は、サービスプロバイダが用いる様々な形式を扱わなければならないのではなく、共通形式を扱うように構成されてもよい。
データフィードの各連続するデータインスタンスは、データフィードの先行するデータインスタンスの更新情報であってもよく、データレポジトリは、連続するデータインスタンスと先行するデータインスタンスの両方を保存するように構成されてもよい。このように全てのデータインスタンスの履歴を保持することで、クライアント装置は、監査目的で、データインスタンスに関連付けられた状態属性を見ることによって、どの日付にどのデータインスタンスが利用可能であったか、及び、これらのデータインスタンスのうちどのデータインスタンスがクライアント装置によって実際に読み込まれたかを判定することができる。
好ましくは、クライアントレポジトリは、各クライアント装置にクライアントAPIを提供してもよく、当該クライアントAPIは、クライアント装置に対する状態属性の集合を含む。クライアントAPI(アプリケーションプログラミングインターフェース)は、例えば、どのデータフィードにクライアント装置が興味を持っているか、ひいては、データレポジトリのどのデータインスタンスについてクライアントAPIが状態属性を保存すべきかといった、クライアント装置に関する他の情報を含んでもよい。
クライアントAPIは、クライアント装置が、利用可能なデータフィードのリストの受信を開始することができる、リストフィード機能を提供してもよい。例えば、クライアント装置は、サーバにリストフィード要求を送信し、サーバは、クライアント装置が選択可能なデータフィードのリストをクライアント装置に返してもよい。
クライアントAPIは、クライアント装置が、クライアント装置に対する更新されたデータインスタンスのリストであって、クライアント装置に対する状態属性の値に基づいたリストの受信を開始することができる、リスト更新機能を提供してもよい。
クライアントAPIは、クライアント装置が、クライアント装置によって特定されたデータフィードの最新のデータインスタンスの受信を開始することができる、フェッチデータ機能を提供してもよい。例えば、クライアント装置は、サーバに特定のデータフィードを指定するフェッチデータ要求を送信し、サーバは、そのデータフィードの最新のデータインスタンスを送信してもよい。
クライアントAPIは、クライアント装置が、クライアント装置によって指定された日付のデータインスタンスのリストであって、クライアント装置に対する状態属性の値に基づいたリストの受信を開始することができる、リスト履歴機能を提供してもよい。
好ましくは、クライアントAPIは、クライアント装置が、リスト更新機能、フェッチデータ機能またはリスト履歴機能に関連してモードパラメータを規定することを許可してもよい。当該モードパラメータは、クライアントが当該モードパラメータに対応する状態属性値を有するデータインスタンスまたはデータインスタンスのリストの受信を望んでいることを示すものである。
例えば、クライアント装置は、サーバにリスト更新要求を送信し、当該要求は、「新規」の状態属性値に対応するモードパラメータを含み、サーバは、データインスタンスがまだクライアント装置によって読み込まれていないことを示す「新規」の状態属性値を有する全てのデータインスタンスのリストを返してもよい。
クライアント装置は、サーバにフェッチデータ要求を送信し、当該要求はモードパラメータを含み、モードパラメータは、クライアント装置が当該モードパラメータに対応する状態属性値を有するデータインスタンスの受信を望んでいることを示してもよい。
クライアント装置は、特定の日付及びモードパラメータを指定するリスト履歴要求であって、クライアント装置が当該モードパラメータに対応する状態属性値を有する日付のデータインスタンスのリストの受信を望んでいることを示すリスト履歴要求をサーバに送信してもよい。
クライアントAPIは、クライアント装置が特定のデータインスタンスについての状態属性の設定を開始することができる、設定機能を提供してもよい。例えば、クライアント装置は、一旦、データインスタンスがクライアント装置の妥当性チェックに合格すれば、当該データインスタンスに関連付けられた状態属性の値を「有効」と設定する設定要求を送信してもよい。
本発明の第2の態様によれば、複数のサービスプロバイダから複数のクライアントにデータを配信するデータ配信方法が提供される。前記方法は、
前記サービスプロバイダからデータインスタンスを受信することと、
前記データインスタンスをデータレポジトリに保存することと、
前記データインスタンスに関連付けられた状態属性をクライアントレポジトリに保存することと、を含み、
前記クライアントレポジトリは、クライアント装置ごとに、状態属性の各集合を保存し、状態属性の各集合は、各クライアント装置に対する前記データインスタンスの状態を示す、方法である。
データインスタンスに関連付けられた状態属性をクライアントレポジトリに保存することは、新しいデータインスタンスが関連するクライアント装置に対応する状態属性の集合に状態属性を追加することを含んでもよい。従って、状態属性の集合が全て、全てのデータインスタンスについての状態属性を含んでいなくてもよい。状態属性の集合は、状態属性の集合に関連付けられたクライアント装置が興味を持っているデータインスタンスの状態属性を含んでいればよい。
あるいは、クライアントレポジトリの状態属性の集合が全て、データレポジトリにある全てのデータインスタンスの状態属性を含んでもよい。
本発明の実施形態を、限定されない例として、添付の図面を参照して説明する。
本発明の実施形態に係るデータ配信システムの概略ブロック図である。
図1のデータ配信システムを用いて実施されるデータ配信方法のフロー図である。
異なるクライアント装置から異なる日に受信しているデータインスタンスを示す図である。
状態属性がとり得る様々な値の状態図である。
サーバによってクライアント装置に提供されるのに適したアプリケーションプログラミングインターフェース(API)の概略図である。
本発明の実施形態を図1の概略図を参照して説明する。図1は、サービスプロバイダ側110、サーバ120及びクライアント側140を含むデータ配信システムを示す。
サービスプロバイダ側110は、複数のサービスプロバイダ111〜114を含み、クライアント側140は、複数のクライアント装置141〜144を含む。サーバ120は、データインスタンス125を保存するデータレポジトリ121、及び、複数の状態属性の集合131〜134を保存するクライアントレポジトリ122を含む。
説明上、データインスタンス125は、8個のデータインスタンス1251〜1258を含むように示されている。状態属性の集合は、各クライアント装置に対して1つあり、状態属性の集合131は、クライアント装置141に対応し、状態属性の集合132は、クライアント装置142に対応し、状態属性の集合133はクライアント装置143に対応し、状態属性の集合134は、クライアント装置144に対応する。
サービスプロバイダ111〜114のそれぞれは、各データフィードF1〜F4をサーバ120に供給し、サーバ120は、データフィードを受信し、データフィードに含まれるデータインスタンス125をデータレポジトリ121に保存する。
サーバ120は、データレポジトリ121にデータインスタンスを保存する前に、受信したデータフィードF1〜F4内のデータインスタンスの形式を整えて、データインスタンスが全て共通形式で保持されるようにする。クライアント装置141〜144は全て、共通形式を扱うように構成される。
状態属性の集合はそれぞれ、関連付けられたクライアント装置に関連するデータインスタンス125のそれぞれに対する状態属性を含む。例えば、クライアント装置141に関連するデータインスタンスがデータインスタンス1251、1254及び1256である場合、クライアント装置141に対する状態属性の集合131は、3つのデータインスタンス1251、1254及び1256に対応する3つの状態属性を保存することになる。状態属性はそれぞれ、クライアント装置141に対する対応するデータインスタンスの状態を示す。
図2を参照すると、図1のデータ配信システムを利用するデータ配信方法は、まず、サービスプロバイダからデータインスタンスを受信すること(200)と、2番目に、データレポジトリにデータインスタンスを保存すること(210)と、3番目に、データインスタンスに関連付けられた状態属性を状態属性の集合に保存すること(220)と、を含み、当該状態属性は、新しいデータインスタンスが関連するクライアント装置に対応する状態属性の集合に保存される。
例えば、クライアント装置141及び143はデータフィードF1に興味を持っているが、クライアント装置142及び144は、データフィードF1に興味を持っていない場合、サービスプロバイダから新しいデータインスタンスを受信すること(200)は、サービスプロバイダからデータフィードF1においてデータインスタンス1252を受信することを含み、新しいデータインスタンスをデータレポジトリに保存すること(210)は、データレポジトリ121にデータインスタンス1252を保存することを含み、データインスタンスに関連付けられた状態属性を状態属性の集合に保存すること(220)は、状態属性の集合131及び133のそれぞれに状態属性を保存することを含んでもよい。
サーバは、例えば、どの状態属性の集合にデータインスタンス1252についての状態属性を追加する必要があるかを、各クライアント装置が興味を持っているデータフィードのリストに基づいて判定する。当該リストは、クライアント装置ごとに状態属性の集合とともに保存されてもよい。
図1のデータレポジトリ121へのデータインスタンスの保存の例を図3を参照して説明する。図3は、D1〜D3の3日間にわたってサーバ120がデータフィードF1〜F4から受信しているデータインスタンス1251〜1258を示す。
特に、図3は、第1日目D1に、データインスタンス1251、1253及び1258を(各サービスプロバイダ111、112及び114に対応する)各データフィードF1、F2及びF4から受信し、第2日目D2に、データインスタンス1254及び1257を(各サービスプロバイダ112及び113に対応する)各データフィードF2及びF3から受信し、第3日目D3に、データインスタンス1252、1255及び1256を受信したことを示す。データインスタンス1252は、データフィードF1から受信し、データインスタンス1255及び1256は、両方ともデータフィードF2から1日のうち互いに異なる時間に受信した。
各データインスタンスは、どのデータフィードから受信したか、どの日付に受信したか、及び、バージョン番号によってデータレポジトリ121に保存される。バージョン番号は、その日の間に何回更新されたデータインスタンスを受信したかによって設定される。従って、データインスタンス1251〜1255及び1257は、全てバージョン番号1を有しており、データインスタンス1256は、データフィードF2について日付D3に2回目に受信したデータインスタンスであるため、バージョン番号2を有している。各データインスタンスは、特定のデータフィード/日付/インスタンスに対応する記憶場所に、及び/または、特定のフィード/日付/インスタンスを示すメタデータと共に保存されてもよい。
データフィードの各連続するデータインスタンスは、データフィードの先行するデータインスタンスの更新情報である。従って、データインスタンス1252は、データフィードF1からの最新のデータであるため、データインスタンス1251に取って代わる。データインスタンス1256は、データフィードF2からの最新のデータであるため、データインスタンス1253、1254及び1255に取って代わる。データフィードF3及びF4の最新のデータは、それぞれ、データインスタンス1257及び1258である。データインスタンス1251、1253及び1255は全て取って代わられてしまったが、データインスタンス1251〜1258は全て、まだデータレポジトリに保持されており、(それらの状態属性は、状態属性の集合にまだ保持されており)、必要に応じて過去に用いられたデータインスタンスの状態について確認できるようになっている。
状態属性がとり得る様々な状態属性値の例を図4を参照して説明する。図4は、状態属性の集合に関連付けられたクライアント装置が興味を持っている新しいデータインスタンスをサーバが受信した結果、状態属性の集合において状態属性が作成される際に状態属性410がとり得る値を示す、状態図400である。
クライアント装置がデータインスタンスに興味を持っているかは、どのサービスプロバイダまたはデータフィードからデータインスタンスが受信されたかによって判定されてもよく、クライアント装置は、サービスプロバイダまたはデータフィードのリストによって当該サービスプロバイダまたはデータフィードに興味を持っていることが分かる。あるいは、クライアント装置は、単に、全てのデータインスタンスに興味を持っていると仮定してもよい。
まず、状態属性が作成されると、「新規」という値をとり、状態属性がその一部を形成する状態属性の集合に関連付けられたクライアント装置にとって、状態属性に対応するデータインスタンスが新しいことを示す。
クライアント装置がデータインスタンスを読み込む際、読み込みが成功した場合、状態属性値を「読み込み済み」に変更し、読み込みに失敗した場合、「失敗」に変更してもよい。
一旦、データインスタンスのクライアント装置への読み込みが成功すると、クライアント装置は、データインスタンスに妥当性チェックを行い、妥当性チェックに合格した場合、状態属性値を「有効」に変更し、妥当性チェックに合格しなかった場合、「拒否」に変更してもよい。
例えば、データインスタンス1252がデータレポジトリ121に保存された際にクライアント装置143に対応する状態属性の集合133において、新しい状態属性を作成してもよく、その後、データインスタンスをサービスプロバイダ111からデータフィードF1で受信する。新しい状態属性の作成の際、新しい状態属性は、クライアント装置143にとって新しいので、「新規」という値が割り当てられる。
続いて、クライアント装置143は、サーバ120から「新規」という状態属性値を読み取ることによって、新しいデータインスタンス1252が利用可能であることに気づき、クライアント143は、サーバ120からデータインスタンス1252を読み込む。状態属性は、読み込みが成功した場合、「読み込み済み」という値に変更され、例えば、サーバとクライアント装置との間の通信回線の故障によって、読み込みに失敗した場合、「失敗」という値に変更される。その後、再び読み込みを試みてもよい。
一旦、データインスタンス1252が読み込まれると、クライアントは、データインスタンス1252に妥当性チェックを行い、妥当性チェックに合格すると、状態属性の値を「有効」に変更し、例えば、クライアントがデータインスタンス1252のデータ許容範囲よりも近い許容範囲を有するデータを要求することによって、妥当性チェックに合格しなかった場合、「拒否」に変更する。例えば、クライアント装置が、データインスタンスが要件に対し十分であると最終的に判断する場合、または、クライアント装置が、データ妥当性要件を上げて、新しいデータ妥当性要件でデータインスタンスを再読み込みする場合、値は「有効」と「拒否」との間で変移してもよい。
サーバ120と各クライアント装置141〜143との間の通信は、各クライアント装置が提供したアプリケーションプログラミングインターフェース(API)によって、サーバ120が管理してもよい。クライアントAPIが動作する際に用いる状態属性値があるため、各クライアントのAPIは、クライアントに関連する状態属性の集合を含むと考えてもよい。
図5は、サーバ120によってクライアント装置141〜144のそれぞれに提供されるクライアントAPI500の概略図を示す。各クライアント装置は、クライアントAPIを用いて、クライアント装置に関連付けられた状態属性の集合に動作する様々なコマンドによってサーバ120と通信する。
各クライアント装置によって起動される様々なAPI機能について図5を参照して、クライアント装置141を例に説明する。
クライアントAPI500は、クライアント141が、クライアント装置が利用可能なデータフィードF1〜F4のリストの受信を開始できる、リストフィード機能を提供する。クライアント装置141は、例えば、ある種類またはあるカテゴリのデータインスタンスを供給するデータフィードF1及びF2など、クライアントが興味を持っているデータフィードの種類を特定する種類パラメータとともにリストフィード要求をサーバ120に送信することによって、リストフィード機能を起動する。
データフィードF1及びF2のリストは、クライアント装置141に返され、クライアントが興味を持っているフィードの記録としてクライアントAPIに自動的に保存される。あるいは、クライアント装置141は、一旦クライアント装置がフィードのリストを受信すると、クライアント装置がどのデータフィードに興味を持っているかをクライアントAPIに対して直接指定してもよい。
フィードF1及びF2は、クライアントが興味を持っているフィードのリストにあるので、サーバ120がフィードF1またはF2のうち1つから新しいデータインスタンスを受信する度に、状態属性がクライアント装置141に対する状態属性の集合131に追加される。
クライアントAPI500は、クライアント装置141が、例えば、クライアント装置に対する更新されたデータインスタンスのリストであって、クライアント装置に対する状態属性の集合131の状態属性値に基づいたリストの受信を開始できる、リスト更新機能も提供する。クライアント装置141は、随意的なモードパラメータとともにリスト更新要求をサーバ120に送信することによってリスト更新機能を起動する。当該モードパラメータは、例えば、「新規」という状態属性値を有するデータインスタンスなど、リストがある種類のデータインスタンスのみを含むように指定する。
データインスタンスのリストは、クライアント装置141に返され、例えば、図3を参照すると、データフィードF1及びF2の他のデータインスタンス1251、1253、1254及び1255はクライアント装置141によって既に読み込まれており、以前にクライアント装置141によって「読み込み済み」と状態属性値が設定された場合、リストは、データインスタンス1252及び1256を指定してもよい。従って、リスト更新機能により、クライアント装置141は、新たな2つのデータインスタンス1252及び1256がダウンロード可能になったことを知ることができる。
クライアントAPI500は、クライアント装置が、例えば、クライアント装置によって指定されたデータフィードの最新のデータインスタンスの受信を開始する、フェッチデータ機能も提供する。クライアント装置141は、必要なデータインスタンスの指定及び随意的なモードパラメータとともにフェッチデータ要求をサーバ120に送信することによってフェッチデータ機能を起動する。
必要なデータインスタンスは、データフィードによって指定されてもよく、例えば、クライアント装置がデータフィードF1からの最新のデータインスタンス1252を必要とする場合、値「F1」が要求に含まれてもよい。あるいは、図2に示す構造によってデータレポジトリ121へデータを保存するため、データフィード、データインスタンスの日付及びデータインスタンスのバージョンによって所与のデータインスタンスを完全に指定してもよい。
随意的なモードパラメータは、リスト更新機能と実質的に同じ機能を提供する。例えば、モードパラメータは、指定されたデータフィードのデータインスタンスのみがダウンロードされ、データインスタンスが指定された状態属性値を有するように指定してもよい。
クライアントAPI500は、クライアント装置が、例えば、クライアント装置によって指定された日付のデータインスタンスのリストであって、クライアント装置に対する状態属性値に基づいたリストの受信を開始する、リスト履歴機能も提供する。クライアント装置141は、日付の指定及び随意的なモードパラメータとともにリスト履歴要求をサーバ120に送信することでリスト履歴機能を起動する。
例えば、図3を参照すると、クライアント装置141は、D1の日付を特定するリスト履歴要求、及び、「有効」の状態属性値を指定するモードパラメータをサーバ120に送信してもよい。その後、サーバ120は、データインスタンス1251及び1253がクライアント装置141によって、以前、日付D1に読み込まれ、妥当性が認められたデータインスタンスであるため、これらのデータインスタンス1251及び1253を指定するリストを返すことになる。なお、データインスタンス1258は、データフィードF1またはF2ではなく、データフィードF4から受信されたデータインスタンスであり、クライアント装置141が興味を持っているデータフィードはデータフィードF1及びF2のみであるので、データインスタンス1258に対応する状態属性の集合131の状態属性がないため、データインスタンス1258は含まれない。
クライアントAPI500は、クライアント装置が、特定のデータインスタンスの状態属性値の設定を開始できる、設定機能も提供する。クライアント装置141は、データインスタンスの指定及び設定する状態属性値とともに設定要求をサーバ120に送信することで設定機能を起動する。
例えば、データインスタンス1252の読み込みに成功した後、クライアント装置141は、データインスタンス1252を指定するためのデータフィードF1、日付D3及びバージョン1を指定する設定要求、及び、指定されたデータインスタンス1252に関連付けられた状態属性値を「読み込み済み」に変更すべきであることを示すための値「読み込み済み」をサーバ120に送信する。
一旦クライアント装置がデータインスタンス1252に妥当性チェックを実行すると、クライアント装置141が設定要求を再度送信し、必要に応じて、状態属性値を「有効」または「拒否」に変更してもよい。
上記APIの様々な機能は、クライアント装置がデータレポジトリ121のデータインスタンスを問い合わせるのに用いてもよい。さらに詳細な要求をするために、更なるパラメータをAPI要求に含めてもよい。当業者に明らかなように、例えば、データインスタンスの更新または削除、または、データインスタンスに関連付けられたメタデータの更新または削除など、更なるAPI機能を提供してもよい。
本発明のデータ処理システム及び方法は、様々なサービスプロバイダから取得し、様々なクライアント装置に供給する多種多様なデータ種類に適用されるが、経時的に頻繁に更新され、クライアント装置が妥当性チェックを行う種類のデータに特に適している。
例えば、特定のクライアントが、他のクライアントにとって必要ではないクエリを実行できる必要がある場合、様々なクライアントAPIから供給される通信プロトコルは、互いに異なっていてもよい。
サービスプロバイダは、例えば、財務ベンチマークデータプロバイダであってもよく、データインスタンスは、例えば、財務ベンチマークデータであってもよく、クライアント装置は、財務ベンチマークデータの顧客であってもよい。
添付の請求の範囲に含まれる範囲内の更なる実施形態も、当業者に明らかであろう。
本発明は、データ配信システム、特に、多数のデータプロバイダからクライアント装置にデータを供給するデータ配信システムに関する。
クライアント装置は、多数の様々なデータソースにデータを要求することが多く、また、データソースはそれぞれ、大抵様々なフォーマット及び品質のデータを供給する。供給されるデータのフォーマット及び品質は、クライアントの要件に合うこともあれば、合わないこともある。
既知のデータ配信システムとして、国際公開公報第2012/073175号は、サービスプロバイダ側、サービスプロバイダ側に接続されたホスト側、及び、ホスト側に接続された顧客側を含むデータ配信システムを開示している。ホスト側のサーバは、サービスプロバイダ側の様々なサービスプロバイダからデータを収集し、顧客側のクライアントにデータを供給する。データは、各クライアントに関連付けられたユーザプロファイルに従って各クライアントに供給され、ユーザプロファイルは、ユーザが興味を持っているデータの種類を特定するものである。米国特許出願2011/0296397号は、ソフトウェアパッケージを管理するシステムを開示している。このシステムは、パッケージレポジトリと、パッケージサーバと、クライアントとを有し、これらがネットワークを介して接続されている。クライアントはパッケージマネジャを有し、パッケージサーバは、クライアントと相互作用をして、クライアント上にインストールされたパッケージを管理する。
クライアント装置の要件に合わせて様々なデータソースからデータを取り出し、クライアント装置に提示することができる、より高度なデータ配信システムが求められている。特に、データソースが、そういったデータの最新版を供給すること、クライアント装置が、データ要件を変更すること、前のバージョンのデータに対して、クライアントがどの時点でどのデータを有していたかなどを確認する必要がある監査を行うことがあるかもしれない。
様々なクライアント装置が様々な通信プロトコルを用いて、様々な方法でデータを列挙することがあるため、クライアント装置が、リストを保持して、サーバからの特定のデータの読み込みを要求することは、特に、クライアント装置がサーバにどんな新しいデータが存在するかわからない場合、困難だろう。
従って、本発明の目的は、既知の従来技術を改善することである。
本発明の第1の態様によれば、添付の請求項1〜12のいずれか1項に記載のデータ配信システムが提供される。
クライアントごとの状態属性の集合を用いるということは、クライアントが追跡ジョブを行うことなく、あるいは、クライアントが新しいデータインスタンスが来る予定であると考えた時に要求を送信することなく、サーバがクライアントに対して各データインスタンスの状態を追跡することができるということである。
サーバが、状態属性を用いて、データインスタンスに対してクライアント装置の動作の状態を追跡するということは、サーバは、クライアント装置が異なるデータインスタンスを識別するのにどの制御プロトコルを使用するかを把握する必要がなく、単に、状態属性が示すデータインスタンスであって、クライアント装置への読み込みがまだ成功していないデータインスタンスであればどんなデータインスタンスでもクライアント装置に送信することができる、ということである。
さらに、1つのデータレポジトリが各データインスタンスのコピーをたった1つ保存するだけで、データインスタンスを別のクライアントに複製する必要がなく、全てのクライアント装置をカバーするように維持できる。各クライアントは、状態属性の集合を介して、データレポジトリのデータインスタンスを個別に見ることができる。各データインスタンスに対して、別の状態属性をクライアントごとに保存してもよい。
好ましくは、各状態属性は、特定のデータインスタンスに関連付けられていてもよい。その後、状態属性には、クライアント装置に対するデータインスタンスの様々な状態を示す様々な値を割り当てられてもよい。
クライアント装置のうち第1クライアント装置に関連付けられた状態属性の集合内の各状態属性は、状態属性に関連付けられたデータインスタンスがクライアント装置のうち第1クライアント装置にまだ読み込まれていないことを示す値;及び、状態属性に関連付けられたデータインスタンスがクライアント装置のうち第1クライアント装置に読み込まれたことを示す値を含む、値をとってもよい。
従って、サーバ装置がどのデータインスタンスがクライアント装置にまだ読み込まれていないかをクライアント装置に知らせる場合、及び/または、クライアント装置が、新しいデータインスタンスを読み込む準備ができていることを示す場合、クライアント装置に関連付けられた状態属性の集合を用いて、クライアント装置がまだ読み込んでいないデータインスタンスをプッシュ配信してもよい。例えば、状態属性の値は、クライアントが対応するデータインスタンスをまだ読み込んでいない場合、「新規」でもよく、クライアントが対応するデータインスタンスを読み込んだ場合、「読み込み済み」でもよい。
好ましくは、状態属性の値は、サーバとクライアント装置の両方によって設定されてもよい。例えば、状態属性が「新規」に設定される場合はサーバによって設定され、状態属性が「未読み込み」に設定される場合はクライアントによって設定されてもよい。そのため、状態属性は、サーバとクライアント装置の両方が、サーバとクライアント装置との間で双方向通信を行うのに利用可能である。従って、状態属性は、サーバ及びクライアント装置が使用できる非常に単純な通信プロトコルを提供して、人を介さずにクライアント装置への新しいデータインスタンスの読み込みを自動的に連係させる。
状態属性の値は、クライアント装置によって自動的に行われるべき動作のリストを規定してもよい。例えば、クライアント装置は、状態属性の値が「新規」である場合、その状態属性に関連付けられたデータインスタンスの読み込みを自動的に開始してもよい。
妥当性チェックは、一般的に、サーバがサービスプロバイダから受信したデータインスタンスに対して実行するものであり、また、一般的に、サーバから受信したデータインスタンスに対してクライアント装置が実行することもある。サーバによって実行される妥当性チェックは、クライアントによって実行される妥当性チェックとは異なることがあるが、クライアント装置によって実行される妥当性チェックはいずれも、サーバ装置への通知なしに変更されてもよい。妥当性チェックは、例えば、データインスタンスが十分最新であるかの確認、または、データインスタンスに含まれるデータが所与の許容範囲よりも厳密に正しいと特定されるかについての確認を含んでもよい。
従って、クライアント装置のうち第1クライアント装置に関連付けられた状態属性の集合内の各状態属性は、さらに、状態属性に関連付けられたデータインスタンスが、例えば、クライアント装置のうち第1クライアント装置がデータインスタンスを読み込んだ後に行った妥当性チェックに合格しなかったため、クライアント装置のうち第1クライアント装置に拒否されたことを示す値を含む値をとってもよい。
従って、状態属性を用いて、クライアント装置は、データインスタンスがクライアント装置の妥当性チェックに合格しなかったことを自動的にサーバ装置にフラグで知らせることができる。このように、様々なクライアントは、特定のデータインスタンスがクライアントの妥当性チェックに合格しなかったことを知らせるための多数の異なる通信方法を有する必要はない。その代わりに、各クライアントに対して各データインスタンスの状態を中央ログに保持し、状態属性によってサーバ内に保持する。1つ以上のクライアントの妥当性チェックに合格しなかった結果、状態属性は、データレポジトリのどのデータインスタンスに注意が必要であるかを特定するのに用いられる。
状態属性に対応するデータインスタンスがクライアント装置の妥当性チェックに合格した場合、その状態属性の値は、例えば、クライアント装置によって、「有効」と設定されてもよい。データインスタンスがクライアント装置の妥当性チェックに合格しなかった場合、クライアントは、状態属性の値を「拒否」と設定してもよい。
好ましくは、サーバは、データフィードでサービスプロバイダからデータインスタンスを受信するように構成されてもよく、各データフィードは、データインスタンスのストリームを供給する。データレポジトリは、フィード、日付及びバージョン番号によってデータインスタンスを保存するように構成されてもよい。
サーバは、データフィードで受信されたデータインスタンスをデータレポジトリに保存する前に、例えば、データインスタンスが全て共通形式で保持されるように形式を整えるように構成されてもよい。好ましくは、クライアント装置は、サービスプロバイダが用いる様々な形式を扱わなければならないのではなく、共通形式を扱うように構成されてもよい。
データフィードの各連続するデータインスタンスは、データフィードの先行するデータインスタンスの更新情報であってもよく、データレポジトリは、連続するデータインスタンスと先行するデータインスタンスの両方を保存するように構成されてもよい。このように全てのデータインスタンスの履歴を保持することで、クライアント装置は、監査目的で、データインスタンスに関連付けられた状態属性を見ることによって、どの日付にどのデータインスタンスが利用可能であったか、及び、これらのデータインスタンスのうちどのデータインスタンスがクライアント装置によって実際に読み込まれたかを判定することができる。
好ましくは、クライアントレポジトリは、各クライアント装置にクライアントAPIを提供してもよく、当該クライアントAPIは、クライアント装置に対する状態属性の集合を含む。クライアントAPI(アプリケーションプログラミングインターフェース)は、例えば、どのデータフィードにクライアント装置が興味を持っているか、ひいては、データレポジトリのどのデータインスタンスについてクライアントAPIが状態属性を保存すべきかといった、クライアント装置に関する他の情報を含んでもよい。
クライアントAPIは、クライアント装置が、利用可能なデータフィードのリストの受信を開始することができる、リストフィード機能を提供してもよい。例えば、クライアント装置は、サーバにリストフィード要求を送信し、サーバは、クライアント装置が選択可能なデータフィードのリストをクライアント装置に返してもよい。
クライアントAPIは、クライアント装置が、クライアント装置に対する更新されたデータインスタンスのリストであって、クライアント装置に対する状態属性の値に基づいたリストの受信を開始することができる、リスト更新機能を提供してもよい。
クライアントAPIは、クライアント装置が、クライアント装置によって特定されたデータフィードの最新のデータインスタンスの受信を開始することができる、フェッチデータ機能を提供してもよい。例えば、クライアント装置は、サーバに特定のデータフィードを指定するフェッチデータ要求を送信し、サーバは、そのデータフィードの最新のデータインスタンスを送信してもよい。
クライアントAPIは、クライアント装置が、クライアント装置によって指定された日付のデータインスタンスのリストであって、クライアント装置に対する状態属性の値に基づいたリストの受信を開始することができる、リスト履歴機能を提供してもよい。
好ましくは、クライアントAPIは、クライアント装置が、リスト更新機能、フェッチデータ機能またはリスト履歴機能に関連してモードパラメータを規定することを許可してもよい。当該モードパラメータは、クライアントが当該モードパラメータに対応する状態属性値を有するデータインスタンスまたはデータインスタンスのリストの受信を望んでいることを示すものである。
例えば、クライアント装置は、サーバにリスト更新要求を送信し、当該要求は、「新規」の状態属性値に対応するモードパラメータを含み、サーバは、データインスタンスがまだクライアント装置によって読み込まれていないことを示す「新規」の状態属性値を有する全てのデータインスタンスのリストを返してもよい。
クライアント装置は、サーバにフェッチデータ要求を送信し、当該要求はモードパラメータを含み、モードパラメータは、クライアント装置が当該モードパラメータに対応する状態属性値を有するデータインスタンスの受信を望んでいることを示してもよい。
クライアント装置は、特定の日付及びモードパラメータを指定するリスト履歴要求であって、クライアント装置が当該モードパラメータに対応する状態属性値を有する日付のデータインスタンスのリストの受信を望んでいることを示すリスト履歴要求をサーバに送信してもよい。
クライアントAPIは、クライアント装置が特定のデータインスタンスについての状態属性の設定を開始することができる、設定機能を提供してもよい。例えば、クライアント装置は、一旦、データインスタンスがクライアント装置の妥当性チェックに合格すれば、当該データインスタンスに関連付けられた状態属性の値を「有効」と設定する設定要求を送信してもよい。
本発明の第2の態様によれば、添付の請求項13に記載のデータ配信方法が提供される。
データインスタンスに関連付けられた状態属性をクライアントレポジトリに保存することは、新しいデータインスタンスが関連するクライアント装置に対応する状態属性の集合に状態属性を追加することを含んでもよい。従って、状態属性の集合が全て、全てのデータインスタンスについての状態属性を含んでいなくてもよい。状態属性の集合は、状態属性の集合に関連付けられたクライアント装置が興味を持っているデータインスタンスの状態属性を含んでいればよい。
あるいは、クライアントレポジトリの状態属性の集合が全て、データレポジトリにある全てのデータインスタンスの状態属性を含んでもよい。
本発明の実施形態を、限定されない例として、添付の図面を参照して説明する。
本発明の実施形態に係るデータ配信システムの概略ブロック図である。
図1のデータ配信システムを用いて実施されるデータ配信方法のフロー図である。
異なるクライアント装置から異なる日に受信しているデータインスタンスを示す図である。
状態属性がとり得る様々な値の状態図である。
サーバによってクライアント装置に提供されるのに適したアプリケーションプログラミングインターフェース(API)の概略図である。
本発明の実施形態を図1の概略図を参照して説明する。図1は、サービスプロバイダ側110、サーバ120及びクライアント側140を含むデータ配信システムを示す。
サービスプロバイダ側110は、複数のサービスプロバイダ111〜114を含み、クライアント側140は、複数のクライアント装置141〜144を含む。サーバ120は、データインスタンス125を保存するデータレポジトリ121、及び、複数の状態属性の集合131〜134を保存するクライアントレポジトリ122を含む。
説明上、データインスタンス125は、8個のデータインスタンス1251〜1258を含むように示されている。状態属性の集合は、各クライアント装置に対して1つあり、状態属性の集合131は、クライアント装置141に対応し、状態属性の集合132は、クライアント装置142に対応し、状態属性の集合133はクライアント装置143に対応し、状態属性の集合134は、クライアント装置144に対応する。
サービスプロバイダ111〜114のそれぞれは、各データフィードF1〜F4をサーバ120に供給し、サーバ120は、データフィードを受信し、データフィードに含まれるデータインスタンス125をデータレポジトリ121に保存する。
サーバ120は、データレポジトリ121にデータインスタンスを保存する前に、受信したデータフィードF1〜F4内のデータインスタンスの形式を整えて、データインスタンスが全て共通形式で保持されるようにする。クライアント装置141〜144は全て、共通形式を扱うように構成される。
状態属性の集合はそれぞれ、関連付けられたクライアント装置に関連するデータインスタンス125のそれぞれに対する状態属性を含む。例えば、クライアント装置141に関連するデータインスタンスがデータインスタンス1251、1254及び1256である場合、クライアント装置141に対する状態属性の集合131は、3つのデータインスタンス1251、1254及び1256に対応する3つの状態属性を保存することになる。状態属性はそれぞれ、クライアント装置141に対する対応するデータインスタンスの状態を示す。
図2を参照すると、図1のデータ配信システムを利用するデータ配信方法は、まず、サービスプロバイダからデータインスタンスを受信すること(200)と、2番目に、データレポジトリにデータインスタンスを保存すること(210)と、3番目に、データインスタンスに関連付けられた状態属性を状態属性の集合に保存すること(220)と、を含み、当該状態属性は、新しいデータインスタンスが関連するクライアント装置に対応する状態属性の集合に保存される。
例えば、クライアント装置141及び143はデータフィードF1に興味を持っているが、クライアント装置142及び144は、データフィードF1に興味を持っていない場合、サービスプロバイダから新しいデータインスタンスを受信すること(200)は、サービスプロバイダからデータフィードF1においてデータインスタンス1252を受信することを含み、新しいデータインスタンスをデータレポジトリに保存すること(210)は、データレポジトリ121にデータインスタンス1252を保存することを含み、データインスタンスに関連付けられた状態属性を状態属性の集合に保存すること(220)は、状態属性の集合131及び133のそれぞれに状態属性を保存することを含んでもよい。
サーバは、例えば、どの状態属性の集合にデータインスタンス1252についての状態属性を追加する必要があるかを、各クライアント装置が興味を持っているデータフィードのリストに基づいて判定する。当該リストは、クライアント装置ごとに状態属性の集合とともに保存されてもよい。
図1のデータレポジトリ121へのデータインスタンスの保存の例を図3を参照して説明する。図3は、D1〜D3の3日間にわたってサーバ120がデータフィードF1〜F4から受信しているデータインスタンス1251〜1258を示す。
特に、図3は、第1日目D1に、データインスタンス1251、1253及び1258を(各サービスプロバイダ111、112及び114に対応する)各データフィードF1、F2及びF4から受信し、第2日目D2に、データインスタンス1254及び1257を(各サービスプロバイダ112及び113に対応する)各データフィードF2及びF3から受信し、第3日目D3に、データインスタンス1252、1255及び1256を受信したことを示す。データインスタンス1252は、データフィードF1から受信し、データインスタンス1255及び1256は、両方ともデータフィードF2から1日のうち互いに異なる時間に受信した。
各データインスタンスは、どのデータフィードから受信したか、どの日付に受信したか、及び、バージョン番号によってデータレポジトリ121に保存される。バージョン番号は、その日の間に何回更新されたデータインスタンスを受信したかによって設定される。従って、データインスタンス1251〜1255及び1257は、全てバージョン番号1を有しており、データインスタンス1256は、データフィードF2について日付D3に2回目に受信したデータインスタンスであるため、バージョン番号2を有している。各データインスタンスは、特定のデータフィード/日付/インスタンスに対応する記憶場所に、及び/または、特定のフィード/日付/インスタンスを示すメタデータと共に保存されてもよい。
データフィードの各連続するデータインスタンスは、データフィードの先行するデータインスタンスの更新情報である。従って、データインスタンス1252は、データフィードF1からの最新のデータであるため、データインスタンス1251に取って代わる。データインスタンス1256は、データフィードF2からの最新のデータであるため、データインスタンス1253、1254及び1255に取って代わる。データフィードF3及びF4の最新のデータは、それぞれ、データインスタンス1257及び1258である。データインスタンス1251、1253及び1255は全て取って代わられてしまったが、データインスタンス1251〜1258は全て、まだデータレポジトリに保持されており、(それらの状態属性は、状態属性の集合にまだ保持されており)、必要に応じて過去に用いられたデータインスタンスの状態について確認できるようになっている。
状態属性がとり得る様々な状態属性値の例を図4を参照して説明する。図4は、状態属性の集合に関連付けられたクライアント装置が興味を持っている新しいデータインスタンスをサーバが受信した結果、状態属性の集合において状態属性が作成される際に状態属性410がとり得る値を示す、状態図400である。
クライアント装置がデータインスタンスに興味を持っているかは、どのサービスプロバイダまたはデータフィードからデータインスタンスが受信されたかによって判定されてもよく、クライアント装置は、サービスプロバイダまたはデータフィードのリストによって当該サービスプロバイダまたはデータフィードに興味を持っていることが分かる。あるいは、クライアント装置は、単に、全てのデータインスタンスに興味を持っていると仮定してもよい。
まず、状態属性が作成されると、「新規」という値をとり、状態属性がその一部を形成する状態属性の集合に関連付けられたクライアント装置にとって、状態属性に対応するデータインスタンスが新しいことを示す。
クライアント装置がデータインスタンスを読み込む際、読み込みが成功した場合、状態属性値を「読み込み済み」に変更し、読み込みに失敗した場合、「失敗」に変更してもよい。
一旦、データインスタンスのクライアント装置への読み込みが成功すると、クライアント装置は、データインスタンスに妥当性チェックを行い、妥当性チェックに合格した場合、状態属性値を「有効」に変更し、妥当性チェックに合格しなかった場合、「拒否」に変更してもよい。
例えば、データインスタンス1252がデータレポジトリ121に保存された際にクライアント装置143に対応する状態属性の集合133において、新しい状態属性を作成してもよく、その後、データインスタンスをサービスプロバイダ111からデータフィードF1で受信する。新しい状態属性の作成の際、新しい状態属性は、クライアント装置143にとって新しいので、「新規」という値が割り当てられる。
続いて、クライアント装置143は、サーバ120から「新規」という状態属性値を読み取ることによって、新しいデータインスタンス1252が利用可能であることに気づき、クライアント143は、サーバ120からデータインスタンス1252を読み込む。状態属性は、読み込みが成功した場合、「読み込み済み」という値に変更され、例えば、サーバとクライアント装置との間の通信回線の故障によって、読み込みに失敗した場合、「失敗」という値に変更される。その後、再び読み込みを試みてもよい。
一旦、データインスタンス1252が読み込まれると、クライアントは、データインスタンス1252に妥当性チェックを行い、妥当性チェックに合格すると、状態属性の値を「有効」に変更し、例えば、クライアントがデータインスタンス1252のデータ許容範囲よりも近い許容範囲を有するデータを要求することによって、妥当性チェックに合格しなかった場合、「拒否」に変更する。例えば、クライアント装置が、データインスタンスが要件に対し十分であると最終的に判断する場合、または、クライアント装置が、データ妥当性要件を上げて、新しいデータ妥当性要件でデータインスタンスを再読み込みする場合、値は「有効」と「拒否」との間で変移してもよい。
サーバ120と各クライアント装置141〜143との間の通信は、各クライアント装置が提供したアプリケーションプログラミングインターフェース(API)によって、サーバ120が管理してもよい。クライアントAPIが動作する際に用いる状態属性値があるため、各クライアントのAPIは、クライアントに関連する状態属性の集合を含むと考えてもよい。
図5は、サーバ120によってクライアント装置141〜144のそれぞれに提供されるクライアントAPI500の概略図を示す。各クライアント装置は、クライアントAPIを用いて、クライアント装置に関連付けられた状態属性の集合に動作する様々なコマンドによってサーバ120と通信する。
各クライアント装置によって起動される様々なAPI機能について図5を参照して、クライアント装置141を例に説明する。
クライアントAPI500は、クライアント141が、クライアント装置が利用可能なデータフィードF1〜F4のリストの受信を開始できる、リストフィード機能を提供する。クライアント装置141は、例えば、ある種類またはあるカテゴリのデータインスタンスを供給するデータフィードF1及びF2など、クライアントが興味を持っているデータフィードの種類を特定する種類パラメータとともにリストフィード要求をサーバ120に送信することによって、リストフィード機能を起動する。
データフィードF1及びF2のリストは、クライアント装置141に返され、クライアントが興味を持っているフィードの記録としてクライアントAPIに自動的に保存される。あるいは、クライアント装置141は、一旦クライアント装置がフィードのリストを受信すると、クライアント装置がどのデータフィードに興味を持っているかをクライアントAPIに対して直接指定してもよい。
フィードF1及びF2は、クライアントが興味を持っているフィードのリストにあるので、サーバ120がフィードF1またはF2のうち1つから新しいデータインスタンスを受信する度に、状態属性がクライアント装置141に対する状態属性の集合131に追加される。
クライアントAPI500は、クライアント装置141が、例えば、クライアント装置に対する更新されたデータインスタンスのリストであって、クライアント装置に対する状態属性の集合131の状態属性値に基づいたリストの受信を開始できる、リスト更新機能も提供する。クライアント装置141は、随意的なモードパラメータとともにリスト更新要求をサーバ120に送信することによってリスト更新機能を起動する。当該モードパラメータは、例えば、「新規」という状態属性値を有するデータインスタンスなど、リストがある種類のデータインスタンスのみを含むように指定する。
データインスタンスのリストは、クライアント装置141に返され、例えば、図3を参照すると、データフィードF1及びF2の他のデータインスタンス1251、1253、1254及び1255はクライアント装置141によって既に読み込まれており、以前にクライアント装置141によって「読み込み済み」と状態属性値が設定された場合、リストは、データインスタンス1252及び1256を指定してもよい。従って、リスト更新機能により、クライアント装置141は、新たな2つのデータインスタンス1252及び1256がダウンロード可能になったことを知ることができる。
クライアントAPI500は、クライアント装置が、例えば、クライアント装置によって指定されたデータフィードの最新のデータインスタンスの受信を開始する、フェッチデータ機能も提供する。クライアント装置141は、必要なデータインスタンスの指定及び随意的なモードパラメータとともにフェッチデータ要求をサーバ120に送信することによってフェッチデータ機能を起動する。
必要なデータインスタンスは、データフィードによって指定されてもよく、例えば、クライアント装置がデータフィードF1からの最新のデータインスタンス1252を必要とする場合、値「F1」が要求に含まれてもよい。あるいは、図2に示す構造によってデータレポジトリ121へデータを保存するため、データフィード、データインスタンスの日付及びデータインスタンスのバージョンによって所与のデータインスタンスを完全に指定してもよい。
随意的なモードパラメータは、リスト更新機能と実質的に同じ機能を提供する。例えば、モードパラメータは、指定されたデータフィードのデータインスタンスのみがダウンロードされ、データインスタンスが指定された状態属性値を有するように指定してもよい。
クライアントAPI500は、クライアント装置が、例えば、クライアント装置によって指定された日付のデータインスタンスのリストであって、クライアント装置に対する状態属性値に基づいたリストの受信を開始する、リスト履歴機能も提供する。クライアント装置141は、日付の指定及び随意的なモードパラメータとともにリスト履歴要求をサーバ120に送信することでリスト履歴機能を起動する。
例えば、図3を参照すると、クライアント装置141は、D1の日付を特定するリスト履歴要求、及び、「有効」の状態属性値を指定するモードパラメータをサーバ120に送信してもよい。その後、サーバ120は、データインスタンス1251及び1253がクライアント装置141によって、以前、日付D1に読み込まれ、妥当性が認められたデータインスタンスであるため、これらのデータインスタンス1251及び1253を指定するリストを返すことになる。なお、データインスタンス1258は、データフィードF1またはF2ではなく、データフィードF4から受信されたデータインスタンスであり、クライアント装置141が興味を持っているデータフィードはデータフィードF1及びF2のみであるので、データインスタンス1258に対応する状態属性の集合131の状態属性がないため、データインスタンス1258は含まれない。
クライアントAPI500は、クライアント装置が、特定のデータインスタンスの状態属性値の設定を開始できる、設定機能も提供する。クライアント装置141は、データインスタンスの指定及び設定する状態属性値とともに設定要求をサーバ120に送信することで設定機能を起動する。
例えば、データインスタンス1252の読み込みに成功した後、クライアント装置141は、データインスタンス1252を指定するためのデータフィードF1、日付D3及びバージョン1を指定する設定要求、及び、指定されたデータインスタンス1252に関連付けられた状態属性値を「読み込み済み」に変更すべきであることを示すための値「読み込み済み」をサーバ120に送信する。
一旦クライアント装置がデータインスタンス1252に妥当性チェックを実行すると、クライアント装置141が設定要求を再度送信し、必要に応じて、状態属性値を「有効」または「拒否」に変更してもよい。
上記APIの様々な機能は、クライアント装置がデータレポジトリ121のデータインスタンスを問い合わせるのに用いてもよい。さらに詳細な要求をするために、更なるパラメータをAPI要求に含めてもよい。当業者に明らかなように、例えば、データインスタンスの更新または削除、または、データインスタンスに関連付けられたメタデータの更新または削除など、更なるAPI機能を提供してもよい。
本発明のデータ処理システム及び方法は、様々なサービスプロバイダから取得し、様々なクライアント装置に供給する多種多様なデータ種類に適用されるが、経時的に頻繁に更新され、クライアント装置が妥当性チェックを行う種類のデータに特に適している。
例えば、特定のクライアントが、他のクライアントにとって必要ではないクエリを実行できる必要がある場合、様々なクライアントAPIから供給される通信プロトコルは、互いに異なっていてもよい。
サービスプロバイダは、例えば、財務ベンチマークデータプロバイダであってもよく、データインスタンスは、例えば、財務ベンチマークデータであってもよく、クライアント装置は、財務ベンチマークデータの顧客であってもよい。
添付の請求の範囲に含まれる範囲内の更なる実施形態も、当業者に明らかであろう。