(57)【特許請求の範囲】
【請求項１】
プロセッサと記憶装置を備えた計算機が、ストリームデータの処理結果を結果受信計算機に送信するストリームデータ処理システムであって、
前記計算機は、
前記ストリームデータを処理するクエリを受け付けるクエリ情報格納部と、
前記クエリ情報格納部が受け付けたクエリによって前記ストリームデータを処理するストリームデータ処理部と、
前記ストリームデータ処理部で処理した結果を前記結果受信計算機へ送信する処理結果送信部と、
前記ストリームデータ処理部へストリームデータを送信するデータ送信部と、を備え、
前記クエリ情報格納部に格納されたクエリを取得するクエリ取得部と、
前記クエリを解析して前記処理結果送信部が結果受信計算機へ送信するデータ量の予測値を演算するクエリ解析部と、
前記予測値と予め設定した閾値とを比較して、前記予測値が閾値を超える場合には、前記データ送信部がストリームデータ処理部へ送信するストリームデータを規制する流量制御部と、
を有することを特徴とするストリームデータ処理システム。
【請求項２】
請求項１に記載のストリームデータ処理システムであって、
前記計算機は、
前記データ送信部と、前記クエリ取得部と、クエリ解析部及び流量制御部を含む第１の計算機と、
前記クエリ情報格納部とストリームデータ処理部及びデータ送信部を含む第２の計算機と、を有し、
前記第２の計算機のクエリ情報格納部は、
前記受け付けたクエリを前記第１の計算機の前記送信部へ送信するクエリ送信部を含み、
前記第１の計算機のクエリ取得部は、
前記クエリ送信部から送信されたクエリを受信するクエリ受信部を有し、
前記第１の計算機の前記クエリ解析部は、
前記データ送信部が第２の計算機へ送信するストリームデータについて前記予測値を求め、
前記第１の計算機の前記流量制御部は、
前記クエリ解析部が求めた前記予測値が閾値を超える場合には、前記第２の計算機へ送信するストリームデータを規制することを特徴とするストリームデータ処理システム。
【請求項３】
請求項１に記載のストリームデータ処理システムであって、
前記クエリ解析部は、
前記データ送信部が前記ストリームデータ処理部へ送信するストリームデータを入力データとし、前記ストリームデータ処理部が出力するクエリの処理結果を出力データとし、入力データと出力データの数の比を予測値として演算することを特徴とするストリームデータ処理システム。
【請求項４】
請求項３に記載のストリームデータ処理システムであって、
前記クエリ解析部は、
前記入力データが出力データの数に与える条件の有無を前記クエリを解析して判定し、前記判定により前記条件がある場合には、当該条件に基づく入力データと出力データの数の関係を求め、
前記流量制御部は、
前記予測値と前記条件に基づく入力データと出力データの数が前記閾値を超えたときには、前記データ送信部がストリームデータ処理部へ送信するストリームデータを規制することを特徴とするストリームデータ処理システム。
【請求項５】
請求項１に記載のストリームデータ処理システムであって、
前記クエリ解析部は、
前記解析するクエリの関数又は演算子について予め入力データと出力データの数の関係を設定し、当該関係に基づいて前記入力データと出力データの数の比を予測値として演算することを特徴とするストリームデータ処理システム。
【請求項６】
プロセッサと記憶装置を備えた計算機が、ストリームデータの処理結果を結果受信計算機に送信するストリームデータ処理方法であって、
前記計算機が、前記ストリームデータを処理するクエリを受け付ける第１のステップと、
前記計算機が、前記受け付けた前記クエリを解析して、前記ストリームデータを処理したときに前記結果受信計算機へ送信するデータ量の予測値を演算する第２のステップと、
前記計算機が、前記予測値と予め設定した閾値とを比較して、前記予測値が閾値を超える場合には、前記計算機のストリームデータ処理部へ送信するストリームデータを規制する第３のステップと、
前記計算機が、前記予測値が閾値以下の場合には、前記ストリームデータを前記計算機のストリームデータ処理部へ送信する第４のステップと、
前記計算機のストリームデータ処理部が、前記ストリームデータを受信して前記クエリによって処理する第５のステップと、
前記クエリによって前記ストリームデータを処理した結果を前記結果受信計算機へ送信する第６のステップと、
を有することを特徴とするストリームデータ処理方法。
【請求項７】
請求項６に記載のストリームデータ処理方法であって、
前記計算機は、
前記ストリームデータ処理部を備えて、前記第１のステップと、第５のステップと、第６のステップを処理する第２の計算機と、前記第２のステップと、第３のステップと、第４のステップを処理する第１の計算機から構成されて、
前記第１のステップは、
前記第２の計算機が、前記受け付けたクエリを前記第１の計算機の前記送信部へ送信し、前記第１の計算機は、前記第２の計算機が送信したクエリを受信し、
前記第２のステップは、
前記第１の計算機が、前記受け付けた前記クエリを解析して、前記ストリームデータを処理したときに前記第２の計算機のストリームデータ処理部が前記結果受信計算機へ送信するデータ量の予測値を演算し、
前記第３のステップは、前記第１の計算機が、前記予測値と予め設定した閾値とを比較して、前記予測値が閾値を超える場合には、前記第１の計算機が前記第２の計算機のストリームデータ処理部へ送信するストリームデータを規制し、
前記第４のステップは、
前記第１の計算機が、前記予測値が閾値以下の場合には、前記ストリームデータを前記第２の計算機のストリームデータ処理部へ送信するストリームデータ処理方法。
【請求項８】
請求項６に記載のストリームデータ処理方法であって、
前記第２のステップは、
前記計算機が、前記ストリームデータ処理部へ送信するストリームデータを入力データとし、前記ストリームデータ処理部が出力するクエリの処理結果を出力データとし、入力データと出力データの数の比を予測値として演算することを特徴とするストリームデータ処理方法。
【請求項９】
請求項８に記載のストリームデータ処理方法であって、
前記第２のステップは、
前記入力データが出力データの数に与える条件の有無を前記クエリを解析して判定し、前記判定により前記条件がある場合には、当該条件に基づく入力データと出力データの数の関係を求め、
前記第３のステップは、
前記予測値と前記条件に基づく入力データと出力データの数が前記閾値を超えたときには、前記ストリームデータ処理部へ送信するストリームデータを規制することを特徴とするストリームデータ処理方法。
【請求項１０】
請求項６に記載のストリームデータ処理方法であって、
前記第２のステップは、
前記解析するクエリの関数又は演算子について予め入力データと出力データの数の関係を設定し、当該関係に基づいて前記入力データと出力データの数の比を予測値として演算することを特徴とするストリームデータ処理方法。
【請求項１１】
プロセッサと記憶装置を備えた計算機が、ストリームデータの処理結果を結果受信計算機に送信するプログラムであって、
前記ストリームデータを処理するクエリを受け付ける第１の手順と、
前記受け付けた前記クエリを解析して、前記ストリームデータを処理したときに前記結果受信計算機へ送信するデータ量の予測値を演算する第２の手順と、
前記予測値と予め設定した閾値とを比較して、前記予測値が閾値を超える場合には、前記計算機のストリームデータ処理部へ送信するストリームデータを規制する第３の手順と、
前記予測値が閾値以下の場合には、前記ストリームデータを前記計算機のストリームデータ処理部へ送信する第４の手順と、
前記計算機のストリームデータ処理部が、前記ストリームデータを受信して前記クエリによって処理する第５の手順と、
前記クエリによって前記ストリームデータを処理した結果を前記結果受信計算機へ送信する第６の手順と、
を前記計算機に実行させることを特徴とするプログラム。
【請求項１２】
請求項１１に記載のプログラムであって、
前記第２の手順は、
前記計算機が、前記ストリームデータ処理部へ送信するストリームデータを入力データとし、前記ストリームデータ処理部が出力するクエリの処理結果を出力データとし、入力データと出力データの数の比を予測値として演算することを特徴とするプログラム。
【請求項１３】
請求項１２に記載のプログラムであって、
前記第２の手順は、
前記入力データが出力データの数に与える条件の有無を前記クエリを解析して判定し、前記判定により前記条件がある場合には、当該条件に基づく入力データと出力データの数の関係を求め、
前記第３の手順は、
前記予測値と前記条件に基づく入力データと出力データの数が前記閾値を超えたときには、前記ストリームデータ処理部へ送信するストリームデータを規制することを特徴とするプログラム。
【請求項１４】
請求項１１に記載のプログラムであって、
前記第２の手順は、
前記解析するクエリの関数又は演算子について予め入力データと出力データの数の関係を設定し、当該関係に基づいて前記入力データと出力データの数の比を予測値として演算することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリームデータ処理システムにおいて、ストリームデータの入出力を行う技術に関する。
【背景技術】
【０００２】
近年、時々刻々と到着する大量のデータ（ストリームデータ）を受信し、リアルタイムで処理するストリームデータ処理システムに対する要求が高まっている。例えば、株取引を支援するファイナンシャルアプリケーションでは、株価の変動に迅速に対応することが最重要の課題の一つである。従来のデータベース管理システム（ＤＢＭＳ）でデータを処理する場合には、受信した株式データを一旦記憶装置に格納する必要があった。今後、さらに大量の株式データを扱う場合に、株価の変動などにリアルタイムで対応することが困難になる可能性がある。
また、ストリームデータをリアルタイムに処理するアプリケーションを個別に作成すると、開発期間の長期化、開発コストの高騰、アプリケーションを利用する業務の変化への迅速な対応が困難といった問題があり、汎用のストリームデータ処理システムが求められている。
ストリームデータ処理システムでは、まず、クエリ（問合せ）をシステムに登録し、ストリームデータの到着とともにクエリが継続的に実行される。しかし、ストリームデータは時々刻々と到着するため、すべてのデータの到着を待ってから処理を開始することは不可能である。また、システムに到着したデータは、データ処理の負荷に影響されることなく、到着順にしたがって処理される必要がある。
「Ｌｏａｄ  Ｓｈｅｄｄｉｎｇ  Ｔｅｃｈｎｉｑｕｅｓ  ｆｏｒ  Ｄａｔａ  Ｓｔｒｅａｍ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍｓ」（Ｅｍｉｎｅ  Ｎｅｓｉｍｅ、Ｔａｔｂｕｌ著、Ｐｈ．Ｄ、Ｂｒｏｗｎ  Ｕｎｉｖｅｒｓｉｔｙ、Ｍａｙ  ２００７．）に開示された技術では、ストリームデータを、最新１０分間などの時間の幅、又は最新１０００件などの個数の幅を指定してストリームデータの一部を切り取りながらリアルタイム処理が実現される、スライディングウィンドウ（以下「ウィンドウ」）と呼ばれる概念を導入している。
また、データを取得するためのクエリを記述するための言語として、ウィンドウを指定可能なＣＱＬ（Ｃｏｎｔｉｎｕｏｕｓ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）が特開２００３−２９８６６１号公報に開示されている。ＣＱＬは、ＤＢＭＳで広く用いられているＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）が拡張されたものであって、ウィンドウの指定が可能となっている。具体的にＣＱＬを利用する技術などについては、例えば、特開２００６−３３８４３２号公報などに開示されている。
しかし、ストリームデータは、ストリームデータ処理システムに対して大量に到着し、また大量のデータを出力するため、ストリームデータ処理システムの出力データを受信する外部アプリケーションでの処理が追いつかず、結果としてストリームデータ処理システムと外部アプリケーションの間で処理しきれなかったデータが蓄積し、外部アプリケーションの処理が大きく遅延したり、最終的にそのデータが失われる恐れがある。これを避けるためには、外部アプリケーションの性能に見合う速度でデータを入力する流量制御が必要になる。なお、ストリームデータ処理システムの出力データ量の制御に応用可能な技術が特開２００８−８３８０８号公報に開示されている。
【発明の開示】
【０００３】
上記従来の技術に開示された技術は、ストリームデータ処理システムが入力データを受信したあとに、ストリームデータ処理システム内に設けたキューを用いてデータの滞留度を監視する手段により実現されている。
特許文献に開示された技術では、ストリームデータ処理システムと外部アプリケーションの間に配置した出力データキューを監視し、出力データキューが外部アプリケーションの最大処理性能に達した時点で、入力データ送信部がデータ入力を停止することにより、上記の課題を解決しようとする。しかしこの解決方法では、入力を停止した時点でストリームデータ処理システムのエンジン内に残っているデータはストリームデータ処理システムから出力されてしまい、外部アプリケーション側での処理超過を避けることができず、前述した課題は解決できない。
そこで本発明は、出力データキューの監視などの実行中の情報を用いず、ストリームデータ処理システムへデータを入力する時点でストリームデータ処理システムの出力データ量を予測して流量制御を行う技術を実現することを目的とする。
本発明の代表的な一形態によれば、クエリ受信部によりあらかじめ登録されているクエリ情報を受信し、クエリ解析部により前記クエリ情報を解析した結果として得られる入力データ数と出力データ数の比率および入力データが出力データ数に与える条件を流量判定規則テーブルに格納し、データ判定部により前記流量判定規則テーブルの情報に基づいてデータ送信部から受信したストリームデータ処理システムへ次に入力するデータが出力データ数に与える影響を判定し、その判定結果をもとにデータの入力の是非を判定する流量制御部を有すること特徴とするデータ入力計算機と、前記データ入力計算機へクエリ情報を送信できる機能を有することを特徴とするストリームデータ処理システムである。
本発明の一形態によれば、ストリームデータ処理部へ入力するデータ量を、予め設定した閾値を超えないように制限することで、ストリームデータ処理部からの出力を利用する外部のアプリケーションでデータ量が過大になるのを回避できる。
【図面の簡単な説明】
【０００４】
図１は本発明の実施の形態のデータ送信計算機およびストリームデータ処理計算機を含む計算機システムの一例を示すブロック図である。
図２は本発明の処理の概要を示すブロック図である。
図３は本発明の実施の形態のストリームデータ処理計算機で登録されるクエリ定義の一例を示す図である。
図４は本発明の実施の形態のクエリ定義例に基づいて作成された流量判定規則テーブルの例を示す図である。
図５は本発明の実施の形態のデータ送信計算機で保持される最大受信流量設定テーブルを示す図である。
図６は本発明の実施の形態のデータ送信計算機で保持される流量予測保持テーブルを示す図である。
図７は本発明の実施の形態のストリームｓ１用の送信データの一例を示す図である。
図８は本発明の実施の形態のクエリ情報テーブルから流量判定規則テーブルを生成する手順を示すフローチャートである。
図９は本発明の実施の形態のクエリ解析部の処理手順を示すフローチャートである。
図１０は本発明の実施の形態のデータ判定部の処理手順を示すフローチャートである。
【発明を実施するための最良の形態】
【０００５】
以下、本発明の一実施形態を添付図面に基づいて説明する。
まず、本実施例における計算機システムの構成を、図１に基づいて説明する。
図１は、本発明の一実施形態として、ストリームデータを送信するデータ送信計算機およびストリームデータを受信して処理を行うストリームデータ処理計算機及びストリームデータ処理計算機の処理結果を利用する結果受信計算機を含む計算機システム（ストリームデータ処理システム）の構成を示すブロック図である。
本発明の実施形態の計算機システムは、データ送信計算機（送信アプリケーション）１１００、ストリームデータ処理計算機１２００、及び結果受信計算機１３００を含む。データ送信計算機１１００とストリームデータ処理計算機１２００はネットワーク１４００により接続されており、ストリームデータ処理計算機１２００と結果受信計算機１３００はネットワーク１５００により接続されている。
データ送信計算機１１００は、ストリームデータをＤＩＳＫ１１２０または外部から読み込み、ストリームデータ処理計算機１２００にストリームデータを送信する。ストリームデータの生成および送信は、データ送信計算機１１００上のプログラムとして実装されてもよいし、データ送信計算機１１００上に搭載される専用ハードウェアとして搭載してもよい。
データ送信計算機１１００は、ＣＰＵ１１１０、ＤＩＳＫ１１２０、及び、メモリ１１３０を備える。
ＣＰＵ１１１０は、メモリ１１３０上のプログラムを実行する。メモリ１１３０には流量制御部１１４０、データ送信部１１３１、クエリ受信部１１３２、クエリ解析部１１３３等がプログラムとして読み込まれる。また、クエリ解析部１１３３は後述のクエリ定義１２６４を解析するための内部テーブル１１３５を備える。
ＤＩＳＫ１１２０は、ストレージ装置などで構成されてメモリ１１３０上のプログラムが利用するデータを格納する。また、ＤＩＳＫ１１２０は流量制御部１１４０、データ送信部１１３１、クエリ受信部１１３２、クエリ解析部１１３３等のプログラムを格納する記憶媒体としても機能する。
メモリ１１３０は、ＣＰＵ１１１０によって実行されるプログラムおよび当該プログラムの実行に必要なデータを記憶する。
メモリ１１３０は、ストリームデータ処理計算機１２００から、あらかじめ登録されているクエリ情報を受信（または取得）するクエリ受信部（クエリ取得部）１１３２、前記クエリ情報を解析してストリームデータ処理計算機１２００の入力データ数と出力データ数の比率および入力データが出力データ数に与える条件を計算するクエリ解析部１１３３、外部から入力データを読み込むデータ送信部１１３１、前記入力データを受信しストリームデータ処理計算機１２００へデータを送信するか否かを判定する流量制御部１１４０、前記入力データをストリームデータとしてストリームデータ処理計算機１２００へ送信するデータ送信部１１３１を含む。
データ送信部１１３１は、ＤＩＳＫ１１２０や外部から入力データを読み込む処理を行う。読み込む入力データは、例えば、ＤＩＳＫ１１２０から読み出してもよいし、プログラム内で生成してもよい。あるいは、データ送信部１１３１の入力データは、他の計算機などから受信したデータであってもよい。
データ送信部１１３１は、ネットワーク１４００によりストリームデータ処理計算機１２００と接続し、ストリームデータを、ネットワーク１４００を介してストリームデータ処理計算機１２００に送信する。
流量制御部１１４０は、クエリ解析部１１３３の結果を保持する流量判定規則テーブル１１４４、前記流量判定規則テーブル１１４４の情報に基づいてデータ送信部１１３１から受信したストリームデータ処理計算機１２００へ次に入力するデータが出力データ数に与える影響を判定するデータ判定部１１４１、データ判定部１１４１により得られた予測されるデータ出力数を格納する流量予測保持テーブル１１４２、ストリームデータ処理計算機１２００からのストリームデータの処理結果の送信の是非に関わる閾値を格納する最大受信流量設定テーブル１１４３を備える。最大受信流量設定テーブル１１４３は、結果受信計算機１３００がストリームデータ処理計算機１２００から受信可能なデータの量を閾値として予め格納する。この閾値は後述するように、ストリームデータ処理計算機１２００が送信する最大出力量（単位時間当たりのデータ数）として機能する。つまり、この閾値は、結果受信計算機１３００がストリームデータ処理計算機１２００から受信可能なストリームデータの処理結果の最大値（データ個数／秒）であり、ストリームデータ処理部１２６０が出力するデータ量を規制すべき値となる。
ストリームデータ処理計算機１２００は、データ送信計算機１１００からストリームデータを受信し、分析し、分析結果を結果受信計算機１３００に送信する。図１に示す計算機システムでは、データ送信計算機１１００からネットワーク１４００を介してストリームデータ処理計算機１２００がストリームデータを受信し、ストリームデータ処理計算機１２００は所定のクエリ処理を行った結果を結果受信計算機１３００にネットワーク５を介して分析結果として送信する。
ストリームデータ処理計算機１２００は、ＣＰＵ１２１０、ＤＩＳＫ１２２０、メモリ１２３０を備える。データ送信計算機１１００は、例えば、ブレード型計算機システム、ＰＣサーバなどの計算機システムであってもよい。
メモリ１２３０には、オペレーティングシステム１２４０、オペレーティングシステム１２４０上で動作するプログラムであるストリームデータ処理部１２６０、クエリ管理部１２５０を含む。
ストリームデータ処理部１２６０は、データ送信計算機１１００からのストリームデータを受信するストリームデータ受信部１２６１と、ストリームデータ受信部１２６１が受信したストリームデータを入力とし、入力されたストリームデータに対してクエリを実行し、受信したストリームデータの処理結果を出力するクエリ処理部１２６２と、クエリ処理部１２６２が実行したクエリの結果を結果受信計算機１３００へ送信するストリームデータ送信部１２６３を含む。
ストリームデータ受信部１２６１は、データ送信計算機１１００のデータ送信部１１３１から、ネットワーク１４００を介して、ストリームデータを受信する。
クエリ管理部１２５０は、ストリームデータ処理計算機１２００がストリームデータを分析する内容であるクエリを管理し、クエリを受け付けるクエリ登録部１２５１と、クエリを格納するクエリ情報テーブル（クエリ情報格納部）１２５３及び受け付けたクエリをストリームデータ処理計算機１２００送信するクエリ送信部１２５２を含む。
クエリ情報テーブル１２５３は、図２に示すように、クエリ登録部１２５１が受け付けたクエリ定義１２６４を保持する。なお、図２の例では、クエリ定義１２６４にストリームデータの定義（ストリーム定義）を内包している例を示す。クエリ情報テーブル１２５３は、クエリ定義とストリーム定義を分離して格納する構成であっても良い。
クエリ登録部１２５１は、クエリの登録を受け付け、ストリーム定義およびクエリ定義１２６４を後述するようにクエリ情報テーブル１２５３へ記録する。クエリの登録は、ストリームデータ処理計算機１２００自身が登録要求を行っても良いし、他の計算機から登録要求を受け付けてもよい。
クエリ管理部１２５０は、ストリーム定義およびクエリ定義１２６４からクエリ情報テーブル１２５３を作成する。クエリ情報テーブル１２５３を作成する契機は、例えば、クエリ登録部１２５１がクエリ定義およびストリーム定義を登録したときでもよいし、クエリ情報テーブル１２５３の作成要求を受けたときでもよい。
ストリーム定義は、ストリームデータ処理計算機１２００へ入力されるストリームデータのカラムの種類を表し、クエリ定義１２６４は、ストリームデータ処理計算機１２００が実施するストリームデータの分析方法を表し、その内容は図３で後述する。
クエリ情報テーブル１２５３は、ストリーム定義の内容およびクエリ定義１２６４に登録されたクエリの特長を表す。
ストリームデータ送信部（処理結果送信部）１２６３は、クエリ処理部１２６２がストリームデータをクエリ定義１２６４に従って分析した結果を、ネットワーク１５００を介して、結果受信計算機１３００に送信する。
結果受信計算機１３００は、ストリームデータ処理計算機１２００がクエリを実行して分析した結果のストリームデータを受信し、利用する。ストリームデータの受信および利用は、結果受信計算機１３００上のプログラムとして実装されてもよいし、結果受信計算機１３００上に搭載される専用ハードウェアとして搭載してもよい。
結果受信計算機１３００は、ＣＰＵ１３１０、ＤＩＳＫ１３２０、メモリ１３３０を備える。
ＣＰＵ１３１０は、メモリ１３３０上のプログラムを実行する。
ＤＩＳＫ１３２０は、メモリ１３３０上のプログラムが利用するデータを格納する。
メモリ１３３０は、ＣＰＵ１３１０によって実行されるプログラムおよび当該プログラムの実行に必要なデータを記憶する。
メモリ１３３０は、ストリームデータ受信部およびアプリケーション実行部１３３２を含む。
メモリ１３３０上のプログラムは、ＣＰＵ１３１０によって実行されることにより、ストリームデータ受信部１３３１がストリームデータ処理計算機１２００のストリームデータ送信部１２６３から、ネットワーク１５００を介して、ストリームデータを受信し、アプリケーション実行部１３３２により受信したストリームデータを利用する。
結果受信計算機１３００におけるストリームデータの利用は、例えば、外部記憶装置への保存や、ディスプレイ装置への表示などである。
ネットワーク１４００およびネットワーク１５００は、イーサネット（登録商標）、光ファイバなどで接続されるローカルエリアネットワーク（ＬＡＮ）、又はＬＡＮよりも低速なインターネットを含むワイドエリアネットワーク（ＷＡＮ）であってもよい。
データ送信計算機１１００、ストリームデータ処理計算機１２００、および結果受信計算機１３００は、はパーソナルコンピュータやブレード型の計算機システムなどの、任意のコンピュータシステムでよい。
メモリ１１３０、メモリ１２３０、およびメモリ１３３０は、例えば、高速にアクセス可能な揮発性記憶媒体である。
データ送信計算機１１００におけるストリームデータの生成および送信の機能、および結果受信計算機１３００におけるストリームデータの受信および利用の機能は、ストリームデータ処理計算機１２００上のプログラムとして実装されても良い。
以上のように、ストリームデータ処理計算機１２００は、直接ストリームデータを受信してもよいし、他の計算機を介してストリームデータを受信してもよい。また、ストリームデータの例としては、ファイナンシャルアプリケーションにおける株価配信情報、小売業におけるＰＯＳデータ、交通情報システムにおけるプローブカー情報、および計算機システム管理におけるエラーログなどが挙げられる。
次に、図２を用いて本発明の原理を説明する。
図２は、データ送信計算機１１００とストリームデータ処理計算機１２００の間で行われる処理の流れと、データ送信計算機１１００内のデータ送信部１１３１と、流量制御部１１４０と、クエリ解析部１１３３の間で行われるデータの流れを示している。
まず、Ｓ２０１で、データ送信計算機１１００がストリームデータ処理計算機１２００にストリームデータを入力する前に、データ送信計算機１１００内に存在するクエリ解析部１１３３が、ストリームデータ処理計算機１２００内に存在するクエリ送信部１２５２とデータ送信計算機１１００内に存在するクエリ受信部１１３２を通して、ストリームデータ処理計算機１２００にあらかじめ登録されているクエリ情報を取得する。
データ処理計算機１２００によるクエリ解析部１１３３は、前記ストリームデータ処理計算機１２００のクエリ情報を解析し、解析の結果得られる入力データ数と出力データ数の比率および入力データが出力データ数に与える条件を流量判定規則テーブル１１４４に格納する。
次に、Ｓ２０２で、データ送信計算機１１００がストリームデータ処理計算機１２００に前記データを入力する時に、データ送信部１１３１が入力データの読み込みを行い、前記データを流量制御部１１４０に送信する。
次に、Ｓ２０３で、流量制御部１１４０内に存在するデータ判定部１１４１が前記入力データを受信し、流量判定規則テーブル１１４４を参照し、前記データをストリームデータ処理計算機１２００に入力した場合に、ストリームデータ処理計算機１２００からの出力データ数に与える影響を求める。図２の例では、出力データ数に与える影響として、データ判定部１１４１が前記入力データを入力した時に出力されるデータ数の予測値を求める。
次に、Ｓ２０４で、データ判定部１１４１が前記影響（予測値）を流量予測保持テーブル１１４２に反映する。図２の例では、流量予測保持テーブル１１４２は予測値（出力データ数／秒）の値を保持していて、データ判定部１１４１は前記予測値（出力データ数／秒）を流量予測保持テーブル１１４２の値に加算する。
次に、Ｓ２０５で、データ送信計算機１１００のデータ判定部１１４１が最大受信流量設定テーブル１１４３に保持する最大出力量と流量予測保持テーブル１１４２に保持する予測出力数（予測値）を比較する。
最後に、Ｓ２０６で、前記Ｓ２０５における予測値が最大出力量を超えないならばデータ送信部１１３１にストリームデータの送信許可を与え、逆に、予測値が最大出力量を超える場合にはデータ送信部１１３１にストリームデータの送信停止を要求する。図２の例では、最大受信流量設定テーブル１１４３と流量予測保持テーブル１１４２は予測値（出力データ数／秒）の値と閾値（受信可能なデータ数／秒）の値を保持している。
このように、流量制御部１１４０では、データ送信部１１３１が、これからストリームデータ処理計算機１２００へ送信しようとしているストリームデータについて、ストリームデータ処理計算機１２００から結果受信計算機１３００へ入力されるデータ量を推定し、推定した予測値が閾値を超えると、データ送信部１１３１からのストリームデータの送信を規制する。これにより、結果受信計算機１３００が受信するデータ量が過大になるのを防止できる。
次に、本発明の詳細を説明する。
まず、本実施例における定義、テーブル、およびデータの内容を、図３から図７を参照して説明する。
図３はクエリ定義１２６４の例を示す。クエリ定義１２６４はストリームデータ処理計算機１２００が受信する、ストリームデータのカラムの種類と参照名と、ストリームデータ処理計算機１２００が分析するクエリの内容を定義するものである。図中ストリームＳ１は、１カラム目がＩＮＴＥＧＥＲ型の参照名ｃ０、２カラム目がＩＮＴＥＧＥＲ型の参照名ｃ１、３カラム目がＴＩＭＥＳＴＡＭＰ型の参照名ｃ２であることを示す。また、図中クエリｑ１は、分析するストリームの範囲をＳ１の最新のデータ３個分とし、出力するストリームデータはＳ１のうちｃ１の最大値を出力する。
図４はデータ送信計算機１１００の流量判定規則テーブル１１４０の例を示す。流量判定規則テーブル１１４０は、クエリ解析部１１３３で得られた解析結果を、「入力数：出力数」テーブル４１０に「５：１〜５」を格納し、「出力データ数に与える影響」テーブル４２０に格納する。「入力数：出力数」テーブル４０１は、クエリ情報１２６４を解析して入力データ数と出力データ数の比率を保持する。「出力データ数に与える影響」テーブル４２０は、入力データが出力データ数に与える影響の内容を、データ数に対する影響と、前述の影響が起こる入力データの条件を保持する。
図５は最大受信流量設定テーブル１１４３の例を示す。最大受信流量テーブル１１４３は、ストリームデータ処理計算機１２００の出力データを受信する結果受信計算機１３００で処理が可能な、１秒あたりのデータ数を保持する。本実施形態において、最大受信流量設定テーブル１１４３の閾値は結果受信計算機１３００のユーザが事前に設定するものとする。なお、最大受信流量設定テーブル１１４３の閾値の設定は、結果受信計算機１３００のユーザのみならず、計算機システムの管理者などが上記閾値を設定するようにしてもよい。
図６は流量予測保持テーブル１１４２の例を示す。流量予測保持テーブル１１４２は、データ送信部１１３１からストリームデータ処理計算機１２００に対して実際に入力されたデータ数と、前述の入力データから予測される出力データ数を保持する。例えば、図中５１１：５０〜２５０は、図７に示す５１１番目のストリームデータ７２０をストリームデータ処理計算機１２００へ入力した場合、最小で５０個、最大で２５０個のデータがストリームデータ処理計算機１２００から出力されることが予測された例を示す。
図７はストリームデータｓ１用の送信データの構成例を示す。ストリームデータ７１０は、１カラム目７０１がＩＮＴＥＧＥＲ型で値は５１０、２カラム目７０２がＩＮＴＥＧＥＲ型で値は−２、３カラム目７０３がＴＩＭＥＳＴＡＭＰ型で値は１２：００：０１であることを示す。同様にストリームデータ７２０〜７４０が順次データ送信計算機１１００からストリームデータ処理計算機１２００へ送信される。そして、ストリームデータ処理計算機１２００では、ストリームデータ７１０〜７４０を分析した結果を結果受信計算機１３００に送信する。
次に、本実施形態の処理の流れを、図８から図１０に基づいて説明する。
図８はストリームデータ処理計算機１２００へのクエリ登録を契機にクエリ情報テーブル１２５３を作成し、クエリ定義１２６４をデータ送信計算機１１００に転送するフローチャートを示す。まず、Ｓ８０１でストリームデータ処理計算機１２００のクエリ登録部１２５１がクエリを受け付ける。
次に、Ｓ８０２で前記クエリ登録部１２５１がクエリ情報テーブル１２５３を作成する。
次に、Ｓ８０３でストリームデータ処理計算機１２００のクエリ送信部１２５２が、クエリ情報テーブル１２５３を、データ送信計算機１１００のクエリ受信部１１３２に転送する。
次に、Ｓ８０４で、データ送信計算機１１００のクエリ解析部１１３３がクエリ受信部１１３２で受信したクエリ情報テーブル１２５３を受け取り、クエリ情報テーブル１２５３を解析し、ストリームデータ処理計算機１２００における入力データ数と出力データ数の比率および入力データが出力データ数に与える影響を算出する。
最後に、Ｓ８０５で、クエリ解析部１１３３が算出された情報を流量判定規則テーブル１１４４に格納する。
図９は図８のＳ８０４で行われるクエリ解析部１１３３における解析処理のフローチャートを示す。以下ではクエリ解析部１１３３における解析処理を、図３に示したクエリ定義１２６４の例と、流量判定規則テーブル１１４０の例を用いて説明する。
クエリ解析部１１３３で解析処理が開始されると、まずＳ９０１により、クエリ定義１２６４を解析し、演算内容を得る。本実施形態では、図３のクエリ定義１２６４中のＳＥＬＥＣＴ句を解析し、ストリームデータのウィンドウ中のデータの中からカラムｃ２の最大値を求める、クエリ解析部１１３３は集合演算ＭＡＸ（ウインドウ内の最大値を求める）を認識する。
次に、クエリ解析部１１３３はＳ９０２により、上記Ｓ９０１で認識した演算内容から入力データ数と出力データ数の比率を得る。本実施形態では、集合演算ＭＡＸの場合の入力データ数と出力データ数の比率は「レンジ幅：１〜レンジ幅：レンジ幅」であると認識する。なお、レンジ幅は、ストリームデータ処理において、直近の入力データ（ストリームデータ）の内、保持するデータ数（＝ウインドウの幅）を規定するものとする。
次に、Ｓ９０３により、Ｓ９０２で得られた入力データ数と出力データ数の比率が、クエリ内の情報を参照しているかを判定する。クエリ定義１２６４から得られた入力データ数と出力データ数の比率は、「レンジ幅：１〜レンジ幅」であり、クエリ内の情報として、レンジ幅を参照している。
レンジ幅等の情報を参照している場合は、Ｓ９０４により、クエリ解析部１１３３はクエリを解析し、クエリ内の情報を得る。図３に示すクエリ定義１２６４の入力の場合、クエリ定義１２６４中の「ＦＲＯＭ  Ｓ１［ＲＯＷＳ  ５］」からレンジ幅を解析して、レンジ幅＝５を得る。
次に、Ｓ９０５により、クエリ内の情報を入力データ数と出力データ数の比率に適用する。図３に示すクエリ定義１２６４の入力例の場合、クエリ定義１２６４中のレンジ幅５を適用し、入力データ数と出力データ数の比率を「５：１〜５」とする。Ｓ９０４、Ｓ９０５の処理では、クエリ定義１２６４を解析して入力データ数と出力データ数の比率が確定するまで、処理を繰り返す。
逆にクエリ内の情報を参照していないか、クエリ内の情報の解決が完了した場合、換言すれば、入力データ数と出力データ数の比率が確定した場合は、Ｓ９０６により、上記演算内容から、入力データの数が出力データ数に与える影響を得る。本実施形態の場合、集合演算ＭＡＸ（ｑ１．ｃ１）の場合の入力データの内容が出力データ数に与える影響は「条件：ｃ１の値が前回のデータより小さい場合  出力データ数：０」であると認識する。
次に、Ｓ９０７により、入力データの内容について出力データ数に与える影響が、クエリ内の情報を参照するかどうかを確認する。
参照している場合は、Ｓ９０８により、クエリを解析し、クエリ内の情報を得る。
次に、Ｓ９０９により、クエリ内の情報を入力データ数と出力データ数の比率に適用する。本入力例の場合はクエリ内の情報を参照していないが、仮に参照している入力の場合、Ｓ９０４からＳ９０５までの処理と同等の処理が行われる。
逆にクエリ内の情報を参照していないか、クエリ内の情報の解決が完了した場合は、解析処理を終了する。すなわち、Ｓ９０６〜Ｓ９０９により、流量判定規則テーブル１１４４の出力データ数に与える影響４２０が確定するまで、Ｓ９０７〜Ｓ９０９を繰り返す。このため、クエリ解析部１１３３はクエリ定義１２６４内のＳＥＬＥＣＴ句等の入力データと出力データの数の関係を解釈するため予め設定された内部テーブル１１３５を備え、この内部テーブル１１３５を参照してクエリ定義１２６４内の入力データと出力データの数の関係を特定する。この内部テーブル１１３５は、例えば、クエリ内で用いる関数（ＭＡＸ等）や演算子毎に入力データと出力データの数の関係を予め設定しておくテーブルである。
図１０はデータ判定部１１４１における流量制御処理のフローチャートを示す。図１０の処理は、データ送信部１１３１が入力データを読み込んで、データ判定部１１４１に入力データを送信する度に実行される。データ送信部１１３１は読み込んだ入力データについて、データ判定部１１４１の流量制御処理の結果に応じて入力データの送信を決定する。
以下では、データ判定部１１４１における流量制御処理を、図３のクエリ定義１２６４の例と、流量判定規則テーブルの例１１４０と、最大受信流量設定テーブルの例１１４３と、流量予測保持テーブルの例１１４２と、ストリームデータｓ１用送信データの構成例７００を用いて説明する。
データ判定部１１４１で流量制御処理が開始されると、まずＳ１００１により、データ判定部１１４１がデータ送信部１１３１から入力データを受信する。
次に、Ｓ１００２により、データ判定部１１４１は流量判定規則テーブルを参照する。図３のクエリ定義１２６４の入力例の場合、流量判定規則テーブル１１４４の内容は、図４で示したように、入力データ数と出力データ数の比率が「５：１〜５」であり、入力データの内容が出力データ数に与える影響は「条件：ｃ１の値が前回のデータより小さい場合  出力データ数：０」である。
次に、Ｓ１００３により、データ判定部１１４１は、入力データについて、まだ確認していない出力に与える影響が存在するかどうかを確認する。図３のクエリ定義１２６４の例の場合、出力データ数に与える影響は、上述のように１つ存在する。
存在する場合は、Ｓ１００４により、入力データの値が、出力に与える影響の「条件」に合致するかどうかを判定する。
合致する場合は、Ｓ１００５により、このデータを入力した時の出力データ数を、上記「条件」に対応する「データ数」であるとみなす。
上記条件に合致しない場合は、Ｓ１００３に戻って判定を継続する。
入力データの値が出力に与える影響の「条件」に合致しない場合は、Ｓ１００６により、流量判定規則テーブル１１４４の「入力数：出力数」を参照し、当該比率に基づいてこのデータを入力した時の出力データ数を求める。Ｓ１００３からＳ１００６の処理について、図３のクエリ定義１２６４の例の場合は、Ｓ１００１で受信したデータが、図７のストリームデータ７２０の場合、ｃ１の値が前回のデータ７１０より小さいため条件に合致し、ストリームデータ７２０を入力した時の出力データ数は０である。一方、Ｓ１００１で受信したストリームデータが図７のストリームデータ７３０の場合、ｃ１の値が前回のストリームデータ７２０より大きいため条件に合致せず、ストリームデータ７３０を入力した時の出力データ数は上記比率に基づいて０．２〜１である。
次に、Ｓ１００７により、データ判定部１１４１求めた出力データ数を、流量予測保持テーブル１１４２に反映する。
次に、Ｓ１００８により、データ判定部１１４１は流量予測保持テーブル１１４２に保持された予測出力数が、最大受信流量設定テーブル１１４３の値を超えているか否かを判定する。
予測出力数が最大受信流量設定テーブル１１４３の値を超えている場合は、Ｓ１００９により、流量制御部１１４０が、データ送信部１１３１からストリームデータ処理計算機１２００へのストリームデータの入力を停止するよう要求する。
一方、予測出力数が最大受信流量設定テーブル１１４３の値を超えていない場合は、Ｓ１０１０により、流量制御部１１４０は、データ送信部１１３１からストリームデータ処理計算機１２００へのデータの入力を継続するよう要求する。Ｓ１００７からＳ１０１０の処理について、図３のクエリ定義１２６４の場合は、Ｓ１００１で受信したデータが図７のストリームデータ７２０の場合、ストリームデータ７２０を入力した時の出力データ数は０であるため、流量予測保持テーブル１１４２の予測出力数は５０〜２５０（個／秒）から変わらず、最大受信流量設定テーブル１１４３に設定されている値＝２５０（個／秒）を超えないため、データ送信部１１３１はストリームデータ処理計算機１２００へストリームデータ７２０の入力（送信）を行う。
一方、Ｓ１００１で受信したデータが図７のストリームデータ７３０（５１２番目のデータ）の場合、ストリームデータ７３０を入力した時の出力データ数は０．２〜１個（５：１〜５：５）であるため、この値（０．２〜１）加えると流量予測保持テーブル１１４２の予測出力数は、例えば、前回の出力データ数が５０〜２５０の場合は、新たな出力データの数が５０．２〜２５１（個／秒）となり、最大受信流量設定テーブル１１４３に設定されている２５０（個／秒）を超えるため、データ送信部１１３１はストリームデータ処理計算機１２００へストリームデータ７３０の入力（送信）を行わない。本実施形態の場合は、所定の単位時間（例えば、１秒）が経過するたび流量予測保持テーブル１１４２の予測出力数を０〜０（個／秒）に戻すリセット処理を行う。このため、ストリームデータ処理計算機１２００へのストリームデータ７３０の入力は、前記のリセット処理を行った後に行われる。したがって、流量予測保持テーブル１１４２は、上記図２のＳ２０４の処理で、データ判定部１１４１が予測値（出力データ数／秒）を求める度に、前回の値に新たな予測値が加算され、所定の単位時間が経過する度に初期化（最小値＝０〜最大値＝０）される。
以上のように、本発明によれば、ストリームデータ処理部１２６０へストリームデータを入力（送信）するデータ量を、結果受信計算機１３００の利用者が設定した最大受信量設定テーブルの閾値を超過しないようにストリームデータの送信側のデータ量を規制することで、結果受信計算機１３００等のストリームデータ処理結果を受け付ける計算機で処理速度超過を回避することが可能となり、円滑なストリームデータの利用を実現できる。
なお、上記実施形態においては、流量制御部１１４０とデータ送信部１１３１及びクエリ解析部１１３３を備えるデータ送信計算機１１００と、ストリームデータ処理部１２６０とクエリ管理部１２３０を備えるストリームデータ処理計算機１２００を独立した計算機として分離した例を示したが、これらの各処理部がひとつの計算機で実行されても良い。
【産業上の利用可能性】
【０００６】
本発明によればストリームデータを送信する計算機と、ストリームデータを受信して処理する計算機と、ストリームデータの処理結果を受信して利用する計算機を備えたストリームデータ処理システムに適用することができる。
【図１】
0005489025.tif 000002
【図２】
0005489025.tif 000003
【図３】
0005489025.tif 000004
【図４】
0005489025.tif 000005
【図５】
0005489025.tif 000006
【図６】
0005489025.tif 000007
【図７】
0005489025.tif 000008
【図８】
0005489025.tif 000009
【図９】
0005489025.tif 000010
【図１０】
0005489025.tif 000011