JP5637896B2 - ウィンドウ処理装置,方法およびプログラム - Google Patents

ウィンドウ処理装置,方法およびプログラム Download PDF

Info

Publication number
JP5637896B2
JP5637896B2 JP2011038656A JP2011038656A JP5637896B2 JP 5637896 B2 JP5637896 B2 JP 5637896B2 JP 2011038656 A JP2011038656 A JP 2011038656A JP 2011038656 A JP2011038656 A JP 2011038656A JP 5637896 B2 JP5637896 B2 JP 5637896B2
Authority
JP
Japan
Prior art keywords
window
data
processing
target element
buffer
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.)
Active
Application number
JP2011038656A
Other languages
English (en)
Other versions
JP2012174212A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011038656A priority Critical patent/JP5637896B2/ja
Publication of JP2012174212A publication Critical patent/JP2012174212A/ja
Application granted granted Critical
Publication of JP5637896B2 publication Critical patent/JP5637896B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は,包含関係を持つ要素を含むデータのストリームに対するウィンドウ処理技術に関する。
近年,センサデータ,POS(Point of Sales)データ,ブログやツィッター(twitter)などのウェブデータなど,時々刻々と発生し続ける大量データを,リアルタイムに処理することを目的としたストリーム処理(Stream Processing)が注目を集めている。
ストリーム処理では,リアルタイム性が要求されるため,限られた計算領域を用いて,できるだけ少ない処理量で計算する技術が必須である。
これまでは,大量データの処理にはDBMS(データベース管理システム)を用いるのが主流であった。しかし,DBMSでは,データ格納や補助データ作成に膨大な処理時間が必要となるため,リアルタイム処理には不向きである。
なお,現在の商用またはオープンソースのストリーム処理エンジンは,データ種としてCSVのような固定長のデータを想定しており,より柔軟なデータ表現が可能なXML形式のデータを効率よく扱うことはできない。
ストリーム処理における最も基本的な処理の1つとして,ウィンドウ処理がある。ウィンドウ処理では,決められた処理期間内のデータのみを逐次的に処理することによって,無限長のデータストリームに対して,決められた計算領域だけを用いてリアルタイムで処理することができる。
上記のウィンドウ処理を,XMLデータのストリームに適用するために,Xquery拡張言語およびその実行システムが提案されている(第1の既存技術)。
図16は,XMLデータのストリームの例を説明するための図である。
図16に示す例では,ある要素をルートにして包含関係を持つ構成要素を含むXMLデータが次々と発生してストリームを構成しているとする。
図16に示すXMLデータのストリームは,POSシステムで生成されたデータである。このPOS要素をルートとするXMLデータ(以下,POS木と呼ぶ)は,cust要素とshop要素とを持つ。また,レジ担当者(店員)が変わるまでは,新しいPOS木は発生しないものとする。
cust要素は,顧客の買い物データを表わす。cust要素は,必須要素として,購入品の価格を表すpric要素を持ち,任意要素として,購入者名を表すname要素を持つ。cust要素は,1つのPOS木に何回現れてもよい。
shop要素は,レジ担当の店員データを表わす。shop要素は,必須要素として,店員IDを表すid要素を持つ。shop要素は,POS木に正確に1回だけ現れるものとする。
図16に示すPOS木に対するウィンドウ処理として,以下のようなXMLウィンドウ問い合わせが与えられたとする。
for window $w in /pos/cust
range 3
sliding 1
return SUM($w/pric)
上記のXMLウィンドウ問い合わせは,ウィンドウ処理として,ウィンドウサイズ(range)=3,スライド幅(sliding)=1のスライディングウィンドウが設定されること,パス式“/pos/cust”で指定される部分木をウィンドウ構成要素とし,各ウィンドウ$wに対して,パス式“$w/pric”で指定される演算対象要素(pric要素)に対応する演算対象要素値の総和を出力することを示す。
図17は,XMLデータ系列に対するウィンドウ処理を説明するための図である。
図17に示すように,ウィンドウ処理では,XMLデータのストリームから,1スキャン目の処理でウィンドウ構成要素(cust要素から始まる部分木)が1つ切り出され,ウィンドウバッファBに格納される。そして,2スキャン目の処理で,ウィンドウバッファB内のウィンドウ構成要素から演算対象要素値が取得されて集計装置M内のバッファに格納される。その後,集計装置Mにより,バッファ内に格納された演算対象要素値が集計される。
また,別の既存技術として,ストリーム型のXpath照合が提案されている(第2の既存技術)。
ストリーム型のXpath照合は,XMLデータを1回スキャンしてXpath問合せを照合する手法に基づいた,ストリーム型のXpath照合エンジンにより実現される。
図18は,XMLデータ系列に対するストリーム型のXpath照合を説明するための図である。
ストリーム型のXpath照合では,1スキャン目で,ウィンドウ構成要素を指定したパス(Xpath:/pos/cust)が照合され,さらに,2スキャン目で,演算対象要素を指定したパス(Xpath:/pos/cust/pric)が照合されて,演算対象要素に対応付けられた演算対象要素値が特定される。
XMLデータから単に演算対象要素(pric)を検出するだけであれば,Xpathが指定するXMLの部分木を1スキャンで取得することができる。しかし,XMLデータは,ウィンドウ構成要素に包含される演算対象要素が不特定であることなど,柔軟な表現が可能である。そのため,包含関係にある演算対象要素をウィンドウ構成要素による部分木と関連付けて取得するためには,2スキャンが必要であった。
具体的には,上記のXMLウィンドウ問い合わせの場合のように演算を各ウィンドウ構成要素単位(XP1)で行いたい場合には,図18に示すように,演算対象要素XP2_2,XP2_3が,包含関係にあるウィンドウ構成要素XP1_2に関連付けられて取得されなければならなかった。すなわち,XMLデータからのウィンドウ構成要素の照合と各ウィンドウ構成要素からの演算対象要素の照合とのために,2スキャンが必要であった。
A.Arasu,et al, "The CQL Continuous Query Language: Semantic Foundations and Query Execution", VLDB J., Vol. 15(2), pp.121−142, 2006年 I. Botan, et al, "Extending XQuery with Window Functions", Proc. VLDB 2007, pp.75−86, 2007年 I. Avila−Campillo, et al, "XMLTK: An XML Toolkit for Scalable XML Stream Processing", Proc. PLANX’02, 2002年 Y. Diao, et al, "Path Sharing and Predicate Evaluation for High−Performance XPath Filtering", Proc. ACM TODS, 28(4), 467−516, 2003年
上記で第1の既存技術として説明した,XMLデータ系列に対するウィンドウ処理では,ウィンドウ構成要素の取得に1スキャン,さらに演算対象要素値の取得に1スキャンの合計2回のスキャンの実行が必要であり,処理が非効率であるという問題があった。
また,第2の既存技術として説明した,XMLデータ系列に対するストリーム型Xpathの照合処理では,互いに包含関係にある部分木を関連付けて取得するために,ウィンドウ構成要素と演算対象要素のそれぞれの照合に2スキャンの実行が必要であり,同様に,処理が非効率であるという問題があった。
本発明の目的は,例えばXMLデータのように,包含関係を持つ要素を含むデータ系列に対するウィンドウ処理において,ウィンドウ構成要素と関連付けた演算対象要素を1回のスキャンで取得できる処理技術を提供することである。
本発明の一態様として開示されるウィンドウ処理装置は,1)データを格納するバッファと,2)包含関係を持つ要素を含むデータ系列を取得するデータ取得部と,3)前記データ系列から,ウィンドウ処理単位を定めるウィンドウ構成要素の位置および前記ウィンドウ構成要素に包含される演算対象要素の位置を前記ウィンドウ構成要素に関連付けて逐次的に検出し,前記ウィンドウ構成要素を検出する度に,直前に検出したウィンドウ構成要素と関連付けた演算対象要素に対応する演算対象要素値の集合を前記バッファに格納するデータストリーム解析部と,4)前記バッファに格納された前記ウィンドウ構成要素に関連付けられた演算処理値の集合に対してウィンドウ処理を行うウィンドウ処理部とを備える。
また,本発明の別の態様として開示されるウィンドウ処理方法は,コンピュータが,上記ウィンドウ処理装置の各処理部で実現される各処理に対応する処理ステップを実行するものである。
また,本発明の別の態様として開示されるウィンドウ処理プログラムは,コンピュータに,上記ウィンドウ処理装置の各処理部で実現される各処理に対応する処理ステップを実行させるものである。
上記した手段によれば,データ系列からウィンドウ構成要素と演算対象要素とを1回のスキャンで同時に行うことができ,ウィンドウ処理の計算時間と計算領域との効率化を実現することができる。
本発明の一態様として開示するウィンドウ処理装置の一実施例における構成例を示す図である。 データストリーム解析部の構成例を示す図である。 XMLストリームXSのデータ構造の表現例を示す図である。 ウィンドウクエリQの例を示す図である。 ウィンドウ処理装置の処理フローを示す図である。 ウィンドウクエリ取得処理のより詳細な処理フロー例を示す図である。 データストリーム解析処理の処理フロー例を示す図である。 データCXの例を示す図である。 ステップS22のストリーム解析のより詳細な処理フローを示す図である。 XMLストリームのXMLデータとパス照合によりバッファに出力されるデータとの関係例を示す図である。 解出力処理の処理フロー例を示す図である。 バッファのデータと,解出力処理により出力シーケンスSeqに出力されるデータとの関係を模式的に示す図(その1)である。 バッファのデータと,解出力処理により出力シーケンスSeqに出力されるデータとの関係を模式的に示す図(その2)である。 バッファのデータと,解出力処理により出力シーケンスSeqに出力されるデータとの関係を模式的に示す図(その3)である。 XMLストリームXSの各XMLデータと,バッファに出力されるデータとの関係を模式的に示す図である。 XMLデータのストリームの例を説明するための図である。 XMLデータ系列に対するウィンドウ処理を説明するための図である。 XMLデータ系列に対するストリーム型のXpath照合を説明するための図である。
本発明の一態様として開示するウィンドウ処理装置は,既知のストリーム型のXPath照合機能に,XMLストリームからウィンドウ構成要素に関連付けられた演算対象要素を検出し,検出済みの演算対象要素に対応する演算対象要素値を取得して,ウィンドウ構成要素の開始位置を検出する度に,ウィンドウ構成要素開始を表わす記号と検出済みの演算対象要素に対応する演算対象値の集合とをバッファに送信する機能を有する。
図1は,本発明の一態様として開示するウィンドウ処理装置1の一実施例における構成例を示す図である。
ウィンドウ処理装置1は,包含関係を持つ要素を含むデータ系列,例えばXMLデータのストリーム(以下,XMLストリーム)に対するウィンドウ処理を実行する。より詳しくは,ウィンドウ処理装置1は,ユーザが使用するクエリ装置2からXMLストリームXSに対するウィンドウ問い合わせ(クエリ)Qを受け付け,データ送信装置3からネットワークNを介して送信されたXMLストリームXSに対するウィンドウ処理を実行する。ウィンドウ処理として,ウィンドウクエリQで設定されたウィンドウサイズwおよびスライド幅sをもとに,直近のウィンドウ集計値aを,ウィンドウがスライドするたびに出力し,その出力をウィンドウクエリQの解(集計値a)Aとして送信する。
ウィンドウ処理装置1は,上記の機能を実現するため,ウィンドウクエリ受付部11,データストリーム取得部12,データストリーム解析部13,バッファ14,バッファ集計部15,および解出力部16を備える。
ウィンドウクエリ受付部11は,ユーザのクエリ装置2から,ウィンドウ単位であるウィンドウ構成要素XP1,演算対象を示す演算対象要素XP2,ウィンドウサイズw(w≧1)およびスライド幅s(s≧1)の指定を含むウィンドウクエリQを受け付ける。
データストリーム取得部12は,XMLデータの発生源であるデータ送信装置3から,ネットワークNを解してXMLストリームXSを受信する。
データストリーム解析部13は,逐次的に,受信したXMLストリームXSから,ウィンドウ構成要素XP1の位置を検出し,さらにウィンドウ構成要素XP1に包含される演算対象要素XP2の位置をウィンドウ構成要素XP1に関連付けて検出する。そして,データストリーム解析部13は,検出した演算対象要素XP2に対応する演算対象要素値の集合を保持し,ウィンドウ構成要素XP1の開始位置を検出する度に,保持している演算対象要素値の集合,すなわち直前に検出した演算対象要素XP2に対応する演算対象要素値の集合をバッファ14に格納する。
バッファ14は,ウィンドウ構成要素XP1の検出,および検出したウィンドウ構成要素XP1に関連付けられた演算対象要素値の集合である値リストVを保持する。
バッファ集計部15は,ウィンドウサイズwおよびスライド幅sにもとづいて,バッファ14に格納されているウィンドウサイズw分の演算対象要素値の集合を集計してウィンドウ集計値aを得る。バッファ集計部15は,ウィンドウがスライドする度に,直近に得られたウィンドウ集計値aを解出力部16へ出力する。
解出力部16は,出力されたウィンドウ集計値aを,ウィンドウクエリの解Aとしてクエリ装置2へ送る。
なお,上記バッファ集計部15,解出力部16およびウィンドウクエリ受付部11は,ウィンドウ処理部の一実施例である。
図2は,データストリーム解析部13の構成例を示す図である。
データストリーム解析部13は,ストリーム型パス照合部131,ウィンドウ構成要素位置検出部132,演算対象要素位置検出部133,演算対象要素値検出部135,演算対象要素値取得部136,ウィンドウ構成要素開始記号送信部137,および演算対象要素値リスト送信部138を備える。
ストリーム型パス照合部131は,受け付けたXMLストリームXSの各XMLデータに対してストリーム型のXpath照合を行って,XMLデータから要素を検出する。
ウィンドウ構成要素位置検出部132は,XMLデータから,ウィンドウ構成要素XP1の開始位置または終了位置を検出する。ここで,ウィンドウ構成要素XP1の開始位置および終了位置は,ウィンドウ構成要素XP1の開始/終了を示すタグまたはイベントとする。
演算対象要素位置検出部133は,XMLデータから,演算対象要素XP2の開始位置または終了位置を検出する。ここで,演算対象要素XP2の開始位置および終了位置は,演算対象要素XP2を示す開始/終了を示すタグまたはイベントとする。
演算対象要素値検出部135は,検出した演算対象要素XP2に対応する演算対象要素値を検出する。
演算対象要素値取得部136は,XMLデータから,ウィンドウ構成要素に関連付けられて検出された演算対象要素XP2に対応する演算対象要素値を取得して,値リストVに追加する。
ウィンドウ構成要素開始記号送信部137は,ウィンドウ構成要素XP1の開始位置が検出される度に,検出されたウィンドウ構成要素XP1の開始位置を示すフラグ($)をバッファ14に書き出す。
演算対象要素値リスト送信部138は,ウィンドウ構成要素XP1の開始位置が検出された後に演算対象要素XP2の終了位置が検出された場合に,検出済みの演算対象要素値のリストVをバッファ14に書き出す。
図3(A)〜(C)は,XMLストリームXSのデータ構造の表現例を示す図である。
データストリーム取得部12が受信するXMLストリームXSにおける各XMLデータは,POSシステムで生成されたデータであり,POS要素をルートとして,包含関係を持つ要素を含む。XMLデータは,cust要素とshop要素とを持ち,レジ担当者(店員)が変わるまでは,新しいXMLデータ(POS要素)は発生しないものとする。
顧客の買い物データを示すcust要素は,必須要素として,購入品の価格を表すpric要素を持ち,任意要素として,購入者名を表すname要素を持つ。cust要素は,1つのXMLデータに何回出現してもよい。
レジ担当の店員データを示すshop要素は,必須要素として,店員IDを表すid要素を持ち,XMLデータ内に1回だけ出現するものとする。
図3(A)〜(C)は,XMLストリームXSのデータ構造の表現例を示す図である。
図3(A)は,上記したXMLデータのデータ構造を木構造で表現したものである。図3(A)に示すXMLデータの木構造表現は,図3(B)に示すように,タグを用いたテキスト表現に変換することができる。さらに,図3(B)のXMLデータのテキスト表現は,図3(C)に示すようなイベント列の表現として扱うことができる。XMLデータのイベント列表現の代表例として,W3C標準のSAXがある。
本実施例において,データストリーム取得部12は,XMLストリームXSとして,XMLデータのテキスト表現またはイベント表現のストリームを取得することができる。
また,本実施例において,データストリーム解析部13は,XMLデータのイベント列表現に対して動作するが,XMLデータのテキスト表現を直接入力して,逐次的にイベントを検出しながら処理を行うように構成されてもよい。
図4は,ウィンドウクエリQの例を示す図である。
図4に示すウィンドウクエリQは,ウィンドウ構成要素XP1を指定するパス式“/pos/cust”,演算対象要素XP2を指定するパス式“/pos/cust/pric”,ウィンドウサイズrange=3,およびスライド幅sliding=1の指定が含まれている。
以下,ウィンドウ処理装置1の処理の流れを説明する。
図5は,ウィンドウ処理装置1の処理フローを示す図である。
ステップS1: ウィンドウクエリ取得処理
ウィンドウクエリ受付部11がウィンドウクエリ取得処理を実行する。
図6は,ウィンドウクエリ取得処理のより詳細な処理フロー例を示す図である。
ウィンドウクエリ受付部11は,ユーザのクエリ装置2からウィンドウクエリQを受け取る(ステップS11)。
ウィンドウクエリ受付部11は,受信したウィンドウクエリQから,ウィンドウ構成要素XP1および演算対象要素XP2のパス指定を抽出する。そして,ウィンドウクエリ受付部11は,データストリーム解析部13へXpath照合で用いる指定パス,すなわち,ウィンドウ構成要素XP1を指定するXpath XP1=/pos/cust,演算対象要素XP2を指定するXpath XP2=/pos/cust/pricを送信する(ステップS12)。
ウィンドウクエリ受付部11は,受信したウィンドウクエリQから,ウィンドウサイズw(=3),スライド幅s(=1)を抽出し,バッファ集計部15へ送る(ステップS13)。
ステップS2: データストリーム解析処理
データストリーム解析部13は,XMLストリームXSに対するXpath照合を行って,ウィンドウ構成要素XP1,演算対象要素XP2を抽出する。
図7は,データストリーム解析処理の処理フロー例を示す図である。
データストリーム解析部13は,XMLストリームXSを受け取る。データストリーム解析部13は,XMLストリームXSでの処理対象とするXMLデータを示すCXを用意し,初期化として,受け取ったXMLストリームXSの最初のXMLデータをデータCXとする(ステップS21)。図8は,データCXの例を示す図である。データストリーム解析部13は,XMLデータのイベント列表現を受け取る。
次に,データストリーム解析部13は,データCXに対してパス照合処理を行う(ステップS22)。
データストリーム解析部13は,XMLストリームXSのデータCXの次にXMLデータが存在するか判定する(ステップS23)。データストリーム解析部13は,XMLストリームXSのデータCXの次にXMLデータが存在すれば(ステップS23のY),次のXMLデータをデータCXとし(ステップS24),XMLストリームXSに次のXMLデータが存在しなければ(ステップS23のN),処理を終了する。
図9は,ステップS22のパス照合処理のより詳細な処理フローを示す図である。
データストリーム解析部13のストリーム型パス照合部131は,初期化として,スキャン位置を示すカーソルCをデータCX(イベント列)の最初のイベントに設定し,演算対象要素フラグFA=0,値リストVを空リストとする(ステップS221)。そして,ストリーム型パス照合部131は,パス照合を行い,データCXのカーソルCがあるイベントの種別を判定する(ステップS222)。
ステップS222の処理で,ウィンドウ構成要素位置検出部132により,そのイベントが「ウィンドウ構成要素XP1の開始」であると判定された場合に,ウィンドウ構成要素開始記号送信部137が,ウィンドウ構成要素開始記号“$”をバッファ14に出力する(ステップS223)。ウィンドウ構成要素位置検出部132により,イベントが「ウィンドウ構成要素XP1の終了」であると判定された場合に,演算対象要素値リスト送信部138が,値リストVをバッファ14に出力する(ステップS224)。
演算対象要素位置検出部133により,イベントが「演算対象要素XP2の開始」であると判定された場合に,演算対象要素位置検出部133が,演算対象要素フラグFA=1を設定する(ステップS225)。イベントが「演算対象要素XP2の終了」であると判定された場合に,演算対象要素位置検出部133が,演算対象要素フラグFA=0を設定する(ステップS226)。
また,演算対象要素値検出部135により,イベントが「テキスト」のノードであると判定された場合に,さらに,演算対象要素値取得部136が,演算対象要素フラグFA=1であるかを判定する(ステップS227)。そして,演算対象要素フラグFA=1であれば(ステップS227のY),演算対象要素値取得部136が,カーソルCが位置するイベントのテキスト値をリストVに追加する(ステップS228)。一方,演算対象要素フラグFA=1でなければ(ステップS227のN),ステップS229の処理へ進む。
ステップS223〜S226およびS228の処理後,または,ステップS222の処理においてカーソルCが位置するイベントが上記のいずれの場合にも該当しない場合(それ以外),または,ステップS227の処理で演算対象要素フラグFA=1でない場合に,ストリーム型パス照合部131は,データCXで,カーソルCが位置するイベントの次にイベントが存在するかを判定する(ステップS229)。カーソルCが位置するイベントの次にイベントが存在する場合に(ステップS229のY),ストリーム型パス照合部131は,カーソルCを次のイベントに移し(ステップS2210),ステップS222の処理へ戻す。
カーソルCが位置するイベントの次にイベントが存在しない場合に(ステップS229のN),演算対象要素値リスト送信部138は,値リストVをバッファ14に出力する(ステップS2211)。
図10は,XMLストリームのXMLデータと,パス照合によりバッファ14に出力されるデータとの関係例を示す図である。
図10に示すXMLストリームXSにおいて,データCXを破線矩形で示している。図10のデータCXは,図8に示すイベント列に対応している。
データストリーム解析部13により,データCXにおいて,XP1=/pos/custとの照合によりパス/pos/custが検出されると(図8(a)),ウィンドウ構成要素XP1“cust”の開始位置と判断されて,ウィンドウ構成要素開始記号“$”がバッファ14に出力される。
その後に,XP2=/pos/cust/pricとの照合によりパス/pos/cust/pricが検出されると(図8(b)),演算対象要素“pric”の開始位置と判断されて,FA=1が設定され,対応する演算対象要素値(500)が抽出されて値リストVに格納される(図8(c))。続いて,パス/pos/cust/pricの終了が検出されると(図8(d)),演算対象要素“pric”の終了位置と判断されて,FA=0と変更される。
その後に,パス/pos/custの終了が検出されると(図8(e)),ウィンドウ構成要素XP1“cust”の終了位置と判断されて,値リストV={500}がバッファ14に出力される。
図10に示すXMLストリームXSにおいて,データCXを破線矩形で示している。
データCXの場合と同様に,データストリーム解析部13によって,XP1=/pos/custとのパス照合によってウィンドウ構成要素XP1“cust”の開始位置が検出されると,ウィンドウ構成要素開始記号“$”がバッファ14に出力される。
その後に,XP2=/pos/cust/pricとのパス照合によって演算対象要素“pric”の開始位置が検出されると,FA=1が設定され,対応する演算対象要素値(300)がリストVに格納される。演算対象要素“pric”の終了位置が検出されると,FA=0と変更されるが,データXでは,続いて,演算対象要素“pric”の開始が検出されて,FA=1が再設定され,対応する演算対象要素値(200)がリストVに追加される。
その後,データCXの場合と同様に,ウィンドウ構成要素XP1“cust”の終了が検出されると,リストV={300,200}がバッファ14に出力される。
ステップS3: 解出力処理
図11は,解出力処理の処理フロー例を示す図である。
バッファ集計部15は,初期化として,バッファ14でのデータの位置を示すカーソルCBを,バッファ14の最初のデータに設定し,ウィンドウサイズカウンタCW=0を設定し,出力シーケンスSeqを空列とする(ステップS31)。
バッファ集計部15は,バッファ14で,カーソルCBが設定されたデータの種類を判定する(ステップS32)。データの種類が,ウィンドウ構成要素開始記号“$”であれば(ステップS32の「記号$」),バッファ集計部15は,ウィンドウサイズカウンタCWを1増やして(ステップS33),ステップS39に進み,データの種類が,値リストVであれば(ステップS32の「値リスト」),ステップS34に進む。ステップS34の処理で,バッファ集計部15は,CW≧0ならば,カーソルCBが設定された値リストVを出力シーケンスSeqの末尾に追加する。
続いて,バッファ集計部15は,ウィンドウサイズカウンタCWがウィンドウサイズwより小さいか(CW<w)を判定して(ステップS35),ウィンドウサイズカウンタCWがウィンドウサイズwより小さくなく,等しい(CW=w)場合に(ステップS35のN),出力シーケンスSeq内のデータ(値リストV)の集計値aを求めて,解出力部16へ出力する(ステップS36)。解出力部16は,上記のステップS36の処理により,集計値aを逐次受け取り,ウィンドウクエリQの解Aとしてクエリ装置2へ送る。
さらに,バッファ集計部15は,出力シーケンスSeqに格納されたデータの先頭からs件のデータを削除する。なお,スライド幅sがウィンドウサイズwより大きい(s>w)場合は,出力シーケンスSeqに格納されたデータを全件削除する。バッファ集計部15は,ウィンドウサイズカウンタCWを,CW−sの値に置き換える(ステップS37)。
その後,バッファ集計部15は,バッファ14内でカーソルCBが設定されたデータの次にデータが存在するかを判定する(ステップS38)。バッファ14内に次のデータが存在する場合に(ステップS38のY),バッファ集計部15は,カーソルCBを次のデータ(値リスト)に移し(ステップS39),ステップS32の処理へ戻る。バッファ14内に次のデータが存在しない場合に(ステップS38のN),処理を終了する。
図12〜図14は,バッファ14のデータと,解出力処理により出力シーケンスSeqに出力されるデータとの関係を模式的に示す図である。図12〜図14に示す処理は,ウィンドウサイズw=3,スライド幅s=1の場合のものである。
バッファ集計部15によって,バッファ14内で,先頭のデータにカーソルCBが設定され,ウィンドウサイズカウンタCW=0に初期化される。
図12(A)に示すように,CBが位置するデータがウィンドウ構成要素開始記号“$”であり,ウィンドウサイズカウンタCWが1増加され(CW=1),カーソルCBが次のデータに移される。そして,図12(B)に示すように,CBが移動したデータが,演算対象要素値の値リストVであれば,値リストV={500}が出力シーケンスSeqに格納され,カーソルCBはさらに次のデータに移される。
そして,図13(A)に示すように,カーソルCBが移動したデータがウィンドウ構成要素開始記号“$”であれば,ウィンドウサイズカウンタCW=2となり,カーソルCBが次のデータに移される。そして,図13(B)に示すように,カーソルCBが移動したデータの値リストV={300,200}が出力シーケンスSeqに格納され,さらにカーソルCBが次のデータに移される。
同様にして,カーソルCBが移動したデータがウィンドウ構成要素開始記号“$”であれば,CW=3となり,カーソルCBが次のデータに移される。
その後,図14(A)に示すように,カーソルCBが移動したデータが値リストであれば,その値リストV={100}が出力シーケンスSeqに格納される。ここで,ウィンドウサイズカウンタCWがウィンドウサイズw(=3)と等しくなるので,出力シーケンスSeqに格納された値リストが集計されて,集計値a(1100)が得られる。さらに,図14(B)に示すように,出力シーケンスSeqに格納されたデータ(値リスト)の先頭から,s=1件のデータ(値リスト)が削除され,ウィンドウサイズカウンタCWがCW−s(=2)の値に変更される。なお,カーソルCBは,同様にして次のデータに移される。
図15は,XMLストリームXSの各XMLデータと,バッファに出力されるデータとの関係を模式的に示す図である。
ウィンドウ処理装置1は,ウィンドウ構成要素XP1の開始位置を検出する度に,直前に検出された演算対象要素XP2に対応する演算対象要素値の集合とウィンドウ構成要素開始記号“$”とをバッファ14に格納する。
ウィンドウ処理装置1は,1つのウィンドウ構成要素XP1に含まれる演算対象要素XP2が不特定数であっても,包含される演算対象要素XP2をすべてウィンドウ構成要素XP1に関連付けて検出し,演算対象要素XP2に対応する演算対象値をリストにまとめて保持する。
したがって,バッファ14には,1回のスキャンで,ウィンドウ構成要素XP1の開始位置を示すウィンドウ構成要素開始記号“$”と,ウィンドウ構成要素XP1に含まれる演算対象要素XP2に対応する演算対象要素値の集合(値リストV)とが交互に格納される。そのため,解集計処理において,ウィンドウ構成要素を単位とした演算対象要素値の集計が可能となる。
本実施例において,ウィンドウ処理装置1は,ステップS2のデータストリーム解析処理とステップS3の解出力処理を,XMLストリームXSのXMLデータXごとに実行し,XMLストリームXSのXMLデータXの取得に従ってループして実行する。しかし,XMLストリームXSが有限の系列であれば,ウィンドウ処理装置1は,XMLストリームXSについて,ステップS2のデータストリーム解析処理とステップS3の解出力処理をバッチ的に実行するように構成されてもよい。
ウィンドウ処理装置1は,CPUおよびメモリ等を有するハードウェアと,ソフトウェアプログラムとを備えるコンピュータ・システム,または専用ハードウェアによって実現することができる。
ウィンドウ処理装置1は,演算装置(CPU),一時記憶装置(DRAM,フラッシュメモリ等)および永続性記憶装置(HDD,フラッシュメモリ等)を有し,外部とデータの入出力をするコンピュータによって実施することができる。また,ウィンドウ処理装置1は,このコンピュータが実行可能なプログラムによっても実施することができる。この場合に,ウィンドウ処理装置1が有すべき機能の処理内容を記述したプログラムが提供される。提供されたプログラムを上記コンピュータが実行することによって,上記説明したウィンドウ処理装置1の処理機能がコンピュータ上で実現される。なお,上記コンピュータは,可搬型記録媒体から直接プログラムを読み取り,そのプログラムに従った処理を実行することもできる。さらに,上記プログラムは,コンピュータで読み取り可能な記録媒体に記録しておくことができる。
以上説明したように,開示したウィンドウ処理装置1によれば,次のような効果がある。
すなわち,ウィンドウ処理装置1によれば,ウィンドウ構成要素に含まれる演算対象の要素が不特定数であるようなデータのストリームに対しても1回のスキャンによるウィンドウ処理が可能となり,処理時間および格納領域を軽減することができる。
従来技術では,ウィンドウ構成要素の開始位置と演算対象要素位置を検出するために,XMLストリームにおける各XMLデータを,2回スキャンする必要があった。しかし,ウィンドウ処理装置1によれば,ウィンドウ構成要素の開始位置と演算対象要素位置を1回のスキャンで同時に検出するため,計算時間を削減できる。
さらに,副次的効果として,ウィンドウ処理装置1では,ウィンドウ構成要素のすべてをバッファ14に保持するタイプの従来技術とは異なり,集計処理に必要最低限のデータ(値リスト)を取得してバッファ14に格納する。その結果として,ウィンドウ処理装置1によれば,バッファ14に保持するデータ量を削減できるため,計算時間と計算領域とを削減できる。
1 ウィンドウ処理装置
11 ウィンドウクエリ受付部
12 データストリーム取得部
13 データストリーム解析部
131 ストリーム型パス照合部
132 ウィンドウ構成要素位置検出部
133 演算対象要素位置検出部
135 演算対象要素値検出部
136 演算対象要素値取得部
137 ウィンドウ構成要素開始記号送信部
138 演算対象要素値リスト送信部
14 バッファ
15 バッファ集計部
16 解出力部
2 クエリ装置
3 データ送信装置

Claims (4)

  1. データ系列に対するウィンドウ処理を実行するウィンドウ処理装置であって,
    データを格納するバッファと,
    包含関係を持つ要素を含むデータ系列を取得するデータ取得部と,
    前記データ系列から,ウィンドウ処理単位を定めるウィンドウ構成要素の位置および前記ウィンドウ構成要素に包含される演算対象要素の位置を前記ウィンドウ構成要素に関連付けて逐次的に検出し,前記ウィンドウ構成要素を検出する度に,直前に検出したウィンドウ構成要素と関連付けた演算対象要素に対応する演算対象要素値の集合を前記バッファに格納するデータストリーム解析部と,
    前記バッファに格納された前記ウィンドウ構成要素に関連付けられた演算処理値の集合に対してウィンドウ処理を行うウィンドウ処理部とを備える
    ことを特徴とするウィンドウ処理装置。
  2. 前記データストリーム解析部は,前記検出した演算対象要素に対応する演算対象要素値の集合を保持し,前記ウィンドウ構成要素の開始位置を検出する度に,前記保持している演算対象要素値の集合と該検出したウィンドウ構成要素の開始位置記号とを前記バッファに格納し,
    前記ウィンドウ処理部は,前記バッファに格納されたウィンドウ構成要素の開始位置記号にもとづいて前記ウィンドウ処理を行う
    ことを特徴とする請求項1に記載のウィンドウ処理装置。
  3. コンピュータが実行する,データ系列に対するウィンドウ処理方法であって,
    包含関係を持つ要素を含むデータ系列を取得する処理ステップと,
    前記データ系列から,ウィンドウ処理単位を定めるウィンドウ構成要素の位置および前記ウィンドウ構成要素に包含される演算対象要素の位置を前記ウィンドウ構成要素に関連付けて逐次的に検出する処理ステップと,
    前記ウィンドウ構成要素を検出する度に,直前に検出したウィンドウ構成要素と関連付けた演算対象要素に対応する演算対象要素値の集合をバッファに格納する処理ステップと,
    前記バッファに格納された前記ウィンドウ構成要素に関連付けられた演算処理値の集合に対してウィンドウ処理を行う処理ステップとを備える
    ことを特徴とするウィンドウ処理方法。
  4. コンピュータに,データ系列に対するウィンドウ処理を実行させるためのウィンドウ処理プログラムであって,
    前記コンピュータに
    包含関係を持つ要素を含むデータ系列を取得する処理と,
    前記データ系列から,ウィンドウ処理単位を定めるウィンドウ構成要素の位置および前記ウィンドウ構成要素に包含される演算対象要素の位置を前記ウィンドウ構成要素に関連付けて逐次的に検出する処理と,
    前記ウィンドウ構成要素を検出する度に,直前に検出したウィンドウ構成要素と関連付けた演算対象要素に対応する演算対象要素値の集合をバッファに格納する処理と,
    前記バッファに格納された前記ウィンドウ構成要素に関連付けられた演算処理値の集合に対してウィンドウ処理を行う処理とを,実行させる
    ことを特徴とするウィンドウ処理プログラム。
