(57)【要約】【課題】  ストリームデータ処理システムへのストリームデータへの入力を削減する。【解決手段】  時系列に時刻情報が付与されたストリームデータを生成し、その生成したストリームデータについて、登録されたクエリに基づいてストリームデータ処理を行う計算機システムのストリームデータの生成方法であって、計算機システムに、クエリと、ストリームデータを構成する複数種類の構成要素を表すストリーム定義とからそのクエリに対応する前記構成要素を示すクエリ情報を記憶する記憶部と、ストリームデータを生成・送信するデータ生成部と、データ生成部から送信されたストリームデータの処理を行うストリームデータ処理部と、を設け、データ生成部が、そのクエリ情報に基づいて、ストリームデータ処理部に送信するストリームデータからより少ないストリームデータを生成する【選択図】  図１
2011059967.tif 000002
【特許請求の範囲】
【請求項１】
時系列に時刻情報が付与されたストリームデータを生成し、該生成したストリームデータについて、登録されたクエリに基づいてストリームデータ処理を行う計算機システムのストリームデータの生成方法であって、
前記計算機システムは、
前記クエリと、前記ストリームデータを構成する複数種類の構成要素を表すストリーム定義とから前記クエリに対応する前記構成要素を示すクエリ情報を記憶する記憶部と、
前記ストリームデータを生成・送信するデータ生成部と、
前記データ生成部から送信されたストリームデータの処理を行うストリームデータ処理部と、を備え、
前記データ生成部は、
前記クエリ情報に基づいて、前記ストリームデータ処理部に送信するストリームデータからより少ないストリームデータを生成するステップを含むことを特徴とするストリームデータ生成方法。
【請求項２】
請求項１に記載のストリームデータ生成方法であって、
前記クエリ情報は、前記クエリと、前記ストリーム定義とに基づいて、前記ストリームデータ処理部で処理する或いは処理しない前記構成要素を示す情報であり、
前記ストリームデータ処理部は、
前記クエリ情報を作成するステップを含むことを特徴とする請求項１に記載のストリームデータ生成方法。
【請求項３】
請求項２に記載のストリームデータ生成方法であって、
前記ストリームデータ処理部は、前記クエリが登録されたことを契機に、前記クエリ情報を作成するステップを実行することを特徴とするストリームデータ生成方法。
【請求項４】
請求項２に記載のストリームデータ生成方法であって、
前記ストリームデータ処理部は、
前記データ生成部と接続したことを契機に、前記クエリ情報をデータ生成部に転送するステップ、を含むことを特徴とするストリームデータ生成方法。
【請求項５】
請求項２に記載のストリームデータ生成方法であって、
前記ストリームデータ処理部は、
前記データ生成部から前記クエリ情報の転送要求を受け付けるステップと、
該転送要求の受付を契機に、前記クエリ情報をデータ生成部に転送するステップと、
を含むことを特徴とするストリームデータ生成方法。
【請求項６】
請求項２に記載のストリームデータ生成方法であって、
前記データ生成部は、
前記ストリームデータ処理部から前記クエリ情報の転送要求を受け付けるステップと、
該転送要求の受付けを契機に、前記クエリ情報を取得するステップと、
を含むことを特徴とするストリームデータ生成方法。
【請求項７】
請求項１に記載のストリームデータ生成方法であって、
前記データ生成部は、前記計算機システム外から前記クエリ情報を取得するステップを含むことを特徴とするストリームデータ生成方法。
【請求項８】
請求項２に記載のストリームデータ生成方法であって、
前記データ生成部が、前記ストリームデータ処理部に送信するストリームデータから少ないストリームデータを生成するステップには、
前記クエリ情報に基づいて、前記ストリームデータの内、前記クエリが処理しない前記構成要素を含まないストリームデータを生成・送信するステップを含むことを特徴とするストリームデータ生成方法。
【請求項９】
請求項８に記載のストリームデータ生成方法であって、
前記必要としない構成要素が、列データであることを特徴とするストリームデータ生成方法。
【請求項１０】
請求項２に記載のストリームデータ生成方法であって、
前記データ生成部が、前記ストリームデータ処理部に送信するストリームデータから少ないストリームデータを生成するステップには、
前記クエリ情報基づいて、前記ストリームデータ処理部が処理しない前記構成要素を含むストリームデータについて、該ストリームデータそのものを生成しないステップを含むことを特徴とするストリームデータ生成方法。
【請求項１１】
請求項１に記載のストリームデータ生成方法であって、
前記データ生成部は、前記少ないストリームデータを生成した旨を前記ストリームデータ処理部に通知するステップを含むことを特徴とするストリームデータ生成方法。
【請求項１２】
請求項１０に記載のストリームデータ生成方法であって、
前記ストリームデータ処理部は、前記データ生成部から受信したストリームデータを所定の量で処理するものであり、
前記データ生成部は、
前記クエリ情報に基づいて、前記ストリームデータ処理部が処理しない前記構成要素を含むストリームデータについて、該ストリームデータそのものを生成しないことを通知するステップを含むことを特徴とするストリームデータ生成方法。
【請求項１３】
請求項１０に記載のストリームデータ生成方法であって、
前記ストリームデータ処理部は、ストリームデータを時間の範囲で分析するとともに分析対象を前記ストリームデータの個数で分析するものであり、
前記データ生成部は、
前記クエリ情報に基づいて、前記ストリームデータ処理部が処理しない前記構成要素を含むストリームデータについて、該ストリームデータそのものを生成しないことを通知するステップを含むことを特徴とするストリームデータ生成方法。
【請求項１４】
請求項１に記載のストリームデータ生成方法であって、
前記ストリームデータ処理部は、前記データ生成部から受信したストリームデータの量を記録するステップを含み、
前記データ生成部は、
記録された前記受信したストリームデータの量に応じて、前記より少ないストリームデータを生成するか否かを判断するステップを含むことを特徴するストリームデータ生成方法。
【請求項１５】
請求項１４に記載のストリームデータの生成方法であって、
前記データ生成部は、
前記より少ないストリームデータを生成するか否かを判断するステップにおいて、
前記ストリームデータの量が、所定の所定量より多い場合に、前記より少ないストリームデータ生成する判断をすることを特徴とするストリームデータ生成方法。
【請求項１６】
時系列に時刻情報が付与されたストリームデータを生成し、該生成したストリームデータについて、登録されたクエリに基づいてストリームデータ処理を行う計算機システムであって、
前記クエリと、前記ストリームデータを構成する複数種類の構成要素を表すストリーム定義とから前記クエリに対応する前記構成要素を示すクエリ情報を記憶する記憶部と、
前記クエリ情報に基づいて、ストリームデータからより少ないストリームデータを生成・送信するデータ生成部と、
前記生成・送信されたストリームデータの処理を行うストリームデータ処理部と、
を備えることを特徴とする計算機システム。
【請求項１７】
時系列に時刻情報が付与されたストリームデータを生成し、該生成したストリームデータについて、登録されたクエリに基づいてストリームデータ処理を行う計算機システムに、
前記クエリと、前記ストリームデータを構成する複数種類の構成要素を表すストリーム定義とから前記クエリに対応する前記構成要素を示すクエリ情報を記憶する記憶機能と、
前記クエリ情報に基づいて、ストリームデータからより少ないストリームデータを生成・送信するデータ生成機能と、
前記生成・送信されたストリームデータの処理を行うストリームデータ処理機能と、
を実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリームデータ生成方法、ストリームデータ生成装置及びストリームデータ生成プログラムに係り、特に、ストリームデータ処理システムにおいて、ストリームデータを生成するストリームデータ生成方法、ストリームデータ生成装置及びストリームデータ生成プログラムに関する。
【背景技術】
【０００２】
近年、時々刻々と到着する大量のデータ（ストリームデータ）を受信し、リアルタイムで処理するストリームデータ処理システムに対する要求が高まっている。例えば、株取引を支援するファイナンシャルアプリケーションでは、株価の変動に迅速に対応することが最重要の課題の一つである。この点、従来のデータベース管理システム（ＤＢＭＳ）でデータを処理する場合には、受信した株式データを一旦記憶装置に格納する必要があり、今後、さらに大量の株式データを扱う場合に、株価の変動などにリアルタイムで対応することが困難になる可能性がある。
【０００３】
また、ストリームデータをリアルタイムに処理するアプリケーションを個別に作成すると、開発期間の長期化、開発コストの高騰、アプリケーションを利用する業務の変化への迅速な対応が困難といった問題があり、汎用のストリームデータ処理システムが求められている。
【０００４】
ストリームデータ処理システムでは、まず、クエリ（問合せ）をシステムに登録し、ストリームデータの到着とともにクエリが継続的に実行される。しかし、ストリームデータは時々刻々と到着するため、すべてのデータの到着を待ってから処理を開始することは不可能である。また、システムに到着したデータは、データ処理の負荷に影響されることなく、到着順にしたがって処理される必要がある。
【０００５】
この点、非特許文献１に開示された技術では、ストリームデータを、最新１０分間などの時間の幅又は最新１０００件などの個数の幅を指定してストリームデータの一部を切り取りながらリアルタイム処理を実現する、スライディングウィンドウ（以下「ウィンドウ」という。）と呼ばれる概念を導入している。
【０００６】
また、非特許文献１は、データを取得するためのクエリを記述するための言語として、ウィンドウを指定可能なＣＱＬ（Ｃｏｎｔｉｎｕｏｕｓ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）を開示している。ＣＱＬは、ＤＢＭＳで広く用いられているＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）が拡張されたものであって、ウィンドウの指定が可能となっている。具体的にＣＱＬを利用する技術などについては、例えば、特許文献１などに開示されている。
【０００７】
また、ストリームデータは、時々刻々と大量に到着するデータであるため、ストリームデータ処理システムでの処理が追いつかない場合がある。そこで、ストリームデータを複数のキューに蓄積する場合に、キュー状態情報に基づきストリームデータを取得し、システム全体の負荷を低下させない技術が特許文献２に開示されている。また、ストリームデータ処理システム内でストリームデータを処理する過程で、ストリームデータを間引き、システムの処理能力を低下させない技術が非特許文献２に開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−３３８４３２号公報
【特許文献２】特開２００８−８３８０８号公報
【非特許文献】
【０００９】
【非特許文献１】Ｒ．Ｍｏｔｗａｎｉ、Ｊ．Ｗｉｄｏｍ、Ａ．Ａｒａｓｕ、Ｂ．Ｂａｂｃｏｃｋ、Ｓ．Ｂａｂｕ、Ｍ．Ｄａｔａｒ、Ｇ．Ｍａｎｋｕ、Ｃ．Ｏｌｓｔｏｎ、Ｊ．Ｒｏｓｅｎｓｔｅｉｎ、ａｎｄ  Ｒ．Ｖａｒｍａ著：‘‘Ｑｕｅｒｙ  Ｐｒｏｃｅｓｓｉｎｇ、Ｒｅｓｏｕｒｃｅ  Ｍａｎａｇｅｍｅｎｔ、ａｎｄ  Ａｐｐｒｏｘｉｍａｔｉｏｎ  ｉｎ  ａ  Ｄａｔａ  Ｓｔｒｅａｍ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ’’、Ｉｎ  Ｐｒｏｃ．ｏｆ  ｔｈｅ  ２００３  Ｃｏｎｆ．ｏｎ  Ｉｎｎｏｖａｔｉｖｅ  Ｄａｔａ  Ｓｙｓｔｅｍｓ  Ｒｅｓｅａｒｃｈ（ＣＩＤＲ）、Ｊａｎｕａｒｙ  ２００３
【非特許文献２】Ｅｍｉｎｅ  Ｎｅｓｉｍｅ、Ｔａｔｂｕｌ著：‘‘Ｌｏａｄ  Ｓｈｅｄｄｉｎｇ  Ｔｅｃｈｎｉｑｕｅｓ  ｆｏｒ  Ｄａｔａ  Ｓｔｒｅａｍ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍｓ’’、Ｐｈ．Ｄ、Ｂｒｏｗｎ  Ｕｎｉｖｅｒｓｉｔｙ、Ｍａｙ  ２００７．P１７-１８、chap３.２
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかし、特許文献２及び非特許文献２に開示された技術は、ストリームデータを受信した後に、ストリームデータ処理システムが効率的に処理を行うことで負荷を低下させる方法である。そのため、特許文献２及び非特許文献２に開示された技術を用いても、受理可能なデータ量以上の入力が行われた場合には、前述した課題を解決することはできない。
【００１１】
大量のデータを処理する必要があるストリームデータ処理では、ストリームデータを受信したあとに効率的に処理を行うだけではなく、ストリームデータ処理システムへのストリームデータの入力をより少なくすることが必要である。
【００１２】
この点、ストリームデータ処理システムで行われるクエリ処理は、ストリームデータ、あるいはストリームデータに含まれる列(カラム)のデータを選択し、分析・演算を行うという処理の特徴がある。この特徴から、システムに登録するクエリによっては、ストリームデータを受信しても、その一部だけしか利用しない場合や、すべてを利用しない場合が生ずる。
【００１３】
本発明は、ストリームデータ処理システムへのストリームデータの入力量が少なくなるストリームデータを生成することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の代表的な一形態によれば、時系列に時刻情報が付与されたストリームデータを生成し、該生成したストリームデータについて、登録されたクエリに基づいてストリームデータ処理を行う計算機システムのストリームデータの生成方法であって、前記計算機システムは、前記クエリと、前記ストリームデータを構成する複数種類の構成要素を表すストリーム定義とから前記クエリに対応する前記構成要素を示すクエリ情報を記憶する記憶部と、前記ストリームデータを生成・送信するデータ生成部と、前記データ生成部から送信されたストリームデータの処理を行うストリームデータ処理部と、を備え、前記データ生成部は、前記クエリ情報に基づいて、前記ストリームデータ処理部に送信するストリームデータからより少ないストリームデータを生成することを特徴とする。
【発明の効果】
【００１５】
本発明によれば、ストリームデータ処理システムの処理効率(通信負荷、メモリ使用量、計算量等)を高め、スループット・レイテンシ性能を向上させることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明を適用した計算機システムの原理を示す図である。
【図２】本発明を適用した計算機システムの第1の実施形態の全体構成を示す図である。
【図３】本発明を適用した計算機システムの第１の実施形態で登録されるストリーム定義の一例を示す図である。
【図４】本発明を適用した計算機システムの第１の実施形態で登録されるクエリ定義の一例を示す図である。
【図５】本発明を適用した計算機システムの第１の実施形態で、クエリ定義例に基づいて作成されたクエリ情報テーブルの例を示す図である。
【図６】本発明を適用した計算機システムの第１の実施形態で、ストリームデータを送信する計算機を管理する送信部管理テーブルを示す図である。
【図７】本発明を適用した計算機システムの第１の実施形態で、ストリームデータｓ１用の送信データの一例を示す図である。
【図８】本発明を適用した計算機システムの第１の実施形態で、ストリームデータｓ２用の送信データの一例を示す図である。
【図９】本発明を適用した計算機システムの第１の実施形態で、ストリームデータｓ１用の間引き済みの送信データの一例を示す図である。
【図１０】本発明を適用した計算機システムの第１の実施形態で、ストリームデータｓ２用の間引き済みの送信データの一例を示す図である。
【図１１】本発明を適用した計算機システムの第１の実施形態で、間引いたことを通知するための送信データの一例を示す図である。
【図１２】本発明を適用した計算機システムの第１の実施形態で、クエリ情報テーブルを転送する手順を示すフローチャートである。
【図１３】本発明を適用した計算機システムの第１の実施形態で、クエリ情報テーブルを作成する手順を示すフローチャートである。
【図１４】本発明を適用した計算機システムの第１の実施形態で、送信部管理テーブルを更新する手順を示すフローチャートである。
【図１５】本発明を適用した計算機システムの第１の実施形態で、クエリ情報テーブルを送信する手順を示すフローチャートである。
【図１６】本発明を適用した第１の実施形態で、ストリームデータを間引く手順を示すフローチャートである。
【図１７】本発明を適用した第１の実施形態で、ストリームデータを受信したときの手順を示すフローチャートである。
【図１８】本発明を適用した計算機システムの第２の実施形態の全体構成を示す図である。
【図１９】本発明を適用した第２の実施の形態で、ストリームデータを受信するバッファの状態の一例を示す図である。
【図２０】本発明を適用した第２の実施形態で、バッファ状態情報テーブルを更新する手順を示すフローチャートである。
【図２１】本発明を適用した第２の実施形態で、バッファ状態情報テーブルを転送する手順を示すフローチャートである。
【図２２】本発明を適用した第２の実施形態で、バッファ状態情報テーブルに応じて間引きを行う手順を示すフローチャートである。
【発明を実施するための形態】
【００１７】
[原理説明]
次に、図を用いて、本発明を実施するための形態について詳細に説明する。まず、図１の原理図を用いて、本発明を適用した一実施の形態である計算機システムの原理を説明する。
【００１８】
図１は、本発明を適用した計算機システムの機能を模式的に示す。計算機システムは、ストリームデータを生成・送信するデータ生成部１００と、ストリームデータを受信・分析・演算するストリームデータ処理部２００とから主にその特徴的部分が構成される。ストリームデータ生成部は、例えば、ＣＰＵ等の演算装置とプログラムとの協働により実現される機能部であり、複数設けられている例を示している。
【００１９】
まず、Ｓ１０１で、ストリームデータ処理部２００に対して、ストリーム定義１２６３及びクエリ定義１２６４の登録又は変更が行われる。ストリーム定義は、ストリームデータ処理の条件要素を表すものである。本原理図では、ｃ１＝「数値」、ｃ２＝「文字列」及びｃ３＝「時刻」の例を上げている。
【００２０】
次に、Ｓ１０２で、ストリームデータ処理部２００が、登録されたストリーム定義及びクエリ定義の特徴を表すクエリ情報を作成し、作成したクエリ情報をデータ生成部１００に通知する。図１に示す例では、Ｓ1０２によって作成されたクエリ情報は、クエリの分析結果として必要なカラムがｃ１であり、分析対象とするストリームデータの条件がｃ２＝「‘ＡＡＡ’」であり、分析範囲がストリームデータ「３つ」分であることを表している。
【００２１】
次に、Ｓ１０３で、データ生成部１００が、ストリームデータを生成するためのデータをデータベースから取得（読込む）し、時系列に時刻情報を付して区分したストリームデータを生成する（図１において、時刻情報「１２：００：００」〜「１２：００：０２」が夫々付された３つのデータ。）。
【００２２】
次に、Ｓ１０４で、データ生成部１００が、取得したストリームデータを間引く処理を行う。間引く方法は、クエリ情報とストリームデータとを照らし合わせて２通りの方法が有る。
【００２３】
第１の方法は、ストリームデータがクエリ情報の条件に合っているかを判定し、合っている場合にクエリ情報に記載された必要なカラムのみを残し、その他のカラムを間引く方法である。
【００２４】
第２の方法は、ストリームデータがクエリ情報の条件に合っているかを判定し、合っていない場合にストリームデータそのものを間引く方法である。
【００２５】
次に、Ｓ１０５で、データ生成部１００が、ストリームデータをストリームデータ処理部２００に送信する。
【００２６】
最後に、Ｓ１０６で、ストリームデータ処理部２００が、ストリームデータの分析を行う。図１の例では、クエリ定義である「入力データ３つの範囲で、ｃ１の合計を出力する」に基づいて分析を行う。その後、演算を行い、演算結果を出力する（図１の例では、演算結果として「６」を出力する。）
なお、クエリ情報に記載された分析範囲が３つ分などの個数の範囲であり、ストリームデータすべてを間引く場合には、ストリームデータそのものを間引いたことを通知するためのデータ（以下、「ｎｏｐ(ｎｏ−ｏｐｅｒａｔｉｏｎ)データ」という。）を作成し、ストリームデータ処理部２００に送信する。これは、ｎｏｐデータをストリームデータ処理部２００に通知することで、正しい分析結果を得るためである。即ちストリームデータ処理部２００での分析において、例えば、直近３つ分のストリームデータを分析するといったデータの個数を分析範囲とした分析を行うものである場合、その直近３つ分のストリームデータの全てを分析することで正しい分析結果を出力することができるようになっている。従って、ストリームデータそのものを間引いた場合、ストリームデータ処理部２００では、分析対象である間引かれたストリームデータを検出することが出来ず、正しい分析結果を出力することが出来ないこととなる。そこで、間引かれたデータに代えて、間引いたことを示すｎｏｐデータを通知することで、分析対象の条件に合わないデータも含めた正しい分析結果を出力することができる。
【００２７】
より詳細に説明すると、例えば、直近３つのストリームデータの平均値を分析する場合に、３つのうち１つ目のストリームデータが分析対象であり、残り２つが分析対象ではなく、これら３つのストリームデータの夫々の値が「ｎ」とき、正しい分析結果は、「３分のｎ」となる。しかし、データ送信部で分析対象とならないストリームデータを送信しないとすると（即ち２つ目及び３つ目のストリームデータを送信しないとすると）、ストリームデータ処理部は、これら２つのストリームデータが送信されていないことを検知することができず、後続するストリームデータが分析対象となってしまい（４つ目及び５つ目のストリームデータと、１つ目のストリームデータとから分析を行ってしまい）、正しい分析結果を得ることができない。
【００２８】
そこで、分析を個数の範囲で行う場合には、Ｓ１０４で、データ生成部１００がストリームデータそのものを間引いた際、ｎｏｐデータを生成し、Ｓ１０５の送信処理でｎｏｐデータを送信し（２つ目及び３つ目のストリームデータに代えて送信し）、Ｓ１０６で、ストリームデータ処理部が、ｎｏｐデータを分析範囲に含めるが分析対象としないように分析を行い、演算をすることで正しい結果を得られるようにするようにした。
【００２９】
従来であれば、ストリームデータ処理部２００において、全てのストリームデータについて分析を行っていた為、要求にないデータを分析するという処理負荷が発生するという課題があった。これに対し本実施の形態では、ストリームデータ中の各種データのうち、分析の要求があるデータを管理し、要求のないデータを間引くことで、ストリームデータ処理部２００で分析するストリームデータを削減するようになっている。更に、間引き処理を行うことで、ストリームデータ処理部で正しい分析結果を出力することができるように、間引いたデータの代わりにｎｏｐデータを送信するようになっている。以上が、本発明を適用した計算機システムの原理である。
【００３０】
なお、上述の計算機システムでは、Ｓ１０３において、データ生成部１００が、ストリームデータを生成する方法として、データ生成部１００が、夫々のストリームデータに対して時刻情報を付する例について述べたが、時刻情報の付与については、データ生成部１００ではなく、ストリームデータ処理部２００が、データ生成部１００からストリームデータを受信した順に、夫々のストリームデータに付与する方式であってもよい。
【００３１】
[第１の実施形態]
次いで、本発明を適用した計算機システムの第１の実施形態について、図を用いて詳細に説明する。図２は、本発明を適用した第１の実施形態である計算機システム１の全体構成を示す。
【００３２】
本実施形態の計算機システム１は、データ送信計算機１１００、ストリームデータ処理計算機１２００及び結果受信計算機１３００を含む。データ送信計算機１１００とストリームデータ処理計算機１２００はネットワーク１４００を介して接続されており、ストリームデータ処理計算機１２００と結果受信計算機１３００とはネットワーク１５００を介して接続されている。
【００３３】
本実施の形態では、データ送信計算機１１００内のＣＰＵ１１１０との協働により起動するプログラムが、図１の原理図に示すデータ生成部１００の機能に相当し、ストリームデータ処理計算機１２００内のＣＰＵ１２１０との協働により起動するプログラムが、図１の原理図に示すストリームデータ処理部２００の機能に相当する。また、本実施形態では、データ送信計算機１１００、ストリームデータ処理計算機１２００及び結果受信計算機をネットワーク１４００若しくは１５００を解して通信接続する構成としているが、本発明は、これら計算機を一体として構成することも、組合せにより一体として構成することも当然に可能である。また、本実施形態では、データ送信計算機１１００に、間引部１１３１を設ける構成としているが、ストリームデータ処理計算機１２００内の外部インタフェース内にアダプタとして設ける構成とすることもできる。
【００３４】
なお、本実施形態では、説明を簡単にするために、データ送信計算機１１００では、ストリームデータの生成及び間引処理等を行うアプリケーションプログラムが１つ起動しているものとするが、上述した図１の原理図に示すように、アプリケーションプログラムは、複数起動する構成とすることもできる。
【００３５】
また、ストリームデータの例としては、ファイナンシャルアプリケーションにおける株価配信情報、小売業におけるＰＯＳデータ、交通情報システムにおけるプローブカー情報及び計算機システム管理におけるエラーログなどが挙げられる。
【００３６】
データ送信計算機１１００は、ＣＰＵ１１１０，ＤＩＳＫ１１２０及びメモリ１１３０を備える。ストリームデータ計算機１１００は、ストリームデータを生成し、ストリームデータ処理計算機１２００にストリームデータを送信するようになっている。ストリームデータの生成及び送信は、データ送信計算機１１００上のプログラムとして実装されてもよいし、データ送信計算機１１００上に搭載される専用ハードウェアとして搭載してもよい。
【００３７】
ＣＰＵ１１１０は、メモリ１１３０上のプログラムを実行する。ＤＩＳＫ１１２０は、メモリ１１３０上のプログラムが利用するデータを格納する。メモリ１１３０は、ＣＰＵ１１１０によって実行されるプログラム及び当該プログラムの実行に必要なデータを記憶する。
【００３８】
メモリ１１３０は、プログラムとＣＰＵ１１１０との協働により、間引部１１３１（図１の「間引部」の機能に相当。）、データ送信部１１３２、接続部１１３３、クエリ情報テーブル１１３４（図１の「クエリ情報」に相当。）及びテーブル受信部１１３５といった機能部を構成する。接続部１１３３は、ストリームデータ処理計算機１２００と接続し、テーブル受信部１１３５は、ストリームデータ処理計算機１２００からクエリ情報テーブル１１３４を受信して、ストリームデータを生成する。間引部１１３１は、受信したクエリ情報テーブル１１３４に基づいて、ストリームデータを所定の条件により間引く処理を行う。データ送信部１１３２は、ネットワーク１４００を介し、間引部１１３１が間引いたストリームデータをストリームデータ処理計算機１２００に送信する。ストリームデータとして生成されるデータは、例えば、ＤＩＳＫ１１２０から読み出してもよいし、プログラム内で生成してもよい。
【００３９】
ストリームデータ処理計算機１２００は、ＣＰＵ１２１０、ＤＩＳＫ１２２０及びメモリ１２３０を備える。ストリームデータ処理計算機１２００は、例えば、ブレード型計算機システム、ＰＣサーバなどの計算機システムであってもよい。
【００４０】
ストリームデータ処理計算機１２００は、データ送信部１１３２から送信されたストリームデータを受信し、分析し、その分析結果を、ネットワーク１５００を介して、結果受信計算機１３００に送信する。
【００４１】
メモリ１２３０には、オペレーティングシステム１２４０やオペレーティングシステム１２４０上で動作するプログラムと、ＣＰＵ１２１０との協働により、データ送信部管理部１２５０、クエリ管理部１２６０及びストリームデータ処理部１２７０が構成される。
【００４２】
データ送信部管理部１２５０は、データ送信計算機１１００を管理する。データ送信部管理部１２５０は、更に、送信部管理部１２５１、テーブル転送部１２５２及び送信部管理テーブル１２５３を含む。送信部管理部１２５１は、データ送信計算機１１００と接続すると、データ送信計算機１１００の情報を送信部管理テーブル１２５３に記録する。送信部管理テーブル１２５３は、ストリームデータ処理計算機１２００と接続したデータ送信計算機１１００の情報を記録したものであり、その内容は図６で後述する。
【００４３】
テーブル転送部１２５２は、ストリームデータ処理計算機１２００が保持するクエリ情報テーブル１２６５を送信部管理テーブル１２５３に記録されたデータ送信計算機１１００に対して転送する。クエリ情報テーブル１２６５の転送の契機は、例えば、データ送信計算機１１００がストリームデータ処理計算機１２００に接続したときでもよいし、データ送信計算機１１００からクエリ情報テーブル１２６５の転送要求を受けたときでも良い。
【００４４】
クエリ管理部１２６０は、ストリームデータ処理計算機１２００がストリームデータを分析する内容であるクエリを管理する機能部である。クエリ管理部１２６０は、更に、クエリ登録部１２６１、クエリ解析部１２６２、ストリーム定義１２６３（図１の「ストリーム定義」に相当。）、クエリ定義１２６４（図１の「クエリ定義」に相当。）及びクエリ情報テーブル１２６５を含む。
【００４５】
クエリ登録部１２６１は、クエリの登録を受け付け、ストリーム定義１２６３及びクエリ定義１２６４を記録する。クエリの登録は、ストリームデータ処理計算機１２００自身が登録要求を行っても良いし、他の計算機から登録要求を受け付けても良い。
【００４６】
クエリ解析部１２６２は、クエリ登録部１２６１が記録したストリーム定義１２６３及びクエリ定義１２６４からクエリ情報テーブル１２６５を作成する。クエリ解析部１２６２がクエリ情報テーブル１２６５を作成する契機は、例えば、クエリ登録部１２６１がクエリ定義１２６４及びストリーム定義１２６３を登録したときでもよいし、クエリ情報テーブル１２６５の作成要求を受けたときでもよい。
【００４７】
ストリーム定義１２６３は、入力されるストリームデータのカラムの種類を表すものである（その内容は、図３を用いて後述する。）。クエリ定義１２６４は、ストリームデータ処理計算機１２００がストリームデータの分析方法を表すものである（その内容は図４を用いて後述する。）。クエリ情報テーブル１２６５は、ストリーム定義１２６３及びクエリ定義１２６４に登録されたクエリの特徴を表すものである（その内容は、図５を用いて後述する。）。
【００４８】
ストリームデータ処理部１２７０は、ストリームデータの処理を行う機能部である。ストリームデータ処理部１２７０は、更に、ストリームデータ受信部１２７１、クエリ処理部１２７２及びストリームデータ送信部１２７３を含む。
【００４９】
ストリームデータ受信部１２７１は、データ送信計算機１１００のデータ送信部１１３２から、ネットワーク１４００を介して、ストリームデータを受信する。
【００５０】
クエリ処理部１２７２は、ストリームデータ受信部１２７１が受信したストリームデータを、クエリ定義１２６４に基づいて分析・演算する。
【００５１】
ストリームデータ送信部１２７３は、クエリ処理部１２７２が分析・演算した結果を、ネットワーク１５００を介して、結果受信計算機１３００に送信する。
【００５２】
結果受信計算機１３００は、ＣＰＵ１３１０、ＤＩＳＫ１３２０及びメモリ１３３０を備える。結果受信計算機１３００は、ストリームデータ処理計算機１２００が分析・演算した結果のストリームデータを受信し、利用する。ストリームデータの受信及び利用の処理は、結果受信計算機１３００上のプログラムとして実装されてもよいし、結果受信計算機１３００上に搭載される専用ハードウェアとして搭載してもよい。
【００５３】
ＤＩＳＫ１３２０は、メモリ１３３０上のプログラムが利用するデータを格納する。メモリ１３３０は、ＣＰＵ１３１０によって実行されるプログラム及び当該プログラムの実行に必要なデータを記憶し、ＣＰＵ１３１０との協働により、ストリームデータ受信部及びアプリケーション実行部を構成する。
【００５４】
ストリームデータ受信部１３３１は、ストリームデータ処理計算機１２００のストリームデータ送信部１２７３から、ネットワーク１５００を介して、ストリームデータを受信する。アプリケーション実行部１３３２は、ストリームデータ受信部１３３１から受信したストリームデータを利用する。ストリームデータの利用は、例えば、外部記憶装置への保存や、ディスプレイ装置への表示等、種々の態様がある。
【００５５】
ネットワーク１４００及びネットワーク１５００は、イーサネット（登録商標）、光ファイバなどで接続されるローカルエリアネットワーク（ＬＡＮ）又はＬＡＮよりも低速なインターネットを含むワイドエリアネットワーク（ＷＡＮ）であってもよい。
【００５６】
データ送信計算機１１００、ストリームデータ処理計算機１２００及び結果受信計算機１３００は、パーソナルコンピュータ、ブレード型計算機システム等の任意のコンピュータシステムでもよい。メモリ１１３０、メモリ１２３０及びメモリ１３３０は、例えば、高速にアクセス可能な揮発性記憶媒体である。
【００５７】
以上が、第１の実施形態における計算機システム１の構成であるが、計算機システム１は、直接ストリームデータを受信する或いは他の計算機を介してストリームデータを受信する等の種々の構成にすることもできる。
【００５８】
次いで、本実施形態における定義、テーブル及びデータの内容を、図３〜図１１を用いて説明する。
【００５９】
図３はストリーム定義１２６３の例を示す。ストリーム定義１２６３はストリームデータ処理計算機１２００が受信するストリームデータのカラムの種類と、参照名とを定義するものである。ストリーム定義１２６３ではストリームデータｓ１及びｓ２の定義をしている。ｓ１は、1カラム目がＩＮＴＥＧＥＲ型の参照名ｃ１、２カラム目がＶＡＲＣＨＡＲ（２０）型の参照名ｃ２である。また、ｓ２は、1カラム目がＩＮＴＥＧＥＲ型の参照名ｃ１、２カラム目がＶＡＲＣＨＡＲ（２０）型の参照名ｃ２、３カラム目がＴＩＭＥＳＴＡＭＰ型の参照名ｃ３である。
【００６０】
図４は、クエリ定義１２６４の例を示す。クエリ定義１２６４はストリームデータ処理計算機１２００が分析するクエリの内容を定義するものである。クエリ定義１２６４では、クエリ名を「ｑ１」、選択するカラムを「ｓ１のｃ１」並びに「ｓ２のｃ２」、分析するストリームの範囲を「ｓ１の1分間」並びに「ｓ２の３個分」及び選択するストリームデータの条件を「ｓ１のｃ１が１０より大きくかつｓ２のｃ２が‘ＡＡＡ’」とクエリを定義する例を示している。
【００６１】
図５は、クエリ情報テーブル１２６５の例を示す。クエリ情報テーブル１２６５は、クエリ定義１２６４の特徴を示し、データ送信計算機１１００の間引部１１３１がストリームデータを間引く際に利用するテーブルである。クエリ情報テーブル１２６５は、ストリーム名５０１、ＳＥＬＥＣＴ５０２、ＦＲＯＭ５０３及びＷＨＥＲＥ５０４の保持し、それぞれクエリ定義１２６４の内容を格納する。例えば、１行目５１０では、ストリーム名Ｓ１について、クエリで選択されるカラムとしてｃ１がＳＥＬＥＣＴ５０２に登録され、時間の範囲で分析を行うことを示す「ＲＡＮＧＥ」が、ＦＲＯＭ５０３に登録され、選択対象となるストリームデータの条件として「ｃ１が１０より大きい」ことがＷＨＥＲＥ５０４に登録されている例を表している。
【００６２】
ストリームデータ処理計算機１２００は、クエリ情報テーブル１２６５を参照することで、ストリーム名ｓ１については、１０より大きいｃ１のみを必要としていることを判断することができる。また、間引部１１３１は、クエリ情報テーブル１２６５を参照することで、ストリーム名ｓ１については、１０より大きいｃ１のみを送信すれば十分であることを判断でき、その他のデータは間引いてよいと判断することができる。また、クエリ情報テーブル１２６５の２行目５２０のＦＲＯＭ５０３は、個数の範囲で分析することを示す「ＲＯＷＳ」になっている。個数の範囲で分析する場合に、ストリームデータそのものを間引くと、ストリームデータ処理計算機１２００で分析する対象のストリームデータにずれが生じる。そのため、間引部１１３１は、クエリ情報テーブル１２６５を参照することで、ｓ２についてはストリームデータそのものを間引く場合に、間引いたことを通知する必要があると判断することができる。
【００６３】
図６は、送信部管理テーブル１２５３の例を示す。送信部管理テーブル１２５３は、ストリームデータ処理計算機１２００に接続したデータ送信計算機１１００を管理するためのテーブルである。ここで、接続とはデータ送信計算機１１００とストリームデータ処理計算機１２００とが、通信経路を確保する処理のことであり、本実施形態では、送信部管理テーブル１２５３で、識別子６０１及びアドレス６０２を保持する例を適用している。ストリームデータ処理計算機１２００は、データ送信計算機１１００が接続するたびに、データ送信計算機１１００の識別子とアドレスとを送信部管理テーブル１２５３に格納する。
【００６４】
図７は、ｓ１用送信データの例を示す。ストリームデータ７１０は、1カラム目７０１がＩＮＴＥＧＥＲ型で値は「５」、２カラム目７０２がＶＡＲＣＨＡＲ型で値は「‘ＡＡＡ’」であることを示す。
【００６５】
図８は、ｓ２用送信データの例を示す。ストリームデータ８１０は、1カラム目８０１がＩＮＴＥＧＥＲ型で値は「１０」、２カラム目８０２がＶＡＲＣＨＡＲ型で値は「‘ＡＡＡ’」、３カラム目８０３がＴＩＭＥＳＴＡＭＰ型で値は「１２：００：００」であることを示す。
【００６６】
図９は、ｓ１用の間引き済み送信データの例を示す。ストリームデータ９１０は、1カラム目にＩＮＴＥＧＥＲ型の値「１５」を保持し、２カラム目９０２にはデータを保持していない。間引部１１３１は、クエリ情報テーブル１２６５を参照することで、ｓ１はｃ１が１０より大きいストリームデータであるｃ１のみを送信すればよいと判断することができる。ストリームデータ７１０のｃ１は１０より小さいため（即ち「５」。）、ストリームデータ７１０は、データそのものが間引かれ、送信されない。ストリームデータ７２０は、ｃ１が１０より大きいため（即ち「１５」。）送信対象となり、ｃ１以外のデータは間引くことにより、ストリームデータ９１０を作成する。
【００６７】
図１０は、ｓ２用の間引き済み送信データの例を示す。ストリームデータ１０１０は、２カラム目１００２にＶＡＲＣＨＡＲ型の値「‘ＡＡＡ’」を保持し、1カラム目１００１及び３カラム目１００３にはデータを保持しない。間引部１１３１はクエリ情報テーブル１２６５を参照することで、「ｓ２はｃ２が‘ＡＡＡ’のストリームデータの、ｃ２のみを送信すればよい。」と判断することができる。ストリームデータ８１０は、ｃ２が「‘ＡＡＡ’」であることから送信対象であり、ｃ２以外のデータは間引くことにで、ストリームデータ１０１０を作成する。
【００６８】
図１１は、ストリームデータそのものを間引いたことを通知するためのｎｏｐデータ１１００の例を示す。ｎｏｐデータは、ストリームデータ処理計算機１２００において、分析範囲には含まれるが、分析対象とはならないデータである。ストリームデータそのものを間引くことで、本来同じ分析範囲に含まれないストリームデータが分析されることを防ぐために、ｎｏｐデータが利用される。ストリームデータ８２０は、ｃ２が‘ＢＢＢ’であるため、間引部１１３１によってストリームデータそのものが間引かれる。このとき、クエリ情報テーブル１２６５によれば、ｓ２はＦＲＯＭが「ＲＯＷＳ」となっており、個数の範囲で分析されるようになっている。このことから、間引部１１３１は、ストリームデータ８２０の代わりに、間引いたことを通知するｎｏｐデータ１１００を作成する。
【００６９】
次に、本実施形態の処理の流れを、図１２〜図１７を用いて説明する。
【００７０】
図１２は、ストリームデータ処理計算機１２００が、クエリ登録を契機にクエリ情報テーブル１２６５を作成し、データ送信計算機１１００に転送するフローを示す。まず、Ｓ１２０１で、クエリ登録部１２６１がクエリ定義１２６４及びストリーム定義１２６３を受け付ける。
【００７１】
次に、Ｓ１２０２で、クエリ解析部１２６２が、クエリ情報テーブル１２６５を作成する。
【００７２】
次に、Ｓ１２０３で、テーブル転送部１２５２が、クエリ情報テーブル１２６５をデータ送信計算機１１００のテーブル受信部１１３５に転送する。
【００７３】
Ｓ１２０２及びＳ１２０３の処理により、ストリームデータ処理計算機１１００のクエリ情報テーブル１２６５と、データ送信計算機１１００のクエリ情報テーブル１１３４とは同じ内容となる。
【００７４】
なお、データ送信計算機１１００がクエリ情報テーブル１１３４を取得する方法としては、データ送信計算機１１００からクエリ情報テーブル１１３４の転送要求を送信し、テーブル転送部１２５２がその転送要求を受信することで転送してもよいし、逆に、テーブル転送部１２５２から、データ送信計算機１１００にクエリ情報テーブル１１３４の転送要求を送信し、データ送信計算機１１００がその転送要求を受信することで転送してもよい。また、テーブル転送部１２５２がクエリ定義１２６４をデータ処理計算機１１００に転送し、データ処理計算機１１００でクエリ情報テーブル１１３４を作成してもよい。また、クエリ定義の登録を、ストリームデータ処理計算機１２００とデータ送信計算機１１００の両方が行い、クエリ情報テーブル１１３４を作成してもよい。また、データ送信計算機１１００が、クエリ情報テーブル１１３４の登録を外部の他の端末装置（例えば、計算機システムとネットワーク等で接続された管理端末等）から受け付けてもよい。
【００７５】
図１３は、データ送信計算機１１００で、クエリ情報テーブル１１３４が作成される処理フローを示す。クエリ情報テーブル１２６５作成は、クエリ解析部１２６１がクエリ定義１２６４を解析することで行われる。クエリ情報テーブル１１３４の作成の具体例を、図４に示すクエリ定義１２６４の例と、図５に示す、クエリ情報テーブル１２６５の例とを用いて説明する。
【００７６】
クエリ情報テーブル１１３４の作成が開始されると、まずS１３１０で、クエリ定義１２６４のＦＲＯＭ区に指定されているストリーム名を、クエリ情報テーブル１２６５のストリーム名５０１に記録する。具体的には、クエリ定義１２６４ではＦＲＯＭ区にｓ１及びｓ２が指定されているので、クエリ情報テーブル１２６５のストリーム名５０１にｓ１とｓ２とを記録する。
【００７７】
次に、S１３２０で、ＳＥＬＥＣＴ５０２の記録を行う。まず、Ｓ１３２１で、クエリ定義１２６４のＳＥＬＥＣＴ区にカラムの指定があるか判定する。カラムの指定がなければ、Ｓ１３３０に移る。カラムの指定がある場合は、Ｓ１３２２で、指定されたカラムを、クエリ情報テーブル１２６５のＳＥＬＥＣＴ５０２の対応するストリームの行に記録する。具合的には、クエリ定義１２６４ではＳＥＬＥＣＴ区に「ｓ１.ｃ１」及び「ｓ２.ｃ２」が指定されているので、クエリ情報テーブル１２６５のＳＥＬＥＣＴ５０２に「ｃ１」と、「ｃ２」とを、それぞれ対応するストリーム名が記録された行５１０及び行５２０に記録する。
【００７８】
次に、ｓ１３３０で、ＦＲＯＭ５０３の記録を行う。まず、Ｓ１３３１で、クエリ定義１２６４のＦＲＯＭ区に指定されたストリームに「ＲＯＷＳ」指定があるかどうかを判定する。「ＲＯＷＳ」指定がない場合は、Ｓ１３３２で、クエリ情報テーブル１２６５のＦＲＯＭ５０３に「ＲＯＷＳ」でないことを記録する。「ＲＯＷＳ」指定がある場合は、Ｓ１３３３でクエリ情報テーブル１２６５のＦＲＯＭ５０３に「ＲＯＷＳ」であることを記録する。具体的には、クエリ定義１２６４のＦＲＯＭ区では、ｓ１は「ＲＯＷＳ」指定でなく、ｓ２が「ＲＯＷＳ」指定となっているため、クエリ情報テーブル１２６５のＦＲＯＭ５０３にＲＮＡＧＥとＲＯＷＳを、それぞれ対応するストリーム名が記録された行５１０及び行５２０に記録する。なお、ＦＲＯＭ５０３はストリームが個数の範囲で分析されるかどうかを示せれば記録する内容は任意とする。例えば、「ＲＯＷＳ」の場合には○とし、そうでなければ×あるいは何も記録しないなどである。
【００７９】
次に、Ｓ１３４０で、ＷＨＥＲＥ５０４の記録を行う。まず、Ｓ１３４１でクエリ定義１２６４のＷＨＥＲＥ区にカラム指定があるかどうかを判定する。カラム指定がない場合は、クエリ情報テーブル１１３４作成の処理を終了する。カラム指定がある場合は、Ｓ１３４２で、指定されたカラムの条件を、クエリ情報テーブル１２６５のＷＨＥＲＥ５０４に記録する。具体的には、クエリ定義１２６４のＷＨＥＲＥ区では、「ｓ１.ｃ１＞１０」及び「ｓ２.ｃ２＝‘ＡＡＡ’」となっているため、クエリ情報テーブル１２６５のＷＨＥＲＥ５０４に、「ｃ１＞１０」及び「ｃ２＝‘ＡＡＡ’」を、それぞれ対応するストリーム名が記録された行５１０及び行５２０に記録する。なお、ＷＨＥＲＥ５０４はストリームデータそのものを間引くかどうかを判断できれば記録する条件は任意である。例えば、記載される条件は、間引く条件、あるいは間引かない条件などである。
【００８０】
ＳＥＬＥＣＴ５０２、ＦＲＯＭ５０３及びＷＨＥＲＥ５０４の記録は、任意の順番で行うことが考えられる。
【００８１】
図１４は、送信部管理テーブル１２５３作成のフローを示す。まず、Ｓ１４０１で、データ送信計算機１１００の接続部１１３３が、ストリームデータ処理計算機１２００に接続する。この時、送信部管理部１２５１は、送信部管理テーブル１２５３作成を開始する。
【００８２】
Ｓ１４０２では、送信部管理部１２５１が、接続されたデータ送信計算機１１００の識別子と、アドレスとを送信部管理テーブル１２５３に格納する。
【００８３】
図１５は、ストリームデータ処理計算機１２００から、クエリ情報テーブル１２６５をデータ送信計算機１１００に転送するフローを示す。Ｓ１５０１及びＳ１５０２までは、データ送信計算機１１００が接続してから送信部管理テーブル１２５３が作成されるまでの処理を示し、既に図１４を用いて説明したものである。
【００８４】
Ｓ１５０２で、ストリームデータ処理計算機１２００のテーブル転送部１２５３が、新たに接続したデータ送信計算機１１００の情報を送信部管理テーブル１２５３から取得し、クエリ情報テーブル１２６５を、送信部管理テーブル１２５３から取得したデータ送信計算機１１００宛に転送する。
【００８５】
次に、Ｓ１５０３で、転送されたクエリ情報テーブル１２６５の内容を、データ送信計算機１１００のテーブル受信部１１３５が受信し、クエリ情報テーブル１１３４を更新する。
【００８６】
図１６は、データ送信計算機１１００の間引部１１３１が行うストリームデータ作成からストリームデータ送信までの間引き処理を示す。まず、Ｓ１６０１で送信するストリームデータの元となるデータをＤＩＳＫ１１２０から読込む。具体的には、例えば、ｓ１用送信データ例７００や、ｓ２用送信データ例８００を読込む。Ｓ１６０１では、送信元となるデータを作成できればよく、ＤＩＳＫ１１２０から読込む他に、例えば、ストリームデータ送信計算機１１００内で生成してもよいし、他の計算機からデータを受け付けても良いし、外部の端末から直接入力するとしてもよい。
【００８７】
Ｓ１６１０で、間引部１１３１は、ストリームデータそのものを間引く処理を行う。まず、Ｓ１６１１で、間引部１１３１は、クエリ情報テーブル１１３４のＷＨＥＲＥ５０４に記載があるか判定する。記載がなければＳ１６２０に移る。記載がある場合は、Ｓ１６１２に移る。
【００８８】
Ｓ１６１２で、間引部１１３１は、読込んだデータがＷＨＥＲＥ５０４の条件にあうかどうかを判断する。条件にあえば送信対象としてＳ１６２１に移り、条件にあわなければデータそのものを間引く対象としてＳ１６３３に移る。具体的には、クエリ情報テーブル１２６５には、ストリームｓ１のＷＨＥＲＥ５０４に記載があるため、Ｓ１６１２の処理に移る。ｓ１用送信データ例７１０はｃ＝５であり、クエリ情報テーブル１２６５のＷＨＥＲＥ５０４の条件「ｃ１＞１０」に合わないため、データそのものを間引く対象となり、Ｓ１１６３３に移る。ｓ１用送信データ例７２０は「ｃ＝１５」であり、クエリ情報テーブル１２６５のＷＨＥＲＥ５０４の条件「ｃ１＞１０」に合うため、送信する対象となり、Ｓ１１６２１に移る。読込んだデータがｓ２用の場合も同様である。
【００８９】
次に、Ｓ１６２０で、カラムを間引く処理を行う。まず、Ｓ１６２１で、読込んだデータのカラムがクエリ情報テーブル１２６５のＳＥＬＥＣＴ５０２に記載されているか判定する。記載されている場合にはＳ１６２２に移り、記載されてなければＳ１６３１に移る。
【００９０】
Ｓ１６２２で、ＳＥＬＥＣＴ５０２に記載されていたカラムについて、読込んだデータから送信用ストリームデータに格納する。具体的には、クエリ情報テーブル１２６５の行５１０では、ＳＥＬＥＣＴ５０２にｓ１の選択対象として「ｃ１」が記載されている。そのため、Ｓ１６１０で送信対象となったｓ１用送信データ７２０の1カラム目を、ｓ１用間引き済み送信データの1カラム目９０１に格納する。２カラム目はＳＥＬＥＣＴ５０２に記載がないため、９０２は空とする。読込んだデータがｓ２用の場合も同様にカラムを間引く。Ｓ１６２０の処理により、間引き済みの送信データが作成される。
【００９１】
次に、Ｓ１６３０で、ストリームデータを送信する必要があるか判定したうえで送信処理を行う。Ｓ１６３１で、送信用のデータに値が格納されているかを判定する。格納されている場合にはＳ１６３２に移り、格納されていない場合にはＳ１６４１に移る。
【００９２】
Ｓ１６３２で、ストリームデータをストリームデータ処理計算機１２００のストリームデータ受信部１２７１に送信する。具体的には、Ｓ１６１０及びＳ１６２０の処理で作成されたｓ１用の間引き済み送信データ９１０の、1列目に値が格納されているため、ｓ１用の間引き済み送信データ９１０をストリームデータ処理計算機１２００に送信する。
【００９３】
Ｓ１６４０で、送信対象のデータがない場合の処理を行う。まず、Ｓ１６４１で、送信先のストリームが個数の範囲で分析を行っているかを判定する。個数の範囲で分析を行っている場合にはＳ１６４２に移り、そうでなければ何も送信せずに次のデータを読込むＳ１６０１に移る。
【００９４】
Ｓ１６４２で、送信用データとしてｎｏｐデータ１１００を作成し、Ｓ１６３２でｎｏｐデータを送信する。具体的には、ｓ１用送信データ７１０そのものをＳ１６１２で間引いたときに、Ｓ１６４１に移る。クエリ情報テーブル５００のＦＲＯＭ５０３の行５１０を見ると、ｓ１は「ＲＡＮＧＥ」で分析しており、個数の範囲で分析していないことがわかる。そのため、ｓ１用送信データ７１０をストリームデータ処理計算機１２００に送信しない。また、ｓ２用送信データ８２０はＳ１６１２でＷＨＥＲＥの条件に合わないため、Ｓ１６４１に移る。クエリ情報テーブル１２６５のＦＲＯＭ５０３の行５２０を見ると、ｓ２は「ＲＯＷＳ」で分析しており、個数の範囲で分析していることがわかる。そのためｎｏｐデータ１１００を作成し、送信することで、ｓ２用の送信データを間引いたことを通知する。
【００９５】
図１６に示す処理の流れで、データ作成、間引き及び送信処理が行われる。なお、データを間引くタイミングは、データ送信前であればいつでもよい。例えば、図１６を用いて説明したとおり、Ｓ１６１１でデータを読込んだのちにデータ又はカラムを間引く方法でもよいし、あるいはデータまたはカラムを間引く必要があるか判定してから、必要なデータまたはカラムのみを送信用データとして読込んでも良い。
【００９６】
図１７は、ストリームデータ処理計算機１２００のストリームデータ受信部１２７１が、ストリームデータを受信したときのフローを示す。
【００９７】
まず、Ｓ１７０１でストリームデータ受信部１２７１がストリームデータを受信する。
【００９８】
次に、Ｓ１７０２で、クエリ処理部１２７２が受信したストリームデータがｎｏｐデータかどうかを判定する。ｎｏｐデータでなければ、Ｓ１７０３に進み、通常通りに処理する。即ち受信したストリームデータをクエリ分析の範囲に含め、クエリ分析対象として処理する。
【００９９】
受信したストリームデータがｎｏｐであれば、Ｓ１７０４で、ｎｏｐデータに対する処理を行う。ｎｏｐを受信した場合は、クエリ分析の範囲に含めるが、分析の対象とはせずにクエリ処理を行う。例えば、３つ分のストリームデータの合計値を求めるクエリでは、1つ目のストリームデータが１、２つ目のストリームデータが２、３つ目のストリームデータがｎｏｐデータであった場合に、合計値として１＋２を計算し３を導き出す。このとき、ｎｏｐデータは、３つ分の範囲には含まれているが、合計値を算出する際には関与していない。
以上が、本発明を適用した計算機システム１の第１の実施形態の説明である。
【０１００】
[第１の実施形態の変形例]
次いで、第１の実施形態の変形例について説明する。本変形例では、第1の実施形態において、クエリの分析範囲として、更に時間の範囲を含んで分析を行う場合にもｎｏｐデータを作成するかどうかの判断を行うことを特徴とする。
【０１０１】
時間の範囲で分析を行う場合であっても、分析対象となるストリームデータの個数を考慮するクエリであるときには、ストリームデータそのものを間引いたときにクエリ処理の結果が正しくならない。個数を考慮するクエリは、具体的には、分析対象となるストリームデータの個数を求めるクエリや、分析対象のストリームデータの平均値を求めるクエリの場合である。そこで、個数を考慮するクエリの場合にもｎｏｐを生成・送信を行うこととする。
【０１０２】
まず、図１３のクエリ情報テーブル１１３４を作成するフローの中で、クエリが時間の範囲で分析し個数を考慮しているかどうか判定し、クエリ情報テーブル１１３４に記録する。具体的には、例えば、クエリが時間の範囲で分析し個数を考慮している場合は、クエリ情報テーブル１１３４のＦＲＯＭ５０３にＲＡＮＧＥ＿ＣＯＵＮＴと記録する或いはクエリ情報テーブル１１３４の新たな列に記録をするなどである。
【０１０３】
次に、図１６の間引き処理のフローで、Ｓ１６４０で送信データが何もない場合に、Ｓ１６４１で送信先ストリームがＲＯＷＳかどうかを判定することと同様に、送信ストリームが時間の範囲で分析し個数を考慮しているどうかを判定する。個数を考慮していればｎｏｐデータを作成・送信し、個数を考慮していなければＳ１６０１に移り次のデータを読込む。具体的には、例えば、クエリ情報テーブル１１３４のＦＲＯＭ５０３にＲＡＮＧＥ＿ＣＯＵＮＴと記載されていれば、ｎｏｐデータを作成・送信し、そうでなければ次のデータを読込むなどである。
【０１０４】
[第２の実施の形態]
次に、本発明を適用した計算機システム２０００の第２の実施形態について説明する。第２の実施形態では、ストリームデータを間引くか否かの判断において、ストリームデータの滞留数に応じて判断を行う実施形態である。
【０１０５】
図１８に、第２の実施形態における計算機システム２０００のシステム構成を示す。なお、以下の説明では、計算機システム２０００の構成の内、第１の実施形態における計算機システム１と同様（若しくは同類）の機能構成を有するものは同一符号をもって詳細な説明を省略するものとし、相違点についてのみ詳細に説明するものとする。
【０１０６】
図１８に示す計算機システム２０００と、第１の実施形態の計算機システム１とで特に異なる構成は、データ送信計算機２１００がバッファ状態情報テーブル２１５０を有し、ストリームデータ処理計算機２２００がバッファ状態情報テーブル１２８０を有し、間引部２１１０が、バッファ状態情報テーブル２１５０を参照しながら、ストリームデータの滞留数に応じて間引く処理を行うことである。
【０１０７】
図１９は、ストリームデータ処理計算機２２００内のバッファ状態情報テーブル１２８０を示す。バッファ状態情報テーブル１２８０は、ストリームデータ処理計算機２２００が受信したストリームデータ量を、ストリームごとに記録するものである。バッファ状態情報テーブル１２８０は、ストリームデータ名１２８１及び滞留数１２８２を記録し、保持する。
【０１０８】
次に、バッファ状態情報テーブル１２８０を考慮した処理の流れを説明する。
図２０は、バッファ状態情報テーブル１２８０を更新するフローを示す。
【０１０９】
まず、Ｓ１９０１で、ストリームデータ計算機２２００のストリームデータ受信部１２７１が、ストリームデータを受信する。
【０１１０】
次に、Ｓ１９０２で、ストリームデータ受信部１２７１が、ストリームデータ受信部１２７１が受信しているものの未だクエリ処理部１２７２で処理されていないストリームデータの量を、受け付けるストリーム毎にバッファ状態情報テーブル１２８０に記録する。具体的には、ストリームデータ受信部１２７１が受け付けるストリームをバッファ状態情報テーブル１２８０のストリーム名１２８１に記載し、ストリームデータの量を滞留数１２８２に記録する。なお、バッファ状態情報テーブル１２８０はストリームデータ処理計算機２２００の処理状態を示せればよい。滞留数１２８２は、クエリ処理部１２７２で処理されていないストリームデータの量でもよいし、クエリ処理部１２７２で分析の対象となりうるストリームデータ全体の量でもよいし或いは受信したストリームデータに基づき分析・出力されるストリームデータの量でもよい。また、バッファ状態情報テーブル１２８０を更新するタイミングは、ストリームデータを受信したときでもよいし或いは定期的に更新してもよい。
【０１１１】
図２１は、バッファ状態情報テーブル１２８０をデータ送信計算機２１００に転送するフローを示す。まず、Ｓ２００１で、ストリームデータ処理計算機２２００のバッファ状態情報テーブル１２８０が更新される。
【０１１２】
次に、テーブル転送部１２５２が、ストリームデータ処理計算機２２００のバッファ状態情報テーブル１２８０を、データ送信計算機２１００に転送する。
【０１１３】
次に、Ｓ２００３で、データ送信計算機２１００のテーブル受信部１１３５が転送されたバッファ状態情報テーブル１２８０を受信し、データ送信計算機２１００のバッファ状態情報テーブル２１５０を更新する。なお、バッファ状態情報テーブルの転送のタイミングは、ストリームデータ処理計算機２２００のストリームデータの状態を、データ送信計算機２１００に通知できればいつでもよい。例えば、Ｓ２００１に示したようにバッファ状態情報テーブル１２８０を更新したときでもよいし、定期的に転送するとしてもよい。
【０１１４】
図２２は、データ送信計算機２１００で、バッファ状態情報テーブル２１５０を考慮した間引き部２１１０による間引き処理のフローである。
【０１１５】
まず、Ｓ２１０１で、データ送信計算機２１００においてストリームデータ送信処理が開始される。
【０１１６】
次に、Ｓ２１０２で、間引部２１１０が、バッファ状態情報テーブル２１５０を参照し、送信先のストリームデータと、他のストリームの滞留数との滞留数１２８２について比較を行う。送信先のストリームの滞留数が他のストリームの滞留数よりも少なければＳ２１０４の処理に移り、多ければＳ２１０３の処理に移る。
【０１１７】
Ｓ２１０３は、ストリームデータを間引いて送信する処理であり、図１６の間引き処理と同様である。
【０１１８】
Ｓ２１０４は、ストリームデータを間引かずに送信する処理であり、図１６のＳ１６０１及びＳ１６３２と同様に、データを読込んだらそのままストリームデータとして送信を行うものである。
【０１１９】
なお、Ｓ２１０２で間引き処理を行うかどうかの判断は、いつ行っても良い。例えば、Ｓ１６０１でデータを読込む前或いは後で毎回行ってもよいし、定期的に行っても良い。
【０１２０】
この図２２の処理により、ストリームデータ処理計算機２２００における、各ストリームに対する処理状況を平準化し、処理の遅いストリームからの影響を排除することができる。
【符号の説明】
【０１２１】
１、２０００  計算機システム
１００  データ生成部
２００  ストリームデータ処理部
１１００、２１００  データ送信計算機
１１１０  ＣＰＵ
１１２０  ＤＩＳＫ
１１３０  メモリ
１１３１、２１１０  間引部
１１３２  データ送信部
１１３３  接続部
１１３４  クエリ情報テーブル
１１３５  テーブル受信部
１２００、２２００  ストリームデータ処理計算機
１２１０  ＣＰＵ
１２２０  ＤＩＳＫ
１２３０  メモリ
１２４０  オペレーティングシステム
１２５０  データ送信部管理部
１２５１  送信部管理部
１２５２  テーブル転送部
１２５３  送信部管理テーブル
１２６０  クエリ管理部
１２６１  クエリ登録部
１２６２  クエリ解析部
１２６３  ストリームデータ定義
１２６４  クエリ定義
１２６５  クエリ情報テーブル
１２７０  ストリームデータ処理部
１２７１  ストリームデータ受信部
１２７２  クエリ処理部
１２７３  ストリームデータ送信部
１２８０  バッファ状態情報テーブル
１３００  結果受信計算機
１３１０  ＣＰＵ
１３２０  ＤＩＳＫ
１３３０  メモリ
１３３１  ストリームデータ受信部
１３３２  アプリケーション実行部
１４００  ネットワーク
１５００  ネットワーク
２１５０  バッファ状態情報テーブル
【図１】
2011059967.tif 000003
【図２】
2011059967.tif 000004
【図３】
2011059967.tif 000005
【図４】
2011059967.tif 000006
【図５】
2011059967.tif 000007
【図６】
2011059967.tif 000008
【図７】
2011059967.tif 000009
【図８】
2011059967.tif 000010
【図９】
2011059967.tif 000011
【図１０】
2011059967.tif 000012
【図１１】
2011059967.tif 000013
【図１２】
2011059967.tif 000014
【図１３】
2011059967.tif 000015
【図１４】
2011059967.tif 000016
【図１５】
2011059967.tif 000017
【図１６】
2011059967.tif 000018
【図１７】
2011059967.tif 000019
【図１８】
2011059967.tif 000020
【図１９】
2011059967.tif 000021
【図２０】
2011059967.tif 000022
【図２１】
2011059967.tif 000023
【図２２】
2011059967.tif 000024