JP2004185270A - アンロードプログラム,ロードプログラム及びデータ移行方法 - Google Patents
アンロードプログラム,ロードプログラム及びデータ移行方法 Download PDFInfo
- Publication number
- JP2004185270A JP2004185270A JP2002350899A JP2002350899A JP2004185270A JP 2004185270 A JP2004185270 A JP 2004185270A JP 2002350899 A JP2002350899 A JP 2002350899A JP 2002350899 A JP2002350899 A JP 2002350899A JP 2004185270 A JP2004185270 A JP 2004185270A
- Authority
- JP
- Japan
- Prior art keywords
- index
- object identifier
- record
- attribute
- class
- 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.)
- Withdrawn
Links
Images
Abstract
【課題】オブジェクトのデータ移行に伴って、オブジェクト識別子をキー値として持つインデックステーブルが移行先のシステムにおいて効率的に作成され得るデータ移行方法を、提供する。
【解決手段】オブジェクト11のデータ移行時において、オブジェクト11の何れかの属性にインデックスが設定されている場合には、そのインデックスのアンロードファイルを生成するように、移行元のシステム10を構成する。また、オブジェクトアンロードファイル内のレコードに基づいてオブジェクトを生成する際には、クラス番号変換テーブル及びインスタンス番号変換テーブルを生成するように、移行先のシステム20を構成する。さらに、クラス番号変換テーブル及びインスタンス番号変換テーブルを参照しつつ、インデックスアンロードファイル内のレコードに基づいてインデックステーブルを生成するように、移行先のシステム20を構成する。
【選択図】 図13
【解決手段】オブジェクト11のデータ移行時において、オブジェクト11の何れかの属性にインデックスが設定されている場合には、そのインデックスのアンロードファイルを生成するように、移行元のシステム10を構成する。また、オブジェクトアンロードファイル内のレコードに基づいてオブジェクトを生成する際には、クラス番号変換テーブル及びインスタンス番号変換テーブルを生成するように、移行先のシステム20を構成する。さらに、クラス番号変換テーブル及びインスタンス番号変換テーブルを参照しつつ、インデックスアンロードファイル内のレコードに基づいてインデックステーブルを生成するように、移行先のシステム20を構成する。
【選択図】 図13
Description
【0001】
【発明の属する技術分野】
本発明は、オブジェクト指向データベース管理システムに対し、それに管理されているオブジェクトの中から純粋なデータ(属性値)部分だけを取り出させてそれらを移行用ファイルに格納させるアンロードプログラムと、移行先のシステムに対して移行用ファイル内のレコードを利用させてオブジェクトを生成させるロードプログラムと、オブジェクトの中から純粋なデータ(属性値)部分だけを取り出してそれらを別のシステムへ移行させる際のデータ移行方法とに、関する。
【0002】
【従来の技術】
周知のように、オブジェクト指向データベース管理システム(OODBMS:Object Oriented DataBase Management System)の中には、ハードディスク等の記録装置内を物理的順序で検索するときよりも素早く検索結果を取得できるようにするための検索高速化技術が採用されているものがある(例えば、特許文献1,2参照)。このような検索高速化技術が採用されたOODBMSには、記録装置内でのオブジェクトの記録位置情報とオブジェクトのもつ属性値とからなるインデックスデータが格納されたインデックステーブルが、用意されている。そして、このようなOODBMSは、或る属性値を検索キーとしてオブジェクトの抽出を受け付けた場合には、上述したインデックステーブル内から当該属性値に一致するものを検出し、検出された属性値に対応する記録位置情報をそのテーブル内から読み出し、その記録位置情報にて示される記録装置内の位置へ直接アクセスし、そのオブジェクトの持つ属性値などを読み出す。上述したインデックステーブルは、オブジェクトが持つ幾つかの属性のうち、頻繁に検索されることが想定される属性に対して作成されており、そのような属性が幾つかある場合には、属性毎に作成される。
【0003】
ところで、OODBMSの運用上、同一又は他のシステムにデータ(オブジェクトの有する各属性値)を移行する作業が行われることがある。この作業は、例えば、システムの記憶容量や管理機能の向上を図るため、データベースのバックアップを作成するため、複数のシステムに分けて運用していたデータベースを一つのシステムに統合するため、或いは、記録装置内でデータ(オブジェクトなど)を再配置(デフラグ)するために、行われる。このようなデータ移行では、移行前にオブジェクトに付与されていたオブジェクト識別子(クラス番号とインスタンス番号との組み合わせ)が一旦破棄され、移行後に、移行先のOODBMSによって、そのシステム内でのみ有効なオブジェクト識別子が新たにオブジェクトに付与される。これは、通常、OODBMSでは、データベース管理プログラムの機能により、システム内だけで一意なオブジェクト識別子を各オブジェクトに付与して管理しているためである。
【0004】
【特許文献1】
特開平06−250912号公報
【特許文献2】
特許第2708294号公報
【0005】
【発明が解決しようとする課題】
上述したようなOODBMSでは、オブジェクトに対し、数値や文字列を属性値として持たせることができるが、それだけではなく、他のオブジェクトのオブジェクト識別子を属性値として持たせることもできる。このようにオブジェクトが属性値として他のオブジェクト識別子を持つことは、一般に、「リンクを貼る」と、称されている。そして、このように属性値がオブジェクト識別子である属性に対して上記検索高速化技術を適用する場合、OODBMSには、オブジェクトのオブジェクト識別子とそのオブジェクトの記録位置情報とを対応付けるインデックステーブルが用意されることとなる。
【0006】
このような事情の下、上述したようなデータ移行において、オブジェクトとともに、オブジェクト識別子をキー値として持つインデックステーブルをそのまま移行したとしても、移行先ではオブジェクトには、新たなオブジェクト識別子が定義されてしまうため、検索時にそのインデックステーブルが参照されても、正しいオブジェクトを記録装置から読み出せない。このため、従来のデータ移行では、オブジェクト識別子をキー値として持つインデックステーブルを移行することはせず、オブジェクトのデータ移行が終わった後に、移行先のシステムに対して新たなインデックステーブルを一から作成させていた。
【0007】
ところが、上述した検索高速化技術は、例えば十万件といった膨大な数のデータの中から目的のデータを高速に検出するためのものであるので、インデックステーブルにも、多量のインデックスデータが格納される。このため、オブジェクト識別子をキー値として持つインデックステーブルを一から作成するのに非常に時間と手間が掛かってしまうという問題があった。
【0008】
そこで、本発明の課題は、オブジェクトのデータ移行に伴って、オブジェクト識別子をキー値として持つインデックステーブルが移行先のシステムにおいて効率的に作成され得るデータ移行方法と、このようなデータ移行方法を実現するための装置としてコンピュータを機能させるアンロードプログラム及びロードプログラムとを、提供することにある。
【0009】
【課題を解決するための手段】
上記の課題を解決するために、本発明によるデータ移行方法は、以下のような構成を採用した。
【0010】
すなわち、本発明によるデータ移行方法は、或るオブジェクト指向データベース管理システムがクラス毎に管理している多数のオブジェクトのそれぞれが、オブジェクト識別子を有しているとともに、他のオブジェクト識別子を属性値として有している場合において、そのオブジェクトが有する各属性値を、他のオブジェクト指向データベース管理システムへ移行するとともに、前記属性値についてのインデックステーブル内のインデックスデータをも移行する際のデータ移行方法であって、移行元のオブジェクト指向データベース管理システムが、前記オブジェクトのオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルをクラス毎に生成するとともに、前記インデックスデータ中のキー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記インデックステーブルからキー値が読み出される順に蓄積されているインデックスアンロードファイルを生成し、移行先のオブジェクト指向データベース管理システムが、前記オブジェクトアンロードファイルを取得した場合には、前記オブジェクトアンロードファイルからレコードを一つずつ読み出す毎に、レコード中の属性値の集合に新たなオブジェクト識別子を採番し、一意な記録位置情報が定義された記録装置内の位置に前記属性値の集合を記録するするとともに、データ移行前にその属性値の集合に付されていたオブジェクト識別子と前記新たなオブジェクト識別子とについてのクラス番号対応表及びインスタンス番号対応表を作成し、前記インデックスアンロードファイルを取得した場合には、前記インデックスアンロードファイルからレコードを一つずつ読み出す毎に、レコード中にキー値として含まれるオブジェクト識別子を、前記各対応表を参照して、対応する新たなオブジェクト識別子に変換するとともに、前記レコード中のオブジェクト識別子を、前記各対応表を参照して、対応する新たなオブジェクト識別子に変換し、変換後のオブジェクト識別子に対応する記録位置情報と前記キー値としての前記新たなオブジェクト識別子とからなるインデックスデータをインデックステーブルに格納することを、特徴としている。
【0011】
このように構成されると、移行前のオブジェクト指向データベース管理システムでは、データ移行時に、オブジェクトアンロードファイルとともにインデックスアンロードファイルが作成され、移行先のオブジェクト指向データベース管理システムでは、オブジェクトアンロードファイル内のレコードからオブジェクトを生成する際に、クラス番号対応表及びインスタンス対応表が作成され、インデックスアンロードファイル内のレコードと各対応表とに基づいて、インデックステーブルが作成される。従って、本発明のデータ移行方法によれば、インデックスのデータ移行時に、インデックスアンロードファイル並びにクラス番号対応表及びインスタンス対応表が利用されるので、オブジェクト識別子をキー値として持つインデックステーブルを一から作成することに比べると、移行先のシステムにおいてインデックステーブルが効率的に作成される。また、移行先のシステムにおいて、オブジェクトのデータ移行とほぼ同時に、インデックステーブルが作成される。
【0012】
また、上記の課題を解決するために、本発明によるアンロードプログラムは、以下のような構成を採用した。
【0013】
すなわち、本発明によるアンロードプログラムは、オブジェクト識別子を定義付けられることによって何れかのクラスに所属するように管理されるとともに他のオブジェクトのオブジェクト識別子を属性値として有している多数のオブジェクト,及び、属性値についてのインデックスデータを記録している記録装置に繋がれるコンピュータに対し、前記記録装置内のオブジェクトのオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルをクラス毎に生成させ、前記インデックスデータ中のキー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記キー値としてのオブジェクト識別子の順に蓄積されているインデックスアンロードファイルを生成させることを、特徴としている。
【0014】
また、上記の課題を解決するために、本発明によるロードプログラムは、以下のような構成を採用した。
【0015】
すなわち、本発明によるロードプログラムは、各種の情報を記録する記録装置に繋がれるコンピュータに対し、オブジェクトが持つオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルを取得した場合には、前記オブジェクトアンロードファイルからレコードを一つずつ読み出させ、前記レコードを一つ読み出す毎に、前記レコード中の属性値の集合に新たなオブジェクト識別子を採番させ、一意な記録位置情報が定義された前記記録装置内の位置に前記属性値の集合を記録させ、データ移行前にその属性値の集合に付されていたオブジェクト識別子と前記新たなオブジェクト識別子とについてのクラス番号対応表及びインスタンス番号対応表を作成させ、キー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記キー値としてのオブジェクト識別子の順に蓄積されているインデックスアンロードファイルを取得した場合には、前記インデックスアンロードファイルからレコードを一つずつ読み出させ、前記レコードを一つ読み出す毎に、前記レコード中にキー値として含まれるオブジェクト識別子を、前記各対応表を参照させて、対応する新たなオブジェクト識別子に変換させ、前記レコード中に含まれるキー値ではないオブジェクト識別子を、前記各対応表を参照して、対応する新たなオブジェクト識別子に変換させ、変換後のオブジェクト識別子に対応する記録位置情報と前記キー値としての新たなオブジェクト識別子とからなるインデックスデータをインデックステーブルに格納させることを、特徴としている。
【0016】
従って、これらのアンロードプログラム及びロードプログラムによれば、本発明のデータ移行方法を実現するための装置として移行元及び移行先のコンピュータを機能させることができることになる。
【0017】
【発明の実施の形態】
以下、図面に基づいて本発明の実施形態を説明する。
【0018】
図1は、本発明による実施形態の概略的な構成図である。本実施形態では、2台のシステム10,20が使用される。一方のシステム10は、オブジェクト指向データベース管理システムとして以前より利用されていたものであり、多数のオブジェクトを記録している。他方のシステム20は、新たなオブジェクト指向データベース管理システムとして利用されるために用意されたものである。
【0019】
これらシステム10,20は、何れも、キーボードやマウス等の入力装置や表示装置や本体を備える一般的なコンピュータである。これらシステム10,20の本体には、図示されていないが、RAM(Random Access Memory)やハードディスクドライブ等の記録装置,モデムやLANボード等の通信制御回路,及び、CPU(Central Processing Unit)が、内蔵されている。両システム10,20の通信制御回路同士は、ネットワーク等を介して、或いは直接に、接続されており、互いにデータを送受信することができる。
【0020】
また、両システム10,20には、フレキシブルディスクドライブ,及び、コンパクトディスクドライブが、備えられている。フレキシブルディスクドライブやコンパクトディスクドライブは、コンピュータ可読媒体であるフレキシブルディスクFDやコンパクトディスクCDに格納されたデータやプログラムを読み出し、或いは、これらディスクFD,CDへデータやプログラムを書き込む装置である。フレキシブルディスクFDやコンパクトディスクCDから読み出されたデータやプログラムは、上記記録装置にインストールされる。
【0021】
図2は、両システム10,20のハードディスクドライブ(HDD)10a,20a内に記録されているデータやプログラムを説明するための説明図である。システム10のHDD10aには、多数のオブジェクト11及び多数のインデックステーブル12が記録されているとともに、データベース管理プログラム13及びアンロードプログラム14がインストールされている。また、システム20のHDD20aには、データベース管理プログラム21及びロードプログラム22がインストールされている。
【0022】
<オブジェクト>
まず、オブジェクト11について、説明する。図3は、オブジェクト11を概念的に説明するために作成されたテーブルである。オブジェクト指向データベースにおいては、一つのテーブルに蓄積されているレコードの一つ一つがオブジェクトと称され、テーブルによって纏められるオブジェクト11の集合体がクラスと称される。一つのクラスに所属するオブジェクト11は、そのクラスのインスタンスと称され、オブジェクト11には、そのクラス内で一意なインスタンス番号が付される。また、オブジェクト11には、所属するクラスを全てのクラスの中から識別するためのクラス番号が付される。オブジェクト11に付されるクラス番号及びインスタンス番号を組み合わせたものが、そのオブジェクト11を全体の中から一意に識別するための識別子として利用され、この識別子は、オブジェクト識別子(OID:Object Identification)と称されている。なお、OIDは、例えばクラス番号が31であってインスタンス番号が01である場合には、31:01と表記される。また、上述したように幾つかの属性値の集まりであるオブジェクト11は、HDD10a内では、全体で一つの位置に記録される。さらに、各オブジェクト11は、HDD10a内では、互いに無関係な個別の位置に、記録されており、その記録位置には、HDD10a内で一意なレコードアドレスが定義される。このレコードアドレスとOIDは、常に対応付けられた状態で、後述するデータベース管理プログラム13によって管理されている。そして、システム10にOIDが入力されると、後述するデータベース管理プログラム13は、CPU10bに対し、このOIDに対応するレコードアドレスにアクセスさせ、このレコードアドレスにあるオブジェクト11に含まれる各属性値を直接読み出させる。以上のことから、オブジェクト11は、レコードアドレスとOIDとが定義付けられることにより、上述したテーブルを概念的に構成する。
【0023】
なお、図3には、四つのテーブルが示されている。本実施形態では、四つのテーブルによって纏められるオブジェクトの集合体に対し、それぞれクラス31,41,42,43のクラス番号を定義している。クラス31を概念的に示すテーブルは、「レコードアドレス」,「OID」,「属性1」,「属性2」及び「属性3」の項目欄(フィールド)からなるレコードをインスタンス(オブジェクト)毎に作成することによって、構成されている。「属性2」及び「属性3」には、オブジェクト11の有する属性値としての数値及び名字が、記録されており、「属性1」には、クラス41,42,43に所属するオブジェクト11のOIDが、記録されている。
【0024】
また、クラス41,42,43を概念的に示すテーブルは、「レコードアドレス」,「OID」,「属性4」及び「属性5」の項目欄(フィールド)からなるレコードをインスタンス(オブジェクト)毎に作成することによって、構成されている。「属性4」及び「属性5」には、オブジェクト11の有する属性値としての県名及び市区町村名が、記録されている。
【0025】
このような関係を有する多数のオブジェクト11を有するシステム10において、例えばクラス31のインスタンス04であるオブジェクト11の「属性2」の値を要求する入力があった場合には、後述するデータベース管理プログラム13は、CPU10bに対し、まず、OID=31:04に対応するレコードアドレス(0001021)にアクセスさせ、そのレコードアドレス(0001021)にあるオブジェクトに含まれる「属性2」の値(151)を読み出させ、その値(151)を出力させる。
【0026】
また、例えばクラス31のインスタンス04であるオブジェクト11の「属性1」の値を要求する入力があった場合には、後述するデータベース管理プログラム13は、CPU10bに対し、まず、OID=31:04に対応するレコードアドレス(0001021)にアクセスさせ、そのレコードアドレス(0001021)にあるオブジェクトに含まれる「属性1」の値(43:03)を読み出させ、続いて、OID=43:03に対応するレコードアドレス(0001422)にアクセスさせ、そのレコードアドレス(0001422)にあるオブジェクトに含まれる「属性4」及び「属性5」の値(京都府,八幡市)を読み出させ、その値(京都府,八幡市)を出力させる。
【0027】
このクラス31の「属性1」のように、属性値としてOIDが記録されていると、クラス41,42,43のインスタンス(オブジェクト)に含まれる属性値(県名及び市区町村名)が、あたかもクラス31のインスタンス(オブジェクト)に含まれる属性値として出力される。このため、クラス31の「属性1」のように属性値としてOIDが記録されることは、通常、「リンクが貼られる」と、称されている。
【0028】
<インデックステーブル>
次に、インデックステーブル12について、説明する。インデックスは、大量なデータの中から目的のデータを高速に検索するためのデータベース用の技術である。例えば、或るクラスの或る属性について当該技術を適用する場合、すなわち、その属性の値が指定されたときにその属性値を含むオブジェクトをそのクラスの全インスタンスの中から抽出できるようにする場合、事前に、その属性の値とその値を有するオブジェクトのレコードアドレスとからなるレコード(通常、インデックスデータと称する)が蓄積されたインデックステーブルが、作成される。また、そのテーブル内のレコードは、属性値であるキー値が昇順又は降順となるように、ソートされている。そして、或るクラスに所属する多数のインスタンスの中から任意の属性値を持つオブジェクトの抽出を要求する入力があった場合において、そのクラスのその属性にインデックスが作成されていたときは、後述するデータベース管理プログラム13は、CPU10bに対し、その属性用のインデックステーブル内を任意の属性値を検索キーとして検索させ、当該属性値と一致するキー値が存在した場合には、そのキー値に対応するレコードアドレスをインデックステーブル内から読み出させ、読み出されたレコードアドレスにあるオブジェクトに含まれる他の属性値やOIDを読み出させ、読み出された属性値やOIDを出力させる。このように、インデックステーブルを用いることにより、任意の属性値を持つオブジェクトを素早く検索することができる。
【0029】
また、インデックスを用いた検索高速化技術では、一クラス内のオブジェクトの数量が膨大である場合(例えばオブジェクトの数量が十万個である場合)には、インデックステーブルが、所定個数(例えば千個)のインデックスデータを持つテーブル毎に分割され、分割後のそれぞれがリーフインデックステーブルとして作成される。また、リーフインデックステーブルに蓄積されるキー値の範囲を示す索引情報とそのリーフインデックステーブルのレコードアドレスとからなるレコードが蓄積されたルートインデックステーブルが、さらに作成される。そして、或るクラスに属する多数のインスタンスの中から任意の属性値を持つオブジェクトの抽出を要求する入力があった場合に、そのクラスのその属性にインデックスが作成されていたときは、後述するデータベース管理プログラム13は、CPU10bに対し、その属性用のルートインデックステーブル内を任意の属性値を検索キーとして検索させ、当該属性値を範囲に含む索引情報が存在した場合には、その索引情報に対応するレコードアドレスをルートインデックステーブルから読み出させ、読み出されたレコードアドレスにアクセスさせる。さらに、当該プログラム13は、CPU10bに対し、そのレコードアドレスにあるリーフインデックステーブル内を当該属性値を検索キーとして検索させ、当該属性値と一致するキー値が存在した場合には、そのキー値に対応するレコードアドレスを読み出させ、読み出されたレコードアドレスにアクセスさせ、そのレコードアドレスにあるオブジェクトに含まれる他の属性値やOIDを読み出させ、読み出された属性値やOIDを出力させる。このように一つのルートインデックステーブルと多数のリーフインデックステーブルからなるデータ構造は、通常、Bツリー型データ構造と称されている。但し、ここで説明したBツリー型データ構造は、2階層であったが、3階層以上とすることもできる。その場合、ルートインデックステーブルと多数のリーフインデックステーブルの中間の階層として、ノードインデックステーブルが幾つか作成される。
【0030】
なお、図3のクラス31の「属性1」のように、属性値としてOIDが記録されている属性に対してインデックスを作成する場合、ルートインデックステーブルの下位の階層のインデックステーブルとして、クラス毎のノードインデックステーブルが作成される。図4は、リンクが貼られた属性に対してインデックスが作成された例を概念的に説明するために作成されたテーブルである。図4に示されるように、ルートインデックステーブルは、ノードインデックステーブルに蓄積されるOIDの範囲を示す索引情報(この索引情報は、通常、その範囲に属する属性値のうちの最大値である)とそのノードインデックステーブルのレコードアドレスとからなるレコードがノードインデックステーブル毎に蓄積されたものとなる。また、ノードインデックスは、その下位の階層のリーフインデックステーブルに蓄積されるOIDの範囲を示す索引情報とそのリーフインデックステーブルのレコードアドレスとからなるレコードがリーフインデックステーブル毎に蓄積されたものとなる。また、リーフインデックステーブルは、属性値であるキー値とその属性値を持つオブジェクトのレコードアドレスとからなるインデックスデータが蓄積されたものである。
【0031】
なお、上述したように、インデックスは、オブジェクトの数量が膨大である場合に用いられるものであるので、図4に示されるように、リーフインデックステーブルに蓄積されるインデックスデータが数個である場合は殆ど無いが、本実施形態を簡単に説明するために、以下では、図4に示した八つのインデックステーブル12のみを用いる。
【0032】
<データベース管理プログラム>
データベース管理プログラム13,21は、何れも、コンピュータをオブジェクト指向データベース管理システムとして機能させるためのプログラムであり、多数のオブジェクト11を管理するためのプログラムである。具体的には、データベース管理プログラム13,21は、以下に示す機能を実現するための処理をCPU10a,20aに対して行わせる。
【0033】
(1)データベース領域の管理
▲1▼オブジェクトへの格納領域(ファイルやHDD内のエリア)の割り当て
▲2▼格納領域の容量の管理
(2)クラスの作成,更新及び削除
▲1▼オブジェクトの構造(属性の名称や値の種別)の定義及び変更
▲2▼クラス定義時のクラスへのクラス番号の採番
▲3▼クラス定義情報のデータベースへの格納
(3)オブジェクトの作成,更新及び削除
▲1▼オブジェクト作成時のオブジェクトへのOIDの採番
▲2▼オブジェクトのデータベースへの格納
▲3▼更新又は削除時のデータメインテナンス
(4)オブジェクトに対する検索及び参照
▲1▼条件に合致するオブジェクトの探索
▲2▼オブジェクトの各属性の値の取得
▲3▼オブジェクトにリンクする他のオブジェクトの取得
(5)リンクの作成,更新及び削除
▲1▼リンク情報のデータベース内への格納
▲2▼オブジェクト削除時のリンク情報のメインテナンス
(6)インデックスの管理
▲1▼インデックス情報のデータベースへの格納
▲2▼オブジェクトの生成若しくは削除又は属性値変更時のインデックス書き換え
(7)セッション又はトランザクションの管理
▲1▼DBへの接続の管理又は監視
▲2▼トランザクション単位でのデータ整合性の保証
【0034】
<アンロードプログラム>
次に、アンロードプログラム14について、説明する。アンロードプログラム14は、オブジェクト指向データベース管理システムとして以前より利用されていたシステム10から、新たなオブジェクト指向データベース管理システムとして利用されるために用意されたシステム20へ、多数のオブジェクト11及び多数のインデックステーブル12をデータ移行する際に、データ移行用ファイルであるアンロードファイルをCPU10bに対して作成させるプログラムである。
【0035】
<ロードプログラム>
次に、ロードプログラム22について、説明する。ロードプログラム22は、上記アンロードプログラム14とは逆に、CPU20に対し、アンロードファイル内のデータを利用して、オブジェクト指向データベース管理システムとして利用可能なオブジェクト及びインデックステーブルを生成させるプログラムである。
【0036】
以下、システム10からシステム20へ多数のオブジェクト11及び多数のインデックステーブル12をデータ移行する際の処理について説明する。
【0037】
まず、データベース管理プログラム13が起動しているシステム10の操作者は、そのシステム10を操作して、所定のメニュー画面を表示させる。そして、操作者は、データ移行に関する操作画面を表示させ、その操作画面に表示された一つ又は多数のクラスの中から、システム20へデータ移行させようと所望するクラスを幾つか選択する。また、操作者は、その操作画面に、移行先を示す情報を入力する。なお、本実施形態では、移行先はシステム20である。そして、操作者は、所定のボタンをクリックする。すると、CPU10bがアンロードプログラム14を読み込み、アンロード処理が開始される。図5は、アンロード処理の内容を示すフローチャートである。
【0038】
アンロード処理の開始後、最初のS101では、CPU10bは、オブジェクトアンロード処理を実行する。このオブジェクトアンロード処理は、一般に行われている処理であるため、詳しい説明は省略するが、その概略としては、指定されたクラス毎にオブジェクトアンロードファイルが作成される。
【0039】
次のS102では、CPU10bは、インデックスアンロード処理を実行する。より具体的には、CPU10bは、インデックスアンロードサブルーチンを実行する。図6は、インデックスアンロードサブルーチンの内容を示すフローチャートである。
【0040】
インデックスアンロードサブルーチンの開始後、最初のS201では、CPU10bは、データベース管理プログラム13による機能に対し、指定された各クラスについての情報を通知し、指定された各クラスの全ての属性についてインデックスが設定されているか否かを示すインデックス一覧情報を、取得する。
【0041】
次のS202では、CPU10bは、指定されたクラスのうち、最初のクラスを処理対象として特定する。
【0042】
次のS203では、CPU10bは、処理対象クラス内の一つ又は多数の属性のうち、最初の属性を処理対象として特定する。
【0043】
次のS204では、CPU10bは、S201において取得されたインデックス一覧情報を参照して、処理対象属性にインデックスが設定されているか否かを、判別する。そして、CPU10bは、処理対象属性にインデックスが設定されていなかった場合には、処理をS207へ進め、処理対象属性にインデックスが設定されていた場合には、処理をS205へ進める。
【0044】
S205では、CPU10bは、処理対象クラスの処理対象属性のために作成されている全てのリーフインデックステーブルから、インデックスデータを全て読み出す。なお、CPU10bは、クラス番号の順に、且つ、同じクラス番号内ではインスタンス番号の順に、インデックスデータを読み出す。例えば、図4の例で言えば、CPU10bは、クラス41部分の第1リーフインデックステーブル内のインデックスデータを順に読み出し、次に、クラス41部分の第2リーフインデックステーブル内のインデックスデータを順に読み出し、次に、クラス42部分の第1リーフインデックステーブル内のインデックスデータを順に読み出し、最後に、クラス43部分の第1リーフインデックステーブル内のインデックスデータを順に読み出す。従って、このS205において読み出されるインデックスデータは、順に読み出されることによって、自動的にソートされた状態となる。
【0045】
次のS206では、CPU10bは、S205において読み出された全てのインデックスデータが格納されたインデックスアンロードファイルを生成する。図7は、このインデックスアンロードファイル内を概念的に示すテーブルである。図7に示されるように、インデックスアンロードファイル内には、処理対象クラスのクラス名及びクラス番号,並びに、インデックスが設定されている属性の属性名及び属性型(属性値の種類、数値,文字列,OID等)が、記録されている。また、インデックスアンロードファイル内には、処理対象クラス内のインスタンスのOIDとその属性値であるOIDとからなるレコードが、蓄積されている。そして、このインデックスアンロードファイル内では、各レコードは、S205において読み出された状態で、すなわち、自動的にソートされた状態で、格納される。CPU10bは、図7に示されるようなインデックスアンロードファイルを作成した後、処理をS207へ進める。
【0046】
S207では、CPU10bは、処理対象クラス内の一つ又は多数の属性のうち、未処理の属性が存在するか否かを、判別する。そして、未処理の属性が処理対象クラス内に存在していた場合には、CPU10bは、処理をS208へ進める。
【0047】
S208では、CPU10bは、処理対象クラス内の未処理の属性のうち、次の属性を処理対象として特定し、処理をS204へ戻す。
【0048】
S204〜S208の処理ループを実行中、処理対象クラス内に未処理の属性が存在しなくなった場合には、CPU10bは、処理をS207からS209へ分岐させる。
【0049】
S209では、CPU10bは、指定されたクラスのうち、未処理のクラスが存在するか否かを、判別する。そして、未処理のクラスが存在していた場合には、CPU10bは、処理をS210へ進める。
【0050】
S210では、CPU10bは、未処理のクラスのうち、次のクラスを処理対象として特定し、処理をS203へ戻す。
【0051】
S203〜S210の処理ループを実行中、未処理のクラスが存在しなくなった場合には、CPU10bは、処理をS209から分岐させる。そして、CPU10bは、インデックスアンロード処理を終了した後、図5のメインルーチンにおけるS103へ処理を進める。
【0052】
S103では、CPU10bは、S101において生成された一つ又は多数のオブジェクトアンロードファイル,及び、S102において生成された一つ又は多数のインデックスアンロードファイルを、指定された移行先へ送信する。その後、CPU10bは、アンロード処理を終了する。
【0053】
以上に示されるアンロード処理により、オブジェクトアンロードファイルが、指定されたクラス毎に生成されるとともに、インデックスアンロードファイルが、指定されたクラス内におけるインデックスが設定されている属性毎に作成される。また、生成されたオブジェクトアンロードファイル及びインデックスアンロードファイルが、本実施形態の移行先であるシステム20へ、通信回線を通じて送信される。
【0054】
なお、本実施形態では、システム10にある各アンロードファイルが、通信回線を通じてシステム20へ送信されるとしたが、これに限られるものではない。すなわち、各アンロードファイルは、フレキシブルディスクFDやコンパクトディスクCDなどのコンピュータ可読媒体に記録され、コンピュータ可読媒体がシステム20の各ドライブに装着されることにより、システム10からシステム20へ送られても良い。
【0055】
そして、新たなオブジェクト指向データベース管理システムとして利用されるために用意されたシステム20では、各アンロードファイルの受信をトリガとして、CPU20bがロードプログラム22を読み込み、ロード処理を実行する。図8は、そのロード処理の内容を示すフローチャートである。
【0056】
ロード処理の開始後、最初のS301では、CPU20bは、システム10から受信した一つ又は多数のオブジェクトアンロードファイルのうち、最初のオブジェクトアンロードファイルを処理対象として特定する。
【0057】
次のS302では、CPU20bは、処理対象オブジェクトアンロードファイルについて、オブジェクトロード処理を実行する。このオブジェクトロード処理は、一般に行われている処理であるため、詳しい説明は省略するが、その概略としては、オブジェクトロードファイル内から読み出したレコード(属性値の集合)に対し、このシステム20において一意な新たなOIDが付与され、新OIDが付与された属性値の集合がオブジェクトとしてHDD20a内に記録される。なお、そのオブジェクトの記録位置情報であるレコードアドレスは、データベース管理プログラム21の機能によって、オブジェクトのOIDと対応付けられた状態で、管理される。図9は、データ移行によって新たなOIDが付与されたオブジェクトの一例を概念的に説明するために作成されたテーブルである。図9にも、図3と同様に、四つのテーブルが示されている。図3と図9とを比較して明らかなように、図9は、システム10においてクラス番号が31であったオブジェクトに対し、クラス番号71が付与され、クラス71内の各インスタンスに対し、新たなインスタンス番号が付与された例を、示している。同様に、図9は、システム10においてクラス番号が41,42,43であったオブジェクトに対し、それぞれ、クラス番号73,74,72が付与され、各クラス72,73,74内の各インスタンスに対し、新たなインスタンス番号が付与された例を示している。なお、図9に示されるように、このオブジェクトロード処理においては、属性値として記録されているOIDは、システム10において使われていた旧いOIDのままである。CPU20bは、図9に示されるように、新たなOIDが採番されたオブジェクトをHDD20a内に記録した後、処理をS303へ進める。
【0058】
S303では、CPU20bは、処理対象オブジェクトアンロードファイルについて、すなわち、一つのクラスについて、インスタンス番号変換テーブルを生成する。図10は、インスタンス番号変換テーブルを概念的に説明するために作成された対応表である。図10に示されるように、インスタンス番号変換テーブルは、オブジェクトについて用いられていた旧いインスタンス番号がデータ移行に伴って新しいインスタンス番号に置き換えられた際の置換前後のインスタンス番号の対応表である。なお、図10には、四つのインスタンス番号変換テーブルが示されているが、このS303のステップでは、インスタンス番号変換テーブルが一つだけ生成され、S303のステップを繰り返し実行することによって、インスタンス番号変換テーブルが多数生成される。図10に示されるように、概念的に示されるインスタンス番号変換テーブルは、「移行元」及び「移行先」の各項目欄からなるレコードがインスタンス毎に作成されることによって、構成されている。「移行元」及び「移行先」には、旧インスタンス番号及び新インスタンス番号が記録される。インスタンス番号変換テーブルは、作成されると、オブジェクトと同様に、HDD20a内に記録され、その記録位置を示すレコードアドレス(図10では、71〜74の順に、0005283,0005352,0005486,0005553)を付与される。CPU20bは、図10に示されるようなインスタンス番号変換テーブルを一つ生成した後、処理をS304へ進める。
【0059】
S304では、CPU20bは、システム10から受信した一つ又は多数のオブジェクトアンロードファイルの中に、未処理のオブジェクトアンロードファイルが存在するか否かを、判別する。そして、CPU20bは、未処理のオブジェクトアンロードファイルが存在していた場合には、処理をS305へ進める。
【0060】
S305では、CPU20bは、未処理のオブジェクトアンロードファイルのうち、次のオブジェクトアンロードファイルを処理対象として特定し、処理をS302へ戻す。
【0061】
S302〜S305の処理ループを実行中、未処理のオブジェクトアンロードファイルが存在しなくなった場合には、CPU20bは、処理をS304から分岐させ、処理をS306へ進める。
【0062】
S306では、CPU20bは、S302〜S305の処理ループにおいて生成されたインスタンス番号変換テーブルに基づいて、クラス番号変換テーブルを生成する。図11は、クラス番号変換テーブルを概念的に説明するために作成された対応表である。図11に示されるように、クラス番号変換テーブルは、システム10から受信した全てのオブジェクトアンロードファイルに対応する旧いクラス番号がシステム20内において一意な新しいクラス番号に置き換えられた際の置換前後のクラス番号の対応表である。概念的に示されるクラス番号変換テーブルは、「移行元」,「移行先」及び「レコードアドレス」の各項目欄からなるレコードがクラス毎に作成されることによって、構成されている。「移行元」及び「移行先」には、旧クラス番号及び新クラス番号が記録され、「レコードアドレス」には、そのクラス番号に対応するインスタンス番号変換テーブルのレコードアドレスが記録される。クラス番号変換テーブルは、作成されると、オブジェクトと同様に、HDD20a内に記録され、その記録位置を示すレコードアドレス(図11では、0020653)を付与される。CPU20bは、図11に示されるようなクラス番号変換テーブルを一つ生成した後、処理をS307へ進める。
【0063】
S307では、CPU20bは、S303及びS306において生成された各インスタンス番号変換テーブル及びクラス番号変換テーブルを参照して、S302において新OIDを付与されたオブジェクトが属性値として持っている旧いOIDを、新OIDに変換する。図12は、属性値として有していた旧OIDが新OIDに変換された後のオブジェクトの一例を概念的に説明するために作成されたテーブルである。図9と図12とを比較して明らかなように、クラス71の「属性1」の値が、図3に示されたクラス41〜43のOIDから、図9及び図12に示されたクラス72〜74のOIDに変換されている。CPU20bは、このような変換を行った後、処理をS308へ進める。
【0064】
S308では、CPU20bは、システム10から受信したファイルの中に、インデックスアンロードファイルが含まれているか否かを、判別する。そして、CPU20bは、インデックスアンロードファイルが含まれていなかった場合には、ロード処理を終了し、インデックスアンロードファイルが含まれていた場合には、処理をS309へ進める。
【0065】
S309では、CPU20bは、システム10から受信したインデックスアンロードファイルのうち、最初のインデックスアンロードファイルを処理対象として特定する。
【0066】
次のS310では、CPU20bは、処理対象インデックスアンロードファイルについて、インデックスロード処理を実行する。具体的には、CPU20bは、インデックスロードサブルーチンを実行する。図13は、インデックスロードサブルーチンの内容を示すフローチャートである。
【0067】
インデックスロードサブルーチンの開始後、最初のS401では、CPU20bは、インデックスアンロードファイルから、属性型(図7参照)が何れのものであるかを、判別する。そして、CPU20bは、属性型がOID以外であった場合には、処理をS411へ進める。
【0068】
S411では、CPU20bは、当該クラスの当該属性についての新たなルートインデックステーブルと新たなリーフインデックステーブルとを生成する。なお、ここで生成されるルートインデックステーブルとリーフインデックステーブルは、レコードが記録されていない新規のテーブルである。
【0069】
次のS412では、CPU20bは、処理対象インデックスアンロードファイルから、最初のレコードを、処理対象レコードとして読み出す。
【0070】
次のS413では、CPU20bは、クラス番号変換テーブル及びインスタンス番号変換テーブルを参照して、処理対象レコードの中の旧OIDを新OIDに変換し、データベース管理プログラム21の機能を利用して、変換後の新OIDに対応するレコードアドレスを読み出す。
【0071】
次のS414では、CPU20bは、インデックスデータ数が所定の格納上限数に達していないリーフインデックステーブルに、処理対象レコード中の属性値とS413において読み出されたレコードアドレスとからなるインデックスデータを、記録する。
【0072】
次のS415では、CPU20bは、S414においてインデックスデータが記録されたリーフインデックステーブルについて、インデックスデータ数が所定の格納上限数に到達しているか否かを、判別する。そして、CPU20bは、インデックスデータ数が所定の格納上限数に到達していなかった場合には、処理をS417へ進め、インデックスデータ数が所定の格納上限数に到達していた場合には、処理をS416へ進める。
【0073】
次のS416では、CPU20bは、当該リーフインデックステーブルのレコードアドレスと当該リーフインデックステーブル内の属性値の範囲を示す索引情報とを、ルートインデックステーブルに記録し、新たなリーフインデックステーブルを生成し、処理をS417へ進める。
【0074】
S417では、CPU20bは、処理対象インデックスアンロードファイル内に、未処理のレコードが存在するか否かを、判別する。そして、CPU20bは、未処理のレコードが存在していた場合には、処理をS418へ進める。
【0075】
S418では、CPU20bは、処理対象インデックスアンロードファイル内における未処理のレコードのうち、次のレコードを処理対象レコードとして特定し、処理をS413へ戻す。
【0076】
S413〜S418の処理ループの実行中、未処理のレコードが存在しなくなった場合には、CPU20bは、処理をS417から分岐させる。その後、CPU20bは、インデックスロード処理を終了し、図8のメインルーチンにおけるS311へ処理を進める。
【0077】
一方、S401において、属性型がOIDであった場合には、CPU20bは、処理をS461へ進める。
【0078】
S461では、CPU20bは、処理対象インデックスアンロードファイルから、最初のレコードを、処理対象レコードとして読み出す。
【0079】
次のS462では、CPU20bは、クラス番号変換テーブル及びインスタンス番号変換テーブルを参照して、処理対象レコードの中の旧OIDを新OIDに変換し、データベース管理プログラム21の機能を利用して、変換後の新OIDに対応するレコードアドレスを読み出す。
【0080】
次のS463では、CPU20bは、クラス番号変換テーブル及びインスタンス番号変換テーブルを参照して、処理対象レコードの中の属性値である旧OIDを、新OIDに変換する。
【0081】
次のS464では、CPU20bは、S463において変換されたあとのOIDの中のクラス番号が示すクラスについて、インデックステーブルが存在するか否かを、判別する。そして、CPU20bは、当該クラスについてインデックステーブルが存在していた場合には、処理をS466へ進め、当該クラスについてインデックステーブルが存在していなかった場合には、処理をS465へ進める。
【0082】
S465では、CPU20bは、当該クラス用の新たなノードインデックステーブルと新たなリーフインデックステーブルとを生成する。なお、ここで生成されるノードインデックステーブルとリーフインデックステーブルは、レコードが記録されていない新規のテーブルである。CPU20bは、各テーブルを生成した後、処理をS466へ進める。
【0083】
S466では、CPU20bは、インデックスデータ数が所定の格納上限数に達していない当該クラス用のリーフインデックステーブルに、S462において読み出されたレコードアドレスとS463において変換された後のキー値としての新OIDとからなるインデックスデータを、記録する。
【0084】
S467では、CPU20bは、S466においてインデックスデータが記録された当該クラス用のリーフインデックステーブルについて、インデックスデータ数が所定の格納上限数に到達しているか否かを、判別する。そして、CPU20bは、インデックスデータ数が所定の格納上限数に到達していなかった場合には、処理をS469へ進め、インデックスデータ数が所定の格納上限数に到達していた場合には、処理をS468へ進める。
【0085】
S468では、CPU20bは、当該リーフインデックステーブルのレコードアドレスと当該リーフインデックステーブル内の属性値の範囲を示す索引情報とを、当該クラス用のノードインデックステーブルに記録し、新たなリーフインデックステーブルを生成し、処理をS469へ進める。
【0086】
S469では、CPU20bは、処理対象インデックスアンロードファイル内に、未処理のレコードが存在するか否かを、判別する。そして、CPU20bは、未処理のレコードが存在していた場合には、処理をS470へ進める。
【0087】
S470では、CPU20bは、処理対象インデックスアンロードファイル内における未処理のレコードのうち、次のレコードを処理対象レコードとして特定し、処理をS462へ戻す。
【0088】
S462〜S470の処理ループの実行中、未処理のレコードが存在しなくなった場合には、CPU20bは、処理をS469から分岐させ、処理をS471へ進める。
【0089】
S471では、CPU20bは、新たなルートインデックステーブルを生成し、ノードインデックステーブルのレコードアドレスと当該ノードインデックステーブル内の属性値の範囲を示す索引情報とを、そのルートインデックステーブルに記録し、そのルートインデックステーブル内をクラス番号の順にソートする。図14は、図4に示されたインデックステーブルがシステム20へデータ移行されたときの状態を、示している。図4と図14とを比較すると、データ移行に伴ってクラス41,42,43がクラス73,74,72に変換されているが、S471のステップにおいて、インデックステーブル内がソートされるので、ルートインデックステーブル内では、クラス72,73,74の順にレコードが記録されている。CPU20bは、図14のようなルートインデックステーブルを生成した後、インデックスロード処理を終了して、図8のメインルーチンにおけるS311へ処理を進める。
【0090】
S311では、CPU20bは、システム10から受信した一つ又は多数のインデックスアンロードファイルの中に、未処理のインデックスアンロードファイルが存在するか否かを、判別する。そして、CPU20bは、未処理のインデックスアンロードファイルが存在していた場合には、処理をS312へ進める。
【0091】
S312では、CPU20bは、未処理のインデックスアンロードファイルのうち、次のインデックスアンロードファイルを処理対象として特定し、処理をS310へ戻す。
【0092】
S310〜S312の処理ループを実行中、未処理のインデックスアンロードファイルが存在しなくなった場合には、CPU20bは、処理をS311から分岐させ、ロード処理を終了する。
【0093】
以上に示されるロード処理により、オブジェクトアンロードファイル内のレコードは、新OIDを付与されて、当該システム20向けに利用可能なオブジェクトとして生成される。また、インデックスアンロードファイル内のレコードは、キー値として数値や文字列を有している場合には、そのキー値を属性値として有するオブジェクトのレコードアドレスが正しく記録されたインデックステーブルが、当該システム20向けに利用可能なインデックステーブルとして生成される。さらに、インデックスアンロードファイル内のレコードは、キー値としてシステム10用の旧OIDを有している場合には、各変換テーブルが参照されて、その旧OIDが新しいOIDへと変換され、その新OIDとその新OIDを属性値として有するオブジェクトのレコードアドレスとが正しく記録されたインデックステーブルが、当該システム20向けに利用可能なインデックステーブルとして生成される。
【0094】
以上に示されるように、本実施形態によれば、オブジェクトのデータ移行時において、オブジェクトの何れかの属性にインデックスが設定されている場合には、そのインデックスのアンロードファイルが生成され、また、オブジェクトアンロードファイル内のレコードに基づいてオブジェクトを生成する際には、クラス番号変換テーブル及びインスタンス番号変換テーブルが生成される。そして、移行先のシステム20においては、クラス番号変換テーブル及びインスタンス番号変換テーブルが参照されつつ、インデックスアンロードファイル内のレコードに基づいて、そのシステム20用のインデックステーブルが生成される。従って、オブジェクトのデータ移行に伴って、OIDをキー値として持つインデックステーブルが、移行先のシステム20において、一から生成されることなく、各変換テーブル及びインデックスアンロードファイルによって効率的に作成される。
【0095】
(付記1)
オブジェクト識別子を定義付けられることによって何れかのクラスに所属するように管理されるとともに他のオブジェクトのオブジェクト識別子を属性値として有している多数のオブジェクト,及び、属性値についてのインデックスデータを記録している記録装置に繋がれるコンピュータに対し、
前記記録装置内のオブジェクトのオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルをクラス毎に生成させ、
前記インデックスデータ中のキー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記キー値としてのオブジェクト識別子の順に蓄積されているインデックスアンロードファイルを生成させる
ことを特徴とするアンロードプログラム。
【0096】
(付記2)
各種の情報を記録する記録装置に繋がれるコンピュータに対し、
オブジェクトが持つオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルを取得した場合には、前記オブジェクトアンロードファイルからレコードを一つずつ読み出させ、
前記レコードを一つ読み出す毎に、前記レコード中の属性値の集合に新たなオブジェクト識別子を採番させ、
一意な記録位置情報が定義された前記記録装置内の位置へ前記属性値の集合を記録させ、
データ移行前にその属性値の集合に付されていたオブジェクト識別子と前記新たなオブジェクト識別子とについてのクラス番号対応表及びインスタンス番号対応表を作成させ、
キー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記キー値としてのオブジェクト識別子の順に蓄積されているインデックスアンロードファイルを取得した場合には、前記インデックスアンロードファイルからレコードを一つずつ読み出させ、
前記レコードを一つ読み出す毎に、前記レコード中にキー値として含まれるオブジェクト識別子を、前記各対応表を参照させて、対応する新たなオブジェクト識別子に変換させ、
前記レコード中に含まれるキー値ではないオブジェクト識別子を、前記各対応表を参照して、対応する新たなオブジェクト識別子に変換させ、
変換後のオブジェクト識別子に対応する記録位置情報と前記キー値としての新たなオブジェクト識別子とからなるインデックスデータをインデックステーブルに格納させる
ことを特徴とするロードプログラム。
【0097】
(付記3)
或るオブジェクト指向データベース管理システムがクラス毎に管理している多数のオブジェクトのそれぞれが、オブジェクト識別子を有しているとともに、他のオブジェクト識別子を属性値として有している場合において、そのオブジェクトが有する各属性値を、他のオブジェクト指向データベース管理システムへ移行するとともに、前記属性値についてのインデックステーブル内のインデックスデータをも移行する際のデータ移行方法であって、
移行元のオブジェクト指向データベース管理システムが、
前記オブジェクトのオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルをクラス毎に生成するとともに、
前記インデックスデータ中のキー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記インデックステーブルからキー値が読み出される順に蓄積されているインデックスアンロードファイルを生成し、
移行先のオブジェクト指向データベース管理システムが、
前記オブジェクトアンロードファイルを取得した場合には、前記オブジェクトアンロードファイルからレコードを一つずつ読み出す毎に、レコード中の属性値の集合に新たなオブジェクト識別子を採番し、一意な記録位置情報が定義された記録装置内の位置に前記属性値の集合を記録するするとともに、データ移行前にその属性値の集合に付されていたオブジェクト識別子と前記新たなオブジェクト識別子とについてのクラス番号対応表及びインスタンス番号対応表を作成し、
前記インデックスアンロードファイルを取得した場合には、前記インデックスアンロードファイルからレコードを一つずつ読み出す毎に、レコード中にキー値として含まれるオブジェクト識別子を、前記各対応表を参照して、対応する新たなオブジェクト識別子に変換するとともに、前記レコード中のオブジェクト識別子を、前記各対応表を参照して、対応する新たなオブジェクト識別子に変換し、変換後のオブジェクト識別子に対応する記録位置情報と前記キー値としての前記新たなオブジェクト識別子とからなるインデックスデータをインデックステーブルに格納する
ことを特徴とするデータ移行方法。
【0098】
(付記4)
前記インデックステーブルは、リーフインデックステーブルとして多数のテーブルに分割されており、各リーフインデックステーブルは、ルートインデックステーブル及びノードインデックステーブルとともに、Bツリー型のデータ構造を構成している
ことを特徴とする付記3記載のデータ移行方法。
【0099】
(付記5)
前記ノードインデックステーブルは、クラス番号毎に作成されている
ことを特徴とする付記4記載のデータ移行方法。
【0100】
(付記6)
前記移行元のオブジェクト指向データベース管理システムは、前記移行先のオブジェクト指向データベース管理システムに対し、データの送受信が可能となるように接続されており、前記オブジェクトアンロードファイル及び前記インデックスアンロードファイルを生成すると、これらファイルを前記移行先のオブジェクト指向データベース管理システムへ送信する
ことを特徴とする付記3,4又は5記載のデータ移行方法。
【0101】
(付記7)
オブジェクト識別子を定義付けられることによって何れかのクラスに所属するように管理されるとともに他のオブジェクトのオブジェクト識別子を属性値として有している多数のオブジェクト,及び、属性値についてのインデックスデータを記録している記録装置に繋がれるコンピュータに対し、
前記記録装置内のオブジェクトのオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルをクラス毎に生成させ、
前記インデックスデータ中のキー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記キー値としてのオブジェクト識別子の順に蓄積されているインデックスアンロードファイルを生成させる
アンロードプログラム
を格納したことを特徴とするコンピュータ可読媒体。
【0102】
(付記8)
各種の情報を記録する記録装置に繋がれるコンピュータに対し、
オブジェクトが持つオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルを取得した場合には、前記オブジェクトアンロードファイルからレコードを一つずつ読み出させ、
前記レコードを一つ読み出す毎に、前記レコード中の属性値の集合に新たなオブジェクト識別子を採番させ、
一意な記録位置情報が定義された前記記録装置内の位置へ前記属性値の集合を記録させ、
データ移行前にその属性値の集合に付されていたオブジェクト識別子と前記新たなオブジェクト識別子とについてのクラス番号対応表及びインスタンス番号対応表を作成させ、
キー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記キー値としてのオブジェクト識別子の順に蓄積されているインデックスアンロードファイルを取得した場合には、前記インデックスアンロードファイルからレコードを一つずつ読み出させ、
前記レコードを一つ読み出す毎に、前記レコード中にキー値として含まれるオブジェクト識別子を、前記各対応表を参照させて、対応する新たなオブジェクト識別子に変換させ、
前記レコード中に含まれるキー値ではないオブジェクト識別子を、前記各対応表を参照して、対応する新たなオブジェクト識別子に変換させ、
変換後のオブジェクト識別子に対応する記録位置情報と前記キー値としての新たなオブジェクト識別子とからなるインデックスデータをインデックステーブルに格納させる
ロードプログラム
を格納したことを特徴とするコンピュータ可読媒体。
【0103】
【発明の効果】
以上に説明したように、本発明によれば、オブジェクトのデータ移行に伴って、オブジェクト識別子をキー値として持つインデックステーブルが、移行先のシステムにおいて効率的に作成される。
【図面の簡単な説明】
【図1】本発明の実施形態の概略的な構成図
【図2】両システムのハードディスクドライブ内に記録されているデータやプログラムを説明するための説明図
【図3】オブジェクトを概念的に説明するために作成されたテーブル
【図4】リンクが貼られた属性に対してインデックスが作成された例を概念的に説明するために作成されたテーブル
【図5】アンロード処理の内容を示すフローチャート
【図6】インデックスアンロードサブルーチンの内容を示すフローチャート
【図7】インデックスアンロードファイル内を概念的に示すテーブル
【図8】ロード処理の内容を示すフローチャート
【図9】データ移行によって新たなOIDが付与されたオブジェクトの一例を概念的に説明するために作成されたテーブル
【図10】インスタンス番号変換テーブルを概念的に説明するために作成された対応表
【図11】クラス番号変換テーブルを概念的に説明するために作成された対応表
【図12】属性値として有していた旧OIDが新OIDに変換された後のオブジェクトの一例を概念的に説明するために作成されたテーブル
【図13】インデックスロードサブルーチンの内容を示すフローチャート
【図14】図4に示されたインデックステーブルが移行先のシステムへデータ移行されたときの状態を概念的に説明するために作成されたテーブル
【符号の説明】
10 システム(移行元)
10a ハードディスクドライブ(HDD)
10b CPU
11 オブジェクト
12 インデックステーブル
13 データベース管理プログラム
14 アンロードプログラム
20 システム(移行先)
20a HDD
20b CPU
21 データベース管理プログラム
22 ロードプログラム
【発明の属する技術分野】
本発明は、オブジェクト指向データベース管理システムに対し、それに管理されているオブジェクトの中から純粋なデータ(属性値)部分だけを取り出させてそれらを移行用ファイルに格納させるアンロードプログラムと、移行先のシステムに対して移行用ファイル内のレコードを利用させてオブジェクトを生成させるロードプログラムと、オブジェクトの中から純粋なデータ(属性値)部分だけを取り出してそれらを別のシステムへ移行させる際のデータ移行方法とに、関する。
【0002】
【従来の技術】
周知のように、オブジェクト指向データベース管理システム(OODBMS:Object Oriented DataBase Management System)の中には、ハードディスク等の記録装置内を物理的順序で検索するときよりも素早く検索結果を取得できるようにするための検索高速化技術が採用されているものがある(例えば、特許文献1,2参照)。このような検索高速化技術が採用されたOODBMSには、記録装置内でのオブジェクトの記録位置情報とオブジェクトのもつ属性値とからなるインデックスデータが格納されたインデックステーブルが、用意されている。そして、このようなOODBMSは、或る属性値を検索キーとしてオブジェクトの抽出を受け付けた場合には、上述したインデックステーブル内から当該属性値に一致するものを検出し、検出された属性値に対応する記録位置情報をそのテーブル内から読み出し、その記録位置情報にて示される記録装置内の位置へ直接アクセスし、そのオブジェクトの持つ属性値などを読み出す。上述したインデックステーブルは、オブジェクトが持つ幾つかの属性のうち、頻繁に検索されることが想定される属性に対して作成されており、そのような属性が幾つかある場合には、属性毎に作成される。
【0003】
ところで、OODBMSの運用上、同一又は他のシステムにデータ(オブジェクトの有する各属性値)を移行する作業が行われることがある。この作業は、例えば、システムの記憶容量や管理機能の向上を図るため、データベースのバックアップを作成するため、複数のシステムに分けて運用していたデータベースを一つのシステムに統合するため、或いは、記録装置内でデータ(オブジェクトなど)を再配置(デフラグ)するために、行われる。このようなデータ移行では、移行前にオブジェクトに付与されていたオブジェクト識別子(クラス番号とインスタンス番号との組み合わせ)が一旦破棄され、移行後に、移行先のOODBMSによって、そのシステム内でのみ有効なオブジェクト識別子が新たにオブジェクトに付与される。これは、通常、OODBMSでは、データベース管理プログラムの機能により、システム内だけで一意なオブジェクト識別子を各オブジェクトに付与して管理しているためである。
【0004】
【特許文献1】
特開平06−250912号公報
【特許文献2】
特許第2708294号公報
【0005】
【発明が解決しようとする課題】
上述したようなOODBMSでは、オブジェクトに対し、数値や文字列を属性値として持たせることができるが、それだけではなく、他のオブジェクトのオブジェクト識別子を属性値として持たせることもできる。このようにオブジェクトが属性値として他のオブジェクト識別子を持つことは、一般に、「リンクを貼る」と、称されている。そして、このように属性値がオブジェクト識別子である属性に対して上記検索高速化技術を適用する場合、OODBMSには、オブジェクトのオブジェクト識別子とそのオブジェクトの記録位置情報とを対応付けるインデックステーブルが用意されることとなる。
【0006】
このような事情の下、上述したようなデータ移行において、オブジェクトとともに、オブジェクト識別子をキー値として持つインデックステーブルをそのまま移行したとしても、移行先ではオブジェクトには、新たなオブジェクト識別子が定義されてしまうため、検索時にそのインデックステーブルが参照されても、正しいオブジェクトを記録装置から読み出せない。このため、従来のデータ移行では、オブジェクト識別子をキー値として持つインデックステーブルを移行することはせず、オブジェクトのデータ移行が終わった後に、移行先のシステムに対して新たなインデックステーブルを一から作成させていた。
【0007】
ところが、上述した検索高速化技術は、例えば十万件といった膨大な数のデータの中から目的のデータを高速に検出するためのものであるので、インデックステーブルにも、多量のインデックスデータが格納される。このため、オブジェクト識別子をキー値として持つインデックステーブルを一から作成するのに非常に時間と手間が掛かってしまうという問題があった。
【0008】
そこで、本発明の課題は、オブジェクトのデータ移行に伴って、オブジェクト識別子をキー値として持つインデックステーブルが移行先のシステムにおいて効率的に作成され得るデータ移行方法と、このようなデータ移行方法を実現するための装置としてコンピュータを機能させるアンロードプログラム及びロードプログラムとを、提供することにある。
【0009】
【課題を解決するための手段】
上記の課題を解決するために、本発明によるデータ移行方法は、以下のような構成を採用した。
【0010】
すなわち、本発明によるデータ移行方法は、或るオブジェクト指向データベース管理システムがクラス毎に管理している多数のオブジェクトのそれぞれが、オブジェクト識別子を有しているとともに、他のオブジェクト識別子を属性値として有している場合において、そのオブジェクトが有する各属性値を、他のオブジェクト指向データベース管理システムへ移行するとともに、前記属性値についてのインデックステーブル内のインデックスデータをも移行する際のデータ移行方法であって、移行元のオブジェクト指向データベース管理システムが、前記オブジェクトのオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルをクラス毎に生成するとともに、前記インデックスデータ中のキー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記インデックステーブルからキー値が読み出される順に蓄積されているインデックスアンロードファイルを生成し、移行先のオブジェクト指向データベース管理システムが、前記オブジェクトアンロードファイルを取得した場合には、前記オブジェクトアンロードファイルからレコードを一つずつ読み出す毎に、レコード中の属性値の集合に新たなオブジェクト識別子を採番し、一意な記録位置情報が定義された記録装置内の位置に前記属性値の集合を記録するするとともに、データ移行前にその属性値の集合に付されていたオブジェクト識別子と前記新たなオブジェクト識別子とについてのクラス番号対応表及びインスタンス番号対応表を作成し、前記インデックスアンロードファイルを取得した場合には、前記インデックスアンロードファイルからレコードを一つずつ読み出す毎に、レコード中にキー値として含まれるオブジェクト識別子を、前記各対応表を参照して、対応する新たなオブジェクト識別子に変換するとともに、前記レコード中のオブジェクト識別子を、前記各対応表を参照して、対応する新たなオブジェクト識別子に変換し、変換後のオブジェクト識別子に対応する記録位置情報と前記キー値としての前記新たなオブジェクト識別子とからなるインデックスデータをインデックステーブルに格納することを、特徴としている。
【0011】
このように構成されると、移行前のオブジェクト指向データベース管理システムでは、データ移行時に、オブジェクトアンロードファイルとともにインデックスアンロードファイルが作成され、移行先のオブジェクト指向データベース管理システムでは、オブジェクトアンロードファイル内のレコードからオブジェクトを生成する際に、クラス番号対応表及びインスタンス対応表が作成され、インデックスアンロードファイル内のレコードと各対応表とに基づいて、インデックステーブルが作成される。従って、本発明のデータ移行方法によれば、インデックスのデータ移行時に、インデックスアンロードファイル並びにクラス番号対応表及びインスタンス対応表が利用されるので、オブジェクト識別子をキー値として持つインデックステーブルを一から作成することに比べると、移行先のシステムにおいてインデックステーブルが効率的に作成される。また、移行先のシステムにおいて、オブジェクトのデータ移行とほぼ同時に、インデックステーブルが作成される。
【0012】
また、上記の課題を解決するために、本発明によるアンロードプログラムは、以下のような構成を採用した。
【0013】
すなわち、本発明によるアンロードプログラムは、オブジェクト識別子を定義付けられることによって何れかのクラスに所属するように管理されるとともに他のオブジェクトのオブジェクト識別子を属性値として有している多数のオブジェクト,及び、属性値についてのインデックスデータを記録している記録装置に繋がれるコンピュータに対し、前記記録装置内のオブジェクトのオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルをクラス毎に生成させ、前記インデックスデータ中のキー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記キー値としてのオブジェクト識別子の順に蓄積されているインデックスアンロードファイルを生成させることを、特徴としている。
【0014】
また、上記の課題を解決するために、本発明によるロードプログラムは、以下のような構成を採用した。
【0015】
すなわち、本発明によるロードプログラムは、各種の情報を記録する記録装置に繋がれるコンピュータに対し、オブジェクトが持つオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルを取得した場合には、前記オブジェクトアンロードファイルからレコードを一つずつ読み出させ、前記レコードを一つ読み出す毎に、前記レコード中の属性値の集合に新たなオブジェクト識別子を採番させ、一意な記録位置情報が定義された前記記録装置内の位置に前記属性値の集合を記録させ、データ移行前にその属性値の集合に付されていたオブジェクト識別子と前記新たなオブジェクト識別子とについてのクラス番号対応表及びインスタンス番号対応表を作成させ、キー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記キー値としてのオブジェクト識別子の順に蓄積されているインデックスアンロードファイルを取得した場合には、前記インデックスアンロードファイルからレコードを一つずつ読み出させ、前記レコードを一つ読み出す毎に、前記レコード中にキー値として含まれるオブジェクト識別子を、前記各対応表を参照させて、対応する新たなオブジェクト識別子に変換させ、前記レコード中に含まれるキー値ではないオブジェクト識別子を、前記各対応表を参照して、対応する新たなオブジェクト識別子に変換させ、変換後のオブジェクト識別子に対応する記録位置情報と前記キー値としての新たなオブジェクト識別子とからなるインデックスデータをインデックステーブルに格納させることを、特徴としている。
【0016】
従って、これらのアンロードプログラム及びロードプログラムによれば、本発明のデータ移行方法を実現するための装置として移行元及び移行先のコンピュータを機能させることができることになる。
【0017】
【発明の実施の形態】
以下、図面に基づいて本発明の実施形態を説明する。
【0018】
図1は、本発明による実施形態の概略的な構成図である。本実施形態では、2台のシステム10,20が使用される。一方のシステム10は、オブジェクト指向データベース管理システムとして以前より利用されていたものであり、多数のオブジェクトを記録している。他方のシステム20は、新たなオブジェクト指向データベース管理システムとして利用されるために用意されたものである。
【0019】
これらシステム10,20は、何れも、キーボードやマウス等の入力装置や表示装置や本体を備える一般的なコンピュータである。これらシステム10,20の本体には、図示されていないが、RAM(Random Access Memory)やハードディスクドライブ等の記録装置,モデムやLANボード等の通信制御回路,及び、CPU(Central Processing Unit)が、内蔵されている。両システム10,20の通信制御回路同士は、ネットワーク等を介して、或いは直接に、接続されており、互いにデータを送受信することができる。
【0020】
また、両システム10,20には、フレキシブルディスクドライブ,及び、コンパクトディスクドライブが、備えられている。フレキシブルディスクドライブやコンパクトディスクドライブは、コンピュータ可読媒体であるフレキシブルディスクFDやコンパクトディスクCDに格納されたデータやプログラムを読み出し、或いは、これらディスクFD,CDへデータやプログラムを書き込む装置である。フレキシブルディスクFDやコンパクトディスクCDから読み出されたデータやプログラムは、上記記録装置にインストールされる。
【0021】
図2は、両システム10,20のハードディスクドライブ(HDD)10a,20a内に記録されているデータやプログラムを説明するための説明図である。システム10のHDD10aには、多数のオブジェクト11及び多数のインデックステーブル12が記録されているとともに、データベース管理プログラム13及びアンロードプログラム14がインストールされている。また、システム20のHDD20aには、データベース管理プログラム21及びロードプログラム22がインストールされている。
【0022】
<オブジェクト>
まず、オブジェクト11について、説明する。図3は、オブジェクト11を概念的に説明するために作成されたテーブルである。オブジェクト指向データベースにおいては、一つのテーブルに蓄積されているレコードの一つ一つがオブジェクトと称され、テーブルによって纏められるオブジェクト11の集合体がクラスと称される。一つのクラスに所属するオブジェクト11は、そのクラスのインスタンスと称され、オブジェクト11には、そのクラス内で一意なインスタンス番号が付される。また、オブジェクト11には、所属するクラスを全てのクラスの中から識別するためのクラス番号が付される。オブジェクト11に付されるクラス番号及びインスタンス番号を組み合わせたものが、そのオブジェクト11を全体の中から一意に識別するための識別子として利用され、この識別子は、オブジェクト識別子(OID:Object Identification)と称されている。なお、OIDは、例えばクラス番号が31であってインスタンス番号が01である場合には、31:01と表記される。また、上述したように幾つかの属性値の集まりであるオブジェクト11は、HDD10a内では、全体で一つの位置に記録される。さらに、各オブジェクト11は、HDD10a内では、互いに無関係な個別の位置に、記録されており、その記録位置には、HDD10a内で一意なレコードアドレスが定義される。このレコードアドレスとOIDは、常に対応付けられた状態で、後述するデータベース管理プログラム13によって管理されている。そして、システム10にOIDが入力されると、後述するデータベース管理プログラム13は、CPU10bに対し、このOIDに対応するレコードアドレスにアクセスさせ、このレコードアドレスにあるオブジェクト11に含まれる各属性値を直接読み出させる。以上のことから、オブジェクト11は、レコードアドレスとOIDとが定義付けられることにより、上述したテーブルを概念的に構成する。
【0023】
なお、図3には、四つのテーブルが示されている。本実施形態では、四つのテーブルによって纏められるオブジェクトの集合体に対し、それぞれクラス31,41,42,43のクラス番号を定義している。クラス31を概念的に示すテーブルは、「レコードアドレス」,「OID」,「属性1」,「属性2」及び「属性3」の項目欄(フィールド)からなるレコードをインスタンス(オブジェクト)毎に作成することによって、構成されている。「属性2」及び「属性3」には、オブジェクト11の有する属性値としての数値及び名字が、記録されており、「属性1」には、クラス41,42,43に所属するオブジェクト11のOIDが、記録されている。
【0024】
また、クラス41,42,43を概念的に示すテーブルは、「レコードアドレス」,「OID」,「属性4」及び「属性5」の項目欄(フィールド)からなるレコードをインスタンス(オブジェクト)毎に作成することによって、構成されている。「属性4」及び「属性5」には、オブジェクト11の有する属性値としての県名及び市区町村名が、記録されている。
【0025】
このような関係を有する多数のオブジェクト11を有するシステム10において、例えばクラス31のインスタンス04であるオブジェクト11の「属性2」の値を要求する入力があった場合には、後述するデータベース管理プログラム13は、CPU10bに対し、まず、OID=31:04に対応するレコードアドレス(0001021)にアクセスさせ、そのレコードアドレス(0001021)にあるオブジェクトに含まれる「属性2」の値(151)を読み出させ、その値(151)を出力させる。
【0026】
また、例えばクラス31のインスタンス04であるオブジェクト11の「属性1」の値を要求する入力があった場合には、後述するデータベース管理プログラム13は、CPU10bに対し、まず、OID=31:04に対応するレコードアドレス(0001021)にアクセスさせ、そのレコードアドレス(0001021)にあるオブジェクトに含まれる「属性1」の値(43:03)を読み出させ、続いて、OID=43:03に対応するレコードアドレス(0001422)にアクセスさせ、そのレコードアドレス(0001422)にあるオブジェクトに含まれる「属性4」及び「属性5」の値(京都府,八幡市)を読み出させ、その値(京都府,八幡市)を出力させる。
【0027】
このクラス31の「属性1」のように、属性値としてOIDが記録されていると、クラス41,42,43のインスタンス(オブジェクト)に含まれる属性値(県名及び市区町村名)が、あたかもクラス31のインスタンス(オブジェクト)に含まれる属性値として出力される。このため、クラス31の「属性1」のように属性値としてOIDが記録されることは、通常、「リンクが貼られる」と、称されている。
【0028】
<インデックステーブル>
次に、インデックステーブル12について、説明する。インデックスは、大量なデータの中から目的のデータを高速に検索するためのデータベース用の技術である。例えば、或るクラスの或る属性について当該技術を適用する場合、すなわち、その属性の値が指定されたときにその属性値を含むオブジェクトをそのクラスの全インスタンスの中から抽出できるようにする場合、事前に、その属性の値とその値を有するオブジェクトのレコードアドレスとからなるレコード(通常、インデックスデータと称する)が蓄積されたインデックステーブルが、作成される。また、そのテーブル内のレコードは、属性値であるキー値が昇順又は降順となるように、ソートされている。そして、或るクラスに所属する多数のインスタンスの中から任意の属性値を持つオブジェクトの抽出を要求する入力があった場合において、そのクラスのその属性にインデックスが作成されていたときは、後述するデータベース管理プログラム13は、CPU10bに対し、その属性用のインデックステーブル内を任意の属性値を検索キーとして検索させ、当該属性値と一致するキー値が存在した場合には、そのキー値に対応するレコードアドレスをインデックステーブル内から読み出させ、読み出されたレコードアドレスにあるオブジェクトに含まれる他の属性値やOIDを読み出させ、読み出された属性値やOIDを出力させる。このように、インデックステーブルを用いることにより、任意の属性値を持つオブジェクトを素早く検索することができる。
【0029】
また、インデックスを用いた検索高速化技術では、一クラス内のオブジェクトの数量が膨大である場合(例えばオブジェクトの数量が十万個である場合)には、インデックステーブルが、所定個数(例えば千個)のインデックスデータを持つテーブル毎に分割され、分割後のそれぞれがリーフインデックステーブルとして作成される。また、リーフインデックステーブルに蓄積されるキー値の範囲を示す索引情報とそのリーフインデックステーブルのレコードアドレスとからなるレコードが蓄積されたルートインデックステーブルが、さらに作成される。そして、或るクラスに属する多数のインスタンスの中から任意の属性値を持つオブジェクトの抽出を要求する入力があった場合に、そのクラスのその属性にインデックスが作成されていたときは、後述するデータベース管理プログラム13は、CPU10bに対し、その属性用のルートインデックステーブル内を任意の属性値を検索キーとして検索させ、当該属性値を範囲に含む索引情報が存在した場合には、その索引情報に対応するレコードアドレスをルートインデックステーブルから読み出させ、読み出されたレコードアドレスにアクセスさせる。さらに、当該プログラム13は、CPU10bに対し、そのレコードアドレスにあるリーフインデックステーブル内を当該属性値を検索キーとして検索させ、当該属性値と一致するキー値が存在した場合には、そのキー値に対応するレコードアドレスを読み出させ、読み出されたレコードアドレスにアクセスさせ、そのレコードアドレスにあるオブジェクトに含まれる他の属性値やOIDを読み出させ、読み出された属性値やOIDを出力させる。このように一つのルートインデックステーブルと多数のリーフインデックステーブルからなるデータ構造は、通常、Bツリー型データ構造と称されている。但し、ここで説明したBツリー型データ構造は、2階層であったが、3階層以上とすることもできる。その場合、ルートインデックステーブルと多数のリーフインデックステーブルの中間の階層として、ノードインデックステーブルが幾つか作成される。
【0030】
なお、図3のクラス31の「属性1」のように、属性値としてOIDが記録されている属性に対してインデックスを作成する場合、ルートインデックステーブルの下位の階層のインデックステーブルとして、クラス毎のノードインデックステーブルが作成される。図4は、リンクが貼られた属性に対してインデックスが作成された例を概念的に説明するために作成されたテーブルである。図4に示されるように、ルートインデックステーブルは、ノードインデックステーブルに蓄積されるOIDの範囲を示す索引情報(この索引情報は、通常、その範囲に属する属性値のうちの最大値である)とそのノードインデックステーブルのレコードアドレスとからなるレコードがノードインデックステーブル毎に蓄積されたものとなる。また、ノードインデックスは、その下位の階層のリーフインデックステーブルに蓄積されるOIDの範囲を示す索引情報とそのリーフインデックステーブルのレコードアドレスとからなるレコードがリーフインデックステーブル毎に蓄積されたものとなる。また、リーフインデックステーブルは、属性値であるキー値とその属性値を持つオブジェクトのレコードアドレスとからなるインデックスデータが蓄積されたものである。
【0031】
なお、上述したように、インデックスは、オブジェクトの数量が膨大である場合に用いられるものであるので、図4に示されるように、リーフインデックステーブルに蓄積されるインデックスデータが数個である場合は殆ど無いが、本実施形態を簡単に説明するために、以下では、図4に示した八つのインデックステーブル12のみを用いる。
【0032】
<データベース管理プログラム>
データベース管理プログラム13,21は、何れも、コンピュータをオブジェクト指向データベース管理システムとして機能させるためのプログラムであり、多数のオブジェクト11を管理するためのプログラムである。具体的には、データベース管理プログラム13,21は、以下に示す機能を実現するための処理をCPU10a,20aに対して行わせる。
【0033】
(1)データベース領域の管理
▲1▼オブジェクトへの格納領域(ファイルやHDD内のエリア)の割り当て
▲2▼格納領域の容量の管理
(2)クラスの作成,更新及び削除
▲1▼オブジェクトの構造(属性の名称や値の種別)の定義及び変更
▲2▼クラス定義時のクラスへのクラス番号の採番
▲3▼クラス定義情報のデータベースへの格納
(3)オブジェクトの作成,更新及び削除
▲1▼オブジェクト作成時のオブジェクトへのOIDの採番
▲2▼オブジェクトのデータベースへの格納
▲3▼更新又は削除時のデータメインテナンス
(4)オブジェクトに対する検索及び参照
▲1▼条件に合致するオブジェクトの探索
▲2▼オブジェクトの各属性の値の取得
▲3▼オブジェクトにリンクする他のオブジェクトの取得
(5)リンクの作成,更新及び削除
▲1▼リンク情報のデータベース内への格納
▲2▼オブジェクト削除時のリンク情報のメインテナンス
(6)インデックスの管理
▲1▼インデックス情報のデータベースへの格納
▲2▼オブジェクトの生成若しくは削除又は属性値変更時のインデックス書き換え
(7)セッション又はトランザクションの管理
▲1▼DBへの接続の管理又は監視
▲2▼トランザクション単位でのデータ整合性の保証
【0034】
<アンロードプログラム>
次に、アンロードプログラム14について、説明する。アンロードプログラム14は、オブジェクト指向データベース管理システムとして以前より利用されていたシステム10から、新たなオブジェクト指向データベース管理システムとして利用されるために用意されたシステム20へ、多数のオブジェクト11及び多数のインデックステーブル12をデータ移行する際に、データ移行用ファイルであるアンロードファイルをCPU10bに対して作成させるプログラムである。
【0035】
<ロードプログラム>
次に、ロードプログラム22について、説明する。ロードプログラム22は、上記アンロードプログラム14とは逆に、CPU20に対し、アンロードファイル内のデータを利用して、オブジェクト指向データベース管理システムとして利用可能なオブジェクト及びインデックステーブルを生成させるプログラムである。
【0036】
以下、システム10からシステム20へ多数のオブジェクト11及び多数のインデックステーブル12をデータ移行する際の処理について説明する。
【0037】
まず、データベース管理プログラム13が起動しているシステム10の操作者は、そのシステム10を操作して、所定のメニュー画面を表示させる。そして、操作者は、データ移行に関する操作画面を表示させ、その操作画面に表示された一つ又は多数のクラスの中から、システム20へデータ移行させようと所望するクラスを幾つか選択する。また、操作者は、その操作画面に、移行先を示す情報を入力する。なお、本実施形態では、移行先はシステム20である。そして、操作者は、所定のボタンをクリックする。すると、CPU10bがアンロードプログラム14を読み込み、アンロード処理が開始される。図5は、アンロード処理の内容を示すフローチャートである。
【0038】
アンロード処理の開始後、最初のS101では、CPU10bは、オブジェクトアンロード処理を実行する。このオブジェクトアンロード処理は、一般に行われている処理であるため、詳しい説明は省略するが、その概略としては、指定されたクラス毎にオブジェクトアンロードファイルが作成される。
【0039】
次のS102では、CPU10bは、インデックスアンロード処理を実行する。より具体的には、CPU10bは、インデックスアンロードサブルーチンを実行する。図6は、インデックスアンロードサブルーチンの内容を示すフローチャートである。
【0040】
インデックスアンロードサブルーチンの開始後、最初のS201では、CPU10bは、データベース管理プログラム13による機能に対し、指定された各クラスについての情報を通知し、指定された各クラスの全ての属性についてインデックスが設定されているか否かを示すインデックス一覧情報を、取得する。
【0041】
次のS202では、CPU10bは、指定されたクラスのうち、最初のクラスを処理対象として特定する。
【0042】
次のS203では、CPU10bは、処理対象クラス内の一つ又は多数の属性のうち、最初の属性を処理対象として特定する。
【0043】
次のS204では、CPU10bは、S201において取得されたインデックス一覧情報を参照して、処理対象属性にインデックスが設定されているか否かを、判別する。そして、CPU10bは、処理対象属性にインデックスが設定されていなかった場合には、処理をS207へ進め、処理対象属性にインデックスが設定されていた場合には、処理をS205へ進める。
【0044】
S205では、CPU10bは、処理対象クラスの処理対象属性のために作成されている全てのリーフインデックステーブルから、インデックスデータを全て読み出す。なお、CPU10bは、クラス番号の順に、且つ、同じクラス番号内ではインスタンス番号の順に、インデックスデータを読み出す。例えば、図4の例で言えば、CPU10bは、クラス41部分の第1リーフインデックステーブル内のインデックスデータを順に読み出し、次に、クラス41部分の第2リーフインデックステーブル内のインデックスデータを順に読み出し、次に、クラス42部分の第1リーフインデックステーブル内のインデックスデータを順に読み出し、最後に、クラス43部分の第1リーフインデックステーブル内のインデックスデータを順に読み出す。従って、このS205において読み出されるインデックスデータは、順に読み出されることによって、自動的にソートされた状態となる。
【0045】
次のS206では、CPU10bは、S205において読み出された全てのインデックスデータが格納されたインデックスアンロードファイルを生成する。図7は、このインデックスアンロードファイル内を概念的に示すテーブルである。図7に示されるように、インデックスアンロードファイル内には、処理対象クラスのクラス名及びクラス番号,並びに、インデックスが設定されている属性の属性名及び属性型(属性値の種類、数値,文字列,OID等)が、記録されている。また、インデックスアンロードファイル内には、処理対象クラス内のインスタンスのOIDとその属性値であるOIDとからなるレコードが、蓄積されている。そして、このインデックスアンロードファイル内では、各レコードは、S205において読み出された状態で、すなわち、自動的にソートされた状態で、格納される。CPU10bは、図7に示されるようなインデックスアンロードファイルを作成した後、処理をS207へ進める。
【0046】
S207では、CPU10bは、処理対象クラス内の一つ又は多数の属性のうち、未処理の属性が存在するか否かを、判別する。そして、未処理の属性が処理対象クラス内に存在していた場合には、CPU10bは、処理をS208へ進める。
【0047】
S208では、CPU10bは、処理対象クラス内の未処理の属性のうち、次の属性を処理対象として特定し、処理をS204へ戻す。
【0048】
S204〜S208の処理ループを実行中、処理対象クラス内に未処理の属性が存在しなくなった場合には、CPU10bは、処理をS207からS209へ分岐させる。
【0049】
S209では、CPU10bは、指定されたクラスのうち、未処理のクラスが存在するか否かを、判別する。そして、未処理のクラスが存在していた場合には、CPU10bは、処理をS210へ進める。
【0050】
S210では、CPU10bは、未処理のクラスのうち、次のクラスを処理対象として特定し、処理をS203へ戻す。
【0051】
S203〜S210の処理ループを実行中、未処理のクラスが存在しなくなった場合には、CPU10bは、処理をS209から分岐させる。そして、CPU10bは、インデックスアンロード処理を終了した後、図5のメインルーチンにおけるS103へ処理を進める。
【0052】
S103では、CPU10bは、S101において生成された一つ又は多数のオブジェクトアンロードファイル,及び、S102において生成された一つ又は多数のインデックスアンロードファイルを、指定された移行先へ送信する。その後、CPU10bは、アンロード処理を終了する。
【0053】
以上に示されるアンロード処理により、オブジェクトアンロードファイルが、指定されたクラス毎に生成されるとともに、インデックスアンロードファイルが、指定されたクラス内におけるインデックスが設定されている属性毎に作成される。また、生成されたオブジェクトアンロードファイル及びインデックスアンロードファイルが、本実施形態の移行先であるシステム20へ、通信回線を通じて送信される。
【0054】
なお、本実施形態では、システム10にある各アンロードファイルが、通信回線を通じてシステム20へ送信されるとしたが、これに限られるものではない。すなわち、各アンロードファイルは、フレキシブルディスクFDやコンパクトディスクCDなどのコンピュータ可読媒体に記録され、コンピュータ可読媒体がシステム20の各ドライブに装着されることにより、システム10からシステム20へ送られても良い。
【0055】
そして、新たなオブジェクト指向データベース管理システムとして利用されるために用意されたシステム20では、各アンロードファイルの受信をトリガとして、CPU20bがロードプログラム22を読み込み、ロード処理を実行する。図8は、そのロード処理の内容を示すフローチャートである。
【0056】
ロード処理の開始後、最初のS301では、CPU20bは、システム10から受信した一つ又は多数のオブジェクトアンロードファイルのうち、最初のオブジェクトアンロードファイルを処理対象として特定する。
【0057】
次のS302では、CPU20bは、処理対象オブジェクトアンロードファイルについて、オブジェクトロード処理を実行する。このオブジェクトロード処理は、一般に行われている処理であるため、詳しい説明は省略するが、その概略としては、オブジェクトロードファイル内から読み出したレコード(属性値の集合)に対し、このシステム20において一意な新たなOIDが付与され、新OIDが付与された属性値の集合がオブジェクトとしてHDD20a内に記録される。なお、そのオブジェクトの記録位置情報であるレコードアドレスは、データベース管理プログラム21の機能によって、オブジェクトのOIDと対応付けられた状態で、管理される。図9は、データ移行によって新たなOIDが付与されたオブジェクトの一例を概念的に説明するために作成されたテーブルである。図9にも、図3と同様に、四つのテーブルが示されている。図3と図9とを比較して明らかなように、図9は、システム10においてクラス番号が31であったオブジェクトに対し、クラス番号71が付与され、クラス71内の各インスタンスに対し、新たなインスタンス番号が付与された例を、示している。同様に、図9は、システム10においてクラス番号が41,42,43であったオブジェクトに対し、それぞれ、クラス番号73,74,72が付与され、各クラス72,73,74内の各インスタンスに対し、新たなインスタンス番号が付与された例を示している。なお、図9に示されるように、このオブジェクトロード処理においては、属性値として記録されているOIDは、システム10において使われていた旧いOIDのままである。CPU20bは、図9に示されるように、新たなOIDが採番されたオブジェクトをHDD20a内に記録した後、処理をS303へ進める。
【0058】
S303では、CPU20bは、処理対象オブジェクトアンロードファイルについて、すなわち、一つのクラスについて、インスタンス番号変換テーブルを生成する。図10は、インスタンス番号変換テーブルを概念的に説明するために作成された対応表である。図10に示されるように、インスタンス番号変換テーブルは、オブジェクトについて用いられていた旧いインスタンス番号がデータ移行に伴って新しいインスタンス番号に置き換えられた際の置換前後のインスタンス番号の対応表である。なお、図10には、四つのインスタンス番号変換テーブルが示されているが、このS303のステップでは、インスタンス番号変換テーブルが一つだけ生成され、S303のステップを繰り返し実行することによって、インスタンス番号変換テーブルが多数生成される。図10に示されるように、概念的に示されるインスタンス番号変換テーブルは、「移行元」及び「移行先」の各項目欄からなるレコードがインスタンス毎に作成されることによって、構成されている。「移行元」及び「移行先」には、旧インスタンス番号及び新インスタンス番号が記録される。インスタンス番号変換テーブルは、作成されると、オブジェクトと同様に、HDD20a内に記録され、その記録位置を示すレコードアドレス(図10では、71〜74の順に、0005283,0005352,0005486,0005553)を付与される。CPU20bは、図10に示されるようなインスタンス番号変換テーブルを一つ生成した後、処理をS304へ進める。
【0059】
S304では、CPU20bは、システム10から受信した一つ又は多数のオブジェクトアンロードファイルの中に、未処理のオブジェクトアンロードファイルが存在するか否かを、判別する。そして、CPU20bは、未処理のオブジェクトアンロードファイルが存在していた場合には、処理をS305へ進める。
【0060】
S305では、CPU20bは、未処理のオブジェクトアンロードファイルのうち、次のオブジェクトアンロードファイルを処理対象として特定し、処理をS302へ戻す。
【0061】
S302〜S305の処理ループを実行中、未処理のオブジェクトアンロードファイルが存在しなくなった場合には、CPU20bは、処理をS304から分岐させ、処理をS306へ進める。
【0062】
S306では、CPU20bは、S302〜S305の処理ループにおいて生成されたインスタンス番号変換テーブルに基づいて、クラス番号変換テーブルを生成する。図11は、クラス番号変換テーブルを概念的に説明するために作成された対応表である。図11に示されるように、クラス番号変換テーブルは、システム10から受信した全てのオブジェクトアンロードファイルに対応する旧いクラス番号がシステム20内において一意な新しいクラス番号に置き換えられた際の置換前後のクラス番号の対応表である。概念的に示されるクラス番号変換テーブルは、「移行元」,「移行先」及び「レコードアドレス」の各項目欄からなるレコードがクラス毎に作成されることによって、構成されている。「移行元」及び「移行先」には、旧クラス番号及び新クラス番号が記録され、「レコードアドレス」には、そのクラス番号に対応するインスタンス番号変換テーブルのレコードアドレスが記録される。クラス番号変換テーブルは、作成されると、オブジェクトと同様に、HDD20a内に記録され、その記録位置を示すレコードアドレス(図11では、0020653)を付与される。CPU20bは、図11に示されるようなクラス番号変換テーブルを一つ生成した後、処理をS307へ進める。
【0063】
S307では、CPU20bは、S303及びS306において生成された各インスタンス番号変換テーブル及びクラス番号変換テーブルを参照して、S302において新OIDを付与されたオブジェクトが属性値として持っている旧いOIDを、新OIDに変換する。図12は、属性値として有していた旧OIDが新OIDに変換された後のオブジェクトの一例を概念的に説明するために作成されたテーブルである。図9と図12とを比較して明らかなように、クラス71の「属性1」の値が、図3に示されたクラス41〜43のOIDから、図9及び図12に示されたクラス72〜74のOIDに変換されている。CPU20bは、このような変換を行った後、処理をS308へ進める。
【0064】
S308では、CPU20bは、システム10から受信したファイルの中に、インデックスアンロードファイルが含まれているか否かを、判別する。そして、CPU20bは、インデックスアンロードファイルが含まれていなかった場合には、ロード処理を終了し、インデックスアンロードファイルが含まれていた場合には、処理をS309へ進める。
【0065】
S309では、CPU20bは、システム10から受信したインデックスアンロードファイルのうち、最初のインデックスアンロードファイルを処理対象として特定する。
【0066】
次のS310では、CPU20bは、処理対象インデックスアンロードファイルについて、インデックスロード処理を実行する。具体的には、CPU20bは、インデックスロードサブルーチンを実行する。図13は、インデックスロードサブルーチンの内容を示すフローチャートである。
【0067】
インデックスロードサブルーチンの開始後、最初のS401では、CPU20bは、インデックスアンロードファイルから、属性型(図7参照)が何れのものであるかを、判別する。そして、CPU20bは、属性型がOID以外であった場合には、処理をS411へ進める。
【0068】
S411では、CPU20bは、当該クラスの当該属性についての新たなルートインデックステーブルと新たなリーフインデックステーブルとを生成する。なお、ここで生成されるルートインデックステーブルとリーフインデックステーブルは、レコードが記録されていない新規のテーブルである。
【0069】
次のS412では、CPU20bは、処理対象インデックスアンロードファイルから、最初のレコードを、処理対象レコードとして読み出す。
【0070】
次のS413では、CPU20bは、クラス番号変換テーブル及びインスタンス番号変換テーブルを参照して、処理対象レコードの中の旧OIDを新OIDに変換し、データベース管理プログラム21の機能を利用して、変換後の新OIDに対応するレコードアドレスを読み出す。
【0071】
次のS414では、CPU20bは、インデックスデータ数が所定の格納上限数に達していないリーフインデックステーブルに、処理対象レコード中の属性値とS413において読み出されたレコードアドレスとからなるインデックスデータを、記録する。
【0072】
次のS415では、CPU20bは、S414においてインデックスデータが記録されたリーフインデックステーブルについて、インデックスデータ数が所定の格納上限数に到達しているか否かを、判別する。そして、CPU20bは、インデックスデータ数が所定の格納上限数に到達していなかった場合には、処理をS417へ進め、インデックスデータ数が所定の格納上限数に到達していた場合には、処理をS416へ進める。
【0073】
次のS416では、CPU20bは、当該リーフインデックステーブルのレコードアドレスと当該リーフインデックステーブル内の属性値の範囲を示す索引情報とを、ルートインデックステーブルに記録し、新たなリーフインデックステーブルを生成し、処理をS417へ進める。
【0074】
S417では、CPU20bは、処理対象インデックスアンロードファイル内に、未処理のレコードが存在するか否かを、判別する。そして、CPU20bは、未処理のレコードが存在していた場合には、処理をS418へ進める。
【0075】
S418では、CPU20bは、処理対象インデックスアンロードファイル内における未処理のレコードのうち、次のレコードを処理対象レコードとして特定し、処理をS413へ戻す。
【0076】
S413〜S418の処理ループの実行中、未処理のレコードが存在しなくなった場合には、CPU20bは、処理をS417から分岐させる。その後、CPU20bは、インデックスロード処理を終了し、図8のメインルーチンにおけるS311へ処理を進める。
【0077】
一方、S401において、属性型がOIDであった場合には、CPU20bは、処理をS461へ進める。
【0078】
S461では、CPU20bは、処理対象インデックスアンロードファイルから、最初のレコードを、処理対象レコードとして読み出す。
【0079】
次のS462では、CPU20bは、クラス番号変換テーブル及びインスタンス番号変換テーブルを参照して、処理対象レコードの中の旧OIDを新OIDに変換し、データベース管理プログラム21の機能を利用して、変換後の新OIDに対応するレコードアドレスを読み出す。
【0080】
次のS463では、CPU20bは、クラス番号変換テーブル及びインスタンス番号変換テーブルを参照して、処理対象レコードの中の属性値である旧OIDを、新OIDに変換する。
【0081】
次のS464では、CPU20bは、S463において変換されたあとのOIDの中のクラス番号が示すクラスについて、インデックステーブルが存在するか否かを、判別する。そして、CPU20bは、当該クラスについてインデックステーブルが存在していた場合には、処理をS466へ進め、当該クラスについてインデックステーブルが存在していなかった場合には、処理をS465へ進める。
【0082】
S465では、CPU20bは、当該クラス用の新たなノードインデックステーブルと新たなリーフインデックステーブルとを生成する。なお、ここで生成されるノードインデックステーブルとリーフインデックステーブルは、レコードが記録されていない新規のテーブルである。CPU20bは、各テーブルを生成した後、処理をS466へ進める。
【0083】
S466では、CPU20bは、インデックスデータ数が所定の格納上限数に達していない当該クラス用のリーフインデックステーブルに、S462において読み出されたレコードアドレスとS463において変換された後のキー値としての新OIDとからなるインデックスデータを、記録する。
【0084】
S467では、CPU20bは、S466においてインデックスデータが記録された当該クラス用のリーフインデックステーブルについて、インデックスデータ数が所定の格納上限数に到達しているか否かを、判別する。そして、CPU20bは、インデックスデータ数が所定の格納上限数に到達していなかった場合には、処理をS469へ進め、インデックスデータ数が所定の格納上限数に到達していた場合には、処理をS468へ進める。
【0085】
S468では、CPU20bは、当該リーフインデックステーブルのレコードアドレスと当該リーフインデックステーブル内の属性値の範囲を示す索引情報とを、当該クラス用のノードインデックステーブルに記録し、新たなリーフインデックステーブルを生成し、処理をS469へ進める。
【0086】
S469では、CPU20bは、処理対象インデックスアンロードファイル内に、未処理のレコードが存在するか否かを、判別する。そして、CPU20bは、未処理のレコードが存在していた場合には、処理をS470へ進める。
【0087】
S470では、CPU20bは、処理対象インデックスアンロードファイル内における未処理のレコードのうち、次のレコードを処理対象レコードとして特定し、処理をS462へ戻す。
【0088】
S462〜S470の処理ループの実行中、未処理のレコードが存在しなくなった場合には、CPU20bは、処理をS469から分岐させ、処理をS471へ進める。
【0089】
S471では、CPU20bは、新たなルートインデックステーブルを生成し、ノードインデックステーブルのレコードアドレスと当該ノードインデックステーブル内の属性値の範囲を示す索引情報とを、そのルートインデックステーブルに記録し、そのルートインデックステーブル内をクラス番号の順にソートする。図14は、図4に示されたインデックステーブルがシステム20へデータ移行されたときの状態を、示している。図4と図14とを比較すると、データ移行に伴ってクラス41,42,43がクラス73,74,72に変換されているが、S471のステップにおいて、インデックステーブル内がソートされるので、ルートインデックステーブル内では、クラス72,73,74の順にレコードが記録されている。CPU20bは、図14のようなルートインデックステーブルを生成した後、インデックスロード処理を終了して、図8のメインルーチンにおけるS311へ処理を進める。
【0090】
S311では、CPU20bは、システム10から受信した一つ又は多数のインデックスアンロードファイルの中に、未処理のインデックスアンロードファイルが存在するか否かを、判別する。そして、CPU20bは、未処理のインデックスアンロードファイルが存在していた場合には、処理をS312へ進める。
【0091】
S312では、CPU20bは、未処理のインデックスアンロードファイルのうち、次のインデックスアンロードファイルを処理対象として特定し、処理をS310へ戻す。
【0092】
S310〜S312の処理ループを実行中、未処理のインデックスアンロードファイルが存在しなくなった場合には、CPU20bは、処理をS311から分岐させ、ロード処理を終了する。
【0093】
以上に示されるロード処理により、オブジェクトアンロードファイル内のレコードは、新OIDを付与されて、当該システム20向けに利用可能なオブジェクトとして生成される。また、インデックスアンロードファイル内のレコードは、キー値として数値や文字列を有している場合には、そのキー値を属性値として有するオブジェクトのレコードアドレスが正しく記録されたインデックステーブルが、当該システム20向けに利用可能なインデックステーブルとして生成される。さらに、インデックスアンロードファイル内のレコードは、キー値としてシステム10用の旧OIDを有している場合には、各変換テーブルが参照されて、その旧OIDが新しいOIDへと変換され、その新OIDとその新OIDを属性値として有するオブジェクトのレコードアドレスとが正しく記録されたインデックステーブルが、当該システム20向けに利用可能なインデックステーブルとして生成される。
【0094】
以上に示されるように、本実施形態によれば、オブジェクトのデータ移行時において、オブジェクトの何れかの属性にインデックスが設定されている場合には、そのインデックスのアンロードファイルが生成され、また、オブジェクトアンロードファイル内のレコードに基づいてオブジェクトを生成する際には、クラス番号変換テーブル及びインスタンス番号変換テーブルが生成される。そして、移行先のシステム20においては、クラス番号変換テーブル及びインスタンス番号変換テーブルが参照されつつ、インデックスアンロードファイル内のレコードに基づいて、そのシステム20用のインデックステーブルが生成される。従って、オブジェクトのデータ移行に伴って、OIDをキー値として持つインデックステーブルが、移行先のシステム20において、一から生成されることなく、各変換テーブル及びインデックスアンロードファイルによって効率的に作成される。
【0095】
(付記1)
オブジェクト識別子を定義付けられることによって何れかのクラスに所属するように管理されるとともに他のオブジェクトのオブジェクト識別子を属性値として有している多数のオブジェクト,及び、属性値についてのインデックスデータを記録している記録装置に繋がれるコンピュータに対し、
前記記録装置内のオブジェクトのオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルをクラス毎に生成させ、
前記インデックスデータ中のキー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記キー値としてのオブジェクト識別子の順に蓄積されているインデックスアンロードファイルを生成させる
ことを特徴とするアンロードプログラム。
【0096】
(付記2)
各種の情報を記録する記録装置に繋がれるコンピュータに対し、
オブジェクトが持つオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルを取得した場合には、前記オブジェクトアンロードファイルからレコードを一つずつ読み出させ、
前記レコードを一つ読み出す毎に、前記レコード中の属性値の集合に新たなオブジェクト識別子を採番させ、
一意な記録位置情報が定義された前記記録装置内の位置へ前記属性値の集合を記録させ、
データ移行前にその属性値の集合に付されていたオブジェクト識別子と前記新たなオブジェクト識別子とについてのクラス番号対応表及びインスタンス番号対応表を作成させ、
キー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記キー値としてのオブジェクト識別子の順に蓄積されているインデックスアンロードファイルを取得した場合には、前記インデックスアンロードファイルからレコードを一つずつ読み出させ、
前記レコードを一つ読み出す毎に、前記レコード中にキー値として含まれるオブジェクト識別子を、前記各対応表を参照させて、対応する新たなオブジェクト識別子に変換させ、
前記レコード中に含まれるキー値ではないオブジェクト識別子を、前記各対応表を参照して、対応する新たなオブジェクト識別子に変換させ、
変換後のオブジェクト識別子に対応する記録位置情報と前記キー値としての新たなオブジェクト識別子とからなるインデックスデータをインデックステーブルに格納させる
ことを特徴とするロードプログラム。
【0097】
(付記3)
或るオブジェクト指向データベース管理システムがクラス毎に管理している多数のオブジェクトのそれぞれが、オブジェクト識別子を有しているとともに、他のオブジェクト識別子を属性値として有している場合において、そのオブジェクトが有する各属性値を、他のオブジェクト指向データベース管理システムへ移行するとともに、前記属性値についてのインデックステーブル内のインデックスデータをも移行する際のデータ移行方法であって、
移行元のオブジェクト指向データベース管理システムが、
前記オブジェクトのオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルをクラス毎に生成するとともに、
前記インデックスデータ中のキー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記インデックステーブルからキー値が読み出される順に蓄積されているインデックスアンロードファイルを生成し、
移行先のオブジェクト指向データベース管理システムが、
前記オブジェクトアンロードファイルを取得した場合には、前記オブジェクトアンロードファイルからレコードを一つずつ読み出す毎に、レコード中の属性値の集合に新たなオブジェクト識別子を採番し、一意な記録位置情報が定義された記録装置内の位置に前記属性値の集合を記録するするとともに、データ移行前にその属性値の集合に付されていたオブジェクト識別子と前記新たなオブジェクト識別子とについてのクラス番号対応表及びインスタンス番号対応表を作成し、
前記インデックスアンロードファイルを取得した場合には、前記インデックスアンロードファイルからレコードを一つずつ読み出す毎に、レコード中にキー値として含まれるオブジェクト識別子を、前記各対応表を参照して、対応する新たなオブジェクト識別子に変換するとともに、前記レコード中のオブジェクト識別子を、前記各対応表を参照して、対応する新たなオブジェクト識別子に変換し、変換後のオブジェクト識別子に対応する記録位置情報と前記キー値としての前記新たなオブジェクト識別子とからなるインデックスデータをインデックステーブルに格納する
ことを特徴とするデータ移行方法。
【0098】
(付記4)
前記インデックステーブルは、リーフインデックステーブルとして多数のテーブルに分割されており、各リーフインデックステーブルは、ルートインデックステーブル及びノードインデックステーブルとともに、Bツリー型のデータ構造を構成している
ことを特徴とする付記3記載のデータ移行方法。
【0099】
(付記5)
前記ノードインデックステーブルは、クラス番号毎に作成されている
ことを特徴とする付記4記載のデータ移行方法。
【0100】
(付記6)
前記移行元のオブジェクト指向データベース管理システムは、前記移行先のオブジェクト指向データベース管理システムに対し、データの送受信が可能となるように接続されており、前記オブジェクトアンロードファイル及び前記インデックスアンロードファイルを生成すると、これらファイルを前記移行先のオブジェクト指向データベース管理システムへ送信する
ことを特徴とする付記3,4又は5記載のデータ移行方法。
【0101】
(付記7)
オブジェクト識別子を定義付けられることによって何れかのクラスに所属するように管理されるとともに他のオブジェクトのオブジェクト識別子を属性値として有している多数のオブジェクト,及び、属性値についてのインデックスデータを記録している記録装置に繋がれるコンピュータに対し、
前記記録装置内のオブジェクトのオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルをクラス毎に生成させ、
前記インデックスデータ中のキー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記キー値としてのオブジェクト識別子の順に蓄積されているインデックスアンロードファイルを生成させる
アンロードプログラム
を格納したことを特徴とするコンピュータ可読媒体。
【0102】
(付記8)
各種の情報を記録する記録装置に繋がれるコンピュータに対し、
オブジェクトが持つオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルを取得した場合には、前記オブジェクトアンロードファイルからレコードを一つずつ読み出させ、
前記レコードを一つ読み出す毎に、前記レコード中の属性値の集合に新たなオブジェクト識別子を採番させ、
一意な記録位置情報が定義された前記記録装置内の位置へ前記属性値の集合を記録させ、
データ移行前にその属性値の集合に付されていたオブジェクト識別子と前記新たなオブジェクト識別子とについてのクラス番号対応表及びインスタンス番号対応表を作成させ、
キー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記キー値としてのオブジェクト識別子の順に蓄積されているインデックスアンロードファイルを取得した場合には、前記インデックスアンロードファイルからレコードを一つずつ読み出させ、
前記レコードを一つ読み出す毎に、前記レコード中にキー値として含まれるオブジェクト識別子を、前記各対応表を参照させて、対応する新たなオブジェクト識別子に変換させ、
前記レコード中に含まれるキー値ではないオブジェクト識別子を、前記各対応表を参照して、対応する新たなオブジェクト識別子に変換させ、
変換後のオブジェクト識別子に対応する記録位置情報と前記キー値としての新たなオブジェクト識別子とからなるインデックスデータをインデックステーブルに格納させる
ロードプログラム
を格納したことを特徴とするコンピュータ可読媒体。
【0103】
【発明の効果】
以上に説明したように、本発明によれば、オブジェクトのデータ移行に伴って、オブジェクト識別子をキー値として持つインデックステーブルが、移行先のシステムにおいて効率的に作成される。
【図面の簡単な説明】
【図1】本発明の実施形態の概略的な構成図
【図2】両システムのハードディスクドライブ内に記録されているデータやプログラムを説明するための説明図
【図3】オブジェクトを概念的に説明するために作成されたテーブル
【図4】リンクが貼られた属性に対してインデックスが作成された例を概念的に説明するために作成されたテーブル
【図5】アンロード処理の内容を示すフローチャート
【図6】インデックスアンロードサブルーチンの内容を示すフローチャート
【図7】インデックスアンロードファイル内を概念的に示すテーブル
【図8】ロード処理の内容を示すフローチャート
【図9】データ移行によって新たなOIDが付与されたオブジェクトの一例を概念的に説明するために作成されたテーブル
【図10】インスタンス番号変換テーブルを概念的に説明するために作成された対応表
【図11】クラス番号変換テーブルを概念的に説明するために作成された対応表
【図12】属性値として有していた旧OIDが新OIDに変換された後のオブジェクトの一例を概念的に説明するために作成されたテーブル
【図13】インデックスロードサブルーチンの内容を示すフローチャート
【図14】図4に示されたインデックステーブルが移行先のシステムへデータ移行されたときの状態を概念的に説明するために作成されたテーブル
【符号の説明】
10 システム(移行元)
10a ハードディスクドライブ(HDD)
10b CPU
11 オブジェクト
12 インデックステーブル
13 データベース管理プログラム
14 アンロードプログラム
20 システム(移行先)
20a HDD
20b CPU
21 データベース管理プログラム
22 ロードプログラム
Claims (5)
- オブジェクト識別子を定義付けられることによって何れかのクラスに所属するように管理されるとともに他のオブジェクトのオブジェクト識別子を属性値として有している多数のオブジェクト,及び、属性値についてのインデックスデータを記録している記録装置に繋がれるコンピュータに対し、
前記記録装置内のオブジェクトのオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルをクラス毎に生成させ、
前記インデックスデータ中のキー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記キー値としてのオブジェクト識別子の順に蓄積されているインデックスアンロードファイルを生成させる
ことを特徴とするアンロードプログラム。 - 各種の情報を記録する記録装置に繋がれるコンピュータに対し、
オブジェクトが持つオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルを取得した場合には、前記オブジェクトアンロードファイルからレコードを一つずつ読み出させ、
前記レコードを一つ読み出す毎に、前記レコード中の属性値の集合に新たなオブジェクト識別子を採番させ、
一意な記録位置情報が定義された前記記録装置内の位置へ前記属性値の集合を記録させ、
データ移行前にその属性値の集合に付されていたオブジェクト識別子と前記新たなオブジェクト識別子とについてのクラス番号対応表及びインスタンス番号対応表を作成させ、
キー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記キー値としてのオブジェクト識別子の順に蓄積されているインデックスアンロードファイルを取得した場合には、前記インデックスアンロードファイルからレコードを一つずつ読み出させ、
前記レコードを一つ読み出す毎に、前記レコード中にキー値として含まれるオブジェクト識別子を、前記各対応表を参照させて、対応する新たなオブジェクト識別子に変換させ、
前記レコード中に含まれるキー値ではないオブジェクト識別子を、前記各対応表を参照して、対応する新たなオブジェクト識別子に変換させ、
変換後のオブジェクト識別子に対応する記録位置情報と前記キー値としての新たなオブジェクト識別子とからなるインデックスデータをインデックステーブルに格納させる
ことを特徴とするロードプログラム。 - 或るオブジェクト指向データベース管理システムがクラス毎に管理している多数のオブジェクトのそれぞれが、オブジェクト識別子を有しているとともに、他のオブジェクト識別子を属性値として有している場合において、そのオブジェクトが有する各属性値を、他のオブジェクト指向データベース管理システムへ移行するとともに、前記属性値についてのインデックステーブル内のインデックスデータをも移行する際のデータ移行方法であって、
移行元のオブジェクト指向データベース管理システムが、
前記オブジェクトのオブジェクト識別子とそのオブジェクトが有する各属性値とからなるレコードが蓄積されたオブジェクトアンロードファイルをクラス毎に生成するとともに、
前記インデックスデータ中のキー値としてのオブジェクト識別子とそのオブジェクト識別子を属性値として有するオブジェクトのオブジェクト識別子とからなるレコードが、前記インデックステーブルからキー値が読み出される順に蓄積されているインデックスアンロードファイルを生成し、
移行先のオブジェクト指向データベース管理システムが、
前記オブジェクトアンロードファイルを取得した場合には、前記オブジェクトアンロードファイルからレコードを一つずつ読み出す毎に、レコード中の属性値の集合に新たなオブジェクト識別子を採番し、一意な記録位置情報が定義された記録装置内の位置に前記属性値の集合を記録するするとともに、データ移行前にその属性値の集合に付されていたオブジェクト識別子と前記新たなオブジェクト識別子とについてのクラス番号対応表及びインスタンス番号対応表を作成し、
前記インデックスアンロードファイルを取得した場合には、前記インデックスアンロードファイルからレコードを一つずつ読み出す毎に、レコード中にキー値として含まれるオブジェクト識別子を、前記各対応表を参照して、対応する新たなオブジェクト識別子に変換するとともに、前記レコード中のオブジェクト識別子を、前記各対応表を参照して、対応する新たなオブジェクト識別子に変換し、変換後のオブジェクト識別子に対応する記録位置情報と前記キー値としての前記新たなオブジェクト識別子とからなるインデックスデータをインデックステーブルに格納する
ことを特徴とするデータ移行方法。 - 前記インデックステーブルは、リーフインデックステーブルとして多数のテーブルに分割されており、各リーフインデックステーブルは、ルートインデックステーブル及びノードインデックステーブルとともに、Bツリー型のデータ構造を構成している
ことを特徴とする請求項3記載のデータ移行方法。 - 前記ノードインデックステーブルは、クラス番号毎に作成されている
ことを特徴とする請求項4記載のデータ移行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002350899A JP2004185270A (ja) | 2002-12-03 | 2002-12-03 | アンロードプログラム,ロードプログラム及びデータ移行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002350899A JP2004185270A (ja) | 2002-12-03 | 2002-12-03 | アンロードプログラム,ロードプログラム及びデータ移行方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004185270A true JP2004185270A (ja) | 2004-07-02 |
Family
ID=32752959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002350899A Withdrawn JP2004185270A (ja) | 2002-12-03 | 2002-12-03 | アンロードプログラム,ロードプログラム及びデータ移行方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004185270A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006041104A1 (ja) * | 2004-10-13 | 2006-04-20 | Nissay Information Technology Co., Ltd. | データ管理装置およびその方法 |
JP2010165184A (ja) * | 2009-01-15 | 2010-07-29 | Nec Corp | 検索装置、検索装置の検索方法及びプログラム |
JP2013186842A (ja) * | 2012-03-09 | 2013-09-19 | Fujitsu Ltd | 検索装置、検索方法、および検索プログラム |
JP2014157442A (ja) * | 2013-02-15 | 2014-08-28 | Nippon Telegr & Teleph Corp <Ntt> | データベース装置 |
JP2015041207A (ja) * | 2013-08-21 | 2015-03-02 | 日本電信電話株式会社 | データベース装置 |
CN109657015A (zh) * | 2018-12-25 | 2019-04-19 | 四川效率源信息安全技术股份有限公司 | 一种基于oracle行迁移和行连接的数据提取方法 |
-
2002
- 2002-12-03 JP JP2002350899A patent/JP2004185270A/ja not_active Withdrawn
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006041104A1 (ja) * | 2004-10-13 | 2006-04-20 | Nissay Information Technology Co., Ltd. | データ管理装置およびその方法 |
JPWO2006041104A1 (ja) * | 2004-10-13 | 2008-05-15 | ニッセイ情報テクノロジー株式会社 | データ管理装置およびその方法 |
JP2010015593A (ja) * | 2004-10-13 | 2010-01-21 | Nissay Information Technology Co Ltd | データ管理装置およびその方法 |
JP2010015592A (ja) * | 2004-10-13 | 2010-01-21 | Nissay Information Technology Co Ltd | データ管理装置およびその方法 |
JP4516084B2 (ja) * | 2004-10-13 | 2010-08-04 | ニッセイ情報テクノロジー株式会社 | データ管理装置およびその方法 |
US8554582B2 (en) | 2004-10-13 | 2013-10-08 | Nissay Information Technology Co., Ltd. | Data management apparatus and method thereof |
US8694344B2 (en) | 2004-10-13 | 2014-04-08 | Nissay Information Technology Co., Ltd. | Data management apparatus and method thereof |
JP2010165184A (ja) * | 2009-01-15 | 2010-07-29 | Nec Corp | 検索装置、検索装置の検索方法及びプログラム |
JP2013186842A (ja) * | 2012-03-09 | 2013-09-19 | Fujitsu Ltd | 検索装置、検索方法、および検索プログラム |
JP2014157442A (ja) * | 2013-02-15 | 2014-08-28 | Nippon Telegr & Teleph Corp <Ntt> | データベース装置 |
JP2015041207A (ja) * | 2013-08-21 | 2015-03-02 | 日本電信電話株式会社 | データベース装置 |
CN109657015A (zh) * | 2018-12-25 | 2019-04-19 | 四川效率源信息安全技术股份有限公司 | 一种基于oracle行迁移和行连接的数据提取方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110268394A (zh) | Kvs树 | |
CA2166416C (en) | Method and system for the link tracking of objects | |
CN110291518A (zh) | 合并树无用单元指标 | |
CN110383261A (zh) | 用于多流存储装置的流选择 | |
CN102214109B (zh) | 一种加载插件的方法及装置 | |
CN110268399A (zh) | 用于维护操作的合并树修改 | |
JPH02501514A (ja) | 属性データ モデル データベースを使用するソフトウエア応用プログラムを結合する方法 | |
US7730099B2 (en) | Storage and retrieval of richly typed hierarchical network models | |
CN103460197A (zh) | 计算机系统、文件管理方法以及元数据服务器 | |
JP4016610B2 (ja) | 階層ディレクトリ構造を有する記録媒体、検索装置、検索プログラム、及び検索方法 | |
JP2000076109A (ja) | データ表示装置およびデータ表示方法 | |
JP5160483B2 (ja) | ストレージシステム及びデータマイグレーション対応検索システム | |
CN101393624A (zh) | 对物料清单进行操作实现生产管理的方法及装置 | |
CN107784055A (zh) | 基于非关系型数据库的事务处理方法和装置 | |
JP2004185270A (ja) | アンロードプログラム,ロードプログラム及びデータ移行方法 | |
JPH0358249A (ja) | フアイルのアクセス方法 | |
WO2004031956A1 (ja) | 関連情報管理方法、プログラム及び装置 | |
JP4825504B2 (ja) | データ登録・検索システムおよびデータ登録・検索方法 | |
JPH0850559A (ja) | ファイル記憶保護装置 | |
CN113391916A (zh) | 组织架构数据处理方法、装置、计算机设备和存储介质 | |
JPH0934906A (ja) | 図書管理装置 | |
JP4011662B2 (ja) | 電子ファイリング方法及び装置 | |
CN111444179B (zh) | 数据处理方法、装置、存储介质及服务器 | |
JP2000242538A (ja) | ディレクトリ検索システム、ディレクトリ検索方法およびディレクトリ検索用プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP2009015511A (ja) | メタデータ管理装置、プログラムおよびメタデータ管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060207 |