Core Concepts
ユーザーが関心のある部分グラフに対してのみ完全な結果を保証しつつ、効率的に増分的なグラフクエリを実行する手法を提案する。
Abstract
本論文では、グラフベースのモデリングアーティファクトの増大に伴い、効率的なグラフクエリの実行が重要になっていることを述べている。RETE アルゴリズムに基づく増分的なアプローチは多くのシナリオで適切な解決策を提供するが、通常はグラフ全体にわたるクエリ結果を検索するように設計されている。しかし、ユーザーが大規模なモデルの一部しかワークスペースにロードしていない場合など、特定の状況では、グローバルな実行セマンティクスが大きな計算オーバーヘッドを引き起こす可能性がある。
そこで本論文では、ローカルかつ完全に増分的なグラフクエリの実行を可能にするRETE アプローチの拡張を提案する。この拡張では、関連するサブグラフに対する結果の完全性を保証しつつ、不要な部分のクエリ実行を回避することができる。
具体的には、中間結果にマーキングを付与することで、RETE ネットワークの実行をサブグラフに固定しつつ、必要に応じて他の部分のモデル要素を取得できるようにしている。また、リクエストプロジェクション構造を導入することで、一方の依存関係からの部分的な結果を他方の依存関係に伝播させることができる。
提案手法の有効性を、ソフトウェア開発のシナリオと独立したソーシャルネットワークベンチマークを用いて実験的に評価した。その結果、メモリ消費と実行時間の両面で、状況に応じて大幅な性能改善が得られることが示された。ただし、不利な場合には線形のオーバーヘッドが生じる可能性もある。
Stats
ローカライズされたRETEネットワークの実行時間は、モデルサイズに依存せずほぼ一定の120 msで推移する。
一方、標準のRETEネットワークの実行時間は、モデルサイズの増加に伴い指数的に増大し、最大モデルでは184,000 msに達する。
増分的な更新処理の平均時間は、ローカライズされたRETEが最大6倍のオーバーヘッドを持つものの、全体としては10 ms以下に抑えられている。
メモリ消費については、ローカライズされたRETEが最大モデルで120倍の改善を示す。
Quotes
"ユーザーが関心のある部分グラフに対してのみ完全な結果を保証しつつ、効率的に増分的なグラフクエリを実行する手法を提案する。"
"中間結果にマーキングを付与することで、RETE ネットワークの実行をサブグラフに固定しつつ、必要に応じて他の部分のモデル要素を取得できるようにしている。"
"リクエストプロジェクション構造を導入することで、一方の依存関係からの部分的な結果を他方の依存関係に伝播させることができる。"