(57)【要約】  プロセッサとメモリを備えた計算機で、入力されたストリームデータを処理するクエリを生成するクエリ生成方法であって、前記計算機が、前記入力されたストリームデータを必須カラムとオプションカラムに分離し、前記必須カラムに対する処理を定義したテンプレートを読み込む第１のステップと、前記計算機が、前記入力されたストリームデータを必須カラムとオプションカラムに分離し、前記テンプレートで前記必須カラムを処理し、前記テンプレートの処理結果と、前記オプションカラムとをひとつのデータとして出力するクエリを生成する第２のステップと、を含む。
2015097789.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリを備えた計算機で、入力されたストリームデータを処理するクエリを生成するクエリ生成方法であって、
前記計算機が、前記入力されたストリームデータを必須カラムとオプションカラムに分離し、前記必須カラムに対する処理を定義したテンプレートを読み込む第１のステップと、
前記計算機が、前記入力されたストリームデータを必須カラムとオプションカラムに分離し、前記テンプレートで前記必須カラムを処理し、前記テンプレートの処理結果と、前記オプションカラムとをひとつのデータとして出力するクエリを生成する第２のステップと、
を含むことを特徴とするクエリ生成方法。
【請求項２】
請求項１に記載のクエリ生成方法であって、
前記第１のステップは、
前記テンプレートは、前記入力されたストリームデータから分離する必須カラムとオプションカラムを識別子で対応付ける定義を含み、
前記第２のステップは、
前記入力されたストリームデータを分離した必須カラムとオプションカラムとを対応付ける識別子を、前記必須カラムとオプションカラムに付与するクエリを生成するステップと、
前記テンプレートで前記必須カラムを処理するクエリを生成するステップと、
前記識別子に対応する前記テンプレートの処理結果と、前記オプションカラムとを結合して、ひとつのデータとして出力するクエリを生成するステップと、
を含むことを特徴とするクエリ生成方法。
【請求項３】
請求項１に記載のクエリ生成方法であって、
前記第２のステップは、
前記入力されたストリームデータを必須カラムとオプションカラムに分離するクエリを生成するステップと、
前記テンプレートで前記必須カラムを処理するクエリを生成するステップと、
前記テンプレートの処理の遅延に応じた所定のウィンドウサイズで前記オプションカラムを保持し、前記テンプレートの処理結果と、前記オプションカラムとをひとつのデータとして出力するクエリを生成するステップと、
を含むことを特徴とするクエリ生成方法。
【請求項４】
請求項１に記載のクエリ生成方法であって、
前記第２のステップは、
前記入力されたストリームデータを分離した必須カラムとオプションカラムとを対応付ける識別子を、前記必須カラムとオプションカラムに付与するクエリを生成するステップと、
前記テンプレートに含まれるクエリで前記必須カラムを処理する際に、前記必須カラムに対応付けられた識別子を有するオプションカラムを、前記クエリの処理結果に挿入し、当該処理結果と前記オプションカラムとをひとつのデータとして出力するクエリを生成するステップと、
を含むことを特徴とするクエリ生成方法。
【請求項５】
請求項１に記載のクエリ生成方法であって、
前記第２のステップは、
前記入力されたストリームデータを分離した必須カラムとオプションカラムとを対応付ける識別子を、前記必須カラムとオプションカラムに付与するクエリを追加するステップと、
前記テンプレートで前記必須カラムを処理するクエリを生成するステップと、
前記識別子に対応する前記テンプレートの処理結果と、前記オプションカラムとをひとつのデータとして出力するクエリを生成するステップと、
を含むことを特徴とするクエリ生成方法。
【請求項６】
請求項３に記載のクエリ生成方法であって、
前記第２のステップは、
前記テンプレートを解析して前記ウィンドウサイズを決定するステップをさらに含むことを特徴とするクエリ生成方法。
【請求項７】
プロセッサとメモリを備えて、入力されたストリームデータを処理するクエリを生成するクエリ生成装置であって、
前記入力されたストリームデータを必須カラムとオプションカラムに分離し、前記必須カラムに対する処理を定義したテンプレートを読み込んで、前記入力されたストリームデータを必須カラムとオプションカラムに分離し、前記テンプレートで前記必須カラムを処理し、前記テンプレートの処理結果と、前記オプションカラムとをひとつのデータとして出力するクエリを生成するクエリ生成部を、
有することを特徴とするクエリ生成装置。
【請求項８】
請求項７に記載のクエリ生成装置であって、
前記テンプレートは、前記入力されたストリームデータから分離する必須カラムとオプションカラムを識別子で対応付ける定義を含み、
前記クエリ生成部は、
前記入力されたストリームデータを分離した必須カラムとオプションカラムとを対応付ける識別子を、前記必須カラムとオプションカラムに付与するクエリを生成するＩＤ付与部と、
前記テンプレートで前記必須カラムを処理するクエリを生成するテンプレート内クエリ生成部と、
前記識別子に対応する前記テンプレートの処理結果と、前記オプションカラムとを結合して、ひとつのデータとして出力するクエリを生成する結合クエリ生成部と、
を含むことを特徴とするクエリ生成装置。
【請求項９】
請求項７に記載のクエリ生成装置であって、
前記クエリ生成部は、
前記入力されたストリームデータを必須カラムとオプションカラムに分離するクエリを生成し、前記テンプレートで前記必須カラムを処理するクエリを生成するテンプレート内クエリ生成部と、
前記テンプレートの処理の遅延に応じた所定のウィンドウサイズで前記オプションカラムを保持し、前記テンプレートの処理結果と、前記オプションカラムとをひとつのデータとして出力するクエリを生成する結合クエリ生成部と、
を含むことを特徴とするクエリ生成装置。
【請求項１０】
請求項７に記載のクエリ生成装置であって、
前記クエリ生成部は、
前記入力されたストリームデータを分離した必須カラムとオプションカラムとを対応付ける識別子を、前記必須カラムとオプションカラムに付与するクエリを生成するＩＤ付与部を有し、
前記テンプレートに含まれるクエリで前記必須カラムを処理する際に、前記必須カラムに対応付けられた識別子を有するオプションカラムを、前記クエリの処理結果に挿入し、当該処理結果と前記オプションカラムとをひとつのデータとして出力するクエリを生成することを特徴とするクエリ生成装置。
【請求項１１】
請求項７に記載のクエリ生成装置であって、
前記クエリ生成部は、
前記入力されたストリームデータを分離した必須カラムとオプションカラムとを対応付ける識別子を、前記必須カラムとオプションカラムに付与するクエリを追加するＩＤ自動付与部と、
前記テンプレートで前記必須カラムを処理するクエリを生成するテンプレート内クエリ生成部と、
前記識別子に対応する前記テンプレートの処理結果と、前記オプションカラムとをひとつのデータとして出力するクエリを生成する結合クエリ生成部と、
を含むことを特徴とするクエリ生成装置。
【請求項１２】
請求項９に記載のクエリ生成装置であって、
前記クエリ生成部は、
前記テンプレートを解析して前記ウィンドウサイズを決定するウィンドウサイズ算出部をさらに含むことを特徴とするクエリ生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリームデータを処理するクエリをテンプレート化する技術に関する。
【背景技術】
【０００２】
ストリームデータ処理は、多数のセンサなどからのデータや、金融機関などの決済や売買に関するデータを処理する技術として知られている。ストリームデータ処理では、まずクエリをシステムに登録しておき、データが到来するとクエリが継続的に実行される。このクエリを記述する言語の好適な例として、ＣＱＬ（Ｃｏｎｔｉｎｕｏｕｓ Ｑｕｅｒｙ Ｌａｎｇｕａｇｅ）が知られている。【０００３】
ストリームデータ処理の利用範囲を拡大するために、ＣＱＬで記述したストリームデータ処理のクエリをテンプレート化する技術が知られている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２０１１／００９３４９０号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１の技術では、テンプレートで定義されている入力ストリームデータのスキーマは固定されている。このため、ＳＮＳ（Social Networking Service）やＢｌｏｇ等の大量の情報を、入力ストリームデータとして用いる場合には、データソースの種類に応じてテンプレートのスキーマを修正する必要がある。すなわち、あるＳＮＳの情報を入力ストリームデータとするテンプレートのスキーマは、他のＳＮＳの情報のスキーマは異なるため、クエリの記述言語でテンプレートを定義し直すか、多数のテンプレートを予め用意しておく必要がある。【０００６】
クエリの記述言語でテンプレートを定義し直すには、クエリのプログラミング能力を有する者が必要であり、ストリームデータ処理を利用する全てのユーザが行える訳ではない。そして、多数のテンプレートを予め用意するには、ソフトウェアエンジニア等の労力やコストが増大する、という問題があった。【０００７】
そこで本発明は、上記問題点に鑑みてなされたもので、多数のテンプレートを用意することなく、複数の入力を受け付けることでクエリのテンプレートの開発コストを削減することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、プロセッサとメモリを備えた計算機で、入力されたストリームデータを処理するクエリを生成するクエリ生成方法であって、前記計算機が、前記入力されたストリームデータを必須カラムとオプションカラムに分離し、前記必須カラムに対する処理を定義したテンプレートを読み込む第１のステップと、前記計算機が、前記入力されたストリームデータを必須カラムとオプションカラムに分離し、前記テンプレートで前記必須カラムを処理し、前記テンプレートの処理結果と、前記オプションカラムとをひとつのデータとして出力するクエリを生成する第２のステップと、を含む。
【発明の効果】
【０００９】
本発明によれば、入力されたストリームデータを必須カラムとオプションカラムに分離して、必須カラムに対してテンプレートの処理を実施した後、オプションカラムと組み合わせる。これにより、ひとつのテンプレートで複数種の入力を受け付けることが可能となって、テンプレートの種類を抑制することでテンプレートの開発コストを削減することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施例を示し、計算機システムの一例を示すブロック図である。
【図２】本発明の第１の実施例を示し、テンプレートを用いたストリーム処理クエリで行われる処理の概要を示すブロック図である。
【図３】本発明の第１の実施例を示し、クエリ生成部の入出力の関係の一例を示すブロック図である。
【図４Ａ】本発明の第１の実施例を示し、クエリ定義のテンプレートの一例を示す図である。
【図４Ｂ】本発明の第１の実施例を示し、クエリ定義のテンプレートの他の例を示す図である。
【図５Ａ】本発明の第１の実施例を示し、テンプレート構成情報の一例を示す図である。
【図５Ｂ】本発明の第１の実施例を示し、テンプレート構成情報の他の例を示す図である。
【図６】本発明の第１の実施例を示し、ストリーム処理の定義の一例を示す図である。
【図７】本発明の第１の実施例を示し、テンプレート呼び出し情報の一例を示す図である。
【図８】本発明の第１の実施例を示し、テンプレートから生成されたクエリの一例を示す図の前半部である。
【図９】本発明の第１の実施例を示し、テンプレートから生成されたクエリの一例を示す図の後半部である。
【図１０】本発明の第１の実施例を示し、テンプレート呼び出し情報生成部で行われる処理の一例を示すフローチャートである。
【図１１】本発明の第１の実施例を示し、結合処理挿入部で行われる処理の一例を示すフローチャートである。
【図１２】本発明の第１の実施例を示し、ＩＤ付与クエリ定義生成部で行われる処理の一例を示すフローチャートである。
【図１３】本発明の第１の実施例を示し、テンプレート内クエリ定義生成部で行われる処理の一例を示すフローチャートである。
【図１４】本発明の第１の実施例を示し、結合クエリ定義生成部で行われる処理の一例を示すフローチャートである。
【図１５】本発明の第２の実施例を示し、テンプレート登録部の入出力の関係の一例を示すブロック図である。
【図１６】本発明の第２の実施例を示し、ＩＤ未付与テンプレートの一例を示す図である。
【図１７】本発明の第２の実施例を示し、ＩＤを付与されたテンプレートの一例を示す図である。
【図１８】本発明の第２の実施例を示し、オペレータツリーの一例を示す図である。
【図１９】本発明の第２の実施例を示し、テンプレート部分構成情報の一例を示す図である。
【図２０】本発明の第２の実施例を示し、テンプレート構成情報の一例を示す図である。
【図２１】本発明の第２の実施例を示し、テンプレート登録部で行われる処理の一例を示すフローチャートである。
【図２２】本発明の第２の実施例を示し、ＩＤ自動付与部で行われる処理の一例を示すフローチャートである。
【図２３】本発明の第２の実施例を示し、ウィンドウサイズ算出部で行われる処理の一例を示すフローチャートである。
【図２４】本発明の第３の実施例を示し、クエリ生成部の入出力の関係の一例を示すブロック図である。
【図２５】本発明の第３の実施例を示し、ストリーム処理クエリの一例を示す図の前半部である。
【図２６】本発明の第３の実施例を示し、ストリーム処理クエリの一例を示す図の後半部である。
【図２７】本発明の第３の実施例を示し、オプションカラム挿入部で行われる処理の一例を示すフローチャートである。
【図２８Ａ】本発明の第４の実施例を示し、テンプレートの一例を示す図である。
【図２８Ｂ】本発明の第４の実施例を示し、テンプレートの他の例を示す図である。
【図２９Ａ】本発明の第４の実施例を示し、テンプレート構成情報の一例を示す図である。
【図２９Ｂ】本発明の第４の実施例を示し、テンプレート構成情報の他の例を示す図である。
【図３０】本発明の第４の実施例を示し、ストリーム処理の定義の一例を示す図である。
【図３１】本発明の第４の実施例を示し、テンプレート呼び出し情報の一例を示す図である。
【図３２】本発明の第４の実施例を示し、テンプレートに基づいて生成されたストリーム処理クエリの一例を示す図の前半部である。
【図３３】本発明の第４の実施例を示し、テンプレートに基づいて生成されたストリーム処理クエリの一例を示す図の後半部である。
【発明を実施するための形態】
【００１１】
以下、本発明の一実施形態について添付図面を用いて説明する。
【実施例１】
【００１２】
図１は、第１の実施例の計算機システムの一例を示すブロック図である。ストリームデータの処理を実行するストリーム処理実行サーバ１０１は、ネットワーク１１０を介して、テンプレートに基づいてストリーム処理クエリ７００を生成するクエリ生成サーバ１０７と、テンプレートの操作等を行う端末１３０と、ストリームデータを供給するデータソース１４０に接続される。なお、データソース１４０としては、例えば、ＳＮＳ（Social Networking Service）やＢｌｏｇ等を採用することができる。【００１３】
ストリーム処理実行サーバ１０１は、演算処理を行うＣＰＵ１０４と、データやプログラムを保持するメモリ１０２と、プログラムやデータを格納するストレージ１０５と、ネットワーク１１０に接続されるＩ／Ｏインターフェース１０６と、を有する。メモリ１０２にはプログラムとしてのストリームデータ処理エンジン１０３がロードされて、ＣＰＵ１０４によって実行される。なお、ストリームデータ処理エンジン１０３は、ストレージ１０５に格納することができる。【００１４】
ストリームデータ処理エンジン１０３は、後述するように、クエリ生成サーバ１０７で生成されたストリーム処理クエリ７００を継続的に実行し、データソース１４０から受信したストリームデータを処理する。ストリーム処理クエリ７００としては、例えば、上記ＣＱＬ（Ｃｏｎｔｉｎｕｏｕｓ Ｑｕｅｒｙ Ｌａｎｇｕａｇｅ）を用いることができる。以下では、ＣＱＬでストリーム処理クエリ７００を記述する例を示す。【００１５】
クエリ生成サーバ１０７は、演算処理を行うＣＰＵ１２１と、データやプログラムを保持するメモリ１２２と、プログラムやデータを格納するストレージ１２３と、ネットワーク１１０に接続されるＩ／Ｏインターフェース１２４と、を有する。メモリ１２２にはプログラムとしてのテンプレート登録部１０８及びクエリ生成部１０９がそれぞれロードされて、ＣＰＵ１２１によって実行される。ストレージ１２３には、テンプレート１１１と、テンプレート構成情報１１２、ストリーム処理定義５００及びストリーム処理クエリ７００が格納される。なお、プログラムとしてのテンプレート登録部１０８及びクエリ生成部１０９は、ストレージ１２３に格納することができる。【００１６】
ここで、テンプレート構成情報１１２と、クエリ生成部１０９の各機能部はプログラムとしてメモリ１２２にロードされる。ＣＰＵ１２１は、各機能部のプログラムに従って処理を行うことによって、所定の機能を提供する機能部として稼働する。例えば、ＣＰＵ１２１は、テンプレート登録プログラムに従って処理することでテンプレート登録部１０８として機能する。他のプログラムについても同様である。さらに、ＣＰＵ１２１は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。【００１７】
クエリ生成サーバ１０７の各機能を実現するプログラム、テーブル等の情報は、ストレージ１２３や不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。【００１８】
クエリ生成サーバ１０７で行われる主な処理は、テンプレート登録部１０８がテンプレート１１１の設定を行って、このテンプレート１１１と、テンプレート構成情報１１２をストレージ１２３に格納しておく。そして、クエリ生成部１０９は、ストリーム処理定義を入力すると、テンプレート１１１及びテンプレート構成情報１１２を利用してストリーム処理クエリ７００を生成する。【００１９】
端末１３０は、図示しないＣＰＵ、メモリ、ストレージ、Ｉ／Ｏインターフェース及び入出力装置を備えた計算機で、ユーザあるいは管理者の操作を受け付ける。【００２０】
図２は、本発明のテンプレート１１１によって生成されたストリーム処理クエリ７００で行われる処理の概要を示すブロック図である。【００２１】
ストリーム処理クエリ７００は、入力されたストリームデータからテキストを含む必須カラムを抽出し、また、入力ストリームのデータからオプションカラムを抽出して、２つのデータに分割する。このとき、ストリーム処理クエリ７００は、必須カラムとオプションカラムを関連付ける識別子を付与する（７０１）。図示の例では、ストリーム処理クエリ７００が、必須カラムとオプションカラムのそれぞれにテキストＩＤ（図中ｔｅｘｔＩＤ）を付与する例を示す。【００２２】
そして、ストリーム処理クエリ７００は、必須カラムと所定のキーワード（ｋｅｙｗｏｒｄ）について文字列の部分マッチのテンプレート処理を行い、所定のキーワードを含む必須カラムを出力する（７０２）。ストリーム処理クエリ７００は、文字列の部分マッチ処理の出力と、オプションカラムについて、テキストＩＤが一致するデータを所定のウィンドウオペレータで結合する（７０３）。図示の例では、テンプレート処理（７０２）の出力ストリームデータをＮＯＷウィンドウで、オプションカラムのデータと結合する例を示す。【００２３】
本発明では、必須のテキストを含む必須カラムを入力ストリームデータから抽出し、必須カラムのテキスト以外を含む入力ストリームデータを、オプションカラムとして分離する。そして、必須カラムについてはテンプレート１１１で所定の処理（７０２）を行ってから、テンプレート１１１の出力と、オプションカラムを結合する。【００２４】
これにより、テンプレート１１１には必須カラムのみ定義されていれば、異なるスキームのストリームデータであっても当該テンプレート１１１を適用することが可能となるのである。また、オプションカラムはメタデータとして扱うことができる。なお、オプションカラムは、入力ストリームデータそのままであってもよいし、必須カラムを入力ストリームデータから差し引いたデータであっても良い。【００２５】
図３は、クエリ生成部１０９の入出力の関係の一例を示すブロック図である。クエリ生成部１０９は、予め設定されたストリーム処理定義５００を入力し、テンプレート呼び出し情報２０３を生成するテンプレート呼び出し情報生成部２０２と、ストリーム処理クエリ７００を生成する結合処理挿入部２０４とを含む。【００２６】
テンプレート呼び出し情報生成部２０２は、ストリーム処理定義５００に記述されたテンプレート１１１の構成情報（テンプレート構成情報１１２）を取得して、各テンプレート１１１で入力されるストリームデータと、出力されるストリームデータの関係を示すテンプレート呼び出し情報２０３を生成する。【００２７】
結合処理挿入部２０４は、ストリーム処理定義５００及びテンプレート構成情報１１２に基づいて、結合する出力カラムとウィンドウのサイズを決定してストリーム処理クエリ７００を生成する結合処理挿入部２０４とを含む。【００２８】
次に、本実施例で使用するテンプレート１１１の一例を図４Ａ、図４Ｂに示す。図４Ａは、テンプレート１１１−１（ｓｔｒｉｎｇ＿ｐａｒｔ＿ｍａｔｃｈ）の一例を示す図である。【００２９】
テンプレート１１１−１は、２つのＳＥＬＥＣＴ文の問合せ結果を結合するクエリが定義されている。テンプレート１１１−１は、必須カラム"str"の値が"$key"で指定された文字列を含む場合に、"extracted"の値を"$key"で指定された文字列とする問合せと、必須カラム"str"の値が"$key"で指定された文字列を含まない場合に、"extracted"の値を空の文字列とする問合せを結合するクエリが定義されている。【００３０】
図４Ｂは、テンプレート１１１−２（ｓｔｒｉｎｇ＿ｍａｔｃｈ）の一例を示す図である。【００３１】
テンプレート１１１−２は、２つのＳＥＬＥＣＴ文の問合せ結果を結合するクエリが定義されている。テンプレート１１１−２は、必須カラム"str"の値が"$keyword"で指定された文字列と一致する場合に、"extracted"の値を"$key"で指定された文字列とする問合せと、必須カラム"str"の値が"$key"で指定された文字列と一致しない場合に、"extracted"の値を空の文字列とする問合せを結合するクエリが定義されている。【００３２】
なお、以下では、テンプレート１１１−１、１１１−２の総称を符号１１１で表す。【００３３】
図５Ａは、テンプレート構成情報１１２−１（ｓｔｒｉｎｇ＿ｐａｒｔ＿ｍａｔｃｈ）の一例を示す図である。テンプレート構成情報１１２−１は、図４Ａに示した"ｓｔｒｉｎｇ＿ｐａｒｔ＿ｍａｔｃｈ"のテンプレート１１１−１の構成情報を格納したものである。【００３４】
テンプレート構成情報１１２−１は、テンプレート１１１−１の名称（または関数名）を格納する名前１１２１と、必須カラムに対応する入力スキーマ１１２２と、当該テンプレートが出力する出力スキーマ１１２３と、識別子を格納するＩＤ１１２４と、結合処理のウィンドウサイズを格納する結合時ウィンドウサイズ１１２５から構成される。【００３５】
入力スキーマ１１２２は、後述するテンプレート構成情報１１２−１の必須カラム２０３４に対応し、出力スキーマ１１２３は、テンプレート構成情報１１２−１の出力スキーマ１１２３に対応する。【００３６】
図５Ｂは、テンプレート構成情報１１２−２（ｓｔｒｉｎｇ＿ｍａｔｃｈ）の一例 を示す図である。テンプレート構成情報１１２−２は、図４Ｂに示した"ｓｔｒｉｎｇ＿ｍａｔｃｈ"のテンプレート１１１−２の構成情報を格納したものである。テンプレート構成情報１１２−２は、名前１１２１〜結合時ウィンドウサイズ１１２５に、上記テンプレート構成情報１１２−１と同様にして値が格納される。【００３７】
なお、以下では、テンプレート構成情報１１２−１、１１２−２の総称を符号１１２で表す。【００３８】
以上のように、本発明のテンプレート１１１、テンプレート構成情報１１２では、入力スキーマ１１２２の必須カラムとして、文字列（ＳＴＲＩＮＧ）のみを定義しただけであるので、各種ＳＮＳや様々なブログのデータを入力ストリームデータとして扱うことが可能となる。【００３９】
図６は、ストリーム処理定義５００の一例を示す図である。ストリーム処理定義５００は、開発者などによって予め作成され、ストレージ１２３に格納される。そして、クエリ生成サーバ１０７は、端末１３０からのクエリ生成要求によって指定されたストリーム処理定義５００に従ってストリーム処理クエリ７００を生成する。【００４０】
ストリーム処理定義５００は、ストリーム定義５０１で入力となるストリームデータの名前と構成を定義する。図示の例では、入力されるストリームデータ名がｔｗｉｔｔｅｒで、"ｍｓｇＩＤ"のカラムが文字列で、"ｔｉｍｅ"のカラムがタイムスタンプで、"ｔｅｘｔ"のカラムが文字列で、"ｕｓｅｒＩＤ"のカラムが文字列で構成されることを示している。これらが、入力ストリームデータ名がｔｗｉｔｔｅｒの入力スキーマとなる。【００４１】
さらに、ストリーム処理定義５００は、テンプレート呼び出し５０２、５０３で２つのテンプレート１１１を呼び出すことを定義する。テンプレート呼び出し５０２では、"ＣＡＬＬ  ＴＥＭＰＬＡＴＥ"で"twitter_keyword"という呼び出し名で、テンプレートの種類（または機能）が"string_part_match"（文字列の部分一致処理）のテンプレートを呼び出すことを示す。"twitter_keyword"のテンプレート（図４Ａの１１１−１）は、ストリームデータｔｗｉｔｔｅｒのカラム"text"が必須カラムで、ストリームデータtwitter_keywordのカラム"text", "keyword"が出力ストリームデータで、変数"key"は"bigdata"であることを示す。【００４２】
テンプレート呼び出し５０３では、"ＣＡＬＬ  ＴＥＭＰＬＡＴＥ"で"twitter_keyword_influencer"という呼び出し名で、テンプレートの種類（または機能）が"string_match"（文字列の一致処理）のテンプレート（図４Ｂの１１１−２）を呼び出す。"twitter_keyword_influencer"のテンプレート１１１−２は、ストリームデータtwitter_keywordのカラム"ｕｓｅｒＩＤ"が必須カラムで、ストリームデータtwitter_keyword_influencerのカラムuserID, influencerが出力ストリームデータで、変数"key"は"Bob"であることを示す。ここで、"twitter_keyword_influencer"のテンプレートは、上記５０２に示した"twitter_keyword"の出力ストリームデータを入力ストリームデータとする。【００４３】
なお、"twitter_keyword"のテンプレートでは、上記ストリーム定義５０１のうち、必須カラムの"text"以外の"msgID"、"time"、"userID"のカラムがオプションカラムに含まれる。また、上記"twitter_keyword_influencer"のテンプレートでは、必須カラムの"userID"以外の"msgID"、"time"、"text"、"keyword"のカラムがオプションカラムに含まれる。また、上記"twitter_keyword_influencer"のテンプレートでは、"msgID"、"time"、"text"、"userID"が入力スキーマを構成する。【００４４】
以上のように、ストリーム処理定義５００には、入力されるストリームデータと出力となるストリームデータがテンプレート１１１毎に定義される。【００４５】
図７は、テンプレート呼び出し情報２０３の一例を示す図である。テンプレート呼び出し情報２０３は、図６に示したストリーム処理定義５００から、入出力の関係を抽出したテーブルである。【００４６】
テンプレート呼び出し情報２０３は、図６に示したストリーム処理定義５００のテンプレート１１１の呼び出し名を格納するテンプレート呼び出し名２０３１と、テンプレートの種類（または機能）を格納するテンプレート２０３２と、入力となるカラムを格納する入力スキーマ２０３３と、当該テンプレートの必須カラム２０３４と、オプションカラム２０３５と、テンプレートから出力されるカラムを格納する出力カラム２０３６からひとつのレコードが構成される。【００４７】
これらの各フィールド２０３１〜２０３６の値は、図６に示したストリーム定義５０１と、テンプレート呼び出し５０２、５０３の定義から抽出することができる。【００４８】
図８、図９は、クエリ生成部１０９で、テンプレート１１１を用いて生成されたストリーム処理クエリ７００の一例を示す図の前半部及び後半部である。図中７１１は、図６に示したストリーム処理定義５００のストリーム定義５０１をコピーしたもので、ストリームデータ処理の名前と、入力スキーマが定義される。【００４９】
図中７１２では、クエリ生成部１０９は、入力されたデータに対してＩＤを付与して、必須カラムとオプションカラムの関連付けを行うクエリが定義される。このクエリは、図２に示したＩＤ付与に対応した。【００５０】
次に、クエリ生成部１０９は、読み込んだストリームデータ処理定義の５０２とテンプレート１１１−１を読み込んで、テンプレート１１１−１の"string_part_match"の内容をストリーム処理クエリ７００に展開する（７１３）。クエリ生成部１０９は、"string_part_match"のテンプレートの出力カラムと、オプションカラムを結合する結合クエリ定義を挿入する（７１４）。なお、結合クエリ定義の挿入は、図３に示した結合処理挿入部２０４によって後述するように実施される。【００５１】
図９の図中７１５〜７１７では、クエリ生成部１０９は、図８と同様に、データに対してＩＤを付与し（７１５）、読み込んだストリームデータ処理定義の５０３とテンプレート１１１−３を読み込んで、テンプレート１１１−２の"string_match"の内容をストリーム処理クエリ７００に展開し（７１６）、"string_match"のテンプレートの出力カラムと、オプションカラムを結合する結合クエリ定義を挿入する（７１７）。なお、結合クエリ定義の挿入は、上記７１４と同様に結合処理挿入部２０４によって後述するように実施される。【００５２】
以上のように、クエリ生成部１０９は、読み込んだストリーム処理定義５００に含まれる２つのテンプレート１１１−１、１１１−２から、ストリーム処理クエリ７００を生成する。【００５３】
以下、図３に示したクエリ生成部１０９で行われる処理の詳細について説明する。【００５４】
図１０は、テンプレート呼び出し情報生成部２０２で行われる処理の一例を示すフローチャートである。この処理は、クエリ生成サーバ１０７が、端末１３０からクエリ生成要求を受信したときに実行される（９０１）。なお、クエリ生成要求には、ストリーム処理定義５００が指定されている。【００５５】
クエリ生成部１０９のテンプレート呼び出し情報生成部２０２は、クエリ生成要求で指定されたストリーム処理定義５００をストレージ１２３から読み込む（９０２）。次に、テンプレート呼び出し情報生成部２０２は、ストリーム処理定義５００に含まれるテンプレート１１１を抽出する。そして、テンプレート呼び出し情報生成部２０２は、抽出したテンプレート１１１の構成情報（テンプレート構成情報１１２）を、ストレージ１２３から読み込む（９０３）。なお、ストリーム処理定義５００に含まれるテンプレート１１１の抽出は、図６の５０２、５０３で示したように、"CALL  TEMPLATE"で記述されたテンプレート１１１を抽出すればよい。【００５６】
テンプレート呼び出し情報生成部２０２は、読み込んだテンプレート構成情報１１２のそれぞれについて、テンプレート呼び出し情報２０３がメモリ１２２上に登録されているか否かを判定する（９０４）。【００５７】
テンプレート呼び出し情報生成部２０２は、すべてのテンプレート構成情報１１２についてテンプレート呼び出し情報２０３が登録されていれば処理を終了する（９０７）。【００５８】
テンプレート呼び出し情報生成部２０２は、テンプレート呼び出し情報２０３に登録されていないテンプレート構成情報１１２が存在する場合には、ステップ９０５、９０６の処理により、テンプレート構成情報１１２毎にテンプレート呼び出し情報２０３を生成し、メモリ１２２に格納していく。【００５９】
まず、ステップ９０５で、テンプレート呼び出し情報生成部２０２は、入力ストリームデータのスキーマが確定しているテンプレートについて、ストリーム処理定義５００の情報を取得する。入力ストリームデータのスキーマが確定している、ということは、図７のストリーム処理定義５００のストリーム定義５０１を入力とするテンプレート１１１から順に、入力スキーマと出力スキーマを辿って、テンプレート構成情報１１２毎にテンプレート呼び出し情報２０３を登録する。具体的には、テンプレート呼び出し情報生成部２０２が、ストリーム処理定義５００に記載されているテンプレート呼出し名２０３１と、入力スキーマ２０３３と、必須カラム２０３４と、出力カラム２０３６と、をテンプレート呼び出し情報２０３に登録する。また、テンプレート呼び出し情報生成部２０２は、必須カラム２０３４以外の入力ストリームデータのカラム（入力スキーマ２０３３）をオプションカラム２０３５としてテンプレート呼出し情報２０３３に登録する。【００６０】
ステップ９０６では、テンプレート呼び出し情報生成部２０２が、出力カラム２３０４及びオプションカラム２３０５に含まれるカラムの集合を、テンプレート１１１の出力ストリームデータを入力とする次のテンプレートの入力ストリームデータのスキーマとする。つまり、前段のテンプレート１１１の出力スキーマを確定し、当該出力スキーマを入力とするテンプレート１１１を次の処理対象とする。そして、テンプレート呼び出し情報生成部２０２は、ステップ９０４へ戻って、全てのテンプレート構成情報１１２について上記処理を繰り返して実行する。【００６１】
上記処理によって、ストリーム処理定義５００に記述されたテンプレートの構成情報１１２について、入力スキーマと出力スキーマを確定させながらテンプレート呼出し情報２０３３を生成することができる。換言すれば、前段の出力スキーマが確定しているテンプレート１１１から順に、処理が行われる。なお、テンプレート呼出し情報２０３３は、ストレージ１２３に格納されても良い。【００６２】
図１１は、図３で示したように、クエリ生成部１０９の結合処理挿入部２０４で行われる処理の一例を示すフローチャートである。この処理は、テンプレート呼び出し情報生成部２０２の処理が完了した後に、実行される。【００６３】
結合処理挿入部２０４は、まず、ストリーム処理定義５００とテンプレート構成情報１１２及びテンプレート呼び出し情報２０３を読み込む（１００１、１００２）。結合処理挿入部２０４は、ストリーム処理定義５００に記述された全てのテンプレート１１１について、ＩＤ付与クエリと、テンプレート内クエリ及び結合処理クエリの生成が完了したか否かを判定する（１００３）。結合処理挿入部２０４は、全てのテンプレート１１１について処理が完了していれば当該結合処理を終了する（１００８）。一方、処理が完了していないテンプレート１１１が存在する場合、結合処理挿入部２０４はステップ１００４〜１００６の処理が全てのテンプレート１１１で完了するまで繰り返して実行する。【００６４】
結合処理挿入部２０４は、ＩＤ付与クエリ、テンプレート内クエリ、結合処理クエリを生成していないテンプレートを抽出する（１００４）。結合処理挿入部２０４は抽出したテンプレート１１１について、図１２に示すＩＤ付与クエリ定義生成処理（ＩＤ付与部）を実行する（１００５）。次に、結合処理挿入部２０４は、図１３に示すテンプレート内クエリ定義生成処理（テンプレート内クエリ生成部）を実行する（１００６）。そして、結合処理挿入部２０４は、図１４に示す結合クエリ定義生成処理（結合クエリ生成部）を実行する（１００７）。【００６５】
以下に、テンプレート１１１毎の、ＩＤ付与クエリ、テンプレート内クエリ及び結合処理クエリの生成処理の詳細について説明する。なお、結合処理挿入部２０４が、ＩＤ付与クエリ定義生成部、テンプレート内クエリ定義生成部及び結合クエリ定義生成部を含み、下記の処理の主体となる。【００６６】
図１２は、図１１のステップ１００５に示したＩＤ付与クエリ定義生成処理で行われる処理の一例を示すフローチャートである。結合処理挿入部２０４は、抽出したテンプレート１１１からひとつのテンプレート１１１を呼び出し、当該呼び出したテンプレートへの入力ストリームデータを入力とする（１１０１、１１０２）。【００６７】
結合処理挿入部２０４は、入力ストリームデータとテンプレート１１１の出力を一意に対応付ける識別子（例えば、図２のｔｅｘｔＩＤ）を、データに付与するクエリ（ＩＤ付与クエリ）定義を生成する。なお、識別子のカラム名は、テンプレート構成情報１１２のＩＤ（図５Ａの１１２４）とする。【００６８】
以上の処理により、結合処理挿入部２０４は、入力ストリームデータとテンプレート１１１の出力を一意に対応付ける識別子をデータに付与するクエリを、呼び出したテンプレート１１１のＩＤ付与クエリ定義として生成する。本実施例では、この処理により、図８の７１２、図９の７１５に示すＩＤ付与クエリ定義が生成される。【００６９】
図１３は、図１１のステップ１００６に示したテンプレート内クエリ定義生成処理で行われる処理の一例を示すフローチャートである。結合処理挿入部２０４は、図１２で呼び出したテンプレート１１１について以下の処理を実施する（２６０１）。【００７０】
結合処理挿入部２０４は、呼び出したテンプレート１１１に記述されたクエリを読み込む（２６０２）。そして、結合処理挿入部２０４は、読み込んだクエリに含まれる当該テンプレート１１１の入力ストリームデータを、図１２で生成したＩＤ付与クエリの出力とする（２６０３）。結合処理挿入部２０４は、読み込んだクエリに含まれる当該テンプレート１１１の出力ストリームデータを、後述する結合クエリの入力として定義する（２６０４）。【００７１】
上記処理により、テンプレート内クエリの定義を生成して処理を終了する（２６０５）。本実施例では、この処理により、図８の７１３、図９の７１６に示すクエリ定義が生成される。【００７２】
図１４は、図１１のステップ１００７に示した結合クエリ定義生成処理で行われる処理の一例を示すフローチャートである。結合処理挿入部２０４は、図１２で呼び出したテンプレート１１１について、以下の処理を実施する（１２０１）。【００７３】
結合処理挿入部２０４は、結合クエリのウィンドウサイズを決定する。テンプレート１１１と、テンプレート１１１の出力ストリームデータを結合する時のウィンドウサイズをＮＯＷとする。図２で示したように、入力ストリームデータにＩＤを付与しただけのデータ（オプションカラム）のウィンドウを１分とし、所定の処理を実施した出力ストリームデータはＮＯＷウィンドウで結合するよう定義する（１２０２）。【００７４】
結合処理挿入部２０４は、結合クエリの出力カラムを決定する。結合処理挿入部２０４は、テンプレート１１１の出力ストリームデータのＩＤを除くカラムと、テンプレートの入力ストリームデータの内、オプションカラムを結合クエリの出力カラムとする（１２０３）。これにより、図２で示したように、出力ストリームデータのカラムとオプションカラムのうち、結合すべきカラムが設定される。【００７５】
次に、結合処理挿入部２０４は、結合クエリの結合条件を決定する。例えば、図２のステップ７０３で示したように、テンプレート１１１の入力ストリームデータ（オプションカラム）に付与されたＩＤ（ｓｔｒＩＤ＝ｔｅｘｔＩＤ）と、出力ストリームデータに含まれるＩＤ（ｓｔｒＩＤ＝ｔｅｘｔＩＤ）の一致を、結合条件とする。【００７６】
そして、結合処理挿入部２０４は、決定したウィンドウサイズ、出力カラム、結合条件からＳＥＬＥＣＴ文、ＦＲＯＭ文、ＷＨＥＲＥ文が決定されて結合処理クエリを生成する（１２０５）。【００７７】
上記処理により、入力ストリームデータとテンプレートの出力ストリームデータを結合する結合クエリの定義を生成して処理を終了する（１２０６）。本実施例では、この処理により、図８の７１４、図９の７１７６に示すクエリ定義が生成される。【００７８】
以上に示した、図１２〜図１４の処理をひとつのテンプレート１１１に対して行うことで、ＩＤ付与クエリと、テンプレート内クエリと、結合クエリが生成され、ストリーム処理クエリ７００としてクエリ生成サーバ１０７のストレージ１２３に格納される。【００７９】
端末１３０からストリーム処理クエリ７００を指定して、ストリーム処理実行サーバ１０１にストリーム処理要求を送信する。ストリーム処理実行サーバ１０１は、クエリ生成サーバ１０７が所定のストリーム処理クエリ７００を取得して、ストリームデータ処理エンジン１０３でストリーム処理クエリ７００を実行する。ストリーム処理実行サーバ１０１は、データソース１４０からのストリームデータを受け付けて、ストリーム処理クエリ７００で所定の処理を行う。【００８０】
本発明では、図４Ａ、図４Ｂ及び図５Ａ、図５Ｂで示したように、テンプレート１１１、テンプレート構成情報１１２では、入力スキーマ１１２２の必須カラムとして文字列（ＳＴＲＩＮＧ）のみを定義しただけであるので、ＳＮＳや様々なブログのテキストデータを入力ストリームデータとして扱うことが可能となって、前記従来例のように、ＳＮＳの種類（あるいは提供者）やブログの種類（あるいは提供者）に係わらず、テンプレート１１１を利用することができる。【００８１】
これによって、多数のテンプレートを用意することなく、ひとつのテンプレート１１１で複数の入力を受け付けることが可能となって、クエリのテンプレートを開発するコストを削減することが可能となる。【００８２】
また、新たなサービスのテキストデータを利用するのであれば、新たなテンプレート１１１を作成することなく、既存のテンプレート１１１を利用することが可能となる。これにより、プログラムの開発能力が低いユーザであってもストリームデータを容易に利用することが可能となる。
【実施例２】
【００８３】
図１５は、本発明の第２の実施例を示し、テンプレート登録部１０８の入出力の関係の一例を示すブロック図である。本実施例では、ＩＤ（ｓｔｒＩＤ）と結合時のウィンドウサイズが付与されていないＩＤ未付与テンプレート１１１Ａと、テンプレート部分構成情報１１２Ａを入力とし、ＩＤの付与と、ウィンドウサイズの判定を自動的に行う例を示す。なお、ＩＤ未付与テンプレート１１１Ａと、テンプレート部分構成情報１１２Ａは、端末１３０から登録要求を受けて、クエリ生成サーバ１０７が処理を開始する。なお、ウィンドウサイズは、図２に示したオプションカラムと結合する出力ストリームデータのウィンドウサイズ（７０３の「ＮＯＷ」）を示す。【００８４】
本実施例２のテンプレート登録部１０８は、ＩＤ未付与テンプレート１１１Ａと、ＩＤとウィンドウサイズが未定のテンプレート部分構成情報１１２Ａを入力として受け付け、後述するように、前記実施例１と同様にｓｔｒＩＤとウィンドウサイズを有するテンプレート１１１とテンプレート構成情報１１２を生成する。【００８５】
このため、テンプレート登録部１０８は、図１５で示すように、ＩＤ自動付与部１０８１と、ストリーム処理実行サーバ１０１のストリームデータ処理エンジン１０３のパーサ（構文解析部）１０８２と、結合時ウィンドウサイズ算出部１０８３とを有する。その他の構成については、前記実施例１と同様である。なお、パーサ１０８２は、ストリーム処理実行サーバ１０１のストリームデータ処理エンジン１０３から予めテンプレート登録部１０８に登録しておいたものである。【００８６】
図１６は、ＩＤ未付与テンプレート１１１Ａの一例を示す図である。テンプレート１１１Ａでは、ＳＥＬＥＣＴ文で"str"及び"$key"のみが定義され、実施例１に示した図４ＡのようなＩＤ（ｓｔｒＩＤ）については定義されていない。一方、図１７は、ＩＤ自動付与部１０８１でＩＤを付与されたテンプレート１１１−３の一例を示す図である。【００８７】
図１９は、テンプレート部分構成情報１１２Ａの一例を示す図である。テンプレート部分構成情報１１２Ａでは、名前１１２１、入力スキーマ１１２２、出力スキーマ１１２３は定義されているがＩＤ１１２４及びウィンドウサイズ１１２５は未定義である。一方、図２０は、ＩＤ自動付与部１０８１でＩＤを付与されたテンプレート構成情報１１２−３の一例を示す図である。【００８８】
図１５に示したテンプレート登録部１０８のＩＤ自動付与部１０８１では、ＩＤ未付与のテンプレート１１１Ａと、テンプレート部分構成情報１１２Ａを読み込んで、ＩＤを付加可能であればＩＤを付与するクエリ定義を加えてテンプレート１１１−３とテンプレート構成情報１１２−３を生成する。【００８９】
例えば、図１６に示すＩＤ未付与テンプレート１１１Ａでは、ＳＥＬＥＣＴ文にｉｄは定義されていない。テンプレート登録部１０８のＩＤ自動付与部１０８１でＩＤ未付与テンプレート１１１Ａを処理すると、図１７の１０８１Ａで示すように、２つのＳＥＬＥＣＴ文にはｉｄがそれぞれ挿入されて、テンプレート１１１−３を生成する。【００９０】
また、テンプレート登録部１０８のＩＤ自動付与部１０８１は、後述するように、テンプレート１１１ＡにＩＤを付与可能であれば、テンプレート部分構成情報１１２ＡのＩＤ１１２４にｉｄを付与する。また、テンプレート登録部１０８の結合時ウィンドウサイズ算出部１０８３は、テンプレート１１１−３（１１１Ａ）が所定の条件を満たしていれば、ウィンドウサイズ１１２５を"ＮＯＷ"に設定して、テンプレート構成情報１１２−３を生成する。【００９１】
図２１は、テンプレート登録部１０８で行われる処理の一例を示すフローチャートである。テンプレート登録部１０８は、ＩＤ未付与テンプレート１１１Ａとテンプレート部分構成情報１１２Ａを受け付けると処理を開始する（１９０１）。テンプレート登録部１０８は、受け付けたＩＤ未付与テンプレート１１１Ａとテンプレート部分構成情報１１２Ａを読み込む（１９０２）。【００９２】
テンプレート登録部１０８のＩＤ自動付与部１０８１は、読み込んだＩＤ未付与テンプレート１１１Ａを解析して、後述するように、ＩＤを付与可能か否かを判定する。付与可能であれば、ＩＤ自動付与部１０８１はＩＤ未付与テンプレート１１１Ａとテンプレート部分構成情報１１２ＡにＩＤを付与する（１９０３）。なお、ＩＤを付与できない場合には、ＩＤ自動付与部１０８１は端末１３０にＩＤの付与ができないことを通知する。【００９３】
テンプレート登録部１０８のウィンドウサイズ算出部１０８３は、読み込んだＩＤ未付与テンプレート１１１Ａを解析して、オプションカラムと出力ストリームデータを結合する際のウィンドウサイズを決定する（１９０４）。なお、ウィンドウサイズを決定できないときには、ウィンドウサイズ算出部１０８３は、端末１３０にウィンドウサイズが判定不能であることを通知する。【００９４】
テンプレート登録部１０８は、ストレージ１２３に、ＩＤを付与したテンプレート１１１−３と、ＩＤ及びウィンドウサイズを設定したテンプレート構成情報１１２−３をそれぞれ格納する（１９０５）。【００９５】
以上の処理によって、ＩＤ未付与テンプレート１１１Ａとテンプレート部分構成情報１１２Ａを受け付けて、ＩＤ未付与テンプレート１１１Ａが所定の条件を満たしていればテンプレート１１１−３とテンプレート構成情報１１２−３を生成してストレージ１２３に格納する（１９０６）。【００９６】
図２２は、ＩＤ自動付与部１８０１で行われる処理の一例を示すフローチャートである。この処理は、図２１のステップ１９０３で行われる処理である（２００１）。【００９７】
ＩＤ自動付与部１０８１は、ＩＤ未付与テンプレート１１１Ａをストリームデータ処理エンジン１０３のパーサ１０８２で解析して、オペレータツリーを生成する（２００２）。【００９８】
図１８は、ＩＤ未付与テンプレート１１１Ａのオペレータツリー１６０９の一例を示す図である。このオペレータツリー１６０９は、２つのＮＯＷＷＩＮＤＯＷ１６０１、１６０４の入力を、フィルタ１６０２，１６０５で処理し、これらの射影（ＰＲＯJＥＣＴＩＯＮ）１６０３、１６０６を結合（ＵＮＩＯＮ）１６０７する。結合した結果をＩＳＴＲＥＡＭ１６０８として出力する。パーサ１０８２は、読み込んだＩＤ未付与テンプレート１１１Ａの構造を解析して上記のオペレータツリー１６０９を生成する。【００９９】
図２２のステップ２００３では、ＩＤ自動付与部１０８１は、オペレータツリー１６０９を解析して、オペレータツリー１６０９が、状態を持たないリレーショナル演算オペレータ（Ｆｉｌｔｅｒ、Ｐｒｏｊｅｃｔｉｏｎ，  Ｕｎｉｏｎ）と、ストリーム演算（ＩＳＴＲＥＡＭ等）、ウィンドウ演算（ＮＯＷＷＩＮＤＯＷ等）のみから構成されているか否かを判定する。換言すれば、ＩＤ自動付与部１０８１は、テンプレートでデータに付与したＩＤが追跡可能であるか否かを判定する。追跡可能であればステップ２００５へ進み、追跡不能であればステップ２００４へ進む。ステップ２００４では、ＩＤを付与するクエリを生成できないことを示すエラーを端末１３０に通知して処理を停止する。【０１００】
ステップ２００５では、ＩＤ自動付与部１０８１が、ＩＤ未付与テンプレート１１１Ａの全クエリ定義のＳｅｌｅｃｔ文にＩｄカラムを追加してテンプレート１１１−３を生成する。この結果、図１６に示したＩＤ未付与テンプレート１１１Ａから図１７に示したテンプレート１１１−３が生成される。【０１０１】
ステップ２００６では、ＩＤ自動付与部１０８１が、テンプレート部分構成情報１１２ＡのＩＤの項目１１２４にＩｄを登録した、テンプレート構成情報１１２−３を生成する。【０１０２】
以上の処理により、ＩＤ自動付与部１０８１は、テンプレート１１１−３とテンプレート構成情報１１２−３を生成して処理を終了する。【０１０３】
図２３は、ウィンドウサイズ算出部１０８３で行われる処理の一例を示すフローチャートである。この処理は、図２１のステップ１９０４で行われる処理である（２１０１）。【０１０４】
ウィンドウサイズ算出部１０８３は、テンプレート１１１−３のクエリ定義に、Ｓｅｌｅｃｔ文がＩＤに対応するカラムを含み、かつ、ストリーム演算にＲＳＴＲＥＡＭ、ＤＳＴＲＥＡＭを含むクエリ定義が存在するか否かを判定する（２１０２）。換言すれば、ウィンドウサイズ算出部１０８３は、出力ストリームデータが遅延するＲＳＴＲＥＡＭ、ＤＳＴＲＥＡＭを排除し、テンプレート１１１−３で付与されたＩＤを確実に追跡する。ウィンドウサイズ算出部１０８３は、テンプレート１１１−３の演算で、遅延が生じる場合にはステップ２１０４へ進み、遅延が生じない場合にはステップ２１０３へ進む。【０１０５】
次に、ウィンドウサイズ算出部１０８３は、テンプレート１１１−３を解析して、Ｓｅｌｅｃｔ文がＩＤに対応するカラムを含み、かつ、ＪＯＩＮを含むクエリ定義が存在するか否かを判定する（２１０３）。換言すれば、ＪＯＩＮを含むクエリ定義では、連結するデータの複数のＩＤについて、いずれのＩＤを選択するかという問題が生じるため、ウィンドウサイズ算出部１０８３は、ＪＯＩＮを含むクエリ定義を排除する。ウィンドウサイズ算出部１０８３は、ＪＯＩＮを含むクエリ定義が存在する場合には、ステップ２１０４へ進み、そうでない場合にはステップ２１０５へ進む。【０１０６】
ステップ２１０５では、ウィンドウサイズ算出部１０８３は、テンプレート構成情報１１２−３の結合時ウィンドウサイズ１１２５を"ＮＯＷ"に設定する。【０１０７】
一方、ステップ２１０４では、ウィンドウサイズ算出部１０８３は、結合時のウィンドウサイズが判定できないことを示すエラーを端末１３０に通知して処理を停止する。【０１０８】
以上の処理により、テンプレート１１１−３が所定の条件を満たす場合には、結合時ウィンドウサイズを"ＮＯＷ"に設定して、テンプレート構成情報１１２−３に設定する（２１０６）。【０１０９】
以上のように、実施例２では、ＩＤ未付与テンプレート１１１Ａとウィンドウサイズが未定のテンプレート部分構成情報１１２Ａから自動的にテンプレート１１１−３及びテンプレート構成情報１１２−３を生成することができ、端末１３０を操作するユーザや管理者の労力をさらに低減できるのである。
【実施例３】
【０１１０】
図２４〜図２７は、本発明の第３の実施例を示し、クエリ生成部１０９の入出力の関係の一例を示すブロック図である。本実施例３は、前記実施例１の図３に示した結合処理挿入部２０４に代わって、オプションカラム挿入部２０５を設けたもので、その他の構成は前記第１の実施例と同様である。【０１１１】
クエリ生成部１０９は、前記第１の実施例と同様にして、ストリーム処理定義５００を受け付けて、テンプレート呼び出し情報生成部２０２でテンプレート呼び出し情報２０３を生成する。次に、クエリ生成部１０９は、オプションカラム挿入部２０５で、テンプレート１１１の処理結果にオプションカラムを挿入するクエリを定義して、ストリーム処理クエリ７００Ａを生成する。本実施例３では、必須カラムとオプションに付与するＩＤ（＝ｓｔｒＩＤ）は、オプションの挿入位置を決定するために利用する。【０１１２】
図２５は、クエリ生成部１０９で生成されたストリーム処理クエリ７００Aの一例を示す図の前半部である。図２６は、同じくストリーム処理クエリ７００Ａの一例を示す図の後半部である。【０１１３】
ストリーム処理クエリ７００Ａは、図中７１１では、前記実施例１の図６と同様で、ストリームデータ処理の名前と、入力スキーマが定義される。図中７１２も前記実施例１の図６と同様で、入力されたデータに対してＩＤ（ｓｔｒＩＤ）を付与するクエリが定義される。【０１１４】
図中７１３Ａでは、テンプレート１１１−１の"string_part_match"の内容を、前記実施例１と同様にストリーム処理クエリ７００Ａへ展開し、さらに、オプションカラム挿入部２０５が、付与されたＩＤ（ｓｔｒＩＤ）と一致するオプションカラムであるｍｓｇＩＤ、ｔｉｍｅ、ｕｓｅｒＩＤを挿入する。そして、テンプレート１１１−１の処理結果に、ｓｔｒＩＤが一致するオプションカラムを挿入した後、ｓｔｒＩＤ自体は不要になるため、クエリ生成部１０９はｓｔｒＩＤを除去するクエリを定義する（７２０）。【０１１５】
図２６に示す、string_matchのテンプレート１１１−２についても同様であり、図中７１５で入力スキーマにＩＤを付与し、図中７１６Ａでは、テンプレート１１１−２の"string_match"の内容を、前記実施例１と同様にストリーム処理クエリ７００Ａへ展開し、さらに、オプションカラム挿入部２０５が、付与されたＩＤ（ｓｔｒＩＤ）と一致するオプションカラムであるｍｓｇＩＤ、ｔｉｍｅ、ｔｅｘｔ、ｋｅｙｗｏｒｄを挿入する。そして、ＩＤが一致するオプションカラムを挿入した後、ＩＤ自体は不要になるため、クエリ生成部１０９はｓｔｒＩＤを除去するクエリを定義する（７２１）。【０１１６】
図２７は、クエリ生成部１０９のオプションカラム挿入部２０５で行われる処理の一例を示すフローチャートである。この処理は、図３（図２４）に示したテンプレート呼び出し情報生成部２０２の処理が完了した後に実行される。【０１１７】
オプションカラム挿入部２０５は、まず、ストリーム処理定義５００とテンプレート構成情報１１２及びテンプレート呼び出し情報２０３を読み込む（２５０１、２５０２）。オプションカラム挿入部２０５は、ストリーム処理定義５００に記述された全てのテンプレート１１１について、オプションカラムを追加したか否かを判定する（２５０３）。オプションカラム挿入部２０５は、全てのテンプレート１１１について処理が完了していれば当該結合処理を終了する（２５０８）。一方、処理が完了していないテンプレート１１１が存在する場合、オプションカラム挿入部２０５はステップ２５０４〜２５０７の処理が全てのテンプレート１１１で完了するまで繰り返して実行する。【０１１８】
オプションカラム挿入部２０５は、オプションカラムを追加していないテンプレート１１１を抽出する（２５０４）。オプションカラム挿入部２０５は抽出したテンプレート１１１について、前記実施例１の図１２に示したＩＤ付与クエリ定義生成処理（ＩＤ付与クエリ定義生成部）を実行する（２５０５）。【０１１９】
次に、オプションカラム挿入部２０５は、前記実施例１の図１３に示したテンプレート内クエリ定義生成処理を実行し、テンプレート１１１に含まれるクエリ定義において、Ｓｅｌｅｃｔ文にＩＤが対応するカラムを含む場合に、同Ｓｅｌｅｃｔ文にオプションカラムを追加するクエリを生成する（２５０６）。【０１２０】
次に、オプションカラム挿入部２０５は、テンプレート１１１の出力ストリームデータを入力とし、当該入力ストリームのデータを一意に対応付けるＩＤを、データから除去するクエリ（ＩＤ除去クエリ）定義を生成する。なおＩＤのカラム名は、テンプレート構成情報のＩＤとする。【０１２１】
以上の処理により、テンプレート１１１で処理される必須カラムにオプションカラムを加えた出力ストリームデータを得ることができる。
【実施例４】
【０１２２】
図２８〜図３３は、本発明の第４の実施例を示し、前記第１〜第３の実施例では結合時のウィンドウサイズが"ＮＯＷ"であったのに対し、本実施例４では、テンプレート１１１−４で示す"string_part_match"のウィンドウサイズ１１２５を"２分"、テンプレート１１１−５で示す"string_match"のウィンドウサイズ１１２５を"５分"としたもので、その他の構成は、前記第１実施例と同様である。【０１２３】
本実施例４では、テンプレート１１１の処理による遅延を見込んで、オプションカラムを所定の時間のウィンドウに保持し、テンプレート１１１の処理が完了した出力ストリームデータとオプションカラムを順次結合するクエリ定義を生成することができる。【０１２４】
図２８Ａは、"string_part_match_2m_delay"のテンプレート１１１−４の一例を示す図である。図中、前記実施例１の図４Ａに示した"string_part_match"と相違する点を太字にて示す。"string_part_match_2m_delay"のテンプレート１１１−４では、ＤＳＴＲＥＡＭで２分のウィンドウサイズを設定した点が前記実施例１の図４Ａと相違する。【０１２５】
図２８Ｂは、"string_match_5m_delay"のテンプレート１１１−５の一例を示す図である。図中、前記実施例１の図４Ｂに示した"string_match"と相違する点を太字にて示す。"string_match_5m_delay"のテンプレート１１１−５では、ＤＳＴＲＥＡＭで５分のウィンドウサイズを設定した点が前記実施例１の図４Ｂと相違する。【０１２６】
図２９Ａは、"string_part_match_2m_delay"のテンプレート１１１−４のテンプレート構成情報１１２−４の一例を示す図である。前記実施例１の図５Ａに示した"string_part_match"と相違する点は、名前１１２１が"string_part_match_2m_delay"になり、結合時ウィンドウサイズ１１２５が"２分"になった点である。【０１２７】
図２９Ｂは、"string_match_5m_delay"のテンプレート１１１−５のテンプレート構成情報１１２−５の一例を示す図である。前記実施例１の図５Ｂに示した"string_match"と相違する点は、名前１１２１が"string_match_5m_delay"になり、結合時ウィンドウサイズ１１２５が"５分"になった点である。【０１２８】
図３０は、ストリーム処理定義５００Ａの一例を示す図である。前記実施例１の図６に示したストリーム処理定義５００と相違する点は、図中５０２Ａ、５０３Ａにおいて、テンプレート１１１の名称が、"string_part_match_2m_delay"と"string_match_5m_delay"に変更された点で、その他は同様である。【０１２９】
図３１は、クエリ生成部１０９で生成されるテンプレート呼び出し情報２０３の一例を示す図である。ストリーム処理定義５００Ａの一例を示す図である。前記実施例１の図７に示したテンプレート呼び出し情報との差異は、テンプレート２０３２に格納される名称が上記図３０と同様に変更された点で、その他は前記実施例１と同様である。【０１３０】
本実施例では、クエリ生成部１０９が、前記実施例１の図３、図１０〜図１４を実行することで、図３２、図３３に示すストリーム処理クエリ７００Ｂを生成する。【０１３１】
図３２、図３３は、ストリーム処理定義５００Ａとテンプレート１１１，テンプレート構成情報１１２に基づいて生成されたストリーム処理クエリ７００Ｂの一例を示す図の前半部及び後半部である。【０１３２】
図３２、図３３のストリーム処理クエリ７００Ｂで前記実施例１の図８、図９に示したストリーム処理クエリ７００と相違する部分を太字にて表記した。まず、図３２のクエリ定義７１３Ｂでは、ストリームデータ処理をＤＳＴＲＥＡＭに変更し、また、ウィンドウサイズを２分に変更した。図３２の結合クエリ定義７１３Ｂでは、ウィンドウサイズを２分に変更した。【０１３３】
同様に、図３３のクエリ定義７１６Ｂでは、ストリームデータ処理をＤＳＴＲＥＡＭに変更し、また、ウィンドウサイズを５分に変更した。図３３の結合クエリ定義７１７Ｂでは、ウィンドウサイズを５分に変更した。【０１３４】
以上のストリーム処理クエリ７００Ｂでは、string_part_match_2m_delay"のテンプレート１１１−４の処理の出力ストリームとオプションカラムを２分間のウィンドウで結合し、"string_match_5m_delay"のテンプレート１１１−５の処理の出力ストリームとオプションカラムを５分間のウィンドウで結合して出力ストリームを出力する。【０１３５】
上記処理により、テンプレート１１１内の処理に要する時間を加味して出力ストリームの遅延を許容することが可能となる。【０１３６】
なお、本発明において説明した計算機等の構成、処理部及び処理手段等は、それらの一部又は全部を、専用のハードウェアによって実現してもよい。【０１３７】
また、本実施例で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体（例えば、非一時的な記憶媒体）に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。【０１３８】
また、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明をわかりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【図１】
2015097789.tif 000003
【図２】
2015097789.tif 000004
【図３】
2015097789.tif 000005
【図４Ａ】
2015097789.tif 000006
【図４Ｂ】
2015097789.tif 000007
【図５Ａ】
2015097789.tif 000008
【図５Ｂ】
2015097789.tif 000009
【図６】
2015097789.tif 000010
【図７】
2015097789.tif 000011
【図８】
2015097789.tif 000012
【図９】
2015097789.tif 000013
【図１０】
2015097789.tif 000014
【図１１】
2015097789.tif 000015
【図１２】
2015097789.tif 000016
【図１３】
2015097789.tif 000017
【図１４】
2015097789.tif 000018
【図１５】
2015097789.tif 000019
【図１６】
2015097789.tif 000020
【図１７】
2015097789.tif 000021
【図１８】
2015097789.tif 000022
【図１９】
2015097789.tif 000023
【図２０】
2015097789.tif 000024
【図２１】
2015097789.tif 000025
【図２２】
2015097789.tif 000026
【図２３】
2015097789.tif 000027
【図２４】
2015097789.tif 000028
【図２５】
2015097789.tif 000029
【図２６】
2015097789.tif 000030
【図２７】
2015097789.tif 000031
【図２８Ａ】
2015097789.tif 000032
【図２８Ｂ】
2015097789.tif 000033
【図２９Ａ】
2015097789.tif 000034
【図２９Ｂ】
2015097789.tif 000035
【図３０】
2015097789.tif 000036
【図３１】
2015097789.tif 000037
【図３２】
2015097789.tif 000038
【図３３】
2015097789.tif 000039
【国際調査報告】
2015097789.tif 000040
2015097789.tif 000041