説明

文書ベースシステムおよびその実現方法

本発明は、解析器と、計画器と、最適化器と、実行器と、記憶操作モジュールとを含む文書ベースシステムを開示している。ここで、解析器はアプリケーションからの呼び出しを中間形式に変換し、計画器は中間形式を実行計画に変換し、最適化器は、計画器で生成された実行計画集合から1つの最適な実行計画を選択し、実行器は、選定された実行計画をスケジューリングして実行し、記憶操作モジュールは、物理記憶に対する操作を実行する。本発明に係る文書ベースシステムは、異なる層の実現が相対的に独立することができるため、拡張性、柔軟性および保守性を持つ。最適化器が複数の実行計画から1つの最適な実行計画を選択することができるため、文書ベースシステム全体は高い性能を持つ。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は電子文書処理技術に関し、特に、文書ベースシステムおよびその実現方法に関する。
【背景技術】
【0002】
文書ベースシステムは大量の文書に対する組織、管理、セキュリティ、表示、記憶などの諸機能を提供している。本出願人が先に提出した基礎出願である出願番号CN200510131072.0の明細書には、文書ベースシステム、記憶装置、アプリケーションを含む文書処理システムが提供されている。ここで、文書ベースデータが記憶装置に記憶され、文書ベースシステムとアプリケーションとが標準呼び出しインターフェースを介して接続される。アプリケーションによる文書の操作は事前定義の汎用文書モデルに対する統一の操作を含む。アプリケーションは標準呼び出しインターフェースを介して文書ベースシステムへ指令を送信し、この過程が即ちアプリケーションからの呼び出しである。文書ベースシステムは受信された指令に従って、記憶装置に記憶されている文書ベースデータに対して相応の操作を実行する。
【発明の概要】
【発明が解決しようとする課題】
【0003】
ここで、文書ベースシステムは大量の論理概念および操作にかかわり、多くの機能をサポートする必要があるため、一般的に、文書ベースシステムに優れた拡張性、柔軟性、および保守性を持たせることは極めて困難である。この課題をアーキテクチャーから解決しないと、最終的に実現される文書ベースシステムは、優れた拡張性、柔軟性、および保守性を持つことができない。
【0004】
本発明は、文書ベースシステムおよびその実現方法を提供することを主な目的とする。
【課題を解決するための手段】
【0005】
本発明に係る文書ベースシステムは、
アプリケーションから受信された呼び出しを、汎用文書モデルのオブジェクトまたは操作を含む中間形式に解析する解析器と、
前記中間形式を、物理記憶に対する操作を含む実行計画に変換する計画器と、
前記実行計画を実行することにより、記憶操作モジュールをスケジューリングして、前記実行計画内の物理記憶に対する操作を実行する実行器と、
前記実行器のスケジューリングで、前記物理記憶に対する操作を実行する記憶操作モジュールと、を含む。
【0006】
本発明に係る文書ベースシステムは、判断条件に従って、計画器で生成された複数の実行計画から1つの最適な実行計画を選択する最適化器をさらに含む。
【0007】
さらに、本発明に係る文書ベースシステムにおける最適化器は、計画器で生成された実行計画を最適化する。
【0008】
前記実行計画を最適化するためのアルゴリズムは、遺伝的アルゴリズム、進化的アルゴリズム、焼きなまし法、分岐限定法、山登り法、発見的アルゴリズム、人工神経ネットワークアルゴリズム、ダイナミックプログラミングアルゴリズムのうち1つまたは任意の組合せを含む。
【0009】
上記の判断条件は、経験ルール、或いは、実行計画の時間コスト、空間コスト、または時間コストと空間コストとの組合せを含む。
【0010】
また、上記のアプリケーションからの呼び出しは、XML形式、またはLALR文法に適合するカスタマイズ形式である。
【0011】
上記の中間形式は、構文ツリーまたは文書オブジェクトモデルツリーを含む。
【0012】
上記の記憶操作モジュールは、論理パーティション、物理ディスク、仮想記憶、またはメモリを含む物理記憶に対する操作をサポートする。仮想記憶はリモート記憶またはネットワーク記憶を含む。リモート記憶はネットワークファイルシステムまたは分散ファイルシステムを含み、ネットワーク記憶はストレージエリアネットワーク、グリッド、またはピアツーピア方式の記憶を含む。
【0013】
ここからわかるように、上記解決手段は具体的な文書ベースシステム構成を提供している。そして、上記解決手段からわかるように、本発明では、文書ベースシステムの実現が複数の層に分けられる。異なる層の実現が相対的に独立することができるため、本発明に係る文書ベースシステムは、拡張性、柔軟性および保守性を持つ。本発明に係るによれば、複数の実行計画から1つの最適な実行計画を選出することができ、実行の性能を向上させるため、文書ベースシステム全体の性能を向上させる。初期実行計画に対する局所最適化によれば、選出された最適な実行計画のコストがさらに低くなり、文書ベースシステム全体の性能をさらに向上させる。
【0014】
本発明に係る文書ベースシステムの実現方法は、
アプリケーションからの呼び出しを、汎用文書モデルのオブジェクトまたは操作を含む中間形式に解析するステップと、
中間形式を、物理記憶に対する操作を含む実行計画に変換するステップと、
前記実行計画内の物理記憶に対する操作をスケジューリングして実行するステップと、を含む。
【0015】
ここで、前記中間形式を物理記憶に対する操作を含む実行計画に変換するステップは、
汎用文書モデルのオブジェクトまたは操作を含む中間形式を、対応の複数の実行計画に変換するステップと、
判断条件に従って複数の実行計画から1つの最適な実行計画を選択するステップと、を含む。
【0016】
また、前記判断条件に従って複数の実行計画から1つの最適な実行計画を選択する前に、生成された実行計画を最適化することをさらに含む。ここで、前記生成された実行計画を最適化することは、遺伝的アルゴリズム、進化的アルゴリズム、焼きなまし法、分岐限定法、山登り法、発見的アルゴリズム、人工神経ネットワークアルゴリズム、ダイナミックプログラミングアルゴリズムのうち1つまたは任意の組合せに基づいて最適化することを含む。
【0017】
ここで、上記のアプリケーションからの呼び出しは、XML形式、またはLALR文法に適合するカスタマイズ形式である。中間形式は、構文ツリーまたは文書オブジェクトモデルツリーを含む。判断条件は、経験ルール、或いは、実行計画の時間コスト、空間コスト、または時間コストと空間コストとの組合せを含む。
【0018】
前記判断条件に従って複数の実行計画から1つの最適な実行計画を選択することは、経験ルール優先度アルゴリズムまたは経験ルール重みアルゴリズムに基づいて、複数の実行計画から1つの最適な実行計画を選択することを含む。
【発明の効果】
【0019】
ここからわかるように、上記解決手段は具体的な文書ベースシステムの実現方法を提供している。そして、上記解決手段からわかるように、本発明では、文書ベースシステムの実現が複数の層に分けられる。異なる層の実現が相対的に独立することができるため、文書ベースシステム全体の実現は、高い拡張性、柔軟性および保守性を持つ。本発明によれば、複数の実行計画から最適な実行計画を選択することができるため、選出された最適な実行計画のコストが比較的低くなり、実行の性能を向上させ、文書ベースシステムに比較的高い性能を持たせる。計画器で生成された複数の実行計画に対して局所最適化を行うことによって、選出された最適な実行計画のコストがさらに低くなり、文書ベースシステム全体の性能をさらに向上させる。
【図面の簡単な説明】
【0020】
【図1】本発明に係る文書ベースシステムの階層を示す図である。
【図2】本発明に係る文書ベースシステムの構成を示す図である。
【図3】本発明に係る文書ベースシステムの実現方法のフローチャートである。
【発明を実施するための形態】
【0021】
本発明の目的、解決手段およびメリットをさらに明確にするために、以下、図面を参照して実施形態をあげながら、本発明をさらに詳しく説明する。
【0022】
本発明の実施形態では、文書ベースシステムの実現が複数の層に分けられ、隣接層の間のインターフェースについて標準規範が定義されている。
【0023】
図1は本発明に係る文書ベースシステムの階層を示す図である。図1に示すように、本発明の実施形態において、文書ベースシステムの実現が図示の幾つかの層に分けられ、各層はそれぞれ、アプリケーションからの呼び出しを、論理操作を含む中間形式に変換し、論理操作を含む中間形式を、物理記憶に対する操作を含む実行計画に変換し、変換によって得られた実行計画を実行する。
【0024】
このように、各層の出力結果が標準インターフェース規範に適合する条件で、各層の具体的な実現はそれぞれ複数の方式であってもよい。これにより、文書ベースシステムに優れた拡張性、柔軟性、および保守性を持たせることができる。
【0025】
図2は本発明に係る文書ベースシステムの構成を示す図である。図2に示すように、本発明の実施形態に係る文書ベースシステムは、解析器と、計画器と、実行器と、記憶操作モジュールと、を含む。
【0026】
解析器は、アプリケーションから受信された呼び出しを、汎用文書モデルのオブジェクトまたは操作からなる中間形式に解析する。
【0027】
計画器は、解析器で解析して得られた中間形式を、物理記憶に対する操作からなる実行計画に変換する。
【0028】
ここで、中間形式を構成する論理操作は比較的高い階層の概念である。1つの論理操作は、単一の物理操作にマッピングされることも、複数の物理操作を含むシーケンスにマッピングされることも可能であり、しかも条件を満たすマッピングが複数でありうる。従って、単一の中間形式が複数の実行計画に対応する可能性がある。同一の中間形式について、毎回、計画器で変換して得られた実行計画が異なることは可能であるが、これらの実行計画は等価である。
【0029】
実行器は、計画器で変換して得られた実行計画を実行することによって、記憶操作モジュールをスケジューリングして、該実行計画内の物理記憶に対する操作を実行する。
【0030】
記憶操作モジュールは、前記実行器のスケジューリングで、前記物理記憶に対する操作を実行する。
【0031】
上記はある文書ベースシステムの具体的な構成である。そして、各層の出力結果が標準インターフェース規範に適合する条件で、各層の具体的な実現はそれぞれ複数の方式であってもよい。これにより、文書ベースシステムに優れた拡張性、柔軟性、および保守性を持たせることができる。
【0032】
以下、上記文書ベースシステムにおける各モジュールをそれぞれ詳しく説明する。
【0033】
具体的に、解析器から出力された中間形式は標準インターフェース規範に適合する。中間形式は具体的に構文ツリーまたは文書オブジェクトモデル(DOM:Document Object Model)ツリーを含むようにしてもよい。アプリケーションによる文書ベースシステムの標準インターフェースに対する呼び出しは、まず解析器で処理される。標準インターフェースは、文書ベースシステムに関する基礎出願書類に説明された拡張可能なマークアップ言語(XML:EXtensible Markup Language)形式のUOMLインターフェースであってもよく、命令列の形式、または他の形式であってもよいが、いずれも基礎出願に説明された文書処理システムにおける汎用文書モデルに適合する必要がある。
【0034】
このように、アプリケーションからの呼び出しが解析器によって字句・構文解析された後、標準インターフェース規範に適合する、汎用文書モデルのオブジェクトまたは操作からなる中間形式が生成される。
【0035】
実際の応用では、XML形式の標準インターフェースの場合、上記文書ベースシステムにおける解析器がXML解析器であり、アプリケーションを解析してDOMツリーを生成するようにしてもよい。命令列形式の標準インターフェースの場合、用いられる命令列は一般的にLALR(1)(Lookahead Left to Right Parsing)文法に適合する。文法定義が与えられる場合、上記文書ベースシステムにおける解析器は、lex(Lexical compiler)およびyacc(Yet another compiler compiler)で生成された字句および構文解析器であってよい。ここで、lexはスキャナを生成するツールであり、即ち字句解析器を生成するツールである。yaccはLALR(1)解析器の自動生成ツールであり、そのバージョン1が1970年代初期に発表され、アメリカのベル研究所のソフトウェア製品である(作者はS.C.Johnson)。現在、この2つのツールはUNIX(登録商標)、DOS(登録商標)などのシステムプラットフォームで広く流行している。具体的なXML解析およびlex、yacc解析は従来技術である。
【0036】
以下、例をあげて、XML形式に基づく標準インターフェース呼び出しの解析を具体的に説明する。
<call>
<stringValval=″AppendLine″ name=″MethodName″/>
<stringValval=″0xabcd1234″ name=″PathObj″/>
<compoundValname=″LineObj″>
<line>
<startxCod=″1000.23″ yCod=″2193.324″/>
<endxCod=″3233.234″ yCod=″2342.234″/>
</line>
</compoundVal>
</call>
【0037】
上記コードはXML形式の標準インターフェース呼び出しを表し、インターフェースメソッドの名称はAppendLineであり、該メソッドのタスクはハンドルが0xabcd1234であるパスオブジェクトへの線分追加であり、該線分の両端点の位置はそれぞれ(1000.23,2193.324)および(3233.234,2342.234)である。
【0038】
解析器は上記のXML形式の標準インターフェース呼び出しを解析し、解析結果がDOMツリーであり、該DOMツリーの構造は、ルート要素callと、callに含まれた3つのサブ要素(2つのstringValおよび1つのcompoundVal)とを含む。
【0039】
即ち、以下のような形式である。
call
stringVal
stringVal
compoundVal
【0040】
以下はLALR(1)文法に適合するカスタマイズ言語による文書ベースシステムに対する標準インターフェース呼び出しである。
call withname=AppendLine, params=(PathObj=″0xabcd1234″, LineObj=(StartPt=(1000.23,2193.324), EndPt=(3233.234, 2342.234)));
【0041】
解析器は、対応の字句および構文解析器によって、上記のカスタマイズ形式のアプリケーションからの呼び出しを解析して、構文ツリーを生成する。上記字句および構文解析器は、lexまたはyaccを予め呼び出してカスタマイズ言語の字句および構文を定義することによって、生成されるようにしてもよい。構文ツリーは下記のC構造で表されるようにしてもよい。
struct SyntaxTree
{
structNode *pRoot;
};
struct Node
{
struct Node *pLeft;
struct Node *pRight;
......
}
【0042】
具体的なツリー構造は上記例示のDOMツリーに類似している。
【0043】
以下、中間形式が構文ツリーである場合を例として、計画器が論理操作を物理操作に変換するプロセスを詳しく説明する。
【0044】
構文ツリー内の各論理操作L_OPを列挙する。ここでの論理操作は一組の論理操作のシーケンスであってもよい。まず、L_OPに対応する物理操作集合(P_OP1、P_OP2、…、P_OPm)を取得する。ここでの各物理操作P_OPjは一組の物理操作のシーケンスであってもよい。次いで、L_OPに対してP_OPiのような物理操作を選択する。そして、構文ツリー内の全ての論理操作に対して、上記プロセスに従って対応の物理操作を選択する。構文ツリー内の全ての論理操作が対応の物理操作に替えられると、実行計画が生成される。
【0045】
DOMツリーおよび他の中間形式に対する変換は上記実現に類似している。
【0046】
上記のDOMツリーとなる中間形式を計画器で変換して生成された実行計画は以下の通りである。
AppendLine
PathObj
CreateLine
StartPt
EndPt
【0047】
ここで、実行計画のルートノードAppendLineは操作であり、その1番目のサブノードPathObjはPathオブジェクトのハンドルであるが、2番目のサブノードは線分オブジェクトを作成するためのCreateLine操作であり、CreateLineの2つのサブノードはそれぞれ作成しようとする線分の始点および終点である。
【0048】
CreateLineの実行結果、対応の線分オブジェクトが生成されるが、AppendLine操作により、該線分オブジェクトはPathオブジェクトに追加される。
【0049】
図2に示すような文書ベースシステムにおける実行器について、普通、実行計画が物理記憶に対する操作を含むツリーであるため、実行器は実行計画に対応するツリーのルートノードから、トップダウンで再帰し、ツリーの最下位ノードから、ボトムアップで記憶操作モジュールをスケジューリングして実際の操作を実行し、実行計画全体を次第に完成する。
【0050】
例えば、実行器は下記の実行計画を実行する。
OP1
Para1
Para2
OP2
Para3
Para4
OP3
Para5
Para6
【0051】
ここで、OP1、OP2およびOP3は3つの操作であり、Para1〜Para6は操作に対応する6つのパラメータである。実行器が上記実行計画を実行する手順は以下の通りである。
OP3(Para5,Para6)を実行し、結果はres3となり、
OP2(Para3,Para4,res3)を実行し、結果はres2となり、
OP1(Para1,Para2,res2)を実行し、結果はres1となる。
【0052】
図2に示すような文書ベースシステムにおける記憶操作モジュールは、各種の物理記憶層、例えば物理エンティティに基づく物理記憶層または仮想の物理記憶層において構築されるようにしてもよく、性能や規模に異なる制限がある。
【0053】
実際の応用では、物理記憶層により提供されたインターフェース類型、即ち記憶操作モジュールと物理記憶層との間のインターフェース類型が、実行計画を構成する物理操作の構成に影響を与えるため、計画器で生成された実行計画も所定のインターフェース類型に応じる必要がある。例えば、物理記憶層がバイナリストリームのリード/ライトのみを提供する場合、実行計画を構成する物理操作はおそらくリード/ライトの2種類の物理操作のみを含み、物理記憶層が文書ベースの作成、文書集合の作成などのようなより多くの操作を提供する場合、実行計画を構成する物理操作は多くなる。物理記憶層の提供必要な基本オブジェクトは文書ベース、文書集合、文書などを含み、物理記憶の割当、回収、リードライトの機能を提供することも必要である。
【0054】
論理パーティション、物理ディスク、仮想記憶、メモリなどの媒体を使用するとき、記憶操作モジュールの実現は類似している。オペレーションシステムで提供されるファイルシステム、オペレーションシステムで提供される論理パーティション、オペレーションシステムで提供される、物理ディスクにアクセスするためのインターフェース、オペレーションシステムを経由せず物理ディスクにアクセスするためのインターフェース、オペレーションシステムで提供される、仮想メモリもしくは物理メモリにアクセスするためのインターフェース、オペレーションシステムを経由ぜず物理メモリに直接にアクセスするためのインターフェース、または仮想記憶装置を基に、記憶操作モジュールを構築するようにしてもよい。この上で、文書ベース、文書集合、文書などの物理記憶層のオブジェクトを実現する。
【0055】
ここで、仮想記憶はリモート記憶を使用するようにしてもよい。即ち、実際の物理記憶は別のコンピューティングデバイスにある。例えば、ネットワークファイルシステム(NFS)、分散ファイルシステム(DFS)である。仮想記憶はネットワーク記憶を使用するようにしてもよい。即ち、実際の物理記憶はネットワークにより提供される。例えば、ストレージエリアネットワーク(SAN:Storage Area Network)、グリッド(GRID)、ピアツーピア(P2P:PEER−to−PEER)方式の記憶などである。
【0056】
ファイルシステムを例として、記憶操作モジュールは以下のような操作を実行する。
【0057】
あるディレクトリを文書ベースとして設定し、
文書ベースディレクトリの下に、1つまたは複数の文書集合ディレクトリを作成し、
文書集合ディレクトリの下に、文書として1つまたは複数のファイルを作成し、
文書に、ページ、層、ページストリームなどを作成するようにしてもよい。
【0058】
最終的なディレクトリ構成は例えば以下のようになり、ここで、文書はファイルの形式で示され、doclistディレクトリの下に置かれる。
/……
docbase/
doclist/
doclist/
……
【0059】
上記は本発明に係る文書ベースシステムの各モジュールの具体的な実現である。上記のように、異なるモジュールの間に標準のインターフェース規範がある。入出力が標準インターフェース規範に適合する条件で、各モジュールの具体的な実現は異なる方法を採用してもよい。これにより、文書ベースシステム全体の実現に拡張性、柔軟性および保守性を持たせることができる。
【0060】
上記文書ベースシステムの計画器によって同一の中間形式を変換して得られた実行計画が異なることは可能である。これらの実行計画が等価であるが、異なる実行計画によって、実行にかかる時間や空間は常に大きな違いがある。そのため、対応の実行計画集合から決定された実行計画が最適であるかどうかは、文書ベースシステムの性能に大きな影響を与える。
【0061】
従って、本発明の実施形態において、図2に示すような文書ベースシステムは、中間形式に対応する実行計画集合から、所定の判断条件に従って最適な実行計画を選出する最適化器をさらに含むようにしてもよい。
【0062】
最適化器の実現の1つとして、計画器で所定数の実行計画を生成し、例えば、計画器は所定数の実行計画をランダムに生成してもよく、次いで、最適化器は判断条件に従って、生成された実行計画集合から最適な実行計画を選出する。説明すべきものとして、いわゆる「最適」とは、判断条件または実際のニーズという意味から言われたものである。例えば、実行時間が最少となることを図るという判断条件で選出された最適な実行計画は、実行に必要な最大空間が大きい可能性があるため、実行に必要な最大空間が最小となることを図るという判断条件で、最適な実行計画と言えない。上記の判断条件は経験ルールであってもよく、或いは、実行計画のコストに基づく比較、即ち、実行計画の時間コスト、空間コスト、または時間コストと空間コストとの組合せに基づく比較であってもよい。
【0063】
実際の応用では、最適化器が様々な方式で実現できる。以下、例を挙げてそれぞれ説明する。
【0064】
図2に示すような文書ベースシステムにおける最適化器は、経験ルールの優先度に基づいて最適な実行計画の選択を実現するようにしてもよい。仮に、最適化器の判断条件がR1,R2,…RLというL個の経験ルールを含み、一般性を失わずに、経験ルールの優先度がR1>R2>…>RLであるとすると、該最適化器は以下のような操作を実行する。
a1、実行計画集合を生成された全ての実行計画に設定し、現在の判断用経験ルールをRi(初期化状態でi=1)に設定する。
a2、実行計画集合内の全ての実行計画に対して、ルールRiに適合するかどうかを順次に判断し、ある実行計画がルールRiに適合しない場合、該実行計画を標記して、該実行計画を実行計画集合から除去する。
a3、実行計画集合が空になる場合、a2で標記された実行計画を実行計画集合に入れる。iがLに等しいかどうかを判断し、iがLに等しい場合、経験ルールの優先度に基づいて選択される最適な実行計画として、実行計画集合から1つの実行計画を任意に選出し、iがLに等しくない場合、iに1を加えて、a2の操作を繰り返して実行する。
【0065】
図2に示すような文書ベースシステムにおける最適化器は、経験ルールの重みに基づいて最適な実行計画の選択を実現するようにしてもよい。仮に、最適化器の判断条件がR1,R2,…RLというL個の経験ルールを含み、一般性を失わずに、経験ルールRiの重みがPRiであるとするとともに、各実行計画ごとに対応の重みを設けると、該最適化器は以下のような操作を実行する。
b1、全ての実行計画に対して、その重みを0に初期化する。
b2、各実行計画に対して、ルールRi(i=1,…,L)に適合するかどうかを判断し、適合する場合、該実行計画の重みにPRiを加える。
b3、各実行計画の重みに基づいて、経験ルールの重みに基づいて選択される最適な実行計画として、重みが最大となる実行計画を選出する。条件に適合する最適な実行計画が複数ある場合、1つを任意に選出するようにしてもよい。
【0066】
上記2種類の最適化器はいずれも経験ルールに基づいて最適な実行計画を選択するものであるが、本発明の実施形態に係る最適化器は実行計画のコストに基づいて最適な実行計画を選択するようにしてもよい。
【0067】
ここで、実行計画のコストは時間コストと空間コストとを含む。時間コストは、実行計画全体の実行にかかる時間を指し、主にディスクI/O時間を含む。空間コストは、実行計画全体の実行過程中で最終結果および中間結果が占用可能な最大空間を指し、メモリとディスクとの両方の占用量にかかわる。
【0068】
実行計画の時間コストに基づいて最適な実行計画を選択すると、最適化器は実行計画を若干の基本操作に分解し、各基本操作にかかる時間を基準にして、各基本操作の実際の実行回数によって累加し、最後に実行計画にかかる合計時間を見積る。通常の方法として、最適化器は再帰の実行順序に従って実行計画全体を走査して、各基本操作の実行回数を取得してから、実行計画全体にかかる時間を算出する。
【0069】
実行計画の時間コストとの相違として、通常、実行計画の空間コストは実行過程中の空間の最大値を指す。算出の方法として、最適化器は再帰的順序に従って、ボトムアップで算出して、現在の実行に必要な空間を現在の最大空間値と比較し、現在の最大空間値より大きい場合、現在の最大空間を現在の実行空間で取り替え、実行計画の算出が終了した後、実行計画の最大空間、即ち、該実行計画の空間コストを得ることができる。
【0070】
具体的に、最適化器は実行計画の時間コストの算出に基づいて最適な実行計画の選択を実現するようにしてもよい。仮に、実行計画がツリー構造であり、基本操作が(OP1、OP2、…OPn)を含み、最適化器の実行計画の時間コストの算出関数がTIME_CALC(NODE node)であるとすると、以下はTIME_CALCの算出過程の実現である。
c1、実行時間変数Tを0に初期化する。
c2、nodeのサブノード(SUB1、SUB2…SUBm)に対して、
T=T+ΣTIME_CALC(SUBi)(ダミー変数iの範囲は1〜m)を実行する。
c3、nodeにかかわる各基本操作の数を算出し、ここで、OPiの数をCiと略記し、OPi自身に必要な時間をOTiと略記する。
T=T+ΣCi*OTi(ここで、ダミー変数iの範囲は1〜n)である。
c4、TをTIME_CALCの結果として戻す。
【0071】
また、最適化器は実行計画の時間コストの算出に基づいて最適な実行計画の選択を実現するようにしてもよい。仮に、実行計画がツリー構造であり、基本操作が(OP1、OP2、…OPn)を含み、最適化器の実行空間の算出関数がSPACE_CALC(NODE node)であるとすると、以下はSPACE_CALCの実現である。
d1、実行空間変数Sを0に初期化する。
d2、nodeのサブノード(SUB1、SUB2……SUBm)に対して、
S=S+MAX(SPACE_CALC(SUBi))(ダミー変数iの範囲は1〜m)を実行する。
d3、nodeにかかわる各基本操作の数を算出し、ここで、OPiの数をCiと略記し、OPi自身に必要な空間をOTiと略記する。
S=S+MAX(Ci*OTi)(ここで、ダミー変数iの範囲は1〜n)である。
d4、SをSPACE_CALCの結果として戻す。
【0072】
上記の説明からわかるように、最適化器は判断条件に従って複数の実行計画から最適な実行計画を選出し、選出された実行計画は比較的低い時間コストまたは空間コストを持つことが多いため、文書ベースシステム全体の性能を向上させる。
【0073】
本発明の実施形態に係る最適化器は、計画器で生成された実行計画から最適な実行計画を直接に選択するようにしてもよいし、まず、遺伝的アルゴリズム、人工神経ネットワークなどのような人工知能アルゴリズムを用いて、計画器で生成された実行計画を最適化し、最適化された実行計画から最適な実行計画を選択するようにしてもよい。
【0074】
上記最適化器の実行計画に対する最適化は、実行計画のコストまたは他のメトリック値をメトリック関数として、遺伝的アルゴリズムにおける適応度や、焼きなまし法におけるエネルギーのような知能アルゴリズムにおけるメトリック値と関連付け、これらのアルゴリズムを用いて実行計画空間に対して空間探索を行って、局所最適化された実行計画を得ることを根本とする。
【0075】
以下、最適化器の実行計画に対する最適化の実現過程をいくつか紹介する。
【0076】
最適化器が遺伝的アルゴリズムに基づいて初期実行計画を改善する過程は、以下のようなステップを含む。
e1、実行計画ツリーを文字列に符号化して、文字列の集合、即ち、遺伝的アルゴリズムで用いられる初期集団を形成する。
e2、実行の時間または空間を適応度のメトリック関数として、初期集団を進化させる。
e3、所定数の後代まで進化すると、進化を停止し、最終的に得られた集団を実行計画に復号化する。
【0077】
説明すべきものとして、上記の適応度のメトリック関数は、実行の時間空間に対応する以外に、文書に対してページビットマップの取得を実行する操作回数のような他のメトリックを選択するようにしてもよい。
【0078】
最適化器が焼きなまし法に基づいて初期実行計画を改善する過程は、初期実行計画集合内の各実行計画ごとに以下の操作を実行する。
f1、現在の実行計画がCであり、改善後の実行計画がBであり、BをCに初期化する。
f2、現在の温度Tを初期化する。
f3、温度降下因子ALPHAを0〜1の値に初期化する。
f4、Tが所定の停止温度FTより大きい場合、以下の操作手順を繰り返して実行する。
f41、現在の温度で、実行回数が所定のCOUNTより小さい場合、以下の操作を繰り返して実行する。
f412、現在の実行計画Cを一時実行計画Wにコピーする。
f413、Wに対してランダムに微小調整を行うが、WとCの等価性を確保する必要がある。
f414、CのエネルギーEcおよびWのエネルギーEw(即ち実行コスト)をそれぞれ算出する。
f415、Ec>Ewの場合、WをCおよびBにコピーする。
f416、Ec≦Ewの場合、以下の計算を実行する。
TESTを0〜1のランダム値に初期化する。
DELTA=Ew−Ec
RESULT=EXP(−DELTA/T)
RESULTがTESTより大きいとき、WをCにコピーする。
f42、現在の温度をT=T*ALPHAのように降下させる。
f5、実行計画BをCにコピーする。
【0079】
上記2種類のアルゴリズム以外に、最適化器は進化的アルゴリズム、発見的アルゴリズム、分岐限定法、山登り法、人工神経ネットワークまたはダイナミックプログラミングなどの技術分野のアルゴリズムを採用して、実行計画を最適化するようにしてもよい。他のアルゴリズムに基づいて初期実行計画を改善する処理過程は、ポリシーが上記2種類の方法に類似している。
【0080】
初期実行計画に対して局所最適化を行うことにより、最適化器で選出された最適な実行計画のコストがさらに低くなることができ、文書ベースシステム全体の性能をさらに向上させる。
【0081】
説明すべきものとして、本発明に係る解析器、計画器、最適化器、実行器および記憶操作モジュールのうち1つまたは複数のモジュールは、独立のモジュールで実現されるようにしてもよい。例えば、Windows(登録商標)システムにおいて、各モジュールそれぞれを単独のDLLで実現するようにしてもよく、全てのモジュールを1つのDLLで実現するようにしてもよい。linux(登録商標)システムにおいて、各モジュールそれぞれを1つのsoファイルで実現するようにしてもよく、全てのモジュールを1つのsoファイルで実現するようにしてもよい。Java(登録商標)環境において、各モジュールそれぞれを1つの.classファイルで実現するようにしてもよく、全てのモジュールを1つの.classファイルで実現するようにしてもよい。
【0082】
各モジュールの実現について、C、C++、Java、Python、Ruby、Perl、SmallTalk、Ada、Simula、Pascal、Haskellなどの言語を用いて開発するようにしてもよい。
【0083】
図3は本発明に係る文書ベースシステムの実現方法のフローチャートである。図3に示すように、本発明の実施形態に係る文書ベースシステムの実現方法は、以下のようなステップを含む。
【0084】
ステップ301で、アプリケーションからの呼び出しを、汎用文書モデルのオブジェクトまたは操作からなる中間形式に解析する。
【0085】
本ステップでは、アプリケーションによる文書ベースシステム標準インターフェースの呼び出しは、文書ベースシステムに関する基礎出願書類に説明されたUOMLであってもよく、命令列の形式であってよいが、いずれも文書ベースシステムに関する基礎出願に指摘された汎用文書モデルに適合すべきである。アプリケーションからの呼び出しに対して字句・構文解析を行って、標準インターフェース規範に適合する、汎用文書モデルのオブジェクトまたは操作を含む中間形式を生成する。XMLの場合、XML解析器を用いてDOMツリーを生成するようにしてもよい。命令列形式の場合、用いられる命令列は一般的にLALR(1)文法に適合する。文法定義が与えられる場合、lexおよびyaccで生成された字句および構文解析器を用いて命令列を解析するようにしてもよい。
【0086】
ステップ302で、中間形式を、物理記憶に対する操作を含む実行計画に変換する。
【0087】
本ステップでは、中間形式を構成する汎用文書モデルのオブジェクトまたは操作は論理操作である。これらの論理操作は比較的高い階層の概念である。1つの論理操作は、物理記憶に対する単一の操作にマッピングされることも、物理記憶に対する複数の操作を含むシーケンスにマッピングされることも可能であり、しかも条件を満たすマッピングが複数でありうる。従って、単一の中間形式が複数の実行計画に対応する可能性がある。同一の中間形式について、毎回変換後の実行計画が異なることは可能である。
【0088】
構文ツリーで表された中間形式を例として、本ステップでは、中間形式を実行計画に変換する過程は具体的に以下のようなステップを含むようにしてもよい。
【0089】
構文ツリー内の各論理操作L_OPを列挙する。ここでの論理操作は一組の論理操作のシーケンスであってもよい。
【0090】
L_OPに対応する物理操作集合(P_OP1、P_OP2、…、P_OPm)を取得する。ここでの各物理操作P_OPjは一組の物理操作のシーケンスであってもよい。
【0091】
L_OPに対してP_OPiのような物理操作を選択する。
【0092】
構文ツリー内の全ての論理操作に対して、上記手順に従って対応の物理操作を選択し、構文ツリー内の全ての論理操作が対応の物理操作に替えられると、実行計画が生成される。
【0093】
DOMツリーおよび他の中間形式に対する変換は上記実現に類似している。
【0094】
ステップ303で、変換して得られた実行計画をスケジューリングして実行する。
【0095】
具体的に、本ステップでは、実行計画に対応するツリーのルートノードから、トップダウンで再帰し、ツリーの最下位ノードに到着すると、ボトムアップで実際の操作を実行し、実行計画全体を次第に完成する。
【0096】
上記方法によって実現された文書ベースシステムは、各ステップ間のインターフェースが標準インターフェース規範を満たす条件で、各ステップの具体的な実現が互いに独立であるため、文書ベースシステム全体の実現に優れた拡張性、柔軟性および保守性を持たせる。
【0097】
上記プロセスでは、ステップ302で変換して得られた実行計画が複数ある場合、ステップ302は具体的に以下のようなステップを含む。
【0098】
ステップ3021で、汎用文書モデルのオブジェクトまたは操作を含む中間形式を、対応の複数の実行計画に解析する。
【0099】
中間形式を構成する汎用文書モデルのオブジェクトまたは操作は論理操作である。これらの論理操作は比較的高い階層の概念である。1つの論理操作は、単一の物理操作にマッピングされることも、複数の物理操作を含むシーケンスにマッピングされることも可能であり、しかも条件を満たすマッピングが複数でありうる。従って、単一の中間形式が複数の実行計画に対応する可能性がある。論理操作を含む中間形式に基づいて、対応の複数の実行計画をランダムに生成するようにしてもよい。
【0100】
ステップ3022で、判断条件に従って複数の実行計画から最適な実行計画を選択する。
【0101】
上記ステップ3022では、判断条件に従って、生成された実行計画集合から最適な実行計画を選出するようにしてもよい。説明すべきものとして、いわゆる「最適」とは、判断条件または実際のニーズという意味から言われたものである。例えば、実行時間が最少となることを図るという判断条件で選出された最適な実行計画は、実行に必要な最大空間が大きい可能性があるため、実行に必要な最大空間が最小となることを図るという判断条件で、最適な実行計画と言えない。上記の判断条件は経験ルールであってもよく、或いは、実行計画のコストに基づく比較、即ち、実行計画の時間コスト、空間コスト、または時間コストと空間コストとの組合せに基づく比較であってもよい。
【0102】
具体的に、上記ステップ3022の操作過程は複数の方法で実現されるようにしてもよい。以下、例を挙げて説明する。
【0103】
1つは、経験ルールの優先度に基づいて最適な実行計画を選択する方法である。仮に、判断条件がR1,R2,…RLというL個の経験ルールを含み、一般性を失わずに、経験ルールの優先度がR1>R2>…>RLであるとすると、該方法は以下のようなステップを含む。
【0104】
実行計画集合を生成された全ての実行計画に設定し、現在の判断用経験ルールをRi(i=1)に設定する。
【0105】
実行計画集合内の全ての実行計画に対して、ルールRiに適合するかどうかを順次に判断し、ある実行計画がルールRiに適合しない場合、該実行計画を標記して、該実行計画を実行計画集合から除去する。
【0106】
実行計画集合が空になる場合、b2で標記された実行計画を実行計画集合に入れて、次のステップを実行する。iがLに等しい場合、次のステップを実行し、iがLに等しくない場合、iに1を加えて、b2を繰り返して実行する。
【0107】
経験ルールの優先度に基づいて選択される最適な実行計画として、実行計画集合から1つの実行計画を任意に選出する。
【0108】
もう1つは、経験ルールの重みに基づいて最適な実行計画を選択する方法である。仮に、判断条件がR1,R2,…RLというL個の経験ルールを含み、一般性を失わずに、経験ルールRiの重みがPRiであるとすると、該方法は以下のようなステップを含む。
【0109】
全ての実行計画に対して、その重みを0に初期化する。
【0110】
各実行計画に対して、ルールRi(i=1,…,L)に適合するかどうかを判断し、適合する場合、該実行計画の重みにPRiを加える。
【0111】
各実行計画の重みに基づいて、経験ルールの重みに基づいて選択される最適な実行計画として、重みが最大となる実行計画を選出する。重みが最大となる実行計画が複数ある場合、1つを任意に選出するようにしてもよい。
【0112】
上記は、経験ルールに基づいて最適な実行計画を選択する2種類の方法を説明したが、以下、実行計画のコストに基づいて最適な実行計画を選択する方法を紹介する。
【0113】
実行計画のコストは時間コストと空間コストとを含む。時間コストとは、実行計画全体の実行にかかる時間を指すが、空間コストとは、実行過程全体で最終結果および中間結果が占用可能な最大空間を指す。このような実行にかかわるディスクI/O時間が時間コストの主要部分となるため、時間コストの算出も主にディスクI/O時間の算出である。空間コストにとって、メモリとディスクとの両方の占用にかかわる。
【0114】
実行計画の時間コストおよび空間コストの算出方法について、上記最適化器の実現に関する相応内容を参照してよい。
【0115】
上記複数の実行計画を生成して最適な実行計画を選択するステップによれば、選出された最適な実行計画のコストがさらに低くなり、文書ベースシステム全体の実現方法が高い性能を持つようになる。
【0116】
本発明の実施形態に係る文書ベースシステムの実現方法において、ステップ3021とステップ3022との間に、対応の複数の実行計画を最適化する過程をさらに含む。該最適化過程によって、複数の局所最適化された実行計画を取得することができる。
【0117】
このように、ステップ3022は、最適化された複数の実行計画から1つの最適な実行計画を選択する。
【0118】
上記実行計画に対する最適化は、実行計画のコストまたは他のメトリック値をメトリック関数として、遺伝的アルゴリズムにおける適応度や、焼きなまし法におけるエネルギーのような知能アルゴリズムにおけるメトリック値と関連付け、これらのアルゴリズムを用いて実行計画空間に対して空間探索を行って、局所最適化された実行計画を得ることを根本とする。
【0119】
実行計画を最適化する方法は、遺伝的アルゴリズムや、焼きなまし法などを含む。この2種類の方法の具体的なステップについて、最適化器に関する相応内容の説明を参照する。
【0120】
上記説明された2種類のアルゴリズム以外に、進化的アルゴリズム、発見的アルゴリズム、分岐限定法、山登り法、人工神経ネットワークまたはダイナミックプログラミングなどの技術分野のアルゴリズムを採用して、実行計画を最適化するようにしてもよい。他のアルゴリズムに基づいて初期実行計画を改善する方法は、ポリシーが上記2種類の方法に類似している。
【0121】
初期実行計画に対して局所最適化を行うステップによれば、選出された最適な実行計画のコストがさらに低くなり、文書ベースシステム全体の性能がさらに向上する。
【0122】
要するに、本発明に係る文書ベースシステムおよびその実現方法では、文書ベースシステムの実現が複数の層に分けられる。異なる層の実現が相対的に独立することができるため、本発明に係る文書ベースシステムは、拡張性、柔軟性および保守性を持つ。本発明に係る最適化器および相応の最適化アルゴリズムによれば、複数の実行計画から1つの最適な実行計画を選出することができ、実行の性能を向上させるため、文書ベースシステム全体の性能を向上させる。初期実行計画に対する局所最適化によれば、選出された最適な実行計画のコストがさらに低くなり、文書ベースシステム全体の性能をさらに向上させ、文書ベースシステム全体の実現に高い性能を持たせる。
【0123】
上記は本発明の好ましい具体的な実施形態にすぎないが、本発明の保護範囲はこれに限られない。本発明に掲げる技術範囲内で、いかなる当業者が容易に想到できる変更または置換えは、全て本発明の保護範囲内に含まれるべきである。そのため、本発明の保護範囲は、特許請求の範囲の保護範囲に準すべきである。

