(57)【要約】【課題】ユニークキーをもたないテーブルであっても他のデータベースに複製を作成することが可能なレプリケーションデータ作成プログラム、レプリケーションデータ反映プログラムおよびデータベース装置を提供すること。【解決手段】レプリケーションデータ作成機能３１は、複製対象のテーブル２１の複製を行うための初期データを作成する際に、テーブル２１各行の内容と対応付けてそれぞれの行の物理行番号を出力する。そして、レプリケーションデータ反映機能３２は、この複製元の物理行番号を行の一部に含めて初期データの取り込みを行う。これにより、ユニークキーをもたないテーブルであっても、複製元と複製先とにおいて行の対応をとることが可能になる。【選択図】        図１
2007264814.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータベースに含まれるテーブルを第２のデータベースに複製するためのデータを作成するレプリケーションデータ作成プログラムであって、
前記第１のデータベースに含まれる前記テーブルの各行の内容に当該の行の物理行番号を付加して出力することにより、前記第２のデータベースに前記テーブルを複製するための初期データを作成する初期データ作成手順と、
前記第１のデータベースに含まれる前記テーブルが更新された場合に、更新内容を示す情報と更新された行の物理行番号を対応付けて出力することにより、前記第１のデータベースにおいて前記テーブルに対して行われた更新を前記第２のデータベースへ反映させるための差分データを作成する差分データ作成手順と
をコンピュータに実行させることを特徴とするレプリケーションデータ作成プログラム。
【請求項２】
前記第１のデータベースに含まれる前記テーブルの各行の物理行番号が再編成によって変更された場合に、物理行番号が変更された行の再編成前の物理行番号と再編成後の物理行番号を対応付けた変換表を作成する変換表作成手順をさらにコンピュータに実行させ、
前記差分データ作成手順は、前記第１のデータベースに含まれる前記テーブルが更新された場合に、前記変換表を参照することにより、更新された行の物理行番号を再編成前の物理行番号へ変換して出力することを特徴とする請求項１に記載のレプリケーションデータ作成プログラム。
【請求項３】
第１のデータベースに含まれるテーブルを第２のデータベースに複製するためのデータを前記第２のデータベースへ反映させるレプリケーションデータ反映プログラムであって、
前記データが前記第２のデータベースに新規にテーブルを作成するための初期データである場合に、前記第１のデータベースに含まれるテーブルが有する列に加えて、該テーブルにおける各行の物理行番号を設定するための列を設けて前記第２のデータベースにテーブルを作成し、前記データにおいて行の内容を示す情報と対応付けて記録されている物理行番号を、該情報を追加する行の前記列へ設定する初期データ反映手順と、
前記データが前記第２のデータベースに存在するテーブルを更新するための差分データである場合に、前記データにおいて更新内容を示す情報と対応付けて記録されている物理行番号を前記列と照合することにより更新対象の行を特定して更新処理を行う差分データ反映手順と
をコンピュータに実行させることを特徴とするレプリケーションデータ反映プログラム。
【請求項４】
自装置に含まれるテーブルを他のデータベース装置に複製するデータベース装置であって、
前記テーブルの各行の内容に当該の行の物理行番号を付加して出力することにより、前記テーブルを複製するための初期データを作成する初期データ作成手段と、
前記テーブルが更新された場合に、更新内容を示す情報と更新された行の物理行番号を対応付けて出力することにより、前記テーブルに対して行われた更新を複製先へ反映させるための差分データを作成する差分データ作成手段と
を備えたことを特徴とするデータベース装置。
【請求項５】
所定のデータを取り込むことにより他のデータベース装置に含まれるテーブルを自装置に複製するデータベース装置であって、
前記データが自装置に新規にテーブルを作成するための初期データである場合に、前記他のデータベース装置に含まれるテーブルが有する列に加えて、該テーブルにおける各行
の物理行番号を設定するための列を設けて自装置にテーブルを作成し、前記データにおいて行の内容を示す情報と対応付けて記録されている物理行番号を、該情報を追加する行の前記列へ設定する初期データ反映手段と、
前記データが自装置に存在するテーブルを更新するための差分データである場合に、前記データにおいて更新内容を示す情報と対応付けて記録されている物理行番号を前記列と照合することにより更新対象の行を特定して更新処理を行う差分データ反映手段と
を備えたことを特徴とするデータベース装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、テーブルの複製を作成するためのレプリケーションデータ作成プログラム、レプリケーションデータ反映プログラムおよびデータベース装置に関し、特に、ユニークキーをもたないテーブルであっても他のデータベースに複製を作成することが可能なレプリケーションデータ作成プログラム、レプリケーションデータ反映プログラムおよびデータベース装置に関する。
【背景技術】
【０００２】
従来より、更新用のデータベースと別に、これと同一の内容をもった参照用のデータベースを設け、更新用のデータベースの更新内容を定期的、もしくは、リアルタイムに参照用のデータベースへ反映させる技術が知られている。このようなデータベースの複製を作成する技術は、レプリケーション技術と呼ばれ、データベースの負荷分散を実現するための有効策の一つとなっている（例えば、特許文献１）。
【０００３】
【特許文献１】特開２００２−１３２５６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１にて開示されている技術を含め、従来のレプリケーション技術においては、複製元と複製先のデータの対応をとるため、複製対象のテーブルにプライマリキー等のユニークキーが設定されている必要があった。
【０００５】
このため、ユニークキーをもたない状態で運用されているテーブルを他のデータベースに複製する必要が生じた場合、そのテーブルに新たにユニークキーを追加しなければならなかった。そして、この場合、ユニークキーの追加にともなって、関連する業務アプリケーションの処理ロジックの変更を行わなければならないことがあった。
【０００６】
業務アプリケーションの処理ロジックを変更した場合、テストに多大な工数が必要とされるばかりでなく、テスト漏れが生じて運用時に不具合が起こった場合には莫大な損失が発生し得る。かかる背景から、ユニークキーをもたないテーブルについても複製を作成することが可能な技術の実現が強く要望されていた。
【０００７】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、ユニークキーをもたないテーブルであっても他のデータベースに複製を作成することが可能なレプリケーションデータ作成プログラム、レプリケーションデータ反映プログラムおよびデータベース装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、本発明の一つの態様では、第１のデータベースに含まれるテーブルを第２のデータベースに複製するためのデータを作成するレプリケーションデータ作成プログラムであって、前記第１のデータベースに含まれる前記テーブルの各行の内容に当該の行の物理行番号を付加して出力することにより、前記第２のデータベースに前記テーブルを複製するための初期データを作成する初期データ作成手順と、前記第１のデータベースに含まれる前記テーブルが更新された場合に、更新内容を示す情報と更新された行の物理行番号を対応付けて出力することにより、前記第１のデータベースにおいて前記テーブルに対して行われた更新を前記第２のデータベースへ反映させ
るための差分データを作成する差分データ作成手順とをコンピュータに実行させることを特徴とする。
【０００９】
また、本発明の他の態様では、自装置に含まれるテーブルを他のデータベース装置に複製するデータベース装置であって、前記テーブルの各行の内容に当該の行の物理行番号を付加して出力することにより、前記テーブルを複製するための初期データを作成する初期データ作成手段と、前記テーブルが更新された場合に、更新内容を示す情報と更新された行の物理行番号を対応付けて出力することにより、前記テーブルに対して行われた更新を複製先へ反映させるための差分データを作成する差分データ作成手段とを備えたことを特徴とする。
【００１０】
これらの発明の態様によれば、複製先のデータベースに対して送信する初期データと差分データに、どのテーブルにも存在し、当該のテーブルにおいてユニークである物理行番号を付加するように構成したので、ユニークキーをもたないテーブルを複製した場合であっても、複製元のデータベースで行われた更新を複製先のデータベースにおいて正しく反映させることができる。
【００１１】
また、本発明の他の態様では、上記の発明の態様において、前記第１のデータベースに含まれる前記テーブルの各行の物理行番号が再編成によって変更された場合に、物理行番号が変更された行の再編成前の物理行番号と再編成後の物理行番号を対応付けた変換表を作成する変換表作成手順をさらにコンピュータに実行させ、前記差分データ作成手順は、前記第１のデータベースに含まれる前記テーブルが更新された場合に、前記変換表を参照することにより、更新された行の物理行番号を再編成前の物理行番号へ変換して出力することを特徴とする。
【００１２】
この発明の態様によれば、複製元のテーブルに対して再編成を実行する場合に、再編成前の物理行番号と再編成後の物理行番号とを対応付けて記録した変換表を作成し、差分データを作成する際に、この変換表を利用して、更新があった行の物理行番号を再編成前の物理行番号へ変換するように構成したので、再編成により複製元のテーブルの各行の物理行番号が変更された場合であっても、複製元のデータベースで行われた更新を複製先のデータベースにおいて正しく反映させることができる。
【００１３】
また、本発明の他の態様では、第１のデータベースに含まれるテーブルを第２のデータベースに複製するためのデータを前記第２のデータベースへ反映させるレプリケーションデータ反映プログラムであって、前記データが前記第２のデータベースに新規にテーブルを作成するための初期データである場合に、前記第１のデータベースに含まれるテーブルが有する列に加えて、該テーブルにおける各行の物理行番号を設定するための列を設けて前記第２のデータベースにテーブルを作成し、前記データにおいて行の内容を示す情報と対応付けて記録されている物理行番号を、該情報を追加する行の前記列へ設定する初期データ反映手順と、前記データが前記第２のデータベースに存在するテーブルを更新するための差分データである場合に、前記データにおいて更新内容を示す情報と対応付けて記録されている物理行番号を前記列と照合することにより更新対象の行を特定して更新処理を行う差分データ反映手順とをコンピュータに実行させることを特徴とする。
【００１４】
また、本発明の他の態様では、所定のデータを取り込むことにより他のデータベース装置に含まれるテーブルを自装置に複製するデータベース装置であって、前記データが自装置に新規にテーブルを作成するための初期データである場合に、前記他のデータベース装置に含まれるテーブルが有する列に加えて、該テーブルにおける各行の物理行番号を設定するための列を設けて自装置にテーブルを作成し、前記データにおいて行の内容を示す情報と対応付けて記録されている物理行番号を、該情報を追加する行の前記列へ設定する初
期データ反映手段と、前記データが自装置に存在するテーブルを更新するための差分データである場合に、前記データにおいて更新内容を示す情報と対応付けて記録されている物理行番号を前記列と照合することにより更新対象の行を特定して更新処理を行う差分データ反映手段とを備えたことを特徴とする。
【００１５】
これらの発明の態様によれば、初期データにおいて複製対象のテーブルの各行の情報と関連付けられて記録されている当該の行の物理行番号を、行の一部に含めて複製先のテーブルを作成し、この物理行番号と、差分データにおいて更新内容と関連付けられて記録されている物理行番号とを照合して更新内容を反映させる行を特定するように構成したので、ユニークキーをもたないテーブルを複製した場合であっても、複製元のデータベースで行われた更新を複製先のデータベースにおいて正しく反映させることができる。
【発明の効果】
【００１６】
本発明の一つの態様によれば、複製先のデータベースに対して送信する初期データと差分データに、どのテーブルにも存在し、当該のテーブルにおいてユニークである物理行番号を付加するように構成したので、ユニークキーをもたないテーブルを複製した場合であっても、複製元のデータベースで行われた更新を複製先のデータベースにおいて正しく反映させることができるという効果を奏する。
【００１７】
また、本発明の他の態様によれば、複製元のテーブルに対して再編成を実行する場合に、再編成前の物理行番号と再編成後の物理行番号とを対応付けて記録した変換表を作成し、差分データを作成する際に、この変換表を利用して、更新があった行の物理行番号を再編成前の物理行番号へ変換するように構成したので、再編成により複製元のテーブルの各行の物理行番号が変更された場合であっても、複製元のデータベースで行われた更新を複製先のデータベースにおいて正しく反映させることができるという効果を奏する。
【００１８】
また、本発明の他の態様によれば、初期データにおいて複製対象のテーブルの各行の情報と関連付けられて記録されている当該の行の物理行番号を、行の一部に含めて複製先のテーブルを作成し、この物理行番号と、差分データにおいて更新内容と関連付けられて記録されている物理行番号とを照合して更新内容を反映させる行を特定するように構成したので、ユニークキーをもたないテーブルを複製した場合であっても、複製元のデータベースで行われた更新を複製先のデータベースにおいて正しく反映させることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１９】
以下に添付図面を参照して、本発明に係るレプリケーションデータ作成プログラム、レプリケーションデータ反映プログラムおよびデータベース装置の好適な実施の形態を詳細に説明する。
【実施例】
【００２０】
まず、本実施例に係るデータベースレプリケーション方法の概要について説明する。図１は、本実施例に係るデータベースレプリケーション方法の概要を説明するための説明図である。
【００２１】
同図は、データベース装置１００のデータベース１１に格納されたテーブル２１を複製し、データベース装置２００のデータベース１２にテーブル２２を作成する場合の例を示している。テーブル２１は、ユニークキーをもたないテーブルであるものとする。
【００２２】
テーブルの複製は、データベース装置１００が備えるレプリケーションデータ作成機能３１と、データベース装置２００が備えるレプリケーションデータ反映機能３２との間で
、レプリケーションデータ４０を受け渡すことで実現される。なお、レプリケーションデータ４０の受け渡しを行う方式については、本発明では特に限定しない。
【００２３】
レプリケーションデータ作成機能３１は、最初に、テーブル２１の複製を作成するための初期データをレプリケーションデータ４０として作成する。そして、レプリケーションデータ反映機能３２は、レプリケーションデータ４０を取り込んでテーブル２２を作成する。
【００２４】
このとき、テーブル２１とテーブル２２の行の対応をとることを可能にするため、レプリケーションデータ作成機能３１は、テーブル２１の各行の内容にそれぞれの行の物理行番号を付加してレプリケーションデータ４０を作成する。
【００２５】
物理行番号は、ＰＧＣＳ（Program Current Status）やＲＯＷＩＤとも呼ばれ、行の物理位置を示す番号である。この物理行番号は、データベース装置１００および２００の内部処理で使われる番号であり、いずれのテーブルにも存在し、テーブル内でユニークであることが保障されている。
【００２６】
そして、レプリケーションデータ反映機能３２は、行ごとに物理行番号を付加されたレプリケーションデータ４０を受け取ると、付加された物理行番号を行の一部に含めてテーブル２２を作成する。具体的には、テーブル２２に物理行番号を格納するための列を追加し、そこに各行に付加されていた物理行番号を設定する。
【００２７】
このように、レプリケーション元のテーブルの各行の内容に物理行番号を付加してレプリケーション用の初期データを作成し、この物理行番号をレプリケーション先のテーブルの行の一部に含めさせることにより、レプリケーション元のテーブルとレプリケーション先のテーブルにおいて行の対応をとることが可能になる。
【００２８】
図１の例では、「Ｃ」という値をもつ行は、テーブル２１においては、「ＲＯＷ２」という物理行番号が示す位置に格納され、テーブル２２においては、「ＲＯＷ１」という物理行番号が示す位置に格納されている。このように、同一のデータであっても、レプリケーション元のテーブルとレプリケーション先のテーブルにおいて同一の物理行番号をもつとは限らないが、テーブル２２において「Ｃ」という値をもつ行には、追加列に「ＲＯＷ２」というレプリケーション元での物理行番号が設定されているため、これを手掛かりにして行の対応をとることができる。
【００２９】
こうして、複製のための初期データの作成と取り込みが完了した後は、レプリケーションデータ作成機能３１は、テーブル２１に対して行われた更新内容を反映するための差分データをレプリケーションデータ４０として作成する。そして、レプリケーションデータ反映機能３２は、レプリケーションデータ４０を取り込んでテーブル２２の更新を行う。
【００３０】
レプリケーション元のテーブル２１に対して行われた更新内容をレプリケーション先のテーブル２２へ反映するための動作について図２〜８を参照しながら具体的に説明する。
【００３１】
図２は、レプリケーション元における行の変更をレプリケーション先へ反映させるための動作を示す図である。同図は、レプリケーション元のテーブル２１において、「Ｃ」という値をもつ行が変更された結果、同行が「Ｋ」という値をもつ行となった場合に、この更新内容をレプリケーション先のテーブル２２へ反映させるための動作を示している。
【００３２】
レプリケーションデータ作成機能３１は、値が変更された行の物理行番号である「ＲＯＷ２」と、値「Ｃ」が値「Ｋ」へ変更された旨を表す情報とを対応付けてレプリケーショ
ンデータ４０へ出力する。そして、レプリケーションデータ反映機能３２は、このレプリケーションデータ４０を受け取ると、テーブル２２においてレプリケーション元の物理行番号を示す列の値が「ＲＯＷ２」である行の値を「Ｃ」から「Ｋ」に変更する。
【００３３】
このように、レプリケーション元のテーブルにおいて変更があった行の物理行番号を変更内容とともに差分データに含め、この物理行番号を手掛かりにしてレプリケーション先のテーブルにおける変更対象の行を特定することにより、レプリケーション元における行の変更をレプリケーション先へ正しく反映することができる。
【００３４】
図３は、レプリケーション元における行の削除をレプリケーション先へ反映させるための動作を示す図である。同図は、レプリケーション元のテーブル２１において、「Ｄ」という値をもつ行が削除された場合に、この更新内容をレプリケーション先のテーブル２２へ反映させるための動作を示している。
【００３５】
レプリケーションデータ作成機能３１は、削除された行の物理行番号である「ＲＯＷ３」と、当該の行が削除された旨を表す情報とを対応付けてレプリケーションデータ４０へ出力する。そして、レプリケーションデータ反映機能３２は、このレプリケーションデータ４０を受け取ると、テーブル２２においてレプリケーション元の物理行番号を示す列の値が「ＲＯＷ３」である行を削除する。
【００３６】
このように、レプリケーション元のテーブルにおいて削除があった行の物理行番号を削除された旨を示す情報とともに差分データに含め、この物理行番号を手掛かりにしてレプリケーション先のテーブルにおける削除対象の行を特定することにより、レプリケーション元における行の削除をレプリケーション先へ正しく反映することができる。
【００３７】
図４は、レプリケーション元における行の追加をレプリケーション先へ反映させるための動作を示す図である。同図は、レプリケーション元のテーブル２１において、「Ｆ」という値をもつ行が追加された場合に、この更新内容をレプリケーション先のテーブル２２へ反映させるための動作を示している。
【００３８】
レプリケーションデータ作成機能３１は、追加された行の物理行番号である「ＲＯＷ５」と、値「Ｆ」をもつ行が追加された旨を表す情報とを対応付けてレプリケーションデータ４０へ出力する。そして、レプリケーションデータ反映機能３２は、このレプリケーションデータ４０を受け取ると、値「Ｆ」をもつ行を追加する。このとき、当該の行のレプリケーション元の物理行番号を示す列の値として「ＲＯＷ５」を設定する。
【００３９】
このように、レプリケーション元のテーブルにおいて追加された行の物理行番号を追加内容とともに差分データに含め、レプリケーション先のテーブルにおいて、レプリケーション元の物理行番号を行の一部に含めて追加処理を行うことにより、レプリケーション元のテーブルにおいて当該の行の変更や削除があった場合に、その更新内容をレプリケーション先へ正しく反映することができる。
【００４０】
ところで、データベース装置においては、入出力処理の高速化のため、再編成と呼ばれる処理が行われることがある。
【００４１】
例えば、図４におけるテーブル２１は、物理行番号「ＲＯＷ１」が示す行と物理行番号「ＲＯＷ３」が示す行が、削除により未使用の状態となっている。テーブルに対して行の追加や削除を繰り返し行うと、このようにテーブルの領域の中に使用されない部分ができてしまう。
【００４２】
このような未使用部分が多数できると、例えば、テーブルの全行の順次読取り等を実行する際に、未使用部分を含めて読取りを行うことになるため、読取り動作を行う回数が増加し、処理時間が長くなってしまう。
【００４３】
再編成は、テーブルのエクスポートとインポート等を行うこと等により、テーブルの領域の中の未使用部分をなくし、入出力性能を向上させる処理である。ところが、この再構成を実行した場合、テーブルの各行の物理的な位置が変更され、物理行番号が変わってしまう。
【００４４】
したがって、物理行番号をもちいてレプリケーション先との行の対応をとっているテーブルに対して再編成を実行すると、そのままでは、行の対応がとれなくなってしまう。そこで、本実施例に係るデータベースレプリケーション方法では、レプリケーション元のテーブルに対して再編成を実行する場合、再編成前後の物理行番号を対応付けて記録した変換表を作成し、この変換表を利用してレプリケーション元のテーブルとレプリケーション先のテーブルの行の対応をとる。
【００４５】
図５は、レプリケーション元にてテーブルの再編成が行われた場合の動作を示す図である。同図は、テーブル２１が図４に示した状態であるときに再編成を実行した場合の動作を示している。
【００４６】
再編成の結果、物理行番号「ＲＯＷ０」が示す位置にあった行は、そのまま、物理行番号「ＲＯＷ０」が示す位置に残っている。そして、物理行番号「ＲＯＷ２」、「ＲＯＷ４」、「ＲＯＷ５」が示す位置にあった行は、それぞれ、物理行番号「ＲＯＷ１」、「ＲＯＷ２」、「ＲＯＷ３」が示す位置へ移動している。
【００４７】
レプリケーションデータ作成機能３１は、再編成により物理行番号が変更になった行の再編生前後の物理行番号を変換表５０へ出力する。この例の場合、再編成後の物理行番号が「ＲＯＷ１」で再編成前の物理行番号が「ＲＯＷ２」のデータと、再編成後の物理行番号が「ＲＯＷ２」で再編成前の物理行番号が「ＲＯＷ４」のデータと、再編成後の物理行番号が「ＲＯＷ３」で再編成前の物理行番号が「ＲＯＷ５」のデータという３件のデータが変換表５０へ出力される。
【００４８】
図６は、レプリケーション元にてテーブルの再編成が実行された後に、レプリケーション元における行の変更をレプリケーション先へ反映させるための動作を示す図である。同図は、レプリケーション元のテーブル２１において、「Ｅ」という値をもつ行が変更された結果、同行が「Ｍ」という値をもつ行となった場合に、この更新内容をレプリケーション先のテーブル２２へ反映させるための動作を示している。
【００４９】
レプリケーションデータ作成機能３１は、値が変更された行の物理行番号である「ＲＯＷ２」を再編成後の物理行番号として保持しているデータが変換表５０に存在しているかを確認する。該当データが存在しないときは、レプリケーションデータ作成機能３１は、図２に示した場合と同様に、値が変更された行の物理行番号である「ＲＯＷ２」を変更内容と対応付けてレプリケーションデータ４０へ出力する。
【００５０】
この例の場合、再編成後の物理行番号が「ＲＯＷ２」で再編成前の物理行番号が「ＲＯＷ４」のデータが変換表５０に存在しているので、レプリケーションデータ作成機能３１は、値が変更された行の再編成前の物理行番号である「ＲＯＷ４」と、値「Ｅ」が値「Ｍ」へ変更された旨を表す情報とを対応付けてレプリケーションデータ４０へ出力する。そして、レプリケーションデータ反映機能３２は、このレプリケーションデータ４０を受け取ると、テーブル２２においてレプリケーション元の物理行番号を示す列の値が「ＲＯＷ
４」である行の値を「Ｅ」から「Ｍ」に変更する。
【００５１】
このように、レプリケーション元のテーブルにおいて変更があった行の物理行番号を、変換表を参照して再編成前の物理行番号へ変換し、変更内容とともに差分データに含め、この物理行番号を手掛かりにしてレプリケーション先のテーブルにおける変更対象の行を特定することにより、レプリケーション元において再編成が実行された後においても、レプリケーション元における行の変更をレプリケーション先へ正しく反映することができる。
【００５２】
図７は、レプリケーション元にてテーブルの再編成が実行された後に、レプリケーション元における行の削除をレプリケーション先へ反映させるための動作を示す図である。同図は、レプリケーション元のテーブル２１において、「Ｋ」という値をもつ行が削除された場合に、この更新内容をレプリケーション先のテーブル２２へ反映させるための動作を示している。
【００５３】
レプリケーションデータ作成機能３１は、削除された行の物理行番号である「ＲＯＷ１」を再編成後の物理行番号として保持しているデータが変換表５０に存在しているかを確認する。該当データが存在しないときは、レプリケーションデータ作成機能３１は、図３に示した場合と同様に、削除された行の物理行番号である「ＲＯＷ１」を当該の行が削除された旨を表す情報と対応付けてレプリケーションデータ４０へ出力する。
【００５４】
この例の場合、再編成後の物理行番号が「ＲＯＷ１」で再編成前の物理行番号が「ＲＯＷ２」のデータが変換表５０に存在しているので、レプリケーションデータ作成機能３１は、削除された行の再編成前の物理行番号である「ＲＯＷ２」と、当該の行が削除された旨を表す情報とを対応付けてレプリケーションデータ４０へ出力する。そして、レプリケーションデータ反映機能３２は、このレプリケーションデータ４０を受け取ると、テーブル２２においてレプリケーション元の物理行番号を示す列の値が「ＲＯＷ２」である行を削除する。
【００５５】
また、レプリケーション元において物理行番号が「ＲＯＷ１」である行が、レプリケーション元とレプリケーション先の両方で削除され、行の対応をとる必要がなくなったことから、レプリケーションデータ作成機能３１は、変換表５０から再編成後の物理行番号が「ＲＯＷ１」であるデータを削除する。
【００５６】
このように、レプリケーション元のテーブルにおいて削除があった行の物理行番号を、変換表を参照して再編成前の物理行番号へ変換し、削除された旨を示す情報とともに差分データに含め、この物理行番号を手掛かりにしてレプリケーション先のテーブルにおける削除対象の行を特定することにより、レプリケーション元において再編成が実行された後においても、レプリケーション元における行の削除をレプリケーション先へ正しく反映することができる。
【００５７】
図８は、レプリケーション元にてテーブルの再編成が実行された後に、レプリケーション元における行の追加をレプリケーション先へ反映させるための動作を示す図である。同図は、レプリケーション元のテーブル２１において、「Ｇ」という値をもつ行が追加された場合に、この更新内容をレプリケーション先のテーブル２２へ反映させるための動作を示している。
【００５８】
レプリケーション元のテーブル２１において、「Ｇ」という値をもつ行は、物理行番号「ＲＯＷ４」が示す位置に追加されている。ここで、変換表５０を参照すると、再編成前の物理行番号が「ＲＯＷ４」であるデータが存在していることが分かる。
【００５９】
これは、レプリケーション先のテーブル２２において、レプリケーション元の物理行番号を示す列に「ＲＯＷ４」が設定されている行が存在していること示しており、このまま行の追加をテーブル２２へ反映させると、レプリケーション元の物理行番号を示す列に「ＲＯＷ４」という値をもつ行が２つできてしまい、行の対応が崩れることになる。
【００６０】
そこで、レプリケーションデータ作成機能３１は、テーブル２２において、レプリケーション元の物理行番号を示す列に「ＲＯＷ４」が設定されている行が、変換表５０を介さずにテーブル２１の行と対応をとることができるようにするための措置を行う。
【００６１】
具体的には、まず、変換表５０を参照すると、テーブル２１において、再編成前の物理行番号が「ＲＯＷ４」であった行は、現在は、「ＲＯＷ２」という物理行番号になっていることが分かるので、テーブル２２において、レプリケーション元の物理行番号を示す列に設定されている「ＲＯＷ４」を「ＲＯＷ２」へ変更するための情報をレプリケーションデータ４０へ出力する。
【００６２】
そして、不要となる変換表５０のデータ、すなわち、再編成前の物理行番号が「ＲＯＷ４」であるデータを削除する。こうして、行の対応が崩れることを防止するための措置を行った後、レプリケーションデータ作成機能３１は、追加された行の物理行番号である「ＲＯＷ４」と、値「Ｇ」をもつ行が追加された旨を表す情報とを対応付けてレプリケーションデータ４０へ出力する。
【００６３】
そして、レプリケーションデータ反映機能３２は、このレプリケーションデータ４０を受け取ると、テーブル２２において、レプリケーション元の物理行番号を示す列に設定されている「ＲＯＷ４」を「ＲＯＷ２」へ変更する。そして、値「Ｇ」をもつ行を追加し、追加された行のレプリケーション元の物理行番号を示す列の値として「ＲＯＷ４」を設定する。
【００６４】
このように、レプリケーション元のテーブルにおいて追加された行を反映するための情報を差分データへ出力する前に、行の対応が崩れることを防止するための措置を行うことにより、レプリケーション元において再編成が実行された後においても、レプリケーション元における行の追加をレプリケーション先へ適切に反映することができる。
【００６５】
次に、図１に示したデータベース装置１００およびデータベース装置２００の構成について説明する。図９は、レプリケーション元のデータベース装置１００の構成を示す機能ブロック図である。
【００６６】
同図に示すように、データベース装置１００は、トランザクション制御部１１０と、再編成実行部１２０と、レプリケーションデータ作成部１３０と、記憶部１４０とを有する。トランザクション制御部１１０は、各種テーブルの更新処理を制御する制御部であり、再編成実行部１２０は、再編成を実行する処理部である。
【００６７】
レプリケーションデータ作成部１３０は、図１に示したレプリケーションデータ作成機能３１を実現する処理部であり、初期データ作成部１３１と、差分データ作成部１３２と、変換表作成部１３３とを有する。
【００６８】
初期データ作成部１３１は、テーブルの複製を作成するための初期データとしてレプリケーションデータ４０を作成する処理部である。初期データ作成部１３１は、複製対象のテーブルの各行に物理行番号を付加したデータを出力する。
【００６９】
差分データ作成部１３２は、トランザクション制御部１１０により実行された更新処理の結果を複製先へ反映させるための差分データとしてレプリケーションデータ４０を作成する処理部である。差分データを作成する処理の詳細については後述する。
【００７０】
変換表作成部１３３は、複製対象のテーブルに対して再編成実行部１２０が再編成処理を実行する場合に、再編成実行部１２０と連動してそのテーブルに対応する変換表５０を作成する処理部である。
【００７１】
記憶部１４０は、各種情報を記憶する記憶部であり、データベース領域１４１と、レプリケーションデータ格納領域１４２と、変換表領域１４３とを有する。データベース領域１４１は、各種テーブルやそのインデックス等が格納される領域である。
【００７２】
レプリケーションデータ格納領域１４２は、初期データ作成部１３１や差分データ作成部１３２により作成されたレプリケーションデータ４０が格納される領域である。そして、変換表領域１４３は、変換表管理部１３３により作成された変換表５０が格納される領域である。
【００７３】
図１０は、レプリケーション先のデータベース装置２００の構成を示す機能ブロック図である。同図に示すように、データベース装置２００は、トランザクション制御部２１０と、再編成実行部２２０と、レプリケーションデータ反映部２３０と、記憶部２４０とを有する。トランザクション制御部２１０および再編成実行部２２０は、それぞれ、トランザクション制御部１１０および再編成実行部１２０と同様の処理部である。
【００７４】
レプリケーションデータ反映部２３０は、図１に示したレプリケーションデータ反映機能３２を実現する処理部であり、初期データ反映部２３１と、差分データ反映部２３２とを有する。
【００７５】
初期データ反映部２３１は、初期データとして作成されたレプリケーションデータ４０を読み込んでテーブルを作成する処理部である。初期データ反映部２３１は、テーブルを作成する際にレプリケーション元の物理行番号を格納するための列を追加し、レプリケーションデータ４０において各行のデータと対応付けて記録されている物理行番号をこの列に設定する。
【００７６】
差分データ反映部２３２は、差分データとして作成されたレプリケーションデータ４０を読み込んでテーブルを更新する処理部である。差分データ反映部２３２は、初期データ反映部２３１によってテーブルに追加された列に格納されているレプリケーション元の物理行番号を基準として更新対象の行を特定する。
【００７７】
記憶部２４０は、各種情報を記憶する記憶部であり、データベース領域２４１と、レプリケーションデータ格納領域２４２とを有する。データベース領域２４１は、各種テーブルやそのインデックス等が格納される領域である。レプリケーションデータ格納領域２４２は、データベース装置１００から取得されたレプリケーションデータ４０が格納される領域である。
【００７８】
次に、図９に示したレプリケーションデータ作成部１３０の処理手順と、図１０に示したレプリケーションデータ反映部２３０の処理手順について説明する。図１１は、レプリケーションデータ作成部１３０の処理手順を示すフローチャートである。同図は、差分データを作成する処理の処理手順を示している。
【００７９】
同図に示すように、差分データ作成部１３２は、レプリケーション対象のテーブルの更
新を検出すると（ステップＳ１０１）、更新された行の物理行番号を取得する（ステップＳ１０２）。そして、当該のテーブルに対応する変換表５０を参照し、再編生後の物理行番号がステップＳ１０２で取得した物理行番号と一致するデータを検索する（ステップＳ１０３）。
【００８０】
ここで、当該のテーブルに対応する変換表５０が未作成の場合、もしくは、該当データが存在しない場合は（ステップＳ１０４否定）、ステップＳ１０２で取得した物理行番号と更新内容を関連付けてレプリケーションデータ４０に追加して処理を終了する（ステップＳ１１１）。
【００８１】
一方、該当データが存在した場合は（ステップＳ１０４肯定）、検出した更新の内容が行の内容の変更であるか、行の削除であるか、あるいは、行の追加であるかによって処理を変更する。
【００８２】
検出した更新が、行の内容の変更であった場合は（ステップＳ１０５変更）、ステップＳ１０３で変換表５０から取得したデータにおける再編生前の物理行番号を更新があった行の物理行番号とし（ステップＳ１０６）、この物理行番号と更新内容を関連付けてレプリケーションデータ４０に追加して処理を終了する（ステップＳ１１１）。
【００８３】
検出した更新が、行の削除であった場合は（ステップＳ１０５削除）、ステップＳ１０３で変換表５０から取得したデータにおける再編生前の物理行番号を削除された行の物理行番号とし（ステップＳ１０７）、変換表５０からこの行を削除する（ステップＳ１０８）。そして、物理行番号と更新内容を関連付けてレプリケーションデータ４０に追加して処理を終了する（ステップＳ１１１）。
【００８４】
検出した更新が、行の追加であった場合は（ステップＳ１０５追加）、レプリケーション先のテーブルにおいてレプリケーション元の物理行番号として保持されている値を、ステップＳ１０３で変換表５０から取得したデータにおける再編生前の物理行番号から再編生後の物理行番号へ変更するためのデータをレプリケーションデータ４０に追加し（ステップＳ１０９）、変換表５０からこの行を削除する（ステップＳ１１０）。そして、追加された行の物理行番号と更新内容を関連付けてレプリケーションデータ４０に追加して処理を終了する（ステップＳ１１１）。
【００８５】
図１２は、レプリケーションデータ反映部２３０の処理手順を示すフローチャートである。同図は、レプリケーション元から取得したレプリケーションデータ４０を反映させる処理の手順を示している。
【００８６】
同図に示すように、レプリケーションデータ４０が初期データであった場合は（ステップＳ２０１肯定）、初期データ反映部２３１が、レプリケーション元の物理行番号を設定するための列を追加してテーブルを作成し（ステップＳ２０２）、作成したテーブルに初期データ中のデータを登録する（ステップＳ２０３）。
【００８７】
一方、レプリケーションデータ４０が差分データであった場合は（ステップＳ２０１否定）、差分データ反映部２３２が、差分データに含まれるレプリケーション元の物理行番号を基準として行を特定し、差分データの内容をテーブルへ反映する（ステップＳ２０４）。
【００８８】
上記実施例で説明してきたレプリケーションデータ作成部１３０およびレプリケーションデータ反映部２３０の機能は、あらかじめ用意されたレプリケーションデータ作成プログラムおよびレプリケーションデータ反映プログラムをコンピュータで実行することによ
って実現することもできる。そこで、以下では、これらのプログラムを実行するコンピュータの一例を説明する。
【００８９】
図１３は、レプリケーションデータ作成プログラム１０７１を実行するコンピュータ１０００を示す機能ブロック図である。このコンピュータ１０００は、各種演算処理を実行するＣＰＵ（Central Processing Unit）１０１０と、ユーザからのデータの入力を受け
付ける入力装置１０２０と、各種情報を表示するモニタ１０３０と、各種プログラム等を記録した記録媒体からプログラム等を読み取る媒体読取り装置１０４０と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置１０５０と、各種情報を一時記憶するＲＡＭ（Random Access Memory）１０６０と、ハードディスク装置１０７０をバス１０８０で接続して構成される。
【００９０】
そして、ハードディスク装置１０７０には、図９に示したレプリケーションデータ作成部１３０と同様の機能を有するレプリケーションデータ作成プログラム１０７１と、レプリケーションデータ４０に対応するレプリケーションデータ１０７２と、変換表５０に対応する変換表データ１０７３が記憶される。
【００９１】
そして、ＣＰＵ１０１０がレプリケーションデータ作成プログラム１０７１をハードディスク装置１０７０から読み出してＲＡＭ１０６０に展開することにより、レプリケーションデータ作成プログラム１０７１は、レプリケーションデータ作成プロセス１０６１として機能するようになる。
【００９２】
そして、レプリケーションデータ作成プロセス１０６１は、コンピュータ１０００もしくはネットワーク接続された他のコンピュータで稼動するデータベースシステムにおいてレプリケーション対象となっているテーブルの更新を監視し、更新を検出した場合は、変換表データ１０７３から読み出した情報等を適宜ＲＡＭ１０６０上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行し、差分データをレプリケーションデータ１０７２に記録する。
【００９３】
なお、上記のレプリケーションデータ作成プログラム１０７１は、必ずしもハードディスク装置１０７０に格納されている必要はなく、ＣＤ−ＲＯＭ等の記憶媒体に記憶されたこのプログラムを、コンピュータ１０００が読み出して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）等を介してコンピュータ１０００に接続される他のコンピュータ（またはサーバ）
等にこのプログラムを記憶させておき、コンピュータ１０００がこれらからプログラムを読み出して実行するようにしてもよい。
【００９４】
また、プリケーションデータ反映プログラムも同様に、ハードディスク装置１０７０等に記憶させておき、コンピュータ１０００、もしくは、他のコンピュータがこれを読み出して実行して、図１０に示したレプリケーションデータ反映部２３０の機能を実現するように構成することができる。
【００９５】
上述してきたように、本実施例では、複製先のデータベースに対して送信する初期データと差分データに、どのテーブルにも存在し、当該のテーブルにおいてユニークである物理行番号を付加するように構成したので、ユニークキーをもたないテーブルを複製した場合であっても、複製元のデータベースで行われた更新を複製先のデータベースにおいて正しく反映させることができる。
【００９６】
また、複製元のテーブルに対して再編成を実行する場合に、再編成前の物理行番号と再編成後の物理行番号とを対応付けて記録した変換表を作成し、差分データを作成する際に
、この変換表を利用して、更新があった行の物理行番号を再編成前の物理行番号へ変換するように構成したので、再編成により複製元のテーブルの各行の物理行番号が変更された場合であっても、複製元のデータベースで行われた更新を複製先のデータベースにおいて正しく反映させることができる。
【００９７】
なお、本実施例に係るデータベースレプリケーション方法を従来のデータベースレプリケーション方法と組み合わせて利用することもできる。すなわち、ユニークキーをもたないテーブルを複製する場合には、本実施例に係るデータベースレプリケーション方法を利用し、ユニークキーをもつテーブルを複製する場合には、従来のデータベースレプリケーション方法を利用することもできる。
【００９８】
（付記１）第１のデータベースに含まれるテーブルを第２のデータベースに複製するためのデータを作成するレプリケーションデータ作成プログラムであって、
前記第１のデータベースに含まれる前記テーブルの各行の内容に当該の行の物理行番号を付加して出力することにより、前記第２のデータベースに前記テーブルを複製するための初期データを作成する初期データ作成手順と、
前記第１のデータベースに含まれる前記テーブルが更新された場合に、更新内容を示す情報と更新された行の物理行番号を対応付けて出力することにより、前記第１のデータベースにおいて前記テーブルに対して行われた更新を前記第２のデータベースへ反映させるための差分データを作成する差分データ作成手順と
をコンピュータに実行させることを特徴とするレプリケーションデータ作成プログラム。
【００９９】
（付記２）前記差分データ作成手順は、前記第１のデータベースに含まれる前記テーブルの行の内容が変更された場合に、変更内容を示す情報と内容が変更された行の物理行番号を対応付けて出力することを特徴とする付記１に記載のレプリケーションデータ作成プログラム。
【０１００】
（付記３）前記差分データ作成手順は、前記第１のデータベースに含まれる前記テーブルの行が削除された場合に、行が削除された旨を示す情報と削除された行の物理行番号を対応付けて出力することを特徴とする付記１に記載のレプリケーションデータ作成プログラム。
【０１０１】
（付記４）前記差分データ作成手順は、前記第１のデータベースに含まれる前記テーブルに行が追加された場合に、追加された行の内容を示す情報と追加された行の物理行番号を対応付けて出力することを特徴とする付記１に記載のレプリケーションデータ作成プログラム。
【０１０２】
（付記５）前記第１のデータベースに含まれる前記テーブルの各行の物理行番号が再編成によって変更された場合に、物理行番号が変更された行の再編成前の物理行番号と再編成後の物理行番号を対応付けた変換表を作成する変換表作成手順をさらにコンピュータに実行させ、
前記差分データ作成手順は、前記第１のデータベースに含まれる前記テーブルが更新された場合に、前記変換表を参照することにより、更新された行の物理行番号を再編成前の物理行番号へ変換して出力することを特徴とする付記１に記載のレプリケーションデータ作成プログラム。
【０１０３】
（付記６）前記差分データ作成手順は、前記第１のデータベースに含まれる前記テーブルの行が削除された場合に、削除された行の物理行番号を再編成後の物理行番号として保持するデータを前記変換表から削除することを特徴とする付記５に記載のレプリケーション
データ作成プログラム。
【０１０４】
（付記７）前記差分データ作成手順は、前記第１のデータベースに含まれる前記テーブルに行が追加された場合に、追加された行の物理行番号を再編成前の物理行番号として保持するデータが前記変換表に存在すれば、前記第２のデータベースにおいて、当該のデータにおける再編成前の物理行番号を再編成後の物理行番号へ変更すべき旨の情報を差分データに出力し、当該のデータを前記変換表から削除することを特徴とする付記５に記載のレプリケーションデータ作成プログラム。
【０１０５】
（付記８）第１のデータベースに含まれるテーブルを第２のデータベースに複製するためのデータを前記第２のデータベースへ反映させるレプリケーションデータ反映プログラムであって、
前記データが前記第２のデータベースに新規にテーブルを作成するための初期データである場合に、前記第１のデータベースに含まれるテーブルが有する列に加えて、該テーブルにおける各行の物理行番号を設定するための列を設けて前記第２のデータベースにテーブルを作成し、前記データにおいて行の内容を示す情報と対応付けて記録されている物理行番号を、該情報を追加する行の前記列へ設定する初期データ反映手順と、
前記データが前記第２のデータベースに存在するテーブルを更新するための差分データである場合に、前記データにおいて更新内容を示す情報と対応付けて記録されている物理行番号を前記列と照合することにより更新対象の行を特定して更新処理を行う差分データ反映手順と
をコンピュータに実行させることを特徴とするレプリケーションデータ反映プログラム。
【０１０６】
（付記９）自装置に含まれるテーブルを他のデータベース装置に複製するデータベース装置であって、
前記テーブルの各行の内容に当該の行の物理行番号を付加して出力することにより、前記テーブルを複製するための初期データを作成する初期データ作成手段と、
前記テーブルが更新された場合に、更新内容を示す情報と更新された行の物理行番号を対応付けて出力することにより、前記テーブルに対して行われた更新を複製先へ反映させるための差分データを作成する差分データ作成手段と
を備えたことを特徴とするデータベース装置。
【０１０７】
（付記１０）所定のデータを取り込むことにより他のデータベース装置に含まれるテーブルを自装置に複製するデータベース装置であって、
前記データが自装置に新規にテーブルを作成するための初期データである場合に、前記他のデータベース装置に含まれるテーブルが有する列に加えて、該テーブルにおける各行の物理行番号を設定するための列を設けて自装置にテーブルを作成し、前記データにおいて行の内容を示す情報と対応付けて記録されている物理行番号を、該情報を追加する行の前記列へ設定する初期データ反映手段と、
前記データが自装置に存在するテーブルを更新するための差分データである場合に、前記データにおいて更新内容を示す情報と対応付けて記録されている物理行番号を前記列と照合することにより更新対象の行を特定して更新処理を行う差分データ反映手段と
を備えたことを特徴とするデータベース装置。
【産業上の利用可能性】
【０１０８】
以上のように、本発明に係るレプリケーションデータ作成プログラム、レプリケーションデータ反映プログラムおよびデータベース装置は、テーブルの複製を作成する場合に有用であり、特に、ユニークキーをもたないテーブルであっても他のデータベースに複製を作成することが必要な場合に適している。
【図面の簡単な説明】
【０１０９】
【図１】本実施例に係るデータベースレプリケーション方法の概要を説明するための説明図である。
【図２】レプリケーション元における行の変更をレプリケーション先へ反映させるための動作を示す図である。
【図３】レプリケーション元における行の削除をレプリケーション先へ反映させるための動作を示す図である。
【図４】レプリケーション元における行の追加をレプリケーション先へ反映させるための動作を示す図である。
【図５】レプリケーション元にてテーブルの再編成が行われた場合の動作を示す図である。
【図６】レプリケーション元にてテーブルの再編成が実行された後に、レプリケーション元における行の変更をレプリケーション先へ反映させるための動作を示す図である。
【図７】レプリケーション元にてテーブルの再編成が実行された後に、レプリケーション元における行の削除をレプリケーション先へ反映させるための動作を示す図である。
【図８】レプリケーション元にてテーブルの再編成が実行された後に、レプリケーション元における行の追加をレプリケーション先へ反映させるための動作を示す図である。
【図９】レプリケーション元のデータベース装置の構成を示す機能ブロック図である。
【図１０】レプリケーション先のデータベース装置の構成を示す機能ブロック図である。
【図１１】レプリケーションデータ作成部の処理手順を示すフローチャートである。
【図１２】レプリケーションデータ反映部の処理手順を示すフローチャートである。
【図１３】レプリケーションデータ作成プログラムを実行するコンピュータを示す機能ブロック図である。
【符号の説明】
【０１１０】
１１、１２  データベース
２１、２２  テーブル
３１  レプリケーションデータ作成機能
３２  レプリケーションデータ反映機能
４０  レプリケーションデータ
５０  変換表
１００  データベース装置
１１０  トランザクション制御部
１２０  再編成実行部
１３０  レプリケーションデータ作成部
１３１  初期データ作成部
１３２  差分データ作成部
１３３  変換表作成部
１４０  記憶部
１４１  データベース領域
１４２  レプリケーションデータ格納領域
１４３  変換表領域
２００  データベース装置
２１０  トランザクション制御部
２２０  再編成実行部
２３０  レプリケーションデータ反映部
２３１  初期データ反映部
２３２  差分データ反映部
２４０  記憶部
２４１  データベース領域
２４２  レプリケーションデータ格納領域
１０００  コンピュータ
１０１０  ＣＰＵ
１０２０  入力装置
１０３０  モニタ
１０４０  媒体読取り装置
１０５０  ネットワークインターフェース装置
１０６０  ＲＡＭ
１０６１  レプリケーションデータ作成プロセス
１０７０  ハードディスク装置
１０７１  レプリケーションデータ作成プログラム
１０７２  レプリケーションデータ
１０７３  変換表データ
１０８０  バス
【図１】
2007264814.tif 000003
【図２】
2007264814.tif 000004
【図３】
2007264814.tif 000005
【図４】
2007264814.tif 000006
【図５】
2007264814.tif 000007
【図６】
2007264814.tif 000008
【図７】
2007264814.tif 000009
【図８】
2007264814.tif 000010
【図９】
2007264814.tif 000011
【図１０】
2007264814.tif 000012
【図１１】
2007264814.tif 000013
【図１２】
2007264814.tif 000014
【図１３】
2007264814.tif 000015