(57)【特許請求の範囲】
【請求項１】
計算機に入力されるストリームデータを１次情報として取得し、該取得した１次情報から予め設定した外部データの情報に基づいて２次情報を生成するストリームデータ処理方法において、
前記計算機にストリームデータの処理を記述するクエリを予め登録する処理と、
前記ストリームデータの値の特徴を表すストリームデータの特性情報を受け付ける処理と、
前記ストリームデータを監視することにより監視情報を取得する処理と、
前記計算機が前記クエリを参照して、前記外部データの一部または全部を前記計算機に予め設定したストリームプレディクトキャッシュへ予め読み込む処理と、
前記計算機がストリームプレディクトキャッシュへ読み込んだ外部データと、前記ストリームデータとを突き合わせることにより、前記２次情報を生成する処理と、
を含み、
前記外部データを前記ストリームプレディクトキャッシュへ予め読み込む処理は、
前記ストリームデータの特性情報と、前記取得した監視情報とを用いて、前記ストリームプレディクトキャッシュへ予め読み込む前記外部データを決定することを特徴とするストリームデータ処理方法。
【請求項２】
請求項１に記載のストリームデータ処理方法において、
前記外部データをストリームプレディクトキャッシュへ読み込む処理は、
前記予め登録した前記クエリから、前記外部データに関する記述部分を抜き出して、前記ストリームプレディクトキャッシュへ外部データを取得するためのストリームプレディクトキャッシュデータ取得命令を生成する処理をさらに含み、
前記生成したストリームプレディクトキャッシュデータ取得命令を発行して前記外部データを読み込むことを特徴とするストリームデータ処理方法。
【請求項３】
請求項２に記載のストリームデータ処理方法において、
前記予め登録された前記クエリから取得した突き合わせ対象のリレーション名と、前記ストリームプレディクトキャッシュにおける外部データの格納場所を決定するための条件を表す格納場所判別条件と、前記ストリームプレディクトキャッシュにおける外部データの前記格納場所と、前記ストリームプレディクトキャッシュの外部データに係る情報が更新された時刻情報を表すタイムスタンプと、をストリームプレディクトキャッシュ管理情報に保持する処理をさらに含むことを特徴とするストリームデータ処理システム。
【請求項４】
請求項３に記載のストリームデータ処理方法において、
前記ストリームプレディクトキャッシュデータ取得命令を生成する処理は、
前記外部データに関する記述部分を抜き出し、かつ前記ストリームプレディクトキャッシュ管理情報を参照し、前記格納場所判別条件を付加することにより前記ストリームプレディクトキャッシュデータ取得命令を生成することを特徴とするストリームデータ処理方法。
【請求項５】
請求項４に記載のストリームデータ処理方法において、
前記特性情報を入力する前記ストリームデータの名前を表すストリーム名と、前記特性情報を入力するカラムの名前を表すカラム名と、タイムスタンプに関する条件を表す時間に関する条件と、前記カラム名に対応する値の特性を表す値に関する条件カラムとを、ストリームデータ特性管理情報に保持する処理をさらに含むことを特徴とするストリームデータ処理方法。
【請求項６】
請求項５に記載のストリームデータ処理方法において、
前記ストリームプレディクトキャッシュデータ取得命令を生成する処理は、
前記ストリームデータ特性管理情報を参照し、前記ストリームデータ特性管理情報のタイムスタンプカラムの時刻情報から、前記ストリームデータ特性管理情報の時間に関する条件カラムの条件を満たす前記ストリームデータ特性管理情報の値に関する条件カラムの条件を適用することを特徴とするストリームデータ処理方法。
【請求項７】
請求項５に記載のストリームデータ処理方法において、
前記ストリームプレディクトキャッシュデータ取得命令を生成する処理は、
前記ストリームデータにおける時刻情報に対応する条件である時間付き制約情報を保持するストリームデータ特性管理情報を参照し、入力された前記ストリームデータが前記時間付き制約情報に違反していないか否かを判定することを特徴とするストリームデータ処理方法。
【請求項８】
請求項４に記載のストリームデータ処理方法において、
前記監視情報を取得する処理は、
前記ストリームデータの監視対象のストリーム名と、監視対象の前記ストリームデータのカラム名と、前記監視情報を取得した時刻情報を表すタイムスタンプとを、監視情報管理部に保持することを特徴とするストリームデータ処理方法。
【請求項９】
請求項８に記載のストリームデータ処理方法において、
前記監視情報管理部を参照し、前記監視情報から前記ストリームデータが必要と予測できる外部データの一部若しくは全部を取得するための条件である予測条件を算出する処理をさらに含むことを特徴とするストリームデータ処理方法。
【請求項１０】
請求項９に記載のストリームデータ処理方法において、
前記監視情報管理部を参照し、前記データレートが前記データレート閾値未満の場合は、前記外部データを取得しないことを特徴とするストリームデータ処理方法。
【請求項１１】
請求項４に記載のストリームデータ処理方法において、
前記特性情報を入力する前記ストリームデータの名前を表すストリーム名と、前記特性情報を入力するカラムの名前を表すカラム名と、タイムスタンプに関する条件を表す時間に関する条件と、前記カラム名に対応する値の特性を表す値に関する条件カラムとを、ストリームデータ特性管理情報に保持する処理と、
前記ストリームデータの監視対象のストリーム名と、監視対象の前記ストリームデータのカラム名と、前記監視情報を取得した時刻情報を表すタイムスタンプとを、監視情報管理部に保持する処理と、
前記ストリームデータ特性管理情報、及び前記監視情報管理部を参照し、該カラムがシーケンシャル属性を有しているか判定し、前記シーケンシャル属性の場合、前記監視情報管理部の現在の値カラムの値よりも小さな値をストリームプレディクトキャッシュから削除する処理と、
を含むことを特徴とするストリームデータ処理方法。
【請求項１２】
請求項４に記載のストリームデータ処理方法において、
予め登録された前記クエリと、前記クエリの名前と、前記クエリが使用可能なメモリ量の上限を表すメモリ上限値とを登録クエリ管理情報に保持する処理を含むことを特徴とするストリームデータ処理方法。
【請求項１３】
請求項１２に記載のストリームデータ処理方法において、
前記ストリームプレディクトキャッシュ管理情報を参照し、メモリに格納される前記ストリームプレディクトキャッシュにおいて前記格納場所判別条件を満たすメモリ使用量を計算し、前記登録クエリ管理情報を参照して、前記ストリームプレディクトキャッシュのメモリ使用量が前記登録クエリ管理情報のメモリ上限値よりも大きいか否かを判定する処理を含むことを特徴とするストリームデータ処理方法。
【請求項１４】
請求項１３に記載のストリームデータ処理方法において、
前記ストリームプレディクトキャッシュのメモリ使用量が前記登録クエリ管理情報のメモリ上限値よりも大きいか否かを判定し、前記メモリ上限値よりも大きいと判定した場合には、前記メモリ上限値に対応する外部データ量を計算し、前記外部データの各タプルの距離が小さいものから前記メモリ上限値に対応する前記外部データ量だけ格納することを特徴とするストリームデータ処理方法。
【請求項１５】
請求項１４に記載のストリームデータ処理方法において、
前記ストリームプレディクトキャッシュ管理情報を参照し、前記ストリームプレディクトキャッシュ管理情報の格納場所判別条件カラムの条件から除外された前記ストリームプレディクトキャッシュの外部データを削除し、前記ストリームプレディクトキャッシュ管理情報の格納場所判別条件カラムの条件に新規に追加されたストリームプレディクトキャッシュの外部データを前記計算機のメモリまたはディスクに格納することを特徴とするストリームデータ処理方法。
【請求項１６】
請求項１５に記載のストリームデータ処理方法において、
前記ストリームプレディクトキャッシュは、前記計算機のメモリ上に設定されたストリームプレディクトキャッシュオンメモリと、前記計算機のディスク上に設定されたストリームプレディクトキャッシュオンディスクと、を有し、
前記２次情報を生成する処理は、
前記ストリームプレディクトキャッシュ管理情報を参照し、格納場所判別条件から突き合わせを行う外部データが存在する前記ストリームプレディクトキャッシュの格納場所を判定する処理と、
前記判定結果がストリームプレディクトキャッシュオンメモリの場合には、ストリームプレディクトキャッシュオンメモリから該当する外部データを読み込む処理と、
前記判定結果がストリームプレディクトキャッシュオンディスクの場合には、ストリームプレディクトキャッシュオンディスクから該当する外部データを読み込む処理と、
前記判定結果がストリームプレディクトキャッシュオンメモリ及びストリームプレディクトキャッシュオンディスクの何れにも存在しない場合には、該当する外部データを読み込む処理と、
前記読み込んだ外部データと前記ストリームデータを突き合わせる処理と、を含むことを特徴とするストリームデータ処理方法。
【請求項１７】
請求項４に記載のストリームデータ処理方法において、
前記格納場所管理部は、ストリームプレディクトキャッシュクリア命令を受け付け、前記ストリームプレディクトキャッシュに格納された外部データをクリアし、前記外部データを再取得する命令を発行することを特徴とするストリームデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リアルタイムストリームデータと外部データとの連携が可能なストリームデータ処理システムの構成方法、及び該ストリームデータ処理システムにおけるリアルタイムデータと外部データの連携方法に関する。
【背景技術】
【０００２】
ストレージ装置に格納されたデータに対する処理を実行するデータベース管理システム（以下、ＤＢＭＳとする）に対して、時々刻々と到着するデータをリアルタイム処理するデータ処理システムに対する要求が高まっている。例えば、株式の売買を行うシステムでは、株価の変動にいかに迅速に反応できるかがシステムの最重要の課題の一つであり、従来のＤＢＭＳのように株式のデータを一旦記憶装置に格納してから、該格納データに関して検索を行うような方法では、株価変動のスピードに即応できず、ビジネスチャンスを逃してしまうことになりかねない。例えば、特許文献１では、記憶されているクエリが周期的に実行される機構を開示しているが、株価のようにデータが入ってきた瞬間にクエリを実行することが重要なリアルタイムデータ処理には適用が困難であった。
【０００３】
このような時々刻々と到着するデータをストリームデータと定義し、該ストリームデータのリアルタイム処理に好適なデータ処理システムとして、ストリームデータ処理システムが提案されている。例えば、非特許文献１には、ストリームデータ処理システムＳＴＲＥＡＭが開示されている。
【０００４】
ストリームデータ処理システムでは、従来のＤＢＭＳとは異なり、まずクエリ（問い合わせ）をシステムに登録し、データの到来と共に該クエリが継続的に実行される。前記ＳＴＲＥＡＭでは、ストリームデータを効率的に処理するために、ストリームデータの一部を切り取るスライディングウィンドウと呼ばれる概念を導入している。スライディングウィンドウ指定を含むクエリの記述言語の好適な例としては非特許文献１に開示されているＣＱＬ（Ｃｏｎｔｉｎｕｏｕｓ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）をあげることができる。ＣＱＬは、ＤＢＭＳで広く用いられているＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）のＦＲＯＭ句に、ストリーム名に続いて括弧を用いることにより、スライディングウィンドウを指定する拡張が施されている。ＳＱＬに関しては、非特許文献２に開示されるものが知られている。上記スライディングウィンドウを指定する代表的な方法としては、（１）切り取るデータ列の数を指定する方法、そして（２）切り取るデータ列の時間間隔を指定する方法の２種類をあげることができる。例えば、非特許文献１の第二節に示された“Ｒｏｗｓ  ５０  Ｐｒｅｃｅｄｉｎｇ”は５０行分のデータを処理対象として切り取る（１）の好適な例、そして“Ｒａｎｇｅ  １５  Ｍｉｎｕｔｅｓ  Ｐｒｅｃｅｄｉｎｇ”は１５分間分のデータを処理対象として切り取る（２）の好適な例である。スライディングウィンドウによって切り取られたストリームデータはメモリ上に保持され、クエリ処理に使用される。
【０００５】
ストリームデータ処理システムは、ファイナンシャルアプリケーション、交通情報システム、計算機システム管理に代表される、リアルタイム処理が必要とされる応用に対する適用が期待されている。
【特許文献１】米国特許第５４９５６００号公報
【非特許文献１】Ｒ．  Ｍｏｔｗａｎｉ，  Ｊ．  Ｗｉｄｏｍ，  Ａ．  Ａｒａｓｕ，  Ｂ．  Ｂａｂｃｏｃｋ，  Ｓ．  Ｂａｂｕ，  Ｍ．  Ｄａｔａｒ，  Ｇ．  Ｍａｎｋｕ，  Ｃ．  Ｏｌｓｔｏｎ，  Ｊ．  Ｒｏｓｅｎｓｔｅｉｎ，  ａｎｄ  Ｒ．  Ｖａｒｍａ著：“Ｑｕｅｒｙ  Ｐｒｏｃｅｓｓｉｎｇ，  Ｒｅｓｏｕｒｃｅ  Ｍａｎａｇｅｍｅｎｔ，  ａｎｄ  Ａｐｐｒｏｘｉｍａｔｉｏｎ  ｉｎ  ａ  Ｄａｔａ  Ｓｔｒｅａｍ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ”，Ｉｎ  Ｐｒｏｃ．  ｏｆ  ｔｈｅ  ２００３  Ｃｏｎｆ．  ｏｎ  Ｉｎｎｏｖａｔｉｖｅ  Ｄａｔａ  Ｓｙｓｔｅｍｓ  Ｒｅｓｅａｒｃｈ  （ＣＩＤＲ），  Ｊａｎｕａｒｙ  ２００３
【非特許文献２】Ｃ．  Ｊ．  Ｄａｔｅ，  Ｈｕｇｈ  Ｄａｒｗｅｎ著：“Ａ  Ｇｕｉｄｅ  ｔｏ  ＳＱＬ  Ｓｔａｎｄａｒｄ  （４ｔｈ  Ｅｄｉｔｉｏｎ）”，Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ  Ｐｒｏｆｅｓｓｉｏｎａｌ；  ４  ｅｄｉｔｉｏｎ  （Ｎｏｖｅｍｂｅｒ  ８，  １９９６），ＩＳＢＮ：  ０２０１９６４２６０
【非特許文献３】Ｓｔｒａｔｉｓ  Ｖｉｇｌａｓ，Ｊｅｆｆｒｅｙ  Ｆ．  Ｎａｕｇｈｔｏｎ著：“Ｒａｔｅ−ｂａｓｅｄ  ｑｕｅｒｙ  ｏｐｔｉｍｉｚａｔｉｏｎ  ｆｏｒ  ｓｔｒｅａｍｉｎｇ  ｉｎｆｏｒｍａｔｉｏｎ  ｓｏｕｒｃｅｓ”，Ｉｎ  Ｐｒｏｃ．  ｏｆ  ＳＩＧＭＯＤ  Ｃｏｎｆｅｒｅｎｃｅ  ２００２，ｐｐ．  ３７−４８
【発明の開示】
【発明が解決しようとする課題】
【０００６】
時々刻々と到着するストリームデータを利用するユーザのために、ストリームデータを有意な情報に変換する必要が生じる場合がある。例えば、ストリームデータが製品の製造工程において、製品に付いているＲＦＩＤタグをＲＦＩＤリーダで読み込んだデータ、あるいはＲＦＩＤリーダを管理する製造管理サーバが出力するデータである場合、ストリームデータには製品のコードと製造工程の情報などが含まれている。製品のコードは、ユーザにとって理解しにくい情報であるため、ストリームデータ処理システムがデータベースに問い合わせを行って製品のコードから製品名などの有意な情報を取得し、この有意な情報をユーザへ提供する必要がある。あるいは、ストリームデータが、センサノードが出力するデータ、あるいはセンサネットを管理するセンサネットサーバが出力するデータである場合、ストリームデータとしてセンサノードのＩＤとセンシングデータが含まれている。センサノードのＩＤは、ユーザにとって理解しにくい情報であるため、ストリームデータ処理システムがデータベースに問い合わせを行ってセンサノードの所在と種類などの有意な情報を取得し、この有意な情報をユーザへ提供する必要がある。
【０００７】
上記従来例のストリームデータ処理システムでは、上述のようなストリームデータの変換処理（ストリームデータ処理）をストリームデータの受信のたびに実行することになり、次のような問題が生じる。
【０００８】
（１）データベース（以下、外部データという）へのアクセスは、処理に時間がかかるため、ストリームデータ処理システムが膨大な量のストリームデータを処理する場合には、データベースへのアクセスを行う時間がボトルネックとなる。この結果、ストリームデータの量が多くなると、リアルタイムでユーザに有意な情報を提供することができない、という問題がある。
【０００９】
（２）ストリームデータ処理システム上に外部データの複製を保存しておきストリームデータを有意な情報に変換する処理を高速化する手法が考えられるが、外部データの複製全部をストリームデータ処理システム上に保存することは、データベースの複製を保存するための計算機リソースが必要になって非効率であり、また、データベースの容量が大きい場合にはストリームデータ処理システムに複製を保存することが不可能であることも考えられる。このため、有意な情報をリアルタイムで提供する処理性能を保ちつつ、外部データの複製量を減少させることも課題となっていた。
【００１０】
（３）外部データが更新された場合にも、ストリームデータ処理システム上の外部データの複製に対し更新を反映し、ストリームデータ処理を行えることも課題となっていた。
【００１１】
本発明は上記問題点に鑑みてなされたものであり、本発明の第１の目的は、外部データと連携し、かつリアルタイムにストリームデータ処理を行うシステムを提供することである。また、本発明の第２の目的は、リアルタイム処理を保ちつつ、外部データの複製量を減少させるシステムを提供することである。最後に、本発明の第３の目的は、外部データが変更された場合にも、ストリームデータ処理システム上の外部データの複製に対し更新を反映し、ストリームデータ処理を正確に行えるシステムを提供することである。
【課題を解決するための手段】
【００１２】
本発明は、前記第１の目的を達成するため、本発明では必要に応じて外部データの一部、若しくは全部を記憶装置に設けたストリームプレディクトキャッシュに複製し、前記複製を用いてストリームデータと連携する機構を設ける。次に、第２の目的を達成するため、本発明ではユーザ、若しくはアプリケーションによってシステムに登録されたストリームデータの該属性値における時間と値域の組合せによる２次元の条件を記述したストリームデータ特性情報を用いて外部データの取得対象を絞り込むことにより、リアルタイム処理を保ちつつ、外部データの複製量を減少させる機構を提供する。
【００１３】
さらに、第２の目的を達成するための別の手段として、本発明では前記ストリームデータ特性情報、及びストリームデータの監視を行うことにより取得した監視情報を用いることにより、ストリームデータと連携する必要がある外部データの取得対象を予測する機構を提供する。
【００１４】
最後に、第３の目的を達成するため、本発明ではユーザ、若しくはアプリケーションによる外部データの複製の更新命令を受け付け、ストリームデータ処理システム上の外部データの複製に対し更新を反映し、ストリームデータ処理を行える機構を提供する。また、第３の目的を達成する別の手段として、外部データの変更を検知し、変更時間を付与したデータを生成し、ストリームデータ処理システムに送信することにより、ストリームデータ処理システム上の外部データの複製に対し更新を反映し、ストリームデータ処理を行える機構を提供する。
【発明の効果】
【００１５】
本発明を用いることにより、高信頼・高可用のリアルタイムデータ処理が可能なストリームデータ処理システムが実現できる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態について説明する。
【００１７】
図１は本発明の一実施形態が適用されたストリームデータ処理システム、および関連するシステム構成の概略図である。
【００１８】
図１において、記憶装置１０４を有するデータ管理システム１０１は、ネットワーク１０３を介してストリームデータ処理システム１０２に接続されている。ネットワーク１０３は、イーサネット（登録商標）、光ファイバ、ＦＤＤＩ（Fiber Distributed Data Interface）で接続されるローカルエリアネットワーク（ＬＡＮ）、若しくはＬＡＮよりも低速なインターネットを含んだワイドエリアネットワーク（ＷＡＮ）でも差し支えない。また、データ管理システム１０１、及びストリームデータ処理システム１０２はパーソナルコンピュータ、ワークステーションなどの任意のコンピュータシステムで構成される。すなわち、データ管理システム１０１は、データベース（データ１１４）の管理を行うＤＢＭＳ（DataBase Managemant System）を実行する計算機であり、ストリームデータ処理システム１０２はストリームデータ１１１を有意な情報に変換してクライアント計算機１１６へ提供するストリームデータ処理を実行する計算機（またはサーバ）である。
【００１９】
そして、ネットワーク１０３には、ストリームデータをストリームデータ処理システム１０２へ出力する計算機１２が接続される。計算機１２は、工場などで生産される製品の管理を行うものである。本実施形態の計算機１２では、製品が製造された製造ラインの識別子と製品の識別子と製造された日時を対にした情報をストリームデータとして出力する。また、計算機１２が管理する工場では複数の製造ラインで複数種の製品が製造されるものとする。そして、計算機１２は、各製造ラインで生産された製品の情報を、ＲＦＩＤリーダやバーコードリーダなどを介して取得し、複数の製造ラインで得られた製品の情報をリアルタイムでストリームデータ処理システム１０２へ送信する。なお、計算機１２では、ストリームデータ１１１を出力するアプリケーション１３が実行される。また、ストリームデータ処理システム１０２は、図示のようにＲＦＩＤリーダ１０やセンサノード１１が接続され、ストリームデータ１１１を受信するようにしても良い。
【００２０】
ここで、本実施形態で扱うストリームデータは、映像や音声の配信で用いられるストリームとは異なり、ひとつのストリームデータが有意な情報に対応するものである。また、ストリームデータ処理システム１０２が計算機１２からストリームデータ処理システム１０２が受信するストリームデータは、連続的あるいは間欠的であり、ストリームデータ毎に異なる製品の情報や異なる要素が含まれる。
【００２１】
ストリームデータ処理システム１０２は、クエリ管理部１０５、ストリームデータ監視情報管理部１０６、格納場所管理部１０７、ストリームデータ特性管理部１０８、記憶装置１０９、突き合わせ部１１２から構成される。
【００２２】
クエリ管理部１０５は、ユーザ１１５の操作によって、クライアント計算機１１６上で実行されるアプリケーションにより登録されたクエリを管理している。次に、ストリームデータ監視情報管理部１０６は、前記ストリームデータ処理システム１０２に入力されるストリームデータ１１１を監視し、監視情報（ストリームデータ１１１の統計情報など）を取得し、管理している。次に、ストリームデータ特性管理部１０８は、ユーザ１１５、またはクライアント計算機１１６上で実行されるアプリケーション１１７により登録された処理時刻以降のストリームデータの値の特徴であるストリームデータの特性情報を管理している。
【００２３】
格納場所管理部１０７は、前記クエリ管理部１０５で管理されている登録クエリ情報、及び前記ストリームデータ監視情報管理部１０６で管理されているストリームデータ監視情報、前記ストリームデータ特性管理部１０８で管理されているストリームデータ特性情報の何れか、または両方を用いて、前記データ管理システム１０１上にある記憶装置１０４のデータ１１４のうち、前記ストリームデータ処理システム１０２に取得するデータを決定する。以下では、ストリームデータ処理システム１０２がデータ管理システム１０１から取得したデータを格納する記憶装置１０９の領域をストリームプレディクトキャッシュ（以下、ＳＰＣ：Ｓｔｒｅａｍ  Ｐｒｅｄｉｃｔ  Ｃａｃｈｅ）１１０と呼ぶ。そして、ストリームデータ処理システム１０２は、前記データ管理システム１０１に対し、ストリームプレディクトキャッシュ取得命令（ＳＰＣ取得命令）を発行する。
【００２４】
前記データ管理システム１０１は、前記格納場所管理部１０７において発行されたＳＰＣ取得命令を入力とし、記憶装置１０４中のデータ１１４において、一部または全部を前記ストリームデータ処理システム１０２に出力する。前記格納場所管理部１０７は、取得データを前記ＳＰＣ１１０（図２のＳＰＣ＿ＯＭ２１７及びＳＰＣ＿ＯＤ２１９）として、記憶装置１０９上に格納する。記憶装置１０９は、メモリ、ディスク装置など任意の記憶媒体とする。
【００２５】
突き合わせ部１１２は、前記ストリームデータ１１１、および前記ＳＰＣ１１０の突き合わせを行い、有意な情報としての突き合わせ結果１１３をクライアント計算機１１６へ出力する。
【００２６】
図１において、本発明の概要を説明する。ストリームデータ処理システム１０２は、ユーザ１１５が登録したクエリとストリームデータ１１１の特性に基づいて、入力されるストリームデータ１１１と、データ管理システム１０１のデータ１１４の突き合わせを行う。
【００２７】
ユーザ１１５は計算機１１６のアプリケーション１１７により、クエリ管理部１０５にクエリを登録し、ストリームデータ１１１の特性をストリームデータ特性管理部１０８に登録しておく。ここで、ストリームデータの特性とは、例えば、ストリームデータのＩＤの値は１ずつ増加する、という特性や、ある属性の値は一定範囲内であるという特性や、ある時間帯に到着するストリームデータのある属性の値は一定範囲内である、といった特性を指す。
【００２８】
ストリームデータ監視情報管理部１０６は、ストリームデータ処理システム１０２が受信したストリームデータ１１１を監視し、監視によって得られたストリームデータ１１１の傾向に関する情報を監視情報として保持する。ストリームデータ１１１の傾向に関する情報は、例えば、ストリームデータ１１１のデータレートや、ある属性の値の分布などの統計情報である。格納場所管理部１０７は、ストリームデータ特性管理部１０８に設定されたストリームデータ１１１の特性と、ストリームデータ監視情報管理部１０６に保持された傾向に関する情報を参照し、突き合わせを行うためにＳＰＣ１１０に格納すべきデータを決定する。ＳＰＣ１１０には、格納場所管理部１０７が決定したストリームデータ処理システム１０２のデータ１１４を予め読み出して、格納しておく。
【００２９】
突き合わせ部１１２は、ＳＰＣ１１０を参照することで、受信したストリームデータ１１１と予め先読みしておいたデータ１１４とを突き合わせることができ、リアルタイムで突き合わせ結果１１３をユーザ１１５（計算機１１６）へ提供することができる。
【００３０】
すなわち、本発明では、ユーザ１１５によって入力されたストリームデータ１１１の特性と、ストリームデータ監視情報管理部１０６でモニタした統計情報から、突き合わせを行うためにＳＰＣ１１０へ先読みしておくデータを格納場所管理部１０７で決定する。これにより、突き合わせに必要なデータ１１４の量を最小限としながら、外部データ（データ管理システム１０１のデータ１１４）と連携し、かつリアルタイムにストリームデータ処理をすることが可能となるのである。
【００３１】
図２は、本発明を適用した一実施形態のストリームデータ処理システム、および関連するシステムの構成を示すブロック図である。
【００３２】
前記ストリームデータ処理システム１０２において、前記クエリ管理部１０５は、クエリ設定部２０３、メモリ上限設定部２０４、登録クエリ管理テーブル２０５から構成される。
【００３３】
クエリ設定部２０３は、ユーザ１１５、またはクライアント計算機１１６上で実行されるアプリケーション１１７からコマンド入力部２２９を通してクエリの登録・変更を行うインターフェース（以下、Ｉ／Ｆ）を備える。クエリの登録・変更が行われた場合、登録クエリ管理テーブル２０５を更新し、ＳＰＣ管理部２１２に変更通知を送信する。
【００３４】
メモリ上限設定部２０４は、前記ユーザ１１５、または前記クライアント計算機１１６上で実行される前記アプリケーション１１７から前記コマンド入力部２２９を通して該クエリで利用可能なメモリ上限値を設定するＩ／Ｆを備える。メモリ上限値の入力が行われた場合、登録クエリ管理テーブル２０５を更新し、ＳＰＣ管理部２１２に変更通知を送信する。
【００３５】
登録クエリ管理テーブル２０５は、前記クエリ設定部２０３、及び前記メモリ上限設定部２０４において設定された情報を保持するテーブルである。
【００３６】
前記ストリームデータ監視情報管理部１０６は、ストリームデータ監視部２０７、データレート閾値・更新頻度設定部２０６、監視情報管理テーブル２０８から構成される。
【００３７】
ストリームデータ監視部２０７は、前記登録クエリ管理テーブル２０５を参照し、監視が必要なストリームデータ１１１を監視する。ストリームデータ監視部２０７は、監視の結果、監視情報（ストリームデータ１１１の統計情報）を取得した場合、監視情報管理テーブル２０８を更新し、ＳＰＣ管理部２１２に変更通知を送信する。ここで、監視するストリームデータ１１１は必要なものに限定せず、すべてのストリームデータの監視を行ってもよい。
【００３８】
データレート閾値・更新頻度設定部２０６は、前記監視が必要なストリームデータ１１１に対し、データレートによりリレーションデータ２２６をキャッシュするか判断する閾値を設定し、及び監視情報を更新する頻度（間隔）を登録・変更するＩ／Ｆを備える。データレート閾値、及び更新頻度が登録・変更された場合、データレート閾値・更新頻度設定部２０６は、監視情報管理テーブル２０８を更新し、ＳＰＣ管理部２１２に変更通知を送信する。なお、図２において、データ管理システム１０１のリレーションデータ２２６とＸＭＬデータ２２７が図１のデータ１１４に相当する。
【００３９】
監視情報管理テーブル２０８は、前記データレート閾値・更新頻度設定部２０６、及びストリームデータ監視部２０７において設定または取得した情報を保持するテーブルである。
【００４０】
前記ストリームデータ特性管理部１０８は、ストリームデータ特性設定部２１４、時間付き制約設定部２１３、ストリームデータ特性管理テーブル２１５から構成される。
【００４１】
ストリームデータ特性設定部２１４は、前記ユーザ１１５、または前記クライアント計算機１１６上で実行される前記アプリケーション１１７から前記コマンド入力部２２９を通して該ストリームデータ１１１の特性情報を入力するＩ／Ｆを備える。ストリームデータ１１１の特性情報の入力が行われた場合、ストリームデータ特性管理テーブル２１５を更新し、ＳＰＣ管理部２１２に変更通知を送信する。
【００４２】
時間付き制約設定部２１３は、ストリームデータ１１１の該当カラムにおける時刻情報に対応する条件である時間付き制約を入力するＩ／Ｆを備える。時間付き制約条件の入力が行われた場合、時間付き制約設定部２１３はストリームデータ特性管理テーブル２１５を更新し、ＳＰＣ管理部２１２、及び時間付き制約違反判定部２２１に変更通知を送信する。
【００４３】
ストリームデータ特性管理テーブル２１５は、前記ストリームデータ特性設定部２１４、及び前記時間付き制約設定部２１３において設定された情報を保持するテーブルである。
【００４４】
前記格納場所管理部１０７は、ＳＰＣ管理部２１２、ＳＰＣ管理テーブル２１１、ＳＰＣ取得命令発行部２０９、ＳＰＣクリア命令発行部２１０、ＳＰＣ情報設定部２２８から構成される。
【００４５】
ＳＰＣ取得命令発行部２０９は、前記ＳＰＣ管理部２１２からＳＰＣ取得要求を受信した場合、前記データ管理システム１０１に対し、前記ストリームデータ１１１が必要とする外部データ（データ管理システム１０１のリレーションデータ２２６）の一部若しくは全部であるＳＰＣデータを取得するＳＰＣ取得命令を発行する。なお、ＳＰＣデータは、記憶装置１０９上のＳＰＣ＿ＯＭ２１７またはＳＰＣ＿ＯＤ２１９に格納（キャッシュ）されているデータを示す。なお、記憶装置１０９は、メモリ２１６とディスク２１８で構成した例を示す。また、ＳＰＣ１１０は、アクセス速度は速いが容量の小さいメモリ２１６上のＳＰＣ＿ＯＭ２１７と、アクセス速度は遅いが容量の大きいディスク２１８上のＳＰＣ＿ＯＭ２１９により階層的に構成され、優先度の高いデータをＳＰＣ＿ＯＭ２１７に格納し、優先度の低いデータをＳＰＣ＿ＯＤ２１９に格納する。
【００４６】
ＳＰＣクリア命令発行部２１０は、ＳＰＣ＿ＯＭ２１７またはＳＰＣ＿ＯＤ２１９にキャッシュされたデータの元であるリレーションデータ２２６がデータ管理システム１０１で更新された場合、前記ユーザ１１５、または前記クライアント計算機１１６上で実行される前記アプリケーション１１７から前記コマンド入力部２２９を通して、または一定間隔によりＳＰＣクリア命令を発行するＩ／Ｆを備え、ＳＰＣクリア命令が発行された場合、ＳＰＣ管理部２１２にＳＰＣクリア要求を出力する。
【００４７】
ＳＰＣ情報設定部２２８は、前記ユーザ１１５、または前記クライアント計算機１１６上で実行される前記アプリケーション１１７から前記コマンド入力部２２９を通してＳＰＣ情報を入力するＩ／Ｆを備える。ＳＰＣ情報の入力が行われた場合、ＳＰＣ情報設定部２２８は、ＳＰＣ管理テーブル２１１を更新し、ＳＰＣ管理部２１２に変更通知を送信する。
【００４８】
ＳＰＣ管理部２１２は、前記クエリ設定部２０３、メモリ上限設定部２０４、データレート閾値・更新頻度設定部２０６、ストリームデータ監視部２０７、ストリームデータ特性設定部２１４、時間付き制約設定部２１３、ＳＰＣ情報設定部２２８から変更通知を受信した場合に、前記登録クエリ管理テーブル２０５、及び前記監視情報管理テーブル２０８、前記ストリームデータ特性管理テーブル２１５の何れか、または両方を参照し、前記データ管理システム１０１上にあるリレーションデータ２２６のうち、前記ストリームデータ処理システム１０２に読み込むＳＰＣデータを決定する。そして、ＳＰＣ管理部２１２は、ＳＰＣデータの格納場所を決定し、ＳＰＣ管理テーブル２１１を更新する。また、ＳＰＣ管理部２１２は、前記変更通知を受信した場合、及びＳＰＣクリア命令発行部２１０からＳＰＣクリア要求を受信した場合、ＳＰＣ取得命令発行部２０９にＳＰＣ取得要求を出力する。また、ＳＰＣ管理部２１２は、前記データ管理システム１０１から受信したＳＰＣデータに対し、前記ＳＰＣ管理テーブル２１１を参照し、記憶装置１０９におけるメモリ２１６上のストリームプレディクトキャッシュオンメモリ（以下、ＳＰＣ＿ＯＭ：ＳＰＣ＿ＯｎＭｅｍｏｒｙ）２１７、及びディスク２１８上のストリームプレディクトキャッシュオンディスク（以下、ＳＰＣ＿ＯＤ：ＳＰＣ＿ＯｎＤｉｓｋ）２１９に格納する。なお、２つのＳＰＣ＿ＯＭ２１７、ＳＰＣ＿ＯＤ２１９は、リアルタイム処理の必要性が高いＳＰＣデータをアクセス速度の速いＳＰＣ＿ＯＭ２１７に格納し、データレートが低いストリームデータ１１１に対しては、アクセス速度の遅いＳＰＣ＿ＯＤ２１９にＳＰＣデータを格納するよう使い分けることができる。
【００４９】
また、ＳＰＣ管理部２１２中にデータ変換部２３０があり、データ変換部２３０は、前記記憶装置１０４中のデータがＸＭＬデータ２２７などのリレーションデータでない場合に、レコード形式に変換する機構を備える。これにより、ＸＭＬデータ２２７もリレーションデータ２２６と同様に利用することを可能にする。
【００５０】
ＳＰＣ管理テーブル２１１は前記ＳＰＣ管理部２１２で決定した格納場所情報を保持するテーブルである。
【００５１】
前記データ管理システム１０１は前記記憶装置１０４、データ変更検知部２０１、タプル生成部２０２から構成される。
【００５２】
記憶装置１０４は、リレーションデータ２２６、ＸＭＬデータ２２７の何れか、または両方から構成される。前記リレーションデータ２２６は、複数のリレーションデータ２２６1、２２６2、・・・、２２６nから構成され、前記ＸＭＬデータ２２７は、複数のＸＭＬデータ２２７1、２２７2、・・・、２２７nから構成される。ここで、記憶装置１０４に格納されるデータは、上記で述べたデータの他にＣＳＶファイル等のいかなるデータ形式でもよい。以下では、リレーションデータ２２６を用いる例を説明する。
【００５３】
データ変更検知部２０１は、前記リレーションデータ２２６の変更を監視し、変更を検知した場合、タプル生成部２０２にタプル生成要求を出力する。
【００５４】
タプル生成部２０２は、前記データ変更検知部２０１からタプル生成要求を受信した場合、変更となったリレーションデータに対し、ストリーム化されたタプルを生成し、前記ＳＰＣ管理部２１２に送信する。なお、タプルとはリレーションデータ２２６のレコードに相当するものであり、ストリームデータ１１１と突き合わせを行うためのデータ（属性値）を示す。
【００５５】
ここで、前記ＳＰＣクリア命令発行部２１０がある場合、前記データ変更検知部２０１、及び前記タプル生成部２０２は必ずしも必要でない。一方、前記データ変更検知部２０１、及び前記タプル生成部２０２がある場合、前記ＳＰＣクリア命令発行部２１０は必ずしも必要でない。
【００５６】
前記記憶装置１０９は、メモリ２１６、ディスク２１８から構成される。
【００５７】
前記メモリ２１６中にＳＰＣ＿ＯＭ２１７があり、前記ＳＰＣ管理部２１２から送信されたＳＰＣデータを保持する。また、前記突き合わせ部１１２に前記ＳＰＣ＿ＯＭ２１７のデータを入力する。
【００５８】
前記ディスク２１８中にＳＰＣ＿ＯＤ２１９があり、前記ＳＰＣ管理部２１２から送信されたＳＰＣデータを保持する。
【００５９】
また、前記ＳＰＣ＿ＯＭ２１７、及び前記ＳＰＣ＿ＯＤ２１９は、前記ＳＰＣ管理部２１２からのデータ移動要求を受け、前記メモリ２１６、前記ディスク２１８間のデータを移動する。本実施例では、前記メモリ２１６、及び前記ディスク２１８の階層構造としたが、メモリ２１６のみの構成でもよい。
【００６０】
ストリームデータ１１１は、複数のストリームデータ１１１1、１１１2、・・・、１１１nから構成される。
【００６１】
前記突き合わせ部１１２は、突き合わせ実行部２２０、時間付き制約違反判定部２２１から構成される。
【００６２】
突き合わせ実行部２２０は、前記メモリ２１６中の前記ＳＰＣ＿ＯＭ２１７のデータを取得し、前記ストリームデータ１１１との突き合わせを行い、突き合わせ結果１１３を出力する。
【００６３】
また、突き合わせ実行部２２０中にデータ変換部２３０があり、データ変換部２３０は、前記記憶装置１０４中のデータがＸＭＬデータ２２７などのリレーションデータでない場合に、また前記ストリームデータがＸＭＬ形式などのレコード形式でない場合に、レコード形式に変換する機構を備える。
【００６４】
時間付き制約違反判定部２２１は、前記ストリームデータ特性管理テーブル２１５に保持されている時間付き制約条件を参照し、前記ストリームデータ１１１が条件に違反しているか否かを判定する。条件に違反している場合、ログ２２２に違反情報を出力する。なお、ログ２２２は、例えばクライアント計算機１１６に対して送信すればよい。また、データ管理システム１０１の記憶装置１０４等にログ２２を格納してもよい。
【００６５】
図３は、ストリームデータ１１１の好適なデータフォーマットの例を模式的に表した図である。
【００６６】
ストリームデータ１１１はレコード形式であり、レコードを構成する製品ＩＤカラム３０１、ライン名カラム３０２がセグメントに相当し、前記製品ＩＤカラム３０１、及び前記ライン名カラム３０２の組み合わせをタプル３０３とする。前記ストリームデータ１１１が前記ストリームデータ処理システムに入力された場合、到着した時間を示すタイムスタンプが付加される。なお、ストリームデータソースにおいて、タイムスタンプを付加してもよい。
【００６７】
図４は、連続して入力されたストリームデータ１１１を例示した図であり、製品ストリーム（Ｓ１）１１１1を表している。
【００６８】
製品ストリーム１１１1において、表の１行が前記タプル３０３に対応し、各タプルの到着時間であるタイムスタンプカラム３０４が付加されている。例えば、タプル３０４は、タイムスタンプカラム３０４の値が「１０：００」、製品ＩＤカラム３０１の値が「１０００」、ライン名カラム３０２の値が「ラインＡ」であるタプルであることを表している。
【００６９】
ここで、本実施例では、タイムスタンプを「１０：００」のような時間、及び分の形式で表しているが、「２００６／２／３  ９：００：００  ＪＳＴ」のような日付、及び秒を含めた形式に代表される他の形式でもよい。
【００７０】
図５は、リレーションデータ２２６を例示した図であり、製品管理表（Ｒ１）２２６1を表している。
【００７１】
製品管理表は、製品ＩＤカラム４０１、製品名カラム４０２、価格カラム４０３から構成される。製品管理表の１行がレコードに対応する。
【００７２】
例えば、レコード４０４は、製品ＩＤカラム４０１の値が「１０００」、製品名カラム４０２の値が「製品Ａ」、価格カラム４０３の値が「５０００」であることを表している。
【００７３】
図６は、リレーションデータ２２６を例示した図であり、注文表（Ｒ２）２２６2を表している。
【００７４】
注文表は、注文ＩＤカラム５０１、製品ＩＤカラム５０２、注文者名カラム５０３から構成される。注文表の１行がレコードに対応する。
【００７５】
例えば、レコード５０４は、注文ＩＤカラム５０１の値が「１００００」、製品ＩＤカラム５０２の値が「１０００」、注文者名カラム５０３の値が「注文者Ａ」であることを表している。
【００７６】
図７は、クエリを前記ストリームデータ処理システム１０２に登録する際の好適なコマンドの記述例である。
【００７７】
登録クエリ１２０１は、前記ユーザ１１５、または前記クライアント計算機１１６上で実行される前記アプリケーション１１７から前記コマンド入力部２２９を通して、前記クエリ設定部２０３において登録される。登録クエリ１２０１は、前記製品ストリーム（Ｓ１）１１１1の過去５０行（［Ｒｏｗｓ  ５０］）、前記製品管理表（Ｒ１）２２６1、前記注文表（Ｒ２）２２６２において、前記製品ストリーム１１１1の製品ＩＤカラム３０１、前記製品管理表２２６1の製品ＩＤカラム４０２、前記注文表２２６２の製品ＩＤカラム５０２が同一の値であり、かつ前記注文表２２６２の注文者カラム５０３が「注文者Ａ」であるもののうち、注文ＩＤカラム５０１、製品ＩＤカラム（３０１または４０２または５０２）、製品名カラム４０２、ライン名カラム３０２、注文者名カラム５０３を抜き出すクエリであることを表している。
【００７８】
以下では、ストリームデータ処理システム１０２で実行される突き合わせ処理の処理手順を、図８のフローチャートに示し、図２を参照しながら以下に説明する。
【００７９】
ストリームデータ処理システム１０２で実行する突き合わせ処理では、まず、前記ＳＰＣ管理部２１２において、前記クエリ設定部２０３から発行される変更通知により、前記ユーザ１１５、または前記クライアント計算機１１６上で実行される前記アプリケーション１１７から前記コマンド入力部２２９を通して登録されたクエリの登録、または変更を受け付けたか否かを判定する（Ｓ２００２）。
【００８０】
前記ステップＳ２００２でｙｅｓと判定された場合、後述するクエリ登録・変更時の処理を行う（Ｓ２００３）。前記ステップＳ２００３が終了した後、または、前記ステップＳ２００２でｎｏと判定された場合、前記ＳＰＣ管理部２１２において、前記メモリ上限設定部２０４、前記データレート閾値・更新頻度設定部２０６、前記ストリームデータ監視部２０７、前記ストリームデータ特性設定部２１４、前記時間付き制約設定部２１３から発行される変更通知により、監視情報、及び設定情報に変更があるか否かを判定する（Ｓ２００４）。
【００８１】
前記ステップＳ２００４でｙｅｓと判定された場合、後述する監視情報、及び設定情報変更時の処理を行う（Ｓ２００５）。前記ステップＳ２００５が終了した後、または、前記ステップＳ２００４でｎｏと判定された場合、後述するリレーションデータ更新時の処理を実行し（Ｓ２００６）、前記突き合わせ実行部２２０において、前記ストリームデータ１１１が到着したか否かを判定する（Ｓ２００７）。
【００８２】
前記ステップＳ２００７でｙｅｓと判定された場合、前記突き合わせ実行部２２０において、後述するように受信したストリームデータ１１１とＳＰＣ１１０のデータとを突き合わせる突き合わせ処理を行う（Ｓ２００８）。前記ステップＳ２００８が終了した後、または前記ステップＳ２００７でｎｏと判定された場合、前記コマンド入力部２２９において、システム終了コマンドが投入されたかにより、システムを終了するか否かを判定する（Ｓ２００９）。
【００８３】
前記ステップＳ２００９でｙｅｓと判定された場合、処理を終了し（Ｓ２０１０）、前記ステップＳ２００９でｎｏと判定された場合、前記ステップＳ２００２に戻り、上述の処理を継続する。
【００８４】
以上の処理がストリームデータ処理システム１０２で実行される処理のメインルーチンであり、クエリや監視情報、リレーションデータ２２６やＳＰＣデータの更新などを行いながらストリームデータ１１１を受け付けて突き合わせ処理を実施する。
【００８５】
次に、前記図８に示したクエリ登録・変更時の処理Ｓ２００３の処理手順を、図９のフローチャートに示し、図２、図１０、図１１ａ〜図１１ｃ、図１２を用いて説明する。
【００８６】
クエリ登録・変更時の処理では、まず、前記メモリ上限設定部２０４において、登録・変更されたクエリのメモリ上限値を受け付け（Ｓ２１０２）、クエリの登録・変更情報、及びメモリ上限値を前記登録クエリ管理テーブル２０５に反映させる（Ｓ２１０３）。
【００８７】
次に、前記ストリームデータ監視部２０７において、前記登録クエリ管理テーブル２０５を参照し、登録されたクエリに対し、監視が必要なストリームデータの監視情報を取得し（Ｓ２１０４）、監視が必要なストリームデータの監視の更新間隔を設定し（Ｓ２１０５）、取得したストリームデータ監視情報を前記監視情報管理テーブル２０８に反映させる（Ｓ２１０６）。
【００８８】
次に、前記ストリームデータ特性設定部２１４において、ストリームデータ特性情報を受け付け（Ｓ２１０７）、前記ストリームデータ特性管理テーブル２１５に反映させる（Ｓ２１０８）。
【００８９】
次に、後述するＳＰＣ管理テーブル２１１の更新処理を行い（Ｓ２１０９）、後述する突き合わせ処理時のためにリレーションデータ２２６をＳＰＣ１１０に読み込むＳＰＣ取得処理を行う（Ｓ２１１０）。
【００９０】
最後に、前記突き合わせ部１１２において、前記ストリームデータ１１１の受付を開始し（Ｓ２１１１）、クエリ登録・変更時の処理を終了する（Ｓ２１１２）。
【００９１】
以上の処理により、ユーザ１１５がクライアント計算機１１６から入力したクエリやメモリ上限設定値、更新頻度、ストリームデータ１１１の特性がストリームデータ処理システム１０２の各テーブルに設定される。
【００９２】
図１０は、登録クエリ管理テーブル２０５の構成例を表した図である。
【００９３】
クエリ名カラム６０１には、登録されたクエリの名前を格納する。登録クエリカラム６０２には、登録されたクエリを格納する。
【００９４】
メモリ上限値カラム６０３には、前記メモリ上限設定部２０４において設定されたメモリ使用量の上限値を格納する。クエリ実行形式格納先カラム６０４には、クエリの実行形式の格納先のアドレス（ポインタ）を格納する。実行形式をあらかじめ作成しておくことにより、クエリの実行のたびにコンパイルを行うオーバーヘッドを削減できる。
【００９５】
登録者名カラム６０５、登録日時カラム６０６にはそれぞれ、クエリ登録時に取得したクエリの登録者名、クエリの登録日時が格納され、システムのアクセス管理、セキュリティ管理に使用される。
【００９６】
実行対象ストリームカラム６０７、実行対象リレーション６０８にはそれぞれ、登録クエリから抽出したクエリ実行対象となるストリーム名、及びリレーション名を格納する。
【００９７】
例えば、行６０９は、図７に示した登録クエリ１２０１に対し、前記メモリ上限設定部２０４において、メモリ上限値が「１０ＭＢ」と設定された場合の登録クエリ管理テーブル２０５を表している。
【００９８】
行６０９は、クエリ名カラム６０１の値が「Ｑ１」、登録クエリカラム６０２の値が「ＳＥＬＥＣＴ  注文ＩＤ、製品ＩＤ、製品名、ライン名、注文者名  ＦＲＯＭ  Ｓ１［ＲＯＷＳ  ５０］、Ｒ１、Ｒ２  ＷＨＥＲＥ  Ｓ１．製品ＩＤ＝Ｒ１．製品ＩＤ  ＡＮＤ  Ｒ１．製品ＩＤ＝Ｒ２．製品ＩＤ  ＡＮＤ  Ｒ２．注文者＝注文者Ａ；」、メモリ上限値カラム６０３の値が「１０ＭＢ」、クエリ実行形式格納先６０４の値が「０ｘ７ＦＦＦＡＥＥ１」、登録者名カラム６０５の値が「樫山」、登録日時カラム６０６の値が「２００６／０２／０１  １３：０７：２６  ＪＳＴ」、実行対象ストリームカラム６０７の値が「Ｓ１」、実行対象リレーション６０８の値が「Ｒ１，Ｒ２」であることを表している。
【００９９】
図１１ａ〜図１１ｃは、監視情報管理テーブル２０８の構成例を表した図である。監視情報管理テーブル２０８1、２０８2、２０８3はそれぞれ、タイムスタンプが１０：００、１０：１０、１０：２０における監視情報管理テーブル２０８を表した図である。
【０１００】
図１１ａ〜図１１ｃにおいて、ストリーム名カラム８０１、カラム名カラム８０２にはそれぞれ、前記登録クエリ管理テーブル２０５を参照し、取得した監視対象のストリーム名、及び監視対象のカラム名を格納する。
【０１０１】
データレートカラム８０３には、前記ストリームデータ監視部２０７において取得した監視情報のうち、監視対象のストリームデータの到着レートを格納する。データレートを取得することにより、今後到着するストリームデータのデータ量を予測できる。データレート閾値カラム８０４には、前記データレート閾値・更新頻度設定部２０６において設定されたデータレート閾値を格納する。データレート閾値を用いることにより、リレーションデータ２２６をキャッシュするか否かを判定する。
【０１０２】
現在の値カラム８０５には、前記ストリームデータ監視部２０７において取得した監視情報のうち、監視情報を取得した時点における監視対象のカラム名の最新の値を格納する。統計値カラム８０６には、前記ストリームデータ監視部２０７において取得した監視情報のうち、前回監視情報を取得した時点からの統計値を格納する。タイムスタンプカラム８０７には、前記ストリームデータ監視部２０７において、監視情報を取得した時刻情報を格納する。
【０１０３】
更新頻度カラム８０８には、前記データレート閾値・更新頻度設定部２０６において設定された監視情報の更新間隔を格納する。
【０１０４】
例えば、行８０９1は、前記データレート閾値・更新頻度設定部２０６において、データレート閾値が「５タプル／分」、更新頻度が「１０分」と設定された場合の監視情報管理テーブル２０８1を表している。
【０１０５】
行８０９1は、ストリーム名カラム８０１の値が「Ｓ１」であり、カラム名カラム８０２の値が「製品ＩＤ」であり、データレートカラム８０３の値が「１０タプル／分」であり、データレート閾値カラム８０４の値が「５タプル／分」であり、現在の値カラム８０５の値が「１０００」であり、統計値カラム８０６の値が「−」（データなし）であり、タイムスタンプカラム８０７の値が「１０：００」であり、更新頻度カラム８０８の値が「１０分」であることを表している。
【０１０６】
そして、図１１ｂの行８０９2は、１０：１０において、データレートカラム８０３の値が「９タプル／分」に、現在の値カラム８０５の値が「１０９０」にそれぞれ変化しており、図１１ｃの行８０９3は、１０：２０において、データレートカラム８０３の値が「８タプル／分」に、現在の値カラム８０５の値が「１１８０」にそれぞれ変化していることを表している。
【０１０７】
ここで、本実施形態では、データレート８０３に格納するデータとして、タプル／分の例を表したが、これに限定されるものではない。統計値カラム８０６に格納するデータは、前回監視情報を取得した時点からの統計情報としたが、それ以前から取得している統計情報でも構わない。また、統計値として、中心値、及び平均値を示したが、分散などの他の統計情報でもよい。さらに、後述するストリームデータの特性情報の一部を、前記ストリームデータを監視することにより取得してもよい。
【０１０８】
また、データレート閾値カラム８０４、更新頻度カラム８０８はすべての情報が入力される必要はなく、入力されない場合、事前に設定された値を用いてもよい。
【０１０９】
また、データレートカラム８０３、現在の値カラム８０５、統計値カラム８０６に格納する監視情報取得データはすべての情報が入力される必要はない。
【０１１０】
図１２は、ストリーム特性管理テーブル２１５の構成例を表した図である。
【０１１１】
ストリーム名カラム７０１には、特性情報を入力するクエリの名前を格納する。カラム名カラム７０２には、クエリにおける前記特性情報を入力するカラムのカラム名を格納する。時間に関する条件カラム７０３、値に関する条件カラム７０４にはそれぞれ、タイムスタンプに関する条件、値の特性を示す条件が格納され、組み合わせて使用される。条件の優先度カラム７０５には、優先度が格納され、複数のストリーム特性に対してどの条件を優先的に使用するか決定する。制約判定フラグカラム７０６には、前記時間付き制約設定部２１３で入力された場合、フラグをＹとして格納する。確定条件フラグカラム７０７には、特性情報が必ず満たされる、若しくは満たされると想定される場合、フラグをＹとして格納する。登録者カラム７０８には、特性情報を登録した登録者名を格納する。
【０１１２】
例えば、行７０９は、「Ｓ１」というストリーム名を有するストリームデータにおいて、「１０：００から１０：２０」において、「製品ＩＤ」は「１０００から１５００まで」の範囲であり、「優先的に処理を行う」ことを示している。また、「条件を違反していないか否かを判定」し、「この条件が必ず満たされる、若しくは満たされると想定される」ことを表している。さらに、上記の内容は「樫山」によって登録されたことを表している。
【０１１３】
ここで、ストリームデータ特性情報を入力するＩ／Ｆは、図１２に示した表形式の他に、コマンドによる入力でもよい。また、特性を入力するストリーム名カラム７０１、及びカラム名カラム７０２は、前記登録クエリ管理テーブル２０５を参照し、取得してもよい。また、時間に関する条件カラム７０３、条件の優先度カラム７０５、制約判定フラグカラム７０６、確定条件フラグカラム７０７、登録者カラム７０８において、すべての情報が入力される必要はなく、入力されない場合、事前に設定された値を用いてもよい。
【０１１４】
次に、前記図８に示した監視情報変更および設定変更時の処理Ｓ２００５の処理手順を、図１３、及び図２を用いて説明する。
【０１１５】
監視情報更新および設定変更時の処理では、まず、前記メモリ上限設定部２０４において、登録クエリがバッファに用いることのできるメモリの上限値を受け付けたか否かを判定する（Ｓ２２０２）。前記ステップＳ２２０２でｙｅｓと判定された場合、メモリ上限値を前記登録クエリ管理テーブル２０５に反映させる（Ｓ２２０３）。
【０１１６】
前記ステップＳ２２０３が終了した場合、または前記ステップＳ２２０２でｎｏと判定された場合、前記データレート閾値・更新頻度設定部２０６において、ストリームデータ監視情報の更新間隔変更を受け付けたか、また前記ストリームデータ監視部２０７において、監視情報を更新したか否かを判定する（Ｓ２２０４）。前記ステップＳ２２０４でｙｅｓと判定された場合、監視情報の更新間隔、または更新された監視情報を前記監視情報管理テーブル２０８に反映させる（Ｓ２２０５）。
【０１１７】
前記ステップＳ２２０５が終了した場合、または前記ステップＳ２２０４でｎｏと判定された場合、前記ストリームデータ特性設定部２１４において、ストリームデータ特性が変更されたか、また前記時間付き制約設定部２１３において、時間付き制約が設定されたかを判定する（Ｓ２２０６）。前記ステップＳ２２０６でｙｅｓと判定された場合、ストリームデータ特性情報、または時間付き制約情報を前記ストリームデータ特性管理テーブル２１５に反映させる（Ｓ２２０７）。
【０１１８】
前記ステップＳ２２０７が終了した場合、または前記ステップＳ２２０６でｎｏと判定された場合、上記図９のＳ２１０９と同様に、後述するＳＰＣ管理テーブル更新処理を行い（Ｓ２２０８）、後述する突き合わせ処理時のＳＰＣ取得処理を行い（Ｓ２２０９）、監視情報更新および設定変更時の処理を終了する（Ｓ２２１０）。
【０１１９】
次に、前記図８に示したリレーションデータ更新時の処理Ｓ２００６の処理手順を図１４のフローチャートに示し、図２を参照しながら以下に説明する。
【０１２０】
リレーションデータ更新時の処理では、まず、前記ＳＰＣクリア命令発行部２１０において、前記ユーザ１１５、または前記クライアント計算機１１６上で実行される前記アプリケーション１１７から前記コマンド入力部２２９を通して、または一定間隔により入力されたＳＰＣクリアコマンドを受け付けたか否かを判定する（Ｓ２３０２）。前記ステップＳ２３０２でｙｅｓと判定された場合、上記図９のＳ２１０９と同様に、後述するＳＰＣ管理テーブル更新処理を行い（Ｓ２３０３）、後述する突き合わせ処理時のＳＰＣ取得処理を行う（Ｓ２３０４）。前記ステップＳ２３０４が終了した場合、または前記ステップＳ２３０２でｎｏと判定された場合、リレーションデータ更新時の処理を終了する（Ｓ２３０５）。
【０１２１】
以上により、ＳＰＣクリア命令が発行されるとＳＰＣ管理テーブル２１１とＳＰＣ１１０の更新が行われる。
【０１２２】
次に、前記図９のＳ２１０９、図１３のＳ２２０８、図１４のＳ２３０３、図２３のＳ２７１５で呼び出されるＳＰＣ管理テーブル更新処理の処理手順を、図１５のフローチャートに示し、図２、図１６、図１７、図１８を参照しながら説明する。
【０１２３】
ＳＰＣ管理テーブル更新処理では、まず、前記ＳＰＣ管理部２１２において、後述するＳＰＣ格納場所判別条件の算出処理を行い（Ｓ２４０２）、前記ステップＳ２４０２で算出した格納場所判別条件を満たすＳＰＣ＿ＯＭ２１７に格納されているＳＰＣデータのメモリ使用量を計算する（Ｓ２４０３）。次に、前記ＳＰＣ管理部２１２において、前記登録クエリ管理テーブル２０５を参照し（Ｓ２４０４）、計算したメモリ使用量が、前記登録クエリ管理テーブル２０５に保持されているメモリ上限値カラム６０３よりも大きいか否かを判定する（Ｓ２４０５）。
【０１２４】
前記ステップＳ２４０５でｙｅｓと判定された場合、メモリ上限値分のリレーションレコードのタプル数を計算する（Ｓ２４０６）。そして、各タプルの距離が小さいものから前記ステップＳ２４０６で計算したメモリ上限値分のリレーションレコードタプル数だけメモリ２１６に格納するものとし、ＳＰＣ＿ＯＭ２１７の格納場所判別条件を算出する（Ｓ２４０７）。
【０１２５】
ここで、タプルの距離は、距離関数を予め定義しておき、距離が小さいかを判定する。例えば、ストリームデータの属性値が現在の値と比較した値を距離とする距離関数を定義した場合、現在の値５０に対し、属性値８０（距離３０）と属性値１０（距離４０）を比較すると、属性値８０の方が小さい距離であると判定できる。その他にも、現在の値よりも小さい値は無限大とするような距離関数や、自身で定義した距離関数（統計結果から導き出した関数など）も適用することができる。
【０１２６】
前記ステップＳ２４０７が終了した後、又は前記ステップＳ２４０５でｎｏと判定された場合、Ｓ２４０２で計算された格納場所判別条件を前記ＳＰＣ管理テーブル２１１に反映させ（Ｓ２４０８）、ＳＰＣ管理テーブル更新処理を終了する（Ｓ２４０９）。
【０１２７】
以上の処理によりＳＰＣ管理テーブル２１１のリレーション名９０１毎に、現在のストリームデータ１１１の値に応じた格納場所判別条件９０２が設定される。
【０１２８】
図１６、図１７、図１８は、ＳＰＣ管理テーブル２１１の構成例を表した図である。図１６は、タイムスタンプ１０：００におけるＳＰＣ管理テーブル２１１1、図１７は、タイムスタンプ１０：１０におけるＳＰＣ管理テーブル２１１2、図１８は、タイムスタンプ１０：２０におけるＳＰＣ管理テーブル２１１3を表している。
【０１２９】
図１６〜図１８のリレーション名カラム９０１には、登録クエリから取得した突き合わせ対象のリレーション名を格納する。ここで、前記ＳＰＣ管理テーブル２１１に保持されるリレーション名は、すべてのリレーション名でもよい。格納場所判別条件カラム９０２には、格納場所を決定するための条件を格納し、格納場所カラム９０３に格納場所を設定する。更新頻度カラム９０４、更新ポリシーカラム９０５はそれぞれ、リレーションデータの更新頻度、及びリレーションデータに更新が生じたときのポリシーを格納する。ＳＰＣインデクスカラム９０６には、ＳＰＣデータに対し、インデクスを張るカラム名を格納する。取得コストカラム９０７には、前記リレーションデータ２２６を前記ストリーム処理システム１０２上にＳＰＣデータとして取得する際のコストを格納する。なお、取得コストは、リレーションデータ２２６を取得するまでの時間や、時間に対応する値などで表記することができる。最後に、タイムスタンプカラム９０８には、更新されたタイムスタンプを格納する。
【０１３０】
ここで、前記更新頻度カラム９０４、更新ポリシーカラム９０５、ＳＰＣインデクスカラム９０６、取得コストカラム９０７の値では、すべての情報が入力される必要はなく、入力されない場合、事前に設定された値を用いてもよい。また、前記ＳＰＣ情報設定部２２８において、前記ユーザ１１５、または前記クライアント計算機１１６上で実行される前記アプリケーション１１７から、明示的に外部データを取得しないことを指定してもよい。
【０１３１】
例えば、図１６の前記ＳＰＣ管理テーブル２１１1において、行９０９1は、１０：００において、「Ｒ１」というリレーション名を有するリレーションデータにおける製品ＩＤが１０００以上１１００未満の場合、メモリ（ＳＰＣ＿ＯＭ２１７）２１６にＳＰＣデータを格納することを表している。また、リレーションデータの更新頻度が低く、リレーションデータ更新時の処理では、ＳＰＣクリア命令発行時にリレーションデータ２２６を再取得し、ＳＰＣデータを入れ替える。また、ＳＰＣデータにはインデクスが張られてなく、ＳＰＣデータ取得コストが高いことを表している。
【０１３２】
また、行９１０1は、Ｒ１というリレーション名を有するリレーションデータにおいて、１０：００において、製品ＩＤが１１００以上１２００未満の場合、ディスク（ＳＰＣ＿ＯＤ２１９）にＳＰＣデータを格納することを表している。
【０１３３】
また、ＳＰＣ管理テーブル２１１2において、行９０９2は、１０：１０において、メモリ（ＳＰＣ＿ＯＭ）にＳＰＣデータを格納する条件が、製品ＩＤが１０９０以上１１８０未満の場合に更新されたことを表している。行９１０2は、１０：１０において、ディスク（ＳＰＣ＿ＯＤ）にＳＰＣデータを格納する条件が、製品ＩＤが１１８０以上１２７０未満の場合に更新されたことを表している。
【０１３４】
また、ＳＰＣ管理テーブル２１１3において、行９０９3は、１０：２０において、メモリ（ＳＰＣ＿ＯＭ）にＳＰＣデータを格納する条件が、製品ＩＤが１５００以上１５８０未満の場合に更新されたことを表している。行９１０3は、１０：２０において、ディスク（ＳＰＣ＿ＯＤ２１９）にＳＰＣデータを格納する条件として、製品ＩＤが１５８０以上１６６０未満の場合に更新されたことを表している。
【０１３５】
次に、前記ＳＰＣ格納場所判別条件の算出処理Ｓ２４０２の処理手順を、図１９のフローチャートに示し、図２、図１１ａ〜図１１ｃ、図１２、図１６、図１７、図１８を参照しながら説明する。
【０１３６】
ＳＰＣ格納場所判別条件の算出処理では、まず、前記ストリームデータ特性管理テーブル２１５を参照し（Ｓ２５０２）、図１２に示した時間に関する条件カラム７０３にデータが格納されているか否かを判定する（Ｓ２５０３）。この処理は、ストリームデータ特性管理テーブル２１５のストリーム名毎に行われる。
【０１３７】
前記ステップＳ２５０３でｙｅｓと判定された場合、現在のタイムスタンプが満たす条件における値に関する条件カラム７０４の条件を適用する（Ｓ２５０４）。前記ステップＳ２５０４が終了した後、または前記ステップＳ２５０３でｎｏと判定された場合、値に関する条件カラム７０４の条件を適用する（Ｓ２５０５）。ここで、前記値に関する条件７０４がシーケンシャル属性など単体で適用できない場合は、処理を行わない。
【０１３８】
次に、前記監視情報管理テーブル２０８を参照し現在の監視情報を取得する（Ｓ２５０６）。そして、取得した監視情報のうちデータレート８０３が、図１１ａ〜図１１ｃに示した前記データレート閾値カラム８０４の値以上となっているか否かを判定する（Ｓ２５０７）。前記ステップＳ２５０７でｙｅｓと判定された場合、ジョイン対象のカラムの値に関する図１２の条件カラム７０４がシーケンシャル属性となっているか否かを判定する（Ｓ２５０９）。
【０１３９】
上記Ｓ２５０９の判定は、後の突き合わせを行うためのものであり、突き合わせではある属性値をキーにして突き合わせを行うことをジョイン処理とする。上記Ｓ２５０９のジョイン対象のカラムとは、あるテーブルに対してジョイン処理を行うストリームデータのキーのカラムを意味する。例えば、図７に示した登録クエリ１２０１では、Ｓ１とＲ１に対し、Ｓ１の製品ＩＤとＲ１の製品ＩＤをキーにして突き合わせを行うことを意味する。Ｒ１のジョイン対象のカラムとは「Ｓ１の製品ＩＤ」カラムを指しており、Ｓ１の製品ＩＤカラムがシーケンシャル属性を持っている場合Ｓ２５０９の判定がｙｅｓとなる。
【０１４０】
次に、前記ステップＳ２５０９でｙｅｓと判定された場合、前記現在の値カラム８０５の値よりも小さな値を格納場所判別条件から除外する（Ｓ２５１０）。
【０１４１】
ここで、Ｓ２５１０で行われる除外は、格納場所判別条件について「条件式の範囲を狭くする」ことを意味する。例えば、上記Ｓ２５０５では、値に関する条件範囲が「３０＜＝属性値＜１００」となっており、Ｓ２５１０で値に関する条件カラム７０４の現在の値が５０となっていた場合、現在の値よりも小さい範囲を除外して、「５０＜＝属性値＜１００」とすることを意味するものである。
【０１４２】
前記ステップＳ２５１０が終了した後、又は前記ステップＳ２５０９でｎｏと判定された場合、前記図１１ａの監視情報管理テーブル２０８のデータレートカラム８０３、前記現在の値カラム８０４、前記統計値カラム８０５、タイムスタンプカラム８０６、更新頻度カラム８０７の値を用いて予測条件を算出する（Ｓ２５１１）。
【０１４３】
このＳ２５１１で求める予測条件は、ユーザから入力された時間に関する条件（Ｓ２５０３）や、シーケンシャル属性（Ｓ２５０９）以外に、ストリームデータの監視で取得した監視情報から上記条件式の範囲を絞り込むことを意味する。例えば、Ｓ２５０５では、範囲が「３０＜＝属性値＜１００」となっており、ストリームデータからの監視情報から、範囲が「４０＜＝属性値＜６０」であることが分かった場合、Ｓ２５１１において上記の予測条件でさらに絞り込みを行う。上記で示した例以外にも、監視情報から条件を導き出す場合、上記Ｓ２５１２で予測条件の処理を行うことができる。
【０１４４】
上記予測条件の演算は、例えば、図１２の値に関する条件カラム７０４にシーケンシャル属性がある場合、予測条件を「現在の値以上、現在の値＋データレート×更新頻度未満」とすることができる。ここで、上記で示した予測条件算出法に限定せず、他の予測アルゴリズムを用いてもよい。
【０１４５】
前記ステップＳ２５０７でｎｏと判定された場合、リレーションデータをストリームデータ処理システム１０２のＳＰＣ１１０上に取得しないため、メモリ、及びディスクの格納場所判別条件を無効化する（Ｓ２５０８）。
【０１４６】
ここで、「無効化する」とは「キャッシュしない」ことを意味する。すなわち、図１６に示したリレーション名「Ｒ４」に対する行が無効化に対応する。例えば、Ｓ２５０５では、範囲が「３０＜＝属性値＜１００」となっており、データレートが閾値以下（あまりデータが到着していない）の場合には、キャッシュをせず、条件式を「―（何もなし）」としする。ちなみに、全範囲がキャッシュされる場合もある。
【０１４７】
前記ステップＳ２５０８が終了した後、または前記ステップＳ２５１１が終了した後には、今まで設定したすべての格納場所判別条件を適用し（Ｓ２５１２）、ＳＰＣ格納場所判別条件の算出処理を終了する（Ｓ２５１３）。
【０１４８】
以上の処理により、ＳＰＣ管理テーブル２１１のリレーション名９０１毎に、現在のストリームデータ１１１の値に応じた格納場所判別条件９０２が算出される。
【０１４９】
次に、図９に示したＳ２１１０、図１３のＳ２２０９、図１４のＳ２３０４、図２３のＳ２７１６で行われる突き合わせ処理時のＳＰＣデータ取得処理の処理手順を、図２０のフローチャートに示し、図２、図２１を参照しながら説明する。
【０１５０】
突き合わせ処理時のＳＰＣデータ取得処理では、まず、前記ＳＰＣ管理テーブル２１１を参照し（Ｓ２６０２）、上記図１９の処理で格納場所判別条件９０２が更新された際に、ＳＰＣ＿ＯＭ２１７、及びＳＰＣ＿ＯＤ２１９において格納場所判別条件９０２から除外されたＳＰＣデータを削除する（Ｓ２６０３）。次に、前記登録クエリ管理テーブル２０５を参照し（Ｓ２６０４）、ＳＰＣデータ取得命令を次のように発行する（Ｓ２６０５）。
【０１５１】
ＳＰＣデータ取得命令は、前記登録クエリ管理テーブル２０５に保持されているクエリ６０２に対し、リレーションデータに関連のある行、及び列を取得する命令を生成し、前記ＳＰＣ管理テーブル２１１に保持されている条件（格納場所９０３など）を付加することにより生成する。ここで、関連のある行は登録クエリ６０２の選択処理に記述されている条件から生成し、関連のある列は射影、結合処理に記述されている条件から生成する。
【０１５２】
最後に、前記ステップＳ２６０５のＳＰＣ取得命令で取得したＳＰＣデータを前記ＳＰＣ管理テーブル２１１に記述されている格納場所判定条件９０２により、格納先をメモリ（ＳＰＣ＿ＯＭ２１７）またはディスク（ＳＰＣ＿ＯＤ２１９）のいずれかに振り分け（Ｓ２６０６）、突き合わせ処理時のＳＰＣデータ取得処理を終了する（Ｓ２６０７）。
【０１５３】
以上の処理により、登録クエリ６０２と格納場所判別条件９０２に基づいてＳＰＣ取得命令を発行し、データ管理システム１０１のリレーションデータ２２６がＳＰＣ＿ＯＭ２１７またはＳＰＣ＿ＯＤ２１９に読み込まれる。
【０１５４】
図２１は、ＳＰＣ取得命令の例を表している。ＳＰＣ取得命令１３０１1、１３０１2、１３０１3はそれぞれ、１０：００、１０：１０、１０：２０におけるＳＰＣ取得命令を表している。
【０１５５】
例えば、図７に示した前記登録クエリ１２０１の場合、図４、図５、図６よりSELECT句における「ライン名」、ＦＲＯＭ句における「Ｓ１［Ｒｏｗｓ  ５０］」、ＷＨＥＲＥ句における「Ｓ１．製品ＩＤ＝Ｒ１．製品ＩＤ」は前記製品ストリーム１１１1に関係する。一方、SELECT句における「注文ＩＤ」、「製品ＩＤ」、「製品名」、「注文者名」、ＦＲＯＭ句における「Ｒ１」、「Ｒ２」、ＷＨＥＲＥ句における「Ｒ１．製品ＩＤ＝Ｒ２．製品ＩＤ」、「Ｒ２．注文者＝‘注文者Ａ’」は前記製品ストリーム１１１1に関係せず、前記製品管理表２２６1、及び前記注文表２２６2に関係する。以上より、リレーションデータに関連のある行、及び列を取得する命令「ＳＥＬＥＣＴ  注文ＩＤ、製品ＩＤ、製品名、注文者名  ＦＲＯＭ  Ｒ１、Ｒ２  ＷＨＥＲＥ  Ｒ１．製品ＩＤ＝Ｒ２．製品ＩＤ  ＡＮＤ  Ｒ２．注文者＝’注文者Ａ’；」を生成できる。
【０１５６】
また、図１６に示した前記ＳＰＣ管理テーブル２１１1に保持されている１０：００のメモリ、及びディスク両方の格納場所判別条件「１０００＜＝製品ＩＤ＜１２００」を上記ＳＰＣ取得命令に付加すると、１０：００におけるＳＰＣ取得命令１３０１１「ＳＥＬＥＣＴ  注文ＩＤ、製品ＩＤ、製品名、注文者名  ＦＲＯＭ  Ｒ１、Ｒ２  ＷＨＥＲＥ  Ｒ１．製品ＩＤ＝Ｒ２．製品ＩＤ  ＡＮＤ  Ｒ２．注文者＝’注文者Ａ’  ＡＮＤ  １０００＜＝製品ＩＤ  ＡＮＤ  製品ＩＤ＜１２００；」を生成できる。
【０１５７】
また、１０：１０、及び１０：２０における格納場所判別条件９０２を付加することにより、１０：１０、１０：２０におけるＳＰＣ取得命令１３０１２、１３０１３を同様に生成できる。
【０１５８】
ここで、本実施例では、ＳＰＣ取得命令をＳＱＬ文で表現したが、これに限定されるものではない。また、本実施例では、２種類のリレーションデータを結合した結果を、ＳＰＣデータとしたが、ＳＰＣデータ取得命令において、リレーションデータを個別に取得し、前記ストリームデータ処理システム１０２中で結合処理を行ってもよい。
【０１５９】
図２２は、前記ＳＰＣ取得命令１３０１1、１３０１2、１３０１3により取得したＳＰＣ＿ＯＭデータ２１７1、２１７2、２１７3、及びＳＰＣ＿ＯＤデータ２１９1、２１９2、２１９3を表した図である。
【０１６０】
図２２において、ＳＰＣ＿ＯＭデータ２１７1〜２１７3、及びＳＰＣ＿ＯＤデータ２１９1〜２１９3は、図５に示した前記製品管理表２２６1、及び図６に示した前記注文表２２６2を突き合わせた図となっている。図２２で注文ＩＤカラム１００１は、前記注文表２２６２の注文ＩＤカラム５０１に対応し、製品ＩＤカラム１００２は、前記製品管理表２２６１の製品ＩＤカラム４０１、または前記注文表２２６２の製品ＩＤカラム５０２に対応し、製品名カラム１００３は、前記製品管理表２２６１の製品名カラム４０２に対応し、注文者名カラム１００４は、前記注文表２２６２の注文者名カラム５０３に対応する。
【０１６１】
例えば、行１００５は、前記製品管理表２２６１の行４０４、及び前記注文表２２６２の行５０４を突き合わせた行になっている。また、行１００６は、同様に行４０５、及び行５０５を突き合わせた行になっている。同様にして、ＳＰＣ＿ＯＭデータ２１７2、２１７3、及びＳＰＣ＿ＯＤデータ２１９2、２１９3を取得できる。
【０１６２】
次に、前記図８のＳ２００８で実行される突き合わせ処理の処理手順を図２３のフローチャートに示し、図２を参照しながら以下に説明する。
【０１６３】
突き合わせ処理では、まず、前記突き合わせ部１１２において、前記ストリームデータ１１１を取得する（Ｓ２７０２）。次に、前記ストリームデータ特性管理テーブル２１５を参照し（Ｓ２７０３）、前記ストリームデータ特性管理テーブル２１５に保持されている制約条件（図１２に示した前記制約判定フラグカラム７０６の値が「Ｙ」となっている時間に関する条件カラム７０３、及び値に関する条件カラム７０４の条件）を満たしているか否かを判定する（Ｓ２７０４）。前記ステップ２７０４でｎｏと判定された場合、ストリームデータを破棄し（Ｓ２７１７）、破棄したことを示す前記ログ２２２を出力し（Ｓ２７１８）、突き合わせ処理を終了する（Ｓ２７１９）。
【０１６４】
図２４は、ログ２２２の例を表した図である。
【０１６５】
例えば、ログ１４０１は、「１０：２１」にタプル「（１０：２１，２５００，ラインＡ）」を破棄したことを表している。また、タプルを破棄した条件は「樫山」が登録した「１０：００＜=時間＜＝１１：００，１５００＜=製品ＩＤ＜＝２０００」であることを表している。
【０１６６】
ここで、上記で示したログ２２２は、前記ユーザ１１５、または前記クライアント計算機１１６上で実行される前記アプリケーション１１７に対するイベント、若しくはメッセージでもよい。
【０１６７】
前記図８のステップ２７０４でｙｅｓと判定された場合、取得したストリームデータ１１１が制約条件に違反していないので、前記ＳＰＣ管理テーブル２１１を参照し（Ｓ２７０５）、取得したストリームデータ１１１と突き合わせ対象のＳＰＣデータの格納場所を特定する（Ｓ２７０６）。次に、取得したストリームデータとＳＰＣ＿ＯＭ２１７のデータの突き合わせを行う（Ｓ２７０７）。ここで、突き合わせ対象のＳＰＣデータがＳＰＣ＿ＯＭ２１７にない場合は、処理を行わない。次に、突き合わせ対象のＳＰＣデータにおいて、ＳＰＣ＿ＯＭ２１７上に存在しないＳＰＣデータがあるか否かを判定する（Ｓ２７０８）。前記ステップ２７０８でｎｏと判定された場合、突き合わせ処理を終了する（Ｓ２７１９）。
【０１６８】
前記ステップ２７０８でｙｅｓと判定された場合、取得したストリームデータ１１１とＳＰＣ＿ＯＤ２１９のデータとの突き合わせを行う（Ｓ２７０９）。ここで、突き合わせ対象のＳＰＣデータがＳＰＣ＿ＯＤ２１９にない場合は、処理を行わない。次に、突き合わせ対象のＳＰＣデータが、ＳＰＣ＿ＯＭ２１７上にもＳＰＣ＿ＯＤ２１９上にも存在しないかを判定する（Ｓ２７１０）。前記ステップ２７１０でｎｏと判定された場合、前記ステップＳ２７０７で実行したＳＰＣ＿ＯＭ２１７のデータとの突き合わせ結果または前記ステップＳ２７０９で実行したＳＰＣ＿ＯＤ２１９上のデータとの突き合わせ結果を結合する（Ｓ２７１４）。
【０１６９】
前記ステップ２７１０でｙｅｓと判定された場合、突き合わせを行うＳＰＣデータがストリームデータ処理システム１０２のＳＰＣ１１０上にないので、前記データ管理システム１０１上にある前記リレーションデータ２２６を取得する。このため、ＳＰＣデータ取得命令を発行し（Ｓ２７１１）、データ管理システム１０１から該当するリレーションデータ２２６をストリームデータ処理システム１０２のＳＰＣ＿ＯＭ２１７またはＳＰＣ＿ＯＤに読み込んで、取得したストリームデータ１１１とＳＰＣ上のリレーションデータの突き合わせを行う（Ｓ２７１２）。前記ステップＳ２７０７で実行したＳＰＣ＿ＯＭ２１７上のＳＰＣデータとの突き合わせ結果と、前記ステップＳ２７０９で実行したＳＰＣ＿ＯＤ２１９上のＳＰＣデータとの突き合わせ結果、及び前記ステップＳ２７１２で実行したリレーションデータ２２６との突き合わせ結果を結合する（Ｓ２７１３）。つまり、受信したストリームデータ１１１に、ＳＰＣ１１０上の該当するＳＰＣデータの情報を付加し、突き合わせ結果１１３を生成する。突き合わせ結果１１３は、ストリームデータ１１１にユーザ１１５が理解可能な有意な情報を付加したものに変換される。そして、ストリームデータ処理システム１０２は、この突き合わせ結果１１３をクライアント計算機１１６へ送信する。
【０１７０】
前記ステップＳ２７１３、または前記ステップＳ２７１４が終了した後に、突き合わせ対象となるリレーションデータの予測を再び行うため、前記図９のＳ２１０９と同様に、ＳＰＣ管理テーブル更新処理を行い（Ｓ２７１５）、前記突き合わせ処理時のＳＰＣデータ取得処理を行い（Ｓ２７１６）、突き合わせ処理を終了する（Ｓ２７１９）。
【０１７１】
以上の処理により、ストリームデータ特性管理部１０９に設定された特性情報と、ストリームデータ監視情報管理部１０６がモニタした監視情報から、突き合わせに必要な外部データ（リレーションデータ２２６）を、ストリームデータ１１１が受信する以前に、ＳＰＣ１１０上に読み出しておくことが可能となって、突き合わせをリアルタイムで行うことができる。また、ＳＰＣ１１０をメモリ２１６上のＳＰＣ＿ＯＭ２１７と、ディスク２１８上のＳＰＣ＿ＯＤ２１９のように階層的に分けておくことで、リレーションデータ２２６の一部または全部をストリームデータ処理システム１０２のＳＰＣ１１０に予め格納しておくことができる。
【０１７２】
図２５は、前記突き合わせ結果１１３の例を表した図である。
【０１７３】
突き合わせ結果は、図４に示した製品ストリーム１１１1、及び図２２に示したＳＰＣデータ（ＳＰＣ＿ＯＭデータ２１７、またはＳＰＣ＿ＯＤデータ２１９）との突き合わせた表となっている。タイムスタンプカラム１１０１は、前記製品ストリーム１１１1におけるタイムスタンプカラム３０４に対応し、注文ＩＤカラム１１０２は、前記ＳＰＣデータにおける注文ＩＤカラム１００１に対応し、製品ＩＤカラム１１０３は、前記ＳＰＣデータにおける製品ＩＤカラム１００２に対応し、ライン名カラム１１０４は、前記製品ストリーム１１１1におけるライン名カラム３０２に対応し、製品名カラム１１０５は、前記ＳＰＣデータにおける製品名カラム１００３に対応し、注文者名カラム１１０６は、前記ＳＰＣデータにおける注文者名カラム１００４に対応する。
【０１７４】
例えば、行１１０７は、製品ストリーム１１１1における行３０５、及び前記ＳＰＣ＿ＯＭデータ２１７１における行１００５突き合わせた行になっている。
【０１７５】
以上、本発明の一実施形態について説明した。
【０１７６】
本発明は、上記の実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
【０１７７】
例えば、上記の実施形態では、クライアント計算機１１６、及びデータ管理システム１０１はネットワークで介して接続されているが、同一計算機上にあってもよい。また、記憶装置１０９として、メモリ２１６、及びディスク２１８の２階層構造としたが、メモリ２１６のみ１階層、若しくは３階層以上の構造でもよい。また、メモリ、ディスクに限定せず、テープ、フラッシュメモリなど他の記憶装置でもよい。
【０１７８】
また、上記の実施形態では、２種類のリレーションデータを結合した結果を、ＳＰＣデータとしたが、ＳＰＣデータ取得命令において、リレーションデータを個別に取得し、前記ストリームデータ処理システム１０２中で結合処理を行ってもよい。上記の場合に、図１０に示した前記登録クエリ管理テーブル２０５において、前記メモリ上限値カラム６０３の値を突き合わせ対象のリレーションごとにメモリ上限値を設定してもよい。
【０１７９】
図２６は、前記メモリ上限値カラム６０３の値を突き合わせ対象のリレーションごとにメモリ上限値を設定した場合の前記登録クエリ管理テーブル２０５を表している。行６１０、及び行６１１は、図１０に示した前記登録クエリ管理テーブル２０５における行６０９に対応する。行６１０は、実行対象リレーションカラムが「Ｒ１」に対して、メモリ上限値を「７ＭＢ」であることを表し、行６１１は、実行対象リレーションカラムが「Ｒ２」に対して、メモリ上限値を「３ＭＢ」であることを表している。
【０１８０】
また、上記の実施形態では、ストリームデータ特性管理テーブル２１５、及び監視情報管理テーブル２０８の両方を用いてＳＰＣデータの格納場所を判定しているが、いずれか一方で判定してもよい。
【０１８１】
また、上記の実施形態では、前記ストリームデータ特性管理テーブル２１５に設定されるストリーム特性情報を前記ユーザ１１５、または前記クライアント計算機１１６上で実行される前記アプリケーション１１７が入力しているが、ストリームデータのスキーマ定義において、ストリームデータ特性情報を入力し、スキーマ定義から自動的に前記ストリームデータ特性管理テーブル２１５を生成してもよい。
【０１８２】
また、上記の実施形態では、前記登録クエリ管理テーブル２０５、監視情報管理テーブル２０８、ＳＰＣ管理テーブル２１１、ストリームデータ特性管理テーブル２１５に設定される情報は、前記ユーザ１１５、または前記クライアント計算機１１６上で実行される前記アプリケーション１１７が設定しているが、例えば、Ｓｔｒａｔｉｓ  Ｖｉｇｌａｓ，Ｊｅｆｆｒｅｙ  Ｆ．  Ｎａｕｇｈｔｏｎ著：“Ｒａｔｅ−ｂａｓｅｄ  ｑｕｅｒｙ  ｏｐｔｉｍｉｚａｔｉｏｎ  ｆｏｒ  ｓｔｒｅａｍｉｎｇ  ｉｎｆｏｒｍａｔｉｏｎ  ｓｏｕｒｃｅｓ”，Ｉｎ  Ｐｒｏｃ．  ｏｆ  ＳＩＧＭＯＤ  Ｃｏｎｆｅｒｅｎｃｅ  ２００２，ｐｐ．  ３７−４８（非特許文献３）に開示されているクエリの最適化を行う処理機構が設定してもよい。
【０１８３】
また、上記の実施形態では、リレーションデータ更新時に、ＳＰＣクリア命令により、ＳＰＣデータを更新する例を説明したが、前記データ管理システム１０１において、前記データ１１４（２２６）の変更を監視することにより、前記データ１１４の変更を検知し、変更のあった前記データ１１４を前記ストリームデータ処理システム１０２に送信することにより、ＳＰＣデータを更新してもよい。
【０１８４】
データ管理システム１０１のリレーションデータ２２６の変更を検知し、ストリームデータ処理システム１０２に変更の内容を送信することによってＳＰＣデータの更新を行う処理について説明する。この処理は、図８のＳ２００６で実行されるリレーション更新時の処理の他の例を示し、この処理手順を、図２７のフローチャートに示し、図２を参照しながら以下に説明する。
【０１８５】
リレーション更新時の処理では、まず前記ＳＰＣ管理部２１２において、前記データ管理システム１０１において生成されたタプルを受け付けたか否かを判定する（Ｓ２８０２）。前記ステップＳ２８０２でｙｅｓと判定された場合、前記ＳＰＣ管理テーブル２１１を参照し（Ｓ２８０３）、ＳＰＣデータの格納場所を特定し（Ｓ２８０４）、該当する場所にあるタプルを変更されたタプルに入れ替える（Ｓ２８０５）。前記ステップＳ２８０５が終了した場合、または前記ステップＳ２８０２でｎｏと判定された場合、リレーション更新時の処理を終了する（Ｓ２８０６）。
【０１８６】
ここで、前記データデータ管理システム１０１においてリレーションデータ２２６の変更を検知するには、前記データ変更検知部２０１において、データベースにおけるトリガを設定する、またはアプリケーションからのデータ更新命令を監視することにより実現できる。そして、前記タプル生成部２０２において、変更した時間をタイムスタンプとして付加したタプルを生成し、前記ストリームデータ処理システム１０２に送信する。
【０１８７】
また、前記突き合わせ実行部２２０において、前記タプル生成部２０２において付加されたタイムスタンプを用いることにより、一貫性を完全に損なわない突き合わせを実現できる。ここで、前記データ管理システム１０１、前記ストリームデータ処理システム１０２の時刻は同期しているものとする。
【０１８８】
また、上記の実施形態では、前記ストリームデータ１１１がレコード形式である例を説明したが、ＸＭＬドキュメント形式やＣＳＶファイル形式などいかなるデータ形式でもよい。さらに、上記の実施形態ではデータ管理システム１０１の前記記憶装置１０４中のデータ１１４がリレーションデータ２２６である例を説明したが、ＸＭＬドキュメント形式やＣＳＶファイル形式などいかなるデータ形式でもよい。レコード形式以外の場合、図２で示した前記ＳＰＣ管理部２１２中のデータ変換部２３０、若しくは前記突き合わせ実行部２２０中のデータ変換部２３０において、レコード形式以外のデータ形式からレコード形式へと変換することにより、突き合わせ実行部２２０において、ストリームデータ１１１、及び記憶装置１０４中のデータ１１４の突き合わせを行うことができる。
【０１８９】
図２８は、前記ストリームデータ１１１がＸＭＬドキュメント形式である場合の好適なデータフォーマットを模式的に表した図である。
【０１９０】
ストリームデータ３０３は、「＜ストリームデータ＞」、及び「＜／ストリームデータ＞」で囲まれた領域で表現され、行１５０１は図３に示した製品ＩＤカラム３０１に対応し、行１５０２は図３に示したライン名カラム３０２に対応する。前記突き合わせ実行部２２０中のデータ変換部２３０において、上記に示した対応関係からレコード形式に変換することにより、突き合わせを行うことができる。
【０１９１】
図２９は、前記データ１１４がＸＭＬドキュメント形式である場合の例を表した図である。
【０１９２】
図５に示した行４０４は、「＜製品＞」、及び「＜／製品＞」で囲まれた領域で表現され、行１５０３は、図５に示した製品ＩＤカラム４０１に対応し、行１５０４は、図５に示した製品名カラム４０２に対応し、行１５０５は、図５に示した価格カラム４０３に対応する。前記ＳＰＣ管理部２１２中のデータ変換部２３０、若しくは前記突き合わせ実行部２２０中のデータ変換部２３０において、上記に示した対応関係からレコード形式に変換することにより、突き合わせを行うことができる。
【０１９３】
また、上記の実施形態では、ストリームデータ処理システム１０２は、任意のコンピュータシステムとして説明したが、前記ストリームデータ処理システム１０２で行う処理の一部、若しくは全部をストレージ装置で行ってもよい。
【０１９４】
また、上記の実施形態では、計算機１２が製品の情報や環境条件（温度）などをストリームデータ１１１を出力する例を示したが、これに限定されるものではない。例えば、計算機１２に代わって多数のセンサノードを管理するセンサネットサーバが、センサノードの測定値をストリームデータ１１１と出力し、ストリームデータ処理システム１０２でセンサノードの測定値を外部データに基づいて、ユーザ１１５が理解可能な有意な情報を含む突き合わせ結果１１３に変換し、クライアント計算機１１６へ提供するようにしてもよい。
【０１９５】
なお、ストリームデータを１次情報として取得し、前記取得した１次情報を予め設定した外部データの情報に基づいて２次情報に変換するストリームデータ処理システムにおいて、
前記ストリームデータを１次情報として取得するストリームデータ入力部と、
前記ストリームデータと突き合わせを行う外部データを格納する外部データ格納部と、
前記ストリームデータに対する処理を記述したクエリを予め登録するクエリ管理部と、
前記クエリを参照して、前記外部データの一部または全部を記憶装置に予め設定したストリームプレディクトキャッシュへ予め読み込む格納場所管理部と、
前記ストリームプレディクトキャッシュへ読み込んだ外部データと、前記ストリームデータとを突き合わせることにより、前記２次情報を生成する突き合わせ部と、
を備えたことを特徴とするストリームデータ処理システム。
【０１９６】
また、上記ストリームデータ処理システムにおいて、
前記ストリームデータの値の特徴を表すストリームデータの特性情報を格納するストリームデータ特性管理部と、
前記ストリームデータを監視して監視情報を取得するストリームデータ監視部と、を有し、
前記格納場所管理部は、
前記ストリームデータの特性情報と、前記取得した監視情報とに基づいて、前記ストリームプレディクトキャッシュへ予め読み込む前記外部データを決定することを特徴とするストリームデータ処理システム。
【０１９７】
なお、請求項１に記載のストリームデータ処理方法において、
処理時刻以降に到着する前記ストリームデータの値の特徴を表すストリームデータの特性情報を入力し、前記ストリームデータの特性情報を用いて、前記ストリームプレディクトキャッシュとして取得する前記外部データを決定することを特徴とするストリームデータ処理方法、としてもよい。
【０１９８】
また、請求項１に記載のストリームデータ処理方法において、
前記ストリームデータを監視することにより監視情報を取得し、前記取得した監視情報を用いて、前記ストリームプレディクトキャッシュとして取得する前記外部データを決定することを特徴とするストリームデータ処理方法、としてもよい。
【０１９９】
また、請求項６に記載のストリームデータ処理方法において、
前記ストリームデータに対し複数の前記特性情報がある場合、何れの条件を優先的に使用するか判定する優先度と、前記ストリームデータにおける時刻情報に対応する条件であり、前記ストリームデータが違反していないかチェックを行う時間付き制約情報であるか判定するフラグを表す制約判定フラグカラムと、前記特性情報が必ず満たされる、若しくは満たされると想定されるか判定するフラグを表す確定条件フラグと、前記特性情報を登録した登録者とのうち一部または全部をストリームデータ特性管理テーブルに保持することを特徴とするストリームデータ処理方法、としてもよい。
【０２００】
また、請求項６に記載のストリームデータ処理方法において、
前記ストリームデータ特性管理テーブルを参照し、前記ストリームデータ特性管理テーブルの値に関する条件カラムの条件を適用することを特徴とするストリームデータ処理方法、としてもよい。
【０２０１】
また、請求項８に記載のストリームデータ処理方法において、
前記時間付き制約情報に違反している場合、前記ストリームデータを破棄し、破棄した前記ストリームデータおよび前記時間付き制約情報をログとして出力することを特徴とするストリームデータ処理方法、としてもよい。
【０２０２】
また、請求項９に記載のストリームデータ処理方法において、
監視対象の前記ストリームデータの到着レートを表すデータレートと、前記データレートにより前記ストリームプレディクトキャッシュ要否を判定する値を表すデータレート閾値と、前記監視情報を取得した時点における監視対象の前記カラム名の最新の値を表す現在の値と、前記監視情報を前回取得した時点からの統計値を表す統計値と、前記ストリームデータの監視情報の更新間隔を表す更新頻度カラムとのうち一部または全部を監視情報管理テーブルに保持することを特徴とするストリームデータ処理方法、としてもよい。
【０２０３】
また、請求項１３に記載のストリームデータ処理方法において、
予め登録された前記クエリの実行形式の格納先のアドレスを表すクエリ実行形式格納先と、前記クエリ登録時に取得した前記クエリの登録者と、前記クエリ登録時に取得した前記クエリの登録日時と、前記クエリから抜き出した前記クエリ実行対象となるストリーム名を表す実行対象ストリームと、前記クエリから抜き出した前記クエリ実行対象となるリレーション名を表す実行対象リレーションとのうち、一部または全部を登録クエリ管理テーブルに保持することを特徴とするストリームデータ処理方法、としてもよい。
【０２０４】
また、請求項５に記載のストリームデータ処理方法において、
前記外部データの更新頻度と、前記外部データに更新が生じたときのポリシーを表す更新ポリシーと、前記ストリームプレディクトキャッシュデータに対しインデクスを張るカラム名を表すストリームプレディクトキャッシュインデクスと、前記外部データを前記ストリーム処理システム上にストリームプレディクトキャッシュデータとして取得するコストを表す取得コストとのうち、一部または全部をストリームプレディクトキャッシュ管理テーブルに保持することを特徴とするストリームデータ処理方法、としてもよい。
【０２０５】
また、請求項５に記載のストリームデータ処理方法において、
外部のデータ管理システムにおいて、外部データの変更を検知し、変更した時刻を付与したタプルを生成し、ストリームデータ処理システムに送信することを特徴とするストリームデータ処理方法、としてもよい。
【０２０６】
また、請求項５に記載のストリームデータ処理方法において、
外部のデータ管理システムにおいて生成されたタプルを受け付け、前記ストリームプレディクトキャッシュ管理テーブルを参照し、ストリームプレディクトキャッシュデータの格納場所を特定し、新規タプルに入れ替えることを特徴とするストリームデータ処理方法、としてもよい。
【産業上の利用可能性】
【０２０７】
以上のように、本発明は時々刻々と変化するストリームデータを外部のデータに基づいて有意な情報に変換し、ユーザへ提供する計算機システムに適用することができる。特に、リアルタイムで処理する必要があるストリームデータの量が膨大な量になる金融機関のシステムや、センサネットシステムなどに適用することができる。
【図面の簡単な説明】
【０２０８】
【図１】本発明の一実施形態に係るストリームデータ処理システム、および関連するシステム構成の概要を示すブロック図である。
【図２】本発明の一実施形態が適用されたストリームデータ処理システム、および関連するシステムの構成を示すブロック図である。
【図３】ストリームデータ１１１の好適なデータフォーマットの例を模式的に表した図である。
【図４】連続して入力されたストリームデータ１１１を例示した図であり、製品ストリーム（Ｓ１）１１１1を表している。
【図５】リレーションデータ２２６を例示した図であり、製品管理表（Ｒ１）２２６１を表している。
【図６】リレーションデータ２２６を例示した図であり、注文表（Ｒ２）２２６２を表している。
【図７】クエリを前記ストリームデータ処理システム１０２に登録する際の好適なコマンドの記述例を示す説明図である。
【図８】ストリームデータ処理システム１０２を用いた突き合わせ処理の処理手順を表したフローチャートである。
【図９】クエリ登録・変更時の処理Ｓ２００３の処理手順を表したフローチャートである。
【図１０】登録クエリ管理テーブル２０５の構成例を表した図である。
【図１１ａ】時刻１０：００における監視情報管理テーブル２０８の一例を表した説明図である。
【図１１ｂ】時刻１０：１０における監視情報管理テーブル２０８の一例を表した説明図である。
【図１１ｃ】時刻１０：２０における監視情報管理テーブル２０８の一例を表した説明図である。
【図１２】ストリーム特性管理テーブル２１５の構成例を表した図である。
【図１３】監視情報変更および設定変更時の処理Ｓ２００５の処理手順を表したフローチャートである。
【図１４】リレーションデータ更新時の処理Ｓ２００６の処理手順を表したフローチャートである。
【図１５】ＳＰＣ管理テーブル更新処理Ｓ２１０９の処理手順を表したフローチャートである。
【図１６】ＳＰＣ管理テーブル２１１の構成例を表した図であり、タイムスタンプ１０：００におけるＳＰＣ管理テーブル２１１1を表している。
【図１７】ＳＰＣ管理テーブル２１１の構成例を表した図であり、タイムスタンプ１０：１０におけるＳＰＣ管理テーブル２１１2を表している。
【図１８】ＳＰＣ管理テーブル２１１の構成例を表した図であり、タイムスタンプ１０：２０におけるＳＰＣ管理テーブル２１１3を表している。
【図１９】ＳＰＣ格納場所判別条件の算出処理Ｓ２４０２の処理手順を表したフローチャートである。
【図２０】突き合わせ処理時のＳＰＣデータ取得処理Ｓ２１１０の処理手順を表したフローチャートである。
【図２１】ＳＰＣ取得命令の一例を示す説明図。
【図２２】ＳＰＣ取得命令１３０１１、１３０１２、１３０１３により取得したＳＰＣ＿ＯＭデータ２１７1、２１７2、２１７3、及びＳＰＣ＿ＯＤデータ２１９1、２１９2、２１９3を表した図である。
【図２３】突き合わせ処理Ｓ２００８の処理手順表したフローチャートである。
【図２４】ログ２２２の例を表した説明図である。
【図２５】突き合わせ結果１１３の例を表した説明図である。
【図２６】メモリ上限値カラム６０３の値を突き合わせ対象のリレーションごとにメモリ上限値を設定した場合の登録クエリ管理テーブル２０５を表す説明図。
【図２７】データの変更を検知し、ストリームデータ処理システムに送信することによるＳＰＣデータの更新する場合のリレーション更新時の処理Ｓ２００６の処理手順の他の例を表したフローチャートである。
【図２８】ストリームデータ１１１がＸＭＬドキュメント形式である場合の好適なデータフォーマットを模式的に表した説明図である。
【図２９】データ１１４がＸＭＬドキュメント形式である場合の例を表した説明図である。
【符号の説明】
【０２０９】
１０１  データ管理システム
１０２  ストリームデータ処理システム
１０３  ネットワーク
１０４  記憶装置
１０５  クエリ管理部
１０６  ストリームデータ監視情報管理部
１０７  格納場所管理部
１０８  ストリームデータ特性管理部
１０９  記憶装置
１１０  ストリームプレディクトキャッシュ（ＳＰＣ）
１１１  ストリームデータ
１１２  突き合わせ部
１１３  突き合わせ結果
１１４  データ
【図１】
0004804233.tif 000002
【図２】
0004804233.tif 000003
【図３】
0004804233.tif 000004
【図４】
0004804233.tif 000005
【図５】
0004804233.tif 000006
【図６】
0004804233.tif 000007
【図７】
0004804233.tif 000008
【図８】
0004804233.tif 000009
【図９】
0004804233.tif 000010
【図１０】
0004804233.tif 000011
【図１１ａ】
0004804233.tif 000012
【図１１ｂ】
0004804233.tif 000013
【図１１ｃ】
0004804233.tif 000014
【図１２】
0004804233.tif 000015
【図１３】
0004804233.tif 000016
【図１４】
0004804233.tif 000017
【図１５】
0004804233.tif 000018
【図１６】
0004804233.tif 000019
【図１７】
0004804233.tif 000020
【図１８】
0004804233.tif 000021
【図１９】
0004804233.tif 000022
【図２０】
0004804233.tif 000023
【図２１】
0004804233.tif 000024
【図２２】
0004804233.tif 000025
【図２３】
0004804233.tif 000026
【図２４】
0004804233.tif 000027
【図２５】
0004804233.tif 000028
【図２６】
0004804233.tif 000029
【図２７】
0004804233.tif 000030
【図２８】
0004804233.tif 000031
【図２９】
0004804233.tif 000032