(57)【要約】  トランザクション管理部（１０２）は、更新部（１０３）による更新処理、及び、検索部（１０４）による検索処理をトランザクションとして管理し、トランザクション開始要求時にトランザクションＩＤを割り当てる。第１の記憶部は、トランザクションによる更新処理のログを記憶する。記憶部（１０７）は、更新部（１０３）によりデータが更新された場合に、データの更新がなされたことを示す更新情報をトランザクションＩＤに対応付けて記憶する。復元部（１０８）は、検索部（１０４）により検索された際に、検索対象となるデータの更新情報が、記憶部（１０７）に存在するか否かを判定し、判定が真の場合に、データを更新したトランザクションを第１の記憶部から読み出し、データの復元処理を行う。
2011099082.tif 000002
【特許請求の範囲】
【請求項１】
データベースに記憶される構造化文書データの更新要求及び検索要求を含むトランザクション要求及びトランザクションの開始要求を入力する入力部と、
前記更新要求に従って、前記構造化文書データ中の更新対象となるデータの更新処理を実行する更新部と、
前記検索要求に従って、前記構造化文書データ中の検索対象となる前記データの検索処理を実行する検索部と、
前記トランザクションを複数管理し、前記トランザクションの開始要求時に一の前記トランザクションにつき一のトランザクションＩＤを割り当てるトランザクション管理部と、
第１のトランザクションにおける更新処理のログを記憶する第１の記憶部と、
前記更新部により前記データが更新された場合に、前記データの更新がなされたことを示す更新情報を前記トランザクションＩＤに対応付けて記憶する第２の記憶部と、
第１のトランザクションとは別の第２のトランザクションにおける前記検索部により前記データが検索された際、検索対象となる前記データの更新情報が、前記第２の記憶部に存在する場合に、前記データを更新したトランザクションのログを前記ログ記憶部から読み出し、前記データの復元処理を行う復元部と
を備えることを特徴とするデータベース管理システム。
【請求項２】
前記データベースは、
前記構造化文書データの構造情報を表す文書構造情報と、前記構造化文書データのテキスト内容を表すテキスト情報と、前記テキストを分割した文字の索引を表す索引情報とを含む部分データを記憶し、
前記第２の記憶部は、
前記更新部により更新された前記データを特定する部分データを更新情報として記憶する
ことを特徴とする、請求項１記載のデータベース管理システム。
【請求項３】
前記部分データは、識別子である部分データＩＤを有し、
前記第２の記憶部は、
前記更新部により更新された前記データを特定する前記部分データの前記部分データＩＤを記憶し、
前記復元部は、
前記検索の際に、検索対象となる前記データを特定する前記部分データの部分データＩＤが前記第２の記憶部に存在するか否かを判定する
ことを特徴とする、請求項２記載のデータベース管理システム。
【請求項４】
前記トランザクション管理部は、
前記部分データに対応付けられた前記トランザクションをコミット又はアボートした場合、前記第２の記憶部の前記部分データを消去する
ことを特徴とする、請求項３記載のデータベース管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース管理システムに関する。
【背景技術】
【０００２】
複数のトランザクション間で、更新処理や検索処理が並行して実行される場合において、データの整合性を保つために、データベースを管理するデータベース管理システムがある。【０００３】
このようなデータベース管理システムでは、一のトランザクションにより更新が行われた場合、その更新がコミットまたはアボートされるまでは他のトランザクションに対しては更新前のデータをユーザに提示する。この処理を行うため、一のトランザクションの更新処理によりデータが更新された場合は、更新内容を記録したログファイルを作成する。別のトランザクションで検索要求がなされると、他のトランザクションによる、コミットまたはアボート前のデータ更新の有無を判定する。【０００４】
データの更新が行われたと判定した場合、検索要求したトランザクションは、別のトランザクションにより更新されたデータとログファイルとを用いて、更新前のデータを復元する。【０００５】
データ更新の有無を判定する方法として、例えば特許文献１では、実表データ部とインデックス部とにカウンタを設ける。更新要求がなされると、実表データ部中のデータを更新し、カウンタの値を１増加させる。インデックス部中のカウンタの値を１増加させる。【０００６】
別のトランザクションにより検索要求がなされると、検索条件に従ってインデックス部を検索し、検索結果とともに検索箇所のカウンタの値を記憶する。次に実表データ部を検索し、検索結果に対応するデータのカウンタと記憶したカウンタの値とを比較する。【０００７】
両カウンタが同値の場合、検索要求を行ったトランザクションは、検索結果を出力する。同値でない場合は、再度インデックス部から検索をやり直す。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第４０４７５５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述したデータベース管理システムでは、インデックス部にカウンタという付加情報を設けなければならず、処理コストが増大する。【００１０】
本発明では、一のトランザクションの検索処理中に別のトランザクションが更新処理を行ってデータの更新が行われたか否かを、少ない処理コストで判定することが可能なデータベース管理システムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一側面に係るデータベース管理システムは、データベースに記憶される構造化文書データの更新要求及び検索要求を含むトランザクション要求及びトランザクションの開始要求を入力する入力部と、前記更新要求に従って、前記構造化文書データ中の更新対象となるデータの更新処理を実行する更新部と、前記検索要求に従って、前記構造化文書データ中の検索対象となる前記データの検索処理を実行する検索部と、前記トランザクションを複数管理し、前記トランザクションの開始要求時に一の前記トランザクションにつき一のトランザクションＩＤを割り当てるトランザクション管理部と、第１のトランザクションにおける更新処理のログを記憶する第１の記憶部と、前記更新部により前記データが更新された場合に、前記データの更新がなされたことを示す更新情報を前記トランザクションＩＤに対応付けて記憶する第２の記憶部と、第１のトランザクションとは別の第２のトランザクションにおける前記検索部により前記データが検索された際、検索対象となる前記データの更新情報が、前記第２の記憶部に存在する場合に、前記データを更新したトランザクションのログを前記ログ記憶部から読み出し、前記データの復元処理を行う復元部とを備える。
【発明の効果】
【００１２】
本発明によれば、一のトランザクションの検索処理中に別のトランザクションが更新処理を行ってデータの更新が行われたか否かを、少ない処理コストで判定することができる。
【図面の簡単な説明】
【００１３】
【図１】一のトランザクションによる更新処理と別のトランザクションによる検索処理の時間関係を表す図
【図２】第１の実施の形態に係るデータベース管理システムを表すブロック図
【図３】トランザクション管理部１０２の一般的な処理を表すフローチャート
【図４】ＸＭＬ文書を表す一例図
【図５】ＸＭＬ文書の構造を表す一例図
【図６】データベース内の各々のＸＭＬ文書のデータを示す図
【図７】データベース管理システムの更新処理を表すフローチャート
【図８】データベース管理システムの検索及び復元処理を表すフローチャート
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について図面を参照して説明する。
【００１５】
既出の図に関して前述したものと同様の要素には同一の符号を付して詳細な説明は適宜省略する。
【００１６】
（第１の実施の形態）
トランザクションとは、ユーザから要求されたデータベースに対する更新処理及び検索処理からなる一又は複数の処理を一の処理単位としてまとめたものである。トランザクションは、更新処理の場合もある。トランザクションは、検索処理のみの場合もある。
【００１７】
第１の実施の形態に係るデータベース管理システムは、データベースに記憶されるＸＭＬ文書のデータに対する更新処理及び検索処理を行う。
【００１８】
図１は、一のトランザクションによる更新処理（トランザクション１）と別のトランザクションによる検索処理（トランザクション２）の時間関係を表す図である。
【００１９】
トランザクション１および２はランダムに発生する。例えば、トランザクション開始時のデータベースを用いてデータの検索を行うため、一のトランザクション（トランザクション２）における検索処理の実行中に、別のトランザクション（トランザクション１）によってデータの内容が更新されると、出力時点の検索結果とデータの内容とが不整合な状態となることが生じる。本実施の形態に係るデータベース管理システム１０は、一のトランザクションの処理中に別のトランザクションによりデータの更新が行われたか否かを少ない処理コストで判定し、トランザクションが検索するデータベースの復元を行う。
【００２０】
図２は、第１の実施の形態に係るデータベース管理システム１０を表すブロック図である。
【００２１】
データベース管理システム１０は、入力部１０１と、トランザクション管理部１０２と、更新部１０３と、検索部１０４と、ログ管理部１０５と、バッファ管理部１０６と、第２の記憶部１０７と、復元部１０８と、トランザクションのログを記憶する第１の記憶部１０９と、データベース１１０と、出力部１１１とを含む。ログは、トランザクションによる更新処理内容と検索処理内容とトランザクションとを含む。
【００２２】
データベース１１０には、例えばＸＭＬ文書などのデータを記憶している。このデータベース１１０に対して、入力部１０１が受け付けるトランザクションに応じた処理を行う。例えば、トランザクションが検索である場合には、検索部１０４がデータベース１１０から要求されたデータを検索する。トランザクションが更新である場合には、更新部１０３が、データベース１１０に対して要求されたデータを更新する。
【００２３】
このようなトランザクション処理はトランザクション管理部１０２によって管理される。この場合、ログ管理部１０５が、トランザクションのログを第１の記憶部１０９に記録している。
【００２４】
トランザクションとして、データの検索要求がなされた場合、データベース管理システム１０は、トランザクションにより検索するデータの中に、該トランザクションと並行して実行されている他のトランザクションにより更新されている場合が生じる可能性がある。
【００２５】
このため、本実施形態では、トランザクションと並行して実行されている他のトランザ
クションにより更新されている可能性のあるデータが存在するか否かを、第２の記憶部１０７にある更新情報を用いて判定する。存在すると判定した場合には、そのデータについて更新を行ったトランザクションの更新処理内容を第１の記憶部１０９から読みだし、更新前のデータへの復元処理を行う。
【００２６】
入力部１０１は、複数のユーザから、データの更新要求、検索要求を含むトランザクション要求、及びトランザクションの開始要求を受け付ける。入力部１０１は、複数のユーザからの要求を並行して受け付けることができる。
【００２７】
更新部１０３は、バッファ管理部１０６を介して、データベース１１０に記憶されているデータを読み出し、更新処理を行う。更新部１０３は、データの更新が完了した時点で、該データが更新されたことを示す更新情報を第２の記憶部１０７に記憶させる。検索部１０４は、バッファ管理部１０６を介して、データベース１１０に記憶されているデータを読み出し、検索処理を行う。
【００２８】
トランザクション管理部１０２は、更新部１０３による更新処理や、検索部１０４による検索処理を一連のトランザクションとして管理する。図３は、トランザクション管理部１０２の一般的な処理を表すフローチャートである。トランザクション管理部１０２には、入力部１０１からのトランザクション要求及びトランザクション開始要求が入力される（Ｓ３０１）。トランザクション管理部１０２は、一のトランザクションにつき、一のトランザクションＩＤを割り当てる（Ｓ３０２）。トランザクション管理部１０２は、入力部１０１が要求を受け付けた順番にトランザクションＩＤを割り当てる。トランザクション管理部１０２は、コミット又はアボートされていないトランザクションのトランザクションＩＤを内部に記憶する（Ｓ３０３）。トランザクション管理部１０２は、トランザクションに含まれる更新処理や検索処理が全て成功したか否かを判定する（Ｓ３０４）。成功した場合はトランザクションをコミットする（Ｓ３０５）。失敗した場合は、トランザクションをアボートする（Ｓ３０６）。
【００２９】
すなわち、トランザクション管理部１０２は、現在処理を実行中のトランザクションＩＤを保持している。
【００３０】
ログ管理部１０５は、トランザクションによる更新処理や検索処理のログを各々の処理終了の時点で第１の記憶部１０９に記録する。復元部１０８は、一のトランザクションにおいて、検索部１０４による検索処理が行われる際に、検索対象となるデータが、他の並行して実行されるトランザクションにより更新された可能性があるか否かを第２の記憶部１０７の更新情報を用いて判定する。
【００３１】
復元部１０８は、該判定が真の場合に、第１の記憶部１０９からトランザクションのログを読み出す。トランザクションのログを用いて、データの復元を行う。出力部１１１は、検索結果を出力する。
【００３２】
図４は、ＸＭＬ文書を表す一例図である。本実施の形態では、文書ＩＤを持つＸＭＬ文書により記述された納品書のデータを例とする。図４（ａ）及び（ｂ）は、それぞれ一のＸＭＬ文書を表している。各々のＸＭＬ文書には、各々のＸＭＬ文書を識別するための文書ＩＤが付されている。例えば、図４（ａ）のＸＭＬ文書には文書ＩＤ「１」が付され、図４（ｂ）のＸＭＬ文書には文書ＩＤ「２」が付される。
【００３３】
図５は、ＸＭＬ文書の構造を表す一例図である。ＸＭＬ文書の構造は木構造であり、各々のタグ及びテキストの項目には、識別番号である項目ＩＤが付されている。図５の大括弧内の数字が項目ＩＤである。例えば、図４（ａ）に示す文書ＩＤが１のＸＭＬ文書において、「氏名」のタグには項目ＩＤ「５」が付され、「氏名」のテキストには、項目ＩＤ「６」が付される。各々のＸＭＬ文書において、同一階層の同一名のタグには同一の項目ＩＤが付される。例えば、図４（ａ）のＸＭＬ文書の「商品名」のタグの項目ＩＤは「１３」であり、図４（ｂ）のＸＭＬ文書の「商品名」のタグの項目ＩＤも「１３」である。
【００３４】
図６は、データベース１１０内の各々のＸＭＬ文書のデータを示すもので、文書構造情報と、部分データとを含む。部分データとは、ＸＭＬ文書を分解したデータであり、ＸＭＬ文書のテキスト情報と索引情報とを含む。
【００３５】
文書構造情報とは、ＸＭＬ文書の文書構造を項目ＩＤで記述した情報である。例えば、図６に示すように、文書ＩＤ「１」のＸＭＬ文書（以下、文書１）の文書構造情報は、「１，２，３，４，５，６，７，８，９，１０，１１，１２，１３，１４，１５，１６，１７，１８，１９，２０，２１，２２」と表わされる。文書ＩＤ「２」のＸＭＬ文書（以下、文書２）には、文書１における「会社名」の項目が存在しない。そのため、文書２の文書構造情報は、「１，２，３，４，５，６，９，１０，１１，１２，１３，１４，１５，１６，１７，１８，１９，２０，２１，２２」と表わされ、「会社名」のタグの項目ＩＤ「７」及びテキストの項目ＩＤ「８」は、構造情報に含まれない。
【００３６】
テキスト情報とは、テキストの内容と項目ＩＤとを対応付けた情報である。例えば、図６に示すように、文書１のテキスト情報には、「４＝“０１２３４５６７”」等がある。これは項目ＩＤ「４」のテキストは、「０１２３４５６７」であることを示している。
【００３７】
索引情報とは、テキストの文字列を分割してできた各々の文字が、どの文書の、どの項目の、何番目に存在するかを示す情報である。文字列の分割方法には、「Ｎグラム法」や「形態素解析法」等がある。例えば、図６に示すように、文書１における「○○」の索引情報は「“○○”,１,６,１」である。これは、「○○」という文字列は、文書１の項目ＩＤ「６」の「１」文字目に存在することを示している。
【００３８】
データベース１１０は、ＸＭＬ文書のデータを、文書構造情報と部分データの状態で記憶している。すなわち、文書構造情報と部分データとから、図４に表したようなＸＭＬ文書が作成される。
【００３９】
さらに、本実施の形態において、データベース１１０は、文書構造情報と部分データの各々に部分データＩＤを付して、文書構造情報及び部分データを記憶している。例えば、文書構造情報には、部分データＩＤ「１」が付され、テキスト情報には、部分データＩＤ「２」が付される。
【００４０】
また、データベース１１０は、各々の項目ＩＤと、該項目ＩＤの更新が最後に行われた時刻である最終更新時刻とを対応付けた時刻データテーブルを、ＸＭＬ文書のデータとは別に記憶している。これにより、各々のＸＭＬ文書の各々の項目が、更新部１０３により最後に更新された時刻である最終更新時刻が分かる。
【００４１】
図７は、データベース管理システム１０の更新処理を表すフローチャートである。入力部１０１は、ユーザからの要求を受けつける（Ｓ５０１）。例えば、入力部１０１には、ユーザから、「トランザクションを開始し、文書１の顧客情報の氏名を“○○太郎”から“○○次郎”に変更して、文書２の顧客情報の顧客ＩＤを“０２３４５６７８”から“０３３４５６７８”に変更して、トランザクションをコミットせよ」といった要求を受け付ける。入力部１０１は、該要求をトランザクション管理部１０２と更新部１０３とに出力する。
【００４２】
トランザクション管理部１０２は、該要求に従って実行される一のトランザクションに、一のトランザクションＩＤを割り当て、トランザクションの開始時刻等のログをログ管理部１０５に出力する（Ｓ５０２）。
【００４３】
更新部１０３は、更新要求を解析し、更新対象となる部分データＩＤを特定する。その際、更新部１０３には、テキスト（「○○太郎」等）の更新であれば部分データＩＤ「２」と特定すれば良いという情報を設計段階で持たせておく。
【００４４】
更新部１０３は、バッファ管理部１０６に要求して、特定した部分データＩＤの部分データをデータベース１１０から読み出し、更新処理を実行し、更新内容や更新時刻等のログをログ管理部１０５に出力する（Ｓ５０３）。
【００４５】
例えば、更新部１０３は、文書１の部分データＩＤ「２」を読み出し、その中の「○○太郎」を「○○次郎」に更新するとともに、時刻ｔ１に、文書１の部分データＩＤ「２」の項目ＩＤ「６」を“○○次郎”に変更」という更新ログをログ管理部１０５に出力する。文書１の部分データＩＤ「４」を読み出し、その中にある「太郎」を「次郎」に更新するとともに、時刻ｔ２に、文書２の部分データＩＤ「２」の項目ＩＤ「４」を“０２３４５６７８”から“０３３４５６７８”に変更」という更新ログをログ管理部１０５に出力する。ログ管理部１０５は、更新ログを第１の記憶部１０９に記録する。文書２についても同様の処理を行う。
【００４６】
このとき、更新部１０３は更新した項目の時刻データテーブルを更新する。例えば、更新部１０３は、文書１の項目ＩＤ「６」の最終更新時刻をｔ１に更新する。文書２の項目ＩＤ「４」の最終更新時刻をｔ２に更新する。
【００４７】
更新部１０３は、一のトランザクションによって更新された部分データの部分データＩＤをトランザクションＩＤに対応付けて、第２の記憶部１０７に記憶させる（Ｓ５０４）。部分データ例えば、更新部１０３は、トランザクションＩＤ「１」のトランザクションによって、文書１の部分データＩＤ「２」と部分データＩＤ「４」、及び文書２の部分データＩＤ「２」が更新されたという更新情報を第２の記憶部１０７に記憶させる。
【００４８】
以上のようにして、データベース管理システム１０は、更新処理を行う。
【００４９】
図８は、データベース管理システム１０の検索及び復元処理を表すフローチャートである。入力部１０１は、ユーザからのデータの検索要求を受けつける（Ｓ６０１）。例えば、入力部１０１には、ユーザから「トランザクションを開始し、顧客情報の氏名が“○○太郎”もしくは“××花子”である文書を検索し、トランザクションをコミットせよ」といった要求を受け付ける。入力部１０１は、データの検索要求をトランザクション管理部１０２と検索部１０４とに出力する。
【００５０】
トランザクション管理部１０２は、トランザクション開始要求に従って実行されるトランザクションにトランザクションＩＤを割り当て、トランザクション開始時刻をログ管理部１０５に出力するとともに、トランザクションＩＤとその開始時刻を第２の記憶部１０７に記憶させる。
【００５１】
検索部１０４は、トランザクション管理部１０２に問い合わせ、検索要求の入力時点にコミットまたはアボートされていないトランザクションを特定し、該トランザクションの中で最も開始時刻の早いトランザクションの開始時刻を判定基準時刻と決定する（Ｓ６０２）。
【００５２】
例えば、検索要求の入力時に、上述した「文書１の顧客情報の氏名を“○○太郎”から“○○次郎”に変更して、文書２の顧客情報の顧客ＩＤを“０２３４５６７８”から“０３３４５６７８”に変更する」という更新処理を行ったトランザクション（トランザクションＩＤ「１」）のみが実行途中（コミット前かアボート前）であるとする。判定基準時刻は、トランザクションＩＤ「１」の開始時刻（ｔ０とする）である。
【００５３】
そして、「文書１の顧客情報の氏名を“○○太郎”から“○○次郎”に変更する」という更新処理が時刻ｔ１に行われた後に、「顧客情報の氏名が“○○太郎”もしくは“××花子”である文書を検索せよ」という検索要求が入力部１０１に入力されたとする。
【００５４】
検索部１０４は、検索要求から、検索対象となる部分データを特定する（Ｓ６０３）。その際、検索部１０４には、テキスト（「○○太郎」等）の検索であれば部分データＩＤ「２」と特定すれば良いという情報を設計段階で持たせておく。例えば、検索部１０４は、「顧客情報の氏名が“○○太郎”もしくは“××花子”である文書を検索せよ」という検索要求を解析し、全ての文書ＩＤの部分データＩＤ「２」を検索対象として特定する。
【００５５】
検索部１０４は、特定した検索対象の部分データＩＤの中から要求された検索対象のデータを探し、該データの最終更新時刻を、バッファ管理部１０６を介して時刻データテーブルから取得する（Ｓ６０４）。検索部１０４は、取得した結果を復元部１０８に出力する。復元部１０８は、受け取った部分データＩＤの項目ＩＤの項目の最終更新時刻が、判定基準時刻より後であるか否かを一の項目ごとに判定する（Ｓ６０５）。
【００５６】
例えば、顧客情報の氏名が「○○太郎」である文書の検索において、復元部１０８は、文書１の部分データＩＤ「２」の項目ＩＤ「６」の最終更新時刻が、判定基準時刻ｔ０よりも後であるか否かを判定する。検索要求の入力時点において、文書１の部分データＩＤ「２」の項目ＩＤ「６」の最終更新時刻はｔ１であるので、文書１の項目ＩＤ「６」の部分データＩＤ「２」の最終更新時刻はｔ０より後である。
【００５７】
顧客情報の氏名が「××花子」である文書の検索において、復元部１０８は、文書２の部分データＩＤ「２」の項目ＩＤ「６」の最終更新時刻が、判定基準時刻ｔ０よりも後であるか否かを判定する。検索要求の入力時点において、トランザクションＩＤ「１」の更新トランザクションによって、文書２の部分データＩＤ「２」の項目ＩＤ「６」の更新は行われていないので、文書２の部分データＩＤ「２」の項目ＩＤ「６」の最終更新時刻はｔ０より前である。
【００５８】
最終更新時刻が、判定基準時刻より前の場合（ステップＳ６０５においてＮｏの判定）、復元部１０８は、検索結果を出力部１１１に出力し、処理を終了する。例えば、復元処理部１０８は、文書２の部分データＩＤ「２」の項目ＩＤ「６」は「××花子」の状態で、文書２をＸＭＬ文書として出力部１１１に出力する。
【００５９】
最終更新時刻が、判定基準時刻より後の場合（ステップＳ６０５においてＹｅｓの判定）、復元部１０８は、第２の記憶部１０７を検索し、検索対象の部分データが、更新情報として第２の記憶部１０７に存在するか否かを判定する（Ｓ６０６）。
【００６０】
例えば、復元部１０８は、文書１の部分データＩＤ「２」が、第２の記憶部１０７に存在するか否かを判定する。
【００６１】
上述したトランザクションＩＤ「１」の更新トランザクションにより「文書１の顧客情報の氏名を“○○太郎”から“○○次郎”に変更する」という更新が行われたため、第２の記憶部１０７には、文書ＩＤ「１」の部分データＩＤ「２」が、更新情報として存在する。
【００６２】
検索対象の部分データに関する更新情報が第２の記憶部１０７に存在しない場合（ステップＳ６０６においてＮｏの判定）、復元部１０８は、検索結果をそのまま出力部１１１に出力し、検索処理を終了する。
【００６３】
検索対象の部分データに関する更新情報が第２の記憶部１０７に存在する場合（ステップＳ６０６においてＹｅｓの判定）、復元部１０８は、検索対象の部分データを更新したトランザクションＩＤを第２の記憶部１０７から取得する。復元部１０８は、取得したトランザクションＩＤのトランザクションの更新内容を、ログ管理部１０５を介して、第１の記憶部１０９から読み出す。読み出したログから、検索対象の部分データを更新処理前の部分データへ戻す復元処理を行う（Ｓ６０７）。
【００６４】
例えば、復元部１０８は、文書１の部分データＩＤ「２」を更新したトランザクションのトランザクションＩＤ「１」を第２の記憶部１０７から取得する。復元部１０８は、ログ管理部１０５を介して、トランザクションＩＤ「１」の更新処理のログを第１の記憶部１０９から読み出す。該ログには、上述したように、「トランザクションＩＤ「１」のトランザクションにより、時刻ｔ１に、文書１の部分データＩＤ「２」の項目ＩＤ「６」を“○○次郎”に変更」という内容の更新ログが存在する。そのため、復元部１０８は、更新ログから、「○○次郎」というデータを更新処理前のデータである「○○太郎」へ戻す復元処理を行う。
【００６５】
復元部１０８は、検索結果のうち、文書１の部分データＩＤ「２」の項目ＩＤ「６」を「○○次郎」に復元し、出力部１１１に出力する。出力部１１１は、部分データが復元された検索結果を表示する。
【００６６】
なお、トランザクション管理部１０２は、第２の記憶部１０７に記憶されている部分データＩＤに対応するトランザクションをコミット又はアボートした場合、該部分データを消去するのが望ましい。
【００６７】
これにより、データベース管理システム１０は、検索処理中に他のトランザクションの更新処理によりデータの更新が行われたか否かを、少ない処理コストで判定することが可能となる。
【００６８】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００６９】
１０１  入力部
１０２  トランザクション管理部
１０３  更新部
１０４  検索部
１０５  ログ管理部
１０６  バッファ管理部
１０７  第２の記憶部
１０８  復元部
１０９  第１の記憶部
１１０  データベース
【図１】
2011099082.tif 000003
【図２】
2011099082.tif 000004
【図３】
2011099082.tif 000005
【図４】
2011099082.tif 000006
【図５】
2011099082.tif 000007
【図６】
2011099082.tif 000008
【図７】
2011099082.tif 000009
【図８】
2011099082.tif 000010
【手続補正書】
【提出日】平成24年3月19日(2012.3.19)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
本発明の実施形態に係るデータベース管理システムは、データベースに記憶される構造化文書データに対し更新要求及び検索要求を含むトランザクション要求及びトランザクションの開始要求を入力する入力部と、前記更新要求に従って、前記構造化文書データ中の対象データの更新処理を実行する更新部と、前記検索要求に従って、前記構造化文書データ中の前記対象データの検索処理を実行する検索部と、前記トランザクションの実行を複数管理し、前記トランザクションの開始要求時に一のトランザクションに対応して一のトランザクションＩＤを割り当てるトランザクション管理部と、前記更新要求のトランザクションに従い前記データベースの更新処理のログを記憶する第１の記憶部と、前記更新部により前記データベースが更新された場合に、前記対象データの更新がなされたことを示す更新情報を前記トランザクションＩＤに対応付けて記憶する第２の記憶部と、前記検索要求のトランザクションに従い前記検索部により前記データベースが検索された際、前記対象データの前記更新情報が前記第２の記憶部に存在する場合に、前記対象データに対応するトランザクションＩＤを持つ前記更新処理のトランザクションの前記ログを前記第１の記憶部から読み出し、当該対象データの復元処理を行う復元部と、を備える。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
【図１】一のトランザクションによる更新処理と別のトランザクションによる検索処理の時間関係を表す図。
【図２】第１の実施の形態に係るデータベース管理システムを表すブロック図。
【図３】トランザクション管理部１０２の一般的な処理を表すフローチャート。
【図４】ＸＭＬ文書を表す一例図。
【図５】ＸＭＬ文書の構造を表す一例図。
【図６】データベース内の各々のＸＭＬ文書のデータを示す図。
【図７】データベース管理システムの更新処理を表すフローチャート。
【図８】データベース管理システムの検索及び復元処理を表すフローチャート。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】変更
【補正の内容】
【００１９】
トランザクション１および２はランダムに発生する。例えば、トランザクション開始時のデータベースを用いてデータの検索を行うため、一のトランザクション（トランザクション２）における検索処理の実行中に、別のトランザクション（トランザクション１）によってデータベースの内容が更新されると、出力時点の検索結果とデータベースの内容とが不整合な状態となることが生じる。本実施の形態に係るデータベース管理システム１０は、一のトランザクションの処理中に別のトランザクションによりデータの更新が行われたか否かを少ない処理コストで判定し、トランザクションが検索するデータベースの復元を行う。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２４
【補正方法】変更
【補正の内容】
【００２４】
トランザクションとして、データベースの検索要求がなされた場合、データベース管理システム１０は、トランザクションにより検索するデータの中に、該トランザクションと並行して実行されている他のトランザクションにより更新されている場合が生じる可能性がある。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００３３
【補正方法】変更
【補正の内容】
【００３３】
図５は、図４で示したＸＭＬ文書の構造を表す一例図である。ＸＭＬ文書の構造は木構造であり、各々のタグ及びテキストの項目には、識別番号である項目ＩＤが付されている。図５の大括弧内の数字が項目ＩＤである。例えば、図４（ａ）に示す文書ＩＤが「１」のＸＭＬ文書において、「氏名」のタグには項目ＩＤ「５」が付され、「氏名」のテキストには、項目ＩＤ「６」が付される。各々のＸＭＬ文書において、同一階層の同一名のタグには同一の項目ＩＤが付される。例えば、図４（ａ）のＸＭＬ文書の「商品名」のタグの項目ＩＤは「１３」であり、図４（ｂ）のＸＭＬ文書の「商品名」のタグの項目ＩＤも「１３」である。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００３５
【補正方法】変更
【補正の内容】
【００３５】
文書構造情報とは、ＸＭＬ文書の文書構造を項目ＩＤで記述した情報である。例えば、図６に示すように、文書ＩＤ「１」のＸＭＬ文書（以下、文書１と称する）の文書構造情報は、「１，２，３，４，５，６，７，８，９，１０，１１，１２，１３，１４，１５，１６，１７，１８，１９，２０，２１，２２」と表わされる。文書ＩＤ「２」のＸＭＬ文書（以下、文書２と称する）には、文書１における「会社名」の項目が存在しない。そのため、文書２の文書構造情報は、「１，２，３，４，５，６，９，１０，１１，１２，１３，１４，１５，１６，１７，１８，１９，２０，２１，２２」と表わされ、「会社名」のタグの項目ＩＤ「７」及びテキストの項目ＩＤ「８」は、構造情報に含まれない。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００４７
【補正方法】変更
【補正の内容】
【００４７】
更新部１０３は、一のトランザクションによって更新された部分データの部分データＩＤ「２」をトランザクションＩＤに対応付けて、第２の記憶部１０７に記憶させる（Ｓ５０４）。例えば、更新部１０３は、トランザクションＩＤ「１」のトランザクションによって、文書１の部分データＩＤ「２」と部分データＩＤ「４」、及び文書２の部分データＩＤ「２」が更新されたという更新情報を第２の記憶部１０７に記憶させる。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００５５
【補正方法】変更
【補正の内容】
【００５５】
検索部１０４は、特定した検索対象の部分データＩＤ「２」の中から要求された検索対象のデータを探し、該データの最終更新時刻を、バッファ管理部１０６を介して時刻データテーブルから取得する（Ｓ６０４）。検索部１０４は、取得した結果を復元部１０８に出力する。復元部１０８は、受け取った部分データＩＤ「２」の項目ＩＤ「６」の項目の最終更新時刻が、判定基準時刻ｔ０より後であるか否かを一の項目ごとに判定する（Ｓ６０５）。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００６３
【補正方法】変更
【補正の内容】
【００６３】
検索対象の部分データに関する更新情報が第２の記憶部１０７に存在する場合（ステップＳ６０６においてＹｅｓの判定）、復元部１０８は、検索対象の部分データを更新したトランザクションＩＤ「１」を第２の記憶部１０７から取得する。復元部１０８は、取得したトランザクションＩＤ「１」のトランザクションの更新内容を、ログ管理部１０５を介して、第１の記憶部１０９から読み出す。読み出したログから、検索対象の部分データを更新処理前の部分データへ戻す復元処理を行う（Ｓ６０７）。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】変更
【補正の内容】
【００６５】
復元部１０８は、検索結果のうち、文書１の部分データＩＤ「２」の項目ＩＤ「６」を「○○太郎」に復元し、出力部１１１に出力する。出力部１１１は、部分データが復元された検索結果を表示する。
【手続補正１１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データベースに記憶される構造化文書データに対し更新要求及び検索要求を含むトランザクション要求及びトランザクションの開始要求を入力する入力部と、
前記更新要求に従って、前記構造化文書データ中の対象データの更新処理を実行する更新部と、
前記検索要求に従って、前記構造化文書データ中の前記対象データの検索処理を実行する検索部と、
前記トランザクションの実行を複数管理し、前記トランザクションの開始要求時に一のトランザクションに対応して一のトランザクションＩＤを割り当てるトランザクション管理部と、
前記更新要求のトランザクションに従い前記データベースの更新処理のログを記憶する第１の記憶部と、
前記更新部により前記データベースが更新された場合に、前記対象データの更新がなされたことを示す更新情報を前記トランザクションＩＤに対応付けて記憶する第２の記憶部と、
前記検索要求のトランザクションに従い前記検索部により前記データベースが検索された際、前記対象データの前記更新情報が前記第２の記憶部に存在する場合に、前記対象データに対応するトランザクションＩＤを持つ前記更新処理のトランザクションの前記ログを前記第１の記憶部から読み出し、当該対象データの復元処理を行う復元部と、
を備えることを特徴とするデータベース管理システム。
【請求項２】
前記データベースは、
前記構造化文書データの構造情報を表す文書構造情報と、前記構造化文書データのテキスト内容を表すテキスト情報と、前記テキストを分割した文字の索引を表す索引情報とを含む部分データを記憶し、
前記第２の記憶部は、
前記更新部により更新された前記対象データを特定する部分データを更新情報として記憶する
ことを特徴とする、請求項１記載のデータベース管理システム。
【請求項３】
前記部分データは、識別子である部分データＩＤを有し、
前記第２の記憶部は、
前記更新部により更新された前記対象データを特定する前記部分データの前記部分データＩＤを記憶し、
前記復元部は、
前記検索の際に、検索対象となる前記対象データを特定する前記部分データの部分データＩＤが前記第２の記憶部に存在するか否かを判定する
ことを特徴とする請求項２に記載のデータベース管理システム。
【請求項４】
前記トランザクション管理部は、
前記部分データに対応付けられた前記トランザクションをコミット又はアボートした場合、前記第２の記憶部の前記部分データを消去する
ことを特徴とする請求項３の記載のデータベース管理システム。
【国際調査報告】
2011099082.tif 000011
2011099082.tif 000012
2011099082.tif 000013
2011099082.tif 000014