JP4148529B2 - データベースにおける索引の整合性をチェックするためのシステム、方法およびプログラム - Google Patents

データベースにおける索引の整合性をチェックするためのシステム、方法およびプログラム Download PDF

Info

Publication number
JP4148529B2
JP4148529B2 JP2006354038A JP2006354038A JP4148529B2 JP 4148529 B2 JP4148529 B2 JP 4148529B2 JP 2006354038 A JP2006354038 A JP 2006354038A JP 2006354038 A JP2006354038 A JP 2006354038A JP 4148529 B2 JP4148529 B2 JP 4148529B2
Authority
JP
Japan
Prior art keywords
segment
record
index
database
pointer
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 - Fee Related
Application number
JP2006354038A
Other languages
English (en)
Other versions
JP2008165474A (ja
Inventor
利和 高橋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2006354038A priority Critical patent/JP4148529B2/ja
Priority to US11/849,246 priority patent/US7650354B2/en
Publication of JP2008165474A publication Critical patent/JP2008165474A/ja
Priority to US12/180,492 priority patent/US7647334B2/en
Application granted granted Critical
Publication of JP4148529B2 publication Critical patent/JP4148529B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データベースの整合性をチェックするためのシステム、方法およびプログラムに関するものであり、特に、複数のデータ・セグメントが記録された主データベースおよび複数の索引セグメントが記録された索引データベースを含むデータベースにおいて索引の整合性をオンラインでチェックするためのシステム、方法およびプログラムに関する。
従来、データベースの整合性のチェックは、データベースに含まれる各セグメントの保存先アドレスと、データベースに含まれる各ポインタとを比較することによって行われていた。このような整合性チェックは、例えば、本出願人によって開発されたデータベース管理システムに実装されて用いられている(非特許文献1を参照。)。
上述のような整合性チェックでは、全てのポインタの読み出しを完了するまでの間にデータベースが更新されると、更新前後のポインタが混ざった状態でアドレスと比較されてしまうことになり、正確なチェックができない場合がある。このため、従来、整合性チェックの処理中には、データベースの更新を停止するか、または、データベースの少なくとも一部に対するアクセスの排他制御を行うことが一般的である(例えば特許文献1を参照。)。
しかしながら、データベースのデータサイズが大きい場合には、更新が停止される時間が膨大となり、または、更新が大幅に遅延し、利用者の利便性を低下させてしまう場合があったため、更新を停止させることなく整合性をチェックする技術も提案されている(特許文献2および3を参照。)。
ところで、データベースが大きくなると、上述の更新の問題の他に、検索時間が長くなるという問題も生じるが、これは索引付けによって解決することができる。例えば、階層型データベースであるIBM社のIMSでは、データ・セグメントを記録した主データベースの他に、データ・セグメントへの索引を記録した索引データベースを設けることによって索引付けを実現している。
索引は、主データベースにおける対応するデータ・セグメントの保存先アドレスを示すポインタと、検索用のキー値を含んでおり、データベースの整合性の観点からは、これらの索引に含まれるポインタとキー値も定期的に整合性をチェックする必要がある。当然、このような索引の整合性チェックも、オンラインで、すなわちデータベースの更新を停止させることなく実行できるのが望ましい。
特開平8−249222号公報 特開2001−142765号公報 特開2006−139619号公報 IMS High Performance Pointer Checker User's Guide http://publibfi.boulder.ibm.com/cgi-bin/bookmgr/BOOKS/fabp1b10/CCONTENTS
従って本発明の目的は、複数のデータ・セグメントが記録された主データベースおよび複数の索引セグメントが記録された索引データベースを含むデータベースにおいて索引の整合性をオンラインでチェックするためのシステム、方法およびプログラムを提供することにある。
本発明の第1の態様によれば、複数のデータ・セグメントが記録された主データベースおよび複数の索引セグメントが記録された索引データベースを含むデータベースにおいて索引の整合性をチェックするためのシステムであって、前記索引データベースから索引セグメントを順次読み出して、ポインタ値およびキー値を含むポインタ・レコードを生成し、前記主データベースからデータ・セグメントを順次読み出して、そのうちの前記索引セグメントのポインタ値により示される索引対象セグメントの保存先アドレスおよび検索フィールド値を含むセグメント・レコードを生成するレコード生成部と、前記ポインタ・レコードおよび前記セグメント・レコードの生成がどこまで進んだかを示すスキャン・ポイントを設定するスキャン・ポイント設定部と、前記索引データベースで索引セグメントが更新されたこと、または前記主データベースで索引対象セグメントが更新されたことに応じ、更新されたセグメントが前記スキャン・ポイント設定部により設定されたスキャン・ポイントよりも前であることを条件に、前記更新セグメントの更新ログを書き出す更新ログ書き出し部と、前記更新ログに基づいて前記ポインタ・レコードおよび前記セグメント・レコードを修正するレコード修正部と、修正後のポインタ・レコードをポインタ値でソートし、修正後のポインタ・レコードおよび修正後のセグメント・レコードにおいて対応するレコード・エントリ同士を比較することにより索引の整合性を検証する整合性検証部と、を含むシステムが提供される。
本発明の第2の態様によれば、複数のデータ・セグメントが記録された主データベースおよび複数の索引セグメントが記録された索引データベースを含むデータベースにおいて索引の整合性をチェックするための方法であって、前記索引データベースから索引セグメントを順次読み出して、ポインタ値およびキー値を含むポインタ・レコードを生成するステップと、前記主データベースからデータ・セグメントを順次読み出して、そのうちの前記索引セグメントのポインタ値により示される索引対象セグメントの保存先アドレスおよび検索フィールド値を含むセグメント・レコードを生成するステップと、前記ポインタ・レコードおよび前記セグメント・レコードの生成がどこまで進んだかを示すスキャン・ポイントを設定するステップと、前記索引データベースで索引セグメントが更新されたこと、または前記主データベースで索引対象セグメントが更新されたことに応じ、更新されたセグメントが前記スキャン・ポイント設定部により設定されたスキャン・ポイントよりも前であることを条件に、前記更新されたセグメントの更新ログを書き出すステップと、前記更新ログに基づいて前記ポインタ・レコードおよび前記セグメント・レコードを修正するステップと、修正後のポインタ・レコードおよび修正後のセグメント・レコードにおいて対応するレコード・エントリ同士を比較することにより索引の整合性を検証するステップと、を含む方法が提供される。
本発明の第3の態様によれば、複数のデータ・セグメントが記録された主データベースおよび複数の索引セグメントが記録された索引データベースを含むデータベースにおいて索引の整合性をチェックするためのプログラムであって、第2の態様による方法の各ステップをコンピュータに実行させるためのプログラムが提供される。
何れの態様においても、主データベースおよび索引データベースが同じであってもよい。すなわち、データ・セグメントおよび索引セグメントを単一のデータベースに記録するようにしてもよい。
以下、図面を参照しながら、本発明を実施するための最良の形態について説明するが、以下の説明は単なる例示であって、特許請求の範囲に記載された本発明を制限するものではない。例えば、実施形態では、データベースの例としてIBM社のIMSを取り上げるが、もちろん本発明は他のデータベースにも適用可能である。
図1は、本発明が対象とするデータベース・システム10の概略を示す。データベース・システム10は、データベース20と、データベース管理システム30とを備える。データベース20は、本実施形態では階層型データベースであって、図2に示すように、ツリー形式に構成された複数のデータ・セグメント200を記録する主データベース22と、それぞれが対応するデータ・セグメントに対するキー値(索引)を含む複数の索引セグメント300を記録する索引データベース24から成っている。図2において、例えばキー値Aを有する索引セグメント300は、検索フィールドに値Aを有するデータ・セグメント200に対応している。他の索引セグメントについても同様である。
主データベース22および索引データベース24は同じデータベースであってもよい。すなわち、データ・セグメント200および索引セグメント300を単一のデータベースに記録するようにしてもよい。
主データベース22の具体的な構成例を図3に示す。主データベース22は、データ・セグメント200−1〜4に代表される複数のデータ・セグメントを記録している。図示の例では、データ・セグメント200−1がルート・セグメントになっており、ルート・アンカー・ポイント(RAP)によって指定することができる。データ・セグメント200−1は、接頭部210−1と、データ部220−1とを含む。また、データ・セグメント200−1の保存先アドレスは1000である。ここで、保存先アドレスとは、例えば、主データベース22の所定の基準アドレスと比較したデータ・セグメント200−1の先頭アドレスの位置(相対バイトアドレス:RBA)をいう。接頭部210−1は、データ・セグメント200−2の保存先アドレスである1100を指示するポインタ230−1と、その他のデータ・セグメントの保存先アドレスを指示するポインタ240−1と、セグメント・コード(SC)250−1とを含む。セグメント・コード250−1は、ルート・セグメントから順にセグメント・タイプを特定するために降られた番号である。図示の例では、データ・セグメント200−1はルート・セグメントであるから、セグメント・コード250−1は、例えば“01”に設定される。
データ・セグメント200−2は、データ・セグメント200−1と同じく、接頭部210−2と、データ部220−2とを含む。接頭部210−2は、データ・セグメント200−3の保存先アドレスである1200を指示するポインタ230−2と、更に他のデータ・セグメントの保存先アドレスを指示するポインタ240−2と、セグメント・コード250−2とを含む。データ・セグメント200−2は、ルート・セグメントの次のセグメントであるから、セグメント・コード250−2は、例えば“02”に設定される。
データ・セグメント200−3も、接頭部210−3と、データ部220−3とを含む。データ・セグメント200−3は、データ・セグメント200−1から始まる一連の階層構造の終端部分に位置する。このため、接頭部210−3は、下位のセグメントを指すポインタは持たず、同じ親の兄弟を指すポインタのみを持っている。実際には、接頭部210−3は、何れのアドレスをも示さない所定のデータ(例えば、Null)を、ポインタ240−3として含んでもよい。また、接頭部210−3のセグメント・コード250−3は、例えば“03”に設定される。
このように、主データベース22は、各データ・セグメントの接頭部に記録されたポインタを辿る事により順次他のデータ・セグメントをアクセスできる階層構造を有している。なお、図には示していないが、各データ・セグメント200のデータ部220は、複数のフィールドを含み、IMSではそのうちの1つまたは複数を索引用の検索フィールドとして指定できるようになっている。
索引データベース24は、図4に示すような形式の索引セグメント300が単に記録されているだけで、階層構造にはなっていない。図示の索引セグメント300は、対応するデータ・セグメントの保存先アドレスを示すポインタ値(例えばRBA)310と、対応するデータ・セグメントを検索するためのキー値320と、セグメント・コード(SC)330とを含んでいる。キー値320としては、対応するデータ・セグメント中の所定の検索フィールドの値が使用される。例えば、データ・セグメント中に人名フィールドがあって、そこに「佐藤」という名前が記入されていた場合、これを検索キーとして使用したければ、「佐藤」をキー値320にすればよい。ただし、実際にキー値320として記録されるのは「佐藤」の16進コード化値である。例えば、メインフレームで使用されているEBCDICコードの場合、「佐藤」は「x'0E457645680F'」で表される。セグメント・コード330は、便宜上ルート・セグメントに対して割り振られるコード値、例えば“01”を含む。索引セグメント300においては、ポインタ値310およびセグメント・コード330が接頭部を構成し、キー値320がデータ部を構成している。
次に、本発明に従うデータベース管理システム30の機能構成例を図5に示す。図示のデータベース管理システム30は、レコード生成部50、スキャン・ポイント設定部52、更新ログ書き出し部54、レコード修正部56、および整合性検証部58を有する。レコード生成部50は、索引データベース24から索引セグメント300を順次に読み出して、ポインタ値およびキー値を含むポインタ・レコードを生成し、更に主データベース22からデータ・セグメントを順次に読み出して、そのうちの索引の対象となっているデータ・セグメント(索引対象セグメント)の保存先アドレスおよび検索フィールド値を含むセグメント・レコードを生成する。本実施形態では、データ・セグメントの索引付けは、セグメント・コードを指定することによって行われる。従って、主データベース22から読み出したデータ・セグメントの接頭部210にあるセグメント・コード250を調べれば、そのデータ・セグメントが索引対象セグメントであるかどうかを判断することができる。
スキャン・ポイント設定部52は、レコード生成部50によるポインタ・レコードおよびセグメント・レコードの生成がどこまで進んだかを示すスキャン・ポイントを設定する。これは、例えば、レコード生成部50が読み出したセグメントのアドレスを保管して、それを読み出しに伴って昇順で順次に更新していくことによって実現できる。ただし、索引セグメントについては、索引データベース24内で一定の位置(RBA)に配置されているとは限らないので、アドレスの代わりにキー値をスキャン・ポイントとして設定するのが好ましい。勿論、索引セグメントの位置が一定であれば、アドレスをスキャン・ポイントとして設定できる。
更新ログ書き出し部54は、索引データベース24で索引セグメントが更新されたこと、または主データベース22で索引対象セグメントが更新されたことに応じ、更新されたセグメントがスキャン・ポイント設定部により設定されたスキャン・ポイントよりも前であることを条件に、更新されたセグメントの更新ログを書き出す。すなわち、更新ログ書き出し部54は、レコード生成部50が整合性チェックのために既に読み出したセグメントが更新された場合に、その更新セグメントの更新ログを書き出す。
レコード修正部56は、更新ログ書き出し部54が書き出した更新ログに基づいて、レコード生成部50が生成したポインタ・レコードおよびセグメント・レコードを修正する。整合性検証部58は、修正後のポインタ・レコードおよび修正後のセグメント・レコードにおいて対応するレコード・エントリ同士を比較することにより索引の整合性を検証して、検証結果を出力する。
次に、図6の流れ図を参照して、図5に示すデータベース管理システム30の動作について説明する。最初のステップS1で、データベース管理システム30のレコード生成部50は、主データベース22および索引データベース24からそれぞれデータ・セグメントおよび索引セグメントを、ロックをかけて読み出し、セグメント・レコードおよびポインタ・レコードのエントリをそれぞれ作成する。ロックは、データベース全体ではなく、これから読み出そうとする特定のアドレスにのみかけられる。
ポインタ・レコードの構成例を図7に示す。図示のように、ポインタ・レコード70は、ポインタ値74およびキー値76を保管する2つのフィールドを有する。ポインタ値74およびキー値76は、読み出した索引セグメントに含まれていたものである。
セグメント・レコードの構成例を図8に示す。図示のように、セグメント・レコード80は、保存先アドレス84および検索フィールド値86を保管する2つのフィールドを有する。保存先アドレス84は、読み出したデータ・セグメントが保存されていた開始アドレスであり、本実施形態ではRBAが使用されている。検索フィールド値86は、前述のように、データ・セグメントのデータ部220において、検索フィールドとして指定されたフィールドの値である。
なお、図7および図8では、説明の便宜上、各レコード・エントリの記号を同じにしているが、実際には、例えば保存先アドレスRBA1とポインタ値RBA1が同じであるとは限らず、また検索フィールド値Aとキー値Aが同じであるとは限らない。他の値についても同様である。
図6に戻って、次のステップS2で、データベース管理システム30のスキャン・ポイント設定部52は、レコード生成部50が読み出したデータ・セグメントの保存先アドレスおよび索引セグメントのキー値をデータベース別にそれぞれスキャン・ポイントとして設定する。これらのスキャン・ポイントは、データ・セグメントおよび索引セグメントの読み出しの度に順次更新されていく。
次のステップS3で、データベース管理システム30の更新ログ書き出し部54は、データベース20においてデータ・セグメントまたは索引セグメントが更新されたかどうかをチェックし、もし更新されていると、ステップS4で、更新されたセグメントのアドレス(またはキー値)が現在のスキャン・ポイントよりも前かどうか、すなわちステップS1で読み出しが終わったセグメントが更新されたかどうかを調べる。もし読み出し済みのセグメントが更新されていると、ステップS5に進み、さもなければステップS6に進む。
ステップS5で、更新ログ書き出し部54は、更新されたセグメントの更新ログを書き出す。図9および図10に、索引セグメント用の更新ログおよび索引対象セグメント用の更新ログの構成例をそれぞれ示す。図9において、索引セグメント用の更新ログ90は、ログ番号92、セグメントID94、更新前接頭部96、および更新後接頭部98を含む。ログ番号は昇順の連続番号でよい。セグメントID94は、更新されたセグメントを特定できるものであればどのような値でもよい。本実施形態のIMSでは、索引セグメントは索引データベース24内で一定の位置(RBA)に配置されているとは限らないため、RBA値では索引セグメントを特定することができない。その代わり、キー値は索引データベース24内で重複なしに割り当てられるので、この値で索引セグメントを特定することが可能である。更新前接頭部96および更新後接頭部98は、索引セグメントの更新前および更新後の接頭部の内容、すなわちポインタ値およびセグメント・コードをそれぞれ含む。
図10において、索引対象セグメント用の更新ログ100は、ログ番号102、セグメントID104、ログタイプ106、更新前接頭部108、更新後接頭部110、および検索フィールド値112を含む。ログ番号102は、昇順の連続番号でよい。セグメントID104は、更新された索引対象セグメントを特定できるものであればどのようなものでもよい。本実施形態では、索引対象セグメントは主データベース22内で一定の位置(RBA)をしめるので、セグメントIDとしてRBAを使用することができる。ログタイプ106は、ログがどのような変更データを保持するかを示す。本実施形態では、ログタイプとして、「接頭部および検索フィールド部」(タイプ1)、「接頭部のみ」(タイプ2)、および「検索フィールド部のみ」(タイプ3)の3種類が想定されており、それぞれのタイプによって更新ログの保管情報が異なる。更新前接頭部108および更新後接頭部110は、索引対象セグメントの更新前後の接頭部の内容をそれぞれ含む。検索フィールド値112は、更新された索引対象セグメントの検索フィールドの値である。検索フィールドが更新された場合には、検索フィールドの更新部分または全体が記録される。例えば、検索フィールド値「ABC」が「ADE」に更新された場合には、検索フィールド値112には更新部分の「DE」のみが、更新部分の開始位置と更新部分の長さとともに記録される、としてもよい。検索フィールド全体を記録することも可能である。
上述のように、更新ログの保管情報はログタイプによって異なる。例えば、セグメント追加に伴う更新ログ・エントリ(タイプ1)は、更新前接頭部108、更新後接頭部110および検索フィールド値112を含むが、セグメント削除に伴う更新ログ・エントリ(タイプ2)は、削除されたセグメントに含まれているポインタ値がわかればよいので、検索フィールド値112を含まず(「N/A」によって示す)、更新前接頭部108および更新後接頭部110のみが記録され、セグメントの検索フィールドのみの更新に伴う更新ログ・エントリ(タイプ3)は、更新された検索フィールドの値がわかればよいので、更新前接頭部108および更新後接頭部110を含まない。
更新ログ書き出し部54は、スキャン・ポイントよりも前の更新がある度に、更新ログを書き足していく。
図6に戻って、ステップS5が終了するか、ステップS4の判断結果がNOの場合は、ステップS6に進んで、読み出すべきセグメントが主データベース22および索引データベース24に残っているかどうかを調べる。もし残っていればステップS1に戻り、さもなければステップS7に進む。
ステップS7において、データベース管理システム30のレコード修正部56は、更新ログ書き出し部54が書き出した更新ログ90および100に基づいて、レコード生成部50が生成したポインタ・レコード70およびセグメント・レコード80をそれぞれ修正する。具体的には、レコード修正部56は、更新ログ90および100の更新内容を1つずつポインタ・レコード70およびセグメント・レコード80に反映させていく。例えば、ポインタ・レコード70に、「ポインタ値=1000、キー値=A」というエントリがあり、セグメント・レコード80に、「保存先アドレス=1000、検索フィールド値=A」というエントリがあって、更新ログ90および100が図11のようになっていた場合を考えてみる。
図11の更新ログ90および100は、最初に1000番地のデータ・セグメントおよび対応する索引セグメントが主データベース22および索引データベース24からそれぞれ削除され、次に検索フィールド値Bを持ったデータ・セグメントが主データベース22の7000番地に追加されると共に、キー値Bを持った対応する索引セグメントが索引データベース24に追加され、最後に7000番地の追加データ・セグメントにおいて検索フィールド値がB’に更新されて、そのため索引データベース24において、キー値がBの索引セグメントが削除され、代わりにキー値がB’の索引セグメントが追加されたことを示している。従って、ポインタ・レコード70においては、まず「ポインタ値=1000、キー値=A」というエントリが削除され、次に「ポインタ値=7000、キー値=B」というエントリが追加され、次にこの追加されたエントリが削除され、最後に「ポインタ値=7000、キー値=B’」というエントリが追加される。セグメント・レコード80においては、「保存先アドレス=1000、検索フィールド値=A」というエントリが削除され、次に「保存先アドレス=7000、検索フィールド値=B」というエントリが追加され、最後にこのエントリが「保存先アドレス=7000、検索フィールド値=B’」に更新される。新たなエントリの追加は、削除されたエントリへの上書きでも構わない。
なお、図11の例では、主データベース22の7000番地にあるデータ・セグメントの検索フィールド値は1回しか更新されていないが、これが複数回更新された場合には、ログ番号を使用してセグメント・レコード80に対し、古いものから順に更新を適用していく。その際、対応する索引セグメントは、検索フィールド値が更新される度に、古い索引セグメントの削除と新しい索引セグメントの追加が繰り返される。
上述のように、レコード修正部56は、主データベース22および索引データベース24からのセグメントの読み出しが完了した後で、更新ログ90および100の内容をポインタ・レコード70およびセグメント・レコード80に反映させるものである。当業者であれば、上述の説明から、図11の更新例以外の更新についても、各レコードの修正を容易に実施できるであろう。なお、データ・セグメントにおける検索フィールド値以外の更新は、索引付けとは関係がなく、また従来の整合性チェック技術で対処できるので、その詳細については省略する。
図6に戻って、レコードの修正が完了すると、ステップS8で、データベース管理システム30の整合性検証部58は、修正後のポインタ・レコード70および修正後のセグメント・レコード80において対応するレコード・エントリ同士を比較することにより索引の整合性を検証する。具体的には、整合性検証部58は、修正後のポインタ・レコード70をポインタ値(RBA)でソートし、修正後のセグメント・レコード80を保存先アドレス(RBA)でソートする。そして同じRBAを持った、ポインタ・レコード70のエントリのキー値およびセグメント・レコード80のエントリの検索フィールド値が同じであれば整合していると判断し、さもなければ整合エラーと判断する。
図12は、データベース管理システム30として機能する情報処理装置500のハードウェア構成の一例を示す。本図においては、情報処理装置500が、メインフレームと呼ばれる大型汎用計算機である場合を例に、そのハードウェア構成を説明する。情報処理装置500は、主記憶装置502と、少なくとも1つの中央処理装置504と、記憶制御部506と、チャネル・サブシステム508と、少なくとも1つの制御装置510と、少なくとも1つの入出力デバイス512a〜dとを備える。
主記憶装置502は、入出力デバイス512a〜dから入力したデータ及びプログラムを格納する。そして、主記憶装置502は、中央処理装置504及びチャネル・サブシステム508からアドレスの指定を受けると、そのアドレスに格納しているデータを中央処理装置504及びチャネル・サブシステム508に送る。主記憶装置502は、格納しているデータを高速に読み書き可能であり、この高速な読み書きにより、中央処理装置504による高速演算処理が可能となる。
中央処理装置504は、情報処理装置500の全体を制御する中心的な役割を果たし、例えば、少なくとも1つのオペレーティングシステム505を実行する。オペレーティングシステム505は、情報処理装置500におけるプログラムの実行及び入出力処理を制御する。例えば、オペレーティングシステム505は、中央処理装置504上で動作する他のプログラムの実行を制御してもよいし、入出力デバイス512a〜dまでの各々におけるデータ転送を制御してもよい。
記憶制御部506は、双方向又は片方向に通信可能なバス514を経由して中央処理装置504に接続される。記憶制御部506は、更に、バス516を経由して主記憶装置502に接続され、バス518を経由してチャネル・サブシステム508に接続される。記憶制御部506は、例えば、中央処理装置504又はチャネル・サブシステム508から受けたアクセスリクエストを一時的に格納し(キューイング処理)、所定のタイミングでそのアクセスリクエストを主記憶装置502に送信してもよい。
チャネル・サブシステム508は、各々の制御装置510に対して、データ転送路520を経由して接続される。そして、チャネル・サブシステム508は、入出力デバイス512a〜d及び主記憶装置502間でのデータ転送を制御する。これにより、中央処理装置504が入出力デバイス512a〜dとの間で通信する処理負荷が軽減されるので、中央処理装置504による演算処理と、入出力デバイス512a〜dによる入出力処理とを並列に実行させることができ、結果として情報処理装置500を効率的に動作させることができる。
また、チャネル・サブシステム508は、少なくとも1つのチャネルパス522により、入出力デバイス512a〜dとデータ転送する。各々のチャネルパス522は、チャネル・サブシステム508内に設けられたチャネル524を有する。また、各々のチャネルパス522は、少なくとも1つの制御装置510と、データ転送路520を有する。ここで、データ転送路520は、例えば、ESCON(Enterprise Systems Connection Architecture)に基づくシリアルリンクであってもよい。これに代えて、データ転送路520は、パラレルOEMIであってもよいし、ファイバチャネルであってもよい。
制御装置510は、入出力デバイス512a〜dの少なくとも1つを制御する。例えば、制御装置510は、入出力デバイス512a〜dの各々におけるデータ転送のタイミングを制御してもよい。制御装置510は、バス526を経由して、入出力デバイス512a〜dの少なくとも1つに接続する。一例として、制御装置510は、最大256個の入出力デバイスに接続可能である。
入出力デバイス512a〜dの各々は、制御装置510、チャネル・サブシステム508、及び記憶制御部506を順次経由して主記憶装置502との間でデータ転送を行う。ここで、入出力デバイス512aは、具体的には、磁気テープドライブであり、入出力デバイス512dは、ハードディスクドライブである。これに代えて、又はこれに加えて、入出力デバイス512a〜dの各々は、パンチカードリーダ、ディスプレイ、キーボード、プリンタ、通信デバイス、各種センサー、又はその他の記憶装置であってもよい。一例として、入出力デバイス512a〜dの少なくとも何れか1つは、データベース20と接続され、データベース20に対するアクセスを行ってもよい。
情報処理装置500に提供されるプログラムは、テープ記録媒体535等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力デバイス512aによって読み出され、チャネル・サブシステム508を経由して主記憶装置502に格納される。そして、主記憶装置502に格納されたプログラムは、再度チャネル・サブシステム508を経由して入出力デバイス512d(ハードディスクドライブ)にインストールされる。プログラムが情報処理装置500等に働きかけて行わせる動作は、図1から図11において説明したデータベース管理システム30における動作と同一であるから、説明を省略する。
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク、CD−ROMの他に、DVDやPD等の光学記録媒体、MD等の光磁気記録媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを情報処理装置500に提供してもよい。
以上、本発明を実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
本発明が対象とするデータベース・システムの概略を示す図。 主データベースおよび索引データベースから成るデータベースを示す図。 主データベースの具体的な構成例を示すブロック図。 索引データベースに記録される索引セグメントの形式を示す図。 本発明に従うデータベース管理システムの機能構成例を示すブロック図。 本発明に従うデータベース管理システムの動作を示すフローチャート。 本発明に従うデータベース管理システムのレコード生成部により生成されるポインタ・レコードの一例を示す図。 本発明に従うデータベース管理システムのレコード生成部により生成されるセグメント・レコードの一例を示す図。 本発明に従うデータベース管理システムの更新ログ書き出し部により書き出される索引セグメント用更新ログの一例を示す図。 本発明に従うデータベース管理システムの更新ログ書き出し部により書き出される索引対象セグメント用更新ログの一例を示す図。 本発明に従うデータベース管理システムの更新ログ書き出し部により書き出される索引セグメント用更新ログおよび索引対象セグメント用更新ログの具体例を示す図。 本発明に従うデータベース管理システムとして機能する情報処理装置のハードウェア構成の一例を示すブロック図。

Claims (9)

  1. 複数のデータ・セグメントが記録された主データベースおよび複数の索引セグメントが記録された索引データベースを含むデータベースにおいて索引の整合性をチェックするためのシステムであって、
    前記索引データベースから索引セグメントを順次読み出して、ポインタ値およびキー値を含むポインタ・レコードを生成し、前記主データベースからデータ・セグメントを順次読み出して、そのうちの索引の対象となっている索引対象セグメントの保存先アドレスおよび検索フィールド値を含むセグメント・レコードを生成するレコード生成部と、
    前記ポインタ・レコードおよび前記セグメント・レコードの生成がどこまで進んだかを示すスキャン・ポイントを設定するスキャン・ポイント設定部と、
    前記レコード生成部が、前記ポインタ・レコード若しくはセグメント・レコードを生成中に、前記索引データベースで索引セグメントが更新されたこと、または前記主データベースで索引対象セグメントが更新されたことに応じ、更新されたセグメントが前記スキャン・ポイント設定部により設定されたスキャン・ポイントよりも前であることを条件に、前記更新されたセグメントの更新ログを書き出す更新ログ書き出し部と、
    前記レコード生成部が、前記ポインタ・レコード若しくはセグメント・レコードを生成後に、前記更新ログに基づいて前記ポインタ・レコードおよび前記セグメント・レコードを修正するレコード修正部と、
    修正後のポインタ・レコードおよび修正後のセグメント・レコードにおいて対応するレコード・エントリ同士を比較することにより索引の整合性を検証する整合性検証部と、
    を含むシステム。
  2. 前記索引対象セグメントは、セグメント・コードおよび検索フィールドを有し、前記索引セグメントは、セグメント・コード、対応する索引対象セグメントのポインタ値および索引付けのためのキー値を有する、請求項1に記載のシステム
  3. 前記レコード生成部は、読み出したデータ・セグメントのセグメント・コードから、当該データ・セグメントが索引対象セグメントかどうかを判断する、請求項2に記載のシステム。
  4. 前記スキャン・ポイント設定部は、前記レコード生成部が読み出した索引対象セグメントの保存先アドレスおよび前記レコード生成部が読み出した索引セグメントに含まれるキー値をそれぞれスキャン・ポイントとして設定する、請求項1〜3のいずれかに記載のシステム。
  5. 前記更新ログ書き出し部は、索引対象セグメントの検索フィールドが更新された場合には、更新された部分および更新の順序を示す情報を前記更新ログに記録する、請求項1〜4のいずれかに記載の方法。
  6. 前記レコード修正部は、索引対象セグメントの検索フィールドが更新された場合には、前記セグメント・レコードに対し、前記更新の順序を示す情報に従って更新を順次に適用する、請求項5に記載のシステム。
  7. 前記整合性検証部は、修正後のポインタ・レコードをポインタ値でソートし、修正後のセグメント・レコードを保存先アドレスでソートして、それらの値が同じである、ポインタ・レコードのエントリのキー値およびセグメント・レコードのエントリの検索フィールド値が同じであれば整合していると判断し、さもなければ整合エラーと判断する、請求項1〜6のいずれかに記載のシステム。
  8. 複数のデータ・セグメントが記録された主データベースおよび複数の索引セグメントが記録された索引データベースを含むデータベースにおいて索引の整合性をチェックするための方法であって、
    コンピュータの有するレコード生成部が、前記索引データベースから索引セグメントを順次読み出して、ポインタ値およびキー値を含むポインタ・レコードを生成するステップと、
    前記レコード生成部が、前記主データベースからデータ・セグメントを順次読み出して、そのうちの前記索引セグメントのポインタ値により示される索引対象セグメントの保存先アドレスおよび検索フィールド値を含むセグメント・レコードを生成するステップと、
    前記コンピュータの有するスキャン・ポイント設定部が、前記ポインタ・レコードおよび前記セグメント・レコードの生成がどこまで進んだかを示すスキャン・ポイントを設定するステップと、
    前記レコード生成部が前記ポインタ・レコード若しくはセグメント・レコードを生成中に、前記コンピュータの有する更新ログ書き出し部が、前記索引データベースで索引セグメントが更新されたこと、または前記主データベースで索引対象セグメントが更新されたことに応じ、更新されたセグメントが前記スキャン・ポイント設定部により設定されたスキャン・ポイントよりも前であることを条件に、前記更新されたセグメントの更新ログを書き出すステップと、
    前記レコード生成部が前記ポインタ・レコード若しくはセグメント・レコードを生成後に、前記コンピュータの有するレコード修正部が、前記更新ログに基づいて前記ポインタ・レコードおよび前記セグメント・レコードを修正するステップと、
    前記コンピュータの有する整合性検証部が、修正後のポインタ・レコードおよび修正後のセグメント・レコードにおいて対応するレコード・エントリ同士を比較することにより索引の整合性を検証するステップと、
    を含む方法。
  9. 複数のデータ・セグメントが記録された主データベースおよび複数の索引セグメントが記録された索引データベースを含むデータベースにおいて索引の整合性をチェックするためのプログラムであって、
    請求項8に記載の方法のステップをコンピュータに実行させるためのプログラム。
JP2006354038A 2006-12-28 2006-12-28 データベースにおける索引の整合性をチェックするためのシステム、方法およびプログラム Expired - Fee Related JP4148529B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006354038A JP4148529B2 (ja) 2006-12-28 2006-12-28 データベースにおける索引の整合性をチェックするためのシステム、方法およびプログラム
US11/849,246 US7650354B2 (en) 2006-12-28 2007-08-31 System, method, and program for checking index consistency in database
US12/180,492 US7647334B2 (en) 2006-12-28 2008-07-25 Method for checking index consistency in database

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006354038A JP4148529B2 (ja) 2006-12-28 2006-12-28 データベースにおける索引の整合性をチェックするためのシステム、方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2008165474A JP2008165474A (ja) 2008-07-17
JP4148529B2 true JP4148529B2 (ja) 2008-09-10

Family

ID=39585501

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006354038A Expired - Fee Related JP4148529B2 (ja) 2006-12-28 2006-12-28 データベースにおける索引の整合性をチェックするためのシステム、方法およびプログラム

Country Status (2)

Country Link
US (2) US7650354B2 (ja)
JP (1) JP4148529B2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4082614B2 (ja) * 2004-11-12 2008-04-30 インターナショナル・ビジネス・マシーンズ・コーポレーション データベース管理システム、データベース管理方法、及びプログラム
JP4148529B2 (ja) * 2006-12-28 2008-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースにおける索引の整合性をチェックするためのシステム、方法およびプログラム
US8099550B1 (en) * 2007-12-31 2012-01-17 Emc Corporation System and method for single instance storage
EP2324440B1 (en) * 2008-08-07 2014-10-08 Hewlett-Packard Development Company, L.P. Providing data structures for determining whether keys of an index are present in a storage system
JP5270271B2 (ja) * 2008-09-08 2013-08-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、情報処理方法、プログラムおよび記録媒体
JP4754007B2 (ja) * 2009-04-24 2011-08-24 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、情報処理方法、プログラムおよび記録媒体
US9239886B2 (en) * 2009-12-08 2016-01-19 Microsoft Technology Licensing, Llc Partitioned list
CN102667734B (zh) 2009-12-25 2014-08-20 国际商业机器公司 用于检查分层型数据库中的指针的一致性的系统和方法
US8352440B2 (en) 2010-06-28 2013-01-08 International Business Machines Corporation Using repeated incremental background consistency checking to detect problems with content closer in time to when a failure occurs
CN102375854B (zh) * 2010-08-23 2013-04-10 杭州华三通信技术有限公司 一种对数据库进行数据处理的方法和装置
CN102541884B (zh) * 2010-12-10 2014-07-02 中国移动通信集团贵州有限公司 数据库优化方法和装置
CN102541968B (zh) * 2010-12-31 2014-04-09 百度在线网络技术(北京)有限公司 一种索引方法
CN102890682B (zh) * 2011-07-21 2017-08-01 腾讯科技(深圳)有限公司 构建索引的方法、检索方法、装置及系统
JP2015049633A (ja) 2013-08-30 2015-03-16 富士通株式会社 情報処理装置、データ修復プログラム、及びデータ修復方法
US10210190B1 (en) * 2013-09-16 2019-02-19 Amazon Technologies, Inc. Roll back of scaled-out data
US9400817B2 (en) * 2013-12-31 2016-07-26 Sybase, Inc. In-place index repair
US9454590B2 (en) 2014-01-28 2016-09-27 International Business Machines Corporation Predicting validity of data replication prior to actual replication in a transaction processing system
CN106855890B (zh) * 2017-01-09 2020-07-28 深圳巨杉数据库软件有限公司 一种实现高性能数据库最终一致性全文检索的方法
WO2019080015A1 (zh) * 2017-10-25 2019-05-02 华为技术有限公司 一种数据读写方法、装置和存储服务器
CN109815240B (zh) 2019-01-29 2022-02-25 北京百度网讯科技有限公司 用于管理索引的方法、装置、设备和存储介质

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155678A (en) 1985-10-29 1992-10-13 International Business Machines Corporation Data availability in restartable data base system
US4751702A (en) 1986-02-10 1988-06-14 International Business Machines Corporation Improving availability of a restartable staged storage data base system that uses logging facilities
JPH0581110A (ja) 1991-09-25 1993-04-02 Hitachi Ltd インデクスフアイルの整合性自動検証方式
JPH0675840A (ja) 1992-08-26 1994-03-18 Hitachi Ltd データベースメンテナンス方式
JPH06139124A (ja) 1992-10-28 1994-05-20 Nec Software Ltd インバーテッドファイル方式データベース内不整合削除方式
JPH06243011A (ja) 1993-02-18 1994-09-02 Hitachi Ltd データベースの自動メンテナンス方式
JPH08249222A (ja) 1995-03-14 1996-09-27 Nippon Telegr & Teleph Corp <Ntt> データベース整合性チェック方法および装置
US5778387A (en) 1995-05-19 1998-07-07 Sprint Communications Co., L.P. Database automated recovery system
JP3636773B2 (ja) 1995-06-19 2005-04-06 株式会社日立製作所 データベースのチェックを行う情報処理装置
US5881379A (en) * 1996-05-20 1999-03-09 International Business Machines Corporation System, method, and program for using duplicated direct pointer sets in keyed database records to enhance data recoverability without logging
US6098110A (en) 1996-12-30 2000-08-01 Compaq Computer Corporation Network switch with a multiple bus structure and a bridge interface for transferring network data between different buses
JPH10260876A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd データベースのデータ構造及びデータベースのデータ処理方法
JPH10312329A (ja) 1997-05-09 1998-11-24 Matsushita Electric Ind Co Ltd データ・バックアップ・リストア装置
US6073129A (en) * 1997-12-29 2000-06-06 Bull Hn Information Systems Inc. Method and apparatus for improving the performance of a database management system through a central cache mechanism
US6052799A (en) * 1998-05-15 2000-04-18 International Business Machines Corporation System and method for recovering a directory for a log structured array
US6185569B1 (en) * 1998-06-29 2001-02-06 Microsoft Corporation Linked data structure integrity verification system which verifies actual node information with expected node information stored in a table
US6411964B1 (en) * 1998-12-23 2002-06-25 International Business Machines Corporation Methods for in-place online reorganization of a database
JP2001142765A (ja) 1999-11-17 2001-05-25 Nec Corp データベースファイル整合性検証方法およびその装置ならびに記録媒体
US6792418B1 (en) * 2000-03-29 2004-09-14 International Business Machines Corporation File or database manager systems based on a fractal hierarchical index structure
CA2302981C (en) * 2000-03-29 2004-06-01 Ibm Canada Limited-Ibm Canada Limitee Online database table reorganization
US6516380B2 (en) * 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
US6889225B2 (en) 2001-08-09 2005-05-03 Integrated Silicon Solution, Inc. Large database search using content addressable memory and hash
JP2004013228A (ja) 2002-06-03 2004-01-15 Ricoh Co Ltd データベースシステム及びその整合制御方法
US7085787B2 (en) * 2002-07-19 2006-08-01 International Business Machines Corporation Capturing data changes utilizing data-space tracking
US7308456B2 (en) * 2002-12-19 2007-12-11 International Business Machines Corporation Method and apparatus for building one or more indexes on data concurrent with manipulation of data
US6823493B2 (en) 2003-01-23 2004-11-23 Aurilab, Llc Word recognition consistency check and error correction system and method
US7133884B1 (en) * 2003-11-26 2006-11-07 Bmc Software, Inc. Unobtrusive point-in-time consistent copies
JP2005190047A (ja) 2003-12-25 2005-07-14 Hitachi Ltd データソート機能を持つストレージシステム
US7277905B2 (en) 2004-03-31 2007-10-02 Microsoft Corporation System and method for a consistency check of a database backup
US7440936B2 (en) * 2004-10-07 2008-10-21 International Business Machines Corporation Method for determining an access mode to a dataset
JP4082614B2 (ja) 2004-11-12 2008-04-30 インターナショナル・ビジネス・マシーンズ・コーポレーション データベース管理システム、データベース管理方法、及びプログラム
JP3884049B1 (ja) * 2005-08-17 2007-02-21 インターナショナル・ビジネス・マシーンズ・コーポレーション システム、判断方法およびプログラム
US20070118547A1 (en) 2005-11-22 2007-05-24 Monish Gupta Efficient index versioning in multi-version databases
JP4148529B2 (ja) * 2006-12-28 2008-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースにおける索引の整合性をチェックするためのシステム、方法およびプログラム

Also Published As

Publication number Publication date
JP2008165474A (ja) 2008-07-17
US7647334B2 (en) 2010-01-12
US20080162585A1 (en) 2008-07-03
US20080313218A1 (en) 2008-12-18
US7650354B2 (en) 2010-01-19

Similar Documents

Publication Publication Date Title
JP4148529B2 (ja) データベースにおける索引の整合性をチェックするためのシステム、方法およびプログラム
US9244953B2 (en) Systems and methods for asynchronous schema changes
US7933870B1 (en) Managing file information
JP5644777B2 (ja) ファイル群整合性検証システム、ファイル群整合性検証方法およびファイル群整合性検証用プログラム
US7653647B2 (en) System and method for determining file system data integrity
US8667029B2 (en) Optimized startup verification of file system integrity
US7809777B2 (en) File system having deferred verification of data integrity
US20070005874A1 (en) File system storing transaction records in flash-like media
US7483920B2 (en) Database management system, database management method, and program
JP5341209B2 (ja) 階層型データベースにおけるポインタの整合性をチェックするためのシステム、方法及びプログラム
KR20060047941A (ko) 외부 메타데이터 프로세싱 방법 및 시스템
US20120284244A1 (en) Transaction processing device, transaction processing method and transaction processing program
US7299249B2 (en) Apparatus, system, and program for determining consistency of a database
CN114860745B (zh) 基于人工智能的数据库扩展方法及相关设备
JP3636773B2 (ja) データベースのチェックを行う情報処理装置
JP5808264B2 (ja) コード生成装置及びコード生成方法及びプログラム
JP5270271B2 (ja) 情報処理装置、情報処理方法、プログラムおよび記録媒体
JP4047557B2 (ja) データベース管理システム,データベース管理処理方法,データベース管理システム用のプログラムおよびその記録媒体
JP2010257226A (ja) 情報処理装置、情報処理方法、プログラムおよび記録媒体
JPH05189284A (ja) 関係型データベース管理システム
JP3307358B2 (ja) 部分修正コマンド方法及び情報処理装置
JP2001222454A (ja) データ表示システム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080516

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: 20080618

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080623

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

Free format text: PAYMENT UNTIL: 20110704

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees