• No results found

Method of Complex Event Processing over XML Streams

N/A
N/A
Protected

Academic year: 2021

Share "Method of Complex Event Processing over XML Streams"

Copied!
6
0
0

Loading.... (view fulltext now)

Full text

(1)XML ストリームのための複合イベント処理方式 Method of Complex Event Processing over XML Streams 内田 友樹 Yuki Utida 法政大学大学院情報科学研究科情報科学専攻 E-mail: 13t0005@cis.k.hosei.ac.jp. Abstract This paper describes a query processing engine for multiple XML streams, in which series of correlated data continuously come. First, this paper formulates stream processing in algebra expressions, in which stream filtering, union, activation, decomposition and partition are formally modeled. Second, this paper designs a query language, called QLMXS, over XML streams for CEP. The QLMXS supports all functions of the algebra expressions in a SQL-like form. Finally, QLMXS queries are converted into a visibly pushdown automaton, called VPA, which analyzes complex event data from the XML streams. The VPA engine is required to concurrently process multiple XML data in multiple levels, so that it is very important to tune the performance of the engine up. Therefore, this paper proposes four optimization methods to improve the performance, utilizing VPA and XML features. They are VPA-state reduction, VPA unification, delayed evaluation and elimination of superfluous XML processing. Experimental results showed that the VPA unification makes the processing speed of VPA engine 1.6 times faster and the total performance reaches that speed 2.6 times faster.. 1. はじめに 近年,高速ネットワーク技術の発達により時々刻々と 変化する大規模な情報をリアルタイムに取得し,活用で きるようになった.次々と流れてくるデータはストリー ムデータと呼ばれ,リアルタイムに高速処理・分析して 価値を見出す CEP(Complex Event Processing)技術に注目 が集まっている. 一方,Web サービスの普及に伴い,インターネット上 でのデータ交換フォーマットとして XML が用いられる ようになってきた.XML とは,タグを用いた文書データ の構造化のための汎用フォーマットであり,個々のデー タの属性や論理構造をタグの中に容易に表現できる.現 在,株価情報,気象情報,センサ等のデータが XML ス トリームとして扱われており,これを高速に処理するた めの CEP エンジンが求められている. XML ストリームを扱うシステムとして,複雑な要求に 応えられる VPA(Visibly Pushdown Automaton)[2]ベースの XSeq[1]が提案され,時系列を組み込んだ検索の効率的な Supervisor: Prof. Satoru Fujita. 実行が報告されている.しかし,単一のストリームしか 扱うことができず,複数のストリームにまたがる複雑な 検索を行うことができない. 現在のインターネットは様々なデータソースが存在し, それらを組み合わせた情報抽出が必要になってくる.そ こで本稿では,このような複数の XML ストリームデー タに対して検索を行うために QLMXS(Query Language for Multiple XML Streams)と呼ばれる問い合わせ言語を設計 した[4,6].そして,VPA をベースに,QLMXS の検索エ ンジンを開発した[5,7].一つの検索要求から複数の VPA が生成されることがあり,検索エンジンは,このような VPA の組み合わせを高速に実行することが求められる. そこで VPA の特性を生かしたエンジンの最適化や高速な 処理アルゴリズムについて検討を行った. 第 2 章では関連する基盤技術について説明し,第 3 章 では想定するマルチストリーム処理について説明する. 第 4 章では QLMXS 言語の仕様を述べ,第 5 章では QLMXS の VPA 変 換 手 法 を 説 明 す る . 第 6 章 で は QLMXS エンジンの構成と実装について説明し,第 7 章 では検証実験によるシステムの性能評価を行う.そして, 第 8 章で考察を述べ,最後にまとめを述べる.. 2. 関連する基盤技術 2.1. CEP CEP とは,連続して発生するストリームデーダを高速 に処理・分析して新たな情報を見出すための複合イベン ト処理技術である.ストリームデータはデータ容量や発 生タイミングの予測が難しい,蓄積しようとすると大容 量になる,様々なデータ構造を持つという特徴を持つ. 発生したデータを即時に解析することが求められるため, CEP では予めデータ形式に合う分析エンジンを作成し. 流れてくるストリームデータに対して特定の条件を満た した時にイベントを発生させたり,データを抽出する必 要がある.従来のデータベースが蓄積したデータに対し てクエリを適用する方式であるのと違い,逐次発生する ストリームデータに対して,登録したクエリを事前にコ ンパイルして作成したエンジン上で継続的なクエリ適用 が行われるため,低遅延で処理結果を取得することが可 能となる.さらに,近年ではネットワーク技術の発展と コンピュータの性能向上により,複数のストリームデー タを同時に処理することが可能になり,単純な処理だけ でなくリアルタイムに複雑な組み合わせの分析が可能と なってきている..

(2) 2.2. Cayuga Cayuga[3]は,複数のストリームデータのイベントをま とめて単一イベントのように扱える CEP を意識した SQL ライクな言語である.Cayuga には,単純なパターンのク エリを組み合わせて複雑なパターンのクエリを構成する ためのオペレータが備わっている.代表的なオペレータ として NEXT と FOLD があり,検索例は以下の通りであ る. Example2.1.SELECT Name FROM (SELECT Price FROM Stock) NEXT {$1.Price = $2.Price} (Stock2) Example2.1 は,Stock と直後の Stock2 の売値が等しい時 にそれぞれの銘柄を組み合わせて出力するクエリであり, 複数のストリームに跨るイベント処理を実現している. Example2.2.SELECT * FROM FILTER {cnt > 10} {SELECT *, 1 AS cnt FROM FILTER {Volume > 10000} (Stock)) FOLD {$2.Name = $.Name, $2.Price > $.Price, $.cnt+1 AS cnt } Stock) Example2.2 は,特定の銘柄の株価が 10 回連続で上がっ た時の株情報を出力するクエリであり,シーケンシャル なイベント処理を実現している.. 2.3. XSeq XSeq は XML ストリーム向けの CEP であり,時系列イ ベントの処理が可能である. XML 向け検索言語では XPath や,XQuery が有名であるが,複雑なパターンを伴 う CEP アプリケーションには適さない.そこで XSeq で は XPath を拡張し,クリーネ*と兄弟関係を明示的に表す \ オペレータを追加し,シーケンシャルな検索を容易に 行えるようにした.Xseq の検索例は以下の通りである. Example2.3.return last($Y)@price from /stocks /$Z (\$X)* (\$Y)* where tag($Z) = ‘transaction’ and tag($X) = ‘transaction’ and tag($Y) = ‘transaction’ and $X@price < prev($X)@price and $Y@price > prev($Y)@price partition by /stocks/transaction@company Example2.3 は,特定の銘柄の売値が V 字回復した時の売 値を出力するクエリであり,兄弟間での条件の変更や連 続する兄弟に対する条件を実現している. XSeq では,エンジンのベースとして 2.4 節で説明する VPA を利用している.VPA は Xseq における複雑なクエ リを表現することができ,最適化を施しやすい.Xseq ク エリを VPA に変換して検索エンジンを生成する際に,ク エリからの推論できる接頭辞のカット,VPA の非決定性 の除去,状態数の削減を行うことで高い処理性能を実現. している. しかし,マルチソースから来るデータを組み 合わせて検索するような複数のストリームに跨る検索は できない.. 2.4. VPA VPA はプッシュダウンオートマトンの制約を強めたも のであり,スタック操作がプッシュ,ポップ,インター ナルの 3 種類に分かれていることが特徴である.スタッ ク操作が明確化されたことにより,VPA は,和集合,積 集合,補集合,連結,クリーネ*に対して閉じた性質を 持っている.このため,有限状態オートマトンと同等の 最適化を行うことが可能である.また,スタックの特性 を活かし,XML,JSON ファイルのような入れ子構造の データ解釈を容易にモデル化することができるため XML を効率的に処理することができる.. 3. マルチストリーム処理 XML ストリームとして流れてくるデータの内容,構造, 流れてくるストリームの件数.送り元,出力先は様々で あることが想定される.本稿では,マルチ XML ストリ ームに必要となる基本処理モデルを代数表現として表わ すことを提案する. (1) Filtering 流れてきたストリームデータに対して特定の条件でフ ィルタリングし,新たなストリームとして出力するとい う最も基本となるモデルである.ストリーム:s に対して フィルタ:f をかけて s’ として出力する処理は,以下の ように記述する. s | f >> s’ (1) (2) Union 2 つのストリームの中のデータを別のストリームにま とめて出力するモデルであり,2 ストリームを合流・結 合させる. この処理は結合演算子「+」を用いて以下のよ うに記述する. s1 + s2 >> s3 (2) 結合演算では交換法則と結合法則が成り立つ. (3) Activation あるストリームのイベントが別のストリームのイベン ト処理を呼び起こし,結果を合流させるモデルである. この処理は合成演算子:「*」を用いて以下のように記述 できる. s1 * s2 >> s3 (3) 合成演算では, ストリームデータの到着順序は s1 が先, s2 が後という意味が含まれているため, 交換法則や結合法 則は成り立たない.複合イベント処理における重要な処 理モデルである. (4) Decomposition 大量の件数の XML を 1 件ずつに分割して出力するモ デルである.ストリーム中のデータを, 指定されたキー 単位で分割し, 新たなストリームに出力する. キーは XML においてはタグに相当するものである. 例えば, ストリー ムデータを,‘key‘をキーとして分割し出力する処理は分 割演算子:「/」を用いて以下のように記述する. s / key >> s’ (4).

(3) Example4.1.return select from where. 図 1 QLMXS の処理フロー (5) Partition ストリームを特定のキーの値を持つレコード毎に分割 し,ストリーム配列として出力するモデルである. ‘key‘をキーとして処理する場合は以下のように記述する. s[key] >> s’[] (5) 特定の値を持つストリームを抽出する場合は,以下の ようにキーの値を指定してシングルストリームを生成す る. s’[key=’value’] >> s’’ (6). 4. QLMXS 4.1. QLMXS 概要 3 章の代数的表現に基づき,マルチ XML ストリーム向 け の 問 い 合 わ せ 言 語 QLMXS を 設 計 し た . 提案 す る QLMXS の処理フローを図 1 に示す.次々と流れてくる XML ストリームデータは QLMXS エンジンで処理され, 処理・分析結果を下流に渡す.QLMXS エンジンは検索 エンジンのベースとして VPA を用いている.処理の流れ としては,まず,マルチ XML ストリームに対応した問 い合わせ言語 QLMXS クエリを解釈して VPA を生成し, 生成した VPA を用いてエンジンを作成する.次に作成し たエンジンを用いて,XML ストリームをフィルタリング, 整形し,解析結果を出力する. 図 1 のように,単一だけでなく,複数の入力ストリー ムを融合して出力を得ることも可能である.内部では, 複数の VPA エンジンが動いており,それぞれの VPA の 結果を,別の VPA の入力として処理するという動作が可 能である.. 4.2. QLMXS の言語仕様 提案する問い合わせ言語である QLMXS は SQL や XPath,XSeq,Cayuga を参考にしており,SQL ライクに 検索要求が記述できるように設計されている.また, XML ストリームデータから単純なデータの検索と抽出を 行うだけでなく,複数の XML に跨って解析を行うため の複雑な条件記述が行える. QLMXS のクエリは基本的 に, ストリームの出力先を指定する return 節, 細かい出力 形式を指定する select 節,検索対象・条件や入力ストリ ーム を指定する from 節 , 検 索対 象・条件 を指定する where 節の 3 節から成り立つ. 詳しい記述方法に関しては, 具体的な例を挙げながら説明する. 例として, 株式売買システムより各時刻における各企 業の株情報が XML ストリームデータとして流れてくる ような状況を想定する.. MyStock2 stocks/stock/price MyStock stocks/stock[price/text()>=100 and @name=’A’]. Example4.1 は,流れてきた株情報から売値が 100 以上で 且つ銘柄が A であるようなデータを新たなストリームと して出力するクエリである.1 行目の return 節の中では, 前述した通りストリームの出力先を MyStock2 として指 定している.select の後の stocks/stock/price は出力形式を XPath 形 式 で指定 してい る. 3 行 目の from 節 で は, MyStock を入力ストリームとして指定している.4 行目 の where 節では,そのストリーム中のデータに対するフ ィ ル タ 条 件 を XPath 形 式 で 指 定 し て い る . 即 ち , Example4.1 は MyStock ストリームの中から stocks タグの 子タグである stock タグのさらに子タグに price タグが存 在し且つそのストリームの price タグの値が 100 以上且つ stock タグの属性 name が’A’である時,price タグ内のデ ータを抽出し,MyStock2 ストリームとして出力する. Example4.2.return MyStock2 select stocks/stock from ( select stocks/stock from MyStock where stocks/stock[@name=’A’] ) where stocks/stock[price/text()>=100] Example4.2 は,MyStock ストリームから銘柄が A である ものを抽出したストリームから,売値が 100 以上のもの を抽出し, MyStock2 ストリームとして出力するクエリで ある.4 行目から 6 行目までが内包された QLMXS クエ リであり,このクエリによる出力ストリームを入力スト リームとして 1,2,3,7 行目のクエリが処理している.記述 方法に関しては,上記のように括弧の中に記述する.こ の記述は,Example4.1 に比べて冗長であるが,記述の簡 便性のために,仕様として採用した. 複数の XML にわたって処理を行うためのストリーム 処理として,3 章の(3)で述べた Activation 処理を実現す る場合,chaining 節を利用する.使用例を Example4.3 に 示す. Example4.3.return MyStock2 select mystock[$1/stock, $2/stock] chaining Stock1, Stock2 where [$1/stock/price/text() = $2/stock/price/text()] Exmaple4.3 は,2 つの株情報ストリームである Stock1 と Stock2 から,売値が等しいものを1つのデータにまとめ て新たなストリームとして出力するためのクエリである. chaining 節では 2 つの入力ストリームを指定しており, 先に書かれている Stock1 が後に書かれている Stock2 のス トリーム処理を呼び起こす形になっている.また,select 節では MyStock2 に出力する XML の形式を指定しており,.

(4) Exmaple4.3 の場合は mystock がルート要素,その下に Stock1 と Stock2 の stock 以下の要素に格納されている XML 構造が出力形式になっている. 1 入力目である Stock1 に対するパスを記述する際は$1 を,2 入力目であ る Stock2 の場合は$2 をそれぞれパスの先頭に加える必要 がある.where 節に書かれている$2 の売値は時系列的に 見ると$1 の直後に流れてきたストリームデータである. すなわちこのクエリでは,Stock1 ストリームで売値が流 れてきた直後に一度だけ Stock2 ストリームの売値を参照 し,一致していれば出力形式にそって出力する. さらに,QLMXS では,while 節や processing 節を用い て,指定した時間の間繰り返すような処理を記述できる. 例を Example4.4 に示す. Example4.4.return MyStock3 select mystock[$1/stock, @ave = $sum div $cnt] chaining Stock1, Stock2 setting $sum = 0, $cnt = 0 processing $sum = $sum + $1/stock/price/text(), $cnt = $cnt + 1 where [$1/stock/volume/text() >= $2/stock/volume/text()] while 10min Example4.4 は Stock1 の取引量が Stock2 の取引量よりも 高くなっている間の Stock1 の平均売値と,低くなった直 後の株データを抽出するクエリである.setting 節では変 数宣言を行うことができ,processing 節では where 節の条 件が満たされたときに実行される処理を記述できる. while 節では最大処理継続時間を記述することができ,処 理が開始されてから指定された最大処理継続時間を超え た場合は処理を終了する. 以上,QLMXS を用いたストリーム処理例を挙げたが, 3 章にも述べた(4)Decomposition,(5)Partition や QLMXS で可能な再帰処理を合わせて用いることで,さらに複雑 な処理を行えると共に,多様な構造である XML ストリ ームデータに対して対応が可能となる.. 5. QLMXS の VPA 変換 5.1. XML 処理と VPA 2.4 節で述べた通り,VPA はスタック操作がプッシュ, ポップ,インターナルの 3 種類に明確に分かれており, XML のような入れ子構造のデータをモデル化することが できる.よって,XML のタグを辿りながらリアルタイム に分析するストリーム処理に最適である. XPath 表現の クエリからの VPA への変換は比較的少ない状態数におさ まり,VPA を状態遷移図として視覚化することで処理の 流れを容易に確認することができる. VPA はスタックを一つ持ち,遷移時にスタックトップ を参照しながら遷移先を決定する.そのため, VPA を生 成するためには, 状態の集合や遷移するためのシンボル 集合, 遷移時にスタックに格納されるシンボルの集合, そ して遷移関数が分かれば良い.基本的にはクエリ中のパ ス指定の箇所を解釈し, どのタグが親子関係であるかを 判別することで,VPA 生成に必要な情報を構築していく.. 図 2 QLMXS の VPA 変換例 VPA で XML を処理するには,プッシュ遷移関数にオ ープンタグ,ポップ遷移関数にクローズタグ,インター ナル遷移関数に属性とキャラクターの処理を対応付ける. そして,オープンタグが来た時にスタックに積み,その クローズタグが来た時にスタックから取り出す処理を行 うことで XML の階層レベルに沿った正確な処理を実行 できる. /articles/article[initPage/text() = 100]を例として VPA の生 成手順を図 2 に示す.これは,articles タグの下の article タグの下の initPage タグの値が 100 である時,article 要素 を XML ストリームとして出力する単純なクエリである. /articles を 1 ステップとすると,1 ステップ毎に状態が 1 つ生成される.この例は 3 ステップであるため,初期状 態と合わせて 4 状態が生成される.article の一つ下の initPage タグの中の text 値を取得し,initPage タグを含む article のクローズタグが来た時,このクエリの条件が成 り立っているかを判別する.図 2 の状態 q1 の自己ループ else は,目的以外の article タグで次の状態に遷移しない ようにスタック操作を行うことで階層レベルを合わせる. この else 操作においてもオープンタグ,クローズタグ, 属性,キャラクターをそれぞれ入力として処理しており, *を任意なタグだとすると,実際には<*>, S / XS,<*>, X /XX, </*>, X /ε等の遷移関数が存在する. クエリである 4.2 節の Example4.3 にある Activation 処 理を行う場合,Stock1 用 VPA と Stock2 用 VPA を生成す る.これをそれぞれ$1.VPA,$2.VPA とする.このクエ リ で は , Stock1 ス ト リ ー ム stock/price が 来 た 直 後 の Stock2 ストリーム stock/price と比較して,等しいならば データをまとめて出力処理を行う.このため,Stock1 ス トリームの stock/price が来るまで,$2.VPA を動作させる 必要はない.よって,Stock1 で price を持つ stock を見つ けた時初めて,$2.VPA を起動するとともに,蓄積した XML キャッシュと price 値を送り,そのデータを基に $2.VPA で where [$1/stock/price/text() = $2/stock/price/text()] の判定を行う.そして,条件を満たしているならば,送 られてきた XML キャッシュと$2.VPA の方で蓄積したキ ャッシュをまとめて最終的な出力とする.その後,VPA を再び停止することで,Activation 処理を実現する.. 6. QLMXS 検索エンジンの実装 6.1. QLMXS 検索エンジン QLMXS 検索エンジンでは,リアルタイムに高速な解 析を行うために,事前に問い合わせ言語 QLMXS を基に VPA ベースの解析エンジンを生成する.さらに高速化の.

(5) 図 3 QLMXS エンジンの実装 ための最適化を施し,各 VPA エンジンを組み合わせてマ ルチ XML ストリームデータに対して複雑な解析を行う. QLMXS 検索エンジンの実装とストリーム処理の流れは 図 3 の通りである. このエンジンでは,一つのストリームの処理が終わり 次第,次のストリームの処理を開始する.マルチストリ ーム処理を実現するため,ストリームの時刻管理が重要 になる.そのため,入力される XML ストリームは,大 きなシングルキューで管理することで,次々と送られて くるストリームを容易に正確な時刻順に並び替える.そ して,キューから出てくるストリームをディスパッチャ により,適切な VPA エンジンに振り分ける.各 VPA エ ンジンでは,受け取った XML ストリームをフィルタリ ングして出力するが,出力結果を XML ストリームとす ることで,その結果を再び VPA の入力とすることが可能 となる.その際に,ストリームはキューの一番後ろに挿 入されるが,自動的にキュー内部で正確な時刻順に並び 替える. この QLMXS 検索エンジンを構成するモジュールにつ いて以下にまとめる. (1) XML ストリーム 解析対象となる XML ストリームで,タイムスタンプ, ストリーム名,XML の実態を格納している.タイムスタ ンプはエンジンにストリームが到着時の時刻を記憶して おり,時刻管理のために利用する.また VPA から出力さ れるストリームには解析対象のストリームのタイムスタ ンプをそのまま付与する. (2) キュー ストリームがインキューしたタイミングで,ストリー ムに含まれるタイムスタンプを利用し逐次並び替える. 再帰的な処理を行う場合には VPA から出力されるストリ ームをそのまま次の VPA に流すのではなく,一旦キュー に入れ直すことで,時系列が保証される.この時には, 処理順を保証するためにキューの先頭に挿入する. (3) ディスパッチャ キューから送られるストリームを VPA に振り分けるた めに利用される.ディスパッチャの生成はエンジン生成 時に行い,各 QLMXS クエリの from 節に従い生成される. (4) StAX パーサ XML ストリームを上から順にノード毎に分割するため のパーサである.QLMXS エンジンには StAX パーサがた だ一つ存在し,解析したノードをディスパッチに従い, 順番に VPA エンジンに送る.. (5) VPA エンジン 事前に QLMXS クエリを解釈して VPA に変換し,高速 化のための最適化を施して,VPA エンジンを作成する. StAX パーサより送られてきたノードに対して逐次操作 を行い,検索要求通りの順番に流れてきて,かつ,条件 を満たした時に処理結果を XML ストリームとして出力 する.各 VPA エンジンは他の VPA エンジンに干渉する ことができ,データのやり取りやアクティベート操作が 行える. VPA での解析にはスタックを一つ持つトークンを利用 する.オペレータを持った遷移関数を見ながら状態遷移 を繰り返し、スタック操作や XML のキャッシュ、そし て条件判定等の操作を行うことで XML を解析する。そ のため,トークンはスタックだけでなく,レジスタ, XML キャッシュレジスタの機能を持つ.基本的に、ノー ドの数だけトークン操作は行われ,トークン操作数がエ ンジンの処理速度に大きく影響を与える.. 6.2. エンジンの最適化 QLMXS エンジンでは大量に送られてくるデータをリ アルタイムに処理しなければならない.そのためエンジ ンの最適化をいくつか実装する. 6.2.1. VPA の状態数の削減 XML スキーマが利用可能な場合,条件や操作等で参照 されていなく,加えて,下位の状態から常に予測できる 上位のパス表現から生成された状態を VPA から削除する. これにより削除した部分でのトークン操作を行う必要が なくなるため大幅な高速化を図ることができる. 6.2.2. VPA の合流 1 つのストリームに対して複数の問い合わせを同時に 処理したい時に,解析エンジンでは複数の類似した VPA を並行して処理する必要がある.各 VPA の処理には共通 状態・遷移が存在し,この共通状態を合成した新たな VPA を作成することで最適化できる.これにより,トー クンの無駄な重複操作が減り,VPA のスケーラビリティ が向上する. 6.2.3. 遅延評価 QLMXS から生成される VPA では,条件評価対象の要 素が見つからない時は,検索条件が満たされることはな い.そこで,順次トークン操作を行わずに,ノードを一 旦キューにためておき,対象の要素の入力が確認できた とき,はじめて,キューのノードを利用し、トークン操 作を開始することができる.それ以外の場合,トークン 操作は行わない.この処理は,XML の構造が規則的でな い場合に有効である. 6.2.4. 不要ノード処理の簡略化 クエリのパス表現に含まれないノードは通常は操作, 条件等にも使わない不要ノードである.そこで, QLMXS エンジンでは通常一つ一つのノードに対して操 作を行うが,連続する不要ノード処理については文字列 のまま読み飛ばし,トークン操作を簡略化する..

(6) 7. 実験 6.2.2 で述べた複数 VPA の合流を行うことによる効果 を実験により検証する.実験環境を表 1 に示す.表 2 の 問合せ Q1 と Q2 を VPA に変換し,解析エンジンにより 並行に処理した時と,Q1 と Q2 の VPA の共通状態を一 つに合成したもの(問い合わせ式では Q3)を処理した時, そして 6.2.1 および 6.2.4 で述べた最適化をした時の速度 比較を行う. 図 4 の実験結果より,データ容量 467KB 時では,共通 状態を合成した Q3 は,Q1+Q2 より 38%の処理時間が減 少した.これは Q1 と Q2 が/articles/article を共通部分と して持ち,通常各 VPA にそれぞれノードを作り逐次トー クン処理する所を,VPA の合流によりトークン操作数を 半分にし,処理時間が大幅に短くなったためである.次 に 6.2.1 の状態数削減を行った Q3(6.2.1)では,9%の処理 時間が減少した.最後に 6.2.4 の不要ノード処理の簡略化 を行った Q3(6.2.4)では,37%の処理時間が減少した.検 索クエリが局所的なものであればあるほど操作不要ノー ドは増え,トークン操作数は減り高速になる.このこと は表 3 の各トークン操作回数の差に顕著に表れており, 図 4 と合わせてみることでトークン操作数が速度に影響 を与えていることが分かる.また,XML のデータ容量が 大きくなればなるほど最適化前との処理時間の差は大き くなることが示された.. CPU メモリ XML. 問合せ Q1 Q2 Q3. 表 1 実験環境 Intel(R) Core(TM) i5-2500K 3.3GHz x 4 8GB SIGMOD Record. 表 2 問合せセット 問合せ式 /articles/article[initPage/text() > 50] /articles/article[endPage/text() < 100] /articles/article[initPage/text() > 50 or endPage/text() < 100]. 表 3 データ容量 467KB 時のトークン操作回数 Q1+Q2 Q3 Q1+Q2 Q3 Q1+Q2 Q3 (6.2.1) (6.2.1) (6.2.4) (6.2.4) 69652 34826 69384 34692 24332 15174. 8. 考察 本稿は QLMXS 及びその処理エンジンについて述べて きた.QLMXS は Activation 処理モデルを利用することで, Cayuga の NEXT オペレータを利用したマルチストリーム 処理と同等の記述ができる.そして,VPA を対応させる ことで自動的にエンジンをできる.また,汎用クエリモ デル設計の Cayuga に比べ,XML に特化した QLMXS は, XML ストリーム解析に適している.そして, QLMXS 検 索エンジンは遷移関数に優先度を付与することで,エン ジンレベルで VPA の決定性を実現しており,クエリから の VPA 生成で非決定性が生じる XSeq に比べ,基本処理 速度が高い.また,複数の VPA を連携する処理モデルを 確立することで,XSeq では行えないマルチ XML ストリ ームに対する分析が可能となり,QLMXS は XML 向け CEP に非常に適している言語と言える.しかしながら, XSeq の持つクリーネ*や兄弟を表すオペレータがないた め,単調増加・減少は検出できるが,V 字回復等を検出 できないため,シーケンシャルな解析に制限がある. 9. まとめ 本稿では,QLMXS 検索エンジンの実装と VPA の最適 化について述べた.そして XML を扱う上での QLMXS と VPA の特性に合わせた効果的な最適化を実現した.そ して実験により大幅な速度向上を確認した. 今後の課題として,本稿では触れていない VPA の特性 を生かした最適化を進めることによるエンジンの高速化 と,実験で扱ったような単純な検索だけではなく, QLMXS で要求されるストリーム分割や複数の VPA を連. 図 4 速度比較実験結果 携させる等のエンジン全体で見た時の高速化を進めたい.. 文 献 [1] Mozafari B., Zeng K., Zaniolo C., "High-performance complex event processing over xml streams", Proceedings of the 2012 ACM SIGMOD International Conference on Management of Data, pp.253-264 (2012). [2] Alur R., Madhusudan P., "Visibly pushdown languages", Proceedings of the thirty-sixth annual ACM symposium on Theory of computing, pp.202-211 (2004). [3] Demers A., Gehrke J., Panda B., Riedewald M., Sharma V., White W., "Cayuga: A General Purpose Event Monitoring System", CIDR, Vol.7, pp.412-422 (2007). [4] 松田達希, 内田友樹, 藤田悟, “XMLStream 向け検索 言語からの VPA の生成”, 第 13 回情報科学技術フ ォーラム, pp.147-148 (2014) [5] 内 田 友 樹 , 松 田 達 希 , 藤 田 悟 , “ VPA を 用 い た XMLStream 向け CEP エンジン”, 第 13 回情報科学 技術フォーラム, pp.149-150 (2014) [6] 松田達希, 内田友樹, 藤田悟, “XMLStream 処理のモ デル化と検索言語の設計”, 情報処理学会第 77 回全 国大会, 5M-05 (2015) [7] 内田友樹, 松田達希, 藤田悟, “XMLStream の時系列 イベント処理の性能評価”, 情報処理学会第 77 回全 国大会, 5M-06 (2015).

(7)

References

Related documents

I understand that the expectant mother’s blood will be drawn for testing at the time of the delivery admission to determine the presence of hepatitis, HIV (the virus that causes

GISTs are rare soft tissue sarcomas, which, however, represents the most common mesenchymal tumor of gastro intestinal tract. GISTs are considered a worldwide paradigm of

numerous publications investigating childbirth in sub-saharan Africa have overlooked the psychological and emotional elements that women experience, in favour of physical

• We're data focused and driven - Rad Onc's collect substantial clinical and technical data in routine course of care. • We're standards-based – Staging – UICC/AJCC; Image

• Rules for deciding what to draw in the area where a second graphical element (source) is drawn onto an existing element (destination).. –

ABSTRACT - Two experiments were conducted using direct method to determine the standardized ileal phosphorus (P) digestibility coefficient (SIPDC) of meat and bone meal (MBM)

In the conditions of negative GDP growth, low inflation and zero interest rates, the Czech National Bank decided to use the exchange rate as a non-standard instrument of