JP6032680B2 - 受信したデータごとに集計処理を行うシステム、方法およびプログラム - Google Patents

受信したデータごとに集計処理を行うシステム、方法およびプログラム Download PDF

Info

Publication number
JP6032680B2
JP6032680B2 JP2013227726A JP2013227726A JP6032680B2 JP 6032680 B2 JP6032680 B2 JP 6032680B2 JP 2013227726 A JP2013227726 A JP 2013227726A JP 2013227726 A JP2013227726 A JP 2013227726A JP 6032680 B2 JP6032680 B2 JP 6032680B2
Authority
JP
Japan
Prior art keywords
data
tuple
processing
output
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013227726A
Other languages
English (en)
Other versions
JP2015088072A (ja
Inventor
山本 学
学 山本
憲明 馬屋原
憲明 馬屋原
佐々木 卓
卓 佐々木
馨 細川
馨 細川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2013227726A priority Critical patent/JP6032680B2/ja
Priority to US14/472,324 priority patent/US10474698B2/en
Priority to CN201410599106.8A priority patent/CN104598299B/zh
Publication of JP2015088072A publication Critical patent/JP2015088072A/ja
Application granted granted Critical
Publication of JP6032680B2 publication Critical patent/JP6032680B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、受信したデータごとに集計処理を行うシステム、方法およびプログラムに関する。
従来、到着する多数のイベントやデータに対する処理の方式として、一度受信したイベントやデータを蓄積してから、日、週、月単位等でまとめてバッチ処理により一括で処理を行う方式が存在する。一方、到着するデータを即時に処理する手法へのニーズが高まっている。例えば、データに対する処理内容や分析シナリオを予め設定しておき、到着するデータが条件に合致すると、即座に決められたアクションを実行するCEP(Complex Event Processing)と呼ばれる技術が存在する(例えば、特許文献1参照)。また、データベースのデータをまとめて変換して他のデータベースに保存する処理を行うETL(Extract Transform Loading)と呼ばれる技術が存在する(例えば、特許文献2参照)。
特開2012−118928号公報 特開2005−011109号公報
到着するデータを処理する手法として、保持しているデータと組み合わせて処理を行いその結果を保存する集計処理がある。この集計処理を到着するデータに対して即時に行う技術として、従来のデータベース管理システム(DBMS:Database Management System)やデータを即時に処理するストリーム処理用のミドルウェア等を組み合わせたアプリケーションが存在する。しかし、大量のデータの集計処理には非常に多くのデータアクセス処理が伴い、このようなアプリケーションを大量のデータの集計処理が行えるように対応させるのは容易ではなく、開発には多大なコストを要する。
本発明は、到着したデータごとにすでに保持しているデータと組み合わせて処理を行い、その結果を保存する集計処理を簡易に実現するためのシステムを提供することを目的とする。
かかる目的のもと、本発明は、分類のために用いられる値であるキーを有するデータを外部から受信し、受信したデータごとに集計処理を行うシステムであって、集計処理の対象としてキーを有する第1データを受け付ける受付部と、データベースを保持する保持部と、集計処理を行う処理部である1または複数のオペレータにより、受付部に受け付けられた第1データに対する処理を行い、1または複数のオペレータの処理において生成されたキーを有する第2データを、保持部に保持されたデータベースに格納する格納部とを備えるシステムを提供する。
ここで、上記の格納部により呼び出されるオペレータは、第1データに加えて、データベースから読み出した第3データを受け付け、第1データおよび第3データに基づいて第1データに対する処理を行う、ものであってもよい。
また、本発明は、分類のために用いられる値であるキーを有するデータを外部から受信し、受信したデータごとに集計処理を行うシステムであって、データベースを保持する保持部と、キーを有する特定のデータを第1の入力データとして受け付け、第1の入力データに対して所定の処理を行い、処理結果に基づいて、キーを有する第1の出力データおよびキーを有し保持部に保持されたデータベースに格納される第2の出力データの少なくとも一つを出力する複数の処理部とを備え、複数の処理部において、外部から受信したデータを第1の入力データとする処理部を先頭とし、他の処理部が出力する第1の出力データを第1の入力データとして受け付ける処理部を他の処理部に後続させる、システムも提供する。
ここで、上記の処理部は、第1の入力データに加えて、データベースから読み出したデータを第2の入力データとして受け付け、第1の入力データおよび第2の入力データに基づいて所定の処理を行う、ものであってもよい。
また、上記の複数の処理部において、出力される第1の出力データがない場合、または出力される第1の出力データを第1の入力データとする他の処理部がない場合、キーを有するデータについての集計処理が終了する、ものであってもよい。
また、本発明は、分類のために用いられる値であるキーを有するデータを外部から受信し、受信したデータごとに集計処理を行うシステムであって、集計処理の対象としてキーを有する第1の入力データを受け付ける受付部と、データベースを保持する保持部と、受付部により受け付けられた第1の入力データに応じた集計処理を行う手段である1または複数のオペレータを呼び出して、呼び出した1または複数のオペレータにより第1の入力データに対する所定の処理を行い、各オペレータの処理において、キーを有する第1の出力データおよびキーを有し保持部に保持されたデータベースに格納される第2の出力データの少なくとも一つを出力する処理部と、処理部により出力された第1の出力データを記憶する記憶部とを備え、受付部は、第1の入力データの受け付けに際し、記憶部に記憶された第1の出力データがある場合、第1の出力データを第1の入力データとして受け付け、記憶部に記憶された第1の出力データがない場合、外部から受信したデータを第1の入力データとして受け付ける、システムも提供する。
ここで、上記の処理部による所定の処理が終了した後、記憶部に記憶される第1の出力データがない場合、第2の出力データが格納されたデータベースの内容が確定される、ものであってもよい。
また、上記の処理部によるオペレータの処理が終了するごとに、データベースの内容が確定される、ものであってもよい。
さらに、本発明は、分類のために用いられる値であるキーを有するデータを外部から受信し、受信したデータごとに集計処理を行う方法であって、集計処理の対象としてキーを有する第1データを受け付けるステップと、集計処理を行う処理部である1または複数のオペレータにより、受け付けられた第1データに対する処理を行い、1または複数のオペレータの処理において生成されたキーを有する第2データを、記憶部に記憶されたデータベースに格納するステップとを含む方法も提供する。
さらにまた、本発明は、分類のために用いられる値であるキーを有するデータを外部からコンピュータに受信させ、受信させたデータごとに集計処理を行うプログラムであって、コンピュータに、集計処理の対象としてキーを有する第1データを受け付ける機能と、集計処理を行う処理部である1または複数のオペレータにより、受け付けられた第1データに対する処理を行い、1または複数のオペレータの処理において生成されたキーを有する第2データを、記憶部に記憶されたデータベースに格納する機能とを実現させるためのプログラムも提供する。
本発明によれば、到着したデータごとにすでに保持しているデータと組み合わせて処理を行い、その結果を保存する集計処理を簡易に実現するためのシステムを提供することができる。
本実施の形態に係る集計処理システムの概略構成の一例を示す図である。 本実施の形態に係る基本モデルの一例を説明するための図である。 本実施の形態に係る基本モデルを組み合わせた構成の一例を説明するための図である。 本実施の形態に係るデータ処理部の機能構成例を示したブロック図である。 (a)(b)は、本実施の形態に係るタプル定義情報の一例を示す図である。 本実施の形態に係るテーブル定義情報の一例を示す図である。 (a)(b)は、本実施の形態に係るオペレータ定義情報の一例を示す図である。 本実施の形態に係るデータ処理部による集計処理手順の一例を示したフローチャートである。 本実施の形態に係るデータ処理部による集計処理の具体例を説明するための図である。 本実施の形態に係る定義情報に関する記述の一例を示した図である。 本実施の形態に係るデータ処理部による集計処理手順の他の一例を示したフローチャートである。 本実施の形態に係る最適化処理の第1の例を説明するための図である。 本実施の形態に係る最適化処理の第1の例を説明するための図である。 本実施の形態に係るグループ化オペレータを実行する手順の一例を示したフローチャートである。 本実施の形態に係る最適化処理の第2の例を説明するための図である。 本実施の形態に係る並列化処理の手順の一例を示したフローチャートである。 本実施の形態に係るデータ処理部を構成するのに好適なハードウェア構成例を示す図である。
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
<集計処理システムの概要説明>
図1は、本実施の形態に係る集計処理システム1の概略構成の一例を示す図である。集計処理システム1は、多数のデータが外部から次々と到着する場合に、データを蓄積してからまとめて処理を行うのではなく、データが到着するごとに集計処理を行うシステムである。本実施の形態において、集計処理とは、到着したデータに対して、すでに保持しているデータと組み合わせて演算を行い、その結果を保存してデータベースを更新する処理をいう。
本実施の形態に係る集計処理は、以下のような規則に基づいて実行される。集計処理システム1に対して外部からデータが到着すると、到着したデータはタプルの形式に変換される。タプルとは、データベースに格納される個々のデータであり、タプルは、列名および型が定められた列を一つ以上持つ。また、タプルには、キーとなる列(以下、キーとなる列をキー列と称する)が一つ以上定義されている。各タプルは、このキー列に入る値(以下、キー列に入る値をキー値と称する)により分類される。
そして、集計処理システム1は、キー値が同一である複数のタプルを一連のデータとして扱い、到着順に処理を行う。ただし、異なるキー値を持つデータ同士では、到着した順番通りに処理が行われるとは限らない。また、集計処理システム1は、全体として並列に多数のデータを受信するが、同一のキー値を持つデータが同時並行に到着することはないものとする。
また、集計処理システム1は、到着するデータごとに1または複数の集計処理を実行する。この集計処理は、トランザクションとして実行される。トランザクションとは、関連する複数の処理を一つの処理単位としてまとめたものであり、コミットされるかアボートされるかのいずれかにより処理が終了する。コミットとは、トランザクションの処理が成功してその処理結果が確定されることであり、アボートとは、トランザクションの処理が失敗して処理結果が反映されないことをいう。
即ち、集計処理システム1は、到着したある一つのデータに対して1または複数の集計処理をトランザクションとして実行する。そして、トランザクションの全ての集計処理が正常に終了した場合、トランザクションはコミットされ、集計処理の処理結果が確定したものとしてデータベースに反映される。一方、トランザクションの集計処理のうち少なくとも一つの集計処理で障害が発生して中断した場合、トランザクションはアボートされ、すでに実行された集計処理の処理結果も取り消されて、データベースはトランザクション実行前の元の状態に戻る。このようにして、集計処理システム1は、多数のデータを受信するのと並行して、データごとに集計処理を行う。
<集計処理システムの構成の説明>
次に、図1に示す集計処理システム1の構成要素について説明する。本実施の形態に係る集計処理システム1は、集計処理システム1の集計処理の対象となるデータをタプルの形式に変換しデータ処理部3に送信するデータ送信部2と、送信されたタプルに対して集計処理を実行するデータ処理部3とを備える。また、データ送信部2は複数のタプル送信部201を備え、データ処理部3は複数のRDA(Realtime Data Aggregation)サーバプロセス301およびRDB(Relational Database)サーバプロセス302を備えている。RDAサーバプロセスとは、本実施の形態に係る集計処理(リアルタイムデータ集計:RDA)を実現するサーバプロセスである。RDBサーバプロセスとは、行と列とからなるテーブルの形式でデータを管理するサーバプロセスである。また、サーバプロセスとは、一定の目的のもとにサーバ装置で実行される処理手段である。
データ送信部2において、各タプル送信部201は、タプル送信プログラムを実行することにより、集計処理の対象となるデータをタプルの形式に変換し、変換後のタプルをデータ処理部3のRDAサーバプロセス301に送信する。タプル送信部201は、集計処理システム1の外部にある集計処理の対象となるデータを有する装置から受信したデータに対して、タプルへの変換を行う。また、各タプル送信部201は、各RDAサーバプロセス301と相互に接続されている。タプルの送信に際し、タプル送信部201は、タプルのキー値に基づいて、RDAサーバプロセス301を識別する識別子を求め、求めた識別子で特定されるRDAサーバプロセス301に対してタプルを送信する。識別子を求める手法としては、例えば、タプルのキー値からハッシュ値を計算し、RDAサーバプロセス301の数による剰余計算で識別子を計算する手法等がある。また、複数のタプル送信部201を別々のサーバやPC(Personal Computer)等で実現しても良いし、1台のサーバ等で実現しても良い。
データ処理部3は、データ送信部2から送信されたタプルに対して集計処理を実行する。この集計処理の過程で参照されるデータは、RDAサーバプロセス301に接続されたRDBサーバプロセス302に格納されているが、高速化の目的でRDAサーバプロセス301内のメモリ上にも保持される。そして、集計処理の過程でデータベースのデータが更新される際には、RDBサーバプロセス302上に書き込まれるが、RDAサーバプロセス301のメモリ上にも保持されている場合には、その値も更新される。データ処理部3が実行する集計処理の詳細については後述する。
また、データ処理部3は、集計処理のプロセスを実現するサーバ等により実現される。なお、各サーバプロセスはネットワークで接続された任意のサーバ等に配置可能である。即ち、一つのサーバ等に複数のサーバプロセスを配置することも可能であり、複数のサーバプロセスを別々のサーバ等に配置することも可能である。さらに、例えば、このようなサーバにデータ送信部2のタプル送信プログラムを実行させて、データ送信部2およびデータ処理部3の機能を同一のサーバ等で実現するような構成にしても良い。
<集計処理の基本モデルの説明>
次に、データ処理部3が実行する集計処理の基本となる基本モデルについて説明する。図2は、本実施の形態に係る基本モデルの一例を説明するための図である。基本モデルでは、タプルに対する集計処理を実行するオブジェクト(以下、オペレータと称する)が一つ存在する。
そして、オペレータには、オペレータが処理の対象とするタプル(以下、入力タプルと称する)、入力タプルと組み合わせて処理が行われるテーブル(以下、入力テーブルと称する)、オペレータによる処理結果が書き込まれるテーブル(以下、出力テーブルと称する)、オペレータの処理により出力されるタプル(以下、出力タプルと称する)の情報が定義されている。図2に示す基本モデルでは、オペレータ21に対して、入力タプル22、入力テーブル23、出力タプル24、出力テーブル25の情報が定義されているものとする。また、オペレータ21は、データ処理部3のRDAサーバプロセス301を実現する具体的な要素であり、入力テーブル23、出力テーブル25は、データ処理部3のRDBサーバプロセス302を実現する具体的な要素である。本実施の形態では、第1の入力データに対して所定の処理を行う処理部の一例として、オペレータを設けている。
例えば、データ処理部3がデータ送信部2から送信されたタプル(入力タプル22)を受け付けると、このタプル(入力タプル22)を入力タプルとして定義するオペレータ21が呼び出され、呼び出されたオペレータ21の処理が実行される。オペレータ21の処理では、入力タプル22と入力タプル22のキー列(キー値)に関連する入力テーブル23のレコード群とに基づいて、集計データが生成される。ここで、レコードとは、テーブルにおける1件分のデータである。そして、生成された集計データの内容が出力テーブル25に書き込まれるとともに、出力タプル24の生成が行われる。
出力テーブル25に書き込まれる内容には、少なくとも入力タプル22のキー値が含まれるものとする。また、出力タプル24は入力タプル22に基づいて生成されるデータであるため、出力タプル24は入力タプル22のキー値を含むものとする。出力タプル24は、次に処理を行うオペレータの入力タプルになることもあれば、データ処理部3の外部に出力されて集計処理システム1とは別のシステムで処理されることもある。
このようにして、オペレータ21は、集計処理として、入力タプル22と入力テーブル23とに基づいて集計データを生成し、出力テーブル25の更新や出力タプル24の生成を行う。そして、この基本モデルを複数組み合わせれば、複数の集計処理が一連の処理として実行されることとなる。ただし、基本モデルは図2に示した構成に限られるものではない。各オペレータにおいて入力タプルは必須の定義項目であるが、オペレータによる処理の内容によっては、それ以外の入力テーブル、出力テーブル、出力タプルは定義されていなくても良い。例えば、入力テーブルが定義されていない場合、オペレータは入力タプルの情報から集計データの生成を行う。また、一つのオペレータに対して、入力テーブルや出力テーブルが複数定義されていても良いものとする。
<基本モデルを組み合わせた構成の説明>
次に、図2に示した基本モデルを複数組み合わせた構成において行われる処理について説明する。図3は、本実施の形態に係る基本モデルを組み合わせた構成の一例を説明するための図である。図3に示す構成では3つのオペレータ(オペレータA、オペレータB、オペレータC)が存在し、各オペレータによる集計処理は一つのトランザクションとして実行されるものとする。また、図示の例では、オペレータAの入力テーブルは定義されておらず、オペレータCの処理では出力タプルは生成されないものとする。
まず、データ送信部2から送信されたタプルAがデータ処理部3に到着すると、タプルAを入力タプルとして定義する(タプルAに対応する)オペレータAが呼び出される。オペレータAの処理では、入力タプルであるタプルAに基づいて、オペレータAの出力テーブルとして定義されたテーブルAにレコードが書き込まれるとともに、出力タプルとしてタプルBが生成される。
次に、タプルBに対応するオペレータとしてオペレータBが呼び出される。オペレータBの処理では、オペレータBの入力タプルであるタプルBと、入力テーブルであるテーブルAとに基づいて、出力テーブルであるテーブルBにレコードが書き込まれるとともに、出力タプルとしてタプルCが生成される。
次に、タプルCに対応するオペレータとしてオペレータCが呼び出される。オペレータCの処理では、オペレータCの入力タプルであるタプルCと、入力テーブルであるテーブルBとに基づいて、出力テーブルであるテーブルCにレコードが書き込まれる。オペレータCの処理では出力タプルは生成されないため、ここで図3に示す一連の処理は終了する。
このようにして、データ送信部2から到着したタプルAに対して、各オペレータによる集計処理がトランザクションとして実行される。また、各オペレータの出力テーブル(テーブルA〜C)に書き込まれるレコードには、タプルAのキー値が含まれるものとする。さらに、各オペレータの出力タプル(タプルB、C)にも、タプルAのキー値が含まれるものとする。なお、図3に示す例ではタプルAが到着した場合について説明したが、実際には、タプルA以外に多数のタプルがデータ処理部3に到着しており、キー値が異なるタプルに対するトランザクションはそれぞれ個別の処理として実行される。
また、図3に示す構成では、3つのオペレータによる処理がトランザクションとして実行される例を示したが、オペレータの数に決まりはなく、例えば、一つのオペレータによる処理がトランザクションとして実行される場合もあるものとする。
また、図3に示す構成では、オペレータAの出力テーブルとオペレータBの入力テーブルとが共通のテーブルAであり、オペレータBの出力テーブルとオペレータCの入力テーブルとが共通のテーブルBである例を示したが、このような構成に限られるものではない。例えば、オペレータAの出力テーブルがテーブルAである場合にオペレータBの入力テーブルがテーブルBである、というように、あるオペレータの出力テーブルと次に処理を行うオペレータの入力テーブルとが異なるテーブルであっても良い。
<データ処理部の機能構成の説明>
次に、本実施の形態に係る集計処理を実行するデータ処理部3の機能構成について説明する。図4は、本実施の形態に係るデータ処理部3の機能構成例を示したブロック図である。
データ処理部3は、集計処理の対象となるタプルを受け付けるタプル受付部11と、トランザクションを開始または完了させるトランザクション管理部12と、タプル、テーブルまたはオペレータについて定義された情報を格納する定義情報管理部13とを備える。また、データ処理部3は、集計処理において用いられるテーブルを格納するテーブル格納部14と、タプルの各列に対して予め定められた関数(以下、タプル関数と称する)を実行するタプル関数実行部15と、タプルに対する集計処理を実行する集計処理実行部16と、集計処理により出力されたタプルを格納する出力タプル格納部17とを備える。
受付部の一例としてのタプル受付部11は、データ送信部2から送信されたタプルを受け付ける。また、タプル受付部11は、タプルに対する集計処理が実行された後、次に集計処理を行うタプルとして、出力タプル格納部17に格納されたタプルを受け付ける。ここで、タプル受付部11は、出力タプル格納部17が空であるか否かを判定し、出力タプル格納部17が空でない場合に、出力タプル格納部17に格納されているタプルを受け付ける。一方、出力タプル格納部17が空である場合、タプル受付部11は、トランザクション管理部12に出力タプル格納部17が空であることを通知する。本実施の形態では、データ送信部2から送信されたタプルを、第1データの一例として用いている。
出力タプル格納部17に格納されているタプルは、データ送信部2から送信されたタプルと同一のキー値を持っている。出力タプル格納部17にタプルが格納されている間、さらに同一のキー値を持つタプルがデータ送信部2から送信されたとしても、タプル受付部11はデータ送信部2からのタプルを受け付けない。これは、同一のキー値を持つタプルが新たに受け付けられてトランザクションが開始されると、その前から実行中のトランザクションにより更新されているデータベースに対して、部分的にさらに更新が行われ、データベースに不整合が生じる場合があるためである。
このように、同一のキー値を持つタプルに関して出力タプル格納部17に格納されたタプルがなくなり、トランザクションが完了してデータベースの更新内容が確定するまで、タプル受付部11はそのキー値に関するデータ送信部2からのタプルを受け付けない。このような構成にすることで、データベースに不整合が生じることを抑制する。また、データの整合性を保つために、トランザクションの開始から完了(または中断)までの間、そのトランザクションの処理で使用される入力テーブル、出力テーブルは、別のトランザクションの処理では使用されないように制御される。
また、タプル受付部11は、データ送信部2から入力されたタプル、または出力タプル格納部17に格納されたタプルを受け付けると、タプルを受け付けたことをトランザクション管理部12に通知するとともに、受け付けたタプルをタプル関数実行部15に送信する。
トランザクション管理部12は、1または複数のオペレータによる処理に対して、トランザクションを開始または完了させる。ここで、トランザクション管理部12は、タプル受付部11からタプルを受け付けた通知を受けると、トランザクションが開始済みか否かを判定する。トランザクションがまだ開始されていなければ、トランザクション管理部12はトランザクションを開始する。
また、トランザクション管理部12は、タプル受付部11から出力タプル格納部17が空であることの通知を受けると、トランザクションを完了(コミット)させる。さらに、トランザクション管理部12は、集計処理が失敗した場合には、トランザクションを中断(アボート)させる。
定義情報管理部13は、タプル、テーブルまたはオペレータについて定義された定義情報を格納する。タプルについて定義された情報(以下、タプル定義情報と称する)は、入力タプルや出力タプルとなるタプルに関する情報である。具体的には、タプル定義情報は、タプルのタプル名ごとに定められており、タプルが持つ各列の名称、各列の型、タプルにおいてキー列となる列名、各列に対して予め定められたタプル関数の情報が含まれる。タプル関数としては、例えば、タイムスタンプの列に現在時刻を記録する関数等がある。タプル定義情報の詳細については、図5で説明する。
また、テーブルについて定義された情報(以下、テーブル定義情報と称する)は、集計処理において入力テーブルや出力テーブルとして用いられるテーブルに関する情報である。具体的には、テーブル定義情報は、テーブルごとに定められており、テーブル名、テーブルが持つ各列の名称、各列の型、テーブルにおいてキー列となる列名の情報が含まれる。テーブル定義情報の詳細については、図6で説明する。
さらに、オペレータについて定義された情報(以下、オペレータ定義情報と称する)は、オペレータ呼び出し部161により呼び出されるオペレータに関する情報である。具体的には、オペレータ定義情報は、オペレータごとに定められており、オペレータ名、オペレータの処理で用いられるパラメータ、入力タプルのタプル名、出力タプルのタプル名、入力テーブルのテーブル名、出力テーブルのテーブル名の情報が含まれる。
また、オペレータ定義情報には、入力タプル・入力テーブルマッピング情報も含まれる。この入力タプル・入力テーブルマッピング情報は、入力タプルの列に対応するレコードを入力テーブルから取得するための情報であり、例えば、入力タプルの列名と入力テーブルの列名との対応情報である。さらに、オペレータ定義情報には、出力タプルの生成に際し、入力タプル、入力テーブル、出力テーブルのどの列の値を出力タプルにセットするか等の情報が定義されている場合もある。オペレータ定義情報の詳細については、図7で説明する。
テーブル格納部14は、集計処理において入力テーブルや出力テーブルとして用いられるテーブルのデータを格納する。本実施の形態では、保持部、データベースを記憶する記憶部の一例として、テーブル格納部14を設けている。
タプル関数実行部15は、タプル受付部11から送信されたタプルのタプル名と定義情報管理部13に格納されたタプル定義情報とに基づいて、タプルの各列に対して定義されたタプル関数を実行する。ここで、タプル関数実行部15は、タプル受付部11から送信されたタプルのタプル名と、そのタプル名に対応するタプル定義情報とに基づいて、タプルに定義されたタプル関数があるか否かを判定する。定義されたタプル関数がある場合、タプル関数実行部15は定義されたタプル関数を呼び出し、呼び出したタプル関数の処理を実行してタプルの列の値を変更する。そして、タプル関数実行部15は、列の値を変更したタプルを集計処理実行部16に送信する。定義されたタプル関数がない場合には、タプル関数実行部15はタプル受付部11から送信されたタプルをそのまま集計処理実行部16に送信する。
次に、集計処理実行部16について説明する。集計処理実行部16は、オペレータを呼び出して処理を実行するオペレータ呼び出し部161と、出力テーブルのレコードを生成する出力レコード生成部162と、出力タプルを生成する出力タプル生成部163と、集計処理が成功したか否かを判定する集計処理判定部164とを有し、タプル関数実行部15から送信されたタプルに対して集計処理を実行する。また、本実施の形態では、格納部、1または複数のオペレータにより所定の処理を行う処理部の一例として、集計処理実行部16を設けている。
オペレータ呼び出し部161は、タプル関数実行部15から送信されたタプルに対応するオペレータを呼び出し、オペレータの処理を実行する。ここで、オペレータ呼び出し部161は、タプル関数実行部15から送信されたタプルのタプル名と定義情報管理部13に格納されたオペレータ定義情報とに基づいて、このタプルを入力タプルとして定義するオペレータで未実行のものがあるか否かを判定する。未実行のオペレータがある場合、オペレータ呼び出し部161は、未実行のオペレータのオペレータ定義情報を定義情報管理部13から取得する。また、未実行のオペレータが複数ある場合には、オペレータ呼び出し部161は、未実行のオペレータのうち一つを選択し、選択したオペレータの定義情報を取得する。本実施の形態では、第1の入力データの一例として、入力タプルを用いている。
次に、オペレータ呼び出し部161は、取得したオペレータ定義情報に定義された入力テーブルのレコード(以下、入力テーブルのレコードを入力レコードと称する)をテーブル格納部14から取得する。そして、オペレータ呼び出し部161は、入力タプルの列の値と入力レコードとを引数としてオペレータの関数(以下、オペレータ関数と称する)を実行し、集計データを生成する。オペレータ関数の実行に際し、オペレータ呼び出し部161は、オペレータ定義情報の入力タプル・入力テーブルマッピング情報に基づいて、入力タプルの列に対応するレコードを入力テーブルから取得する。本実施の形態では、第3データ、第2の入力データの一例として、入力レコードを用いている。
また、オペレータ呼び出し部161は、タプル関数実行部15から送信されたタプルに対応するオペレータが存在しない場合や、タプルに対応する各オペレータの処理が全て実行された場合、タプル受付部11に対して、次に集計処理を行うタプルを出力タプル格納部17から受け付けるように通知を行う。
出力レコード生成部162は、定義情報管理部13から、オペレータ定義情報で定義された出力テーブルのテーブル定義情報を取得する。そして、オペレータ呼び出し部161により生成された集計データを出力テーブルのレコード(以下、出力テーブルのレコードを出力レコードと称する)の形式に変換して、変換により得た出力レコードを、テーブル格納部14に格納された出力テーブルに書き込む。ここで書き込まれる出力レコードには、データ送信部2から送信されたタプルと同一のキー値が含まれるものとする。本実施の形態では、第2データ、第2の出力データの一例として、出力レコードを用いている。
出力タプル生成部163は、入力タプル、入力レコード、出力レコードに基づいて、出力タプルを生成する。ここで、出力タプル生成部163は、定義情報管理部13から、オペレータ定義情報に定義された出力タプルのタプル名に対応するタプル定義情報を取得する。そして、出力タプル生成部163は、出力タプルのタプル定義情報に応じて入力タプル、入力レコード、出力レコードの列の値をセットして、出力タプルを生成する。ここで生成される出力タプルには、データ送信部2から送信されたタプルと同一のキー値が含まれるものとする。本実施の形態では、第1の出力データの一例として、出力タプルを用いている。
ここで、出力タプル生成部163は、出力タプルの生成に際し、オペレータ定義情報に入力タプル、入力テーブル、出力テーブルのどの列の値を出力タプルにセットするか等の情報が定義されていれば、この情報をもとに出力タプルを生成する。このような情報が定義されていない場合、出力タプル生成部163は、予め定められた処理系の規則により出力タプルを生成する。予め定められた処理系の規則とは、例えば、入力タプルの列と同じ名称である出力タプルの列には、その入力タプルの列の値をセットする等である。
集計処理判定部164は、集計処理、即ち、オペレータ呼び出し部161によるオペレータ関数の実行、出力レコード生成部162による出力テーブルへの書き込み、出力タプル生成部163による出力タプルの生成の処理が成功したか否かを判定する。集計処理が成功した場合、集計処理判定部164は、オペレータ呼び出し部161に対して、引き続き未実行のオペレータに対する処理を行うように通知を行う。また、集計処理において出力タプルが生成されていれば、集計処理判定部164は、生成された出力タプルを出力タプル格納部17に格納させる。ここで、生成された出力タプルを入力タプルとして定義するオペレータが存在しない場合、例えば、集計処理判定部164は、出力タプルは集計処理システム1とは別のシステムで処理されるデータであるとして、出力タプル格納部17に格納せずにデータ処理部3の外部に出力する。一方、集計処理が失敗した場合、集計処理判定部164は、トランザクション管理部12に集計処理が失敗したことを通知する。
出力タプル格納部17は、出力タプル生成部163により出力タプルが生成された場合、生成された出力タプルを格納する。本実施の形態では、第1の出力データを記憶する記憶部の一例として、出力タプル格納部17を設けている。
<タプル定義情報の説明>
次に、定義情報管理部13に格納されているタプル定義情報について説明する。図5(a)(b)は、本実施の形態に係るタプル定義情報の一例を示す図である。図5(a)に示すタプル定義情報は、タプル名「PACKET_INFO」のタプル定義情報であり、図5(b)に示すタプル定義情報は、タプル名「PACKET_INFO_2」のタプル定義情報である。
図5(a)に示すタプル定義情報には、タプル名「PACKET_INFO」のタプルに関して、各列の名称、各列の型、キー列の情報、各列のタプル関数が示されている。タプルの列は4つあり、各列の列名は「USERID」、「SEQID」、「PACKETNUM」、「TIME」である。また、「USERID」、「SEQID」、「PACKETNUM」、「TIME」の各列について、列の型はそれぞれ、STRING、INT、INT、TIMESTAMPである。さらに、列「USERID」のキー欄は「Yes」であるため、「USERID」の列がタプルのキー列であることがわかる。その他3つの列のキー欄は「No」であるため、キー列は「USERID」の列のみとなる。即ち、タプル名「PACKET_INFO」のタプルは列「USERID」の列の値により識別され、列「USERID」の値が同一である複数のタプルは一連のデータとして処理される。また、データ送信部2がこのタプルを送信する場合には、列「USERID」の値をもとに、タプルの送信先となるデータ処理部3を特定することとなる。
また、列「USERID」のタプル関数の欄は「NONE」であるため、タプル関数は定義されていない。一方、列「SEQID」のタプル関数の欄は「seqid()」であり、タプル関数が定義されている。タプル関数「seqid()」は、タプルのキー値に関連付けられている親テーブルの列「SEQID」の値を取得し、取得した値に1加算してタプルの列「SEQID」に記録するとともに、親テーブルの列「SEQID」の値も更新する関数である。即ち、キー列「USERID」の値が同一である複数のタプルでは、順番に「SEQID」の値が1加算されて付与されることになる。このような構成により、例えば、同じユーザIDを持つタプルに順番に番号(SEQIDの番号)が付与され、順次集計処理が行われることとなる。
また、列「TIME」にはタプル関数「currenttime()」が定義されている。タプル関数「currenttime()」が実行されると、タプルの「TIME」の列に、タプルの受信時刻として現在時刻のタイムスタンプが記録される。タイムスタンプとは、イベントが発生した日時、日付、時刻などを示す文字列である。
また、図5(b)に示すタプル定義情報には、タプル名「PACKET_INFO_2」のタプルに関して、各列の名称、各列の型、キー列の情報、各列のタプル関数が示されている。タプルの列は4つあり、各列の列名はタプル「PACKET_INFO」の列名と同じで、「USERID」、「SEQID」、「PACKETNUM」、「TIME」である。また、タプルのキー列は「USERID」であり、各列のタプル関数は定義されていない。
<テーブル定義情報の説明>
次に、定義情報管理部13に格納されているテーブル定義情報について説明する。図6は、本実施の形態に係るテーブル定義情報の一例を示す図である。図6に示すテーブル定義情報は、テーブル名「PACKET_INFO」のテーブル定義情報である。
図6に示すテーブル定義情報には、テーブル名「PACKET_INFO」のテーブルに関して、各列の名称、各列の型、キー列の情報が示されている。テーブルの列は4つあり、各列の列名は「USERID」、「SEQID」、「PACKETNUM」、「TIME」である。また、「USERID」、「SEQID」、「PACKETNUM」、「TIME」の各列について、列の型はそれぞれ、STRING、INT、INT、TIMESTAMPである。また、列「USERID」、「SEQID」のキー欄は「Yes」であるため、列「USERID」、「SEQID」の列がテーブルのキー列であることがわかる。即ち、テーブル名「PACKET_INFO」のレコードは、列「USERID」および列「SEQID」の値により識別される。
<オペレータ定義情報の説明>
次に、定義情報管理部13に格納されているオペレータ定義情報について説明する。図7(a)(b)は、本実施の形態に係るオペレータ定義情報の一例を示す図である。図7(a)に示すオペレータ定義情報は、オペレータ名「te_copy」の定義情報であり、図7(b)に示すオペレータ定義情報は、オペレータ名「ee_avg」の定義情報である。
図7(a)に示すオペレータ定義情報には、オペレータ名「te_copy」のオペレータに関して、オペレータ名、オペレータ関数の実行に用いられるパラメータの情報、入力タプル名、出力タプル名、入力テーブル名、出力テーブル名が示されている。このオペレータ「te_copy」は、入力タプルの列値を出力テーブルに書き込む処理を行うオペレータである。オペレータ関数の実行に用いられるパラメータ欄は「NONE」であり、パラメータは定義されていない。また、入力タプル名は「PACKET_INFO」、出力タプル名は「PACKET_INFO_2」である。入力テーブル名は「NONE」であり入力テーブルは定義されておらず、出力テーブル名は「PACKET_INFO」である。入力テーブルが定義されていないため、入力タプル・入力テーブルマッピング情報も存在しない。
図7(b)に示すオペレータ定義情報には、オペレータ名「ee_avg」のオペレータに関して、オペレータ名、オペレータ関数の実行に用いられるパラメータの情報、入力タプル名、出力タプル名、入力テーブル名、出力テーブル名が示されている。オペレータ「ee_avg」には、オペレータ「te_copy」と異なりパラメータが定義されている。オペレータ「ee_avg」はこのパラメータをもとに、入力テーブルのレコード群で集計タイプに対応する時間範囲内のレコードの平均値を計算し、計算した平均値を出力テーブルに書き込む処理を行う。集計タイプは、分単位、時単位、日単位、月単位等である。例えば、携帯電話のパケット数のデータが集計処理システム1に次々と到着する場合に、オペレータ「ee_avg」により一分単位(即ち、集計タイプが分単位)のパケット数の平均値が出力テーブルに書き込まれる。
また、オペレータ「ee_avg」には、入力テーブルとしてテーブル「PACKET_INFO」が定義されているため、入力タプル・入力テーブルマッピング情報が存在する。入力タプル・入力テーブルマッピング情報には、入力タプルの列名と、それに対応する入力テーブルの列名とが示されている。即ち、入力タプル「PACKET_INFO_2」の列名と、それに対応する入力テーブル「PACKET_INFO」の列名との対応が示されており、入力タプルの列「USERID」「SEQID」「PACKETNUM」「TIME」に対して、それぞれ入力テーブルの列「USERID」「SEQID」「PACKETNUM」「TIME」が対応していることがわかる。ここで、図7(b)に示す例では、入力タプルの列とそれに対応する入力テーブルの列との列名が同じであるが、両者で列名が異なる場合もある。そのような場合であっても、入力タプル・入力テーブルマッピング情報により、入力タプルの列に入力テーブルのどの列が対応しているかがわかることになる。
<集計処理手順の説明>
次に、集計処理の手順について説明する。図8は、本実施の形態に係るデータ処理部3による集計処理手順の一例を示したフローチャートである。
まず、タプル受付部11は、集計処理の対象となるタプルを受け付ける(ステップ101)。タプル受付部11が最初に受け付けるタプルはデータ送信部2から入力されたタプルであるが、後述するステップ109で説明するように、タプル受付部11は、出力タプル格納部17に格納されたタプルを受け付ける場合もある。一例として、ここでは、タプル受付部11はタプルT1を受け付けたものとする。
次に、タプル受付部11は、トランザクション管理部12にタプルT1を受け付けたことを通知するとともに、タプルT1をタプル関数実行部15に送信する。そして、トランザクション管理部12は、トランザクションが開始済みか否かを判定する(ステップ102)。トランザクションが開始済みであれば(ステップ102でYes)、次にタプル関数実行部15は、タプルT1に定義されたタプル関数があるか否かを判定する(ステップ103)。一方、トランザクションが開始されていなければ(ステップ102でNo)、トランザクション管理部12はトランザクションを開始し(ステップ104)、ステップ103へ移行する。
次に、ステップ103で、タプルT1に定義されたタプル関数がないと判定された場合(ステップ103でNo)、オペレータ呼び出し部161は、タプルT1のタプル名と定義情報管理部13に格納されたオペレータ定義情報とに基づいて、タプルT1を入力タプルとするオペレータで未実行のものがあるか否かを判定する(ステップ105)。一方、タプル関数実行部15は、タプルT1に定義されたタプル関数があると判定した場合(ステップ103でYes)、タプル関数を実行してタプルT1の列の値を変更し(ステップ106)、その後にステップ105へ移行する。
次に、ステップ105で、タプルT1を入力タプルとするオペレータで未実行のものがないと判定された場合(ステップ105でNo)、タプル受付部11は、出力タプル格納部17が空であるか否かを判定する(ステップ107)。出力タプル格納部17が空であれば(ステップ107でYes)、トランザクション管理部12によりトランザクションはコミットされ(ステップ108)、全ての集計処理の処理結果が確定したものとしてデータベース(各テーブル)に反映される。データベースへ反映されると本処理フローは終了する。一方、出力タプル格納部17が空でなければ(ステップ107でNo)、タプル受付部11は、出力タプル格納部17からタプルを取得し(ステップ109)、ステップ101へ移行する。
また、ステップ105で、オペレータ呼び出し部161は、タプルT1を入力タプルとするオペレータで未実行のものがあると判定した場合(ステップ105でYes)、未実行のオペレータのうち一つを選択し、定義情報管理部13から選択したオペレータのオペレータ定義情報を取得する(ステップ110)。そして、オペレータ呼び出し部161は、取得したオペレータ定義情報に定義された入力レコードをテーブル格納部14から取得する。次に、オペレータ呼び出し部161は、タプルT1の列の値と入力レコードとを引数としてオペレータ関数を実行し、集計データを生成する。オペレータ関数の実行に際し、オペレータ呼び出し部161は、入力タプル・入力テーブルマッピング情報に基づいて、タプルT1の列に対応するレコードを入力テーブルから取得する。
そして、出力レコード生成部162は、ステップ110で取得済みのオペレータ定義情報で定義された出力テーブルのテーブル定義情報を取得し、オペレータ関数の実行により生成された集計データを出力レコードに変換して、変換により得た出力レコードを出力テーブルに書き込む(ステップ111)。さらに、オペレータ定義情報に出力タプルが定義されていれば、出力タプル生成部163は、出力タプルのタプル定義情報に応じて、タプルT1、入力レコード、出力レコードの値をセットして出力タプルを生成する。
次に、集計処理判定部164は、ステップ110およびステップ111の集計処理が成功したか否かを判定する(ステップ112)。集計処理が失敗した場合(ステップ112でNo)、トランザクション管理部12によりトランザクションはアボートされ(ステップ113)、トランザクションにおいてすでに実行された集計処理の処理結果は取り消されて、トランザクション実行前の元の状態に戻り、本処理フローは終了する。
一方、集計処理が成功した場合(ステップ112でYes)、さらに集計処理判定部164は、出力タプル生成部163により出力タプルが生成されたか否かを判定する(ステップ114)。出力タプルが生成されていなければ(ステップ114でNo)、タプルT1を入力タプルとするオペレータのうち、まだ実行されていないオペレータに対する処理を行うために、ステップ105へ移行する。一方、出力タプルが生成されていれば(ステップ114でYes)、集計処理判定部164は、出力タプルを出力タプル格納部17に格納し(ステップ115)、その後、ステップ114で否定の判断(No)がされた場合と同様に、ステップ105へ移行する。
<集計処理の具体例>
次に、図8に示した集計処理手順で行われる集計処理の具体例について説明する。図9は、本実施の形態に係るデータ処理部3による集計処理の具体例を示した図である。図9に示す集計処理は、データ送信部2が、例えば、携帯電話のパケット数のデータで「ユーザID」「パケット数」「時刻」の値を持つデータを受信して、タプルの形式に変換し、変換後のタプルをデータ処理部3に送信した場合に実行される集計処理の例である。データ処理部3に送信されるタプルは、図5(a)に示すタプル「PACKET_INFO」とし、4つのオペレータによる処理がトランザクションとして実行されることとする。また、タプル「PACKET_INFO」のキー値はユーザを識別するための番号である「ユーザID」であるとする。以下に示すステップは、図8の各ステップに対応するものとする。
まず、タプル「PACKET_INFO」がデータ処理部3に入力されると、タプル受付部11がタプル「PACKET_INFO」を受け付ける(ステップ101)。ここで、トランザクションはまだ開始されていないため、トランザクション管理部12はトランザクションを開始する(ステップ102、104)。次に、タプル関数実行部15は、タプル「PACKET_INFO」に定義されたタプル関数「seqid()」、「currenttime()」を実行し、タプルの列の値を変更する(ステップ103、106)。
次に、オペレータ呼び出し部161は、定義情報管理部13からタプル「PACKET_INFO」を入力タプルとするオペレータ「te_copy」の定義情報を取得する(ステップ105、110)。ここで取得されるオペレータ「te_copy」の定義情報は、図7(a)に示すオペレータ定義情報である。オペレータ定義情報に入力テーブルは定義されていないため、オペレータ呼び出し部161は、タプル「PACKET_INFO」の列の値を引数としてオペレータ関数を実行し、集計データを生成する。そして、出力レコード生成部162は、オペレータ定義情報に定義された出力テーブルであるテーブル「PACKET_INFO」の定義情報を取得し、集計データを出力レコードに変換し、変換により得た出力レコードを出力テーブル「PACKET_INFO」に書き込む(ステップ111)。ここで取得されるテーブル「PACKET_INFO」の定義情報は、図6に示すテーブル定義情報である。また、出力テーブルには、タプル「PACKET_INFO」と同一のキー値(ユーザID)が含まれる。
さらに、出力タプル生成部163は、出力タプルとしてオペレータ定義情報に定義されたタプル「PACKET_INFO_2」を生成する。ここで、出力タプル生成部163は、タプル「PACKET_INFO」、出力テーブル「PACKET_INFO」の値をもとに、図5(b)に示すタプル「PACKET_INFO_2」を生成する。タプル「PACKET_INFO_2」には、タプル「PACKET_INFO」と同一のキー値(ユーザID)が含まれる。
集計処理が成功すると、出力タプル生成部163により出力タプル「PACKET_INFO_2」が生成されているため、集計処理判定部164は、出力タプル「PACKET_INFO_2」を出力タプル格納部17に格納する(ステップ112〜115)。次に、ステップ105に移行するが、タプル「PACKET_INFO」を入力タプルとするオペレータは、オペレータ「te_copy」以外にはないため(ステップ105でNo)、タプル受付部11は出力タプル格納部17からタプル「PACKET_INFO_2」を取得し(ステップ107、109)、続けてタプル「PACKET_INFO_2」に対する集計処理が行われる。
次に、タプル受付部11がタプル「PACKET_INFO_2」を受け付けると(ステップ101)、トランザクションは開始済みであり(ステップ102)、タプル「PACKET_INFO_2」に定義されたタプル関数はないため(ステップ103)、オペレータ呼び出し部161は、タプル「PACKET_INFO_2」を入力タプルとするオペレータで未実行のものがあるか否かを判定する(ステップ105)。ここで、タプル「PACKET_INFO_2」を入力タプルとして定義するオペレータは、「ee_avg」「te_add」「ee_sum」の3つ存在するため、オペレータ呼び出し部161はそのうちの一つ、例えばオペレータ「ee_avg」を選択し、オペレータ「ee_avg」に関する処理を行う。オペレータ「ee_avg」の処理では、一分単位のパケット数の平均値が出力テーブルに書き込まれる。
オペレータ「ee_avg」の集計処理が成功して終わると(ステップ110〜115)、オペレータ呼び出し部161は、未実行のオペレータ「te_add」「ee_sum」のうちの一つを選択して続けて処理を行う。このようにして、オペレータ「te_add」「ee_sum」の集計処理も成功して終わると、タプル「PACKET_INFO_2」を入力タプルとする未実行のオペレータはないため(ステップ105でNo)、タプル受付部11は、出力タプル格納部17が空であるか否かを判定する(ステップ107)。「ee_avg」「te_add」「ee_sum」の各オペレータの処理で出力タプルは生成されないものとすると、出力タプル格納部17は空であるため、トランザクション管理部12によりトランザクションはコミットされる(ステップ108)。そして、各オペレータの集計処理により各テーブルに書き込まれたデータは確定したものとされ、一連の集計処理は終了する。
このようにして、例えば、携帯電話のパケット数のデータが集計処理システム1に次々と到着する場合に、一分単位のパケット数の平均値等が出力テーブルに書き込まれる。ここで、同一のキー値(ユーザID)を持つ複数のデータは到着順に処理されるが、異なるユーザIDを持つデータ同士では、到着した順番通りに処理が行われるとは限らない。また、集計処理システム1は、多数のユーザによるデータを受信するため、異なるユーザIDを持つデータを並列に受信するが、あるユーザからのデータ、即ち、同一のユーザIDを持つデータを二つ以上同時に受信することはない。
<定義情報の具体例>
次に、定義情報(タプル定義情報、テーブル定義情報、オペレータ定義情報)に関する記述の具体例について説明する。定義情報の記述方式としては様々な方式が存在するが、ここでは一例として、XML(Extensible Markup Language)形式で記述した場合の例について説明する。図10は、本実施の形態に係る定義情報に関する記述の一例を示した図である。
まず、<entity>タグにより、入力テーブルおよび出力テーブルが定義される。図示の例では、テーブル「DEVICE」とテーブル「DEVICE_INFO」が定義される。また、<entity>以下の<column>タグで、テーブルの列名と列型が定義される。列型にテーブル名が定義される場合には、別の<entity>タグでそのテーブルについて定義されていなければならない。また、<primarykey>タグで、キー列となる列名が指定される。<relation>タグは、テーブル間の関係付けを行うために用いられ、図示の例では、テーブル「DEVICE」からテーブル「DEVICE_INFO」に対して、テーブル「DEVICE」の「DEVICE_ID」列とテーブル「DEVICE_INFO」の「DEVICE_ID」列とを関係付けるように定義されている。
<tuple>タグでは、タプルが定義される。この<tuple>以下の<column>タグにより、タプルの列名と列型が定義される。図示の例では<columns useentity=”DEVICE_INFO”/>と定義されている。「DEVICE_INFO」は、<entity>タグで定義されているテーブル名である。このような記述により、同名のテーブルの列定義と同じ定義が使用される。<tuplefunction>タグでは、タプルの列に対してタプル関数が定義される。図示の例では、タプル関数として「seqid(SEQID)」、「currenttime()」が定義される。
<operator>タグでは、オペレータが定義される。図示の例では、タプル「DEVICE_INFO」を受けて、テーブル「DEVICE_INFO」に値を格納するという処理を行うオペレータが定義されている。この格納処理は、オペレータ「te_copy」で行われる。
また、図示の例では、テーブル「DEVICE_INFO」のレコード数はタプルの受信とともに単調増加となる。これに対して、レコード数の制限値を設定し、その数を超える場合は最も古いレコードを自動的に削除するような構成を定義することも可能である。これにより、テーブル「DEVICE_INFO」のレコード数が単調増加することを防ぐこともできる。例えば、<entity name=”DEVICE_INFO”>を<entity name="DEVICE_ INFO " writeonce="LAST_MODIFIED:100">というように定義する方法がある。このwriteonce属性は、DEVICE_IDごとに最大レコード数を100とし、それを超える場合は、LAST_MODIFIED列のタイムスタンプ値の古いものから削除していくという指示を行うものである。
このように、タプル定義情報、テーブル定義情報、オペレータ定義情報は定義され、オペレータによる処理が実現されることとなる。
以上のように、本実施の形態に係る集計処理システム1は、外部から到着する多数のデータに対して、データごとに即時に集計処理を行う。この集計処理において、集計処理システム1は、データがある条件に合致した場合に決められたアクションを実行したり、複数のデータをまとめて処理したりするのではなく、到着したデータごとにすでに保持しているデータと組み合わせて処理を行い、その結果を保存する処理を行う。
具体的には、集計処理システム1は、キー値が同一である複数のタプルを一連のデータとして扱い、タプルのキー値に関連するデータ群(入力テーブル)を参照し、タプルと入力テーブルとに基づいてオペレータによる処理を行い、出力テーブルへの書き込みや出力タプルの生成を行う。さらに、集計処理システム1は、複数の集計処理をトランザクションとして実行するため、一つのデータに対する複数の出力テーブルへの更新が一貫して行われる。
本実施の形態では、集計処理を実現するためのオペレータの基本モデルを提案するとともに、そのモデルに基づいて実現されたオペレータを組み合わせて実行するための機構も提案する。そのため、集計処理を実行するシステムを簡易に実現することが可能になり、さらに、例えば、基本操作を行うオペレータを予め提供することにより、システム開発者によるプログラム開発コストが削減される。また、例えば、拡張性が高く(スケーラブルで)メモリ上にデータを保持するデータグリッド技術を利用し、集計処理システム1を実現することで、拡張性のある高速な集計処理を行うシステムが簡易に実現される。
また、本実施の形態では、データ送信部2から入力されるタプルに対して実行されるオペレータの処理をまとめて一つのトランザクションとしたが、このような構成に限られるものではない。例えば、オペレータの処理を2つ以上のトランザクションとして実行しても良い。
また、本実施の形態では、出力タプル格納部17に格納されるタプルがなくなった時点でトランザクションがコミットされることとしたが、このような構成に限られるものではない。例えば、どの時点でトランザクションがコミットされるかプログラムの記述等により予め定められていても良い。
<集計処理手順の他の例>
次に、集計処理の手順の他の例について説明する。図11は、本実施の形態に係るデータ処理部3による集計処理手順の他の一例を示したフローチャートである。図8に示す集計処理の手順では、データ送信部2から入力されるタプルに対して実行されるオペレータの処理を一つのトランザクションとする場合について説明した。一方、図11に示す集計処理の手順では、一つのオペレータの処理ごとにトランザクションを完了させるように予め指定されているものとする。
まず、タプル受付部11は、集計処理の対象となるタプルを受け付ける(ステップ201)。一例として、ここでは、タプル受付部11はタプルT2を受け付けたものとする。そして、タプル受付部11は、トランザクション管理部12にタプルT2を受け付けたことを通知するとともに、タプルT2をタプル関数実行部15に送信する。そして、トランザクション管理部12は、トランザクションを開始させる(ステップ202)。
次に、タプル関数実行部15は、タプルT2に定義されたタプル関数があるか否かを判定する(ステップ203)。タプルT2に定義されたタプル関数がないと判定された場合(ステップ203でNo)、ステップ105と同様に、オペレータ呼び出し部161は、タプルT2のタプル名と定義情報管理部13に格納されたオペレータ定義情報とに基づいて、タプルT2を入力タプルとするオペレータで未実行のものがあるか否かを判定する(ステップ205)。一方、タプル関数実行部15は、タプルT2に定義されたタプル関数があると判定した場合(ステップ203でYes)、ステップ106と同様に、タプル関数を実行してタプルT2の列の値を変更する(ステップ204)。
次に、ステップ205で、タプルT2を入力タプルとするオペレータで未実行のものがないと判定された場合(ステップ205でNo)、タプル受付部11は、ステップ107と同様に、出力タプル格納部17が空であるか否かを判定する(ステップ206)。出力タプル格納部17が空であれば(ステップ206でYes)、本処理フローは終了する。ここで、開始されたトランザクションがコミットされていない場合にはコミットされる。一方、出力タプル格納部17が空でなければ(ステップ206でNo)、タプル受付部11は、ステップ109と同様に、出力タプル格納部17からタプルを取得し(ステップ207)、ステップ201へ移行する。
また、ステップ205で、オペレータ呼び出し部161は、タプルT2を入力タプルとするオペレータで未実行のものがあると判定した場合(ステップ205でYes)、未実行のオペレータのうち一つを選択し、トランザクション管理部12によりトランザクションが開始されているか否かを判定する(ステップ208)。トランザクションが開始されていなければ(ステップ208でNo)、トランザクション管理部12はトランザクションを開始させる(ステップ209)。一方、トランザクションが開始されていれば(ステップ208でYes)、オペレータ呼び出し部161は、選択したオペレータのオペレータ定義情報を定義情報管理部13から取得する(ステップ210)。
そして、オペレータ呼び出し部161は、ステップ111と同様に、オペレータ関数の実行、出力レコードの書き込みを行う(ステップ211)。さらに、オペレータ定義情報に出力タプルが定義されていれば、出力タプル生成部163は、出力タプルのタプル定義情報に応じて出力タプルを生成する。次に、集計処理判定部164は、ステップ112と同様に、集計処理が成功したか否かを判定する(ステップ212)。処理が失敗した場合(ステップ212でNo)、トランザクションはアボートされ(ステップ213)、選択されたオペレータによる集計処理の処理結果は取り消されて元の状態に戻り、ステップ205へ移行する。
一方、集計処理が成功した場合(ステップ212でYes)、トランザクション管理部12によりトランザクションはコミットされ(ステップ214)、選択されたオペレータによる集計処理の処理結果が確定したものとしてデータベース(各テーブル)に反映される。次に、集計処理判定部164は、ステップ114と同様に、出力タプル生成部163により出力タプルが生成されたか否かを判定する(ステップ215)。出力タプルが生成されていなければ(ステップ215でNo)、ステップ205へ移行する。一方、出力タプルが生成されていれば(ステップ215でYes)、ステップ115と同様に、集計処理判定部164は出力タプルを出力タプル格納部17に格納し(ステップ216)、ステップ205へ移行する。
以上のように、図11に示す集計処理手順では、一つのオペレータの処理ごとにトランザクションが開始および完了される。オペレータの処理ごとにトランザクションを開始および完了させることにより、データ処理部3の処理としては一つのデータに対して順に集計処理が行われるとともに、例えば、ある集計処理が失敗したとしても、他の集計処理が続けて行われることとなる。ただし、データベースに不整合が生じるのを抑制するために、タプル受付部11は、データ送信部2から送信されたタプルに関して出力タプル格納部17に格納された出力タプルがなくなるまで、そのタプルと同一のキー値を持つタプルをデータ送信部2から受け付けないものとする。
<最適化処理の第1の例>
次に、集計処理を最適化して性能を向上させるための最適化処理について説明する。図12(図12−1、図12−2)は、本実施の形態に係る最適化処理の第1の例を説明するための図である。図12−1は、最適化前の集計処理結果の一例を示した図であり、図12−2は、最適化後の集計処理結果の一例を示した図である。
図12−1の集計処理結果は、外部のセンサーから10秒ごとに送信されてくる温度情報に関して、センサーごとに毎分の温度の最大値と最小値とを記録していく集計処理の結果である。例えば、2012/12/25 10:00:00の時刻を持つタプルが到着すると、2つのオペレータが入力テーブル(温度テーブル)の2012/12/25 9:59台の入力レコード(9:59:00〜9:59:50の6つのレコード)を参照し、最大値または最小値を取得して、各オペレータの出力テーブル(温度最小値テーブル、温度最大値テーブル)に記録する。入力テーブルおよび出力テーブルのキー値はセンサーIDと時刻である。最適化前では、出力テーブルが、温度最大値テーブルおよび温度最小値テーブルの別々に定義されている。このため、2つのレコードがそれぞれの出力テーブルに書き込まれることとなる。
しかし、これら2つのオペレータは入力レコードに関して同じレコード群を参照している。そのため、2つのオペレータをまとめると、入力レコードに対して一回の読み込み処理で最大値および最小値の計算が行われる。さらに、2つのオペレータは、出力レコードに関して同じキー値を持つレコードをそれぞれのテーブルに書き込んでいる。そのため、出力テーブルを一つのテーブルとすれば、オペレータは一つのレコードの書き込みで最大値と最小値とを書き込むこととなる。図12−2は、このような最適化処理を施した結果を示した図であり、最適化処理を実行するために2つのオペレータはグループ化されている。
このようなオペレータのグループ化を行うための条件は、グループ化する2つ以上のオペレータに関して、入力テーブルが同じであり同じレコード群を読み込むこと、出力テーブルに同じキー値を持つレコードを挿入または更新すること、同じタプルを読み込むこと、の3つである。オペレータ呼び出し部161は、ある2つ以上のオペレータに対して、この3つの条件が満たされているか否かを判定し、全ての条件が満たされている場合、それらのオペレータについてグループ化を行うことで、最適化処理が行われる。
また、ある2つ以上のオペレータに関して、入力テーブルが同じであり同じレコード群を読み込むか否かの判定は、オペレータ定義情報の入力テーブル名、オペレータによる処理の内容、オペレータの処理で用いられるパラメータの情報をもとに行われる。また、ある2つ以上のオペレータに関して、出力テーブルに同じキー値のレコードを挿入または更新するか否かは、オペレータによる処理の内容に依存する。さらに、ある2つ以上のオペレータに関して、同じタプルを読み込むか否かの判定は、オペレータ定義情報をもとに行われる。
グループ化されたオペレータ(以下、グループ化オペレータと称する)を実行するには、オペレータを呼び出す手順を拡張する必要があるが、例えば、図8のステップ110および111の処理を変更すれば良い。図13は、本実施の形態に係るグループ化オペレータを実行する手順の一例を示したフローチャートである。本手順は、図8に示した手順において、ステップ105で肯定の判断(Yes)がされた後に実行されるものである。
まず、オペレータ呼び出し部161は、グループ化オペレータであるか否かを判定する(ステップ301)。グループ化オペレータであれば(ステップ301でYes)、オペレータ呼び出し部161は、グループ内で未実行のオペレータがあるか否かを判定する(ステップ302)。未実行のオペレータがある場合(ステップ302でYes)、オペレータ呼び出し部161は、未実行のオペレータのうち一つを選択し、定義情報管理部13から選択したオペレータのオペレータ定義情報を取得する(ステップ303)。そして、オペレータ呼び出し部161は、オペレータ関数の実行、出力レコードの書き込みを行う(ステップ304)。さらに、オペレータ定義情報に出力タプルが定義されていれば、出力タプル生成部163は、出力タプルのタプル定義情報に応じて出力タプルを生成する。その後、ステップ302に移行する。
また、ステップ302で、オペレータ呼び出し部161がグループ内で未実行のオペレータはないと判定した場合(ステップ302でNo)、本処理フローは終了する。また、ステップ301で、オペレータ呼び出し部161がグループ化オペレータではないと判定した場合(ステップ301でNo)、図8のステップ110および111のオペレータ実行処理(ステップ305)が行われて、本処理フローは終了する。本処理フローが終了した後には、図8のステップ112に移行する。また、グループ化オペレータにより生成された出力タプルについては、図8のステップ115でまとめて出力タプル格納部17に格納される。
集計処理システム1がこのような最適化処理を行うことで、入力テーブルからの読み込み処理が削減されるとともに、出力テーブルへの書き込みレコード数が削減され、集計処理の性能が向上する。
<最適化処理の第2の例>
次に、最適化処理の他の例について説明する。図14は、本実施の形態に係る最適化処理の第2の例を説明するための図である。本例において実行される処理は、並列化処理である。並列化処理とは、一つの外部から到着するタプルに対する複数のオペレータ処理において、別々のスレッドで同時並行して処理を行うというものである。スレッドとは、演算手段であるCPU(Central Processing Unit)による処理の単位のことをいう。
図14に示す構成では、最初にスレッド1でオペレータ1およびオペレータ2の処理が行われる。次にオペレータ2が生成したタプルがオペレータ3A〜3Cに渡され、これらのオペレータが別々のスレッドで並行に実行される。オペレータ3Aはスレッド2で、オペレータ3Bはスレッド3で、オペレータ3Cとその後のオペレータ4Cとはスレッド4で実行される。これらのオペレータによる処理がまとまった一つのトランザクションであるとすると、スレッド1がスレッド2、3、4の終了を待ち、トランザクションがコミットされる。
このようなオペレータの並列化処理を行うための条件は、同じタプルが入力タプルとして定義されていることであり、各オペレータのオペレータ定義情報をもとに、オペレータ呼び出し部161により並列化可能であるか否かが判定される.また、並列化処理を行う手法として、並列化可能であれば並列化処理を行うように予め設定される手法と、実行時のCPUやメモリ資源の状況をみて並列化するか否かが判断される手法の2つがある。
図15は、本実施の形態に係る並列化処理の手順の一例を示したフローチャートである。本手順は、図8に示した手順において、ステップ103で否定の判断(No)がされた後、またはステップ106の後に実行されるものである。
まず、オペレータ呼び出し部161は、並列化可能な二つ以上のオペレータがあるか否かを判定する(ステップ401)。並列化可能な二つ以上のオペレータがない場合(ステップ401でNo)には、図8のステップ105へ移行する。一方、並列化可能な二つ以上のオペレータがある場合(ステップ401でYes)、次に、オペレータ呼び出し部161は、並列化可能な各オペレータに対してスレッドを割り当て、個々のスレッドにてオペレータを実行する(ステップ402)。ステップ402では、各オペレータにおいてステップ110〜115の処理が行われる。そして、オペレータ呼び出し部161は、全スレッドの処理が終了したか否かを判定する(ステップ403)。全スレッドの処理が終了すれば(ステップ403でYes)、本処理フローは終了する。本処理フローが終了した後には、図8のステップ105に移行する。
集計処理システム1がこのような並列化処理を行うことで、一つのタプルに関連する一連の集計処理の処理時間が短縮され、集計処理の性能が向上する。ただし、CPUリソースがフルに使用されている状況では、一つのタプルに対する処理を並列化しても、そのオーバーヘッドにより逆に性能が低下する場合がある。例えば、ある特定のキー値に関連するタプルが連続して到着し、そのキー値以外のタプルはほとんど到着しておらずCPUリソースが余っている状況であれば、並行化処理により処理時間は短縮される。
以上説明した本実施の形態に係る集計処理システム1は、一つの独立したシステムとしてだけでなく、複数の同様の集計処理システム1を連結させた構成や、他のシステムに組み込まれた構成で用いられても良い。例えば、日本全国に散りばめられているセンサーの情報を集計する場合、地域ごとに本実施の形態に係る集計処理システム1を配置し、そこで一時的な集計を行い、それらの集計結果をまとめる別の集計処理システム1により、全国の情報の集計を行うようなシステム等が考えられる。
<ハードウェア構成例>
図16は、本実施の形態に係るデータ処理部3を構成するのに好適なハードウェア構成例を示す図である。ここでは、コンピュータに適用する場合について説明する。図16に示すコンピュータは、演算手段であるCPU10aと、主記憶手段であるメモリ10cを備える。また、外部デバイスとして、磁気ディスク装置(HDD:Hard Disk Drive)10g、ネットワーク・インターフェイス10f、ディスプレイ装置を含む表示機構10d、音声機構10h、キーボードやマウス等の入力デバイス10i等を備える。
図16に示す構成例では、メモリ10cおよび表示機構10dは、システム・コントローラ10bを介してCPU10aに接続されている。また、ネットワーク・インターフェイス10f、磁気ディスク装置10g、音声機構10hおよび入力デバイス10iは、I/Oコントローラ10eを介してシステム・コントローラ10bと接続されている。各構成要素は、システム・バスや入出力バス等の各種のバスによって接続される。
なお、図16は、本実施の形態が適用されるのに好適なコンピュータのハードウェア構成を例示するに過ぎない。本実施の形態は、到着したデータごとにすでに保持しているデータと組み合わせて処理を行い、その結果を保存する処理を行うことが可能な装置に広く適用できるものであり、図示の構成においてのみ本実施例が実現されるのではない。
図16において、磁気ディスク装置10gにはOSのプログラムやアプリケーション・プログラムが格納されている。そして、これらのプログラムがメモリ10cに読み込まれてCPU10aに実行されることにより、本実施の形態におけるタプル受付部11、トランザクション管理部12、タプル関数実行部15、集計処理実行部16の各機能が実現される。また、定義情報管理部13、テーブル格納部14、出力タプル格納部17は、メモリ10cや磁気ディスク装置10g等の記憶手段により実現される。
1…集計処理システム、2…データ送信部、3…データ処理部、11…タプル受付部、12…トランザクション管理部、13…定義情報管理部、14…テーブル格納部、15…タプル関数実行部、16…集計処理実行部、161…オペレータ呼び出し部、162…出力レコード生成部、163…出力タプル生成部、164…集計処理判定部、17…出力タプル格納部、201…タプル送信部、301…RDAサーバプロセス、302…RDBサーバプロセス

Claims (10)

  1. 分類のために用いられる値であるキーを有するデータを外部から受信し、受信したデータごとに集計処理を行うシステムであって、
    前記集計処理の対象として前記キーを有する第1の入力データを受け付ける受付部と、
    データベースを保持する保持部と、
    前記受付部により受け付けられた前記第1の入力データに対して前記集計処理を行い、前記キーを有する第1の出力データおよび当該キーを有し前記保持部に保持された前記データベースに格納される第2の出力データの少なくとも一つを出力する処理部とを備え、
    前記処理部は、前記キーを有するデータに対して前記集計処理を行い当該キーを有する第1の出力データおよび当該キーを有し前記保持部に保持された前記データベースに格納される第2の出力データの少なくとも一つを出力する他の処理部について、当該他の処理部による当該集計処理が正常に完了しなかった場合には当該処理部の処理結果を取り消し、
    前記受付部は、前記処理部に対する前記第1の入力データとして、外部から受信した前記データ又は前記他の処理部から出力された第1の出力データを受け付けること
    を特徴とするシステム。
  2. 前記処理部は、前記第1の入力データに加えて、前記データベースから読み出した第3データを受け付け、当該第1の入力データおよび当該第3データに基づいて当該第1の入力データに対する処理を行うことを特徴とする請求項1に記載のシステム。
  3. 分類のために用いられる値であるキーを有するデータを外部から受信し、受信したデータごとに集計処理を行うシステムであって、
    前記集計処理の対象として前記キーを有する第1の入力データを受け付ける受付部と、
    データベースを保持する保持部と、
    前記受付部により受け付けられた前記第1の入力データに対して所定の処理を行い、処理結果に基づいて、当該キーを有する第1の出力データおよび当該キーを有し前記保持部に保持された前記データベースに格納される第2の出力データの少なくとも一つを出力する複数の処理部とを備え、
    前記受付部は、外部から受信した前記データを前記複数の処理部のうちの先頭の処理部に対する第1の入力データとして受け付けて、当該先頭の処理部より後の各処理部に対しては、処理部の前段にある他の処理部から出力された第1の出力データを当該処理部に対する第1の入力データとして受け付けること
    を特徴とするシステム。
  4. 前記複数の処理部は、前記第1の入力データに加えて、前記データベースから読み出したデータを第2の入力データとして受け付け、当該第1の入力データおよび当該第2の入力データに基づいて前記所定の処理を行うことを特徴とする請求項3に記載のシステム。
  5. 前記複数の処理部において、出力される第1の出力データがない場合、または出力される第1の出力データを第1の入力データとする他の処理部がない場合、前記キーを有するデータについての集計処理が終了することを特徴とする請求項3または4に記載のシステム。
  6. 分類のために用いられる値であるキーを有するデータを外部から受信し、受信したデータごとに集計処理を行うシステムであって、
    前記集計処理の対象として前記キーを有する第1の入力データを受け付ける受付部と、
    データベースを保持する保持部と、
    前記受付部により受け付けられた前記第1の入力データに応じた前記集計処理を行う手段である1または複数のオペレータを呼び出して、呼び出した1または複数の当該オペレータにより当該第1の入力データに対する所定の処理を行い、各オペレータの処理において、前記キーを有する第1の出力データおよび当該キーを有し前記保持部に保持された前記データベースに格納される第2の出力データの少なくとも一つを出力する処理部と、
    前記処理部により出力された前記第1の出力データを記憶する記憶部とを備え、
    前記受付部は、第1の入力データの受け付けに際し、前記記憶部に記憶された前記第1の出力データがある場合、当該第1の出力データを第1の入力データとして受け付け、当該記憶部に記憶された当該第1の出力データがない場合、外部から受信した前記データを第1の入力データとして受け付けること
    を特徴とするシステム。
  7. 前記処理部による前記所定の処理が終了した後、前記記憶部に記憶される前記第1の出力データがない場合、前記第2の出力データが格納された前記データベースの内容が確定されることを特徴とする請求項6に記載のシステム。
  8. 前記処理部によるオペレータの処理が終了するごとに、前記データベースの内容が確定されることを特徴とする請求項6に記載のシステム。
  9. 分類のために用いられる値であるキーを有するデータを外部から受信し、受信したデータごとに集計処理を行う方法であって、
    受付部が、前記集計処理の対象として前記キーを有する第1の入力データを受け付けるステップと、
    処理部が、前記受付部により受け付けられた前記第1の入力データに対して前記集計処理を行い、前記キーを有する第1の出力データおよび当該キーを有しデータベースに格納される第2の出力データの少なくとも一つを出力するステップとを含み、
    前記処理部は、前記キーを有するデータに対して前記集計処理を行い当該キーを有する第1の出力データおよび当該キーを有し前記データベースに格納される第2の出力データの少なくとも一つを出力する他の処理部について、当該他の処理部による当該集計処理が正常に完了しなかった場合には当該処理部の処理結果を取り消し、
    前記受付部は、前記処理部に対する前記第1の入力データとして、外部から受信した前記データ又は前記他の処理部から出力された第1の出力データを受け付けること
    を特徴とする方法。
  10. 分類のために用いられる値であるキーを有するデータを外部からコンピュータに受信させ、受信させたデータごとに集計処理を行うプログラムであって、
    前記コンピュータを、
    前記集計処理の対象として前記キーを有する第1の入力データを受け付ける受付手段
    前記受付手段により受け付けられた前記第1の入力データに対して前記集計処理を行い、前記キーを有する第1の出力データおよび当該キーを有しデータベースに格納される第2の出力データの少なくとも一つを出力する処理手段として機能させ、
    前記処理手段は、前記キーを有するデータに対して前記集計処理を行い当該キーを有する第1の出力データおよび当該キーを有し前記データベースに格納される第2の出力データの少なくとも一つを出力する他の処理手段について、当該他の処理手段による当該集計処理が正常に完了しなかった場合には当該処理手段の処理結果を取り消し、
    前記受付手段は、前記処理手段に対する前記第1の入力データとして、外部から受信した前記データ又は前記他の処理手段から出力された第1の出力データを受け付けること
    を特徴とするプログラム。
JP2013227726A 2013-10-31 2013-10-31 受信したデータごとに集計処理を行うシステム、方法およびプログラム Expired - Fee Related JP6032680B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013227726A JP6032680B2 (ja) 2013-10-31 2013-10-31 受信したデータごとに集計処理を行うシステム、方法およびプログラム
US14/472,324 US10474698B2 (en) 2013-10-31 2014-08-28 System, method, and program for performing aggregation process for each piece of received data
CN201410599106.8A CN104598299B (zh) 2013-10-31 2014-10-30 用于对每条接收数据执行聚合处理的系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013227726A JP6032680B2 (ja) 2013-10-31 2013-10-31 受信したデータごとに集計処理を行うシステム、方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2015088072A JP2015088072A (ja) 2015-05-07
JP6032680B2 true JP6032680B2 (ja) 2016-11-30

Family

ID=52996652

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013227726A Expired - Fee Related JP6032680B2 (ja) 2013-10-31 2013-10-31 受信したデータごとに集計処理を行うシステム、方法およびプログラム

Country Status (3)

Country Link
US (1) US10474698B2 (ja)
JP (1) JP6032680B2 (ja)
CN (1) CN104598299B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9632847B2 (en) * 2014-11-11 2017-04-25 Fair Isaac Corporation System and method for linearizing messages from data sources for optimized high-performance processing in a stream processing system
US10579753B2 (en) * 2016-05-24 2020-03-03 Ab Initio Technology Llc Executable logic for processing keyed data in networks
WO2018069973A1 (ja) * 2016-10-11 2018-04-19 富士通株式会社 集計プログラム、集計装置、及び集計方法
US10949427B2 (en) * 2017-01-31 2021-03-16 Microsoft Technology Licensing, Llc Stream data processing on multiple application timelines
US20220035675A1 (en) * 2020-08-02 2022-02-03 Avatar Cognition Barcelona S.L. Pattern recognition system utilizing self-replicating nodes
US20220058179A1 (en) * 2020-08-24 2022-02-24 International Business Machines Corporation Executing database transactions
CN112732722A (zh) * 2021-01-19 2021-04-30 深圳市欢太科技有限公司 数据处理方法、数据处理装置、存储介质与电子设备
US11861322B2 (en) * 2021-05-13 2024-01-02 West Technology Group, Llc Automated management of revised IVR prompt translations
US11875132B2 (en) 2021-05-13 2024-01-16 Intrado Corporation Validation of revised IVR prompt translation

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546557A (en) 1993-06-14 1996-08-13 International Business Machines Corporation System for storing and managing plural logical volumes in each of several physical volumes including automatically creating logical volumes in peripheral data storage subsystem
JP2000057092A (ja) 1998-08-13 2000-02-25 Nec Corp オンラインリアルタイムシステム、トランザクション処理装置及び方法、並びに記録媒体
JP4688270B2 (ja) 1999-10-13 2011-05-25 株式会社ビジュアルジャパン ネットワーク型データ伝送システム、並びに同システムにおけるサーバ及び端末装置
JP2003162772A (ja) 2001-11-27 2003-06-06 Nec Corp データ共有システム、その処理方法及びそのプログラム
JP2004280371A (ja) 2003-03-14 2004-10-07 Mitsubishi Electric Information Systems Corp サーバ装置及びプログラム
JP2005011109A (ja) 2003-06-19 2005-01-13 Hitachi Ltd ジョブ管理方法、情報処理装置、プログラム、および記録媒体
JP4723301B2 (ja) 2005-07-21 2011-07-13 株式会社日立製作所 ストリームデータ処理システムおよびストリームデータ処理方法
US20070226188A1 (en) * 2006-03-27 2007-09-27 Theodore Johnson Method and apparatus for data stream sampling
JP2008276547A (ja) 2007-04-27 2008-11-13 Toshiba Corp プログラム処理方法及び情報処理装置
US8335782B2 (en) 2007-10-29 2012-12-18 Hitachi, Ltd. Ranking query processing method for stream data and stream data processing system having ranking query processing mechanism
JP5377897B2 (ja) * 2007-10-29 2013-12-25 株式会社日立製作所 ストリームデータのランキングクエリ処理方法およびランキングクエリ処理機構を有するストリームデータ処理システム
US8510341B2 (en) * 2008-11-21 2013-08-13 Sap Ag System, method and structures for a reusable custom-defined nestable compound data type for construction of database objects
US8458451B2 (en) * 2009-01-20 2013-06-04 New York University Database outsourcing with access privacy
JP4462504B1 (ja) 2009-09-23 2010-05-12 修平 西山 一貫性保持の起点となるトランザクション・プロセスが所有する更新アクセス・カウンタによるマルチ・トランザクション制御システム
JP5058209B2 (ja) 2009-05-22 2012-10-24 株式会社日立製作所 ストリームデータ処理において逆再生を行うデータ処理システム
JP2011237944A (ja) 2010-05-07 2011-11-24 Nec Corp 分散型データベース運用システム、運用方法、及び運用プログラム
US8423516B2 (en) 2010-09-15 2013-04-16 International Business Machines Corporation Speculative execution in a real-time data environment
JP2012118928A (ja) 2010-12-03 2012-06-21 Nec Corp イベント処理装置、イベント処理方法およびイベント処理プログラム

Also Published As

Publication number Publication date
CN104598299B (zh) 2018-10-12
US20150120739A1 (en) 2015-04-30
CN104598299A (zh) 2015-05-06
JP2015088072A (ja) 2015-05-07
US10474698B2 (en) 2019-11-12

Similar Documents

Publication Publication Date Title
JP6032680B2 (ja) 受信したデータごとに集計処理を行うシステム、方法およびプログラム
US11829360B2 (en) Database workload capture and replay
US10554771B2 (en) Parallelized replay of captured database workload
US20200192900A1 (en) Order-independent multi-record hash generation and data filtering
US9589041B2 (en) Client and server integration for replicating data
US8725707B2 (en) Data continuous SQL process
Varia Cloud architectures
US20180113771A1 (en) Transaction consistency query support for replicated data from recovery log to external data stores
US9747356B2 (en) Eager replication of uncommitted transactions
US7680793B2 (en) Commit-time ordered message queue supporting arbitrary read and dequeue patterns from multiple subscribers
US11232071B2 (en) Regressable differential data structures
US20150278310A1 (en) Database device
US10685034B2 (en) Systems, methods, and apparatuses for implementing concurrent dataflow execution with write conflict protection within a cloud based computing environment
CN111966692A (zh) 针对数据仓库的数据处理方法、介质、装置和计算设备
JP6262505B2 (ja) 分散型データ仮想化システム、クエリ処理方法及びクエリ処理プログラム
US9092472B1 (en) Data merge based on logical segregation
JP5546909B2 (ja) データ処理システム及び方法及びプログラム
US9063773B2 (en) Automatic parallelism tuning for apply processes
JPWO2018061219A1 (ja) ジョブスケジューリングシステム、ジョブスケジューリング方法、およびジョブスケジューリング装置
JP6680897B2 (ja) 計算機システム及び分析ソースデータ管理方法
US20220360458A1 (en) Control method, information processing apparatus, and non-transitory computer-readable storage medium for storing control program
US20180060407A1 (en) Data-dependency-driven flow execution
US10776753B1 (en) Consistent updating of data storage units using tenant specific update policies
CN117633095A (zh) 一种可视化数据平台和系统
Xu et al. AQUAS: A Quality-Aware Scheduler

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151127

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20160115

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160411

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160524

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160624

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160927

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20160927

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161018

R150 Certificate of patent or registration of utility model

Ref document number: 6032680

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees