(57)【特許請求の範囲】
【請求項１】
データベースにおけるデータ定義、データ操作及び運用管理に関する処理を一元的に複製先に転送するデータ管理装置であって、
前記データ管理装置は、問合せ要求に応じた問合せ結果を得るための処理手順を示すアクセスプランを生成する問合せ最適化手段と、
該生成したアクセスプランを実行して問合せ結果を生成する問合せ実行手段と、
前記アクセスプランによりデータ定義、データ操作及び運用管理に関する処理に応じたログをログファイルに記録するログファイルアクセス手段と、
前記ログファイルを監視して複製を持ったデータベースに対する前記処理に応じたログを抽出するログ監視手段と、
該抽出したログの内容を他のデータ処理装置に転送するログ伝播手段とを備えたことを特徴とするデータ管理装置。
【請求項２】
データベースにおけるデータ定義、データ操作及び運用管理に関する処理を一元的に複製先に転送するデータ管理装置によるデータ管理方法であって、
前記データ管理装置が備える問合せ最適化手段が、問合せ要求に応じた問合せ結果を得るための処理手順を示すアクセスプランを生成する問合せ最適化ステップと、
前記データ管理装置が備える問合せ実行手段が、前記生成したアクセスプランを実行して問合せ結果を生成する問合せ実行ステップと、
前記データ管理装置が備えるログファイルアクセス手段が、前記アクセスプランによりデータ定義、データ操作及び運用管理に関する処理に応じたログをログファイルに記録するログファイルアクセスステップと、
前記データ管理装置が備えるログ監視手段が、前記ログファイルを監視して複製を持ったデータベースに対する前記処理に応じたログを抽出するログ監視ステップと、
前記データ管理装置が備えるログ伝播手段が、前記抽出したログの内容を複製先となる他のデータ処理装置に転送するログ伝播ステップとからなることを特徴とするデータ管理方法。
【請求項３】
請求項２に記載のデータ管理方法をコンピュータに実行させるためのプログラム。
【請求項４】
請求項３に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ管理装置、方法、プログラム、及び記録媒体、より詳細には、関係モデルに基づくデータベースシステムの複製管理に関し、該複製管理を行うデータベースシステムにおいて、データ操作と同様に、データ定義及び運用管理に関する処理の伝播を可能にするものである。
【０００２】
【従来の技術】
従来技術に関して、例えば、特開平７−３１９７４８号公報（特許第２９４８４９６号、データ処理システム内で複写データ一貫性を維持するためのシステム及び方法）には、データが複数のサーバーに複写されるシステムで、データの一貫性を維持するための発明が記載されており、複写ポリシーは、楽観的または悲観的のいずれかとすることができる。しかし、楽観的複写ポリシーは、サーバ障害またはネットワーク障害に起因する、異なるサーバ上の複製間におけるデータ矛盾を引き起こす可能性がある。この矛盾を最小にし、タイムリーな形で矛盾を検出し、解決するための複製更新の管理には、技術的な問題が存在する。したがって、複数の更新可能な複製を許容するが、タイムリーで効率的な形で衝突を識別し、楽観的複写システムの作成に関して、技術的な問題が残されている。上記公報に記載の発明は、楽観的複写を使用するデータ処理システムでの複写データ一貫性の効率的な維持という問題に対処するもので、システムサーバに、それら自体の間で、複製の矛盾を検出するための調整を行わせ、失効した複製または衝突する複製を、データに関するクライアント要求を待たずに検出するための更新プロトコルを開始させるようにしている。
【０００３】
また、特開平８−１６４４４号公報（特許第２５０７２３５号、クライアントサーバコンピュータシステム、及びそのクライアントコンピュータ、サーバコンピュータ、並びにオブジェクト更新方法）に記載の発明は、クライアントサーバシステム内のオブジェクトの一貫性を保持しつつ、クライアントとサーバとの間で非同期にてキャッシュの更新動作を行い、クライアントで処理がブロックされる事態を回避し、且つ通信回線の負荷を軽減するようにしている。さらに、全体としては、サーバと、複数のクライアントと、サーバとクライアント間を接続するネットワークとを有するクライアントサーバコンピュータシステムで、システム全体のパフォーマンスを高めるようにしている。また、処理の対象となるオブジェクトは、ＩＤ及び更新記録であるバージョン値により識別される。そして、各クライアントコンピュータが、キャッシュと、そのキャッシュ内にあるオブジェクトのバージョンを管理する管理手段と、キャッシュ内にあるオブジェクトを更新する手段と、更新されたオブジェクトのＩＤ及びその内容をサーバに転送する転送手段とを有し、管理手段が転送手段に応答して更新されたオブジェクトのバージョンを所定の予約値にした後に、他の処理を開始することを特徴とするもので、これにより、クライアントは、サーバの応答を待つことなく処理を進行させることができる。
【０００４】
従来のデータ管理システムは、処理を直列化するためにログを取る必要があり、厳密な処理の直列化を必要としないプラントシステムなどの実時間システムに対して、効率が悪かった。また、複製データの更新によるログへの書き込みと、ログ転送マネージャによるログの読み出し及び複製サーバによる値の伝播が非同期的に行われるので、データを書き換えるタイミングによってデータに不一致が生じる恐れがあるため、原本しか書き換えを許さないなどの制限を設ける必要があった。二相コミットを基本とする方式では、コミット時に複製データが存在する全てのデータベースに対する更新伝播がアプリケーションと同期的に行われるため、ネットワークの遅延により応答性が問題となり、また、障害時には、一元性の維持を諦めるか、更新を破棄するしかなかった。特開平８−１１５２４７号公報（データ管理装置およびデータ管理方法）に記載の発明は、複数のデータベースが存在する分散型データベースにおいて、複製のデータが存在する場合、データを更新したとき、このデータと関係のあるデータをも更新することにより、データの一元性を保つようにしたデータベース管理システムであり、分散型データベースにおいて、データベース間の同期に、複製管理表と更新未伝播管理表を使うものである。
【０００５】
また、特開平９−２４４９３６号公報（共用データファイルを管理するための方式及びシステム）には、移動通信ネットワークを介して接続可能な複数のコンピュータシステム上に保持される、共用データファイルのコピーを管理するデータ管理システム及び方式が記載されている。システムが共用データファイルの各コピーに関連づけられ、そのコピーに対して実行される変更の記録を保持するロギング手段と、移動通信ネットワークへの接続を介して共用データファイルの他のコピーに対して保持される記録を取り出すための取り出し手段と、取り出された記録を併合し、変更の順序を生成する併合手段と、予め定義された規則を変更順序に適用し、変更順序内での衝突を解決する衝突解決手段と、衝突解決済みの変更順序に基づき共用ファイルのコピーを変更する手段とを有するものである。
【０００６】
現在広く利用されているデータベースシステムは、データモデルとして、関係モデル（リレーショナルモデル）を採用している。関係モデルにおける、複製管理については、これまで多くの研究がなされている。しかしながら、本発明において提案する、データ定義及び運用管理に関する処理に応じたログを、データ操作のログと同様に記録する技術に関しては該当するものはない。
【０００７】
【発明が解決しようとする課題】
上述した従来技術によると、データ定義、データ操作、運用管理に関する処理を一元的にマスタからスレーブに伝播させることができないため、各処理の同期を取るための手順が複雑になるという問題点があった。
【０００８】
本発明は、上述の問題点に鑑みてなされたものであり、データ操作と同様にデータ定義、運用管理についても、その内容をログに記録することで、各スレーブにおいてデータ定義、データ操作、運用管理が適切な順序で実行されることを保証すること、を目的としてなされたものである。
【０００９】
【課題を解決するための手段】
請求項１の発明は、データベースにおけるデータ定義、データ操作及び運用管理に関する処理を一元的に複製先に転送するデータ管理装置であって、前記データ管理装置は、問合せ要求に応じた問合せ結果を得るための処理手順を示すアクセスプランを生成する問合せ最適化手段と、該生成したアクセスプランを実行して問合せ結果を生成する問合せ実行手段と、前記アクセスプランによりデータ定義、データ操作及び運用管理に関する処理に応じたログをログファイルに記録するログファイルアクセス手段と、前記ログファイルを監視して複製を持ったデータベースに対する前記処理に応じたログを抽出するログ監視手段と、該抽出したログの内容を他のデータ処理装置に転送するログ伝播手段とを備えたことを特徴としたものである。
【００１０】
請求項２の発明は、データベースにおけるデータ定義、データ操作及び運用管理に関する処理を一元的に複製先に転送するデータ管理装置によるデータ管理方法であって、前記データ管理装置が備える問合せ最適化手段が、問合せ要求に応じた問合せ結果を得るための処理手順を示すアクセスプランを生成する問合せ最適化ステップと、前記データ管理装置が備える問合せ実行手段が、前記生成したアクセスプランを実行して問合せ結果を生成する問合せ実行ステップと、前記データ管理装置が備えるログファイルアクセス手段が、前記アクセスプランによりデータ定義、データ操作及び運用管理に関する処理に応じたログをログファイルに記録するログファイルアクセスステップと、前記データ管理装置が備えるログ監視手段が、前記ログファイルを監視して複製を持ったデータベースに対する前記処理に応じたログを抽出するログ監視ステップと、前記データ管理装置が備えるログ伝播手段が、前記抽出したログの内容を複製先となる他のデータ処理装置に転送するログ伝播ステップとからなることを特徴としたものである。
【００１１】
請求項３の発明は、請求項２の発明におけるデータ管理方法をコンピュータに実行させるためのプログラムである。
【００１２】
請求項４の発明は、請求項３の発明におけるプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【００２５】
【発明の実施の形態】
データベース中のデータの構造、形式、関連、制約などについて記述したものをスキーマ（ｓｃｈｅｍａ）と呼び、そのスキーマに基づいて格納されたデータ群をインスタンス（ｉｎｓｔａｎｃｅ）と呼ぶ。商用のデータベース管理システムなどで広く採用されているリレーショナルデータモデル（関係データモデル，ｒｅｌａｔｉｏｎａｌ  ｄａｔａ  ｍｏｄｅｌ）では、データベースを表（ｔａＢｌｅ）の集まりとして表現する。表は、いくつかの列（ｃｏｌｕｍｎ）で構成される。また、表の各行はタプル（ｔｕｐｌｅ）と呼ばれる。一般に、データベースには、表以外にも、問合せを高速化したり、利用者の利用範囲を制限したりするための情報が含まれる。例えば、索引は、ある特定の列に関する条件を含む検索を高速化するための付加情報であり、アサーションは、利用者が誤ったデータを入力することを防ぐために定義される制約条件である。また、トリガは、ある値を変更したら、別の値も同時に変更することを問合せに課すための仕組みを提供する。
【００２６】
一般に、データベースに対する問合せは、データ定義とデータ操作に大別される。データ定義は、スキーマの記述内容を追加、削除、変更するための処理である。また、データ操作は、スキーマに基づくインスタンスに対する処理、つまり、タプルの挿入、削除、更新するための処理である。例えば、文書管理を目的としたデータベースがあるとき、文書の書誌情報を格納するための表を定義したり、その表に含まれる列の定義内容を変更したりする処理は、データ定義に含まれる。一方、その表に対して、書誌情報をタプルとして挿入したり、更新したりする処理は、データ操作である。また、書誌情報へのアクセス制御を行うために、利用者による書誌情報の参照、更新に関する権限をタプルとして表現するための表が定義されている場合には、その表に対するタプルの挿入などもデータ操作に含まれる。
【００２７】
従来では、複製管理において、あるサイトで実行された問合せのうちデータ操作をログに記録し、そのログの内容を他のサイトで再実行することで、複製間の更新伝播を実現している。更新伝播の元となるトランザクションを実行するサイトはマスタと呼ばれ、そのトランザクションのログを受け取り、再実行するサイトはスレーブと呼ばれる。スレーブでトランザクションが実行されるタイミングは、マスタのトランザクションと同時に実行する即時方式と、あとから実行する遅延方式がある。即時方式は、常にサイト間でデータベースの内容を一致させることができる。しかし、スレーブの数が増えるにつれ、ネットワークへの負荷が増大し、更新伝播の効率が悪化する。また、各サイトが常時稼動可能であることが条件となる。一方、遅延方式は、一時的にサイト間でデータベースの内容が一致しないことになるが、スレーブのスレーブを作るなどして、スレーブの数に対する効率の悪化を抑えることができる。また、一時的にスレーブがダウンしていたり、ネットワークから非接続になっていたりすることが許される。
【００２８】
しかしながら、こうした従来技術における更新伝播にはデータ定義が考慮されていない。そのため、あるタイミングのスキーマの初期状態をＳ０、変更後のスキーマの状態をＳ１としたとき、各サイトで以下の処理順序を保証するためのしくみが別途必要とされる。
（１）Ｓ０に関するデータ定義
（２）Ｓ０に関するデータ操作
（３）Ｓ１に関するデータ定義
（４）Ｓ１に関するデータ操作
【００２９】
更新伝播を即時方式で処理する場合には、データ定義についてもマスタからスレーブに何らかの方法で即時に更新伝播すれば、上記の順序は保証される。例えば、マスタで上記（１）、（３）の処理が完了したときに、スレーブに対してスキーマの記述内容を格納したファイル（以下、スキーマファイルという）を転送することが考えられる。ただし、こうした方法では、前述したように、スレーブの数が増えるにつれ、更新伝播の効率が悪化する。
【００３０】
一方、更新伝播を遅延方式で処理する場合には、スレーブで上記（２）、（４）が遅延実行される時点までに、それぞれ、上記（１）または（３）のスキーマファイルがスレーブに反映されていればよい。しかしながら、スレーブで遅延実行されるタイミングをマスタ側で制御することはできず、また、スレーブがダウンまたは非接続になっていることも考慮すると、スレーブにすべて反映できたことを確認するまでは、そのスキーマファイルを破棄することができない。また、その確認のためのオーバーヘッドも大きい。
【００３１】
本発明は、更新伝播の即時方式と遅延方式の両方に対応可能である。また、ログには、スキーマ変更に関する任意の処理内容を記録することが可能である。さらに、ファイルの再構成、整合性検査などの運用管理に関する処理も記録可能である。これにより、複製管理を行うデータベースシステムにおいて、データ定義、データ操作、運用管理を一元的に処理することができる。
【００３２】
一般に、データベースシステムにおけるログは、障害回復に利用される。そのため、データ操作には、ＲＥＤＯ及びＵＮＤＯするためのデータが記録される。例えば、更新であれば、タプルの更新前後の値がログに記録される。従来技術では、このようにマスタで記録されたログのうち、複製に関するものを抽出し、その部分だけをスレーブに転送する方式が考えられている。具体的には、複製のあるタプルに対するコミットされたトランザクションをＲＥＤＯするためのログを抽出する。このログをスレーブで再実行した場合、そのトランザクションが何らかの理由によって失敗することが考えられる。その場合の障害回復は、スレーブで、そのトランザクションに応じたログを記録すればよい。
【００３３】
本発明においても、データ操作については同様である。データ定義及び運用管理に関しては、そもそも、ＲＥＤＯするためのログしか記録しない。そのため、マスタにおいて、データ定義または運用管理の途中で障害が起こっても、ログだけでは障害回復を行うことはできない。ただし、マスタにおいてそうした障害が起こった場合、スレーブに変更前のデータベースが保持されているならば、それを利用してマスタのデータベースを復旧する。スレーブにおいては、マスタでの障害回復と同様にスレーブのスレーブのデータベースを使って復旧するか、あるいは、マスタから変更後のデータベースを転送することで、データベースを正常な状態にする。
【００３４】
マスタ、スレーブいずれの場合でも、データベースシステムの実装によっては、別の方法で障害回復が可能である。例えば、列の追加などの処理は、変更前のデータを残しながらファイルを再構成することで、ログを使わずにＵＮＤＯすることが可能である。しかしながら、本発明では、こうしたデータベースシステムの障害回復については、言及しない。
【００３５】
（実施例）
図１は、本発明が適用される複製管理装置の構成例を示すブロック図で、図中、１０は、複製管理を行うサーバで、該サーバ１０は、問合せ最適化手段１０ａ、アクセスプラン１０Ｂ、問合せ実行手段１０ｃ、スキーマファイルアクセス手段１０ｄ、スキーマファイル１０ｅ、ログファイルアクセス手段１０ｆ、ログファイル１０ｇ、データベースファイルアクセス手段１０ｈ、データベースファイル１０ｉ、リフレッシュ手段１０ｊ、ログ受信手段１０ｋ、ログ監視手段１０ｌ、ログ伝播手段１０ｍを有し、２０は、サーバ１０に対して問合せを行う端末で、該端末２０は、問合せ要求入力手段２０ａ、問合せ結果出力手段２０Ｂを有し、３０は、ネットワークである。サーバ１０は、ネットワーク３０を介して端末２０、他のサーバと接続されている。
【００３６】
ここで、ネットワーク３０は、一般的にはケーブルで実現され、通信プロトコルにＴＣＰ／ＩＰが利用される。ただし、ケーブルに限らず、通信プロトコルが一致すれば、無線ＬＡＮや放送波を用いたネットワークでもかまわない。図１に示すサーバ１０及び端末２０の有する各手段の概要を下記に示す。
【００３７】
・問合せ要求入力手段：問合せ要求を受け付ける。
・問合せ結果出力手段：問合せ要求に応じた問合せ結果を出力する。
問合せ最適化手段：問合せ要求に応じたアクセスプランを生成し、より実行時間の短いアクセスプランに変換する。
・アクセスプラン：問合せ要求に応じた問合せ結果を得るための処理手順。
・問合せ実行手段：問合せ最適化手段によって生成されたアクセスプランを実行し、問合せ結果を生成する。
・スキーマファイルアクセス手段：スキーマファイルに対するデータの入出力を行う。
・スキーマファイル：スキーマ情報を記録する。
・データベースファイルアクセス手段：データベースファイルに対するデータの入出力を行う。
・データベースファイル：スキーマに応じたインスタンスを記憶する。
・ログファイルアクセス手段：ログファイルに対するデータの入出力を行う。
・ログファイル：データ定義、データ操作、運用管理に関する処理に応じたログを記録する。
・ログ監視手段：ログファイルの内容を継続的に監視し、マスタからスレーブに伝播させるべき処理を抽出する。
・ログ伝播手段：ログ監視手段によって抽出されたログをマスタからスレーブに送出する。ただし、スレーブのスレーブを許す場合には、さらに、そのログを転送する。
・ログ受信手段：ログ伝播手段からログを受信する。
・リフレッシュ手段：ログ受信手段が受信したログの内容を問合せ最適化手段に入力する。
【００３８】
図２は、図１に示したサーバ１０と端末２０のハードウェア構成例を示す図で、サーバ１０は、ＣＰＵ１１、ハードディスク１２、メモリ１３を有し、端末２０は、ＣＰＵ２１、ハードディスク２２、メモリ２３、キーボード２４、ポインティングデバイス２５、ディスプレイ２６を有し、サーバ１０と端末２０はネットワーク３０を介して接続されている。
【００３９】
図１に示した端末２０の有する問合せ要求入力手段２０ａ及び問合せ結果出力手段２０Ｂは、図２に示すＣＰＵ２１、メモリ２３、ハードディスク２２を用いて実行されるソフトウェアによって実現される。ここで、問合せ要求入力手段２０ａは、利用者からの問合せ要求を図２に示す端末２０のキーボード２４、ポインティングデバイス２５から受け付ける。また、問合せ結果出力手段２０Ｂは、図２に示す端末２０のディプレイ２６に、問合せ結果を出力する。
【００４０】
図１に示したサーバ１０の有する各手段は、図２に示したサーバ１０のＣＰＵ１１、メモリ１３、ハードディスク１２を用いて実行されるソフトウェアによって実現される。ログファイル１０ｇ、データベースファイル１０ｉは、図２に示したサーバ１０のハードディスク１２に記録される。但し、メモリ１３に余裕があれば、これらのファイルの一部または全部がメモリ１３に保持される。アクセスプラン１０Ｂは、図２に示したサーバ１０のメモリ１３に記録される。
【００４１】
問合せ最適化手段１０ａは、問合せ要求入力手段２０ａから入力された問合せ、またはリフレッシュ手段１０ｊから入力された問合せに応じたアクセスプラン１０Ｂを、スキーマ情報を使って生成し、順次、探索空間に加える。このとき、スキーマ情報は、スキーマファイルアクセス手段１０ｄを介してスキーマファイル１０ｅから読み込まれる。また、問合せ最適化手段１０ａは、アクセスプラン１０Ｂのコスト（実行時間）及び並行動作性を考慮して、探索空間の中から最適なアクセスプランを選択する。このとき、アクセスプラン１０Ｂには、データ定義、データ操作、運用管理に関する処理に応じたログを、ログファイルアクセス手段１０ｆを介してログファイル１０ｇに記録するためのプログラムが含まれる。
【００４２】
問合せ実行手段１０ｃは、問合せ最適化手段１０ａが生成したアクセスプラン１０Ｂを実行する。このとき、アクセスプラン１０Ｂに応じて、データベースファイルアクセス手段１０ｈを介してデータベースファイル１０ｉにアクセスする。また、ログファイルアクセス手段１０ｆを介してログファイル１０ｇにアクセスする。問合せ実行手段１０ｃによるアクセスプラン１０Ｂの実行結果は、問合せ結果出力手段２０Ｂに渡される。ただし、問合せがリフレッシュ手段１０ｊから入力された場合には、アクセスプラン１０Ｂの実行結果は、リフレッシュ手段１０ｊに渡される。
【００４３】
ログ監視手段１０ｌは、ログファイル１０ｇを継続的に監視し、複製を持ったデータベースに対するデータ定義、データ操作、運用管理に関する処理に応じたログを抽出し、そのログをログ伝播手段１０ｍに渡す。
【００４４】
リフレッシュ手段１０ｊは、マスタのログ受信手段から受け取ったログを問合せ最適化手段１０ａに問合せとして入力する
【００４５】
ログ伝播手段１０ｍは、サーバ１０がマスタの場合に、ネットワーク３０を介してスレーブとなる他のサーバ（図示せず）にログの内容を転送する。これは、ログ監視手段１０ｌから受け取ったログをスレーブのログ受信手段に対して送出する。ただし、スレーブがダウンまたは非接続の場合は、更新伝播の方式として、即時方式が指定されている場合にはエラーとする。遅延方式が指定されている場合には、スレーブへの送出を保留する。保留されたスレーブへの送出は、指定された時間が経過した後か、スレーブのログ受信手段から要求があったときに、再試行される。
【００４６】
ログ受信手段１０ｋは、サーバ１０がスレーブの場合に、ネットワーク３０を介してマスタとなる他のサーバから、ログの内容を受け取る。  これは、マスタのログ伝播手段から受け取ったログをリフレッシュ手段１０ｊに渡す。また、自サイトがダウンまたは非接続状態から正常な状態に復帰したときには、マスタのログ伝播手段に対して、保留されたログの送出を要求する。
【００４７】
図３は、商品リストのデータベースの適用例を説明する図である。まず、商品を表す項目として、例えば、品名、販売価格、仕入れ価格、利益の４つがある場合に、これら４項目を列として、これら４つの列を組み合わせたものを表とする。表の実体（データ）は、タプルの集合であり、各タプルは、４つの列に応じた値を保持する。例えば、品名パソコンに対応したタプルは、順に、パソコン，  ２０万円，  １５万円，  ５万円となる。ここで、各値は、４つの列、つまり、品名、販売価格、仕入れ価格、利益に対応する。
【００４８】
トリガは、ある列の値の変更に応じて、別の列の値を変更する仕組みで、例えば、利益は、（販売価格―仕入れ価格）として計算できるので、この計算結果を利益の列に代入するトリガが定義されていれば、データベースの利用者が利益を入力しなくても済む。また、アサーションは、ある列が満足すべき条件を定義する。ここでは、販売価格、仕入れ価格、利益の各列の間に、（利益＝販売価格―仕入れ価格）という条件を表すアサーションを定義することで、データベースの利用者による誤入力を防ぐことが可能となる。
【００４９】
図４は、データベースにおける移動、圧縮に関する運用管理の一例を説明する図で、図中、１４は、増設用ハードディスクである。ここで、スキーマファイルとは、データベースの構成を表すデータを記録するファイルであり、例えば、前述の商品リストのデータベースでは、以下のデータが記録される。
【００５０】
・商品という名前の表を保持すること。
・商品という名前の表は、品名、販売価格、仕入れ価格、利益という名前の４つの列で構成されること。
・販売価格または仕入れ価格の列の値が変更された場合には、利益の列の値を、利益＝（販売価格―仕入れ価格）という式で再計算することを表すトリガが定義されていること。
・販売価格、仕入れ価格、利益の各列の間に、利益＝（販売価格―仕入れ価格）という条件を表すアサーションが定義されていること。
・商品という名前の表の実体であるタプル集合は、ＦＩＬＥ１という名前のデータベースファイルに格納されていること。
・品名という名前の列に対する検索を高速に処理するための索引は、ＦＩＬＥ２という名前のデータベースファイルに格納されていること。
【００５１】
スキーマファイルに基づく商品リストのデータベースの運用管理をする場合、まず、図４に示す通り、新たな商品が増えるにつれて、スキーマファイル１０ｅ、データベースファイル１０ｉが置かれたハードディスク１２の空き領域が無くなった場合、新たなハードディスク１４を増設し、それらのファイルを増設したハードディスク１４に移動する。また、商品の追加や削除が繰り返されると、データベースファイル１０ｉ内に無駄な空き領域が増え使用効率が低下したり、高速なアクセスができなくなったりする。これを解消するために、図４に示すようにデータベースファイル１０ｉの圧縮（再構成）を行う。具体的には、削除された商品に応じたタプルを格納した領域に、後から追加したタプルのデータを移動することで、データベースファイル１０ｉの末尾に空き領域を集め、その空き領域を解放し、ファイルサイズを小さくする。あるいは索引を格納しているファイルを再構成することで、高速なアクセスが可能となるように、ファイル構造を整理する。
【００５２】
図５は、データベースにおける整合性検査、バックアップに関する運用管理の一例を説明する図で、図中、４０は、磁気テープである。例えば、利用者によって誤ったデータが入力されたり、システムの異常によりデータベース中のデータが破壊されたりといったことを検出するために、整合性検査を行う。該検査は、例えば、販売価格、仕入れ価格、利益の各列の間に定義されたアサーション利益＝（販売価格―仕入れ価格）をデータベース中の各データが満足しているかを検査する。次に、ハードディスク１２の破壊等の障害に備えて、スキーマファイル１０ｅ、データベースファイル１０ｉの内容を、磁気テープ４０のような、より安定した記憶媒体にバックアップする。ハードディスク１２が壊れた場合に、増設用の別のハードディスク１４上に磁気テープ４０を用いてスキーマファイル１０ｅ、データベースファイル１０ｉの内容を復元する。
【００５３】
ここで、本発明が適用される更新伝播におけるデータ定義、データ操作、運用管理の処理順序の保証について説明する。まず、図１に示すサーバ１０が２台、ネットワーク３０を介して接続されている場合に、説明のために２台のサーバをＡ、Ｂとして、Ａがマスタ、Ｂがスレーブとする。マスタＡに蓄積されたデータベースの内容をスレーブＢに複製するには、マスタＡで実行されたデータ定義及びデータ操作を、マスタＡでの実行順序どおりに、スレーブＢのデータベースに適用する必要がある。従来では、一般に、マスタＡで実行されたデータ操作のログを記録し、そのログに記録されたデータ操作をスレーブＢで再実行することで、データベースを複製する。このとき、データ定義を複製することは考慮されておらず、事前に、スキーマファイルの内容をマスタＡとスレーブＢで同期を取ることが前提となる。
【００５４】
本発明では、スキーマファイルの変更に関わるデータ定義もログに記録することで、マスタＡで実行されたデータ定義、データ操作の両方が、スレーブＢに複製可能となる。例えば、図３に示した商品の表に、新たな列として、商品説明を追加することを考える。従来では、まず、マスタＡでその追加を行うためのデータ定義を実行し、スキーマファイルの内容が変更されるので、スレーブＢのスキーマファイルも、置き換える必要がある。しかしながら、スレーブＢでは、古いスキーマファイルに応じたデータベースに対するデータ操作による複製、つまり、マスタＡから転送されたログの再実行の途中である場合には、スキーマファイルを置き換えることができない。
【００５５】
一方、本発明では、スレーブＢのスキーマファイルを置き換えるのではなく、マスタＡのログに、新たな列である商品説明を追加したというログを記録する。このログが、スレーブＢに転送され、スレーブＢで再実行されたときに、スレーブＢのスキーマファイルが、スレーブＢのスキーマファイルアクセス手段によって変更される。ここで、商品説明が追加された商品の表に新たなタプルを追加することを考える。品名、販売価格、仕入れ価格、利益、商品説明の各列に応じた５つの値を有する、例えば、携帯電話、２万円、１万５千円、５千円、カラー液晶というタプルを追加する場合、前述のデータ定義がスレーブＢで完了していないと、スレーブＢでこのタプルを追加する処理を実行することができない。そのため、本発明では、データ定義、データ操作を同じログに一元的に記録することで、マスタＡと同じ実行順序で、スレーブＢで各処理を実行するようにする。
【００５６】
また、本発明では、運用管理に関する処理もログに記録することを特徴とし、例えば、利益＝（販売価格―仕入れ価格）という条件を表すアサーションを追加するというデータ定義を実行した後、整合性検査を行い、さらにバックアップを取ることを考える。本発明では、これらの各手順、データ定義、整合性検査、バックアップをログに記録する。その結果、ログがマスタＡからスレーブＢに転送され、スレーブＢでログが再実行されると、この手順どおりに、データ定義、整合性検査、バックアップが処理される。
【００５７】
ここで、例えば、スレーブＢにおいて、整合性検査、データ定義、バックアップの順に処理されてしまうと、利益＝（販売価格―仕入れ価格）という条件を満足しないデータを含んだまま、バックアップが処理されてしまう恐れがある。つまり、整合性検査を処理した時点では、このアサーションは定義されていないので、このアサーションによる条件を満足しないデータが含まれていても、整合性検査が成功してしまう。その結果、不整合のあるデータベースをバックアップしてしまう。しかし、本発明によれば、データ定義、整合性検査、バックアップの処理順序が保証されるので、このような状況を回避することができる。
【００５８】
以上に示したように、データベースに対するデータ定義、データ操作、運用管理に関する処理は、互いに関連しあっているため、データベースの複製を効率よく、なおかつ、安全に行うためには、複製元のサイトで各処理を一元的ログに記録し、そのログを複製先のサイトで再実行するという本発明が提案する方法が必要となる。
【００５９】
図６は、本発明が適用される複製処理における問合せ最適化の流れの一例を説明するフローチャートである。この問合せ最適化処理は、図１に示した問合せ最適化手段１０ａによって実行される。まず、端末２０から問合せ要求があると、その問合せ要求の内容をログファイル１０ｇに記録するアクセスプラン１０Ｂを生成する（ステップＳ１）。次に、問合せ要求を実行するためのアクセスプラン１０Ｂを追加し（ステップＳ２）、問合せ最適化を行う。
【００６０】
図７は、本発明が適用される複製処理における問合せ実行の流れの一例を説明するフローチャートである。この問合せ実行処理は、図１に示した問合せ実行手段１０ｃによって実行される。まず、前述のステップＳ１で生成されたアクセスプラン１０Ｂを用いて問合せ要求の内容をログファイル１０ｇに記録する（ステップＳ１１）。次に、問合せ要求を実行するためのアクセスプラン１０Ｂを処理し（ステップＳ１２）、問合せ結果を端末２０に返す。
【００６１】
図８は、本発明が適用される複製処理におけるログ監視の流れの一例を説明するフローチャートである。このログ監視処理は、図１に示したログ監視手段１０ｌによって実行される。まず、ログファイル１０ｇの中にスレーブに未送出のログがあるかどうか判断し（ステップＳ２１）、未送出ログがある場合（Ｙｅｓの場合）、スレーブに未送出のログを転送する（ステップＳ２２）。そして、ログファイル１０ｇにログが転送済みであることを記録した後に（ステップＳ２３）、ログ監視を終了するかどうか判断し（ステップＳ２４）、未送出ログがなければログ監視を終了する。
【００６２】
図９は、本発明が適用される複製処理におけるリフレッシュの流れの一例を説明するフローチャートである。このリフレッシュ処理は、図１に示したリフレッシュ手段１０ｊによって実行される。まず、マスタから受信したログがあるかどうか判断し（ステップＳ３１）、受信ログがある場合（Ｙｅｓの場合）、ログの内容を問合せ要求として問合せ最適化する（ステップＳ３２）。そして、問合せ最適化で得られたアクセスプラン１０Ｂを問合せ実行した後に（ステップＳ３３）、リフレッシュを終了するかどうか判断し（ステップＳ３４）、受信ログがなければリフレッシュを終了する。
【００６３】
【発明の効果】
本発明によると、データ定義、データ操作、運用管理に関する処理を一元的にマスタからスレーブに伝播することができるので、運用の手順を単純にし、更新伝播におけるデータ定義、データ操作、運用管理の処理順序を保証することができる。
【図面の簡単な説明】
【図１】  本発明が適用される複製管理装置の構成例を示すブロック図である。
【図２】  図１に示したサーバと端末のハードウェア構成例を示す図である。
【図３】  商品リストのデータベースの適用例を説明する図である。
【図４】  データベースにおける移動、圧縮に関する運用管理の一例を説明する図である。
【図５】  データベースにおける整合性検査、バックアップに関する運用管理の一例を説明する図である。
【図６】  本発明が適用される複製処理における問合せ最適化の流れの一例を説明するフローチャートである。
【図７】  本発明が適用される複製処理における問合せ実行の流れの一例を説明するフローチャートである。
【図８】  本発明が適用される複製処理におけるログ監視の流れの一例を説明するフローチャートである。
【図９】  本発明が適用される複製処理におけるリフレッシュの流れの一例を説明するフローチャートである。
【符号の説明】
１０…サーバ、１０ａ…問合せ最適化手段、１０Ｂ…アクセスプラン、１０ｃ…問合せ実行手段、１０ｄ…スキーマファイルアクセス手段、１０ｅ…スキーマファイル、１０ｆ…ログファイルアクセス手段、１０ｇ…ログファイル、１０ｈ…データベースファイルアクセス手段、１０ｉ…データベースファイル、１０ｊ…リフレッシュ手段、１０ｋ…ログ受信手段、１０ｌ…ログ監視手段、１０ｍ…ログ伝播手段、１１、２１…ＣＰＵ、１２、１４、２２…ハードディスク、１３、２３…メモリ、２０…端末、２０ａ…問合せ要求入力手段、２０Ｂ…問合せ結果出力手段、２４…キーボード、２５…ポインティングデバイス、２６…ディスプレイ、３０…ネットワーク、４０…磁気テープ。
【図１】
0004137391.tif 000002
【図２】
0004137391.tif 000003
【図３】
0004137391.tif 000004
【図４】
0004137391.tif 000005
【図５】
0004137391.tif 000006
【図６】
0004137391.tif 000007
【図７】
0004137391.tif 000008
【図８】
0004137391.tif 000009
【図９】
0004137391.tif 000010