JP2011038656A 2011-02-24 2011-02-24 ウィンドウ処理装置,方法およびプログラム Active JP5637896B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011038656A JP5637896B2 (ja) 2011-02-24 2011-02-24 ウィンドウ処理装置,方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011038656A JP5637896B2 (ja) 2011-02-24 2011-02-24 ウィンドウ処理装置,方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2012174212A JP2012174212A (ja) 2012-09-10
JP5637896B2 true JP5637896B2 (ja) 2014-12-10

Family

ID=46977024

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011038656A Active JP5637896B2 (ja) 2011-02-24 2011-02-24 ウィンドウ処理装置,方法およびプログラム

Country Status (1)

Country Link
JP (1) JP5637896B2 (ja)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7134075B2 (en) * 2001-04-26 2006-11-07 International Business Machines Corporation Conversion of documents between XML and processor efficient MXML in content based routing networks
JP4519028B2 (ja) * 2005-07-28 2010-08-04 日本電信電話株式会社 XPath式処理装置
JP4523561B2 (ja) * 2006-03-17 2010-08-11 日本電信電話株式会社 XPath式処理装置
JP4871213B2 (ja) * 2007-05-24 2012-02-08 日本電信電話株式会社 ストリームデータ処理方法、ストリームデータ処理プログラムおよびストリームデータ処理システム
JP5320697B2 (ja) * 2007-07-26 2013-10-23 富士通株式会社 照合処理プログラムおよび照合処理装置
JP5396843B2 (ja) * 2008-12-11 2014-01-22 富士通株式会社 検索方法および検索装置