【特許請求の範囲】
【請求項1】
文書ベースシステムであって、
アプリケーションから受信された呼び出しを、汎用文書モデルのオブジェクトまたは操作を含む中間形式に解析する解析器と、
前記中間形式を、物理記憶に対する操作を含む実行計画に変換する計画器と、
前記実行計画を実行することにより、記憶操作モジュールをスケジューリングして、前記実行計画内の物理記憶に対する操作を実行する実行器と、
前記実行器のスケジューリングで、前記物理記憶に対する操作を実行する記憶操作モジュールと、
を含むことを特徴とする文書ベースシステム。
【請求項2】
判断条件に従って複数の実行計画から1つの最適な実行計画を選択する最適化器をさらに含むことを特徴とする請求項1に記載の文書ベースシステム。
【請求項3】
前記最適化器が、さらに前記実行計画を最適化することを特徴とする請求項2に記載の文書ベースシステム。
【請求項4】
前記最適化が、実行計画の空間を探索し、前記判断条件に従って、最適化された実行計画を取得することを含むことを特徴とする請求項3に記載の文書ベースシステム。
【請求項5】
前記実行計画を最適化するためのアルゴリズムが、遺伝的アルゴリズム、進化的アルゴリズム、焼きなまし法、分岐限定法、山登り法、発見的アルゴリズム、人工神経ネットワークアルゴリズム、ダイナミックプログラミングアルゴリズムのうち1つまたは任意の組合せを含むことを特徴とする請求項3に記載の文書ベースシステム。
【請求項6】
前記判断条件が、経験ルール、或いは、実行計画の時間コスト、空間コスト、または時間コストと空間コストとの組合せを含むことを特徴とする請求項2〜5のいずれか1項に記載の文書ベースシステム。
【請求項7】
前記アプリケーションからの呼び出しの標準インターフェースが、XML形式、またはLALR文法に適合するカスタマイズ形式であることを特徴とする請求項1〜5のいずれか1項に記載の文書ベースシステム。
【請求項8】
前記中間形式が、構文ツリーまたは文書オブジェクトモデルツリーを含むことを特徴とする請求項1〜5のいずれか1項に記載の文書ベースシステム。
【請求項9】
前記物理記憶に対する操作が、論理パーティション、物理ディスク、仮想記憶、メモリを含む1種または複数種の物理記憶に対する操作を含むことを特徴とする請求項1〜5のいずれか1項に記載の文書ベースシステム。
【請求項10】
前記仮想記憶がリモート記憶またはネットワーク記憶を含み、前記リモート記憶がネットワークファイルシステムまたは分散ファイルシステムを含み、前記ネットワーク記憶がストレージエリアネットワーク、グリッド、またはピアツーピア方式の記憶を含むことを特徴とする請求項9に記載の文書ベースシステム。
【請求項11】
文書ベースシステムの実現方法であって、
アプリケーションからの呼び出しを、汎用文書モデルのオブジェクトまたは操作を含む中間形式に解析するステップと、
中間形式を、物理記憶に対する操作を含む実行計画に変換するステップと、
前記実行計画をスケジューリングして実行するステップと、
を含むことを特徴とする方法。
【請求項12】
前記中間形式を実行計画に変換するステップが、
汎用文書モデルのオブジェクトまたは操作を含む中間形式を、対応の複数の実行計画に変換するステップと、
判断条件に従って複数の実行計画から1つの最適な実行計画を選択するステップと、
を含むことを特徴とする請求項11に記載の方法。
【請求項13】
前記判断条件に従って複数の実行計画から1つの最適な実行計画を選択する前に、生成された実行計画を最適化することをさらに含むことを特徴とする請求項12に記載の方法。
【請求項14】
前記生成された実行計画を最適化することが、実行計画の空間を探索し、前記判断条件に従って、最適化された実行計画を取得することを含むことを特徴とする請求項13に記載の方法。
【請求項15】
前記生成された実行計画を最適化することが、遺伝的アルゴリズム、進化的アルゴリズム、焼きなまし法、分岐限定法、山登り法、発見的アルゴリズム、人工神経ネットワークアルゴリズム、ダイナミックプログラミングアルゴリズムのうち1つまたは任意の組合せに基づいて最適化することを含むことを特徴とする請求項13に記載の方法。
【請求項16】
前記判断条件が、経験ルール、或いは、実行計画の時間コスト、空間コスト、または時間コストと空間コストとの組合せを含むことを特徴とする請求項12〜15のいずれか1項に記載の方法。
【請求項17】
前記判断条件が、経験ルールを含み、
前記判断条件に従って複数の実行計画から1つの最適な実行計画を選択することが、経験ルール優先度アルゴリズムまたは経験ルール重みアルゴリズムに基づいて、複数の実行計画から1つの最適な実行計画を選択することを含む、
ことを特徴とする請求項16に記載の方法。
【請求項18】
前記アプリケーションからの呼び出しが、XML形式、またはLALR文法に適合するカスタマイズ形式であることを特徴とする請求項11〜15のいずれか1項に記載の方法。
【請求項19】
前記中間形式が、構文ツリーまたは文書オブジェクトモデルツリーを含むことを特徴とする請求項11〜15のいずれか1項に記載の方法。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公表番号】特表2010−501948(P2010−501948A)
【公表日】平成22年1月21日(2010.1.21)
【国際特許分類】
【出願番号】特願2009−525902(P2009−525902)
【出願日】平成19年8月14日(2007.8.14)
【国際出願番号】PCT/CN2007/070476
【国際公開番号】WO2008/025281
【国際公開日】平成20年3月6日(2008.3.6)
【出願人】(508166419)サーセン コーポレイション (5)
【Fターム(参考)】