テーブルに含まれる複数個の項目にアクセスするためにパスネームを分解するための方法であって、前記複数個の項目は、前記複数個の項目間の親子関係を確立する階層に属しており、前記方法は、前記テーブルに含まれる前記複数個の項目に見出しを付けるためにインデックスを生成するステップと、複数個の項目の第1の項目のための第1のインデックスエントリをインデックスに記憶するステップとを含み、前記第1の項目は、前記階層において第2の項目の子であり、前記方法はさらに、複数個の項目の第2の項目のための第2のインデックスエントリをインデックスに記憶するステップを含み、前記第2のインデックスエントリは、前記第1のインデックスエントリを前記インデックス中に位置付けるために前記第1のインデックスエントリへのリンクを含み、前記方法はさらに、ターゲット項目への階層を通るパスを識別する識別子のシーケンスを受取るステップと、前記インデックスを用いて前記ターゲット項目についての情報を位置付けるステップとを含み、前記位置付けるステップは、前記識別子のシーケンス中に第1の識別子によって識別される項目である第1の項目のためのインデックスエントリを前記インデックス内に位置付けるステップと、前記第1の項目のための前記インデックスエントリで始まり、前記識別子のシーケンスによって決められるシーケンスにおいて、インデックスエントリ間のリンクを辿り、ターゲット項目についての前記情報がテーブルのどこに位置するかを示す特定のインデックスエントリに達するステップと、前記特定のインデックスエントリ中の情報を用いてテーブル内の前記ターゲット項目についての前記情報を位置付けアクセスするステップとを行なうことによって実行される、方法。前記第2の項目は、階層に複数個の子を有し、前記方法は、配列エントリの配列を前記第2のインデックスエントリ内に記憶するステップをさらに含み、配列エントリの前記配列は、前記第2の項目の子項目の各々のための配列エントリを含む、請求項1に記載の方法。前記インデックスに自身のインデックスエントリを有する子項目に対応する前記配列の各配列エントリに、子項目のためのインデックスエントリへのリンクを記憶するステップをさらに含む、請求項2に記載の方法。前記ターゲット項目はファイルであり、前記特定のインデックスエントリ中の情報は、前記ファイルを含む前記テーブル内の行を識別する、請求項1に記載の方法。前記行は、前記ファイルの記憶位置へのポインタを含む、請求項1に記載の方法。第1のインデックスエントリは、前記第1の項目を位置付けるための情報を含み、第2のインデックスエントリは、前記第2の項目を位置付けるための情報を含む、請求項1に記載の方法。第1の項目は前記インデックスの外部に記憶され、第2のインデックスエントリは、前記インデックスの外部に前記第1の項目を位置付けるための情報を含む、請求項1に記載の方法。配列エントリの前記配列を、それらが関連付けられる子項目に基づいてソートされた順で保守するステップをさらに含む、請求項2に記載の方法。パスネームに基づいてリレーショナルシステム中の情報に効率的にアクセスするために、階層的インデックスを生成、保守および使用し、それにより階層的に編成されたシステムをエミュレートするための方法およびメカニズムが提供される。この発明のある局面に従えば、エミュレートされる階層的システムに任意の子を有する各項目は、インデックス中にインデックスエントリを有する。インデックス中のインデックスエントリは、インデックスエントリと関連付けられた項目間の階層的関係を反映するように互いにリンクされる。具体的には、2つのインデックスエントリに関連付けられた項目間に親子関係が存在するならば、親項目に関連付けられたインデックスエントリは、子項目に関係付けられたインデックスエントリへの直接のリンクを有する。この発明の別の局面に従えば、パスネーム分解は、パスネーム内のファイル名のシーケンスに従って、パスネーム中の項目と関連付けられるインデックスエントリ間の直接のリンクを辿ることにより行なわれる。インデックスエントリがこのようにリンクされているインデックスを用いることにより、それらのパスネームに基づいて項目にアクセスするプロセスは、大きく加速され、そのプロセス中に行なわれるディスクアクセスの数は、大きく低減される。この発明は、添付の図面の、同様の参照番号が同様の要素を参照する、図において、例として例示されるが、限定されるものではない。リレーショナルシステムに記憶されたデータへの、効率的なパスネームベースのアクセスを提供するための方法および装置が記載される。以下の説明において、説明の目的のために、多くの特定の詳細が、この発明を完全に理解するために述べられる。しかしながら、当業者には、この発明がこれらの特定の詳細なしに実施され得ることが明らかである。他の場合には、この発明を不必要に不明瞭にすることを回避するために、周知の構造および装置がブロック図に示される。機能概要パスネームに基づいてリレーショナルシステムにおける情報に効率的にアクセスするために階層的インデックスを生成、保守および使用し、それにより階層的に編成されたシステムをエミュレートするための技術をここに記載する。エミュレートされる階層的システム中に任意の子を有する各項目は、インデックス中にインデックスエントリを有する。インデックス中のインデックスエントリは、インデックスエントリに関連付けられた項目間の階層的関係を反映するように互いにリンクされる。具体的には、2つのインデックスエントリに関連付けられた項目間に親子関係が存在するならば、親項目に関連付けられたインデックスエントリは、子項目に関連付けられたインデックスエントリへの直接のリンクを有する。したがって、パスネーム分解は、パスネーム内のファイル名のシーケンスに従って、パスネーム中の項目に関連付けられたインデックスエントリ間の直接のリンクを辿ることにより行なわれる。インデックスエントリがこのようにリンクされたインデックスを用いることにより、それらのパスネームに基づいて項目にアクセスするプロセスは、大きく加速され、そのプロセス中に行なわれるディスクアクセスの数は、大きく低減される。データベースアーキテクチャ図4は、この発明の原理に従って階層的インデックスを生成、使用および保守するために使用され得るデータベースアーキテクチャを示すブロック図である。アーキテクチャは、ユーザインターフェイス410と、DBMS412と、データベース414とを含む。DBMS412は、ユーザインターフェイス410を介してユーザと対話し、ユーザ入力に従ってデータベース414にアクセスし保守する。DBMS412は、他のシステム図示せずとも対話し得る。DBMS412は、この発明の原理に従ってデータベース414において階層的インデックスを生成、使用および保守する。階層的インデックスの生成、使用および保守を、以下により詳細に記載する。一般的には、DBMS412は、1つ以上のテーブルに情報を編成することによりデータベースを生成する。テーブルの編成を定義と呼ぶ。インデックスは、テーブル中の特定の情報により速くアクセスするために使用される構造である。したがって、テーブル定義は、データへのいかなるアクセスメカニズム名前、ID、日付などによる探索をもサポートし、それに対しインデックスは、特定のアクセス方法のために設計される。インデックス自体は、一般的には、データの正式のソースではなく、正式のデータを記憶するテーブルのディスクアドレスへのポインタを含む。階層的インデックスこの発明に従う階層的インデックスは、パスネームによって特定されるとおり、親項目からそれらの子へ移動する、階層的システムのパスネームベースのアクセス方法をサポートする。ある実施例に従えば、この発明の原理に従う階層的インデックスは、以下の3つのフィールド:RowID、FileID、およびDir_entry_list配列として記憶されるを含むインデックスエントリを採用する。図5は、データベース中の階層的記憶システムをエミュレートするために使用され得る、この発明に従う階層的インデックス510を示す。階層的インデックス510は、テーブルである。RowID列は、DBMS412がディスク上に行を位置付けることを可能にするディスクアドレスを特定する、システム生成Idを含む。リレーショナルデータベースシステムに依存して、RowIDは、ディスクドライブ上に記憶されたデータを位置付けるためにDBMSが使用する、暗黙的に定義されたフィールドであり得る。インデックスエントリのFileIDフィールドは、インデックスエントリに関連付けられるファイルのFileIDを記憶する。この発明のある実施例に従えば、階層的インデックス510は、子を有する項目のためのインデックスエントリのみを記憶する。したがって、エミュレートされる階層的ファイルシステムにおいては、階層的インデックス510中にインデックスエントリを有する項目は、他のディレクトリへの親でありかつ/または現在のところドキュメントを記憶しているディレクトリのみである。子を有さない項目Exampledoc、Access、App1、App2、App3は、好ましくは、含まれない。所与のファイルのためのインデックスエントリのDir_entry_listフィールドは、配列状に、所与のファイルの子ファイルの各々のための配列エントリを記憶する。たとえば、インデックスエントリ512は、Windowsディレクトリ114のためのものである。Wordディレクトリ116およびAccessディレクトリ120は、Windowsディレクトリ114の子である。したがって、Windowsディレクトリ114のためのインデックスエントリ512のDir_entry_listフィールドは、Wordディレクトリ116のための配列エントリおよびAccessディレクトリ120のための配列エントリを含む。ある実施例に従えば、Dir_entry_listフィールドが各子ごとに記憶している特定の情報は、子のファイル名および子のFileIDを含む。階層的インデックス510に自身のエントリを有する子について、Dir_entry_listフィールドは、子のインデックスエントリのRowIDも記憶する。たとえば、Wordディレクトリ116は、階層的インデックス510中にそれ自身のエントリエントリ514を有する。したがって、インデックスエントリ512のDir_entry_listフィールドは、ディレクトリ116の名前Wordと、階層的インデックス510におけるディレクトリ116のためのインデックスエントリのRowIDY3と、ディレクトリ116のFileIDX3とを含む。より詳細に記載するように、Dir_entry_listフィールド中に含まれる情報は、パスネームに基づく情報のアクセスをより高速かつ簡単なものにする。階層的インデックスのいくつかの主要な原理は以下のとおりである。最も頻繁に使用されるファイルシステム動作パスネーム分解、ディレクトリリスティングは、特定のディレクトリが参照されるたびにそのディレクトリにおけるエントリの多くを見る必要があるので、所与のディレクトリのためのインデックスエントリ中のDir_entry_list情報は、可能な限り少数のディスクブロック内にともに保持される。言い換えれば、ディレクトリエントリは高い、参照の局所性を有するべきである、というのも特定のディレクトリエントリが参照されるとき、同じディレクトリ中の他のエントリも参照されやすいからである。階層的インデックスのインデックスエントリに記憶された情報は、特定のディスクブロックにおけるエントリの最大数に適合するために、最小に保持されなければならない。ディレクトリエントリを配列状にともにグループ化することは、それらが存在しているディレクトリを識別するキーを複製する必要がないということを意味する;ディレクトリ中のエントリのすべては、同じキーを共有する。これは、Directory_linksテーブルテーブル310に示す典型的なリレーショナルテーブルモデルとは対照的なものである。パスネームを分解するために必要とされる時間は、ファイルシステムにおけるファイルの総数ではなく、パスにおけるディレクトリの数に比例するべきである。これにより、ユーザは、頻繁にアクセスされるファイルを、ファイルシステムのツリーの上方へ保持することが可能であり、アクセス時間が低減される。これらの要素はすべて、i個のノードおよびディレクトリからなるUNIX登録商標システムなどの、典型的なファイルシステムディレクトリ構造に存在している。ここに記載するような、階層的インデックスの使用は、これらの目的をリレーショナルデータベースが理解しかつ問合せすることのできる構造と両立させ、データベースサーバが、パスネーム分解において使用されるもの以外の態様でファイルの特別な探索を行なうことを可能にする。これを行なうために、インデックスというデータベース概念:特定の方法この場合には、階層ツリーにおけるパスネームの分解によりアクセスを最適化するよう設計されるのとは異なった態様で別個のデータ構造に配置された、下にある情報この場合には、ファイルデータの部分の複製、を使用しなければならない。階層的インデックスの使用階層的インデックス510をいかにして使用して、ファイルのパスネームに基づいてファイルにアクセスするかを、図7のフローチャートを参照して記載する。説明の目的のために、ドキュメント118は、そのパスネームを介してアクセスされるべきものと仮定する。このファイルのためのパスネームは、WindowsWordExampledocであるが、以下これを入力パスネームと呼ぶ。このパスネームが与えられると、パスネーム分解プロセスは、階層的インデックス510内に、入力パスネームにおける第1の名前のためのインデックスエントリを位置付けることにより開始する。ファイルシステムの場合には、パスネームにおける第1の名前は、ルートディレクトリである。したがって、エミュレートされるファイルシステム内にファイルを位置付けるためのパスネーム分解プロセスは、ルートディレクトリ110のインデックスエントリ508を位置付けることにより始まるステップ700。すべてのパスネーム分解動作は、ルートディレクトリのインデックスエントリ508にアクセスすることにより始まるので、ルートディレクトリ110のためのインデックスエントリインデックスエントリ508の場所を示すデータは、探索ごとの開始においてルートディレクトリのインデックスエントリ508をす速く位置付けるために、階層的インデックスの外部の便利な場所に維持され得る。ルートディレクトリ110のためのインデックスエントリ508が位置付けられると、DBMSは、入力パスネームにさらにファイル名があるかどうかを判断するステップ702。入力パスネームにさらにファイル名がなければ、制御はステップ720に進み、インデックスエントリ508に記憶されたFileIDを用いて、ファイルテーブル210におけるルートディレクトリエントリを参照する。この例では、ファイル名Windowsは、入力パスネームにおけるルートディレクトリ記号/の後に続く。したがって、制御はステップ704に進む。ステップ704において、次のファイル名たとえば、Windowsが入力パスネームから選択される。ステップ706において、DBMSは、インデックスエントリ508のDir_entry_list列を調べて、選択されたファイル名に付随する配列エントリを位置付ける。この例では、入力パスネームにおいてルートディレクトリの後に続くファイル名は、Windowsである。したがって、ステップ706は、ファイル名Windowsのための配列エントリのためにインデックスエントリ508のDir_entry_listを探索することを伴う。Dir_entry_listが、選択されたファイル名のための配列エントリを含んでいなければ、制御はステップ708からステップ710に進み、ここでエラーが生成され、入力パスネームが有効でないことを示す。この例では、インデックスエントリ508のDir_entry_listは、Windowsのための配列エントリを含んでいる。したがって、制御はステップ708からステップ722へ移る。インデックスエントリ508のDir_entry_listにおける情報は、ルートディレクトリ110の子の1つが実際にWindowsと名付けられたファイルであることを示す。さらに、Dir_entry_list配列エントリは、この子についての以下の情報を含む:それは、RowIDY2に位置するインデックスエントリを有し、そのFileIDはX2である。ステップ722において、入力パスネームにさらにファイル名があるかどうかが判断される。さらにファイル名がなければ、制御はステップ722からステップ720へと移る。この例では、Windowsは最後のファイル名ではないので、制御は代わりにステップ724へと移る。Windowsは、入力パスの最後のファイル名ではないので、Dir_entry_listに含まれるFileID情報は、このパス分解動作中に使用されない。Windowsディレクトリ114は、特定されたパスの一部にすぎず、ターゲットではないので、ファイルテーブル210は、この時点では調べられない。代わりに、ステップ724において、インデックスエントリ508のDir_entry_listに見付けられる、WindowsのためのRowIDY2を用いて、Windowsディレクトリ114のためのインデックスエントリインデックスエントリ512を位置付ける。インデックスエントリ512のDir_entry_listを調べると、システムは、入力パスネームにおける次のファイル名を探索するステップ704および706。この例において、ファイル名Wordは、入力パスネームにおいてファイル名Windowsの後に続く。したがって、システムは、Wordのための配列エントリのために、インデックスエントリ512のDir_entry_listを探索する。そのようなエントリはインデックスエントリ512のDir_entry_listに存在し、WindowsがWordと名付けられた子を実際に有することを示すステップ708。ステップ722において、入力パスにさらにファイル名が存在することが判断され、制御はステップ724へ進む。Wordのための配列エントリを見付けると、システムは、配列エントリ中の情報を読出し、Wordディレクトリ116のためのインデックスエントリをRowIDY3で階層的インデックス510中に見付けることができ、Wordディレクトリ116に付随する特定の情報を行X3でファイルテーブル210中に見付けることができることを判断する。Wordディレクトリ116は特定されたパスの一部にすぎずターゲットではないので、ファイルテーブル210は調べられない。代わりに、システムは、RowIDY3を用いて、Wordディレクトリ116のためのインデックスエントリ514を位置付けるステップ724。階層的インデックス510のRowIDY3において、システムはインデックスエントリ514を見付ける。ステップ704において、次のファイル名Exampledocが入力パスネームから選択される。ステップ706において、インデックスエントリ514のDir_entry_listを探索し、Exampledocのための配列エントリがあるのを見つけステップ708、ExampledocがWordディレクトリ116の子であることを示す。システムは、Exampledocが階層的インデックス510中にインデックス付情報を有していないこと、および、Exampledocに付随する特定の情報をFileIDX4を用いてファイルテーブル210中に見付けることができることも見出す。Exampledocが、アクセスされるべきターゲットファイルすなわち、入力パスの最後のファイル名であるので、制御は、ステップ720に移り、ここでシステムはFileIDX4を使用し、ファイルテーブル210中の適切な行にアクセスし、かつその行のボディ列に記憶されたファイルボディBLOBを抽出する。このように、Exampledocファイルがアクセスされる。このファイルにアクセスする際、階層的インデックス510のみが使用された。テーブルのスキャンは必要ではなかった。典型的なサイズのブロックおよび典型的なファイル名長さでは、少なくとも100個のディレクトリエントリがディスクブロックに収まり、典型的なディレクトリは、100エントリ未満を有する。これは、所与のディレクトリ中のディレクトリエントリのリストが、典型的には、単一のブロックに収まることを意味する。言い換えれば、インデックスエントリのDir_entry_list配列全体を含む、階層的インデックス510のどの単一のインデックスエントリも、典型的には、完全に単一のブロックに収まり、したがって、単一のI/O動作で読出可能である。階層的インデックス510においてインデックスエントリからインデックスエントリに移動する際、インデックス中のさまざまなインデックスエントリが異なったディスクブロックに存在するならば、いくつかのディスクアクセスが行なわれる必要がある可能性がある。しかしながら、各インデックスエントリが全体として単一のブロックに収まるのであれば、ディスクアクセスの数は多くともiとなるであろう。言い換えれば、パスにおける各ディレクトリについて1回のディスクアクセスが使用される。平均的なインデックスエントリのサイズが単一のディスクブロックに収まらず、2または3ブロックを必要とするとしても、これは定数項であり、ファイルシステムにおけるファイルの総数とともに増加するものではない。先行の方法と異なって、ディスクI/Oの数は、ilogn/mとはならない。したがって、この発明を用いるファイルアクセスはより高速なものとなる。階層的インデックスの生成上に説明したように、ファイル名は、ディレクトリに記憶されたいずれかのファイルを参照するために使用される名前であり、パスネームの構成要素である。たとえば、パスネームWindowsWordExampledocにおいて、Windowsはディレクトリのファイル名であり、WordはWindows内のディレクトリのファイル名であり、ExampledocはWordディレクトリに記憶されたドキュメントのファイル名である。なお、分離文字は、パスネーム内のファイル名を分割する。分離文字は、個々のファイルシステム実現化例によって異なってもよい。たとえば、Microsoft登録商標ファイルシステムは、一般的にはバックスラッシュ\文字を使用しており、UNIX登録商標ファイルシステムは、フォワードスラッシュを使用し、AppleMacintoshファイルシステムは、コロン:を使用してファイル名を分離している。ある実施例に従えば、FileIDは、実際のファイルデータが記憶されているファイルテーブル210における主キーである。したがって、各ファイルごとに記憶されているデータを参照するいずれかの主キーを、FileIDの代わりに階層的インデックスにおいて使用することが可能である。この場合にはFileIDは、階層的インデックス510において外部キーと普通言われているものである。最初には、ルートディレクトリ/以外にファイルシステム中にファイルは存在しない。したがって、階層的インデックスは、ルートディレクトリのためにインデックス510図5に1行挿入することにより生成される。この時点ではルートディレクトリにはファイルは存在しないので、ルートディレクトリのインデックスエントリのDir_entry_listフィールドは、空のままであるはずである。階層的インデックスのユーザは、ルートエントリのRowIDを別個の場所たとえば、ダイナミックメモリまたは、1つのみのエントリを備えるデータベースにおける別個のテーブルに保持するべきである。ルートエントリは、階層的インデックス510のあらゆる使用についての開始点であるので、そのエントリの場所を直ちに利用可能とすることが重要である。新しいファイルがファイルシステムに加えられるので、階層的インデックス510は、階層的インデックスの保守と題する以下の項において記載されるように、更新される。階層的インデックス510が、ファイルシステムが置かれた後に生成されるべきものであれば、それは、階層的インデックスの保守に記載される方法に従って、ファイルがシステムにちょうど加えられたかのような態様で、ファイルシステム全体を移し、ファイルシステムに存在するファイルの各々について階層的インデックスエントリを加えることによって生成され得る。階層的インデックスの保守階層的インデックスのある実施例の保守を図6Aおよび図6Bを参照して記載する。図6Aを参照し、それは、階層的インデックスを使用するリレーショナルシステムにおいてエミュレートされるファイルシステムにおいてファイルが生成されるのに応答して行なわれるステップを例示するフローチャートである。ステップ600において、新しいファイルが生成される。ステップ602において、新しいファイルが、その親として指定されているファイルの最初の子であるかどうかが判断される。たとえば、ドキュメントDoc1docがApp1ディレクトリに生成されると仮定する。現在、App1は、いかなる子も有していないので、Doc1docがその最初の子であり、制御はステップ604に移る。ステップ604において、インデックスエントリがその親について生成される。この例では、インデックスエントリは、App1のために生成されるものである。ステップ610において、親の親のためのインデックスエントリに存在する、親のための配列エントリが、新しく生成されたインデックスエントリへのリンクを含むように更新される。この例では、Unixのためのインデックスエントリ516に存在するApp1のための配列エントリ518が、階層的インデックス510内に、App1のための新しく生成されたインデックスエントリのRowIDを含むように更新される。ステップ606において、新ファイルDoc1docのための配列エントリが、App1のための新しく生成されたインデックスエントリのDir_entry_listに挿入される。生成されるファイルが指定された親の最初の子でなければ、制御はステップ608に移る。ステップ608において、指定された親のためのインデックスエントリが位置づけられ、ステップ606において、新ファイルのための配列エントリが、親のインデックスエントリのDir_entry_listに挿入される。図6Bは、ファイルが削除されるのに応答して階層的インデックスを更新するためのステップを例示するフローチャートである。ステップ650において、ファイルが削除される。ステップ652において、ファイルが親の唯一の子であったかどうかが判断される。削除されたファイルが親の唯一の子であったならば、親のためのインデックスエントリがインデックスから除去されステップ654、親の親のインデックスエントリに存在する親のための配列エントリが、親がインデックス中にインデックスエントリをもはや有していないことを反映するように更新されるステップ660。子が親のための唯一のインデックスエントリでなかったならば、削除されたファイルのための配列エントリが、親のDir_entry_listから除去される。削除されたファイルがその親の唯一の子であったかどうかにかかわらず、削除されたファイルのためのいずれのインデックスエントリも、および、削除されたファイルの子孫のためのインデックスエントリも削除されるステップ658。ファイルが階層におけるある場所から別の場所へ移動されるとき、階層的インデックスは、その古い親のDir_entry_listからそのファイルのための配列エントリを除去し、その新しい親のDir_entry_listにその項目のための配列エントリを加えることによって、更新される。DIR_ENTRY_LIST配列の探索上述したとおり、パスネーム分解プロセスのステップの1つは、特定の子の配列エントリのためにDir_entry_list配列を探索することを伴う図7、ステップ706。ある実施例に従えば、この探索プロセスは、配列エントリをアルファベット順に各Dir_entry_list配列に記憶することによって促進される。配列エントリを順に記憶することにより、バイナリサーチなどのより効率的な探索技術を用いて、所与の子のためのエントリを見つけ得る。しかしながら、配列エントリをソートされた順で保守することは、さらなる保守のオーバーヘッドを招く。したがって、ある実施例では、しきい値の数よりも多い配列エントリを有する配列のみが順序付けされる。変形特定の実施例を用いて、リレーショナルシステムにおいて階層的データにアクセスするための階層的インデックスの使用を例示した。しかしながら、この発明は、記載された実施例に限られるものではない。たとえば、階層的インデックス510は、少なくとも1つの子を有する項目のためのインデックスエントリのみを有する。しかしながら、階層的インデックスは、任意で、それらが子を有するかどうかにかかわらずすべての項目のためのインデックスエントリを含んでもよい。例示したように、階層的インデックス510におけるインデックスエントリのDir_entry_list配列エントリは、ファイルテーブルに子を位置づけるために使用され得るFileIDを含む。しかしながら、各Dir_entry_list配列エントリに記憶される実際のフィールドは、実現化例によって異なってもよい。たとえば、Dir_entry_listは、付加的にまたは代替的に、ファイルテーブルにおける対応する行のRowID、または、ファイルテーブルに対応するエントリを位置づけるために使用可能である任意の他の一意のヌルNULLでないキーを含んでもよい。ある実施例に従えば、FileIDは典型的には、ディスクブロックアドレスに基づくrowidと対照的に、シーケンシャルに生成される。エクスポートするデータベースによって使用されるRowIDは、インポートするデータベースがディレクトリをロードするのにディスク上に異なった場所を見つけるならば、インポートするデータベースによって同じ行について使用されるRowIDと異なる可能性があるので、FileID値は、たとえば、バックアップ/リストアの目的でデータベースにディレクトリをインポート/エクスポートするのに有用である。ある実施例に従えば、階層的インデックスは、図5に示すとおり、別個のFileID列を有していない。代わりに、ターゲット項目のFileIDが、ターゲット項目の親のDir_entry_listに位置する、ターゲット項目のための配列エントリから抽出される。親を有していない、ルートディレクトリのFileIDは、階層的インデックスとは別個に記憶されてもよい。加えて、Dir_entry_listエントリを用いて、それらが対応する項目についての有用な情報をキャッシュしてもよい。そのような付加的な情報は、たとえば、項目に関連づけられるセキュリティ特権についての情報を含んでもよい。いくつかの場合において、項目のための配列エントリに記憶される付加的情報は、項目を参照するクエリを満足させるのに必要とされる情報のすべてを含み、それにより、項目のファイルテーブル情報にアクセスする必要を回避してもよい。しかしながら、Dir_entry_listに有用な情報をキャッシュする要望は、各インデックスエントリを読出すのに必要とされるI/Oの数を低減するためにDir_entry_listのサイズを制限する必要と比較考量されなければならない。この発明の実施例は、ファイルシステムについて記載された。しかしながら、ここに記載された技術は、リレーショナルに編成されたシステム内で、いかなる階層的に編成された情報の記憶装置にも適用可能である。たとえば、リレーショナルシステムは、動物についてのレコードを記憶するのに使用されてもよく、その場合、動物のレコードは、動物が属する網、目、科および種からなる階層的パスに基づいてアクセスされるべきである。ハードウェア概要図8は、この発明の実施例が実現され得るコンピュータシステム800を例示するブロック図である。コンピュータシステム800は、情報をやりとりするためのバス802または他の通信メカニズムと、情報を処理するためにバス802に結合されるプロセッサ804とを含む。コンピュータシステム800は、プロセッサ804によって実行されるべき命令および情報を記憶するためにバス802に結合される、ランダムアクセスメモリRAMまたは他のダイナミック記憶装置などの主メモリ806も含む。主メモリ806は、プロセッサ804によって実行されるべき命令の実行中一時的変数または他の中間情報を記憶するためにも使用されてよい。コンピュータシステム800はさらに、プロセッサ804のために静的情報および命令を記憶するためにバス802に結合されるリードオンリメモリROM808または他の静的記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置810が、情報および命令を記憶するために設けられバス802に結合される。コンピュータシステム800は、コンピュータユーザに情報を表示するための、陰極線管CRTなどのディスプレイ812にバス802を介して結合されてもよい。アルファベット数字および他のキーを含む入力装置814が、プロセッサ804に情報およびコマンド選択を交信するためにバス802に結合される。ユーザ入力装置の他のタイプは、マウス、トラックボールまたはカーソル方向キーなどのカーソル制御816であり、プロセッサ804に方向情報およびコマンド選択を交信し、かつディスプレイ812上でカーソル移動を制御する。この入力装置は、典型的には、装置が平面における位置を特定することを可能にする、第1の軸たとえばxおよび第2の軸たとえばyの2つの軸において2自由度を有する。この発明は、リレーショナルシステムに記憶された階層的に編成された情報にアクセスするためのコンピュータシステム800の使用に関する。この発明のある実施例に従えば、コンピュータシステム800は、主メモリ806に含まれる1つ以上の命令の1つ以上のシーケンスを実行するプロセッサ804に応答して、階層的インデックスを生成、保守および使用する。そのような命令は、記憶装置810などの別のコンピュータで読出可能な媒体から主メモリ806に読出され得る。主メモリ806に含まれる命令のシーケンスの実行により、プロセッサ804は、ここに記載されたプロセスステップを行なう。代替の実施例では、この発明を実現するためにソフトウェア命令の代わりにまたはこれと組合わせて、ハードワイヤード回路が使用されてもよい。したがって、この発明の実施例は、ハードウェア回路およびソフトウェアのいずれの特定の組合せにも限られるものではない。ここに使用されるコンピュータ読出可能媒体という言葉は、プロセッサ804に命令を与え実行させるのに関与する任意の媒体のことをいう。そのような媒体は、不揮発性媒体、揮発性媒体および伝送媒体を含むがこれに限られるものではない、多くの形をとり得る。不揮発性媒体は、たとえば、記憶装置810などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、主メモリ806などのダイナミックメモリを含む。伝送媒体は、バス802を含むワイヤを含む、同軸ケーブル、銅線および光ファイバを含む。伝送媒体は、無線通信および赤外線データ通信の際生成されるものなど、音波または光波の形をとってもよい。コンピュータ読出可能媒体のよくある形は、たとえば、フロッピー登録商標ディスク、フレキシブルディスク、ハードディスク、磁気テープ、もしくは任意の他の磁気媒体、CD-ROM、任意の他の光学媒体、パンチカード、ペーパーテープ、孔のパターンを備える任意の他の物理的媒体、RAM、PROM、およびEPROM、FLASH-EPROM、任意の他のメモリチップもしくはカートリッジ、以下に記載するような搬送波、またはコンピュータが読出すことのできる任意の他の媒体を含む。コンピュータ読出可能媒体のさまざまな形は、1つ以上の命令の1つ以上のシーケンスをプロセッサ804に運び実行させるのに関係し得る。たとえば、命令は、最初に遠隔コンピュータの磁気ディスク上に担持され得る。遠隔コンピュータは、命令をそのダイナミックメモリにロードし、モデムを用いて電話線を介して命令を送信することができる。コンピュータシステム800にローカルなモデムは、電話線でデータを受取り、赤外線送信機を用いてデータを赤外線信号に変換することができる。赤外線検出器が、赤外線信号で運ばれるデータを受取ることができ、適切な回路が、データをバス802に与えることができる。バス802は、データを主メモリ806に運び、プロセッサ804は命令をそこから取出し実行する。主メモリ806によって受取られた命令は、任意で、プロセッサ804によって実行される前または後のいずれかに記憶装置810上に記憶されてもよい。コンピュータシステム800は、バス802に結合される通信インターフェイス818も含む。通信インターフェイス818は、ローカルネットワーク822に接続されるネットワークリンク820に結合する双方向のデータ通信を提供する。たとえば、通信インターフェイス818は、データ通信接続を対応するタイプの電話線に与えるための、統合サービスデジタル網ISDNカードまたはモデムであってもよい。別の例として、通信インターフェイス818は、データ通信接続を互換可能なLANに与えるための、ローカルエリアネットワークLANカードであってもよい。ワイヤレスリンクが実現されてもよい。任意のそのような実現化例において、通信インターフェイス818は、さまざまな種類の情報を表わすデジタルデータストリームを運ぶ電気信号、電磁信号または光信号を送信および受信する。ネットワークリンク820は、典型的には、1つ以上のネットワークを介してデータ通信を他のデータ装置に与える。たとえば、ネットワークリンク820は、ローカルネットワーク822を介してホストコンピュータ824またはインターネットサービスプロバイダISP826によって操作されるデータ機器への接続を与えてもよい。ISP826は、現在通常インターネット828と呼ばれているワールドワイドパケットデータ通信ネットワークを介してデータ通信サービスを提供する。ローカルネットワーク822およびインターネット828はどちらも、デジタルデータストリームを運ぶ電気信号、電磁信号または光信号を使用する。さまざまなネットワークを介する信号と、コンピュータシステム800へおよびこれからデジタルデータを運ぶ、ネットワークリンク820上および通信インターフェイス818を介する信号とは、情報を運ぶ搬送波の例示の形である。コンピュータシステム800は、ネットワーク、ネットワークリンク820および通信インターフェイス818を介してプログラムコードを含む、メッセージを送信しかつデータを受信することができる。インターネットの例では、サーバ830は、インターネット828、ISP826、ローカルネットワーク822および通信インターフェイス818を介してアプリケーションプログラムのための要求されたコードを伝送し得る。受取られたコードは、受取られたときにプロセッサ804によって実行されても、および/または、後の実行のために記憶装置810または他の不揮発性記憶装置に記憶されてもよい。この態様では、コンピュータシステム800は、搬送波の形でアプリケーションコードを獲得し得る。前の明細書において、この発明は、その特定の実施例を参照して記載された。しかしながら、この発明のより広い精神および範囲から逸脱することなしに、これにさまざまな変形および変更がなされ得ることが明らかである。したがって、明細書および図面は、限定の意味ではなく例示的な意味にみなされるべきものである。