Also Published As

Publication number Publication date
JP2012174212A (ja) 2012-09-10

Similar Documents

Publication Publication Date Title
US10614527B2 (en) System and method for automatic generation of reports based on electronic documents
EP2929467B1 (en) Integrating event processing with map-reduce
JP4925143B2 (ja) ストリームデータ処理システム、ストリームデータ処理方法及びストリームデータ処理プログラム
JP6826812B2 (ja) 継続時間可変イベントなしパターンマッチング
KR101889120B1 (ko) 데이터 패턴 정보 생성
US8234248B2 (en) Tracking changes to a business object
JP2008546054A (ja) イベントストリームからのイベントパターンの認識
US7962804B2 (en) Method and system for analyzing time series data
CN111523072A (zh) 页面访问数据统计方法、装置、电子设备及存储介质
CN110232586B (zh) 一种基于大数据的广告推送系统
CN110352427A (zh) 用于收集与网络化环境中的欺诈性内容相关联的数据的系统和方法
JPWO2011148565A1 (ja) データベース、管理サーバ、および管理プログラム
US8051110B2 (en) Identifying screen flows to support multiple entities and their diverse rules with a single application instance
US20220036477A1 (en) System and method for determining revenue generated by any zone in a webpage
JP2012078963A (ja) 適合キャンペーン検索装置、適合キャンペーン検索方法、プログラム、及び情報記録媒体
JP5637896B2 (ja) ウィンドウ処理装置,方法およびプログラム
US20170169518A1 (en) System and method for automatically tagging electronic documents
JP2006155630A5 (ja)
JP6041431B2 (ja) ストリームデータ処理方法、ストリームデータ処理装置及びプログラム
JP2009211516A (ja) 顧客行動分析システム
JP2016062289A (ja) データクレンジングシステムおよびデータクレンジングプログラム
Alauddin et al. Airline digital click stream event processing for enriching the airline business
JP2005092721A (ja) マーケット情報分析装置、マーケット情報分析システム、マーケット情報分析方法及びプログラム
WO2018067698A1 (en) System and method for verifying unstructured enterprise resource planning data
CN109791540A (zh) 基于电子文件进行报告的系统和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131106

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140528

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140722

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140918

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: 20141007

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141021

R150 Certificate of patent or registration of utility model

Ref document number: 5637896

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150