JP3662533B2 - 情報管理装置 - Google Patents

情報管理装置 Download PDF

Info

Publication number
JP3662533B2
JP3662533B2 JP2001349326A JP2001349326A JP3662533B2 JP 3662533 B2 JP3662533 B2 JP 3662533B2 JP 2001349326 A JP2001349326 A JP 2001349326A JP 2001349326 A JP2001349326 A JP 2001349326A JP 3662533 B2 JP3662533 B2 JP 3662533B2
Authority
JP
Japan
Prior art keywords
data
index
information
storage unit
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2001349326A
Other languages
English (en)
Other versions
JP2003150642A (ja
Inventor
雅彦 下田
Original Assignee
株式会社リオス
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社リオス filed Critical 株式会社リオス
Priority to JP2001349326A priority Critical patent/JP3662533B2/ja
Publication of JP2003150642A publication Critical patent/JP2003150642A/ja
Application granted granted Critical
Publication of JP3662533B2 publication Critical patent/JP3662533B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、情報管理装置に関し、より詳細には、先祖データから下位に位置する子孫データへと辿ることができるよう親データにその子データを特定する子特定データが関係付けられた階層構造データにインデックス付けを行う情報管理装置に関する。
【0002】
【従来の技術】
データベースの検索を高速に行うため、キーになる項目にインデックス付けを行うことが従来から行われている。
図15は、インデックス付けの一例を概念的に示すもので、いわゆるB−Tree(厳密には、昔のB-Treeが改良されたものでB+-Treeと呼ばれることもある。)と呼ばれるツリー構造のインデックスを示している。ここでは社員番号1012番から9890番までの社員に関する情報(例えば、氏名及び入社年月日)を記憶したデータベースの社員番号をキーとしてインデックス付けを行ったもののインデックスを概念的に示している。この図中の「PNO」とは、データベースを記憶した記憶領域を所定の固定サイズのブロックに分割したそれぞれのブロックに付された番号であり、これをページ番号という。また、図中の「OID」(オブジェクトIDの略)とは、システムの使用者が操作(例えば、挿入、削除、更新等)することができる記憶領域内における最小単位のデータたるオブジェクトが記録されている記憶領域内のページのページ番号と、該ページにおいて該オブジェクトが記録されている順番(最初のものには「0」が付される。)と、によって構成され、例えば、ページ番号が27ページであり該当するオブジェクトが27ページの中で4番目に記録されている場合であればオブジェクトID(27,3)(順番は最初のものに「0」を付与するので、4番目のものには「3」が付与される。)になる。
【0003】
図15中、最も下のレベルがツリーの「葉」と呼ばれるもので、その中には複数のエントリが記録されている。ここではエントリは、インデックスのキーである社員番号の値(例えば、1012、1120、1183・・・・、1915、1920、2018・・・・、8450、8680、8730・・・・、9890)と、それぞれの社員番号の値(インデックスのキーの値)を持っているオブジェクトのOID(オブジェクトID)と、を有している。また、葉の中のエントリは、キーの値によってソートされている。
エントリが多くて1つの葉に収まらない場合は新しい葉が作られ、図15中、左の葉の中のエントリのキー値が右の葉のものより小さくなるように分配される。この時、1つ上のレベルに作成された「節」に、左の葉のキーの最大値よりも大きく右の葉のキーの最小値以下である境界値と、左右の葉に対応するページ番号と、が記録される(ツリーの1つの節または葉は、データベースの1つのページに対応する。)。
葉の数が増え、1つ上のレベルの節に境界値、ページ番号が収まらなくなった時は、同じレベルに新しい節が作られる。このとき、さらに1つ上のレベルに節が作られ、境界値と左右の節に対応するページ番号が記録される。これを繰り返すことで、ツリーのレベルは増えて行く。
【0004】
このように形成されたインデックスを使用して条件検索を行う時は、ツリーの最も上のレベルの節(この最も上のレベルの節に対応する(該節を記録している)ページをインデックスルートページまたはルートページという。)から、検索する条件値と各節に記録されているキーの値とを大小比較しながらツリーを下方向に辿り、条件を満たす葉の中のエントリを探し出す。そして条件を満たすエントリを見つければ、その中にはキー値を実際に持っているオブジェクトのOID(オブジェクトID)が記録されているので、そのOID(オブジェクトID)が示すオブジェクトを取り出すことで検索条件を満たすオブジェクトを取り出すことができる。
このようにインデックスを使用して条件検索を行う場合、インデックスがないときであれば必要となる、条件値と全てのオブジェクトが有する値との比較を行う必要がないので、高速に条件検索を行うことができる。
【0005】
図16に、このようにインデックス付け(図15に示すようなインデックスを形成すること)がされたデータベースを概念的に示した。図16は、中央部分のデータベースサーバよりも上方に利用者にとってのデータ構造(例えば、コンピュータの画面に表示されるデータ)を示し、データベースサーバよりも下方にデータベースファイルの内部構造を示した。
ここではある会社の社員それぞれについて、社員番号と氏名と入社年月日とを記憶したデータベースが構築されており、利用者は、その内容を図16のデータベースサーバよりも上方に示すような表(社員テーブル)の形式で出力させ利用することができるようになっている。
データベースファイルの内部構造においては、まず、データベースの記憶領域が所定の固定サイズのブロックに分割され、その分割された各ブロックをページと呼び、各ページには0、1、・・・、30、31、32、33、34、・・・のようにページ番号が付されている。そして、ページ番号30(ページ30)には、「社員テーブル」という名称に加え、その社員テーブルに収容されるデータ(具体的には、各社員の社員番号、氏名、入社年月日)が記憶されているページ番号である32、33が記憶されている。加えて、ページ32及びページ33には、各社員の具体的データ(社員番号、氏名、入社年月日)が1のオブジェクトを構成して記憶されている。
また、ページ34等には、図15に示したようなインデックスが記憶されており、該インデックスのキーに関して検索をする場合には、前述したように、インデックスルートページに記憶されているツリーの最も上のレベルの節から、検索する条件値と各節に記録されているキーの値とを大小比較しながらツリーを下方向に辿り、条件を満たす葉の中のエントリを探し出し、そして条件を満たすエントリが有するOID(オブジェクトID)が示すオブジェクトを取り出すことで検索を行う。
【0006】
ところで、図16に示したデータベースに、各社員が所属する部署名を併記すると図17(a)のようになる。しかしこのとき、部署名や部署番号を変更するような場合には変更に係る社員それぞれの欄を変更する必要があることや、ある部署(例えば、総務部)に属する社員の情報を取り出したいような場合には図17(a)の部署番号または部署名の項目をキーとしてインデックス付けを行う必要があること等から、多くの場合、図17(b)のようなテーブルを作成することが行われている。
【0007】
【発明が解決しようとする課題】
ここで図17(b)のようなテーブルを作成した場合、社員全員の中から所定の入社日の者の情報を取り出したい場合には、入社日をキーとしてインデックス付けを行わなければならない。
しかしながら、インデックス付けを行う従来の情報管理装置では、インデックス付けを行うオブジェクトの指定は、インデックス付けのキーとなる項目を持つオブジェクトが直接格納された1のテーブルに属するオブジェクト全部といった指定ができるものしかなかった。
従って、図17(b)のテーブルは、図18に示すように3の社員テーブル((総務部)社員テーブル、(営業部)社員テーブル、(製造部)社員テーブル)を格納してなるから、該3の社員テーブルそれぞれに属するオブジェクトにインデックス付け(図18に示すように、総務部社員入社日インデックス、営業部社員入社日インデックス、製造部社員入社日インデックス)を行う必要がある(前記したように、インデックス付けのキーとなる項目たる入社日を持つオブジェクトが直接格納されたテーブルは、ここでは(総務部)社員テーブル、(営業部)社員テーブル、(製造部)社員テーブルである。)。
【0008】
このように各テーブルそれぞれに属するオブジェクトにインデックス付けを行うことは、インデックス付けを行うオブジェクトの指定を煩雑にし(実際の情報管理装置に見られるように複雑な情報を管理する場合、多数のテーブルが存することから、かかる指定はたいへん煩雑になる。)、該指定を誤ることもある。そして、全体について検索する場合には、付された各インデックスの全てを検索する必要があることから、検索時間を増加させる問題もあった。
そこで、本発明では、各テーブルに共通したインデックス付けを、単一のオブジェクト指定により可能ならしめる情報管理装置を提供することを目的とする。
【0009】
【課題を解決するための手段】
本発明の情報管理装置(以下、「本装置」という。)は、先祖データから下位に位置する子孫データへと辿ることができるよう親データにその子データを特定する子特定データが関係付けられた階層構造データにインデックス付けを行う情報管理装置であって、該階層構造データを、その各構成データが記憶されている記憶位置を含むデータ特定データに関連付けて記憶するデータ記憶手段と、これからインデックス付けを行う子孫データに対する先祖データのデータ特定データたる先祖特定データと、該先祖特定データにより特定される先祖データから該インデックス付けを行う子孫データの親データまでの階層差と、を受け付けるインデックス定義情報受付手段と、該先祖特定データに従って該先祖データを該データ記憶手段において特定し、該受け付けられた階層差が0でなければ該特定された先祖データから該階層差の分の下位の子孫データまで該子特定データに従って辿り該下位の子孫データの子データの少なくとも一部の内容にインデックス付けを行う、インデックス付け手段と、を備えてなる、情報管理装置である。
なお、「階層構造」とは、全てのデータが包含関係により関係付けられている構造である。また、包含関係における含む側を親、含まれる側を子とした時に、親、親の親、さらにその親など親を辿ることだけでたどり着くことのできる関係を「先祖」、そして、子、子の子、さらにその子など、子を辿ることだけで辿り着くことのできる関係を「子孫」と呼ぶ。そして「階層差」とは、階層構造データにおける含む側と含まれる側、即ち親と子の間に1生じると考えられる、データ間の関係を表す相対的な数値である。
【0010】
こうすることで、インデックス定義情報受付手段が、これからインデックス付けを行う子孫データに対する先祖データのデータ特定データたる先祖特定データ(該先祖データがデータ記憶手段において記憶されている記憶位置を含む。)と、該先祖特定データにより特定される先祖データから該インデックス付けを行う子孫データの親データまでの階層差と、を受け付ける。
そして、インデックス付け手段が、該先祖特定データに従って該先祖データを該データ記憶手段において特定し(データ記憶手段は、該階層構造データを、その各構成データが記憶されている記憶位置を含むデータ特定データに関連付けて記憶しているので、インデックス付け手段は、記憶位置を含むデータ特定データたる先祖特定データによって該先祖データを該データ記憶手段において特定することができる。)、該受け付けられた階層差が0でなければ該特定された先祖データから該階層差の分の下位の子孫データまで該子特定データに従って辿り該下位の子孫データの子データの少なくとも一部の内容にインデックス付けを行う。従って、ある先祖データが有する子孫データのうち、指定された階層差の分だけ該先祖データから下位に位置する子孫データの子データに含まれる内容にインデックス付けを行うことができる。このためある共通した先祖データを有し、該先祖データから同じ階層差分だけ下位に位置する子孫データの子データに含まれる内容にインデックスを付ける場合では、本装置によれば、それぞれの子孫データをインデックス付けのオブジェクトが収容されているとしていちいち指定する必要がなく、該共通した先祖データとそこからの階層差とを指定することで全ての子孫データに共通したインデックス付けを行うことができる。即ち、本装置は、該共通した先祖データとそこからの階層差とを指定するという単一のオブジェクト指定により、複数または単数を問わず該先祖データから該階層差だけ下位の子孫データの子データ全てにインデックス付けを行うことができる。
【0011】
前記インデックス定義情報受付手段が、前記少なくとも一部の内容を特定するインデックス対象項目特定データをさらに受け付け、前記インデックス付け手段が、該受け付けられたインデックス対象項目特定データによって特定されるものにインデックス付けを行うものであってもよい。
本装置がインデックス付けを行う子孫データは複数の項目を含んでいる場合があり、かかる場合であれば該子孫データのいずれの項目にインデックス付けを行うかを指定してやる必要がある。そこで、本装置においては、インデックス定義情報受付手段が、前記少なくとも一部の内容(インデックス付けを行う項目)を特定するインデックス対象項目特定データをさらに受け付け、前記インデックス付け手段が、該受け付けられたインデックス対象項目特定データによって特定されるものにインデックス付けを行うようにすれば、インデックス付けを行う子孫データが複数の項目を含んでいてもいずれの項目にインデックス付けを行うかを指定し、円滑にインデックス付けを行うことができる。
【0012】
これから生成されるインデックスを特定するインデックス特定データを取得するインデックス特定データ取得手段と、前記インデックス付け手段が、前記受け付けられた階層差が0であれば前記特定された先祖データのデータ特定データと階層差が0であることを示す階層差データと該インデックス特定データ取得手段により該取得されたインデックス特定データとを関連付けてインデックス管理情報として記憶させ、一方、前記受け付けられた階層差が0でなければ前記特定された先祖データと前記階層差の分の下位の子孫データとの両データ及び該両データの間に存する中間データの各々のデータについて該各々のデータのデータ特定データと、前記階層差の分の下位の子孫データから該各々のデータまでの階層差をあらわす階層差データと、該インデックス特定データ取得手段により該取得されたインデックス特定データと、を関連付けてインデックス管理情報として記憶させるインデックス管理情報記憶手段と、を、さらに備えてなるもの(以下、「インデックス管理情報記憶の本装置」という。)であってもよい。
【0013】
こうすることで前記下位の子孫データの子データの少なくとも一部の内容にインデックス付けを行う際(インデックス付けの前後を問わない)にインデックス付け手段が新しく付けられるまたは新しく付けられたインデックスの内容をインデックス管理情報としてインデックス管理情報記憶手段に記憶させることができる。ここにインデックス管理情報は、前記受け付けられた階層差が0であれば前記特定された先祖データのデータ特定データと階層差が0であることを示す階層差データと該インデックス特定データ取得手段により該取得されたインデックス特定データとを関連付けたものであり、一方、前記受け付けられた階層差が0でなければ前記特定された先祖データと前記階層差の分の下位の子孫データとの両データ及び該両データの間に存する中間データの各々のデータについて該各々のデータのデータ特定データと、前記階層差の分の下位の子孫データから該各々のデータまでの階層差をあらわす階層差データと、該インデックス特定データ取得手段により該取得されたインデックス特定データと、を関連付けたものである。このようなインデックス管理情報がインデックス管理情報記憶手段に記憶されることで、インデックスに管理された全てのデータに関して、インデックス特定データ取得手段により該取得されたインデックス特定データ(即ち、インデックスそれぞれを一義に特定するためのデータ)と、そのインデックス特定データによって特定されるインデックスの管理対象となるデータの前記データ記憶手段における記憶位置を含むデータ特定データと、そのインデックス特定データによって特定されるインデックスの中でインデックスの前記階層差の分の下位の子孫データ(即ち、該インデックスの最下の階層に位置するデータ)から該各々のデータまでの階層差をあらわす階層差データと、の情報を得ることができるので、各インデックスそれぞれについてどの階層のデータがどこに記憶されているかを知ることができる。これら各インデックスそれぞれについてどの階層のデータがどこに記憶されているかを知ることで、前記階層構造データにオブジェクトを追加する等のようにインデックスの管理に影響を与え得ることを行う際にインデックスの管理を変更する必要があるか否かそしてその必要がある際に迅速かつ確実に行うことができる。
【0014】
インデックス管理情報記憶の本装置の場合、前記階層構造データに追加する新規データと、前記階層構造データにおいて該新規データを子データとして格納すべき親データのデータ特定データである格納先特定データと、該新規データがさらに子データを格納するか否かを示す種別データと、を受け付ける追加情報受付手段と、該格納先特定データに示される親データの子データとして該新規データを記憶し、該記憶された新規データのデータ特定データを追加位置データとして取得する新規データ書き込み手段と、該格納先特定データと合致するデータ特定データを有する前記インデックス管理情報を前記インデックス管理情報記憶手段から読み出し、該読み出されたインデックス管理情報に含まれる階層差データが0か否か判断するインデックス管理判断手段と、該インデックス管理判断手段によって階層差データが0と判断された場合に該読み出されたインデックス管理情報に含まれる前記インデックス特定データが示すインデックスに、該記録した新規データに含まれる少なくとも一部の内容にインデックス付けするインデックス挿入手段と、該インデックス管理判断手段によって階層差データが0でなくかつ該種別データが該新規データがさらに子データを格納することを示すものであればデータ特定データとして該追加位置データと前記階層差データとして該階層差データから1減じたものと該読み出した情報に含まれるインデックス特定データとを関連付けて前記インデックス管理情報として前記インデックス管理情報記憶手段に記憶させるインデックス管理情報追加手段と、をさらに備えるものであってもよい。
【0015】
こうすることで追加情報受付手段が、前記階層構造データに追加する新規データと、前記階層構造データにおいて該新規データを子データとして格納すべき親データのデータ特定データである格納先特定データと、該新規データがさらに子データを格納するか否かを示す種別データと、を受け付ける。
そして、新規データ書き込み手段が、該格納先特定データに示される親データの子データとして該新規データを記憶し、該記憶された新規データのデータ特定データ(前記データ記憶手段における新規データの記憶位置を含むデータ)を追加位置データとして取得する。
さらに、インデックス管理判断手段が、該格納先特定データと合致するデータ特定データを有する前記インデックス管理情報を前記インデックス管理情報記憶手段から読み出し(該格納先特定データと合致するデータ特定データを有する前記インデックス管理情報が前記インデックス管理情報記憶手段に記憶されていれば、該新規データはインデックス管理の対象であることがわかる。)、該読み出されたインデックス管理情報に含まれる階層差データが0か否か判断する。
【0016】
そして、該インデックス管理判断手段によって階層差データが0と判断された場合(即ち、前記新規データが、インデックスのキー項目に該当するものと判断される。)には、インデックス挿入手段が該読み出されたインデックス管理情報に含まれる前記インデックス特定データが示すインデックスに、該記録した新規データに含まれる少なくとも一部の内容をインデックス付けする。
また、インデックス管理情報追加手段は、該インデックス管理判断手段によって階層差データが0でなく(これによりインデックスのキー項目に該当するものが該記録した新規データに含まれていないことがわかる。)かつ該種別データが該新規データがさらに子データを格納することを示すもの(その後、該記録した新規データに子孫データが付け加えられて、最終的には、該記録した新規データの子孫データにインデックスのキー項目に該当するものが含まれる可能性があると判断される。なお、このようにさらに子データを格納することができるデータをテーブルデータまたはテーブルという。)であれば、データ特定データとして該追加位置データと前記階層差データとして該階層差データから1減じたものと該読み出した情報に含まれるインデックス特定データとを関連付けて前記インデックス管理情報として前記インデックス管理情報記憶手段に記憶させる。このためインデックスのキー項目に該当するものが該記録した新規データに含まれておらず、かつ該記録した新規データに、インデックスのキー項目に該当するものが含まれる可能性がある子孫データが付け加えられる可能性があるものは、該追加位置データと前記階層差データとして該階層差データから1減じたもの(該記録した新規データは、格納した親データの階層の1つ下の階層になる。)と該読み出した情報に含まれるインデックス特定データとを関連付けて前記インデックス管理情報として前記インデックス管理情報記憶手段に記憶させるので、どの階層でどこのインデックスに属す可能性があるデータがどこに記憶されているかを記憶し、階層構造データにオブジェクトを追加する等のようにインデックスの管理に影響を与え得ることを行う際にインデックスの管理を変更する必要があるか否かそしてその必要がある際に迅速かつ確実に行うことができる。
【0017】
本装置は、所定のプログラムをコンピュータに実行させることで実現させることができ、さらに、かかるプログラムはコンピュータ読み取り可能な記憶媒体に記録することができる。
【0018】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。しかしながら、これらによって本発明は何ら制限されるものではない。
【0019】
図1は、一実施形態の本システム101のハードウエア構成を示す概略ブロック図である。図1を参照して、一実施形態の本システム101のハードウエア構成について説明する。本システム101は、ある会社の社員情報を管理する情報管理システム(情報管理装置)であり、他の端末から要求を受けてデータの追加や検索等を行うデータベースサーバーとして機能する。
本実施形態では、本システム101は、プログラムを内蔵させたコンピュータとそれに接続されたキーボード113、モニタ115及び大容量のハードディスク119とを含んでなる。
本システム101は、演算処理を行うCPU110a、CPU110aの作業領域等となるRAM110b、制御プログラム等を記録するROM110c、情報を入力するためのキーボード113と、情報等を表示するためのモニタ115と、情報等を記憶するための大容量のハードディスク119と、キーボード113、モニタ115及びハードディスク119と情報のやり取りを行うためのインターフェイス110dと、を有する。なお、ここでは制御プログラム等はROM110cに記憶されているが、ハードディスク119に記憶するようにしてよいことは言うまでもない。また、ここではLAN(Local Area Network)117を経由して、本システム101は、他の情報端末から自由にアクセスされることができるようになっている。もっとも本システム101が他の情報端末から自由にアクセスされるために用いる通信回線は、ここで用いたLAN等に限定されるものではなく、本システム101が他の情報端末との間でデータ授受を行うことができるものであればいかなるものが用いられてもよく、例えば、電話回線やインターネット通信網等のような通信回線を用いてよいことは言うまでもない。
【0020】
図2に、図1のハードウエアと主としてROM110cに記録されるプログラムにより実現される本システム101の機能ブロック図を示す。本システム101は、機能的には、大まかには要求受信部201とインデックス定義部301とオブジェクト格納部401とインデックス検索部501と閲覧部601とデータ記憶部701とによって構成されている。なお、図1に示した大容量のハードディスク119がデータ記憶部701を構成しており、図1に示したキーボード113及びモニタ115は図2中示していないが、それぞれ本システム101に情報を入力することや本システム101の情報を表示することを自由に行うことができるようになっている。
なお、要求受信部201は、図示しない他の情報端末から本システム101のいずれの機能を選択するかをLAN117を経由して受け付け該選択された機能を発揮するように本システム101を機能させるものであり、具体的には、該選択された機能に従ってインデックス定義部301、オブジェクト格納部401、インデックス検索部501及び閲覧部601のいずれかを起動させる起動信号をこれらに発するものである。そして、インデックス定義部301は、データ記憶部701に記憶され又はこれから記憶されるデータを迅速に検索するため該記憶されるデータにインデックス付け(インデックス作成)をどのように行うかを入力するものである。さらに、オブジェクト格納部401は、新しいデータをデータ記憶部701に記憶させるものである。また、インデックス検索部501は、データ記憶部701に記憶されているデータを検索し出力するものである。そして、閲覧部601は、図示しない他の情報端末がLAN117を経由してデータ記憶部701に記憶されているデータを自由に閲覧することができる(これによって、データが記憶されている後述のオブジェクトIDを知ることができる。)ように該図示しない他の情報端末とデータ記憶部701との間でデータの授受を行わしめるものである。なお、データ記憶部701は、社員情報等のデータやインデックス付け(インデックス作成)に関するデータ等を記憶するものである。
【0021】
そして、データ記憶部701ではB−Tree又はR−Treeのいずれかの構造を有するインデックス付け(インデックス作成)がなされたデータ構造を有するデータベースが形成される。なお、B−Tree又はR−Treeのいずれかの構造を有するインデックス定義がなされたデータ構造については、既知の技術(例えば、「B−Tree」については、日経BP社発行の「日経BPデジタル大辞典2000−2001年版」693頁に掲載されている。また、「R−Tree」については、(1)著者:Antonin Guttman,表題:R-Trees: A Dynamic Index Structure for Spatial Searching.学会会議名と、その議事録(論文誌)における上記論文の掲載ページ:Proceedings of the ACM SIGMOD Conference 1984: pp.47-57、(2)著者:Norbert Beckmann, Hans-Peter Kriegel, Ralf Schneider,Bernhard Seeger,表題:The R*-Tree: An Efficient and Robust Access Method for Points and Rectangles.学会会議名と、その議事録(論文誌)における上記論文の掲載ページ:Proceedings of the ACM SIGMOD Conference 1990: pp.322-331、(3)著者:Marcel Kornacker, Douglas Banks,表題:High-Concurrency Locking in R-Trees.学会会議名と、その議事録(論文誌)における上記論文の掲載ページ:Proceedings of the VLDB Conference 1995: pp.134-145、等に記載されている。)であるのでここでは説明を省略する。
【0022】
まず、要求受信部201について説明する。
図3は、要求受信部201を詳細に示した機能ブロック図である。図3を参照して、要求受信部201について説明する。要求受信部201は、本システム101のいずれの機能を選択するかを決するものであり、要求信号受信部203と起動信号送信部205とを含んでいる。
第1に、本システム101が起動された状態において、LAN117を経由して図示しない他の情報端末から本システム101がアクセスされると、それを要求信号受信部203が認識し、本システム101の起動画面を表示する信号を該図示しない他の情報端末に要求信号受信部203は送信する。この起動画面には、「1、インデックス付け(インデックス作成)」、「2、オブジェクト追加」、「3、検索」、「4、閲覧」の4項目が表示されるようになっており、該図示しない他の情報端末の使用者が該図示しない他の情報端末を介して(無論、LAN117を経由する。)「1」、「2」、「3」、「4」のいずれかの信号を要求受信部201に入力することで本システム101の所望の機能を発揮させることができるようになっている。即ち、該図示しない他の情報通信端末の使用者が、「1」、「2」、「3」、「4」のいずれかの信号を入力するとそれを要求受信部201の要求信号受信部203が受信し、さらにその受信した信号を要求信号受信部203が(要求受信部201の)起動信号送信部205へ送信する。かかる「1」、「2」、「3」、「4」のいずれかの信号を要求信号受信部203から受信した起動信号送信部205は、受信した信号の種類を認識し、それが「1」であればインデックス定義部301(インデックス定義情報受信部311)に起動信号を発し、それが「2」であればオブジェクト格納部401(オブジェクト情報受信部411)に起動信号を発し、それが「3」であればインデックス検索部501(検索情報受信部511)に起動信号を発し、それが「4」であれば閲覧部601に起動信号を発する。
なお、ここでは前記図示しない他の情報端末の使用者が該図示しない他の情報端末を介して「1」、「2」、「3」、「4」のいずれかの信号を要求受信部201に入力することで本システム101の所望の機能を選択し発揮させるようになっているが、本システム101がいずれの機能が選択されたかを認識できればいかなる信号が要求受信部201に入力されるものであって良いことは言うまでもない。更に、本システム101は、ここでは本発明に関係する「1、インデックス付け(インデックス作成)」、「2、オブジェクト追加」、「3、検索」、「4、閲覧」の4の機能を有しているが、これ以外の機能を有するものであってよいことは言うまでもない。
【0023】
まず、閲覧部601について説明する。
起動信号送信部205から起動信号を受信した閲覧部601は、前記図示しない他の情報端末がLAN117を経由してデータ記憶部701に記憶されているデータを自由に閲覧することができるように前記図示しない他の情報端末とデータ記憶部701との間で自由にデータの授受を行うことができるようにデータ授受の仲介を行う(図2を参照されたい)。このように閲覧部601が前記図示しない他の情報端末にデータ記憶部701の記憶内容を自由に閲覧させることによって、前記図示しない他の情報端末の使用者は、データ記憶部701に記憶されている内容とその記憶されている位置を知ることができる。
なお、本システム101においては、データ記憶部701における記憶位置を示す概念として「オブジェクトID」を用いる。「オブジェクトID」は、システムの使用者が操作(例えば、挿入、削除、更新等)することができる記憶領域内における最小単位のデータたるオブジェクトが記録されている記憶領域内のページの番号(ページ番号)と、該ページにおいて該オブジェクトが記録されている順番(最初のものには「0」が付される。)と、によって構成され、例えば、ページ番号が27ページであり該当するオブジェクトが27ページの中で4番目に記録されている場合であればオブジェクトID(27,3)(順番は最初のものに「0」を付与するので、4番目のものには「3」が付与される。)になる。また、ここにいう「ページ」とは、データ記憶部701における記憶領域を、所定の固定サイズのブロックに分割したそれぞれのブロックをいう。このようなオブジェクトIDを用いることで、記憶領域の先頭に対するデータの記録位置が一義に定まるため、データの入出力を迅速かつ確実に行うことができる。
【0024】
次いで、インデックス定義部301について説明する。
図4は、インデックス定義部301の詳細な機能ブロック図である。図4を参照して、インデックス定義部301について説明する。
インデックス定義部301は、機能的には、インデックス定義情報受信部311とインデックス番号生成部313とインデックス作成部315とインデックス情報書き込み部317とインデックス管理対象情報書き込み部319とオブジェクト情報読み出し部321とインデックス情報記憶部323と階層差記憶部325とオブジェクトID記憶部327とインデックスへのエントリ挿入部329とを有してなる。
【0025】
まず、ここでは部署を示すテーブル(以下、「部署テーブル」という。)と、それぞれの部に所属する社員のテーブル(以下、「社員テーブル」という。)と、がそれぞれデータ記憶部701(データ記憶手段)における記憶領域の別の位置に既に記憶されているものとする。
また、データ記憶部701における記憶領域には、前記した部署テーブル及び社員テーブルに加え、いくつかのシステムテーブルが記憶されている。システムテーブルとは、データベースを管理するための情報を格納しておくテーブルであり、データベース作成時にデータベースサーバーが作成し、データベースサーバだけが使用するものである。データベースを管理するための情報とは、利用者が作成したテーブル(部署テーブルと社員テーブル)に格納されるオブジェクトのフォーマット情報や、インデックス情報などデータベースの構造に関する情報である。システムテーブルの中で本発明に関係するのは、インデックス自身の情報(インデックス名やインデックスデータを記録しているページ番号など)を格納するための「SYS_INDICES」と、インデックスとその管理対象となるオブジェクトとの関係情報を格納するための「SYS_INDEXEDOBJS」の2つだけであるため、その他のシステムテーブルについては説明を省略する。
【0026】
データ記憶部701における記憶領域において、記録されている部署テーブルと社員テーブルとを模式的に示せば図5のようになる。
図5に示されたページ30には部署テーブルが記録されている。即ち、ページ30の最初(即ち、オブジェクトID(30,0))には部署テーブルが記録されており、その記録内容は、部署テーブルに格納されているオブジェクトが記録されているページのページ番号(32)である。
そして、ページ32には、3つの部署に対応して、各部署の情報と所属する社員の情報を持つ社員テーブルが記録されている。それぞれの記録内容は、部署番号「100」である「総務部」に所属する社員のデータ(「総務部」の社員テーブルに格納されているオブジェクト)はページ33に記録されており、部署番号「200」である「営業部」に所属する社員のデータ(「営業部」の社員テーブルに格納されているオブジェクト)はページ35に記録されており、そして部署番号「300」である「製造部」に所属する社員のデータ(「製造部」の社員テーブルに格納されているオブジェクト)はページ37に記録されていることを示している。
さらに、このページ32の各部署の社員テーブルに対応して、ページ33、35、37にはそれぞれ「総務部」、「営業部」、「製造部」に所属する社員のデータが記録されている。即ち、「総務部」に所属する社員のデータはページ33に記録されており、具体的に総務部に所属する社員は、「社員番号:5638、氏名:渡部一郎、入社日:1982年4月1日」、「社員番号:2326、氏名:山崎太郎、入社日:1983年4月1日」及び「社員番号:1892、氏名:上田次郎、入社日:1990年3月5日」の3人であることがわかる。同様に、「営業部」に所属する社員のデータはページ35に記録されており、具体的に営業部に所属する社員は、「社員番号:2391、氏名:川崎英男、入社日:1987年7月1日」、「社員番号:7938、氏名:山田三郎、入社日:1988年8月9日」、「社員番号:5234、氏名:大田良男、入社日:1990年2月5日」及び「社員番号:4212、氏名:多原幸男、入社日:1993年10月5日」の4人であることがわかる。最後に、「製造部」に所属する社員のデータはページ37に記録されており、具体的に製造部に所属する社員は、「社員番号:1039、氏名:石田一子、入社日:1980年9月1日」及び「社員番号:3929、氏名:笠原英俊、入社日:1987年4月1日」の2人であることがわかる。
【0027】
データ記憶部701における記憶領域において、記録されているシステムテーブル「SYS_INDICES」と「SYS_INDEXEDOBJS」とを模式的に示せば図13のようになる。
図13に示されたページ6には、「SYS_INDICES」と「SYS_INDEXEDOBJS」が記録されている。ここでは、他のシステムテーブル(本発明とは直接関係ないので説明は省略する。)に続いて、それぞれ7番目、8番目に記録されているものとする。即ち、ページ6の7番目(即ち、オブジェクトID(6,6))には「SYS_INDICES」が記録されており、その記録内容は、「SYS_INDICES」に格納されるオブジェクトが記録されるページのページ番号(14)である。また、ページ6の8番目(即ち、オブジェクトID(6,7))には「SYS_INDEXEDOBJS」が記録されており、その記録内容は、「SYS_INDEXEDOBJS」に格納されるオブジェクトが記録されるページのページ番号(16)である。
そして、ページ14には、ページ6の「SYS_INDICES」に格納される「インデックスの情報」が記録される。また、ページ16には、ページ6の「SYS_INDEXEDOBJS」に格納される「インデックスとその管理対象となるオブジェクトとの関係情報」が記録される。しかし、現時点ではインデックスは1つも定義されていないものとし、この場合はページ14、ページ16は空の状態となっている。
【0028】
以上説明した状態において、起動信号送信部205から起動信号を受信したインデックス定義情報受信部311(インデックス定義情報受付手段)は、LAN117を経由して直接データを送受信することができる状態になり、まず、インデックス定義情報の入力フォーマットをLAN117を経由して前記図示しない他の情報端末に送信し入力を促す。インデックス定義情報の入力フォーマットには、インデックス名、保有元テーブルのオブジェクトID(先祖特定データ)、B−Tree/R−Treeの別、階層差(先祖特定データにより特定される先祖データからインデックス付けを行う子孫データの親データまでの階層差)及びキーに対応する項目(インデックス対象項目特定データ)の5項目が存しており、該入力フォーマットを受信した前記図示しない他の情報端末は、これらの項目に該当するデータを受け付けた後、受け付けたデータをインデックス定義情報受信部311へ送信する。この前記図示しない他の情報端末からインデックス定義情報受信部311へ送信されたインデックス定義情報の一例を表1に示す。
なお、表1の項目のうち、インデックス名はこれからインデックス付け(インデックス作成)を行おうとするインデックスを示す名称であり任意に設定することができ、保有元テーブルのオブジェクトIDは、次に示す(1)または(2)の条件を満たすオブジェクトの中から、インデックスを定義する時の「階層差」の基準として任意に選んだオブジェクトのオブジェクトIDである。即ち、(1)インデックス付けを行うオブジェクトが格納されている全てのテーブルの共通の先祖であるテーブルオブジェクト、(2)1つのテーブルのみに格納されているオブジェクトにインデックス付けを行う時はそのテーブル自身であるオブジェクト、である。そして、ここでは、保有元テーブルのオブジェクトIDは、図5に示したように部署テーブルのオブジェクトIDたる(30,0)とされている。また、B−Tree/R−Treeの別はこれからインデックス付け(インデックス作成)を行おうとするインデックスの構造をB−TreeとR−Treeとのいずれにするかを決するものであり(ここではB−Treeが指定されている。)、階層差は、指定した保有元テーブル(ここでは部署テーブル(30,0))に対してインデックス付けを行うオブジェクトが格納されたテーブル(ここでは社員テーブル(32,0)、(32,1)、(32,2))が幾つ階層が下になるかを示しており、キーに対応する項目は、インデックス付けを行うオブジェクト(ここではページ33、35及び37に記録されているもの)の、インデックスのキーに対応する項目の名前(ここでは入社日)である。
また、これらのうち保有元テーブルのオブジェクトID、階層差及びキーに対応する項目等のように、データ記憶部701における記憶データを参照しつつ決すべきものは、必要に応じ閲覧部601を通じて前記図示しない他の情報端末がデータ記憶部701の記憶内容を閲覧して決定される。
【0029】
(表1) インデックス定義情報の一例
・インデックス名:入社日インデックス
・保有元テーブルのオブジェクトID:(30,0)
・B−Tree/R−Treeの別:B−Tree
・階層差:1
・キーに対応する項目:入社日
【0030】
表1に示したようなインデックス定義情報を受信したインデックス定義情報受信部311(インデックス定義情報受付手段)は、該受信したインデックス定義情報全てをインデックス情報記憶部323へ送信しインデックス情報記憶部323に記憶させ、そして該受信したインデックス定義情報に含まれる保有元テーブルのオブジェクトID(ここでは(30,0))を抽出しオブジェクトID記憶部327へ送信しオブジェクトID記憶部327に記憶させ、さらにインデックス番号生成部313へ起動信号を発しインデックス番号生成部313を起動させる。
【0031】
インデックス定義情報受信部311から起動信号を受信したインデックス番号生成部313(インデックス特定データ取得手段)は、インデックス番号(インデックス特定データ)を決定し、該決定したインデックス番号をインデックス情報記憶部323に送信し、そして既にインデックス情報記憶部323が記憶しているインデックス定義情報に加え、該決定したインデックス番号をインデックス情報記憶部323に記憶させる。
なお、インデックス番号生成部313がインデックス番号を決定する方法は、次の如きである。即ち、後述するように、インデックス定義情報を含む情報はインデックス情報書き込み部317によってデータ記憶部701の記憶領域に記録されているシステムテーブル「SYS_INDICES」に格納されるので、インデックス番号生成部313は、この「SYS_INDICES」に格納されている情報に付されたインデックス番号を検索しこのインデックス番号のうち最大値に1を加えてインデックス番号を決定する(「SYS_INDICES」に格納されている情報がなければインデックス番号として「1」を決定する。なお、ここでは「1」を決定したものとして、後の説明を行う。)。これによって新しく作成されるインデックスにはこれまで付けられていなかったインデックス番号が付与されることになり、結果として、全てのインデックスとインデックス番号とは互いに一対一の対応関係を持つことになる。
その後、インデックス番号生成部313はインデックス作成部315に起動信号を発し、インデックス作成部315を起動させる。
【0032】
インデックス番号生成部313から起動信号を受信したインデックス作成部315は、インデックスデータを記録するためのインデックスルートページを、データ記憶部701の記憶領域(データ記憶部701が有する記憶領域全部をいう。)のうち現在記憶されている部分の後に続くように作成する(従って、図5に示すような内容がデータ記憶部701の記憶領域の末尾に記憶されていれば、インデックスルートページはページ番号「38」に作成される。)。なお、ここにいう「インデックスルートページ」とは、B−Tree又はR−Treeのツリー構造の根(最も上のレベルに位置する節)に該当する部分の情報を記録するページをいい、さらに、インデックスルートページの作成とは、具体的には、データベースファイルを1ページのサイズだけ拡張し、その拡張した領域をインデックスを構成するページとして初期化する(エントリ数が0であるインデックスページとする)ことをいう。
そして、インデックス作成部315は、作成したインデックスルートページのページ番号(ここでは「38」)をインデックス情報記憶部323に送信し、そして既にインデックス情報記憶部323が記憶しているインデックス定義情報とインデックス番号に加え、インデックスルートページのページ番号をインデックス情報記憶部323に記憶させる。
この時点におけるインデックス情報記憶部323に記憶されている内容を模式的に表2に示す。
その後、インデックス作成部315は、インデックス情報書き込み部317に起動信号を発し、インデックス情報書き込み部317を起動させる。
【0033】
(表2) インデックス情報記憶部323に記憶されている内容の一例
・インデックス名:入社日インデックス
・保有元テーブルのオブジェクトID:(30,0)
・B−Tree/R−Treeの別:B−Tree
・階層差:1
・キーに対応する項目:入社日
・インデックス番号:1
・インデックスルートページ番号:38
【0034】
インデックス作成部315から起動信号を受信したインデックス情報書き込み部317は、インデックス情報記憶部323に記憶されている情報(上記した表2に示す情報)をインデックス情報記憶部323から読み出し取得し、該取得した情報(表2)をデータ記憶部701のシステムテーブル「SYS_INDICES」に書き込む。
そして、インデックス情報書き込み部317は、該取得した情報(表2)に含まれる「階層差」(ここでは「1」)を階層差記憶部325に送信し階層差記憶部325に記憶させる。
さらに、インデックス情報書き込み部317は、インデックス管理対象情報書き込み部319に起動信号を発し、インデックス管理対象情報書き込み部319を起動させる。
【0035】
インデックス情報書き込み部317から起動信号を受信したインデックス管理対象情報書き込み部319は、オブジェクトID記憶部327が記憶しているテーブルのオブジェクトID(ここではインデックス定義情報受信部311から受信し記憶したものであり、保有元テーブルのオブジェクトIDたる(30,0))と、インデックス情報記憶部323が記憶しているインデックス番号(ここでは「1」)を読み出し取得したインデックス番号(ここでは「1」)と、階層差記憶部325が記憶している階層差(ここでは「1」)を読み出し取得した階層差(ここでは「1」)と、を有する情報(インデックス管理情報)を作成すると共に、該作成された情報をデータ記憶部701のシステムテーブル「SYS_INDEXEDOBJS」に書き込む。具体的には、表3に示した情報をインデックス管理対象情報書き込み部319はシステムテーブル「SYS_INDEXEDOBJS」に書き込む。
【0036】
(表3) 「SYS_INDEXEDOBJS」への書き込み例
・テーブルのオブジェクトID:(30,0)
・インデックス番号:1
・階層差:1
【0037】
「SYS_INDEXEDOBJS」に前記情報(表3)を書き込んだインデックス管理対象情報書き込み部319は、該書き込んだ情報に含まれている階層差が「0」か否か判断し、「0」であればインデックスへのエントリ挿入部329へ起動信号を発しインデックスへのエントリ挿入部329を起動させ、「0」でなければ(0より大きい値であれば)オブジェクト情報読み出し部321へ起動信号を発しオブジェクト情報読み出し部321を起動させる。
なお、ここでは階層差「1」であり「0」でないので(0より大きい値であるので)、インデックス管理対象情報書き込み部319はオブジェクト情報読み出し部321へ起動信号を発しオブジェクト情報読み出し部321を起動させる。
【0038】
階層差が「0」でありインデックス管理対象情報書き込み部319から起動信号を受信したインデックスへのエントリ挿入部329は、まずオブジェクトID記憶部327が記憶しているテーブルのオブジェクトID(前記した例では保有元テーブルのオブジェクトIDたる(30,0)をオブジェクトID記憶部327が記憶しているが、これは表2に示すように、階層差「1」であるので、前記した例では階層差が「0」と判断されることはない。)を読み出し取得し、該取得したテーブルのオブジェクトIDが指すテーブル(以下、「処理対象テーブル」という。)に格納されている(含まれる)全てのオブジェクトについて、それぞれに対応するエントリ(該オブジェクトのオブジェクトIDと「キーに対応する項目」の値との組)をインデックスに挿入する。なお、インデックスへのエントリ挿入部329は、処理対象テーブルをデータ記憶部701にアクセスして読み出し、該読み出した処理対象テーブルに格納されている(含まれている)オブジェクトに含まれる「キーに対応する項目」に相当する値を用いて該エントリを作成することができる。
なお、該エントリをインデックスに挿入する方法は、一般的なB−Tree又はR−Treeの構築動作に従って行うことができるので、ここでは説明を省略する(また、該エントリをインデックスに挿入する際に必要となるインデックスに関する情報は、インデックスへのエントリ挿入部329がインデックス情報記憶部323へ適宜アクセスして読み出し取得すればよい。)。
【0039】
階層差が「0」でなくインデックス管理対象情報書き込み部319から起動信号を受信したオブジェクト情報読み出し部321は、まず階層差記憶部325にアクセスし階層差記憶部325が記憶している階層差の値から1を減じた数を階層差として階層差記憶部325に上書きして記憶させる(即ち、これによって階層差記憶部325が記憶している階層差が「1」減少する。従って、上記した例では階層差記憶部325に階層差「1」が記憶されているので、それから1を減じた数「0」が階層差として階層差記憶部325に上書きされ記憶される。)。次いで、オブジェクト情報読み出し部321は、オブジェクトID記憶部327が記憶しているテーブルのオブジェクトID(ここでは保有元テーブルのオブジェクトID(30,0))を読み出し取得し、該取得したテーブルのオブジェクトID(ここでは(30,0))が指すテーブル(以下、「処理対象テーブル」という。)に格納されている全てのオブジェクトを1つずつ順次読み出す。そして、それぞれのオブジェクトに記録されている「種別」(そのオブジェクトがテーブルオブジェクトであるか否か)の内容を判定し、テーブルオブジェクトでは無い場合は処理対象テーブルに格納されている次のオブジェクトを読み出す。テーブルオブジェクトである場合は次の処理(以下、「処理B」という。)を行う。即ち、処理Bにおいて、オブジェクト情報読み出し部321は、処理対象テーブルに格納されているこれから処理しようとするテーブルオブジェクトのオブジェクトIDをオブジェクトID記憶部327に記憶させる(このことは、これから処理しようとするテーブルオブジェクトが「処理対象テーブル」になることを示す。)。なお、このとき必要となる該これから処理しようとするテーブルオブジェクトのオブジェクトIDは、オブジェクト情報読み出し部321がオブジェクトID記憶部327に記憶されているオブジェクトIDに該当するテーブルを読み出すことで、そのテーブルに格納されているオブジェクトのページ番号(子特定データ)を取得し、そのページ番号のページに記録されているオブジェクトを読み込んでゆくことで、該テーブルに格納されているオブジェクトのオブジェクトID及びその内容を取得できる(例えば、図5の例では、オブジェクトID記憶部327に記憶されているオブジェクトIDたる(30,0)に該当するテーブル「部署テーブル(30,0)」を読み出すことで、そのテーブル「部署テーブル(30,0)」に格納されているオブジェクトのページ番号(32)を取得し、そのページ番号(32)のページに記録されているオブジェクトを読み込んでゆくことで、該テーブル「部署テーブル(30,0)」に格納されているオブジェクトのオブジェクトID(32,0)、(32,1)、(32,2)及びその内容を取得することができる。)。その後、オブジェクト情報読み出し部321は、インデックス管理対象情報書き込み部319に起動信号を発し、インデックス管理対象情報書き込み部319を起動させる。
【0040】
オブジェクト情報読み出し部321から起動信号を受信したインデックス管理対象情報書き込み部319は、オブジェクトID記憶部327が記憶しているこれから処理しようとするテーブルオブジェクトのオブジェクトID(オブジェクト情報読み出し部321によって記憶させられたものであり、例えば、(32,0))と、インデックス情報記憶部323が記憶しているインデックス番号(ここでは「1」)を読み出し取得したインデックス番号(ここでは「1」)と、階層差記憶部325が記憶している階層差(ここでは「0」)を読み出し取得した階層差(ここでは「0」)と、を有する情報(インデックス管理情報)を作成すると共に、該作成された情報をデータ記憶部701のシステムテーブル「SYS_INDEXEDOBJS」に書き込む。
「SYS_INDEXEDOBJS」に前記情報(オブジェクト)を書き込んだインデックス管理対象情報書き込み部319は、該書き込んだ情報に含まれている階層差が「0」か否か判断し、「0」であればインデックスへのエントリ挿入部329へ起動信号を発しインデックスへのエントリ挿入部329を起動させ、「0」でなければ(0より大きい値であれば)オブジェクト情報読み出し部321へ起動信号を発しオブジェクト情報読み出し部321を起動させる。
なお、ここで階層差が「0」であり起動されたインデックスへのエントリ挿入部329は、既に前回説明した階層差が「0」でありインデックス管理対象情報書き込み部319から起動信号を受信したインデックスへのエントリ挿入部329の動作と同様の動作を行う。このとき前回と異なるのは、オブジェクトID記憶部327が記憶しているオブジェクトIDが1階層下のもの(例えば、(32,0))に置換されている点である。
また、ここで階層差が「0」でなく起動されたオブジェクト情報読み出し部321は、既に前回説明した階層差が「0」でなくインデックス管理対象情報書き込み部319から起動信号を受信したオブジェクト情報読み出し部321の動作と同様の動作を行う。このとき前回と異なるのは、階層差記憶部325が記憶している階層差の値が前回よりも1を減じた数となっていることと、オブジェクトID記憶部327が記憶しているオブジェクトIDが1階層下のもの(例えば、(32,0))に置換されていること、の2点である。
【0041】
以上が処理Bであり、かかる処理Bは、処理Bが開始される際にオブジェクトID記憶部327が記憶しているオブジェクトID(ここでは(30,0))が指すテーブル(処理対象テーブル)に従属している(格納されている)全てのテーブルオブジェクト(ここでは(32,0)、(32,1)及び(32,2))について行われる。
全ての処理Bが完了した後、オブジェクト情報読み出し部321は階層差記憶部325にアクセスし階層差記憶部325が記憶している階層差の値に1を加えた数を階層差として階層差記憶部325に上書きして記憶させる。
以上でインデックス定義部301の動作が終了する。
なお、ここではインデックス管理対象情報書き込み部319とオブジェクト情報読み出し部321と階層差記憶部325とオブジェクトID記憶部327とインデックスへのエントリ挿入部329とを含んで、インデックス付け手段が構成されている。
また、データ記憶部701(システムテーブル「SYS_INDEXEDOBJS」)が、インデックス管理情報記憶手段を構成している。
【0042】
上記した動作のうち、階層差が「0」でなくインデックス管理対象情報書き込み部319から起動信号を受信したオブジェクト情報読み出し部321の動作(処理Bを含む)について、以下、具体的に説明をしておく。
まず、オブジェクト情報読み出し部321は、階層差記憶部325にアクセスし階層差記憶部325が記憶している階層差(ここでは「1」)の値から1を減じた数(即ち、「0」)を階層差として階層差記憶部325に上書きして記憶させる。
そしてオブジェクト情報読み出し部321は、オブジェクトID記憶部327が記憶しているテーブルのオブジェクトID(ここでは(30,0))を読み出し取得し、該取得したテーブルのオブジェクトID(ここでは(30,0))が指すテーブル(処理対象テーブル)に従属している(格納されている)全てのテーブルオブジェクト(ここでは(総務部)社員テーブル、(営業部)社員テーブル及び(製造部)社員テーブル)について次の処理(処理B)を行う。即ち、オブジェクト情報読み出し部321は、処理対象テーブルたる部署テーブル(オブジェクトID:(30,0))に従属している(格納されている)全てのテーブルオブジェクトのうちこれから処理しようとするテーブルオブジェクトのオブジェクトID((32,0)、(32,1)及び(32,2)のいずれか)をオブジェクトID記憶部327に記憶させる。なお、このとき必要となる該これから処理しようとするテーブルオブジェクトのオブジェクトIDは、オブジェクト情報読み出し部321がデータ記憶部701にアクセスし、オブジェクトID記憶部327から読み出し取得したテーブルのオブジェクトID(30,0)に該当するテーブル(部署テーブル)から読み出し取得される(例えば、図5の例では、オブジェクトID記憶部327から読み出し取得したテーブルのオブジェクトID(30,0)に該当するテーブルは部署テーブルであり、この部署テーブル(30,0)を読み出すことで、そのテーブル「部署テーブル(30,0)」に格納されているオブジェクトのページ番号(32)を取得し、そのページ番号(32)のページに記録されているオブジェクトを読み込んでゆくことで、該テーブル「部署テーブル(30,0)」に格納されているオブジェクトのオブジェクトID(32,0)、(32,1)、(32,2)及びその内容を取得することができる。その後、オブジェクト情報読み出し部321は、インデックス管理対象情報書き込み部319に起動信号を発し、インデックス管理対象情報書き込み部319を起動させる。
【0043】
オブジェクト情報読み出し部321から起動信号を受信したインデックス管理対象情報書き込み部319は、オブジェクトID記憶部327が記憶しているこれから処理しようとするテーブルオブジェクトのオブジェクトID(例えば、(総務部)社員テーブルのオブジェクトIDたる(32,0))と、インデックス情報記憶部323が記憶しているインデックス番号(ここでは「1」)を読み出し取得したインデックス番号(ここでは「1」)と、階層差記憶部325が記憶している階層差(ここでは「0」)を読み出し取得した階層差(ここでは「0」)と、を有する情報(オブジェクト)を作成すると共に、該作成された情報をデータ記憶部701のシステムテーブル「SYS_INDEXEDOBJS」に書き込む。
「SYS_INDEXEDOBJS」に前記情報(オブジェクト)を書き込んだインデックス管理対象情報書き込み部319は、該書き込んだ情報に含まれている階層差が「0」か否か判断し、「0」であればインデックスへのエントリ挿入部329へ起動信号を発しインデックスへのエントリ挿入部329を起動させ、「0」でなければ(0より大きい値であれば)オブジェクト情報読み出し部321へ起動信号を発しオブジェクト情報読み出し部321を起動させる。
以下、同様にして、(総務部)社員テーブルのオブジェクトID(32,0)以外のもの((営業部)社員テーブルのオブジェクトID(32,1)と(製造部)社員テーブルのオブジェクトID(32,2))についても処理する。
このように(総務部)社員テーブル、(営業部)社員テーブル及び(製造部)社員テーブルのそれぞれを処理対象テーブルとしたときに、インデックス管理対象情報書き込み部319が「SYS_INDEXEDOBJS」に書き込む情報(上述した表3のような情報)は表4のようなものになる。
【0044】
(表4) 各社員テーブルを処理対象テーブルとしたときの「SYS_INDEXEDOBJS」への書き込み例
「(総務部)社員テーブル」を処理したとき
・テーブルのオブジェクトID:(32,0)
・インデックス番号:1
・階層差:0
「(営業部)社員テーブル」を処理したとき
・テーブルのオブジェクトID:(32,1)
・インデックス番号:1
・階層差:0
「(製造部)社員テーブル」を処理したとき
・テーブルのオブジェクトID:(32,2)
・インデックス番号:1
・階層差:0
【0045】
なお、表4から明らかなように、(総務部)社員テーブル、(営業部)社員テーブル及び(製造部)社員テーブルのそれぞれを処理対象テーブルとしたときには、階層差が「0」であるので、インデックス管理対象情報書き込み部319は、インデックスへのエントリ挿入部329へ起動信号を発しインデックスへのエントリ挿入部329を起動させ、各テーブル((総務部)社員テーブル、(営業部)社員テーブル、(製造部)社員テーブル)に収容されている全オブジェクト(各部に所属する全ての社員の情報、即ち、図5の例では、ページ33、35、37に記憶されている情報)について、オブジェクトIDと項目「入社日」の値の組がインデックスに挿入される。
【0046】
以上のように、インデックス定義部301によって、データ記憶部701のシステムテーブル「SYS_INDICES」と「SYS_INDEXEDOBJS」とには、具体的には、表5のような情報が記憶される。また、データ記憶部701における記憶領域において、記録されている「SYS_INDICES」と「SYS_INDEXEDOBJS」とを模式的に示せば図14のようになる。図14に示されたページ6の7番目(即ち、オブジェクトID(6,6))には「SYS_INDICES」が記録されており、ページ6の8番目(即ち、オブジェクトID(6,7))には「SYS_INDEXEDOBJS」が記録されている。そして、ページ14の1番目(即ち、オブジェクトID(14,0))には、「SYS_INDICES」に格納されている「インデックスの情報」が記録されている。その記録内容は、インデックス名「入社日インデックス」、保有元テーブルのオブジェクトID「(30,0)」のインデックスは、種別が「B−Tree」であり、保有元テーブルから「1」階層下のテーブルに格納されるオブジェクトの項目「入社日」の値を管理対象とし、インデックス番号は「1」で、インデックスルートページのページ番号は「38」であることを示している。さらに、ページ16には、インデックスとその管理対象となるオブジェクトとの関係情報が記録されている。具体的には、以下の(1)〜(4)の関係情報が、それぞれオブジェクトID(16,0)、(16,1)、(16,2)、(16,3)として記録されている。即ち、(1)インデックス番号「1」のインデックスは、オブジェクトIDが「(30,0)」のテーブルの「1」階層下のテーブルに格納されるオブジェクトを管理対象とする、(2)インデックス番号「1」のインデックスは、オブジェクトIDが「(32,0)」のテーブルの「0」階層下のテーブル(即ち、オブジェクトIDが「(32,0)」のテーブル)に格納されるオブジェクトを管理対象とする、(3)インデックス番号「1」のインデックスは、オブジェクトIDが「(32,1)」のテーブルの「0」階層下のテーブル(即ち、オブジェクトIDが「(32,1)」のテーブル)に格納されるオブジェクトを管理対象とする、(4)インデックス番号「1」のインデックスは、オブジェクトIDが「(32,2)」のテーブルの「0」階層下のテーブル(即ち、オブジェクトIDが「(32,2)」のテーブル)に格納されるオブジェクトを管理対象とする、という以上4つの関係情報である。ただし、図14中のページ16の4つの関係情報は、「テーブルのオブジェクトID」、「インデックス番号」、「階層差」の順にデータが記録されている。
【0047】
(表5)「SYS_INDICES」と「SYS_INDEXEDOBJS」との記憶内容
(a)「SYS_INDICES」
・インデックス名:入社日インデックス
・保有元テーブルのオブジェクトID:(30,0)
・B−Tree/R−Treeの別:B−Tree
・階層差:1
・キーに対応する項目:入社日
・インデックス番号:1
・インデックスルートページ番号:38
(b)「SYS_INDEXEDOBJS」
・テーブルのオブジェクトID:(30,0)
・インデックス番号:1
・階層差:1
・テーブルのオブジェクトID:(32,0)
・インデックス番号:1
・階層差:0
・テーブルのオブジェクトID:(32,1)
・インデックス番号:1
・階層差:0
・テーブルのオブジェクトID:(32,2)
・インデックス番号:1
・階層差:0
【0048】
さらに、オブジェクト格納部401について説明する。
図6は、オブジェクト格納部401の詳細な機能ブロック図である。図6を参照して、オブジェクト格納部401について説明する。
オブジェクト格納部401は、機能的には、オブジェクト情報受信部411とテーブルオブジェクト読み出し部413とオブジェクト作成・格納部415とインデックス管理対象情報読み出し部417とインデックス管理対象情報書き込み部419とオブジェクト情報記憶部421とページ番号記憶部423とオブジェクトID記憶部425とインデックス情報記憶部427と階層差記憶部429とインデックス情報読み出し部431とインデックスへのエントリ挿入部433とを有して構成されている。
【0049】
起動信号送信部205から起動信号を受信したオブジェクト情報受信部411(追加情報受付手段)は、LAN117を経由して直接データを送受信することができる状態になり、まず、オブジェクト情報(新しく追加する情報)の入力フォーマットをLAN117を経由して前記図示しない他の情報端末に送信し入力を促す。オブジェクト情報の入力フォーマットには、種別、項目のデータ、格納先となるテーブルのオブジェクトIDの3項目が存しており、該入力フォーマットを受信した前記図示しない他の情報端末は、これらの項目に該当するデータを受け付けた後、受け付けたデータをオブジェクト情報受信部411へ送信する。この前記図示しない他の情報端末からオブジェクト情報受信部411へ送信されるオブジェクト情報の一例を表6及び表7に示す。
なお、表6では、図5に示された「部署テーブル」(オブジェクトID(30,0))に、新たに「企画部」の情報を収納するための情報を示す。また、総務部に新しく配属された者の情報を収納するための情報を表7に示す。
【0050】
(表6) オブジェクト情報受信部411へ送信されるオブジェクト情報の一例
・種別:テーブルオブジェクト
・項目のデータ:部署番号:400
部署名:企画部
・格納先となるテーブルのオブジェクトID:(30,0)
【0051】
(表7) オブジェクト情報受信部411へ送信されるオブジェクト情報の一例
・種別:テーブルオブジェクトではない
・項目のデータ:社員番号:7095
氏名:笠原次郎
入社日:1993.4.1
・格納先となるテーブルのオブジェクトID:(32,0)
【0052】
表6及び表7に示されているように、オブジェクト情報は、種別(新規に追加作成するオブジェクトがテーブルオブジェクトであるか否か、つまり新規に追加されるデータがさらに子データを格納するか否かを示すものであり、本発明にいう種別データである。)、項目のデータ(オブジェクトの全ての項目のデータであり、階層構造データに追加する新規データである。)、格納先となるテーブルのオブジェクトID(新規に追加作成するオブジェクトの格納先となるテーブルのオブジェクトID、即ち、新規データたる該項目のデータを子データとして格納すべき親データのデータ特定データである格納先特定データである。)を含んで構成されている。なお、これらのうち格納先となるテーブルのオブジェクトID等のように、データ記憶部701における記憶データを参照しつつ決すべきものは、必要に応じ閲覧部601を通じて前記図示しない他の情報端末がデータ記憶部701の記憶内容を閲覧して決定される。
このようなオブジェクト情報を受信したオブジェクト情報受信部411(追加情報受付手段)は、該受信したオブジェクト情報をオブジェクト情報記憶部421へ送信しオブジェクト情報記憶部421に記憶させ、その後、テーブルオブジェクト読み出し部413に起動信号を送信しテーブルオブジェクト読み出し部413を起動させる。
【0053】
オブジェクト情報受信部411から起動信号を受信したテーブルオブジェクト読み出し部413は、オブジェクト情報記憶部421にアクセスしオブジェクト情報記憶部421が記憶している「格納先となるテーブルのオブジェクトID」を取得する。そして、テーブルオブジェクト読み出し部413は、オブジェクト情報記憶部421から取得した「格納先となるテーブルのオブジェクトID」に該当するオブジェクトIDに記憶されているテーブルオブジェクト(新たに作成するオブジェクトの格納先となる)をデータ記憶部701のオブジェクトIDに記録されているページから読み出し取得する。さらに、テーブルオブジェクト読み出し部413は、該読み出し取得したテーブルオブジェクトから新しいオブジェクトを記憶すべきページのページ番号を取得し、ページ番号記憶部423に送信しページ番号記憶部423に記憶させる。そして、テーブルオブジェクト読み出し部413は、オブジェクト作成・格納部415に起動信号を送信しオブジェクト作成・格納部415を起動させる。
具体的に説明すれば、表6に示すようなオブジェクト情報をオブジェクト情報記憶部421が記憶していたとすると、テーブルオブジェクト読み出し部413は、オブジェクト情報記憶部421が記憶している「格納先となるテーブルのオブジェクトID」たる(30,0)を取得し、そして「格納先となるテーブルのオブジェクトID」(30,0)に該当するオブジェクトIDに記憶されているテーブルオブジェクトをデータ記憶部701のオブジェクトIDに記録されているページ(30)から読み出し取得し、該読み出し取得したテーブルオブジェクトに含まれる新しいオブジェクトを記録すべきページのページ番号(32)を取得する。
さらに、テーブルオブジェクト読み出し部413は、この取得した新しいオブジェクト(新しい企画部の情報)を記憶すべきページのページ番号たる「32」をページ番号記憶部423に送信しページ番号記憶部423に記憶させ、オブジェクト作成・格納部415に起動信号を送信しオブジェクト作成・格納部415を起動させる。
【0054】
テーブルオブジェクト読み出し部413から起動信号を受信したオブジェクト作成・格納部415は、オブジェクト情報記憶部421にアクセスしオブジェクト情報記憶部421に記憶されている内容(種別、項目のデータ)を読み出し取得して該取得した内容に従ってオブジェクトを作成する。そして、オブジェクト作成・格納部415は、ページ番号記憶部423にアクセスしページ番号記憶部423が記憶しているページ番号を読み出し取得し、該取得したページ番号に該当するデータ記憶部701のページに該作成したオブジェクトを書き込み記憶させる。このデータ記憶部701のページ番号記憶部423が記憶しているページ番号に該当するページに該作成したオブジェクトが書き込まれ記憶されたとき、オブジェクト作成・格納部415は、該作成したオブジェクトが書き込まれ記憶されたデータ記憶部701のオブジェクトID(追加位置データ)を検出し取得し、さらに該検出し取得したオブジェクトIDをオブジェクトID記憶部425に送信しオブジェクトID記憶部425に記憶させる。そして、オブジェクト作成・格納部415は、インデックス管理対象情報読み出し部417に起動信号を送信しインデックス管理対象情報読み出し部417を起動させる。
以上のように、ここではテーブルオブジェクト読み出し部413とオブジェクト作成・格納部415とページ番号記憶部423とを含んで新規データ書き込み手段が構成されている。
【0055】
具体的に説明すれば、表6に示すようなオブジェクト情報をオブジェクト情報記憶部421が記憶していたとすると、オブジェクト作成・格納部415は、オブジェクト情報記憶部421にアクセスしオブジェクト情報記憶部421に記憶されている内容(表6に示されている「種別」及び「項目のデータ」。即ち、「種別」:テーブルオブジェクト、「項目のデータ」:部署番号:400、部署名:企画部)を読み出し取得して該取得した内容に従ってオブジェクトを作成する((「種別」:テーブルオブジェクト、「項目のデータ」:部署番号:400、部署名:企画部)をデータ記憶部701の後述するページに書き込み記憶させるのに適したかたちのデータに加工する。)。そして、オブジェクト作成・格納部415は、ページ番号記憶部423にアクセスしページ番号記憶部423が記憶しているページ番号「32」を読み出し取得し、該取得したページ番号「32」に該当するデータ記憶部701のページに該作成したオブジェクトを書き込み記憶させる。このデータ記憶部701のページ番号「32」に該当するページに該作成したオブジェクトが書き込まれ記憶されたとき、オブジェクト作成・格納部415は、該作成したオブジェクトが書き込まれ記憶されたデータ記憶部701のオブジェクトID(例えば、(32,3))を検出し取得し、さらに該検出し取得したオブジェクトID(32,3)をオブジェクトID記憶部425に送信しオブジェクトID記憶部425に記憶させ、インデックス管理対象情報読み出し部417に起動信号を送信しインデックス管理対象情報読み出し部417を起動させる。
【0056】
また、表7に示すようなオブジェクト情報をオブジェクト情報記憶部421が記憶していたとすると、オブジェクト作成・格納部415は、オブジェクト情報記憶部421にアクセスしオブジェクト情報記憶部421に記憶されている内容(表7に示されている「種別」及び「項目のデータ」。即ち、「種別」:テーブルオブジェクトではない、「項目のデータ」:社員番号:7095、氏名:笠原次郎、入社日:1993.4.1)を読み出し取得して該取得した内容に従ってオブジェクトを作成する((「種別」:テーブルオブジェクトではない、「項目のデータ」:社員番号:7095、氏名:笠原次郎、入社日:1993.4.1)をデータ記憶部701の後述するページに書き込み記憶させるのに適したかたちのデータに加工する。)。そして、オブジェクト作成・格納部415は、ページ番号記憶部423にアクセスしページ番号記憶部423が記憶しているページ番号「33」に該当するデータ記憶部701のページに該作成したオブジェクトを書き込み記憶させる。このデータ記憶部701のページ番号「33」に該当するページに該作成したオブジェクトが書き込まれ記憶されたとき、オブジェクト作成・格納部415は、該作成したオブジェクトが書き込まれ記憶されたデータ記憶部701のオブジェクトID(例えば、(33,3)))を検出し取得し、さらに該検出し取得したオブジェクトID(33,3)をオブジェクトID記憶部425に送信しオブジェクトID記憶部425に記憶させ、インデックス管理対象情報読み出し部417に起動信号を送信しインデックス管理対象情報読み出し部417を起動させる。
【0057】
オブジェクト作成・格納部415から起動信号を受信したインデックス管理対象情報読み出し部417は、オブジェクト情報記憶部421にアクセスしオブジェクト情報記憶部421が記憶しているオブジェクト情報(例えば、表6のような情報)に含まれる「格納先となるテーブルのオブジェクトID」(格納先特定データ)を読み出し取得する。次いで、インデックス管理対象情報読み出し部417は、データ記憶部701にアクセスし該読み出し取得した「格納先となるテーブルのオブジェクトID」(格納先特定データ)に該当(合致)するデータ記憶部701のシステムテーブル「SYS_INDEXEDOBJS」(インデックス管理情報記憶手段)を検索する。この検索は、「SYS_INDEXEDOBJS」に記憶されているオブジェクトの項目「テーブルのオブジェクトID」の値が、該読み出し取得した「格納先となるテーブルのオブジェクトID」と同一のものを探すことをいう。
ここでインデックス管理対象情報読み出し部417が、前記検索にて「SYS_INDEXEDOBJS」に該当するオブジェクトを見つけることができない場合には、インデックス管理対象情報読み出し部417はこのオブジェクト情報がインデックス管理の対象になっていないと判断しオブジェクト格納部401の処理を終了する。一方、インデックス管理対象情報読み出し部417が、前記検索にて「SYS_INDEXEDOBJS」に該当するオブジェクトを見つけることができた場合には、インデックス管理対象情報読み出し部417はこのオブジェクト情報がインデックス管理の対象になっていると判断し以下述べる単位処理を、前記検索にて「SYS_INDEXEDOBJS」に該当すると見いだしたオブジェクト(インデックス管理情報)それぞれについて実施(前記検索にて「SYS_INDEXEDOBJS」に該当すると見いだしたオブジェクトと同じ数だけ該単位処理を行う)し、その後、オブジェクト格納部401の処理を終了する。
【0058】
前記単位処理とは、以下説明する処理をいう。
インデックス管理対象情報読み出し部417が、前記検索にて見つけた「SYS_INDEXEDOBJS」に存するオブジェクト(以下、「該当オブジェクト」という。)に含まれる「階層差」を階層差記憶部429に送信し階層差記憶部429に記憶させると共に、該当オブジェクトに含まれる「インデックス番号」をインデックス情報記憶部427に送信しインデックス情報記憶部427に記憶させる。
そして、インデックス管理対象情報読み出し部417が、階層差記憶部429にアクセスし階層差記憶部429が記憶している「階層差」を読み出し取得し該取得した「階層差」が「0」か否か判断し、「階層差」が「0」と判断した場合にはインデックス情報読み出し部431に起動信号を送信しインデックス情報読み出し部431を起動させ、「階層差」が「0」と判断しない場合(「階層差」が0よりも大きい場合)にはさらにオブジェクト情報記憶部421にアクセスしオブジェクト情報記憶部421が記憶しているオブジェクト情報(表6のような情報)の「種別」(種別データ)を読み出しそれが「テーブルオブジェクト」であるときには(新規データがさらに子データを格納することを示すものであるときには)階層差記憶部429が記憶している「階層差」の値から1減じた値を階層差記憶部429に記憶させ、そしてインデックス管理対象情報書き込み部419に起動信号を送信しインデックス管理対象情報書き込み部419を起動させる。オブジェクト情報記憶部421が記憶しているオブジェクト情報の「種別」が「テーブルオブジェクトではない」であるときには、単位処理を終了する。
以上のように、ここではインデックス管理対象情報読み出し部417と階層差記憶部429とを含んで、インデックス管理判断手段が構成されている。
【0059】
具体的に説明すれば、インデックス管理対象情報読み出し部417が、前記検索(「SYS_INDEXEDOBJS」に格納されているオブジェクトの項目「テーブルのオブジェクトID」の値が、該読み出し取得した「格納先となるテーブルのオブジェクトID」と同一のものを探すことであるので、「格納先となるテーブルのオブジェクトID」が表6に示す(30,0)であり、「SYS_INDEXEDOBJS」に記憶されているオブジェクトが表5の(b)のようなものであれば、インデックス管理対象情報読み出し部417は、該当オブジェクトとして「・テーブルのオブジェクトID:(30,0) ・インデックス番号:1 ・階層差:1」を見いだす。)にて見つけた「該当オブジェクト」に含まれる「階層差」たる「1」を階層差記憶部429に送信し階層差記憶部429に記憶させると共に、該当オブジェクトに含まれる「インデックス番号」たる「1」をインデックス情報記憶部427に送信しインデックス情報記憶部427に記憶させる。そして、インデックス管理対象情報読み出し部417が、階層差記憶部429にアクセスし階層差記憶部429が記憶している「階層差」たる「1」を読み出し取得し該取得した「階層差」たる「1」が「0」か否か判断しここでは「階層差」が「0」と判断しないのでさらにオブジェクト情報記憶部421にアクセスしオブジェクト情報記憶部421が記憶しているオブジェクト情報(表6の情報)の「種別」たる「テーブルオブジェクト」を読み出しここではそれが「テーブルオブジェクト」であるので階層差記憶部429が記憶している「階層差」たる「1」の値から1減じた値である「0」を階層差記憶部429に記憶させ、そしてインデックス管理対象情報書き込み部419に起動信号を送信しインデックス管理対象情報書き込み部419を起動させる。
【0060】
インデックス管理対象情報読み出し部417が「階層差」が「0」と判断した場合に発する起動信号を受信したインデックス情報読み出し部431は、インデックス情報記憶部427にアクセスしインデックス情報記憶部427が記憶している「インデックス番号」(インデックス特定データ)を読み出し取得し、該読み出し取得した「インデックス番号」によりデータ記憶部701の「SYS_INDICES」を検索する。この検索によって、該当すると判断されたオブジェクトの全ての項目の値をインデックス情報読み出し部431は読み出し取得してインデックス情報記憶部427に送信しインデックス情報記憶部427に記憶させる。その後、インデックス情報読み出し部431は、インデックスへのエントリ挿入部433に起動信号を送信しインデックスへのエントリ挿入部433を起動させる。
具体的に説明すれば、インデックス情報読み出し部431は、インデックス情報記憶部427にアクセスしインデックス情報記憶部427が記憶している「インデックス番号」たる「1」を読み出し取得し、該読み出し取得した「インデックス番号」たる「1」によりデータ記憶部701の「SYS_INDICES」を検索(「SYS_INDICES」の各オブジェクトに含まれる「インデックス番号」が、該読み出し取得した「インデックス番号」に合致するものを探すことをいう。)する。この検索によって、該当すると判断されたオブジェクト(ここでは「SYS_INDICES」には表5(a)に示すように1のオブジェクトが記憶されており、その「インデックス番号」たる「1」は、前記読み出し取得した「インデックス番号」たる「1」に合致するので、該1のオブジェクトが該当する。)の全ての項目の値をインデックス情報読み出し部431は読み出し取得してインデックス情報記憶部427に送信しインデックス情報記憶部427に記憶させる(表8にインデックス情報記憶部427が記憶する情報を模式的に示す。)。その後、インデックス情報読み出し部431は、インデックスへのエントリ挿入部433に起動信号を送信しインデックスへのエントリ挿入部433を起動させる。
【0061】
(表8)インデックス情報記憶部427の記憶内容
・インデックス名:入社日インデックス
・保有元テーブルのオブジェクトID:(30,0)
・B−Tree/R−Treeの別:B−Tree
・階層差:1
・キーに対応する項目:入社日
・インデックス番号:1
・インデックスルートページ番号:38
【0062】
インデックス情報読み出し部431から起動信号を受信したインデックスへのエントリ挿入部433は、オブジェクトID記憶部425に記憶されているオブジェクトIDと、オブジェクト情報記憶部421に記憶されているオブジェクト情報に含まれる「キーに対応する項目」に対応するデータ(値)と、をインデックスへ挿入する。なお、「キーに対応する項目」は、インデックスへのエントリ挿入部433が、インデックス情報記憶部427にアクセスしてそれが記憶している表8に示すデータから読み出し取得する。この「キーに対応する項目」を取得したインデックスへのエントリ挿入部433は、オブジェクト情報記憶部421にアクセスしオブジェクト情報記憶部421に記憶されているオブジェクト情報に含まれる「キーに対応する項目」に対応するデータ(値)を読み出し取得する。また、インデックスへの挿入は、一般的なB−Tree又はR−Treeの構築動作に従って行うことができるので、ここでは説明を省略する(インデックスへの挿入を行う際に必要となるインデックスに関する情報は、インデックス情報記憶部427に記憶されている(表8のような情報が記憶されている。)ので、インデックスへのエントリ挿入部433は適宜インデックス情報記憶部427にアクセスすることでかかる情報を得ることができる。)。
具体的に説明すれば、インデックスへのエントリ挿入部433は、オブジェクトID記憶部425に記憶されているオブジェクトIDたる(33,3)と、オブジェクト情報記憶部421に記憶されているオブジェクト情報に含まれる「キーに対応する項目」たる「入社日」に対応するデータ(値)(例えば、表7のようなデータがオブジェクト情報記憶部421に記憶されていれば「1993.4.1」)と、をインデックスへ挿入する。なお、オブジェクトID記憶部425に記憶されているオブジェクトIDたる(33,3)は、表7に示したオブジェクトを格納する際であり、もし表6に示したオブジェクトを格納する場合であれば(32,3)となる。
以上のように、ここではインデックス情報読み出し部431とインデックスへのエントリ挿入部433とを含んでインデックス挿入手段が構成されている。
【0063】
インデックス管理対象情報読み出し部417から起動信号を受信したインデックス管理対象情報書き込み部419(インデックス管理情報追加手段)は、オブジェクトID記憶部425にアクセスしオブジェクトID記憶部425に記憶されているオブジェクトID(追加位置データ)を読み出し取得し、インデックス情報記憶部427にアクセスしインデックス情報記憶部427に記憶されているインデックス番号(インデックス特定データ)を読み出し取得し、階層差記憶部429にアクセスし階層差記憶部429に記憶されている階層差(1減じたもの)を読み出し取得し、そしてこれら読み出し取得したオブジェクトID、インデックス番号及び階層差の情報を含むオブジェクトを作成し、該オブジェクトをデータ記憶部701の「SYS_INDEXEDOBJS」(インデックス管理情報記憶手段)に書き込み記憶させる。
具体的に説明すれば、インデックス管理対象情報書き込み部419は、オブジェクトID記憶部425にアクセスしオブジェクトID記憶部425に記憶されているオブジェクトIDたる(32,3)を読み出し取得し、インデックス情報記憶部427にアクセスしインデックス情報記憶部427に記憶されているインデックス番号たる「1」を読み出し取得し、階層差記憶部429にアクセスし階層差記憶部429に記憶されている階層差たる「0」を読み出し取得し、そしてこれら読み出し取得したオブジェクトID、インデックス番号及び階層差の情報を含むオブジェクトを作成し、該オブジェクトをデータ記憶部701の「SYS_INDEXEDOBJS」に書き込み記憶させる。この後のデータ記憶部701の「SYS_INDEXEDOBJS」の記憶内容を表9に示す。表9と表5(b)とを比較すると、表9ではオブジェクト「・テーブルのオブジェクトID:(32,3)、・インデックス番号:1、・階層差:0」が付け加えられたことがわかる。
【0064】
(表9)「SYS_INDEXEDOBJS」の記憶内容
・テーブルのオブジェクトID:(30,0)
・インデックス番号:1
・階層差:1
・テーブルのオブジェクトID:(32,0)
・インデックス番号:1
・階層差:0
・テーブルのオブジェクトID:(32,1)
・インデックス番号:1
・階層差:0
・テーブルのオブジェクトID:(32,2)
・インデックス番号:1
・階層差:0
・テーブルのオブジェクトID:(32,3)
・インデックス番号:1
・階層差:0
【0065】
さらに、インデックス検索部501について説明する。
図7は、インデックス検索部501の詳細な機能ブロック図である。図7を参照して、インデックス検索部501について説明する。
インデックス検索部501は、機能的には、検索情報受信部511とインデックス情報読み出し部513とインデックス検索処理部515とオブジェクトデータ読み出し部517とオブジェクトデータ送信部519と検索情報記憶部521とインデックス情報記憶部523と検索結果記憶部525とを有して構成されている。
【0066】
起動信号送信部205から起動信号を受信した検索情報受信部511は、LAN117を経由して直接データを送受信することができる状態になり、まず、検索情報(検索をどのように行うかに関する情報)の入力フォーマットをLAN117を経由して前記図示しない他の情報端末に送信し入力を促す。検索情報の入力フォーマットには、インデックス名(検索に使用するインデックスの名称)、保有元テーブルのオブジェクトID及び検索条件(比較演算の種別と条件値とによって構成される。)の3項目を含む。該入力フォーマットを受信した前記図示しない他の情報端末は、これらの項目に該当するデータを受け付けた後、受け付けたデータを検索情報受信部511へ送信する。この前記図示しない他の情報端末から検索情報受信部511へ送信される検索情報の一例を表10に示す。
なお、表10では、インデックス定義部301の動作を説明する際に用いた「入社日インデックス」を用いて、入社日が「1985.4.1」である社員情報を検索するための検索情報を示している。また、これらのうち「インデックス名」や「保有元テーブルのオブジェクトID」等のように、データ記憶部701における記憶データを参照しつつ決すべきものは、必要に応じ閲覧部601を通じて前記図示しない他の情報端末がデータ記憶部701の記憶内容を閲覧して決定される。
【0067】
(表10)検索情報の一例
・インデックス名:「入社日インデックス」
・保有元テーブルのオブジェクトID:(30,0)
・検索条件:「1985.4.1」に等しい
【0068】
表10に示したような検索情報を受信した検索情報受信部511は、該受信した検索情報全てを検索情報記憶部521へ送信し検索情報記憶部521に記憶させ、さらにインデックス情報読み出し部513へ起動信号を発しインデックス情報読み出し部513を起動させる。
【0069】
検索情報受信部511から起動信号を受信したインデックス情報読み出し部513は、検索情報記憶部521にアクセスし検索情報記憶部521が記憶している検索情報から「インデックス名」と「保有元テーブルのオブジェクトID」とを読み出し取得する。そして、インデックス情報読み出し部513は、データ記憶部701にアクセスし該読み出し取得した「インデックス名」及び「保有元テーブルのオブジェクトID」を用いてデータ記憶部701の「SYS_INDICES」(既に説明した表5(a)に示すようなデータが記憶されている。)を検索し、これら「インデックス名」と「保有元テーブルのオブジェクトID」との両方に合致するオブジェクトに含まれる全ての項目の値を読み出し取得する。さらに、インデックス情報読み出し部513は、該読み出し取得したオブジェクトに含まれる全ての項目の値をインデックス情報記憶部523に送信しインデックス情報記憶部523に記憶させる。その後、インデックス情報読み出し部513は、インデックス検索処理部515へ起動信号を発しインデックス検索処理部515を起動させる。
具体的に説明すれば、表10に示した検索情報に含まれる「インデックス名」たる「入社日インデックス」及び「保有元テーブルのオブジェクトID」たる(30,0)を用いてデータ記憶部701の「SYS_INDICES」(既に説明した表5(a)に示すようなデータが記憶されている。)を検索し、これら「インデックス名」たる「入社日インデックス」及び「保有元テーブルのオブジェクトID」たる(30,0)との両方に合致するオブジェクトに含まれる全ての項目の値を読み出し取得する。該読み出し取得したオブジェクトに含まれる全ての項目の値(一例)を表11に示す。なお、前述のように、インデックス情報読み出し部513は、表11に示したような該読み出し取得したオブジェクトに含まれる全ての項目の値をインデックス情報記憶部523に送信しインデックス情報記憶部523に記憶させ、インデックス検索処理部515へ起動信号を発する。
【0070】
(表11)検索情報による「SYS_INDICES」の検索結果
・インデックス名:入社日インデックス
・保有元テーブルのオブジェクトID:(30,0)
・B−Tree/R−Treeの別:B−Tree
・階層差:1
・キーに対応する項目:入社日
・インデックス番号:1
・インデックスルートページ番号:38
【0071】
インデックス情報読み出し部513から起動信号を受信したインデックス検索処理部515は、インデックス情報記憶部523に記憶されている情報(表11に示したような情報)と検索情報記憶部521に記憶されている情報(表10に示したような情報)とを用いて、該当するインデックスを使用した検索処理(データ記憶部701に関する検索)を行う。なお、かかるインデックスを使用した検索処理は、一般的なB−Tree又はR−Treeの既知の動作方法によって行うことができるので、ここでは説明を省略する。また、ここで行う検索処理(B−Tree又はR−Treeのいずれについても)においては、前記検索情報に合致する1又は2以上のオブジェクトのオブジェクトIDをインデックス検索処理部515が取得し、さらにインデックス検索処理部515が該取得したオブジェクトIDを検索結果記憶部525へ送信し検索結果記憶部525に記憶させる。
その後、インデックス検索処理部515は、オブジェクトデータ読み出し部517へ起動信号を発しオブジェクトデータ読み出し部517を起動させる。
【0072】
インデックス検索処理部515から起動信号を受信したオブジェクトデータ読み出し部517は、検索結果記憶部525にアクセスし検索結果記憶部525が記憶しているオブジェクトID(前記検索情報に合致する1又は2以上のオブジェクトのオブジェクトID)を読み出し取得し、該読み出し取得したオブジェクトIDに従ってデータ記憶部701にアクセスし該オブジェクトIDに該当するオブジェクトに関するデータを読み出し取得する。そして、オブジェクトデータ読み出し部517は、該読み出し取得したオブジェクトに関するデータをオブジェクトデータ送信部519へ送信し、それを受けてオブジェクトデータ送信部519は、受信したオブジェクトに関するデータをLAN117を経由して前記図示しない他の情報端末(前記検索情報を送信した情報端末)に送信する(これによって前記図示しない他の情報端末(前記検索情報を送信した情報端末)は、該データを表示することができる。)。
このようなオブジェクトデータ読み出し部517によるオブジェクトに関するデータ読み出しと、オブジェクトデータ送信部519によるオブジェクトに関するデータの送信と、は、検索結果記憶部525に記憶されているオブジェクトID全てについて行われる。
【0073】
次いで、本システム101の動作について説明する。
図8は、要求受信部201の動作を示すフローチャートである。図8を参照して、要求受信部201の動作について説明する。
まず、要求受信部201の要求信号受信部203が、LAN117を経由して図示しない他の情報端末からアクセスされたか否か判断し(s251)、アクセスされたと判断した場合(YES)本システム101の起動画面を表示する信号を該図示しない他の情報端末に要求信号受信部203は送信し(s252)、アクセスされたと判断しない場合(NO)再びs251へ戻る。なお、前述のように、この起動画面には、「1、インデックス付け」、「2、オブジェクト追加」、「3、検索」、「4、閲覧」の4項目が表示されるようになっており、該図示しない他の情報端末の使用者が該図示しない他の情報端末を介して(無論、LAN117を経由する。)「1」、「2」、「3」、「4」のいずれかの信号を要求受信部201に入力することで本システム101の所望の機能を発揮させることができるようになっているので、要求信号受信部203は、該図示しない他の情報通信端末の使用者が、「1」、「2」、「3」、「4」のいずれかの信号を入力することを待つ(s253)。該図示しない他の情報端末の使用者から該図示しない他の情報端末を介して「1」、「2」、「3」、「4」の信号が要求信号受信部203に入力されたと要求信号受信部203が判断すると(YES)、その入力された信号を要求信号受信部203が(要求受信部201の)起動信号送信部205へ送信し(s254)、該図示しない他の情報端末の使用者から該図示しない他の情報端末を介して「1」、「2」、「3」、「4」の信号が要求信号受信部203に入力されたと要求信号受信部203が判断しないと(NO)再びs253へ戻る。s254にて「1」、「2」、「3」、「4」のいずれかの信号を要求信号受信部203から受信した起動信号送信部205は、受信した信号の種類を認識し、その種類に応じた起動信号を発する(s255)。なお、この種類に応じた起動信号とは、前述したように、要求信号受信部203から起動信号送信部205が受信した信号が、「1」であればインデックス定義部301(インデックス定義情報受信部311)に起動信号を発し、「2」であればオブジェクト格納部401(オブジェクト情報受信部411)に起動信号を発し、「3」であればインデックス検索部501(検索情報受信部511)に起動信号を発し、「4」であれば閲覧部601に起動信号を発することをいう。
その後、作業終了か否か判断し(s256)、作業終了と判断すれば(YES)作業を終了し(END)、作業終了と判断しなければ再びs251へ戻る。
【0074】
図9は、インデックス定義部301の動作を示すフローチャートである。図9を参照して、インデックス定義部301の動作について説明する。
まず、インデックス定義情報受信部311(インデックス定義情報受付手段)が、起動信号送信部205から起動信号を受信したか否か判断し(s351)、起動信号を受信したと判断した場合(YES)インデックス定義情報受信部311は、インデックス定義情報の入力フォーマットをLAN117を経由して前記図示しない他の情報端末に送信し(s352)入力を促し、起動信号を受信したと判断しない場合(NO)には再びs351へ戻る。
本システム101の動作ではないが、該入力フォーマットを受信した前記図示しない他の情報端末は、これらの項目に該当するデータを前記図示しない他の情報端末の使用者から受け付けた後、受け付けたデータをインデックス定義情報受信部311へ送信する。
s352の後、前述のようにして前記図示しない他の情報端末から送信されたインデックス定義情報をインデックス定義情報受信部311は受信し、さらにインデックス定義情報受信部311は該受信したインデックス定義情報全てをインデックス情報記憶部323へ送信しインデックス情報記憶部323に記憶させる(s353)。なお、インデックス定義情報は、前述したように、インデックス名、保有元テーブルのオブジェクトID(先祖特定データ)、B−Tree/R−Treeの別(インデックスの種類選択)、階層差(先祖特定データにより特定される先祖データ(保有元テーブル)からインデックス付けを行う子孫データの親データまでの階層差)及びキーに対応する項目(インデックス対象項目特定データ)の5項目が含まれており、これらのうち保有元テーブルのオブジェクトID、階層差及びキーに対応する項目等のように、データ記憶部701における記憶データを参照しつつ決すべきものは、必要に応じ閲覧部601を通じて前記図示しない他の情報端末がデータ記憶部701の記憶内容を閲覧して決定される。
s353の後、インデックス定義情報受信部311は、s353において受信したインデックス定義情報に含まれる保有元テーブルのオブジェクトID(ここでは(30,0))を抽出しオブジェクトID記憶部327へ送信しオブジェクトID記憶部327に記憶させ(s354)、さらにインデックス番号生成部313へ起動信号を発し(s355)インデックス番号生成部313を起動させる。
【0075】
s355においてインデックス定義情報受信部311から発せられた起動信号を受信したインデックス番号生成部313(インデックス特定データ取得手段)は、インデックス番号(インデックス特定データ)を決定し、該決定したインデックス番号をインデックス情報記憶部323に送信し、そして既にインデックス情報記憶部323が記憶しているインデックス定義情報(s353においてインデックス情報記憶部323に送信される。)に加え、該決定したインデックス番号をインデックス情報記憶部323に記憶させる(s356)。なお、インデックス番号生成部313がインデックス番号を決定する方法は、前述のように、「SYS_INDICES」に格納されている情報(オブジェクト)に付されたインデックス番号を検索しこのインデックス番号のうち最大値に1を加えてインデックス番号を決定する(「SYS_INDICES」に格納されている情報(オブジェクト)がなければインデックス番号として「1」を決定する。なお、ここでは「1」を決定したものとして、後の説明を行う。)。
その後、インデックス番号生成部313はインデックス作成部315に起動信号を発し(s357)、インデックス作成部315を起動させる。
【0076】
インデックス番号生成部313からs357にて発せられた起動信号を受信したインデックス作成部315は、データ記憶部701の記憶領域にインデックスデータを記録するためのインデックスルートページを作成し、該作成したインデックスルートページのページ番号(ここでは「38」)をインデックス情報記憶部323に送信し、そして既にインデックス情報記憶部323が記憶しているインデックス定義情報とインデックス番号に加え、インデックスルートページのページ番号をインデックス情報記憶部323に記憶させる(s358)。なお、ここにいうインデックスルートページの作成とは、具体的には、データベースファイルを1ページのサイズだけ拡張し、その拡張した領域をインデックスを構成するページとして初期化する(エントリ数が0であるインデックスページとする)ことをいう。また、インデックスルートページは、データ記憶部701の記憶領域のうち記憶末尾に続くように作成される(ここではインデックスルートページがページ番号「38」に作成されたものとした。)。
その後、インデックス作成部315は、インデックス情報書き込み部317に起動信号を発し(s359)、インデックス情報書き込み部317を起動させる。
【0077】
インデックス作成部315からs359にて発せられた起動信号を受信したインデックス情報書き込み部317は、インデックス情報記憶部323に記憶されている情報(上記した表2に示す情報)をインデックス情報記憶部323から読み出し取得し、該取得した情報(表2)をデータ記憶部701の「SYS_INDICES」に書き込む(s360)。そして、インデックス情報書き込み部317は、該取得した情報(表2)に含まれる「階層差」(ここでは「1」)を階層差記憶部325に書き込む(s361)。
さらに、インデックス情報書き込み部317は、インデックス管理対象情報書き込み部319に起動信号を発し(s362)、インデックス管理対象情報書き込み部319を起動させる。
【0078】
インデックス情報書き込み部317からs362にて発せられた起動信号を受信したインデックス管理対象情報書き込み部319は、オブジェクトID記憶部327が記憶しているテーブルのオブジェクトID(インデックス定義情報受信部311から受信(s354)し記憶したものであり、ここでは保有元テーブルのオブジェクトIDたる(30,0))と、インデックス情報記憶部323が記憶しているインデックス番号(ここでは「1」)を読み出し取得したインデックス番号(ここでは「1」)と、階層差記憶部325が記憶している階層差(ここでは「1」)を読み出し取得した階層差(ここでは「1」)と、を有する情報を作成すると共に、該作成された情報をデータ記憶部701のシステムテーブル「SYS_INDEXEDOBJS」(インデックス管理情報記憶手段)に書き込む(s363)。
s363にて「SYS_INDEXEDOBJS」に前記情報を書き込んだインデックス管理対象情報書き込み部319は、該書き込んだ情報に含まれている階層差が「0」か否か判断し(s364)、「0」であれば(YES)インデックスへのエントリ挿入部329へ起動信号を発し(s365)インデックスへのエントリ挿入部329を起動させ、「0」でなければ(0より大きい値であれば)(NO)オブジェクト情報読み出し部321へ起動信号を発し(s366)オブジェクト情報読み出し部321を起動させ、後述の処理Aを行う。
【0079】
s364において階層差が「0」と判断されインデックス管理対象情報書き込み部319からs365にて発せられた起動信号を受信したインデックスへのエントリ挿入部329は、まずオブジェクトID記憶部327が記憶しているテーブルのオブジェクトID(前記した例では保有元テーブルのオブジェクトIDたる(30,0)をオブジェクトID記憶部327が記憶しているが、これは表2に示すように、階層差「1」であるので、前記した例では階層差が「0」と判断されることはない。)を読み出し取得し、該取得したテーブルのオブジェクトIDが指すテーブル(処理対象テーブル)に格納されている(含まれる)全てのオブジェクトについて、それぞれに対応するエントリ(該オブジェクトのオブジェクトIDと「キーに対応する項目」の値との組)をインデックスに挿入する(s367)。なお、インデックスへのエントリ挿入部329は、処理対象テーブルをデータ記憶部701にアクセスして読み出し、該読み出した処理対象テーブルに格納されている(含まれている)オブジェクトに含まれる「キーに対応する項目」に相当する値を用いて該エントリを作成することができる。なお、該エントリをインデックスに挿入する方法は、一般的なB−Tree又はR−Treeの構築動作に従って行うことができるので、ここでは説明を省略する(また、該エントリをインデックスに挿入する際に必要となるインデックスに関する情報は、インデックスへのエントリ挿入部329がインデックス情報記憶部323へ適宜アクセスして読み出し取得すればよい。)。
【0080】
s366において発せられた起動信号を受信したオブジェクト情報読み出し部321等が行う処理Aについて説明する。図10は、処理Aの詳細を示すフローチャートである。図10を参照して、処理Aについて説明する。
まずオブジェクト情報読み出し部321は、階層差記憶部325にアクセスし階層差記憶部325が記憶している階層差の値から1を減じた数を階層差として階層差記憶部325に上書きして記憶させる(s381)。
その後、オブジェクト情報読み出し部321は、オブジェクトID記憶部327が記憶しているテーブルのオブジェクトID(ここでは(30,0))を読み出し取得し、該取得したテーブルのオブジェクトID(ここでは(30,0))が指すテーブル(処理対象テーブル)に従属している(格納されている)全てのオブジェクトを1つずつ順次読み出す。そして、それぞれのオブジェクトに記録されている「種別」(そのオブジェクトがテーブルオブジェクトであるか否か)の内容を判定し、テーブルオブジェクトでは無い場合は処理対象テーブルの次のオブジェクトを読み出す。テーブルオブジェクトである場合は次の処理(処理B)を行う(ここでは(総務部)社員テーブル、(営業部)社員テーブル及び(製造部)社員テーブルについて処理Bを行う。)。
【0081】
処理Bは、次のごとき処理である。
まず、オブジェクト情報読み出し部321は、オブジェクトID記憶部327が記憶しているテーブルのオブジェクトID(ここでは(30,0))をオブジェクトID記憶部327にアクセスし読み出し取得し、該読み出し取得したテーブルのオブジェクトID(ここでは(30,0))が指すテーブル(処理対象テーブル)に格納されている(含まれる)テーブルオブジェクトのうちこれから処理しようとするテーブルオブジェクトのオブジェクトIDをオブジェクトID記憶部327に記憶させる(s382)(このことは、これから処理しようとするテーブルオブジェクトが「処理対象テーブル」になることを示す。)。なお、オブジェクト情報読み出し部321は、オブジェクトID記憶部327に記憶されているオブジェクトIDに該当するテーブルを読み出すことで、そのテーブルに格納されているオブジェクトのページ番号を取得し、そのページ番号のページに記録されているオブジェクトを読み込んでゆくことで、該テーブルに格納されているオブジェクトのオブジェクトID(s382において、オブジェクトID記憶部327に記憶させるもの)及びその内容を取得できる(例えば、図5の例では、オブジェクトID記憶部327に記憶されているオブジェクトIDたる(30,0)に該当するテーブル「部署テーブル(30,0)」を読み出すことで、そのテーブル「部署テーブル(30,0)」に格納されているオブジェクトのページ番号(32)を取得し、そのページ番号(32)のページに記録されているオブジェクトを読み込んでゆくことで、該テーブル「部署テーブル(30,0)」に格納されているオブジェクトのオブジェクトID(32,0)、(32,1)、(32,2)及びその内容を取得することができる。)。
さらに、オブジェクト情報読み出し部321は、インデックス管理対象情報書き込み部319に起動信号を発し(s383)、インデックス管理対象情報書き込み部319を起動させる。
【0082】
オブジェクト情報読み出し部321からs383にて発せられた起動信号を受信したインデックス管理対象情報書き込み部319は、オブジェクトID記憶部327が記憶しているこれから処理しようとするテーブルオブジェクトのオブジェクトID(オブジェクト情報読み出し部321によって記憶させられたものであり、例えば、(32,0))と、インデックス情報記憶部323が記憶しているインデックス番号(ここでは「1」)を読み出し取得したインデックス番号(ここでは「1」)と、階層差記憶部325が記憶している階層差(ここでは「0」)を読み出し取得した階層差(ここでは「0」)と、を有する情報を作成すると共に、該作成された情報をデータ記憶部701のシステムテーブル「SYS_INDEXEDOBJS」に書き込む(s384)。
s384にて「SYS_INDEXEDOBJS」に前記情報を書き込んだインデックス管理対象情報書き込み部319は、該書き込んだ情報に含まれている階層差が「0」か否か判断し(s385)、「0」であれば(YES)インデックスへのエントリ挿入部329へ起動信号を発し(s387)インデックスへのエントリ挿入部329を起動させ、「0」でなければ(0より大きい値であれば)(NO)オブジェクト情報読み出し部321へ起動信号を発し(s386)オブジェクト情報読み出し部321を起動させ、再び処理Aを行う。
【0083】
s385において階層差が「0」と判断されインデックス管理対象情報書き込み部319からs387にて発せられた起動信号を受信したインデックスへのエントリ挿入部329は、まずオブジェクトID記憶部327が記憶しているこれから処理しようとするテーブルオブジェクトのオブジェクトID(例えば、(32,0))を読み出し取得し、該取得したこれから処理しようとするテーブルオブジェクトのオブジェクトID(例えば、(32,0))が指すテーブル(ここでの処理対象テーブル)に格納されている(含まれている)全てのオブジェクトについて、それぞれに対応するエントリ(該オブジェクトのオブジェクトIDと「キーに対応する項目」の値との組)をインデックスに挿入する(s388)。なお、インデックスへのエントリ挿入部329は、これから処理しようとするテーブルのオブジェクトIDに該当するテーブル(処理対象テーブル)をデータ記憶部701にアクセスして読み出し、該読み出した処理対象テーブルに格納されている(含まれている)オブジェクトに含まれる「キーに対応する項目」(インデックス対象項目特定データ)に相当する値を用いて該エントリを作成することができる。なお、該エントリをインデックスに挿入する方法は、一般的なB−Tree又はR−Treeの構築動作に従って行うことができるので、ここでは説明を省略する。
【0084】
以上が処理Bであり、かかる処理Bは、処理Bが開始される際にオブジェクトID記憶部327が記憶しているオブジェクトIDが指すテーブル(処理対象テーブル)に従属している(格納されている)全てのテーブルオブジェクトについて行われる。
全ての処理Bが完了した後、オブジェクト情報読み出し部321は階層差記憶部325にアクセスし階層差記憶部325が記憶している階層差の値に1を加えた数を階層差として階層差記憶部325に上書きして記憶させる(s389)(即ち、これによって階層差記憶部325が記憶している階層差が「1」増加する。)。
以上のように、s381からs389によって(処理Bの繰り返しを含む)処理Aが構成されている。
かかる処理Aが完了すると、図9に示すようにインデックス定義部301の動作が終了する。
なお、上述したように、ここではインデックス管理対象情報書き込み部319とオブジェクト情報読み出し部321と階層差記憶部325とオブジェクトID記憶部327とインデックスへのエントリ挿入部329とを含んで、インデックス付け手段が構成されている。
【0085】
かかる処理Aについて具体的に説明をしておく。
まずs381においてオブジェクト情報読み出し部321が階層差記憶部325にアクセスした際、階層差記憶部325が記憶している階層差の値が「1」だとすると(この階層差が「1」であり0ではないので、前述のs364において「NO」と判断された。)、オブジェクト情報読み出し部321は、階層差記憶部325が記憶している階層差たる「1」の値から1を減じた数(即ち「0」)を階層差として階層差記憶部325に上書きして記憶させる(s381)。
その後、オブジェクト情報読み出し部321は、オブジェクトID記憶部327が記憶しているテーブルのオブジェクトID(ここでは(30,0))が指すテーブル(処理対象テーブル)に格納されている(含まれている)全てのテーブルオブジェクト(例えば、前述の図5に示したものであれば、「(総務部)社員テーブル」(オブジェクトID:(32,0))、「(営業部)社員テーブル」(オブジェクトID:(32,1))、「(製造部)社員テーブル」(オブジェクトID:(32,2)))について次の処理Bを行う。
【0086】
処理Bは、次のように行われる。
まず、オブジェクト情報読み出し部321は、オブジェクトID記憶部327が記憶しているテーブルのオブジェクトID(ここでは(30,0))をオブジェクトID記憶部327にアクセスし読み出し取得し、該読み出し取得したテーブルのオブジェクトID(ここでは(30,0))が指すテーブル(処理対象テーブル)に格納されている(含まれている)テーブルオブジェクトのうちこれから処理しようとするテーブルオブジェクト(例えば、「(総務部)社員テーブル」)のオブジェクトID(ここでは(32,0))をオブジェクトID記憶部327に記憶させる(s382)(このことは、これから処理しようとするテーブルオブジェクトたる「(総務部)社員テーブル」が「処理対象テーブル」になることを示す。)。なお、オブジェクト情報読み出し部321は、オブジェクトID記憶部327に記憶されているオブジェクトIDに該当するテーブルを読み出すことで、そのテーブルに格納されているオブジェクトのページ番号を取得し、そのページ番号のページに記録されているオブジェクトを読み込んでゆくことで、該テーブルに格納されているオブジェクトのオブジェクトID(s382において、オブジェクトID記憶部327に記憶させるもの)及びその内容を取得できる(例えば、図5の例では、オブジェクトID記憶部327に記憶されているオブジェクトIDたる(30,0)に該当するテーブル「部署テーブル(30,0)」を読み出すことで、そのテーブル「部署テーブル(30,0)」に格納されているオブジェクトのページ番号(32)を取得し、そのページ番号(32)のページに記録されているオブジェクトを読み込んでゆくことで、該テーブル「部署テーブル(30,0)」に格納されているオブジェクトのオブジェクトID(32,0)、(32,1)、(32,2)及びその内容を取得することができる。)。
さらに、オブジェクト情報読み出し部321は、インデックス管理対象情報書き込み部319に起動信号を発し(s383)、インデックス管理対象情報書き込み部319を起動させる。
【0087】
オブジェクト情報読み出し部321から起動信号を受信したインデックス管理対象情報書き込み部319は、オブジェクトID記憶部327が記憶しているこれから処理しようとするテーブルオブジェクトのオブジェクトID(ここでは(32,0))と、インデックス情報記憶部323が記憶しているインデックス番号(ここでは「1」)を読み出し取得したインデックス番号(ここでは「1」)と、階層差記憶部325が記憶している階層差(s381において「1」から「0」に変更されている。)を読み出し取得した階層差(ここでは「0」)と、を有する情報を作成すると共に、該作成された情報をデータ記憶部701のシステムテーブル「SYS_INDEXEDOBJS」に書き込む(s384)。
s384にて「SYS_INDEXEDOBJS」に前記情報を書き込んだインデックス管理対象情報書き込み部319は、該書き込んだ情報に含まれている階層差が「0」か否か判断し(s385)、ここでは「0」であるので(YES)インデックスへのエントリ挿入部329へ起動信号を発し(s387)インデックスへのエントリ挿入部329を起動させる。なお、前述したように、s385において、階層差が「0」でなければ(0より大きい値であれば)(NO)オブジェクト情報読み出し部321へ起動信号を発し(s386)オブジェクト情報読み出し部321を起動させ、再び処理Aを行う。
【0088】
s385において階層差が「0」と判断されインデックス管理対象情報書き込み部319からs387にて発せられた起動信号を受信したインデックスへのエントリ挿入部329は、まずオブジェクトID記憶部327が記憶しているこれから処理しようとするテーブルオブジェクトのオブジェクトID(ここでは(32,0))を読み出し取得し、該取得したこれから処理しようとするテーブルオブジェクトのオブジェクトID(ここでは(32,0))が指すテーブル(ここでは「(総務部)社員テーブル」)に格納されている全てのオブジェクトについて、それぞれに対応するエントリ(該オブジェクトのオブジェクトIDと「キーに対応する項目」の値との組をいい、例えば、図5に含まれる例でいえば、(33,0)と「1982.4.1」、(33,1)と「1983.4.1」、(33,2)と「1990.3.5」)をインデックスに挿入する(s388)。なお、インデックスへのエントリ挿入部329は、これから処理しようとするテーブルオブジェクトのオブジェクトID(ここでは(32,0))に該当するテーブル(ここでは「(総務部)社員テーブル」)をデータ記憶部701にアクセスして読み出し、該読み出した処理対象テーブルに格納されている(含まれている)オブジェクトに含まれる「キーに対応する項目」に相当する値を用いて該エントリを作成することができる。なお、該エントリをインデックスに挿入する方法は、一般的なB−Tree又はR−Treeの構築動作に従って行うことができるので、ここでは説明を省略する。
【0089】
以上が処理Bであり、かかる処理Bは、処理Bが開始される際にオブジェクトID記憶部327が記憶しているオブジェクトID(ここでは(30,0))が指すテーブル(処理対象テーブル)に従属している(格納されている)全てのテーブルオブジェクト(「(総務部)社員テーブル」(オブジェクトID:(32,0))、「(営業部)社員テーブル」(オブジェクトID:(32,1))、「(製造部)社員テーブル」(オブジェクトID:(32,2)))の全てについて行われる。
全ての処理Bが完了した後、オブジェクト情報読み出し部321は階層差記憶部325にアクセスし階層差記憶部325が記憶している階層差(ここでは「0」)の値に1を加えた数(ここでは「1」)を階層差として階層差記憶部325に上書きして記憶させる(s389)(即ち、これによって階層差記憶部325が記憶している階層差が「1」増加する。)。
かかる処理A(処理Bの繰り返しを含む)が完了すると、図9に示すようにインデックス定義部301の動作が終了する。
【0090】
図11は、オブジェクト格納部401の動作を示すフローチャートである。図11を参照して、オブジェクト格納部401の動作について説明する。
まず、オブジェクト情報受信部411(追加情報受付手段)が、起動信号送信部205から起動信号を受信したか否か判断し(s451)、起動信号を受信したと判断した場合(YES)オブジェクト情報受信部411は、オブジェクト情報(新しく追加する情報)の入力フォーマットをLAN117を経由して前記図示しない他の情報端末に送信し(s452)入力を促し、起動信号を受信したと判断しない場合(NO)には再びs451へ戻る。
本システム101の動作ではないが、該入力フォーマットを受信した前記図示しない他の情報端末は、これらの項目に該当するデータを前記図示しない他の情報端末の使用者から受け付けた後、受け付けたデータをオブジェクト情報受信部411へ送信する。なお、オブジェクト情報は、種別(新規に追加作成するオブジェクトがテーブルオブジェクトであるか否か、つまり新規に追加されるデータがさらに子データを格納するか否かを示すものであり、本発明にいう種別データである。)、項目のデータ(オブジェクトの全ての項目のデータであり、階層構造データに追加する新規データである。)、格納先となるテーブルのオブジェクトID(新規に追加作成するオブジェクトの格納先となるテーブルのオブジェクトID、即ち、新規データたる該項目のデータを子データとして格納すべき親データのデータ特定データである格納先特定データである。)を含んで構成されている。なお、これらのうち格納先となるテーブルのオブジェクトID等のように、データ記憶部701における記憶データを参照しつつ決すべきものは、必要に応じ閲覧部601を通じて前記図示しない他の情報端末がデータ記憶部701の記憶内容を閲覧して決定される。
s452の後、前述のようにして前記図示しない他の情報端末から送信されたオブジェクト情報をオブジェクト情報受信部411は受信し、さらにオブジェクト情報受信部411は該受信したオブジェクト情報全てをオブジェクト情報記憶部421へ送信しオブジェクト情報記憶部421に記憶させる(s453)。
s453の後、オブジェクト情報受信部411は、テーブルオブジェクト読み出し部413に起動信号を送信し(s454)テーブルオブジェクト読み出し部413を起動させる。
【0091】
オブジェクト情報受信部411からs454において発せられた起動信号を受信したテーブルオブジェクト読み出し部413は、オブジェクト情報記憶部421にアクセスしオブジェクト情報記憶部421が記憶している「格納先となるテーブルのオブジェクトID」を読み出し取得する。そして、テーブルオブジェクト読み出し部413は、オブジェクト情報記憶部421から取得した「格納先となるテーブルのオブジェクトID」(格納先特定データ)に該当するオブジェクトIDに記憶されているテーブルオブジェクト(新たに作成するオブジェクトの格納先となる)をデータ記憶部701のオブジェクトIDに記録されているページから読み出し取得する。さらに、テーブルオブジェクト読み出し部413は、該読み出し取得したテーブルオブジェクトから新しいオブジェクトを記憶すべきページのページ番号を取得し、ページ番号記憶部423に送信しページ番号記憶部423に記憶させる(s455)。そして、テーブルオブジェクト読み出し部413は、オブジェクト作成・格納部415に起動信号を送信し(s456)オブジェクト作成・格納部415を起動させる。
s455及びs456を具体的に説明すれば、前述した表6に示すようなオブジェクト情報をオブジェクト情報記憶部421が記憶していたとすると、テーブルオブジェクト読み出し部413は、オブジェクト情報記憶部421が記憶している「格納先となるテーブルのオブジェクトID」たる(30,0)を取得し、そして「格納先となるテーブルのオブジェクトID」(30,0)に該当するオブジェクトIDに記憶されているテーブルオブジェクトをデータ記憶部701のオブジェクトIDに記録されているページ(30)から読み出し取得し、該読み出し取得したテーブルオブジェクトに含まれる新しいオブジェクトを記録すべきページのページ番号(32)を取得する。さらに、テーブルオブジェクト読み出し部413は、この取得した新しいオブジェクト(新しい企画部の情報)を記憶すべきページのページ番号たる「32」をページ番号記憶部423に送信しページ番号記憶部423に記憶させ(s455)、オブジェクト作成・格納部415に起動信号を送信し(s456)オブジェクト作成・格納部415を起動させる。
【0092】
テーブルオブジェクト読み出し部413からs456にて発せられた起動信号を受信したオブジェクト作成・格納部415は、オブジェクト情報記憶部421にアクセスしオブジェクト情報記憶部421に記憶されている内容(種別、項目のデータ)を読み出し取得して該取得した内容に従ってオブジェクトを作成する(s457)。そして、オブジェクト作成・格納部415は、ページ番号記憶部423にアクセスしページ番号記憶部423が記憶しているページ番号を読み出し取得し、該取得したページ番号に該当するデータ記憶部701のページにs457にて作成した該オブジェクトを書き込み記憶させると共に、このデータ記憶部701のページ番号記憶部423が記憶しているページ番号に該当するページに該オブジェクトが書き込まれ記憶されたとき、オブジェクト作成・格納部415は、該オブジェクトが書き込まれ記憶されたデータ記憶部701のオブジェクトIDを検出し取得し、さらに該検出し取得したオブジェクトIDをオブジェクトID記憶部425に送信しオブジェクトID記憶部425に記憶させる(s458)。
そして、オブジェクト作成・格納部415は、インデックス管理対象情報読み出し部417に起動信号を送信し(s459)インデックス管理対象情報読み出し部417を起動させる。
ここではテーブルオブジェクト読み出し部413とオブジェクト作成・格納部415とページ番号記憶部423とを含んで新規データ書き込み手段が構成されている。
【0093】
s457及びs458を具体的に説明すれば、表6に示すようなオブジェクト情報をオブジェクト情報記憶部421が記憶していたとすると、オブジェクト作成・格納部415は、オブジェクト情報記憶部421にアクセスしオブジェクト情報記憶部421に記憶されている内容(「種別」:テーブルオブジェクト、「項目のデータ」:部署番号:400、部署名:企画部)を読み出し取得して該取得した内容に従ってオブジェクトを作成する((「種別」:テーブルオブジェクト、「項目のデータ」:部署番号:400、部署名:企画部)をデータ記憶部701の後述するページに書き込み記憶させるのに適したかたちのデータに加工する。)(s457)。
そして、オブジェクト作成・格納部415は、ページ番号記憶部423にアクセスしページ番号記憶部423が記憶しているページ番号「32」を読み出し取得し、該取得したページ番号「32」に該当するデータ記憶部701のページに該作成したオブジェクトを書き込み記憶させる。このデータ記憶部701のページ番号「32」に該当するページに該作成したオブジェクトが書き込まれ記憶されたとき、オブジェクト作成・格納部415は、該作成したオブジェクトが書き込まれ記憶されたデータ記憶部701のオブジェクトID(例えば、(32,3))を検出し取得し、さらに該検出し取得したオブジェクトID(32,3)をオブジェクトID記憶部425に送信しオブジェクトID記憶部425に記憶させる(s458)。
s458の後、オブジェクト作成・格納部415は、インデックス管理対象情報読み出し部417に起動信号を送信し(s459)インデックス管理対象情報読み出し部417を起動させる。
【0094】
オブジェクト作成・格納部415からs459にて発せられた起動信号を受信したインデックス管理対象情報読み出し部417は、オブジェクト情報記憶部421にアクセスしオブジェクト情報記憶部421が記憶しているオブジェクト情報(例えば、表6のような情報)に含まれる「格納先となるテーブルのオブジェクトID」(格納先特定データ)を読み出し取得する。次いで、インデックス管理対象情報読み出し部417は、データ記憶部701にアクセスし該読み出し取得した「格納先となるテーブルのオブジェクトID」に該当するデータ記憶部701の「SYS_INDEXEDOBJS」(インデックス管理情報記憶手段)を検索する(s460)。この検索は、「SYS_INDEXEDOBJS」に格納されているオブジェクトの項目「テーブルのオブジェクトID」(データ特定データ)の値が、該読み出し取得した「格納先となるテーブルのオブジェクトID」(格納先特定データ)と同一のものを探すことをいう。
ここでインデックス管理対象情報読み出し部417が、前記検索にて「SYS_INDEXEDOBJS」に該当するオブジェクトが存するか否か判断し(s461)、該当するオブジェクトが存しないと判断した場合(NO)インデックス管理対象情報読み出し部417はこのオブジェクト情報がインデックス管理の対象になっていないと判断しオブジェクト格納部401の処理を終了する。一方、インデックス管理対象情報読み出し部417が、s460の前記検索にて「SYS_INDEXEDOBJS」に該当するオブジェクトが存すると判断した場合(YES)インデックス管理対象情報読み出し部417はこのオブジェクト情報がインデックス管理の対象になっていると判断し以下述べる単位処理を、s460の前記検索にて「SYS_INDEXEDOBJS」に該当すると見いだしたオブジェクトそれぞれについて実施する(前記検索にて「SYS_INDEXEDOBJS」に該当すると見いだしたオブジェクトと同じ数だけ該単位処理を行う)。
【0095】
前記単位処理とは、以下説明する処理をいう。
インデックス管理対象情報読み出し部417が、s460の前記検索にて見つけた「SYS_INDEXEDOBJS」に存するオブジェクト(以下、「該当オブジェクト」という。)に含まれる「階層差」を階層差記憶部429に送信し階層差記憶部429に記憶させると共に、該当オブジェクトに含まれる「インデックス番号」をインデックス情報記憶部427に送信しインデックス情報記憶部427に記憶させる(s462)。
そして、インデックス管理対象情報読み出し部417が、階層差記憶部429にアクセスし階層差記憶部429が記憶している「階層差」を読み出し取得し該取得した「階層差」が「0」か否か判断し(s463)、「階層差」が「0」と判断した場合(YES)にはインデックス情報読み出し部431に起動信号を送信し(s464)インデックス情報読み出し部431を起動させ、「階層差」が「0」と判断しない場合(NO)には後述のs465へ行く。
s465では、インデックス管理対象情報読み出し部417が、オブジェクト情報記憶部421にアクセスしオブジェクト情報記憶部421が記憶しているオブジェクト情報(表6のような情報)の「種別」を読み出しそれが「テーブルオブジェクト」であるか否か判断し(s465)、「種別」が「テーブルオブジェクト」であると判断した場合(YES)には階層差記憶部429が記憶している「階層差」の値から1減じた値を階層差記憶部429に記憶させ(s466)、そしてインデックス管理対象情報書き込み部419に起動信号を送信し(s467)インデックス管理対象情報書き込み部419を起動させる。また、s465において「種別」が「テーブルオブジェクト」であると判断しない場合(NO)には、再びs461へ戻る。
以上のように、ここではインデックス管理対象情報読み出し部417と階層差記憶部429とを含んで、インデックス管理判断手段が構成されている。
【0096】
s460以降の動作を具体的に説明すれば、インデックス管理対象情報読み出し部417が、s460にて「格納先となるテーブルのオブジェクトID」と「SYS_INDEXEDOBJS」に格納されているオブジェクトの「テーブルのオブジェクトID」とが同じになる「SYS_INDEXEDOBJS」に格納されているオブジェクトを探すので、「格納先となるテーブルのオブジェクトID」が表6に示す(30,0)であり、「SYS_INDEXEDOBJS」に格納されているオブジェクトが表5の(b)のようなものであれば、インデックス管理対象情報読み出し部417は、該当オブジェクトとして「・テーブルのオブジェクトID:(30,0) ・インデックス番号:1 ・階層差:1」を見いだすのでs461において「SYS_INDEXEDOBJS」に該当するオブジェクトが存すると判断し(YES)s462へ行く。s462では、インデックス管理対象情報読み出し部417が、s460の前記検索にて見つけた「SYS_INDEXEDOBJS」に存する該当オブジェクトに含まれる「階層差」たる「1」を階層差記憶部429に送信し階層差記憶部429に記憶させると共に、該当オブジェクトに含まれる「インデックス番号」たる「1」をインデックス情報記憶部427に送信しインデックス情報記憶部427に記憶させる(s462)。
s462の後、インデックス管理対象情報読み出し部417が、階層差記憶部429にアクセスし階層差記憶部429が記憶している「階層差」たる「1」を読み出し取得し該取得した「階層差」たる「1」が「0」か否か判断し(s463)ここでは「階層差」が「0」と判断しないので(NO)後述のs465へ行く。s465では、インデックス管理対象情報読み出し部417が、オブジェクト情報記憶部421にアクセスしオブジェクト情報記憶部421が記憶しているオブジェクト情報(表6のような情報)の「種別」を読み出しそれが「テーブルオブジェクト」であるか否か判断し(s465)、ここではそれが「テーブルオブジェクト」であるので「種別」が「テーブルオブジェクト」であると判断し(YES)階層差記憶部429が記憶している「階層差」の値から1減じた値たる「0」を階層差記憶部429に記憶させ(s466)、そしてインデックス管理対象情報書き込み部419に起動信号を送信し(s467)インデックス管理対象情報書き込み部419を起動させる。
【0097】
インデックス管理対象情報読み出し部417からs467にて発せられた起動信号を受信したインデックス管理対象情報書き込み部419(インデックス管理情報追加手段)は、オブジェクトID記憶部425にアクセスしオブジェクトID記憶部425に記憶されているオブジェクトIDを読み出し取得し、インデックス情報記憶部427にアクセスしインデックス情報記憶部427に記憶されているインデックス番号を読み出し取得し、階層差記憶部429にアクセスし階層差記憶部429に記憶されている階層差を読み出し取得し、そしてこれら読み出し取得したオブジェクトID、インデックス番号及び階層差の情報を含むオブジェクトを作成し、該オブジェクトをデータ記憶部701の「SYS_INDEXEDOBJS」に書き込み記憶させる(s471)。
s471の後、再びs461に戻る。
s471を具体的に説明すれば、インデックス管理対象情報書き込み部419は、オブジェクトID記憶部425にアクセスしオブジェクトID記憶部425に記憶されているオブジェクトIDたる(32,3)を読み出し取得し、インデックス情報記憶部427にアクセスしインデックス情報記憶部427に記憶されているインデックス番号たる「1」を読み出し取得し、階層差記憶部429にアクセスし階層差記憶部429に記憶されている階層差たる「0」を読み出し取得し、そしてこれら読み出し取得したオブジェクトID、インデックス番号及び階層差の情報を含むオブジェクトを作成し、該オブジェクトをデータ記憶部701の「SYS_INDEXEDOBJS」に書き込み記憶させる(表12)。
【0098】
(表12) 「SYS_INDEXEDOBJS」の記憶例
・テーブルのオブジェクトID:(32,3)
・インデックス番号:1
・階層差:0
【0099】
一方、s463にてインデックス管理対象情報読み出し部417が「階層差」が「0」と判断した場合にs464にて発する起動信号を受信したインデックス情報読み出し部431は、インデックス情報記憶部427にアクセスしインデックス情報記憶部427が記憶している「インデックス番号」を読み出し取得し、該読み出し取得した「インデックス番号」によりデータ記憶部701の「SYS_INDICES」を検索する。この検索によって、該当すると判断されたオブジェクトの全ての項目の値をインデックス情報読み出し部431は読み出し取得してインデックス情報記憶部427に送信しインデックス情報記憶部427に記憶させる(s468)。
以下、s468を具体的に説明するが、オブジェクト情報受信部411が表7に示すオブジェクト情報を受信し、該受信したオブジェクト情報をオブジェクト情報記憶部421が記憶している場合の具体例を用いる。オブジェクト格納部401のs460に至るまでの動作については、オブジェクト情報受信部411が表6に示すオブジェクト情報を受信したとする具体例を用いて既に説明した動作と同様であるため説明を省略する。オブジェクト情報受信部411が表7に示すオブジェクト情報を受信した場合と、表6に示すオブジェクト情報を受信した場合との異なる点は、各処理の対象となるデータの内容と新たに作成したオブジェクトをデータ記憶部701に記録する時の記録位置だけであり、具体的には以下の(1)〜(6)である。即ち、(1)s453においてオブジェクト情報記憶部421が記憶するオブジェクト情報が表6ではなく表7に示す情報となること、(2)s455においてオブジェクト情報記憶部421から取得する「格納先となるテーブルのオブジェクトID」が(30,0)ではなく(32,0)となること、(3)s455において格納先となるテーブルオブジェクトをデータ記憶部701から読み出すことにより取得される新しいオブジェクトを記録すべきページのページ番号が(32)ではなく(33)となること、(4)s457においてオブジェクト情報記憶部421に記憶されている内容に従ってオブジェクトを作成する時の内容が(「種別」:テーブルオブジェクト、「項目のデータ」:部署番号:400、部署名:企画部)ではなく(「種別」:テーブルオブジェクトではない、「項目のデータ」:社員番号:7095、氏名:笠原次郎、入社日:1993.4.1)となること、(5)s458においてページ番号記憶部423から取得するページ番号、及び作成したオブジェクトをデータ記憶部701に記録する時の記録位置を示すページ番号が「32」ではなく「33」となること、(6)s458において作成したオブジェクトをデータ記憶部701に記録した時に検出し取得されるオブジェクトIDが(32,3)ではなく(33,3)となること、である。以下は、s460からの説明である。
「格納先となるテーブルのオブジェクトID」が表7に示す(32,0)であり、「SYS_INDEXEDOBJS」に記憶されているオブジェクトが表5の(b)のようなものであれば、インデックス管理対象情報読み出し部417は、該当オブジェクトとして「・テーブルのオブジェクトID:(32,0) ・インデックス番号:1 ・階層差:0」を見いだすのでs461において「SYS_INDEXEDOBJS」に該当するオブジェクトが存すると判断し(YES)s462へ行く。
【0100】
s462では、インデックス管理対象情報読み出し部417が、s460の前記検索にて見つけた「SYS_INDEXEDOBJS」に存する該当オブジェクトに含まれる「階層差」たる「0」を階層差記憶部429に送信し階層差記憶部429に記憶させると共に、該当オブジェクトに含まれる「インデックス番号」たる「1」をインデックス情報記憶部427に送信しインデックス情報記憶部427に記憶させる(s462)。
s462の後、インデックス管理対象情報読み出し部417が、階層差記憶部429にアクセスし階層差記憶部429が記憶している「階層差」たる「0」を読み出し取得し該取得した「階層差」たる「0」が「0」か否か判断し(s463)ここでは「階層差」が「0」と判断されるので(YES)インデックス情報読み出し部431に起動信号を送信し(s464)インデックス情報読み出し部431を起動させる。
s464にて発する起動信号を受信したインデックス情報読み出し部431は、インデックス情報記憶部427にアクセスしインデックス情報記憶部427が記憶している「インデックス番号」たる「1」を読み出し取得し、該読み出し取得した「インデックス番号」によりデータ記憶部701の「SYS_INDICES」を検索する。この検索によって、該当すると判断されたオブジェクトの全ての項目の値をインデックス情報読み出し部431は読み出し取得してインデックス情報記憶部427に送信しインデックス情報記憶部427に記憶させる(s468)。このs468の後、インデックス情報記憶部427の記憶内容を表13に示す。
【0101】
(表13) インデックス情報記憶部427の記憶内容
・インデックス名:入社日インデックス
・保有元テーブルのオブジェクトID:(30,0)
・B−Tree/R−Treeの別:B−Tree
・階層差:1
・キーに対応する項目:入社日
・インデックス番号:1
・インデックスルートページ番号:38
【0102】
s468の後、インデックス情報読み出し部431は、インデックスへのエントリ挿入部433に起動信号を送信し(s469)インデックスへのエントリ挿入部433を起動させる。
インデックス情報読み出し部431からs469にて発せられた起動信号を受信したインデックスへのエントリ挿入部433は、オブジェクトID記憶部425に記憶されているオブジェクトID(33,3)と、オブジェクト情報記憶部421に記憶されているオブジェクト情報に含まれる「キーに対応する項目」(入社日)に対応するデータ(1993.4.1)と、をインデックスへ挿入する(s470)。
s470の後、再びs461へ行く。
以上のように、ここではインデックス情報読み出し部431とインデックスへのエントリ挿入部433とを含んでインデックス挿入手段が構成されている。
【0103】
図12は、インデックス検索部501の動作を示すフローチャートである。図12を参照して、インデックス検索部501の動作について説明する。
まず、検索情報受信部511が、起動信号送信部205から起動信号を受信したか否か判断し(s551)、起動信号を受信したと判断した場合(YES)検索情報受信部511は、検索情報(検索をどのように行うかに関する情報)の入力フォーマットをLAN117を経由して前記図示しない他の情報端末に送信し(s552)入力を促し、起動信号を受信したと判断しない場合(NO)には再びs551へ戻る。
本システム101の動作ではないが、該入力フォーマットを受信した前記図示しない他の情報端末は、これらの項目に該当するデータを前記図示しない他の情報端末の使用者から受け付けた後、受け付けたデータを検索情報受信部511へ送信する。なお、検索情報には、インデックス名(検索に使用するインデックスの名称)、保有元テーブルのオブジェクトID及び検索条件(比較演算の種別と条件値とによって構成される。)の3項目が含まれるが、これらのうちインデックス名やオブジェクトID等のように、データ記憶部701における記憶データを参照しつつ決すべきものは、必要に応じ閲覧部601を通じて前記図示しない他の情報端末がデータ記憶部701の記憶内容を閲覧して決定される。
【0104】
検索情報受信部511は、前記図示しない他の情報端末から前記検索情報を受信し、該受信した検索情報全てを検索情報記憶部521へ送信し検索情報記憶部521に記憶させ(s553)、さらに検索情報受信部511はインデックス情報読み出し部513へ起動信号を発し(s554)インデックス情報読み出し部513を起動させる。
検索情報受信部511からs554にて発せられた起動信号を受信したインデックス情報読み出し部513は、検索情報記憶部521にアクセスし検索情報記憶部521が記憶している検索情報から「インデックス名」と「保有元テーブルのオブジェクトID」とを読み出し取得する(s555)。そして、インデックス情報読み出し部513は、データ記憶部701にアクセスし該読み出し取得した「インデックス名」及び「保有元テーブルのオブジェクトID」を用いてデータ記憶部701の「SYS_INDICES」(既に説明した表5(a)に示すようなデータが記憶されている。)を検索し、これら「インデックス名」と「保有元テーブルのオブジェクトID」との両方に合致するオブジェクトに含まれる全ての項目の値を読み出し取得し、さらに、インデックス情報読み出し部513は、該読み出し取得したオブジェクトに含まれる全ての項目の値をインデックス情報記憶部523に送信しインデックス情報記憶部523に記憶させる(s556)。
その後、インデックス情報読み出し部513は、インデックス検索処理部515へ起動信号を発し(s557)インデックス検索処理部515を起動させる。
【0105】
s556を具体的に説明すれば、既述の表10に示した検索情報に含まれる「インデックス名」たる「入社日インデックス」及び「保有元テーブルのオブジェクトID」たる(30,0)を用いてデータ記憶部701の「SYS_INDICES」(既に説明した表5(a)に示すようなデータが記憶されている。)を検索し、これら「インデックス名」たる「入社日インデックス」及び「保有元テーブルのオブジェクトID」たる(30,0)との両方に合致するオブジェクトに含まれる全ての項目の値を読み出し取得する。該読み出し取得したオブジェクトに含まれる全ての項目の値の一例を既述の表11に示した。その後、インデックス情報読み出し部513は、表11に示したような該読み出し取得したオブジェクトに含まれる全ての項目の値をインデックス情報記憶部523に送信しインデックス情報記憶部523に記憶させ(以上、s556)、インデックス検索処理部515へ起動信号を発する(s557)。
【0106】
インデックス情報読み出し部513からs557にて発せられた起動信号を受信したインデックス検索処理部515は、インデックス情報記憶部523に記憶されている情報と検索情報記憶部521に記憶されている情報とを用いて、該当するインデックスを使用した検索処理を行い、該検索処理の結果を検索結果記憶部525へ送信し検索結果記憶部525に記憶させる(s558)。なお、かかるインデックスを使用した検索処理は、一般的なB−Tree又はR−Treeの既知の動作方法によって行うことができることは前述の通りであり、ここで行う検索処理(B−Tree又はR−Treeのいずれについても)においては、前記検索情報に合致する1又は2以上のオブジェクトのオブジェクトIDをインデックス検索処理部515が取得し、さらにインデックス検索処理部515が該取得したオブジェクトIDを検索結果記憶部525へ送信し検索結果記憶部525に記憶させる(即ち、s558において、検索結果記憶部525へ送信され検索結果記憶部525に記憶される前記検索処理の結果とは、ここでは具体的には前記検索情報に合致する1又は2以上のオブジェクトのオブジェクトIDをいう。)。
その後、インデックス検索処理部515は、オブジェクトデータ読み出し部517へ起動信号を発し(s559)オブジェクトデータ読み出し部517を起動させる。
【0107】
インデックス検索処理部515からs559にて発せられた起動信号を受信したオブジェクトデータ読み出し部517は、次に示す処理Fを検索結果記憶部525に記憶されているオブジェクトID全てについて行う。
即ち、処理Fは、オブジェクトに関するデータ読み出し(s560)とオブジェクトに関するデータの送信(s561)とを有している。具体的には、オブジェクトデータ読み出し部517は、検索結果記憶部525にアクセスし検索結果記憶部525が記憶しているオブジェクトID(前記検索情報に合致する1又は2以上のオブジェクトのオブジェクトID)を読み出し取得し、該読み出し取得したオブジェクトIDに従ってデータ記憶部701にアクセスし該オブジェクトIDに該当するオブジェクトに関するデータを読み出し取得する(s560)。そして、オブジェクトデータ読み出し部517は、s560にて該読み出し取得したオブジェクトに関するデータをオブジェクトデータ送信部519へ送信し、それを受けてオブジェクトデータ送信部519は、受信したオブジェクトに関するデータをLAN117を経由して前記図示しない他の情報端末(前記検索情報を送信した情報端末)に送信する(s561)(これによって前記図示しない他の情報端末(前記検索情報を送信した情報端末)は、該データを表示することができる。)。
このようなオブジェクトデータ読み出し部517によるオブジェクトに関するデータ読み出し(s560)とオブジェクトデータ送信部519によるオブジェクトに関するデータの送信(s561)とから構成される処理Fが、検索結果記憶部525に記憶されているオブジェクトID全てについて行われ、インデックス検索部501の動作が終了する。
【0108】
以上説明したように、本システム101は、先祖データ(上記の説明では、ページ30に記憶された部署テーブルが該当する。)から下位に位置する子孫データ(上記の説明では、ページ32に記憶された3つの部署に対応した社員テーブルが該当する。)へと辿ることができるよう親データにその子データを特定する子特定データ(ここではページ30に記憶された部署テーブルに記載されたページ番号(32)が該当する。)が関係付けられた階層構造データにインデックス付けを行う情報管理装置である。
そして、本システム101は、該階層構造データを、その各構成データ(上記の説明では、部署テーブルや3つの部署に対応した社員テーブル等が該当する。)が記憶されている記憶位置を含むデータ特定データ(ここではOIDが該当する。)に関連付けて記憶するデータ記憶手段たるデータ記憶部701と、これからインデックス付けを行う子孫データに対する先祖データ(上記説明では、ページ30に記憶された部署テーブルが該当する。)のデータ特定データたる先祖特定データである保有元テーブルのオブジェクトIDと、該先祖特定データにより特定される先祖データから該インデックス付けを行う子孫データの親データ(上記の説明では、ページ32に記憶された3つの部署に対応した社員テーブルが該当する。)までの階層差(上記説明では、「1」)と、を受け付けるインデックス定義情報受付手段たるインデックス定義情報受信部311と、該先祖特定データ(保有元テーブルのオブジェクトID)に従って該先祖データ(ページ30に記憶された部署テーブル)を該データ記憶手段(データ記憶部701)において特定し、該受け付けられた階層差(「1」)が0でなければ該特定された先祖データ(ページ30に記憶された部署テーブル)から該階層差(「1」)の分の下位の子孫データ(ページ32に記憶された3つの部署に対応した社員テーブルが該当する。)まで該子特定データ(部署テーブルに記載されたページ番号(32))に従って辿り該下位の子孫データの子データ(ページ32に記憶された3つの部署に対応した社員テーブルに格納されている社員情報が該当する。)の少なくとも一部の内容(入社日)にインデックス付けを行う、インデックス付け手段(インデックス管理対象情報書き込み部319とオブジェクト情報読み出し部321と階層差記憶部325とオブジェクトID記憶部327とインデックスへのエントリ挿入部329とを含んで構成されている。)と、を備えてなる。
【0109】
また、本システム101は、インデックス定義情報受付手段たるインデックス定義情報受信部311が、前記少なくとも一部の内容を特定するインデックス対象項目特定データたるキーに対応する項目「入社日」をさらに受け付け、インデックス付け手段(インデックス管理対象情報書き込み部319とオブジェクト情報読み出し部321と階層差記憶部325とオブジェクトID記憶部327とインデックスへのエントリ挿入部329とを含んで構成されている。)が、該受け付けられたインデックス対象項目特定データたるキーに対応する項目「入社日」によって特定されるもの「入社日」にインデックス付けを行うものである。
【0110】
さらに、本システム101は、これから生成されるインデックスを特定するインデックス特定データたるインデックス番号を取得するインデックス特定データ取得手段たるインデックス番号生成部313と、インデックス付け手段(インデックス管理対象情報書き込み部319とオブジェクト情報読み出し部321と階層差記憶部325とオブジェクトID記憶部327とインデックスへのエントリ挿入部329とを含んで構成されている。)が、前記受け付けられた階層差が0であれば前記特定された先祖データ(ページ30に記憶された部署テーブル)のデータ特定データ(ここではOID)と階層差が0であることを示す階層差データと該インデックス特定データ取得手段(インデックス番号生成部313)により該取得されたインデックス特定データ(インデックス番号)とを関連付けてインデックス管理情報として記憶させ、一方、前記受け付けられた階層差(ここでは「1」)が0でなければ前記特定された先祖データ(ページ30に記憶された部署テーブル)と前記階層差「1」の分の下位の子孫データ(ページ32に記憶された3つの部署に対応した社員テーブル)との両データ(ここではページ30に記憶された部署テーブルとページ32に記憶された3つの部署に対応した社員テーブルとの両データ)及び該両データの間に存する中間データ(ここでは存しない)の各々のデータについて該各々のデータのデータ特定データ(ここではOID)と、前記階層差「1」の分の下位の子孫データ(ページ32に記憶された3つの部署に対応した社員テーブル)から該各々のデータまでの階層差をあらわす階層差データと、該インデックス特定データ取得手段(インデックス番号生成部313)により該取得されたインデックス特定データ(インデックス番号)と、を関連付けてインデックス管理情報として記憶させるインデックス管理情報記憶手段たるデータ記憶部701の「SYS_INDEXEDOBJS」と、を、さらに備えてなる。
【0111】
また、本システム101は、前記階層構造データに追加する新規データたる前記項目のデータと、前記階層構造データにおいて該新規データを子データとして格納すべき親データのデータ特定データである格納先特定データ(格納先となるテーブルのオブジェクトID)と、該新規データがさらに子データを格納するか否かを示す種別データたる前記種別(新規データがテーブルオブジェクトであるか否か)と、を受け付ける追加情報受付手段たるオブジェクト情報受信部411と、該格納先特定データ(格納先となるテーブルのオブジェクトID)に示される親データの子データとして該新規データを記憶し、該記憶された新規データのデータ特定データを追加位置データ(ここではOID)として取得する新規データ書き込み手段(テーブルオブジェクト読み出し部413とオブジェクト作成・格納部415とページ番号記憶部423とを含んで構成される。)と、該格納先特定データ(格納先となるテーブルのオブジェクトID)と合致するデータ特定データを有する前記インデックス管理情報を前記インデックス管理情報記憶手段(データ記憶部701の「SYS_INDEXEDOBJS」)から読み出し、該読み出されたインデックス管理情報に含まれる階層差データが0か否か判断するインデックス管理判断手段(インデックス管理対象情報読み出し部417と階層差記憶部429とを含んで構成される)と、該インデックス管理判断手段によって階層差データが0と判断された場合に該読み出されたインデックス管理情報に含まれる前記インデックス特定データが示すインデックスに、該記録した新規データに含まれる少なくとも一部の内容にインデックス付けするインデックス挿入手段(インデックス情報読み出し部431とインデックスへのエントリ挿入部433とを含んで構成される。)と、該インデックス管理判断手段によって階層差データが0でなくかつ該種別データが該新規データがさらに子データを格納することを示すものであればデータ特定データとして該追加位置データ(OID)と前記階層差データとして該階層差データから1減じたものと該読み出した情報に含まれるインデックス特定データとを関連付けてインデックス管理情報として前記インデックス管理情報記憶手段(データ記憶部701の「SYS_INDEXEDOBJS」)に記憶させるインデックス管理情報追加手段(インデックス管理対象情報書き込み部419)と、をさらに備える。
【図面の簡単な説明】
【図1】一実施形態の本システムのハードウエア構成を示す概略ブロック図である。
【図2】本システムの機能ブロック図である。
【図3】要求受信部を詳細に示した機能ブロック図である。
【図4】インデックス定義部の詳細な機能ブロック図である。
【図5】データ記憶部における記憶領域において、記録されている部署テーブルと社員テーブルとを模式的に示した図である。
【図6】オブジェクト格納部の詳細な機能ブロック図である。
【図7】インデックス検索部の詳細な機能ブロック図である。
【図8】要求受信部の動作を示すフローチャートである。
【図9】インデックス定義部の動作を示すフローチャートである。
【図10】s366において発せられた起動信号を受信したオブジェクト情報読み出し部等が行う処理Aの詳細を示すフローチャートである。
【図11】オブジェクト格納部の動作を示すフローチャートである。
【図12】インデックス検索部の動作を示すフローチャートである。
【図13】データ記憶部における記憶領域において、記録されているシステムテーブル「SYS_INDICES」と「SYS_INDEXEDOBJS」とを模式的に示した図である。
【図14】データ記憶部701における記憶領域において、記録されている「SYS_INDICES」と「SYS_INDEXEDOBJS」とを模式的に示した図である。
【図15】インデックス付けの一例を概念的に示す図である。
【図16】インデックス付けがされたデータベースを概念的に示す図である。
【図17】図16に示したデータベースに各社員が所属する部署名を併記する場合の一例を示す図である。
【図18】図17(b)のテーブルが社員テーブルを格納している様子を示す概念図である。
【符号の説明】
101 本システム
113 キーボード
115 モニタ
119 ハードディスク
110a CPU
110b RAM
110c ROM
110d インターフェイス
117 LAN
201 要求受信部
203 要求信号受信部
205 起動信号送信部
301 インデックス定義部
311 インデックス定義情報受信部
313 インデックス番号生成部
315 インデックス作成部
317 インデックス情報書き込み部
319 インデックス管理対象情報書き込み部
321 オブジェクト情報読み出し部
323 インデックス情報記憶部
325 階層差記憶部
327 オブジェクトID記憶部
329 インデックスへのエントリ挿入部
401 オブジェクト格納部
411 オブジェクト情報受信部
413 テーブルオブジェクト読み出し部
415 オブジェクト作成・格納部
417 インデックス管理対象情報読み出し部
419 インデックス管理対象情報書き込み部
421 オブジェクト情報記憶部
423 ページ番号記憶部
425 オブジェクトID記憶部
427 インデックス情報記憶部
429 階層差記憶部
431 インデックス情報読み出し部
433 インデックスへのエントリ挿入部
501 インデックス検索部
511 検索情報受信部
513 インデックス情報読み出し部
515 インデックス検索処理部
517 オブジェクトデータ読み出し部
519 オブジェクトデータ送信部
521 検索情報記憶部
523 インデックス情報記憶部
525 検索結果記憶部
601 閲覧部
701 データ記憶部

Claims (6)

  1. 先祖データから下位に位置する子孫データへと辿ることができるよう親データにその子データを特定する子特定データが関係付けられた階層構造データにインデックス付けを行う情報管理装置であって、
    該階層構造データを、その各構成データが記憶されている記憶位置を含むデータ特定データに関連付けて記憶するデータ記憶手段と、
    これからインデックス付けを行う子孫データに対する先祖データのデータ特定データたる先祖特定データと、該先祖特定データにより特定される先祖データから該インデックス付けを行う子孫データの親データまでの階層差と、を受け付けるインデックス定義情報受付手段と、
    該先祖特定データに従って該先祖データを該データ記憶手段において特定し、該受け付けられた階層差が0でなければ該特定された先祖データから該階層差の分の下位の子孫データまで該子特定データに従って辿り該下位の子孫データの子データの少なくとも一部の内容にインデックス付けを行う、インデックス付け手段と、
    を備えてなる、情報管理装置。
  2. 前記インデックス定義情報受付手段が、前記少なくとも一部の内容を特定するインデックス対象項目特定データをさらに受け付け、
    前記インデックス付け手段が、該受け付けられたインデックス対象項目特定データによって特定されるものにインデックス付けを行うものである、請求項1に記載の情報管理装置。
  3. これから生成されるインデックスを特定するインデックス特定データを取得するインデックス特定データ取得手段と、
    前記インデックス付け手段が、前記受け付けられた階層差が0であれば前記特定された先祖データのデータ特定データと階層差が0であることを示す階層差データと該インデックス特定データ取得手段により該取得されたインデックス特定データとを関連付けてインデックス管理情報として記憶させ、一方、前記受け付けられた階層差が0でなければ前記特定された先祖データと前記階層差の分の下位の子孫データとの両データ及び該両データの間に存する中間データの各々のデータについて該各々のデータのデータ特定データと、前記階層差の分の下位の子孫データから該各々のデータまでの階層差をあらわす階層差データと、該インデックス特定データ取得手段により該取得されたインデックス特定データと、を関連付けてインデックス管理情報として記憶させるインデックス管理情報記憶手段と、
    を、さらに備えてなる、請求項1又は2に記載の情報管理装置。
  4. 請求項3に記載の情報管理装置であって、
    前記階層構造データに追加する新規データと、前記階層構造データにおいて該新規データを子データとして格納すべき親データのデータ特定データである格納先特定データと、該新規データがさらに子データを格納するか否かを示す種別データと、を受け付ける追加情報受付手段と、
    該格納先特定データに示される親データの子データとして該新規データを記憶し、該記憶された新規データのデータ特定データを追加位置データとして取得する新規データ書き込み手段と、
    該格納先特定データと合致するデータ特定データを有する前記インデックス管理情報を前記インデックス管理情報記憶手段から読み出し、該読み出されたインデックス管理情報に含まれる階層差データが0か否か判断するインデックス管理判断手段と、
    該インデックス管理判断手段によって階層差データが0と判断された場合に該読み出されたインデックス管理情報に含まれる前記インデックス特定データが示すインデックスに、該記録した新規データに含まれる少なくとも一部の内容にインデックス付けするインデックス挿入手段と、
    該インデックス管理判断手段によって階層差データが0でなくかつ該種別データが該新規データがさらに子データを格納することを示すものであればデータ特定データとして該追加位置データと前記階層差データとして該階層差データから1減じたものと該読み出した情報に含まれるインデックス特定データとを関連付けて前記インデックス管理情報として前記インデックス管理情報記憶手段に記憶させるインデックス管理情報追加手段と、
    をさらに備えるものである、情報管理装置。
  5. 請求項1乃至4のいずれかに記載の前記情報管理装置をコンピュータに実現させるためのプログラム。
  6. 請求項1乃至4のいずれかに記載の前記情報管理装置をコンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記憶媒体。
JP2001349326A 2001-11-14 2001-11-14 情報管理装置 Expired - Lifetime JP3662533B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001349326A JP3662533B2 (ja) 2001-11-14 2001-11-14 情報管理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001349326A JP3662533B2 (ja) 2001-11-14 2001-11-14 情報管理装置

Publications (2)

Publication Number Publication Date
JP2003150642A JP2003150642A (ja) 2003-05-23
JP3662533B2 true JP3662533B2 (ja) 2005-06-22

Family

ID=19162010

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001349326A Expired - Lifetime JP3662533B2 (ja) 2001-11-14 2001-11-14 情報管理装置

Country Status (1)

Country Link
JP (1) JP3662533B2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3384017B2 (ja) * 1993-03-26 2003-03-10 凸版印刷株式会社 データ抽出システム
JPH10187745A (ja) * 1996-12-26 1998-07-21 Hitachi Ltd 部分文字列検索装置および部分文字列検索方法
JPH10333970A (ja) * 1997-05-30 1998-12-18 Nippon Telegr & Teleph Corp <Ntt> 複数の情報共有装置に分散されている情報の共有方法および情報共有装置

Also Published As

Publication number Publication date
JP2003150642A (ja) 2003-05-23

Similar Documents

Publication Publication Date Title
US20090228482A1 (en) Network search method, system and device
CN102184211A (zh) 文件系统和检索、写入、修改或删除文件的方法与装置
CN106970958B (zh) 一种流文件的查询与存储方法和装置
US6714946B1 (en) Data management system using a plurality of data operating modules
JP2005227851A (ja) 構造化データ記憶方法および装置
JP2003067403A (ja) 構造化文書管理装置及び構造化文書管理方法、検索装置、検索方法
CN107992292A (zh) 一种通过schema格式进行数据库定义的方法
JP3233058B2 (ja) 文書管理システム
US10089361B2 (en) Efficient mechanism for managing hierarchical relationships in a relational database system
JP3662533B2 (ja) 情報管理装置
JP3752945B2 (ja) ディレクトリ検索システム及び方法、ディレクトリ検索プログラムを記録したコンピュータ読取可能な記録媒体
CN115329504B (zh) 一种基于复杂产品结构的bom构建方法
CN100533433C (zh) 用于查找数据库的方法和数据库
JP3632643B2 (ja) 構造化文書管理装置
CN109741820A (zh) 医学设备操作页面的配置方法、装置、医学设备及计算机存储介质
CN101609462B (zh) 一种个人数据空间环境下的任务识别系统和方法
JP3709890B2 (ja) 文字列検索装置
JP2000242538A (ja) ディレクトリ検索システム、ディレクトリ検索方法およびディレクトリ検索用プログラムを記録したコンピュータ読み取り可能な記録媒体
JP4045283B2 (ja) データ管理装置およびデータ管理方法
JP2003288365A (ja) 付加情報管理方法及び付加情報管理システム
JP2008310800A (ja) データベースおよび情報端末の表示方法
JP3328197B2 (ja) 製品データの管理方法
JP4573684B2 (ja) 情報検索装置、情報検索方法、情報検索用プログラム、および記録媒体
JP3895898B2 (ja) Rdbシステム
JP2003157249A (ja) 文書の圧縮格納方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20040901

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20040901

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041001

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050210

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050222

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050318

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050323

R150 Certificate of patent or registration of utility model

Ref document number: 3662533

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110401

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120401

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130401

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130401

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140401

Year of fee payment: 9

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term