(57)【要約】【課題】データベースの整合性をこれまでよりも効率的に判断する。【解決手段】データベースの整合性を判断するシステムを提供する。このシステムは、データベースに含まれる各々のセグメントデータから順次、他のセグメントデータに対するポインタを読み出す読出部と、読出部がポインタを読み出したセグメントデータの保存先アドレスを記録するアドレス記録部と、読出部が読み出したポインタを記録するポインタ記録部とを備える。そして、既にポインタを読み出した領域においてセグメントデータが更新されたことに応じ、アドレス記録部に記録された保存先アドレスを変更し、ポインタ記録部に記録されたポインタを変更する。そして、アドレス記録部に記録された各々の保存先アドレスが、ポインタ記録部に記録された各々のポインタと一致することを条件に、データベースが整合していると判断する。【選択図】図３
2007052583.tif 000002
【特許請求の範囲】
【請求項１】
データベースの整合性を判断するシステムであって、
前記データベースに含まれる複数のセグメントデータの各々から順次、他のセグメントデータに対するポインタを読み出す読出部と、
前記読出部がポインタを読み出したセグメントデータの保存先アドレスを記録するアドレス記録部と、
前記読出部が読み出したポインタを記録するポインタ記録部と、
既にポインタを読み出した領域においてセグメントデータが更新されたことに応じ、前記アドレス記録部に記録された前記保存先アドレスを変更するアドレス変更部と、
既にポインタを読み出した領域においてセグメントデータが更新されたことに応じ、前記ポインタ記録部に記録されたポインタを変更するポインタ変更部と、
前記アドレス記録部に記録された各々の保存先アドレスが、前記ポインタ記録部に記録された各々のポインタと一致することを条件に、前記データベースが整合していると判断する判断部と
を備えるシステム。
【請求項２】
既にポインタを読み出した領域においてセグメントデータが更新される毎に、当該セグメントデータに含まれるポインタの変更前の値を記録する第１領域と、当該セグメントデータに含まれるポインタの変更後の値を記録する第２領域とを有する履歴記録部を更に備え、
前記ポインタ変更部は、前記履歴記録部の第１領域に記録されたポインタを前記ポインタ記録部から除外し、前記履歴記録部の第２領域に記録されたポインタを前記ポインタ記録部に追加する
請求項１に記載のシステム。
【請求項３】
前記読出部が既に読み出したアドレスを記録し、読み出しを開始すべき先頭アドレスから予め定められた昇順および降順の何れかの順序によりアドレス値を順次更新する読出済アドレス記録部を更に備え、
前記履歴記録部は、セグメントデータが更新されたことに応じ、当該セグメントデータの保存先アドレスが読出し済みの前記アドレスよりも先頭側であることを条件に、当該セグメントデータが既にポインタを読み出した領域に位置すると判断する
請求項２に記載のシステム。
【請求項４】
前記ポインタ変更部は、前記履歴記録部の第１領域に記録されたポインタを、当該ポインタが削除されたことを示す削除フラグに対応付けて前記ポインタ記録部に追加することで、当該ポインタを前記ポインタ記録部から除外し、
前記判断部は、前記ポインタ記録部に記録された複数のポインタから、前記削除フラグに対応するポインタ、および、当該ポインタと同一の値を採る他のポインタを除外したポインタの各々を、前記アドレス記録部に記録されたアドレスの各々と比較する
請求項２に記載のシステム。
【請求項５】
前記ポインタ変更部は、前記ポインタ記録部に記録された複数のポインタを、追加または除外されたポインタを含めてポインタ値により昇順または降順に並べ替え、
前記判断部は、並べ替えた前記複数のポインタを、前記アドレス記録部に記録されたアドレスの各々と比較する
請求項４に記載のシステム。
【請求項６】
前記履歴記録部は、セグメントデータが追加されたことに応じ、
追加された当該セグメントデータの保存先アドレスに対応付けて、
前記第１領域に、ポインタを含まない旨を示すポインタ不保持情報を記録し、
前記第２領域に、当該セグメントデータが有する他のセグメントデータへのポインタを記録し、
セグメントデータが削除されたことに応じ、
削除された当該セグメントデータの保存先アドレスに対応付けて、
前記第１領域に、当該セグメントデータが削除前に有していた他のセグメントデータへのポインタを記録し、
前記第２領域に、前記ポインタ不保持情報を記録し、
前記アドレス変更部は、前記第１領域に前記ポインタ不保持情報が記録されていることに応じ、当該第１領域に対応する保存先アドレスを前記アドレス記録部に追加し、前記第２領域に前記ポインタ不保持情報が記録されていることに応じ、当該第２領域に対応する保存先アドレスを前記アドレス記録部から除外する
請求項２に記載のシステム。
【請求項７】
前記アドレス変更部は、前記第２領域に前記ポインタ不保持情報が記録されていることに応じ、当該第２領域に対応する保存先アドレスを、当該保存先アドレスが削除されたことを示す削除フラグに対応付けて前記アドレス記録部に記録することにより、当該保存先アドレスを前記アドレス記録部から除外し、
前記判断部は、前記アドレス記録部に記録された複数の保存先アドレスから、前記削除フラグに対応する保存先アドレス、および、当該保存先アドレスと同一の値を採る他の保存先アドレスを除外した保存先アドレスの各々を、前記ポインタ記録部に記録されたポインタの各々と比較する
請求項６に記載のシステム。
【請求項８】
前記アドレス変更部は、前記アドレス記録部に保存先アドレスを追加したことを条件に、前記アドレス記録部に記録された複数の保存先アドレスをアドレス値により昇順または降順に並べ替え、
前記判断部は、並べ替えた前記複数のアドレス値を、前記ポインタ記録部に記録されたポインタの各々と比較する
請求項７に記載のシステム。
【請求項９】
前記履歴記録部は、一のセグメントデータが１または２以上の他のセグメントデータに分割されたことに応じ、
分割された当該一のセグメントデータの保存先アドレスに対応付けて、
前記第１領域に、当該一のセグメントデータが分割前に有していたポインタを記録し、
前記第２領域に、当該ポインタ、当該一のセグメントデータが分割された旨を示す分割フラグ、および、前記他のセグメントデータの各々へのポインタを記録し、
前記ポインタ変更部は、前記第２領域に前記分割フラグが記録されていることを条件に、当該第２領域に記録されている前記他のセグメントデータへのポインタを前記ポインタ記録部に追加する
請求項２に記載のシステム。
【請求項１０】
前記判断部によって前記データベースが整合していると判断されたことを条件に、
前記ポインタ記録部は、整合している状態から何れかの前記セグメントデータが更新されたことに応じ、当該更新によって変更されたポインタを更に記録し、
前記アドレス記録部は、整合している状態から何れかの前記セグメントデータが更新されたことに応じ、当該更新によって追加または削除されたセグメントデータの保存先アドレスを更に記録し、
前記判断部は、整合していると判断された後に前記ポインタ記録部に記録された変更後のポインタの各々と、整合していると判断された後に前記アドレス記録部に記録された追加されたセグメントデータの保存先アドレスの各々とが一致することを条件に、前記データベースの整合性が維持されていると判断する
請求項１に記載のシステム。
【請求項１１】
前記判断部は、整合していると判断された後に前記ポインタ記録部に記録された変更後のポインタの各々が、整合性の判断のために前記アドレス記録部が順次記録したアドレス、または、整合性の判断後に前記アドレス記録部に記録されたアドレスに一致することを条件に、前記データベースの整合性が維持されていると判断する
請求項１０に記載のシステム。
【請求項１２】
データベースの整合性を判断するシステムを用いて前記データベースの整合性を判断する判断方法であって、
前記システムは、
前記データベースに含まれる複数のセグメントデータの各々から順次、他のセグメントデータに対するポインタを読み出す読出部と、
前記読出部がポインタを読み出したセグメントデータの保存先アドレスを記録するアドレス記録部と、
前記読出部が読み出したポインタを記録するポインタ記録部と
を備え、
既にポインタを読み出した領域においてセグメントデータが更新されたことに応じ、前記アドレス記録部に記録された前記保存先アドレスを変更する段階と、
既にポインタを読み出した領域においてセグメントデータが更新されたことに応じ、前記ポインタ記録部に記録されたポインタを変更する段階と、
前記アドレス記録部に記録された各々の保存先アドレスが、前記ポインタ記録部に記録された各々のポインタと一致することを条件に、前記データベースが整合していると判断する段階と
を備える判断方法。
【請求項１３】
データベースの整合性を判断するシステムとして、情報処理装置を機能させるプログラムであって、
前記情報処理装置を、
前記データベースに含まれる複数のセグメントデータの各々から順次、他のセグメントデータに対するポインタを読み出す読出部と、
前記読出部がポインタを読み出したセグメントデータの保存先アドレスを記録するアドレス記録部と、
前記読出部が読み出したポインタを記録するポインタ記録部と、
既にポインタを読み出した領域においてセグメントデータが更新されたことに応じ、前記アドレス記録部に記録された前記保存先アドレスを変更するアドレス変更部と、
既にポインタを読み出した領域においてセグメントデータが更新されたことに応じ、前記ポインタ記録部に記録されたポインタを変更するポインタ変更部と、
前記アドレス記録部に記録された各々の保存先アドレスが、前記ポインタ記録部に記録された各々のポインタと一致することを条件に、前記データベースが整合していると判断する判断部と
して機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム、判断方法およびプログラムに関する。特に、本発明は、データベースの整合性を判断するシステム、判断方法およびプログラムに関する。
【背景技術】
【０００２】
従来、データベースの整合性を判断するには、データベースに含まれる各セグメントデータの保存先アドレスと、データベースに含まれる各ポインタとを比較し、これらが一致するか否かを判断する必要がある。このような整合性判断は、例えば、本願出願人によって開発されたデータベース管理システムに実装されて用いられている（非特許文献１を参照。）。
【０００３】
ここで、何れかのポインタの読み出しを開始してから全てのポインタの読み出しを完了するまでの間にデータベースが更新されると、更新前後のポインタが混ざった状態でアドレスと比較されてしまう場合がある。このため、従来、整合性の判断の処理中には、データベースの更新を停止するか、または、データベースの少なくとも一部に対するアクセスの排他制御を行うことが一般的である（例えば特許文献１を参照。）。
【０００４】
しかしながら、データベースのデータサイズが大きい場合には、更新が停止される時間が膨大となり、または、更新が大幅に遅延し、利用者の利便性を低下させてしまう場合があった。これに対して、更新を停止させることなく整合性を判断する技術が提案されている（特許文献２を参照。）。
【特許文献１】特開平８−２４９２２２号公報
【特許文献２】特開２００１−１４２７６５号公報
【非特許文献１】IMS High Performance Pointer Checker User's Guide http://publibfi.boulder.ibm.com/cgi-bin/bookmgr/BOOKS/fabp1b10/CCONTENTS
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献２の技術において、整合性検証装置は、データベースファイルから整合性検証のためのデータを排他制御を行なわずに取り出す。そして、この取り出したデータを用いて整合性検証を行なう処理を所定回数繰り返し、この所定回数の検証結果と予め設定した整合性の判定条件とに基づいて、データベースファイルの整合がとれているかいないかを判断する。したがって、この技術によっては、整合性が取れている可能性を評価できるが、整合性を確実に判断することはできないと考えられる。或いは、整合性を確実に判断するには、整合性検証を行う回数を大きくしなければならず、その処理に時間がかかることが予想される。
【０００６】
そこで本発明は、上記の課題を解決することのできるシステム、判断方法およびプログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明においては、データベースの整合性を判断するシステムであって、データベースに含まれる複数のセグメントデータの各々から順次、他のセグメントデータに対するポインタを読み出す読出部と、読出部がポインタを読み出したセグメントデータの保存先アドレスを記録するアドレス記録部と、読出部が読み出したポインタを記録するポインタ記録部と、既にポインタを読み出した領域においてセグメントデータが更新されたことに応じ、アドレス記録部に記録された保存先アドレスを変更するアドレス変更部と、既にポインタを読み出した領域においてセグメントデータが更新されたことに応じ、ポインタ記録部に記録されたポインタを変更するポインタ変更部と、アドレス記録部に記録された各々の保存先アドレスが、ポインタ記録部に記録された各々のポインタと一致することを条件に、データベースが整合していると判断する判断部とを備えるシステム、当該システムとして情報処理装置を機能させるプログラム、および、当該システムによってデータベースの整合性を判断する判断方法を提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明の効果】
【０００８】
本発明によれば、データベースの整合性をこれまでよりも効率的に判断することができる。
【発明を実施するための最良の形態】
【０００９】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１０】
図１は、データベースシステム１０の概略を示す。データベースシステム１０は、階層型データベース２０と、データベース管理システム３０とを備える。階層型データベース２０は、複数のセグメントデータを含む。そして、各セグメントデータは、他のセグメントデータに対するポインタを有する。本実施例におけるデータベース管理システム３０は、各々のポインタと、セグメントデータの保存先アドレスとを比較することにより階層型データベース２０の整合性を判断する。
【００１１】
図２は、階層型データベース２０のデータ構造の一例を示す。階層型データベース２０は、セグメントデータ２００−１〜４に代表される複数のセグメントデータを記録している。セグメントデータ２００−１は、セグメントデータのルート部分（根部分）を示すＲＡＰから指されている。セグメントデータ２００−１は、接頭部２１０−１と、データ部２２０−１とを含む。また、セグメントデータ２００−１の保存先アドレスは１０００である。ここで、保存先アドレスとは、例えば、階層型データベース２０の所定の基準アドレスと比較したセグメントデータ２００−１の先頭アドレスの位置（ＲＢＡ：Ｒｅｌａｔｉｖｅ  Ｂｙｔｅ  Ａｄｄｒｅｓｓ）をいう。
【００１２】
接頭部２１０−１は、セグメントデータ２００−２の保存先アドレスである１１００を指示するポインタ２３０−１と、その他のセグメントデータの保存先アドレスを指示するポインタ２４０−１とを含む。セグメントデータ２００−２は、接頭部２１０−２と、データ部２２０−２とを含む。接頭部２１０−２は、セグメントデータ２００−４の保存先アドレスである２０００を指示するポインタ２３０−２と、更に他のセグメントデータの保存先アドレスを指示するポインタ２４０−２とを含む。
【００１３】
セグメントデータ２００−４は、接頭部２１０−４と、データ部２２０−４とを含む。セグメントデータ２００−４は、セグメントデータ２００−１から始まる一連の階層構造の終端部分に位置する。このため、接頭部２１０−４は、何れのセグメントデータに対するポインタも有していない。実際には、接頭部２１０−４は、何れのアドレスをも示さない所定のデータ（例えば、Ｎｕｌｌ）を、ポインタ２３０−４およびポインタ２４０−４として含んでもよい。
【００１４】
このように、階層型データベース２０は、各セグメントデータの接頭部（Ｐｒｅｆｉｘ）に記録されたポインタを辿る事により順次他のセグメントデータをアクセスできる階層構造を有している。従って、整合性の維持された状態において、ポインタの値は、そのポインタによって示されるセグメントデータの保存先アドレスと一致している。本実施例におけるデータベース管理システム３０は、これらのポインタ及び保存先アドレスの一致を判断することにより、階層型データベース２０の整合性を判断することができる。
【００１５】
また、階層型データベース２０内のセグメントデータは、利用者からの指示等に応じて随時更新されてもよい。本図の例では、セグメントデータ２００−３がセグメントデータ２００−２とセグメントデータ２００−４との間に追加される場合におけるポインタの接続関係を点線で示している。即ち、この追加処理によって、セグメントデータ２００−２はセグメントデータ２００−３を示すポインタを記録し、セグメントデータ２００−３はセグメントデータ２００−４を示すポインタを記録することとなる。
【００１６】
従来、このような更新処理がデータベースの整合性判断処理中に発生した場合においては、整合性の判断結果が誤ってしまう場合があった。例えば、データベースを更新する過渡状態においては、セグメントデータ２００−３が階層型データベース２０に既に記録されている一方でポインタ２３０−２が未だにセグメントデータ２００−４を指している状態が発生する場合がある。このような状態で整合性を判断すると、ポインタと保存先アドレスが一致せず、ゆえに、整合性が無いと判断してしまう場合があった。これに対して、本実施例におけるデータベース管理システム３０は、整合性の判断処理中に階層型データベース２０が更新された場合であっても適切に整合性を判断することを目的とする。
【００１７】
図３は、データベース管理システム３０の機能を機能ブロック毎に示す。データベース管理システム３０は、読出部３００と、スキャンポインタ記録部３０５と、アドレス記録部３１０と、ポインタ記録部３２０と、アドレス変更部３３０と、ポインタ変更部３４０と、セグメントデータ更新部３５０と、履歴記録部３６０と、判断部３７０とを有する。読出部３００は、階層型データベース２０に含まれる複数のセグメントデータの各々から順次、他のセグメントデータに対するポインタを読み出す。具体的には、まず、読出部３００は、セグメントデータ２００−１から、セグメントデータ２００−２に対するポインタ１１００を読み出す。次に、読出部３００は、セグメントデータ２００−２から、セグメントデータ２００−４に対するポインタ２０００を読み出す。同様の処理を階層型データベース２０の先頭から末尾に向かう方向に繰り返し行う。
【００１８】
スキャンポインタ記録部３０５は、本発明の読出済アドレス記録部の一例であり、読出部３００が既に読み出したアドレスを記録する。そして、スキャンポインタ記録部３０５は、読出部３００による読み出し処理に伴って、読み出しを開始すべき先頭アドレスから予め定められた昇順および降順の何れかの順序によりアドレス値を順次更新する。このアドレス値をスキャンポインタと呼ぶ。アドレス記録部３１０は、読出部３００がポインタを読み出したセグメントデータの保存先アドレスを、読出部３００による読み出し処理の進行に伴って順次記録する。ポインタ記録部３２０は、読出部３００が読み出したポインタを、読出部３００による読み出し処理の進行に伴って順次記録する。
【００１９】
アドレス変更部３３０は、既にポインタを読み出した領域においてセグメントデータが更新されたことに応じ、アドレス記録部３１０に記録された保存先アドレスを変更する。既にポインタを読み出した領域が更新されたか否かは、履歴記録部３６０に記録された履歴によって判断できる。同様に、ポインタ変更部３４０は、既にポインタを読み出した領域においてセグメントデータが更新されたことに応じ、ポインタ記録部３２０に記録されたポインタを変更する。
【００２０】
セグメントデータ更新部３５０は、外部から受けた利用者等の指示に応じ、階層型データベース２０中のセグメントデータを更新する。これは、整合性判断の処理中でも構わない。履歴記録部３６０は、セグメントデータ更新部３５０がセグメントデータを更新したことに応じ、当該セグメントデータが、既にポインタを読み出した領域に位置するか否かを判断する。例えば、履歴記録部３６０は、当該セグメントデータの保存先アドレスがスキャンポインタ記録部３０５に記録されたアドレスよりも先頭側であることを条件に、当該セグメントデータが既にポインタを読み出した領域に位置すると判断してもよい。当該セグメントデータが既にポインタを読み出した領域に位置することを条件に、履歴記録部３６０は、その更新履歴を記録する。
【００２１】
図４は、履歴記録部３６０のデータ構造の一例を示す。本図の第２行目および第３行目は、図２で説明したセグメントデータの追加処理についての更新履歴である。また、セグメントデータの削除処理について説明するために、アドレス３０００番台の更新履歴を追加して示した。
【００２２】
履歴記録部３６０は、更新対象のセグメントデータの保存先アドレスを記録する保存先アドレス記録領域４００を有する。また、履歴記録部３６０は、本発明に係る第１領域の一例である変更前ポインタ記録領域４１０と、本発明に係る第２領域の一例である変更後ポインタ記録領域４２０とを有する。履歴記録部３６０は、保存先アドレス記録領域４００において、セグメントデータが更新される毎に、そのセグメントデータの保存先アドレスを記録する。履歴記録部３６０は、変更前ポインタ記録領域４１０において、セグメントデータが更新される毎に、そのセグメントデータに含まれるポインタの変更前の値を記録する。履歴記録部３６０は、変更後ポインタ記録領域４２０において、セグメントデータが更新される毎に、そのセグメントデータに含まれるポインタの変更後の値を記録する。
【００２３】
例えば、アドレス１１００のセグメントデータにおいてポインタ２０００がポインタ１２００に変更されたことに応じ、履歴記録部３６０は、保存先アドレス記録領域４００に１１００を記録し、変更前ポインタ記録領域４１０に２０００を記録し、変更後ポインタ記録領域４２０に１２００を記録する。また、アドレス３０００のセグメントデータにおいてポインタ３１００がポインタ３２００に変更されたことに応じ、履歴記録部３６０は、保存先アドレス記録領域４００に３０００を記録し、変更前ポインタ記録領域４１０に３１００を記録し、変更後ポインタ記録領域４２０に３２００を記録する。
【００２４】
また、履歴記録部３６０は、セグメントデータが追加されたことに応じ、追加されたそのセグメントデータの保存先アドレスに対応付けて、変更前ポインタ記録領域４１０に、ポインタを含まない旨を示すポインタ不保持情報を記録する。このポインタ不保持情報は、ゼロや−１などの所定の値に定められたＮｕｌｌデータであってもよい。また、履歴記録部３６０は、そのセグメントデータの保存先アドレスに対応付けて、変更後ポインタ記録領域４２０に、そのセグメントデータが有する他のセグメントデータへのポインタを記録する。
【００２５】
例えば、アドレス１２００のセグメントデータが追加されたことに応じ、履歴記録部３６０は、保存先アドレス記録領域４００に１２００を記録し、変更前ポインタ記録領域４１０にＮｕｌｌを記録し、変更後ポインタ記録領域４２０にアドレス２０００を記録する。
【００２６】
また、履歴記録部３６０は、セグメントデータが削除されたことに応じ、削除されたそのセグメントデータの保存先アドレスに対応付けて、変更前ポインタ記録領域４１０に、当該セグメントデータが削除前に有していた他のセグメントデータへのポインタを記録する。そして、履歴記録部３６０は、そのセグメントデータの保存先アドレスに対応付けて、変更後ポインタ記録領域４２０にポインタ不保持情報を記録する。
【００２７】
例えば、アドレス３１００のセグメントデータが削除されたことに応じ、履歴記録部３６０は、保存先アドレス記録領域４００に３１００を記録し、変更前ポインタ記録領域４１０に３２００を記録し、変更後ポインタ記録領域４２０にＮｕｌｌを記録する。
【００２８】
図５は、アドレス記録部３１０が記録する保存先アドレスの一例を示す。アドレス記録部３１０は、読出部３００がポインタを読み出したセグメントデータの保存先アドレスを、読出部３００による読み出し処理の進行に伴って順次記録する。即ちアドレス記録部３１０は１０００、１１００および２０００をこの順で記録する。その後、セグメントデータ２００−３が階層型データベース２０に追加されたことを条件に、アドレス変更部３３０は、アドレス１２００をアドレス記録部３１０に追加して記録する。
【００２９】
具体的には、まず、アドレス変更部３３０は、履歴記録部３６０内の変更前ポインタ記録領域４１０からポインタ不保持情報を検索する。変更前ポインタ記録領域４１０にポインタ不保持情報が記録されていることに応じ、アドレス変更部３３０は、その領域に対応する保存先アドレスをアドレス記録部３１０に追加する。アドレス変更部３３０は、その保存先アドレスを、そのアドレスのセグメントデータが追加されたことを示す追加フラグ（例えば数字の０）に対応付けて記録してもよい。
【００３０】
また、アドレス３１００のセグメントデータが階層型データベース２０から削除されたことを条件に、アドレス変更部３３０は、アドレス３１００をアドレス記録部３１０から除外する。具体的には、アドレス変更部３３０は、履歴記録部３６０内の変更後ポインタ記録領域４２０からポインタ不保持情報を検索する。変更後ポインタ記録領域４２０にポインタ不保持情報が記録されていることに応じ、アドレス記録部３１０は、その領域に対応する保存先アドレスをアドレス記録部３１０から除外する。詳細には、アドレス変更部３３０は、その保存先アドレスを、その保存先アドレスが削除されたことを示す削除フラグ（例えば数字の１）に対応付けてアドレス記録部３１０に記録することにより、その保存先アドレスをアドレス記録部３１０から除外してもよい。
【００３１】
図６は、ポインタ記録部３２０が記録するポインタの一例を示す。ポインタ記録部３２０は、各々のセグメントデータから読み出したポインタを、そのセグメントデータの保存先アドレスに対応付けて順次記録する。例えば、ポインタ記録部３２０は、アドレス１０００のセグメントデータからポインタ１１００が読み出されたので、「１１００  １０００」を記録する。その後、セグメントデータ２００−２内のポインタが変更されたことを条件に、ポインタ変更部３４０は、変更前のポインタをポインタ記録部３２０から除外し、変更後のポインタをポインタ記録部３２０に追加する。
【００３２】
具体的には、まず、ポインタ変更部３４０は、履歴記録部３６０内の変更前ポインタ記録領域４１０からポインタを読み出す。次に、ポインタ変更部３４０は、読み出された各々のポインタを、そのポインタが削除されたことを示す削除フラグ（例えば数字の１）に対応付けてポインタ記録部３２０に追加することで、そのポインタをポインタ記録部３２０から除外する。また、ポインタ変更部３４０は、履歴記録部３６０内の変更後ポインタ記録領域４２０からポインタを読み出す。そして、ポインタ変更部３４０は、読み出された各々のポインタを、そのポインタが追加されたことを示す追加フラグ（例えば数字の０）に対応付けてポインタ記録部３２０に追加する。
【００３３】
より詳細には、アドレス１１００のセグメントデータにおいてポインタ２０００がポインタ１２００に変更されたのであるから、ポインタ２０００が削除フラグに対応付けて記録され、ポインタ１２００が追加フラグに対応付けて記録される。また、アドレス１２００のセグメントデータにおいて、新たにアドレス２０００へのポインタが追加されたのであるから、ポインタ２０００が追加フラグに対応付けて記録される。
【００３４】
図７は、保存先アドレスおよびポインタを変更して整合性を判断する処理の処理フローを示す。読出部３００は、スキャンポインタ記録部３０５に記録されているアドレスの次のアドレスのセグメントデータを、排他的に読み書き可能なロック状態に設定する（Ｓ７００）。次に、読出部３００は、ロック状態においてそのアドレスのセグメントデータからポインタを読み出す（Ｓ７１０）。また、読出部３００は、ロック状態において、読み出し対象となっているそのアドレスをスキャンポインタ記録部３０５に記録する（Ｓ７１５）。そして、読出部３００は、ロック状態を解除する（Ｓ７２０）。
【００３５】
次に、アドレス記録部３１０は、読出部３００がポインタを読み出したセグメントデータの保存先アドレスを記録する（Ｓ７３０）。また、ポインタ記録部３２０は、読出部３００が読み出したポインタを記録する（Ｓ７４０）。以上の処理を、全てのセグメントデータからポインタを読み出すまで繰り返す（Ｓ７５０）。
【００３６】
全てのセグメントデータが読み出された場合に（Ｓ７５０：ＹＥＳ）、アドレス変更部３３０は、既にポインタを読み出した領域においてセグメントデータが更新されたことを条件に、アドレス記録部３１０に記録された保存先アドレスを変更する（Ｓ７６０）。例えば、アドレス変更部３３０は、削除されたセグメントデータの保存先アドレスを、削除された旨を示す削除フラグに対応付けてアドレス記録部３１０に記録してもよい。
【００３７】
また、ポインタ変更部３４０は、既にポインタを読み出した領域においてセグメントデータが更新されたことを条件に、ポインタ記録部３２０に記録されたポインタを変更する（Ｓ７７０）。例えば、ポインタ変更部３４０は、削除されたポインタを、削除された旨を示す削除フラグに対応付けてポインタ記録部３２０に記録してもよい。
【００３８】
次に、アドレス変更部３３０は、アドレス記録部３１０に保存先アドレスを追加したことを条件に、アドレス記録部３１０に記録された複数の保存先アドレスをアドレス値により昇順または降順に並べ替える（Ｓ７８０）。これにより、後のＳ７９０において保存先アドレスをポインタと比較し易くすることができる。
【００３９】
なお、スキャンポインタをアドレスの昇順または降順に更新させる場合において、アドレス記録部３１０は、保存先アドレスをアドレス値の昇順または降順に記録させることとなる。このため、好ましくは、アドレス変更部３３０は、保存先アドレスが追加されていないことを条件に、保存先アドレスを並べ替えない。この結果、意味の無い並べ替え処理を省略して処理を効率化することができる。
図８は、並べ替え後の保存先アドレスの一例を示す。アドレス１２００は、並べ替えによってアドレス１１００の次に配列される。
図７に戻る。
【００４０】
同様に、好ましくは、ポインタ変更部３４０は、ポインタ記録部３２０に記録された複数のポインタを、追加または除外されたポインタを含めてポインタ値により昇順または降順に並べ替える。なお、アドレス変更部３３０による並べ替え順序とポインタ変更部３４０による並べ替え順序は一致させる。即ち、アドレス変更部３３０が昇順に並べ替える場合にはポインタ変更部３４０も昇順に並べ替え、アドレス変更部３３０が降順に並べ替える場合にはポインタ変更部３４０も降順に並べ替える。
【００４１】
図９は、並べ替え後のポインタの一例を示す。ポインタ１２００は、ポインタ１１００の次に配列されている。また、既に読み出されたポインタ２０００と、削除フラグに対応付けられたポインタ２０００と、新たに追加されたポインタ２０００とが、連続して配列されている。
図７に戻る。
【００４２】
判断部３７０は、アドレス記録部３１０に記録された保存先アドレスが、ポインタ記録部３２０に記録されたポインタと一致することを条件に、階層型データベース２０が整合していると判断する（Ｓ７９０）。具体的には、判断部３７０は、ポインタ記録部３２０に記録された複数のポインタから、削除フラグに対応するポインタ、および、当該ポインタと同一の値を採る他のポインタを除外する。図９の例では、ポインタ「２０００  １１００」が、削除フラグに対応して記録されているので、ポインタ「２０００  １１００」は、比較の対象から除外される。これに代えて、追加フラグに対応する「２０００  １２００」が比較の対象とされる。
【００４３】
同様に、判断部３７０は、アドレス記録部３１０に記録されている複数の保存先アドレスから、削除フラグに対応するアドレス、および、当該アドレスと同一の値を採る他のアドレスを除外する。アドレス１０００から２０００の間においてセグメントデータは削除されていないので、図８の例においては何れのアドレスも除外されない。そして、判断部３７０は、追加されたセグメントデータの保存先アドレスを比較の対象とする。図８では、アドレス１２００が比較の対象に追加される。
【００４４】
判断部３７０は、アドレス記録部３１０に記録された保存先アドレス、および、ポインタ記録部３２０に記録されたポインタを、先頭から順次１つずつ読み出して比較する。即ち例えば、判断部３７０は、アドレス記録部３１０からアドレス１０００を読み出し、ポインタ記録部３２０からポインタ「１０００  ＲＡＰ」を読み出して比較する。この場合、何れも１０００で一致するので、整合性が維持されていると判断する。また、判断部３７０は、アドレス記録部３１０からアドレス１１００を読み出し、ポインタ記録部３２０からポインタ「１１００  １０００」を読み出して比較する。この場合にも、何れも１１００で一致するので、整合性が維持されていると判断する。
【００４５】
判断部３７０は、このように順次アドレスおよびポインタを読み出して比較し、何れもが一致した場合には階層型データベース２０が整合していると判断する。一方、何れかのポインタが、保存先アドレスと一致しない場合には、判断部３７０は、階層型データベース２０が整合していないと判断する。この場合、好ましくは、判断部３７０は、そのポインタを、そのポインタを記録しているセグメントデータのアドレスに対応付けて出力してもよい。即ち例えば、判断部３７０は、ポインタ１１００がアドレスと一致しない場合には、ポインタ「１１００  １２００」を出力する。これにより、アクセス障害が発生した原因箇所を特定し易くすることができる。
【００４６】
次に、図１０から図１４を用いて、履歴記録部３６０が更新履歴を記録する処理の詳細を説明する。
図１０は、更新履歴を記録する処理の処理フローを示す。データベース管理システム３０は、階層型データベース２０が更新される毎に、階層型データベース２０に対する一連の更新処理が完了して次の更新処理が可能な状態にあることを条件として以下の処理を行う。まず、履歴記録部３６０は、スキャンポインタ記録部３０５からスキャンポインタを取得する（Ｓ８００）。次に、履歴記録部３６０は、スキャンポインタに有効な値が設定されているか否かを判断することによって、整合性判断の処理中か否かを判断する（Ｓ８１０）。
【００４７】
スキャンポインタに有効な値が設定されていない場合には（Ｓ８１０：ＮＯ）、履歴記録部３６０は、処理を終了する。一方、有効な値が設定されている場合には（Ｓ８１０：ＹＥＳ）、履歴記録部３６０は、当該更新により接頭部の変更されたセグメントデータが存在するか否かを判断する（Ｓ８２０）。接頭部の変更されたセグメントデータが存在しない場合には（Ｓ８２０：ＮＯ）、履歴記録部３６０は、処理を終了する。
【００４８】
一方、接頭部の変更されたセグメントデータが存在する場合には（Ｓ８２０：ＹＥＳ）、更新されたセグメントデータが、スキャンポインタと同一または先頭側に記録されているか否かを判断する（Ｓ８３０）。更新されたセグメントデータが、スキャンポインタよりも先頭側の領域にある場合には（Ｓ８３０：ＹＥＳ）、履歴記録部３６０は、更新履歴を記録し（Ｓ８４０）、Ｓ８２０に処理を戻す。
【００４９】
図１１は、図１０のＳ８４０における処理の詳細を示す。履歴記録部３６０は、階層型データベース２０を更新する処理の種類を示す更新タイプを判断する（Ｓ９００）。更新タイプが、セグメントデータの追加である場合に（Ｓ９００：セグメントデータの追加）、履歴記録部３６０は、セグメントデータを追加した履歴を記録する（Ｓ９２０）。即ち履歴記録部３６０は、そのセグメントデータの保存先アドレスを保存先アドレス記録領域４００に記録し、ポインタ不保持情報を変更前ポインタ記録領域４１０に記録し、そのセグメントデータ内に新たに生成したポインタの値を変更後ポインタ記録領域４２０に記録する。
【００５０】
一方、更新タイプが、既存のセグメントデータの内容の変更である場合に（Ｓ９００：セグメントデータの変更）、履歴記録部３６０は、更新タイプが、あるセグメントデータの一部を他のセグメントデータに分割する分割更新であるか否かを判断する（Ｓ９６０）。分割更新でない場合に（Ｓ９６０：ＮＯ）、履歴記録部３６０は、接頭部の更新履歴を記録する。即ち例えば、履歴記録部３６０は、更新対象のセグメントデータの保存先アドレスを保存先アドレス記録領域４００に記録し、そのセグメントデータ内の変更前のポインタの値を変更前ポインタ記録領域４１０に記録し、そのポインタの変更後の値を変更後ポインタ記録領域４２０に記録する。
【００５１】
一方、分割更新の場合に（Ｓ９６０：ＹＥＳ）、履歴記録部３６０は、分割更新における接頭部の変更か否かを判断する（Ｓ９８０）。接頭部の変更である場合に、履歴記録部３６０は、分割更新における接頭部の更新履歴を記録する（Ｓ９９０）。一方、接頭部の変更ではない場合に（Ｓ９８０：ＮＯ）、履歴記録部３６０は、分割更新におけるデータ部の更新履歴を記録する。分割更新における更新履歴の記録方法についての詳細は図１４において説明する。
【００５２】
図１２は、セグメントデータが追加される処理の一例を示す。（ａ）は、セグメントデータの追加前における階層型データベース２０を示す。階層型データベース２０は、保存先アドレスを１０００とするセグメントデータ２００−５と、保存先アドレスを１２００とするセグメントデータ２００−６とを有する。セグメントデータ２００−５は、セグメントデータ２００−６に対するポインタを、接頭部に含む。
【００５３】
（ｂ）は、セグメントデータの追加後の階層型データベース２０及び履歴記録部３６０を示す。セグメントデータ更新部３５０は、セグメントデータ２００−５とセグメントデータ２００−６の間にセグメントデータ２００−７を追加する場合に、セグメントデータ２００−５が有するセグメントデータ２００−６に対するポインタを、セグメントデータ２００−７の保存先アドレスに変更する。そして、セグメントデータ更新部３５０は、セグメントデータ２００−７内に、セグメントデータ２００−６に対するポインタを生成する。
【００５４】
この結果、階層型データベース２０は、新たに追加されたセグメントデータ２００−７を、保存先アドレスを１１００とする領域に記録することとなる。そして、セグメントデータ２００−５は、セグメントデータ２００−６に対するポインタ（即ち１２００）に代えて、セグメントデータ２００−７に対するポインタ（即ち１１００）を含む。そして、セグメントデータ２００−７は、セグメントデータ２００−６に対するポインタ（即ち１２００）を含む。
【００５５】
また、セグメントデータ２００−５内のポインタが１２００から１１００に変更されたので、履歴記録部３６０は、セグメントデータ２００−５の保存先アドレスである１０００を保存先アドレス記録領域４００に記録する。そして、履歴記録部３６０は、対応する変更前ポインタ記録領域４１０に、セグメントデータ２００−６の保存先アドレスである１２００を記録し、対応する変更後ポインタ記録領域４２０に、セグメントデータ２００−７の保存先アドレスである１１００を記録する（Ｓ９７０の処理に対応）。
【００５６】
また、セグメントデータ２００−７が新たに追加されたので、履歴記録部３６０は、セグメントデータ２００−７の保存先アドレスである１１００を、保存先アドレス記録領域４００に記録し、対応する変更前ポインタ記録領域４１０に、ポインタ不保持情報（例えばＮＵＬＬ）を記録し、対応する変更後ポインタ記録領域４２０に、セグメントデータ２００−６の保存先アドレスである１２００を記録する（Ｓ９２０の処理に対応）。
【００５７】
図１３は、セグメントデータが削除される処理の一例を示す。（ａ）は、セグメントデータの削除前における階層型データベース２０を示す。階層型データベース２０は、保存先アドレスを１０００とするセグメントデータ２００−５と、保存先アドレスを１２００とするセグメントデータ２００−６と、保存先アドレスを１１００とするセグメントデータ２００−７とを有する。セグメントデータ２００−５は、セグメントデータ２００−７に対するポインタを接頭部に含み、セグメントデータ２００−７は、セグメントデータ２００−６に対するポインタを接頭部に含む。
【００５８】
（ｂ）は、セグメントデータの削除後の階層型データベース２０及び履歴記録部３６０を示す。セグメントデータ更新部３５０は、セグメントデータ２００−５とセグメントデータ２００−６の間のセグメントデータ２００−７を削除する場合に、セグメントデータ２００−５が有するセグメントデータ２００−７に対するポインタを、セグメントデータ２００−６の保存先アドレスに変更する。
【００５９】
この結果、階層型データベース２０は、削除されたセグメントデータ２００−７を含まない状態となる。また、セグメントデータ２００−５は、セグメントデータ２００−７に対するポインタ（即ち１１００）に代えて、セグメントデータ２００−６に対するポインタ（即ち１２００）を含む。
【００６０】
また、セグメントデータ２００−５内のポインタが１１００から１２００に変更されたので、履歴記録部３６０は、セグメントデータ２００−５の保存先アドレスを保存先アドレス記録領域４００に記録し、対応する変更前ポインタ記録領域４１０にセグメントデータ２００−７の保存先アドレスを記録する。また、履歴記録部３６０は、対応する変更後ポインタ記録領域４２０に、セグメントデータ２００−６の保存先アドレスを記録する（Ｓ９７０の処理に対応）。
【００６１】
また、セグメントデータ２００−７が削除されたので、履歴記録部３６０は、セグメントデータ２００−７の保存先アドレスを保存先アドレス記録領域４００に記録し、対応する変更前ポインタ記録領域４１０にセグメントデータ２００−６の保存先アドレスを記録する。また、履歴記録部３６０は、対応する変更後ポインタ記録領域４２０にポインタ不保持情報を記録する（Ｓ９４０の処理に対応）。
【００６２】
図１４は、セグメントデータが分割される処理の一例を示す。（ａ）は、セグメントデータが分割される前における階層型データベース２０を示す。分割前の状態は、図１３（ａ）と略同一であるから説明を省略する。（ｂ）は、セグメントデータの分割後の階層型データベース２０及び履歴記録部３６０を示す。本図を用いて、セグメントデータ更新部３５０が一のセグメントデータを一または二以上の他のセグメントデータに分割する場合の処理を説明する。
【００６３】
セグメントデータ更新部３５０は、セグメントデータ２００−６へのポインタを有するセグメントデータ２００−７の一部をセグメントデータ２００−８に分割する。このとき、セグメントデータ更新部３５０は、セグメントデータ２００−７内に、セグメントデータ２００−８へのポインタを追加し、セグメントデータ２００−７の一部が分割された旨を示す分割フラグを追加する。
【００６４】
履歴記録部３６０は、セグメントデータ２００−７が分割されたことに応じ、セグメントデータ２００−７の保存先アドレスである１１００を保存先アドレス記録領域４００に記録する。そして、履歴記録部３６０は、セグメントデータ２００−７の保存先アドレスに対応付けて、変更前ポインタ記録領域４１０に、セグメントデータ２００−７が分割前に有していたポインタを記録する。即ち、履歴記録部３６０は、セグメントデータ２００−６へのポインタである１２００を、変更前ポインタ記録領域４１０に記録する。
【００６５】
更に、履歴記録部３６０は、セグメントデータ２００−６へのポインタ、セグメントデータ２００−７が分割された旨を示す分割フラグ、および、分割先のセグメントデータ２００−８へのポインタを、変更後ポインタ記録領域４２０に記録する（Ｓ９９０の処理に対応）。なお、分割先のセグメントデータ２００−８へのポインタは、変更後ポインタ記録領域４２０内の予め定められた記録位置に記録され、他のポインタとは区別可能となっていることが望ましい。即ち本図の例では、アドレス１４００は、変更後ポインタ記録領域４２０内のあらかじめ定められた末尾部分の領域に記録される。
【００６６】
また、セグメントデータ２００−８が階層型データベース２０に追加されたので、履歴記録部３６０は、その旨を記録する。具体的には、履歴記録部３６０は、セグメントデータ２００−８の保存先アドレスである１４００を保存先アドレス記録領域４００に記録し、対応する変更前ポインタ記録領域４１０にポインタ不保持情報を記録する。そして、履歴記録部３６０は、対応する変更後ポインタ記録領域４２０に、当該セグメントデータが分割先のデータである旨を示す分割先フラグを記録する（Ｓ９９５の処理に対応）。
【００６７】
セグメントデータが分割された場合に、ポインタ変更部３４０は、例えば以下のようにポインタ記録部３２０を操作する。具体的には、まず、ポインタ変更部３４０は、変更後ポインタ記録領域４２０に分割フラグが記録されていることを条件に、分割先のセグメントデータの保存先アドレスを変更後ポインタ記録領域４２０から読み出す。ここで、分割先のセグメントデータの保存先アドレスは、変更後ポインタ記録領域４２０内の予め定められた記録位置から読み出すことができる。そして、ポインタ変更部３４０は、読み出した保存先アドレスを、追加されたポインタとして、所定の追加フラグに対応付けてポインタ記録部３２０に記録する。これにより、分割によって新たに追加されたセグメントデータについても、整合性判断の対象に含めることができる。
【００６８】
以上、図１０から図１４において説明したように、データベース管理システム３０は、更新対象となったセグメントデータが既に読み出されたアドレスに位置するか否かを、スキャンポインタとアドレス値との比較によって瞬時に判断することができる。また、既に読み出されたアドレスに位置するセグメントデータが更新された場合には、その更新の履歴を履歴記録部３６０に記録する。これらの処理の処理量は少ないので、これらの処理によってはデータベース管理システム３０の負荷はほとんど上昇しない。このため、データベース管理システム３０は、階層型データベース２０に対する通常のトランザクションに計算能力の多くを割り当てることができる。
【００６９】
なお、他の例として、データベース管理システム３０の計算能力が、通常のトランザクションに必要な計算能力を大きく上回っている場合においては、データベース管理システム３０は、保存先アドレスおよびポインタを変更する処理（Ｓ７６０およびＳ７７０）を、セグメントデータが更新される毎に行ってもよい。この場合には、履歴記録部３６０は、セグメントデータの変更履歴を蓄積する必要がない。このため、データベース管理システム内の記憶領域の必要量を削減することができる。更に、保存先アドレスおよびポインタの変更（Ｓ７６０およびＳ７７０）を、全てのセグメントデータを読み出した後（Ｓ７５０：ＹＥＳ）に行う必要がないので、セグメントデータを読み出した後に必要な後処理の時間を削減することができる。
【００７０】
以上、図１から図１４において説明したように、データベース管理システム３０は、整合性の判断処理中に更新したポインタの更新履歴を、その更新内容を特定できる形式で記録する。そして、既にポインタを読み出した領域が更新された場合には、その更新内容に基づいてそのポインタ値やアドレス値を変更する。これにより、整合性の判断処理中に階層型データベース２０が更新された場合であっても整合性を適切に判断することができる。
【００７１】
また、更新されたポインタ値やアドレス値は、整合性判断に先立って既に読み出されたポインタやアドレスと共にソートされる。この結果、記録されたポインタやアドレスを先頭から順次読み出して比較することによって整合性を判断できる。これにより、整合性判断の処理をこれまでと同等の効率で実現することができる。
【００７２】
図１５は、整合性判断後に更新されたセグメントデータの整合性を判断する処理の一例を示す。本図においては、階層型データベース２０が整合している状態から更に何れかのセグメントデータが更新された場合に、整合性が維持されているか否かを判断する処理を説明する。この処理によれば、その更新された部分についてのみ整合性を判断することによって、整合性の維持を判断でき、整合性判断の処理を一層効率化できる。
【００７３】
データベース管理システム３０は、判断部３７０によって階層型データベース２０が整合していると判断されたことを条件に、以下の処理を例えば定期的に行う。履歴記録部３６０は、整合している状態から何れかのセグメントデータにおける接頭部が更新されたか否かを判断する（Ｓ１５００）。接頭部が更新されたことに応じ（Ｓ１５００：ＹＥＳ）、アドレス記録部３１０は、当該更新によって追加または削除されたセグメントデータの保存先アドレスを、整合性判断のために既に記録された保存先アドレスに追加して更に記録する（Ｓ１５１０）。この保存先アドレスは、履歴記録部３６０に記録される更新履歴に基づいてアドレス変更部３３０によって記録されてもよい。
【００７４】
次に、ポインタ記録部３２０は、当該更新によって変更されたポインタを更に記録する（Ｓ１５２０）。具体的には、このポインタは、履歴記録部３６０に記録される更新履歴に基づいてポインタ変更部３４０によって記録されてもよい。
【００７５】
判断部３７０は、整合していると判断された後にポインタ記録部３２０に記録された変更後のポインタの各々と、整合していると判断された後にアドレス記録部３１０に記録された追加されたセグメントデータの保存先アドレスの各々とを比較する（Ｓ１５３０）。また、判断部３７０は、整合していると判断された後にポインタ記録部３２０に記録された変更後のポインタの各々を、整合性の判断のために当該判断前にアドレス記録部３１０が順次記録したアドレスの各々とも比較する（Ｓ１５４０）。但し、削除フラグに対応付けて記録された保存先アドレスは比較の対象から除外される。
【００７６】
各々のポインタが、整合性判断前後何れかの保存先アドレスと一致すれば（Ｓ１５５０：ＹＥＳ）、判断部３７０は、階層型データベース２０の整合性が維持されていると判断する（Ｓ１５６０）。一方で、何れの保存先アドレスとも一致しなければ（Ｓ１５５０：ＮＯ）、判断部３７０は、階層型データベース２０の整合性が破綻したと判断する（Ｓ１５７０）。
【００７７】
以上、本図の処理によれば、一旦整合性が判断された後には、その後の更新の差分のみについて整合性を判断することで、階層型データベース２０の整合性が維持されていることを確かめることができる。この結果、整合性判断の処理を一層効率化できる。
【００７８】
図１６は、データベース管理システム３０として機能する情報処理装置５００のハードウェア構成の一例を示す。本図においては、情報処理装置５００が、メインフレームと呼ばれる大型汎用計算機である場合を例に、そのハードウェア構成を説明する。情報処理装置５００は、主記憶装置５０２と、少なくとも１つの中央処理装置５０４と、記憶制御部５０６と、チャネル・サブシステム５０８と、少なくとも１つの制御装置５１０と、少なくとも１つの入出力デバイス５１２ａ〜ｄとを備える。
【００７９】
主記憶装置５０２は、入出力デバイス５１２ａ〜ｄから入力したデータ及びプログラムを格納する。そして、主記憶装置５０２は、中央処理装置５０４及びチャネル・サブシステム５０８からアドレスの指定を受けると、そのアドレスに格納しているデータを中央処理装置５０４及びチャネル・サブシステム５０８に送る。主記憶装置５０２は、格納しているデータを高速に読み書き可能であり、この高速な読み書きにより、中央処理装置５０４による高速演算処理が可能となる。
【００８０】
中央処理装置５０４は、情報処理装置５００の全体を制御する中心的な役割を果たし、例えば、少なくとも１つのオペレーティングシステム５０５を実行する。オペレーティングシステム５０５は、情報処理装置５００におけるプログラムの実行及び入出力処理を制御する。例えば、オペレーティングシステム５０５は、中央処理装置５０４上で動作する他のプログラムの実行を制御してもよいし、入出力デバイス５１２ａ〜ｄまでの各々におけるデータ転送を制御してもよい。
【００８１】
記憶制御部５０６は、双方向又は片方向に通信可能なバス５１４を経由して中央処理装置５０４に接続される。記憶制御部５０６は、更に、バス５１６を経由して主記憶装置５０２に接続され、バス５１８を経由してチャネル・サブシステム５０８に接続される。記憶制御部５０６は、例えば、中央処理装置５０４又はチャネル・サブシステム５０８から受けたアクセスリクエストを一時的に格納し（キューイング処理）、所定のタイミングでそのアクセスリクエストを主記憶装置５０２に送信してもよい。
【００８２】
チャネル・サブシステム５０８は、各々の制御装置５１０に対して、データ転送路５２０を経由して接続される。そして、チャネル・サブシステム５０８は、入出力デバイス５１２ａ〜ｄ及び主記憶装置５０２間でのデータ転送を制御する。これにより、中央処理装置５０４が入出力デバイス５１２ａ〜ｄとの間で通信する処理負荷が軽減されるので、中央処理装置５０４による演算処理と、入出力デバイス５１２ａ〜ｄによる入出力処理とを並列に実行させることができ、結果として情報処理装置５００を効率的に動作させることができる。
【００８３】
また、チャネル・サブシステム５０８は、少なくとも１つのチャネルパス５２２により、入出力デバイス５１２ａ〜ｄとデータ転送する。各々のチャネルパス５２２は、チャネル・サブシステム５０８内に設けられたチャネル５２４を有する。また、各々のチャネルパス５２２は、少なくとも１つの制御装置５１０と、データ転送路５２０を有する。ここで、データ転送路５２０は、例えば、(ESCON: Enterprise Systems Connection Architecture)に基づくシリアルリンクであってもよい。これに代えて、データ転送路５２０は、パラレルOEMIであってもよいし、ファイバチャネルであってもよい。
【００８４】
制御装置５１０は、入出力デバイス５１２ａ〜ｄの少なくとも１つを制御する。例えば、制御装置５１０は、入出力デバイス５１２ａ〜ｄの各々におけるデータ転送のタイミングを制御してもよい。制御装置５１０は、バス５２６を経由して、入出力デバイス５１２ａ〜ｄの少なくとも１つに接続する。一例として、制御装置５１０は、最大２５６個の入出力デバイスに接続可能である。
【００８５】
入出力デバイス５１２ａ〜ｄの各々は、制御装置５１０、チャネル・サブシステム５０８、及び記憶制御部５０６を順次経由して主記憶装置５０２との間でデータ転送を行う。ここで、入出力デバイス５１２ａは、具体的には、磁気テープドライブであり、入出力デバイス５１２ｄは、ハードディスクドライブである。これに代えて、又はこれに加えて、入出力デバイス５１２ａ〜ｄの各々は、パンチカードリーダ、ディスプレイ、キーボード、プリンタ、通信デバイス、各種センサー、又はその他の記憶装置であってもよい。一例として、入出力デバイス５１２ａ〜ｄの少なくとも何れか１つは、階層型データベース２０と接続され、階層型データベース２０に対するアクセスを行ってもよい。
【００８６】
情報処理装置５００に提供されるプログラムは、テープ記録媒体５３５等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力デバイス５１２ａによって読み出され、チャネル・サブシステム５０８を経由して主記憶装置５０２に格納される。そして、主記憶装置５０２に格納されたプログラムは、再度チャネル・サブシステム５０８を経由して入出力デバイス５１２ｄ（ハードディスクドライブ）にインストールされる。プログラムが情報処理装置５００等に働きかけて行わせる動作は、図１から図１３において説明したデータベース管理システム３０における動作と同一であるから、説明を省略する。
【００８７】
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク、ＣＤ−ＲＯＭの他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを情報処理装置５００に提供してもよい。
【００８８】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００８９】
【図１】図１は、データベースシステム１０の概略を示す。
【図２】図２は、階層型データベース２０のデータ構造の一例を示す。
【図３】図３は、データベース管理システム３０の機能を機能ブロック毎に示す。
【図４】図４は、履歴記録部３６０のデータ構造の一例を示す。
【図５】図５は、アドレス記録部３１０が記録する保存先アドレスの一例を示す。
【図６】図６は、ポインタ記録部３２０が記録するポインタの一例を示す。
【図７】図７は、保存先アドレスおよびポインタを変更して整合性を判断する処理の処理フローを示す。
【図８】図８は、並べ替え後の保存先アドレスの一例を示す。
【図９】図９は、並べ替え後のポインタの一例を示す。
【図１０】図１０は、更新履歴を記録する処理の処理フローを示す。
【図１１】図１１は、図１０のＳ８４０における処理の詳細を示す。
【図１２】図１２は、セグメントデータが追加される処理の一例を示す。
【図１３】図１３は、セグメントデータが削除される処理の一例を示す。
【図１４】図１４は、セグメントデータが分割される処理の一例を示す。
【図１５】図１５は、整合性判断後に更新されたセグメントデータの整合性を判断する処理の一例を示す。
【図１６】図１６は、データベース管理システム３０として機能する情報処理装置５００のハードウェア構成の一例を示す。
【符号の説明】
【００９０】
１０  データベースシステム
２０  階層型データベース
３０  データベース管理システム
２００  セグメントデータ
２１０  接頭部
２２０  データ部
２３０  ポインタ
２４０  ポインタ
３００  読出部
３０５  スキャンポインタ記録部
３１０  アドレス記録部
３２０  ポインタ記録部
３３０  アドレス変更部
３４０  ポインタ変更部
３５０  セグメントデータ更新部
３６０  履歴記録部
３７０  判断部
４００  保存先アドレス記録領域
４１０  変更前ポインタ記録領域
４２０  変更後ポインタ記録領域
５００  情報処理装置
【図１】
2007052583.tif 000003
【図２】
2007052583.tif 000004
【図３】
2007052583.tif 000005
【図４】
2007052583.tif 000006
【図５】
2007052583.tif 000007
【図６】
2007052583.tif 000008
【図７】
2007052583.tif 000009
【図８】
2007052583.tif 000010
【図９】
2007052583.tif 000011
【図１０】
2007052583.tif 000012
【図１１】
2007052583.tif 000013
【図１２】
2007052583.tif 000014
【図１３】
2007052583.tif 000015
【図１４】
2007052583.tif 000016
【図１５】
2007052583.tif 000017
【図１６】
2007052583.tif 000018