(57)【要約】【課題】  分散的な情報処理環境において、任意のデータオブジェクトを表現する語を共有するために記号のみを共有すればよいようにすること。【解決手段】  記号の有限列である語を記号に対応させる耐衝突性を持った所与の関数に対して、イミュータブル記憶部２２とミュータブル記憶部２０を含む情報処理システムであって、前記イミュータブル記憶部２２は、語を記憶し、記号が入力される場合に、語であって、前記所与の関数を適用することにより該入力される記号が得られる該語を出力し、前記ミュータブル記憶部２０は、記号であって、ランダムに生成された記号に関連付けて語を記憶し、記号が入力される場合に、該入力される記号に関連付けて記憶される語を出力し、前記情報処理システムは、記号を入力する記号入力部５０と、該入力される記号に応じて、前記第１語出力手段又は前記第２語出力手段のいずれかにより語を出力する検索部５６と、を含む。【選択図】      図５
2006092340.tif 000002
【特許請求の範囲】
【請求項１】
記号の有限列である語を記号に対応させる耐衝突性を持った所与の関数に対して、イミュータブル記憶部とミュータブル記憶部を含む情報処理システムであって、
前記イミュータブル記憶部は、
語を記憶するイミュータブル記憶手段と、
記号が入力される場合に、語であって、前記所与の関数を適用することにより該入力される記号が得られる該語を出力する第１語出力手段と、
を含み、
前記ミュータブル記憶部は、
記号に関連付けて語を記憶するミュータブル記憶手段と、
記号が入力される場合に、該入力される記号に関連付けて記憶される語を出力する第２語出力手段と、
を含み、
前記情報処理システムは、
記号を入力する記号入力手段と、
前記入力される記号に応じて、前記第１語出力手段又は前記第２語出力手段のいずれかにより語を出力する語出力手段と、
を含み、
前記ミュータブル記憶手段に記憶される語に関連付けられた記号はランダムに生成されることを特徴とする情報処理システム。
【請求項２】
請求項１に記載の情報処理システムにおいて、
前記イミュータブル記憶部は、
語を入力し、前記イミュータブル記憶手段に記憶させる語入力手段、
をさらに含む、
ことを特徴とする情報処理システム。
【請求項３】
請求項１又は２に記載の情報処理システムにおいて、
前記イミュータブル記憶部は、
記号と語とを対応付けて入力する記号・語入力手段、
をさらに含み、
前記イミュータブル記憶手段により前記入力される記号と前記入力される語とを対応付けて記憶する、
ことを特徴とする情報処理システム。
【請求項４】
請求項１乃至３のいずれかに記載の情報処理システムにおいて、
前記ミュータブル記憶部は、
ランダムに記号を生成する記号生成手段、
をさらに含み、
前記ミュータブル記憶手段は、前記生成された記号に関連付けて語を記憶する、
ことを特徴とする情報処理システム。
【請求項５】
記号の有限列である語を記号に対応させる耐衝突性を持った所与の関数に対して、イミュータブル記憶部とミュータブル記憶部を含む情報処理システムにおいて情報処理を行う情報処理方法であって、
前記イミュータブル記憶部において、語を記憶するイミュータブル記憶ステップと、
前記イミュータブル記憶部において、記号が入力される場合に、語であって、前記所与の関数を適用することにより該入力される記号が得られる該語を出力する第１語出力ステップと、
前記ミュータブル記憶部において、記号に関連付けて語を記憶するミュータブル記憶ステップと、
前記ミュータブル記憶部において、記号が入力される場合に、該入力される記号に関連付けて記憶される語を出力する第２語出力ステップと、
記号を入力する記号入力ステップと、
該入力される記号に応じて、前記第１語出力手段又は前記第２語出力手段のいずれかにより語を出力する語出力ステップと、
を含み、前記ミュータブル記憶ステップで記憶される語に関連付けられた記号はランダムに生成されることを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理システム及び情報処理方法に関し、例えば分散型コンピューティングシステムなどにおけるデータや処理の共有に関する。
【背景技術】
【０００２】
情報の管理手法として、hash consingと呼ばれるものがある。hash consingでは、以下に説明するハッシュ関数の性質を利用して情報を管理している。
【０００３】
Ａを記号からなる有限集合であるアルファベット、Ａ*をＡ上の語（つまり、Ａに属する記号の有限列）の全体の集合、ＬをＡ上の有限言語（つまり、Ａ*の有限部分集合）、ｒ：Ａ*→ＡをＡ*からＡへのランダム関数、ｒ（Ｌ）をｒによるＬの像（つまり、Ｌに含まれる語ｗのｒによる値ｒ（ｗ）の全体）、とし、ｒＬ：Ｌ→ｒ（Ｌ）をｒをＬに制限した部分関数とする。包含関係が誘導する写像を垂直な矢として、これらをまとめて図示すると図（１）となる。
【数１】
2006092340.tif 000003
【０００４】
ここで、式（２）を満たすならばｒＬは実質的に双射となる。ここで、｜Ｌ｜はＬに含まれる元の個数を表している。
【数２】
2006092340.tif 000004
【０００５】
正確に言うと、ｒがＬ上で単射ではなくなる、つまり、少なくとも１つの衝突対（ｘ，ｙ），ｘ≠ｙ，ｒ（ｘ）＝ｒ（ｙ）が存在する確率が１／２を超えるのは式（３）が満足される場合である。
【数３】
2006092340.tif 000005
【０００６】
したがって、例えば、Ａとして一つの記号が５１２ビットの複雑度を持つアルファベットを選択し、ｒとして式（４）よりも少ないオーダーのステップ数で衝突を生成するアルゴリズムが知られていない関数（ＳＨＡ−５１２等のいわゆる暗号学的ハッシュ関数、ＳＨＡ−５１２は米国商務省による標準ＦＩＰＳ１８０−２で規定されている）を選択することによって、現実的なＬの上で事実上ｒＬは可逆な変換とみなせる。
【数４】
2006092340.tif 000006
【０００７】
hash consingでは、このようなハッシュ関数の性質を利用して任意の長さの語として表現されるデータオブジェクトを関数ｒにより記号と対応付けることにより、記号と語の間の一対一の対応関係を可能にしている。そして、このhash consingを利用して情報を管理することにより、以下のような効果が得られる。すなわち、語を所定の関数に適用して記号とする方式を採用すれば、以下のような効果が得られる。
１．同一内容の語として表現されるデータオブジェクトを複数のコンピュータやプロセスがそれぞれ重複して保持しなくて済み、記憶領域が節約できる。
２．記号を比較するだけで語として表現されるデータオブジェクトの比較ができるため、処理の高速化ができる。
３．語と記号が一対一に対応しているとみなせるので、ある分散型コンピューティングシステムにおいて記号と語とを対応付けて記憶するテーブルは、どのコンピュータやプロセスのものでも、ある記号と対応付けられる語は同一であり、識別子とデータオブジェクトとの対応を特定のネームサーバーが保持するシステムと異なる。このため、語を共有するためには、特定のネームサービスについての合意を得ることなく、記号のみを共有すればよいことになる。
【０００８】
なお、このようなhash consingを用いたシステムの具体的な例が非特許文献１に記載されている。hash consingはその名前からも分かるように当初Lispにおいてイミュータブル（書き換え不能）なconsセルの実装方式として提案された。したがって、非特許文献１に示されたものは上記説明においてcar部とcdr部とからなる長さ２の語についてのものとなっている。
【非特許文献１】後藤英一著、“Monocopy and Associate Algorithms in an Extended Lisp”、TechnicalReport、東京大学、１９７４年５月、７４−０３
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところが、上記に説明したhash consingのみでは任意のデータ構造を表現することができない。この事情を、図８を用いて説明する。例えば、長さが３の循環リストcycleを生成する場合、通常のLispでは線型に接続された３つのconsセルを長さ３の線型リスト（０ １ ２）として生成し（図８ａ）、後にリスト終端のcdr部の値を（）からcycle自体に設定しなおす（図８ｂ）ことによって実現できる。これは、consセルを表すポインタがconsセルの内容が変わっても変わらないことによっている。このケースではcycleの指すデータオブジェクトがミュータブル（変更可能）となっている。しかしながらhash consingによれば、データオブジェクトを表現する語を指す記号は語から定まり、語の内容を変更すると対応した記号も変更されてしまうことからイミュータブル（書き換え不能）なデータオブジェクトしか本質的に表現することができない。
【００１０】
従来は、このような語を取り扱うために、hash consingによるイミュータブルなconsセルと従来型のヒープとポインタによるミュータブルなconsセルとを併用していた。しかしながら、通常のポインタではヒープを共有できる場合でしか有効ではないため、ミュータブルなデータオブジェクトを表現する語については、上記hash consingの効果のうちの３に示す、複数のコンピュータやプロセス間で語を共有するために、該記号のみを共有するということができなかった。
【００１１】
本発明は、上記課題を解決するためになされたもので、その目的の一つは、複数のコンピュータやプロセス間でデータオブジェクトを表現する語を共有するために、記号のみを共有すればよいようにすることを可能にする情報処理システム及び情報処理方法を提供することにある。
【課題を解決するための手段】
【００１２】
上記課題を解決するための本発明に係る情報処理システムは、記号の有限列である語を記号に対応させる耐衝突性を持った所与の関数に対して、イミュータブル記憶部とミュータブル記憶部を含む情報処理システムであって、前記イミュータブル記憶部は、語を記憶するイミュータブル記憶手段と、記号が入力される場合に、語であって、前記所与の関数を適用することにより該入力される記号が得られる該語を出力する第１語出力手段と、を含み、前記ミュータブル記憶部は、記号に関連付けて語を記憶するミュータブル記憶手段と、記号が入力される場合に、該入力される記号に関連付けて記憶される語を出力する第２語出力手段と、を含み、前記情報処理システムは、記号を入力する記号入力手段と、該入力される記号に応じて、前記第１語出力手段又は前記第２語出力手段のいずれかにより語を出力する語出力手段と、を含み、前記ミュータブル記憶手段に記憶される語に関連付けられた記号はランダムに生成されることを特徴とする。
【００１３】
このようにすることにより、ヒープのポインタに代えて耐衝突性を持った関数の値域にランダムに分布する乱数を使用するので、複数のコンピュータやプロセス間で語を共有するために、記号のみを共有すればよいようにすることを可能にすることができる。そしてこれにより、処理の高速化及び記憶領域の節約も実現することができる。
【００１４】
また、上記情報処理システムにおいて、前記イミュータブル記憶部は、語を入力し、前記イミュータブル記憶手段に記憶させる語入力手段、をさらに含む、こととしてもよい。
【００１５】
また、上記情報処理システムにおいて、前記イミュータブル記憶部は、記号と語とを対応付けて入力する記号・語入力手段、をさらに含み、前記イミュータブル記憶手段により該入力される記号と該入力される語とを対応付けて記憶する、こととしてもよい。
【００１６】
また、上記情報処理システムにおいて、前記ミュータブル記憶部は、ランダムに記号を生成する記号生成手段、をさらに含み、前記ミュータブル記憶手段は、該生成された記号に関連付けて語を記憶する、こととしてもよい。
【００１７】
また、本発明に係る情報処理方法は、記号の有限列である語を記号に対応させる耐衝突性を持った所与の関数に対して、イミュータブル記憶部とミュータブル記憶部を含む情報処理システムにおいて情報処理を行う情報処理方法であって、前記イミュータブル記憶部において、語を記憶するイミュータブル記憶ステップと、前記イミュータブル記憶部において、記号が入力される場合に、語であって、前記所与の関数を適用することにより該入力される記号が得られる該語を出力する第１語出力ステップと、前記ミュータブル記憶部において、記号に関連付けて語を記憶するミュータブル記憶ステップと、前記ミュータブル記憶部において、記号が入力される場合に、該入力される記号に関連付けて記憶される語を出力する第２語出力ステップと、記号を入力する記号入力ステップと、該入力される記号に応じて、前記第１語出力手段又は前記第２語出力手段のいずれかにより語を出力する語出力ステップと、を含み、前記ミュータブル記憶ステップで記憶される語に関連付けられた記号はランダムに生成されることを特徴とする。
【発明を実施するための最良の形態】
【００１８】
本発明の実施の形態について、図面を参照しながら説明する。
【００１９】
本実施の形態に係る分散型コンピューティングシステム１０は、図１に示すように、複数のコンピュータ１２と、ミュータブル記憶部２０と、イミュータブル記憶部２２と、を含んで構成され、さらにこれらが通信ネットワーク１４を介して相互に接続される情報処理システムである。
【００２０】
コンピュータ１２には、パーソナルコンピュータ、ワークステーション、携帯電話などの各種コンピュータを使用することができる。そして、各コンピュータ１２においては、処理の一単位であるプロセスが少なくとも１つ実行される。
【００２１】
ミュータブル記憶部２０は、例えば通信ネットワーク１４と接続されるサーバコンピュータに実装され、書き換え可能（ミュータブル）なデータオブジェクトを表現する語を記号と対応付けて記憶するテーブル（ミュータブルテーブル）を記憶する。ここで、記号とは即値又は語を参照する識別子としてコンピュータ１２において処理されるデータであり、語とは、記号の有限列である。ミュータブルテーブルの例を図２に示す。同図に示すように、ミュータブルテーブルでは、ランダムに生成された記号をキーとして、語を値として、対応関係が記憶される。このような表はいわゆるハッシュテーブル（連想配列）と呼ばれるデータ構造を用いて適切に実装できる。
【００２２】
イミュータブル記憶部２２も、例えば通信ネットワーク１４と接続されるサーバコンピュータに実装され、書き換え不可能（イミュータブル）なデータオブジェクトを表現する語を記号と対応付けて記憶するテーブル（イミュータブルテーブル）を記憶する。イミュータブルテーブルの例を図３に示す。同図に示すように、イミュータブルテーブルでは、語は語自身のハッシュ値をキーとして記憶される。ｈ（  ）はハッシュ関数である。なお、ハッシュ関数とは、記号の有限列である語を記号に対応させる耐衝突性を持った所与の関数のことである。
【００２３】
本実施形態では記号の集合であるアルファベットとして５１２ビットのビット列全体の集合を選択している。したがって、上記乱数（ランダム値）と、上記ハッシュ値と、はともに５１２ビットの一様に分布する値とみなせる。このアルファベットのサイズはその時点の技術レベル（仮定できる計算資源の量）において耐衝突性の困難さを保証する要請から決定される。本実施例の執筆時点では耐衝突性を保証するためには少なくとも１６０ビット、さらに望ましくは２５６ビット以上が求められており（平成１５年２月２０日発行の総務省・経済省による「電子政府推奨暗号リスト」の注釈を参照）、この閾値は、分散型コンピューティングシステムで取り扱われるデータオブジェクトの潜在的な総体を表現するのに十分である。
【００２４】
なお、従来はミュータブルテーブルの代わりに図４に示すヒープを使用していた。該ヒープでは、語はヒープの領域中に書き込まれ、ヒープ領域中に書き込まれた語を参照するために、語の配置されたオフセット（アドレス）をポインタとして利用していた。ここで、例えばLispのように取り扱う語の長さが固定長（Lispの場合はcar部とcdr部からなるので長さは２である）ではなく可変長の語まで扱うならば、オフセットに加えてさらに語長情報を保持したり、Ｃにおける文字列のヌル終端のような規則が必要となる。ポインタは該ヒープでしか有効でなかったが、本実施の形態に係るイミュータブルテーブルでは、十分大きなアルファベットからランダムに選択した記号で語を参照するため、複数のミュータブルテーブル間において記号の衝突が極めて起こりにくい。
【００２５】
通信ネットワーク１４は、ＬＡＮなどの現実の通信ネットワークでもよいし、多数のプロセス間における仮想の通信ネットワークでもよい。また、上記での説明ではミュータブル記憶部２０とイミュータブル記憶部２１は通信ネットワーク１４に接続されたサーバコンピュータに実装されることとした（図１におけるミュータブル記憶部２０−０及びイミュータブル記憶部２２−０）が、もちろん、これらを各コンピュータ毎に備えさせても構わない（同図におけるミュータブル記憶部２０−１乃至ｎ及びイミュータブル記憶部２２−１乃至ｎ）。このように記憶部が多数分散していたとしても、データオブジェクトを参照する記号を十分大きなアルファベット上でランダムに分布するように生成するので記号の衝突は実質的には起きないと仮定できる。
【００２６】
次に、ミュータブルテーブル及びイミュータブルテーブルに語を書き込み、或いは語を読み出す処理について説明する。図５は、分散型コンピューティングシステム１０の機能ブロック図である。同図に示すように、分散型コンピューティングシステム１０は機能的には、語入力部３０、判断部３２、ランダム値取得部３４、ミュータブル記憶書込部３６、ハッシュ値取得部３８、イミュータブル記憶書込部４０、記号入力部５０、ミュータブル記憶読出部５２、イミュータブル記憶読出部５４、検索部５６を含んで構成される。この分散型コンピューティングシステム１０における処理について、処理のフロー図も参照しながら説明する。
【００２７】
図６は、語及び記号をミュータブル記憶部又はイミュータブル記憶部のいずれかに書き込む際の書込処理のフローを示す図である。同図に示すように、まず語入力部３０に語が入力される（Ｓ１００）。そして判断部３２は、該語をイミュータブルなデータオブジェクトを表現するものか否かを判断する（Ｓ１０２）。イミュータブルあるか否かは、後にそのデータオブジェクトを更新する必要の有無で判断される。イミュータブルではない、つまり、ミュータブルなデータオブジェクトの典型例として循環参照がある。このように、イミュータブルなデータオブジェクトを表現する場合とミュータブルなデータオブジェクトを表現する場合があるので、入力された語がイミュータブルなデータオブジェクトを表現する場合には、ハッシュ値取得部３８に該語を出力し、入力された語がミュータブルオブジェクトを表現する場合には、ランダム値取得部３４に該語を出力する。このデータ生成の二通りの使い分けは非特許文献１におけるhcons（イミュータブルなconsセルの生成）とcons（通常のミュータブルなconsセルの生成）に対応している。
【００２８】
ハッシュ値取得部３８では、語のハッシュ値を計算する（Ｓ１０４）。そして、イミュータブル記憶書込部４０が、イミュータブル記憶部２２に、該ハッシュ値である記号と対応付けて該語を書き込む（Ｓ１０６）。一方ランダム値取得部３４では、乱数を生成してランダム値として取得する（Ｓ１０８）。そして、ミュータブル記憶書込部３６が、該ランダム値を、入力された語と対応付けてミュータブル記憶部２０に書き込む（Ｓ１１０）。
【００２９】
次に、図７は、語をミュータブル記憶部２０又はイミュータブル記憶部２２のいずれかから読み出す際の読出処理のフローを示す図である。同図に示すように、まず記号入力部５０に記号が入力され（Ｓ２００）、該記号は検索部５６に入力される。そして、検索部５６は、ここではまずミュータブル記憶読出部５２においてミュータブル記憶部２０に記憶されている記号を検索し（Ｓ２０２）、入力された記号が記憶されているかを判断する（Ｓ２０４）。記憶されていれば、該記号に対応付けられて記憶される語を出力する。
【００３０】
Ｓ２０４において、入力された記号が記憶されていないと判断された場合には、イミュータブル記憶読出部５４においてイミュータブル記憶部２２に記憶されている記号を検索し（Ｓ２０８）、入力された記号が記憶されているかを判断する（Ｓ２１０）。記憶されていれば、該記号に対応付けられて記憶される語を出力する。一方、該コンピュータで記号に対応する語が獲得できない場合には、他のコンピュータに入力された記号を送信する（Ｓ２１６）。そして他のコンピュータにおいて、本読出処理と同様の読出処理を行い（Ｓ２１８）、他のコンピュータから語を受信すれば、その語が検索部５６における検索結果となる。一方、他のコンピュータから語を受信しない場合には、タイムアウトする（Ｓ２２２）まで、他のコンピュータに記号を送信する処理を繰り返し（Ｓ２１４、Ｓ２２４）、タイムアウトすれば処理を終了する。この場合には、検索部５６は、入力された記号に対応する語はなかったということを示す検索結果を返す。このようにして得られた語は記号の列であり、その記号は即値であるか、他の語を参照する記号のいずれかである。即値であるとは該記号が値そのものの表現となっているということである。他の語を参照する記号の場合は上記の処理を必要なだけ繰り返すことによって、記号が語を参照している限り、対応する語を検索することができる。
【００３１】
以上のようにすることにより、分散型コンピューティングシステム１０において、複数のコンピュータやプロセス間でデータオブジェクトを表現する語を共有するために、記号のみを共有すればよいようにすることができる。そしてこのことにより、処理の高速化及び記憶領域の節約を実現することができる。
【００３２】
なお、本発明は上記実施の形態に限定されるものではない。例えば、上記読出処理ではミュータブル記憶部２０とイミュータブル記憶部２２とを順に検索したが、順番はいずれが先でもよいし、記号自体に、該記号がミュータブル記憶部２０にキーとして記憶される記号なのか、イミュータブル記憶部２２にキーとして記憶される記号なのか、を示す識別情報が含められる場合には、該識別情報に基づいて、ミュータブル記憶部２０とイミュータブル記憶部２２のいずれかのみを検索することもできる。
【図面の簡単な説明】
【００３３】
【図１】本発明の実施の形態に係る分散型コンピューティングシステムの構成図である。
【図２】本発明の実施の形態に係るミュータブルテーブルである。
【図３】本発明の実施の形態に係るイミュータブルテーブルである。
【図４】従来技術に係るヒープである。
【図５】本発明の実施の形態に係る分散型コンピューティングシステムの機能ブロック図である。
【図６】本発明の実施の形態に係る処理フロー図である。
【図７】本発明の実施の形態に係る処理フロー図である。
【図８】従来技術に係る循環参照の説明図である。
【符号の説明】
【００３４】
１０  分散型コンピューティングシステム、１２  コンピュータ、１４  通信ネットワーク、２０  ミュータブル記憶部、２２  イミュータブル記憶部、３０  語入力部、３２  判断部、３４  ランダム値取得部、３６  ミュータブル記憶書込部、３８  ハッシュ値取得部、４０  イミュータブル記憶書込部、５０  記号入力部、５２  ミュータブル記憶読出部、５４  イミュータブル記憶読出部、５６  検索部。
【図１】
2006092340.tif 000007
【図２】
2006092340.tif 000008
【図３】
2006092340.tif 000009
【図４】
2006092340.tif 000010
【図５】
2006092340.tif 000011
【図６】
2006092340.tif 000012
【図７】
2006092340.tif 000013
【図８】
2006092340.tif 000014