(57)【要約】  連携メモリ管理部１８が、ＣＤＣ２２からの更新済レコードを書き込むための個別データ格納部２１と、変換部１２が更新済レコードから生成した更新反映データを書き込むための個別データ格納部２１を生成し、変換部１２が、受信部１１とは非同期に個別データ格納部２１からの更新済レコードの読み出し、更新反映データの生成、更新反映データの個別データ格納部２１への書き込みを行い、ＣＤＷ処理部１３が、受信部１１及び変換部１２とは非同期に個別データ格納部２１からの更新反映データの読み出し、連携先テーブルの更新を行う。
2012090281.tif 000002
【特許請求の範囲】
【請求項１】
連携元テーブルにおける更新を連携先テーブルに反映させるデータ処理装置であって、
前記連携元テーブルにおいて更新された更新済レコードを受信する更新済レコード受信部と、
前記連携先テーブルをレコード単位で更新する連携先テーブル更新部と、
前記更新済レコードを用いて、前記連携元テーブルにおける更新を反映するデータであって、前記連携先テーブルのレコードの少なくとも一部になるデータを更新反映データとして生成する更新反映データ生成部と、
前記更新済レコード受信部から前記更新反映データ生成部に更新済レコードを受け渡すための更新済レコードバッファを生成する更新済レコードバッファ生成部と、
前記更新反映データ生成部から前記連携先テーブル更新部に更新反映データを受け渡すための更新反映データバッファを生成する更新反映データバッファ生成部とを有し、
前記更新済レコード受信部は、
受信した更新済レコードを前記更新済レコードバッファに書き込み、
前記更新反映データ生成部は、
前記更新済レコード受信部による更新済レコードの受信とは非同期に、前記更新済レコードバッファに格納されている更新済レコードを読み出し、読み出した更新済レコードを用いて更新反映データを生成し、生成した更新反映データを前記更新反映データバッファに書き込み、
前記連携先テーブル更新部は、
前記更新済レコード受信部による更新済レコードの受信及び前記更新反映データ生成部による更新反映データの生成とは非同期に、前記更新反映データバッファに格納されている更新反映データを読み出し、読み出した更新反映データを用いて連携先テーブルの更新を行うことを特徴とするデータ処理装置。
【請求項２】
前記連携先テーブル更新部は、
前記更新反映データバッファから読み出した更新反映データを用いて、１トランザクションにおいて前記連携先テーブルの２個以上のレコードに対する更新を行うことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記データ処理装置は、
対象としている連携先テーブルが異なっている複数の連携先テーブル更新部を有し、
前記更新反映データバッファ生成部は、
連携先テーブル更新部ごとに更新反映データバッファを生成し、
前記更新反映データ生成部は、
生成した更新反映データを、受け渡し先として指定されている連携先テーブル更新部の更新反映データバッファに書き込み、
各連携先テーブル更新部は、
対応する更新反映データバッファに格納されている更新反映データを読み出し、読み出した更新反映データを用いて連携先テーブルの更新を行うことを特徴とする請求項１又は２に記載のデータ処理装置。
【請求項４】
各連携先テーブル更新部は、
更新反映データの読み出し及び連携先テーブルの更新を、他の連携先テーブル更新部における更新反映データの読み出し及び連携先テーブルの更新と並行して行うことを特徴とする請求項３に記載のデータ処理装置。
【請求項５】
前記データ処理装置は、
対象としている連携元テーブルが異なっている複数の更新反映データ生成部を有し、
前記更新済レコードバッファ生成部は、
更新反映データ生成部ごとに更新済レコードバッファを生成し、
前記更新済レコード受信部は、
受信した更新済レコードを、受け渡し先として指定されている更新反映データ生成部の更新済レコードバッファに書き込み、
各更新反映データ生成部は、
対応する更新反映データバッファから更新済レコードを読み出し、読み出した更新済レコードを用いて更新反映データを生成し、生成した更新反映データを、受け渡し先として指定されている連携先テーブル更新部の更新反映データバッファに書き込むことを特徴とする請求項３又は４に記載のデータ処理装置。
【請求項６】
前記更新反映データバッファ生成部は、
連携先テーブル更新部ごとに、更新反映データの受け渡し元の更新反映データ生成部ごとの更新反映データバッファを生成することを特徴とする請求項５に記載のデータ処理装置。
【請求項７】
前記更新反映データバッファ生成部は、
更新反映データの受け渡し元の更新反映データ生成部ごとに、更新反映データ生成部から連携先テーブル更新部に受け渡す更新反映データのデータ長と、更新反映データ生成部が対象としている連携元テーブルからの更新済レコードの単位時間あたりの受信数と、連携先テーブル更新部が更新反映データを反映させるレコード数とを積算し、積算により得られる容量分の更新反映データバッファを生成することを特徴とする請求項６に記載のデータ処理装置。
【請求項８】
各更新反映データ生成部は、
受け渡し先として指定されている連携先テーブル更新部の更新反映データ生成部ごとの更新反映データバッファのうち、対応する更新反映データバッファに更新反映データを書き込むことを特徴とする請求項６又は７に記載のデータ処理装置。
【請求項９】
前記データ処理装置は、更に、
更新反映データ生成部ごとの更新反映データバッファ単位で、更新反映データの書き込みに対する排他制御を行う排他制御部を有することを特徴とする請求項６〜８のいずれかに記載のデータ処理装置。
【請求項１０】
各更新反映データ生成部は、
更新反映データの書き込み先の更新反映データバッファが複数ある場合に、複数の更新反映データバッファへの更新反映データの書き込みを並列に行うことを特徴とする請求項５〜９のいずれかに記載のデータ処理装置。
【請求項１１】
前記更新済レコードバッファ生成部は、
更新反映データ生成部ごとに、対象としている連携元テーブルからの更新済レコードの単位時間あたりの受信数と、対象としている連携元テーブルのレコード長とに基づき、更新済レコードバッファの容量を算出することを特徴とする請求項５〜１０のいずれかに記載のデータ処理装置。
【請求項１２】
前記更新反映データバッファ生成部は、
いずれかの連携先テーブル更新部が対象とする連携先テーブルが変化した場合に、
当該連携先テーブル更新部以外の連携先テーブル更新部と、当該連携先テーブル更新部を更新反映データの受け渡し先としている更新反映データ生成部以外の更新反映データ生成部の動作に影響を与えずに、当該連携先テーブル更新部に対応する新たな更新反映データバッファの生成及び当該連携先テーブル更新部に対応する既存の更新反映データバッファの容量の変更の少なくともいずれかを行うことを特徴とする請求項５〜１１のいずれかに記載のデータ処理装置。
【請求項１３】
前記更新反映データバッファ生成部は、
前記データ処理装置の主記憶装置内に更新反映データバッファを生成した後に、主記憶装置内の更新反映データバッファが特定の状態になった場合に、前記データ処理装置の二次記憶装置内に更新反映データバッファを生成し、
各更新反映データ生成部は、
前記更新反映データバッファ生成部により前記二次記憶装置内に更新反映データバッファが生成される前は、前記主記憶装置内の更新反映データバッファに更新反映データを書き込み、前記更新反映データバッファ生成部により前記二次記憶装置内に更新反映データバッファが生成された後は、前記二次記憶装置内の更新反映データバッファに更新反映データを書き込むことを特徴とする請求項５〜１２のいずれかに記載のデータ処理装置。
【請求項１４】
前記データ処理装置は、更に、
更新反映データ生成部による前記二次記憶装置内の更新反映データバッファへの更新反映データの書き込みの際には書き込みを確定させず、連携先テーブル更新部による前記二次記憶装置内の更新反映データバッファからの更新反映データの読み出しの際に、更新反映データ生成部による更新反映データの書き込みを確定させる二次記憶制御部を有することを特徴とする請求項１３に記載のデータ処理装置。
【請求項１５】
前記更新済レコードバッファ生成部は、
前記データ処理装置の主記憶装置内に更新済レコードバッファを生成した後に、主記憶装置内の更新済レコードバッファが特定の状態になった場合に、前記データ処理装置の二次記憶装置内に更新済レコードバッファを生成し、
前記更新済レコード受信部は、
前記更新済レコードバッファ生成部により前記二次記憶装置内に更新済レコードバッファが生成される前は、前記主記憶装置内の更新済レコードバッファに更新済レコードを書き込み、前記更新済レコードバッファ生成部により前記二次記憶装置内に更新済レコードバッファが生成された後は、前記二次記憶装置内の更新済レコードバッファに更新済レコードを書き込むことを特徴とする請求項５〜１４のいずれかに記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータベースのテーブル間でデータを転送するデータベース連携技術に関する。
【背景技術】
【０００２】
例えば、特許文献１では、テーブルを構成するカラムの数、型、サイズが同一である連携元データベースと連携先データベースとの間におけるデータベースレプリケーションが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−３２７９８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１が対象とするデータベースレプリケーションは、同一仕様のデータベース間のデータ転送であるため、テーブルを構成するカラムの数、型、サイズが異なる連携元データベースと連携先データベースとの間のデータ連携はできないという課題がある。
複数の連携元データベースと複数の連携先データベース間のデータ転送を対象とする場合、データベースごとにテーブルを構成するカラムの数、型、サイズが異なり、更に、トランザクションの発生頻度と各トランザクション内で更新されるレコード数がデータベースごとに異なる。【０００５】
本発明は、このような点に鑑みたものであり、複数の連携元データベースと複数の連携先データベースとの間のデータベース連携を効率的に行うことを主な目的とする。
【課題を解決するための手段】
【０００６】
本発明に係るデータ処理装置は、
連携元テーブルにおける更新を連携先テーブルに反映させるデータ処理装置であって、
前記連携元テーブルにおいて更新された更新済レコードを受信する更新済レコード受信部と、
前記連携先テーブルをレコード単位で更新する連携先テーブル更新部と、
前記更新済レコードを用いて、前記連携元テーブルにおける更新を反映するデータであって、前記連携先テーブルのレコードの少なくとも一部になるデータを更新反映データとして生成する更新反映データ生成部と、
前記更新済レコード受信部から前記更新反映データ生成部に更新済レコードを受け渡すための更新済レコードバッファを生成する更新済レコードバッファ生成部と、
前記更新反映データ生成部から前記連携先テーブル更新部に更新反映データを受け渡すための更新反映データバッファを生成する更新反映データバッファ生成部とを有し、
前記更新済レコード受信部は、
受信した更新済レコードを前記更新済レコードバッファに書き込み、
前記更新反映データ生成部は、
前記更新済レコード受信部による更新済レコードの受信とは非同期に、前記更新済レコードバッファに格納されている更新済レコードを読み出し、読み出した更新済レコードを用いて更新反映データを生成し、生成した更新反映データを前記更新反映データバッファに書き込み、
前記連携先テーブル更新部は、
前記更新済レコード受信部による更新済レコードの受信及び前記更新反映データ生成部による更新反映データの生成とは非同期に、前記更新反映データバッファに格納されている更新反映データを読み出し、読み出した更新反映データを用いて連携先テーブルの更新を行うことを特徴とする。
【発明の効果】
【０００７】
本発明によれば、更新済レコードを書き込むための更新済レコードバッファと、更新反映データを書き込むための更新反映データバッファを生成し、更新反映データ生成部が、更新済レコード受信部とは非同期に更新済レコードの読み出し、更新反映データの生成、更新反映データの書き込みを行い、連携先テーブル更新部が、更新済レコード受信部及び更新反映データ生成部とは非同期に更新反映データの読み出し、連携先テーブルの更新を行うため、複数の連携元データベースと複数の連携先データベースとの間のデータベース連携において、効率的なパイプライン処理が可能になる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１〜４に係るデータベース連携システムの構成例を示す図。
【図２】実施の形態１に係るデータベース連携装置の構成例を示す図。
【図３】実施の形態１に係る連携テーブル情報の例を示す図。
【図４】実施の形態１に係る連携管理情報の例を示す図。
【図５】実施の形態１に係る連携接続情報の例を示す図。
【図６】実施の形態１に係る更新データ到着ログの例を示す図。
【図７】実施の形態１に係るデータ処理制御部におけるデータ構成例を示す図。
【図８】実施の形態１に係る更新データ情報の例を示す図。
【図９】実施の形態１に係るデータベース連携装置の動作例を示すフローチャート図。
【図１０】実施の形態１に係るデータベース連携装置の動作例を示すフローチャート図。
【図１１】実施の形態２に係るデータベース連携装置の動作例を示すフローチャート図。
【図１２】実施の形態３に係るデータベース連携装置とデータ退避装置の構成例を示す図。
【図１３】実施の形態４に係るデータベース連携装置とデータ退避装置の構成例を示す図。
【図１４】実施の形態１に係るデータベース連携装置の動作例を示すフローチャート図。
【図１５】実施の形態１〜４に係るデータベース連携装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【０００９】
実施の形態１．
データベース（以下、データベースをＤＢとも表記する）連携技術では、連携元データベース（連携元テーブル）で変更されたデータが抽出され、抽出されたデータが連携先データベース（連携先テーブル）の形式に変換され、変換後のデータが連携先のデータベースに反映される。
データ変換としては、例えば、以下に示すようなものがある。
大文字と小文字の変換  （ａｂｃ→ＡＢＣ）：小文字から大文字への変換
数値データの単位の変換  （１０００→１）：Ｋ単位への変換
パディングの実施、桁数の変更  （１２３４５６→０００１２３４５６）：６桁から９桁への変換
【００１０】
データベースを連携させる方法は、２つに大別される。
第１の方法は、ＥＴＬ（Ｅｘｔｒａｃｔ  Ｔｒａｎｓｌａｔｅ  Ｌｏａｄ）ツールのように、連携元となる１つのデータベースから連携先となる１つのデータベースにデータ転送を実施する方法である。
第２の方法は、複数の連携元データベースと複数の連携先データベースとを接続するＨｕｂ型構成において、複数の連携元データベースから複数の連携先データベースにデータ転送を行う方法である。
実施の形態１〜４では、第２の方法、すなわち、Ｈｕｂ型の構成によるデータベース連携方法を説明する。
【００１１】
Ｈｕｂ型のデータベース連携装置は、連携元ＤＢで抽出された変更データを受け取る受信処理、抽出データを連携先ＤＢの仕様に合わせるための変換処理、変換データを連携先ＤＢに反映するためのＣＤＷ（Ｃｈａｎｇｅ  Ｄａｔａ  Ｗｒｉｔｅｒ）処理からなる。
データベース連携を実施する際にパイプライン処理を行なう変換部とＣＤＷ処理部でテーブル間のキューの構成を一律とした場合、換言すれば、変換処理とＣＤＷ処理が同期している場合は、データベース連携装置のスループットが低下する。
実施の形態１〜４は、この課題を解決することを主な目的としており、データベース連携装置のスループットを向上させるために、パイプライン処理において変換部とＣＤＷ処理部とが非同期に動作する構成を説明する。
以下、実施の形態に係るデータベース連携装置を図面を参照して説明する。
【００１２】
図１は、本実施の形態に係るデータベース連携システムを示し、データベース連携装置１、連携元システム２、連携先システム４との間の関係を示す。
データベース連携装置１はデータ処理装置の例である。
なお、データベース連携装置１の内部構成例は後述する。
データベース連携装置１は、複数の連携元システム２と、複数の連携先システム４とに接続されている。
図１では、連携元システム２は、連携元システムＡ２ａと連携元システムＢ２ｂの２つである。
また、連携先システム４は、連携先システムＸ４ｘと連携先システムＹ４ｙと連携先システムＺ４ｚの３つである。
【００１３】
各連携元システム２には、連携元データベース３と、ＣＤＣ（Ｃｈａｎｇｅ  Ｄａｔａ  Ｃａｐｔｕｒｅ）２２が含まれている。
連携元データベース３には、１つ以上の連携元テーブルが含まれている。
なお、以下では、連携元データベースＡ３ａに２つの連携元テーブルが含まれていることを前提とし、それぞれの連携元テーブルを、連携元テーブルＡ−１、連携元テーブルＡ−２と表記する。
また、連携元データベースＢ３ｂにも２つの連携元テーブルが含まれていることを前提とし、それぞれの連携元テーブルを、連携元テーブルＢ−１、連携元テーブルＢ−２と表記する。
また、ＣＤＣ２２は、連携元データベース３の更新ログなどを監視し、連携元データベース３の更新を検知し、連携元データベース３で更新されたレコードを抽出する。
ＣＤＣ２２は、公知の技術により実現される。
なお、ＣＤＣ２２が抽出するレコードを更新済レコードとも表記する。
【００１４】
各連携先システム４には、連携先データベース５が含まれている。
連携先データベース５には、１つ以上の連携先テーブルが含まれている。
なお、以下では、連携先データベースＸ５ｘに２つの連携先テーブルが含まれていることを前提とし、それぞれの連携先テーブルを、連携先テーブルＸ−１、連携元テーブルＸ−２と表記する。
また、連携先データベースＹ５ｙにも２つの連携先テーブルが含まれていることを前提とし、それぞれの連携先テーブルを、連携先テーブルＹ−１、連携元テーブルＹ−２と表記する。
また、連携先データベースＺ５ｚにも２つの連携先テーブルが含まれていることを前提とし、それぞれの連携先テーブルを、連携先テーブルＺ−１、連携元テーブルＺ−２と表記する。
【００１５】
データベース連携装置１は、いずれかの連携元データベースにおける更新をいずれかの連携先テーブルに反映させる。
データベース連携装置１では任意のデータベース連携が可能である。
例えば、連携元テーブルＡ−１の更新済レコードを、連携先テーブルＸ−１、連携先テーブルＹ−１、連携先テーブルＺ−１のそれぞれに反映させるというように、１つの連携元テーブルの更新済レコードを２以上の連携先テーブルに反映させるようにしてもよい。
また、連携元テーブルＡ−１の更新済レコードの一部と連携元テーブルＢ−１の更新済レコードの一部と連携元テーブルＢ−２の更新済レコードの一部との組み合せを、連携元テーブルＺ−２に反映させるというように、複数の連携元テーブルの更新済レコードの組み合せを１つの連携先テーブルに反映させるようにしてもよい。
【００１６】
なお、連携元データベース３と連携先データベース５のスキーマ構成、より具体的にはデータベースインスタンス内に構成されるスキーマ、テーブル、カラムの構成が異っていてもよく、また連携元データベース３のカラムの型、サイズ、格納データと連携先データベース５のカラムの型、サイズ、格納データが異っていてもよい。
【００１７】
また、本実施の形態で示す連携元システム２の個数、連携先システム４の個数、連携元データベース３の個数、連携先データベース５の個数、連携元テーブルの個数、連携先テーブルの個数は例示であり、各々の個数を任意に設定することができる。
【００１８】
次に、図２に本実施の形態に係るデータベース連携装置１の構成例を示す。
本実施の形態に係るデータベース連携装置１では、受信部１１、変換部１２、ＣＤＷ処理部１３によるデータ連携定義に基づき、データ格納部１９内の個別排他制御部２０と個別データ格納部２１の構成を決定する連携メモリ管理部１８を備え、データ格納部１９の構成は連携管理情報１７にて管理される。
【００１９】
データ連携処理部２３において、受信部１１は、連携元システム２内のＣＤＣ２２が連携元データベース３の連携元テーブルから検出した更新済レコードを受信する。
受信部１１は、更新済レコード受信部の例である。
受信部１１は、連携元データベース３ごとに用意される。
図２では、図の簡明化のため、受信部１１は１つしか図示されていないが、図１の構成に照らせば、図２のデータベース連携装置１では、連携元データベースＡ３ａから更新済レコードを受信する受信部（以下、受信部１１ａと表記する）と、連携元データベースＢ３ｂから更新済レコードを受信する受信部（以下、受信部１１ｂと表記する）が設けられている。
【００２０】
変換部１２は、連携元データベース３と連携先データベース５のデータベース定義の仕様が異なる場合に、連携元データベース３から抽出したデータを連携先データベース５のデータ仕様に変換するものである。
例えば、文字列データであれば大文字から小文字への変換、数値演算は桁揃えなどの機能を有し、変換処理は公知の技術により実施される。
変換部１２は、入力した更新済レコードに変換が必要かどうか、変換が必要であればどのような変換を行うかを判定し、変換が必要であれば更新済レコードの変換を行い、変換後の更新済レコードを後述する個別データ格納部２１に書き込む。
一方、変換の必要がなければ、無変換の更新済レコードを個別データ格納部２１に書き込む。
変換部１２が個別データ格納部２１に書き込むデータは、変換後の更新済レコードであっても無変換の更新済レコードであっても、連携元テーブルにおける更新を反映するとともに、連携先テーブルのレコードの少なくとも一部になるデータ（更新反映データ）である。
換言すると、変換部１２は、変換が必要であれば更新済レコードの変換を行って更新反映データを生成し、変換が必要なければ更新済レコードの変換を行わずに更新反映データを生成している。
このように、変換部１２は更新反映データ生成部の例として機能する。
なお、変換部１２は、連携元テーブルごとに用意される。
図２では、図の簡明化のため、変換部１２は１つしか図示されていないが、図１の構成に照らせば、図２のデータベース連携装置１では、連携元テーブルＡ−１に対応する変換部（以下、変換部１２ａ−１と表記する）と、連携元テーブルＡ−２に対応する変換部（以下、変換部１２ａ−２と表記する）と、連携元テーブルＢ−１に対応する変換部（以下、変換部１２ｂ−１と表記する）と、連携元テーブルＢ−２に対応する変換部（以下、変換部１２ｂ−２と表記する）が設けられている。
【００２１】
ＣＤＷ処理部１３は、変換部１２が生成した更新反映データを連携先データベース５に反映する機能を有する。
より具体的にはＯＤＢＣ（Ｏｐｅｎ  ＤａｔａＢａｓｅ  Ｃｏｎｎｅｃｔｉｖｉｔｙ）などを用いて連携先データベース５にレコード単位で更新反映データを反映する。
このとき、ＣＤＷ処理部１３は、変換部１２から複数の更新反映データを一括して取得し、連携先データベース５に反映する。
つまり、ＣＤＷ処理部１３は、取得した複数の更新反映データを用いて、１トランザクションにおいて連携先テーブルの２個以上のレコードに対する更新を行う。
ＣＤＷ処理部１３は、連携先テーブル更新部の例である。
なお、ＣＤＷ処理部１３は、連携先データベース５ごとに用意される。
図２では、図の簡明化のため、ＣＤＷ処理部１３は１つしか図示されていないが、図１の構成に照らせば、図２のデータベース連携装置１では、連携先データベースＸ５ｘに対応するＣＤＷ処理部（以下、ＣＤＷ処理部１３ｘと表記する）と、連携先データベースＹ５ｙに対応するＣＤＷ処理部（以下、ＣＤＷ処理部１３ｙと表記する）と、連携先データベースＺ５ｚに対応するＣＤＷ処理部（以下、ＣＤＷ処理部１３ｚと表記する）が配置されている。
【００２２】
データ連携連動型バッファ管理部１４において、連携メモリ管理部１８は、データベース連携装置１の主記憶装置（共有メモリ）上に、受信部１１から変換部１２に更新済レコードを受け渡すためのバッファ領域である個別データ格納部２１を生成し、また、変換部１２からＣＤＷ処理部１３に更新反映データを受け渡すためのバッファ領域である個別データ格納部２１を生成する。
受信部１１から変換部１２に更新済レコードを受け渡すための個別データ格納部２１は、更新済レコードバッファの例であり、変換部１２からＣＤＷ処理部１３に更新反映データを受け渡すための個別データ格納部２１は、更新反映データバッファの例である。
このため、連携メモリ管理部１８は、更新済レコードバッファ生成部及び更新反映データバッファ生成部の例である。
【００２３】
前述のように、図２の構成では、変換部１２として、変換部１２ａ−１、変換部１２ａ−２、変換部１２ｂ−１、変換部１２ｂ−２の４つが存在するため、連携メモリ管理部１８は、それぞれの変換部に対応させて４つの個別データ格納部２１を生成する。
つまり、連携メモリ管理部１８は、受信部１１ａが連携元テーブルＡ−１の更新済レコードを変換部１２ａ−１に受け渡すための個別データ格納部２１、受信部１１ａが連携元テーブルＡ−２の更新済レコードを変換部１２ａ−２に受け渡すための個別データ格納部２１、受信部１１ｂが連携元テーブルＢ−１の更新済レコードを変換部１２ｂ−１に受け渡すための個別データ格納部２１、受信部１１ｂが連携元テーブルＢ−２の更新済レコードを変換部１２ｂ−２に受け渡すための個別データ格納部２１の４つを生成する。
また、図２の構成では、ＣＤＷ処理部１３として、ＣＤＷ処理部１３ｘ、ＣＤＷ処理部１３ｙ、ＣＤＷ処理部１３ｚの３つが存在するため、連携メモリ管理部１８は、それぞれのＣＤＷ処理部に対応させて個別データ格納部２１を生成する。
なお、ＣＤＷ処理部１３の個別データ格納部２１は、更新反映データの受け渡し元の変換部１２ごとに生成される。
例えば、ＣＤＷ処理部１３ｘが変換部１２ａ−１、変換部１２ａ−２及び変換部１２ｂ−１の各々から更新反映データを受け取る場合は、変換部１２ａ−１のみが更新反映データを書き込める個別データ格納部２１、変換部１２ａ−２のみが更新反映データを書き込める個別データ格納部２１、変換部１２ｂ−１のみが更新反映データを書き込める個別データ格納部２１が生成される。
そして、各個別データ格納部２１に対して設けられている個別排他制御部２０により、各個別データ格納部２１への更新済レコード又は更新反映データの書き込みに対する排他制御が行われる。
個別排他制御部２０は、排他制御部の例である。
また、個別データ格納部２１と個別排他制御部２０との組が１組以上格納される論理アドレス空間をデータ格納部１９という。
前述のＣＤＷ処理部１３ｘの例では、変換部１２ａ−１についての個別データ格納部２１と個別排他制御部２０との組、変換部１２ａ−２についての個別データ格納部２１と個別排他制御部２０との組、変換部１２ｂ−１についての個別データ格納部２１と個別排他制御部２０との組が格納される論理アドレス空間が、ＣＤＷ処理部１３ｘのデータ格納部１９になる。
【００２４】
データ処理制御部１６は、プロセス間通信用のメッセージを格納するキューである。
つまり、各受信部１１は更新済レコードを個別データ格納部２１に書き込んだ後に、更新済レコードの書き込みを通知するメッセージをデータ処理制御部１６に登録する。
また、各変換部１２は、データ処理制御部１６からメッセージを呼び出して、対応する個別データ格納部２１から更新済レコードを読み出す。
また、各変換部１２は更新反映データを個別データ格納部２１に書き込んだ後に、更新反映データの書き込みを通知するメッセージをデータ処理制御部１６に登録する。
また、各ＣＤＷ処理部１３は、データ処理制御部１６からメッセージを呼び出して、対応する個別データ格納部２１から更新反映データを読み出す。
【００２５】
更新データ到着ログ１５は、受信部１１による更新済レコードの受信状況を示す情報であり、より具体的には、連携元テーブルごとに更新済レコードの単位時間あたりの受信数を示す情報である。
更新データ到着ログ１５の詳細は後述する。
【００２６】
データ連携設計部６は、連携元データベース３と連携先データベース５の連携関係を定義するものである。
連携関係の定義とは、連携元データベース３が備えるスキーマ、テーブル、カラムと連携先データベース５が備えるスキーマ、テーブル、カラムのそれぞれの対応関係を示すものである。
データ連携設計部６は、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を備えたツールであってもよい。
また、データ連携設計部６は、データベース連携装置１とは異なるハードウェア上で稼動するものであってもよい。
データ連携設計部６はデータベース連携定義をデータ連携設計情報７として出力し、統合連携情報８の入力データとする。
データ連携設計情報７及び統合連携情報８の詳細は後述する。
【００２７】
ここで、本実施の形態に係るデータベース連携装置１の動作の概要を説明する。
【００２８】
先ず、連携メモリ管理部１８が、変換部１２ごとに、個別データ格納部２１に必要なサイズを算出する。
より具体的には、連携メモリ管理部１８は、変換部１２ごとに、対象としている連携元テーブルからの更新済レコードの単位時間あたりの受信数と、対象としている連携元テーブルのレコード長とを積算して、当該変換部１２に必要なサイズを算出する。
そして、連携メモリ管理部１８は、算出したサイズ分の個別データ格納部２１を当該変換部１２に割り当てる。
なお、連携元テーブルからの更新済レコードの単位時間あたりの受信数は、更新データ到着ログ１５から導出可能であり、連携元テーブルのレコード長は連携元テーブル情報９等から導出可能である。
【００２９】
また、連携メモリ管理部１８は、ＣＤＷ処理部１３ごとに、個別データ格納部２１に必要な容量を算出する。
前述したように、連携メモリ管理部１８は、ＣＤＷ処理部１３ごとに、更新反映データの受け渡し元の変換部１２ごとの個別データ格納部２１を生成するため、更新反映データの受け渡し元の変換部１２単位で必要容量を算出する。
より具体的には、連携メモリ管理部１８は、更新反映データの受け渡し元の変換部１２ごとに、ＣＤＷ処理部１３が当該変換部１２から受け渡される更新反映データのデータ長と、当該変換部１２の連携元テーブルからの更新済レコードの単位時間あたりの受信数と、ＣＤＷ処理部１３が更新反映データを反映させるレコード数とを積算し、積算により得られた容量分の個別データ格納部２１を確保する。
このような積算処理を全ての受け渡し元の変換部１２に対して行って、１つのＣＤＷ処理部１３についての受け渡し元の変換部１２ごとの個別データ格納部２１が生成される。
なお、連携元テーブルからの更新済レコードの単位時間あたりの受信数は、更新データ到着ログ１５から導出可能であり、連携先テーブルのレコード長及び連携先テーブル内で更新反映データを反映させるレコード数は連携先テーブル情報１０等から導出可能である。
また、連携メモリ管理部１８は、共有ライブラリとして実装され、受信部１１、変換部１２、ＣＤＷ処理部１３を構成するプロセスから起動される形態であってよい。
【００３０】
次に、受信部１１がＣＤＣ２２から送信された更新済レコードを受信し、受信した更新済レコードの受け渡し先として指定されている変換部１２に割り当てられているデータ格納部１９に更新済レコードを書き込む。
前述したように、受信部１１は連携元データベース３ごとに存在し、変換部１２は連携元テーブルごとに存在する。
例えば、受信部１１ａは、連携元データベース３の連携元テーブルＡ−１の更新済レコードと連携元テーブルＡ−１の更新済レコードを受信する。
連携元テーブルＡ−１の更新済レコードを受信した場合は、受信部１１ａは、受信した更新済レコードを変換部１２ａ−１用の個別データ格納部２１に書き込み、連携元テーブルＡ−２の更新済レコードを受信した場合は、受信部１１ａは、受信した更新済レコードを変換部１２ａ−２用の個別データ格納部２１に書き込む。
【００３１】
変換部１２は、割り当てられている個別データ格納部２１から更新済レコードを読み出し、読み出した更新済レコードを用いて更新反映データを生成し、生成した更新反映データを受け渡し先として指定されているＣＤＷ処理部１３の個別データ格納部２１に書き込む。
例えば、変換部１２ａ−１の受け渡し先がＣＤＷ処理部１３ｘであり、ＣＤＷ処理部１３ｘが変換部１２ａ−１及び変換部１２ｂ−１の各々から更新反映データを受け取る場合は、ＣＤＷ処理部１３ｘに対しては、変換部１２ａ−１用の個別データ格納部２１と、変換部１２ｂ−１用の個別データ格納部２１が生成されている。
このため、変換部１２ａ−１は、ＣＤＷ処理部１３ｘの変換部１２ａ−１用の個別データ格納部２１に更新反映データを書き込む。
また、変換部１２ａ−１の受け渡し先がＣＤＷ処理部１３ｘとＣＤＷ処理部１３ｙである場合は、読み出した更新済レコードに対してＣＤＷ処理部１３ｘの連携先データベースに合わせた変換を行ってＣＤＷ処理部１３ｘ向けの更新反映データを生成するとともに、ＣＤＷ処理部１３ｙの連携先データベースに合わせた変換を行ってＣＤＷ処理部１３ｙ向けの更新反映データを生成する。
そして、ＣＤＷ処理部１３ｘ向けの更新反映データをＣＤＷ処理部１３ｘの変換部１２ａ−１用の個別データ格納部２１に書き込み、ＣＤＷ処理部１３ｙ向けの更新反映データをＣＤＷ処理部１３ｙの変換部１２ａ−１用の個別データ格納部２１に書き込む。
なお、変換部１２ａ−１は、ＣＤＷ処理部１３ｘの個別データ格納部２１への書き込みと、ＣＤＷ処理部１３ｙの個別データ格納部２１への書き込みを並列に行う。
また、各変換部１２における更新済レコードの読み出し、更新反映データの生成、更新反映データの個別データ格納部２１への書き込みは、受信部１１による更新済レコードの受信及び更新済レコードの書き込みと非同期に行われる。
【００３２】
ＣＤＷ処理部１３は、個別データ格納部２１から更新反映データを読み出し、読み出した更新反映データを用いて連携先テーブルを更新する。
例えば、ＣＤＷ処理部１３ｘが変換部１２ａ−１及び変換部１２ｂ−１の各々から更新反映データを受け取る場合は、変換部１２ａ−１用の個別データ格納部２１、変換部１２ｂ−１用の個別データ格納部２１の各々から更新反映データを読み出す。
そして、ＣＤＷ処理部１３ｘは、例えば、読み出した更新反映データを用いて、連携先テーブルＸ−１と連携先テーブルＸ−２のレコードを更新する。
各ＣＤＷ処理部１３における更新反映データの読み出し及び更新反映データを用いた連携先テーブルの更新は、受信部１１による更新済レコードの受信及び更新済レコードの書き込み、各変換部１２による更新済レコードの読み出し、更新反映データの生成及び更新反映データの個別データ格納部２１への書き込みと非同期に行われる。
このため、各ＣＤＷ処理部１３は、１トランザクションにおいて連携先テーブルの２以上のレコードに対する更新を行うことができる。
また、各ＣＤＷ処理部１３は、他のＣＤＷ処理部１３における更新反映データの読み出し及び連携先テーブルの更新と並行して、更新反映データの読み出し及び連携先テーブルの更新を行う。
【００３３】
以上が、本実施の形態に係るデータベース連携装置１の動作の概要である。
次に、データ連携設計情報７、連携元テーブル情報９、連携先テーブル情報１０、連携管理情報１７、連携接続情報２４及び更新データ到着ログ１５の詳細を説明し、本実施の形態に係るデータベース連携装置１の動作の詳細を説明する。
【００３４】
データ連携設計情報７は、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）のような形式で記述したものであってよく、ファイルの形式でデータベース連携装置１に外部が取込む形式であってもよい。
データ連携設計情報７は、連携元テーブル情報９、連携先テーブル情報１０及び連携接続情報２４から構成される。
なお、図２では、データ連携設計情報７に含まれる連携元テーブル情報９、連携先テーブル情報１０及び連携接続情報２４をデータベース連携装置１のメモリに展開した状態を示している。
データ連携設計情報７がＸＭＬ形式で記述されたファイルである場合、データ連携処理部２３がデータベース連携処理を実施するたびにファイルからデータベース連携設計情報７の内容を読み取ることも可能であるが、効率的でない。
このため、本実施の形態では、データ連携設計情報７を入力として受け取り、データベース連携装置１のメモリに統合連携情報８として格納する。
【００３５】
連携元テーブル情報９および連携先テーブル情報１０は、図３に示すように、テーブル定義情報２０１とカラム定義情報２０２から構成される。
【００３６】
テーブル定義情報２０１において、ＣＤＣ／ＣＤＷ識別子は、ＣＤＣ２２またはＣＤＷ処理部１３を特定する識別子である。
テーブル識別子は、連携元テーブル又は連携先テーブルをデータベース連携装置１内で一意に特定するための識別子である。
また、テーブルタイプは、連携元テーブル又は連携先テーブルの種別を示す情報であり、テーブル名は連携元テーブル又は連携先テーブルの名称を示す情報である。
また、テーブル定義情報２０１には、連携元テーブル又は連携先テーブルのカラム数、主キーとなるカラムの情報、参照関係を持つテーブルの情報、定義の登録日、更新日、定義のバージョンなどの情報が含まれる。
【００３７】
カラム定義情報２０２において、カラム識別子はカラムをデータベース連携装置１内で一意に特定するための識別子である。
テーブル識別子は、カラムが所属するテーブルの識別子である。
また、データ型は、カラムのデータ型を示し、数値精度は、カラムのデータ型が数値型の場合の数値の精度（桁数、少数以下の有効桁数）を示す。
また、カラム定義情報２０２には、カラムに含まれるデータのデータ長、カラム名、外部キーとなる場合の親カラム識別子などの情報が含まれる。
【００３８】
連携管理情報１７は、図４に示すように、プロセス管理表２０３、データ格納部情報２０４、個別排他制御情報２０５、個別データ格納情報２０６、外部識別子情報２０７、オープンハンドル情報２０８から構成される。
【００３９】
プロセス管理表２０３は、プロセスＩＤ、プロセス種別、外部識別子、状態、データ処理制御部ＩＤ、読み出し制御フラグ、データ格納部ＩＤ、初期化ハンドル、オープンハンドルから構成される。
プロセスＩＤは、受信部１１、変換部１２、ＣＤＷ処理部１３の各々のプロセスの識別子である。
プロセス種別は、プロセスＩＤで特定されるプロセスが、受信部１１、変換部１２、ＣＤＷ処理部１３のいずれのプロセスであるかを示す。
データ処理制御部ＩＤは、データ処理制御部１６の識別子であり、受信部１１から変換部１２へのメッセージのキューであるか、変換部１２からＣＤＷ処理部１３へのメッセージのキューであるかを示す。
読み出し制御フラグは、個別データ格納部２１からのデータ読み出しが可能か否かを示す。
【００４０】
データ格納部情報２０４は、データ格納部ＩＤ、個別データ数、個別排他制御情報、接続管理ＩＤ，連携対象論理テーブルＩＤ、個別データ格納情報から構成される。
データ格納部ＩＤは、データ格納部１９の識別子である。
接続管理ＩＤは、連携元テーブルと連携先データベース５の組み合せごとに設定される識別子である。前述した例では、連携元テーブルが４つ（Ａ−１、Ａ−２、Ｂ−１、Ｂ−２）であり、連携先テーブルが３つ（Ｘ、Ｙ、Ｚ）であるため、１２種類の接続管理ＩＤが設けられる。
連携対象論理テーブルＩＤは、プロセス管理表２０３のプロセスＩＤで特定されるプロセスが受信部１１及び変換部１２の場合は連携元テーブルの識別子が示され、ＣＤＷ処理部１３の場合は連携先テーブルの識別子が示される。
【００４１】
個別排他制御情報２０５は、個別排他制御ＩＤ、バッファ排他制御フラグ、オーバーフロー制御フラグから構成される。
個別排他制御ＩＤは、個別排他制御部２０の識別子である。
【００４２】
個別データ格納情報２０６は、個別データ格納部ＩＤ、接続管理ＩＤ重複数、連携対象カラム長総数（Ｓｌ）から構成される。
個別データ格納部ＩＤは、個別データ格納部２１の識別子である。
接続管理ＩＤ重複数は、個別データ格納部ＩＤで特定されている個別データ格納部２１から読み出された更新反映データにより、連携先テーブルのいくつのレコードが更新されるかを示す。
例えば、変換部１２ａ−１からの１つの更新反映データをＣＤＷ処理部１３ｘが連携先データベース５ｘの連携先テーブルＸ−１と連携先テーブルＸ−２に反映させる場合は、変換部１２ａ−１からの更新反映データをＣＤＷ処理部１３ｘに受け渡す個別データ格納部２１では、接続管理ＩＤ重複数は２となる。
連携対象カラム長総数（Ｓｌ）は、個別データ格納部ＩＤで特定されている個別データ格納部２１に、書き込まれるデータ長（レコード長）を示す。
例えば、変換部１２からＣＤＷ処理部１３への個別データ格納部２１の場合は、書き込み元の変換部１２が当該個別データ格納部２１に書き込む更新反映データのデータ長（レコード長）を示す。
【００４３】
外部識別子情報２０７は、プロセス管理表２０３のプロセスＩＤで特定されるプロセスが受信部の場合はＣＤＣｉｄ、変換部の場合は連携元論理テーブルＩＤ、ＣＤＷ処理部の場合は連携先データベースＩＤを示す。
【００４４】
オープンハンドル情報２０８は、オープンハンドル、入力／出力エッジ、排他制御情報（セマフォＩＤなど）、個別データ格納情報（メモリへのアドレスなど）から構成される。
【００４５】
ここで、入力エッジ、出力エッジについて説明する。
入力エッジはデータの入力元であり、出力エッジはデータの出力先である。
受信部１１にとっては、ＣＤＣが入力エッジとなり、変換部１２に更新済レコードを受け渡すための個別データ格納部２１が出力エッジとなる。
また、変換部１２にとっては、更新済レコードを受け取るための個別データ格納部２１が入力エッジとなり、ＣＤＷ処理部１３に更新反映データを受け渡すための個別データ格納部２１が出力エッジとなる。
また、ＣＤＷ処理部１３にとっては、更新反映データを受け取るための個別データ格納部２１が入力エッジとなり、連携先テーブルが出力エッジとなる。
例えば、ＣＤＷ処理部１３ｘが変換部１２ａ−１及び変換部１２ｂ−１の各々から更新反映データを受け取る場合は、変換部１２ａ−１用の個別データ格納部２１と、変換部１２ｂ−１用の個別データ格納部２１がそれぞれ入力エッジとなる。
また、ＣＤＷ処理部１３ｘが連携先テーブルＸ−１と連携先テーブルＸ−２の更新を行う場合は、連携先テーブルＸ−１と連携先テーブルＸ−２がそれぞれ出力エッジとなる。
【００４６】
次に、連携接続情報２４は、図５に示すように、接続入力情報２１０、接続出力情報２１１、変換部接続情報２１２から構成される。
【００４７】
接続入力情報２１０は、受信部１１についての情報であり、接続管理ＩＤ、接続管理バージョン、入力エッジＩＤ、出力エッジ数、連携元論理テーブルＩＤ、変換プロセス識別子からなる。
変換プロセス識別子は、受信部１１が更新済レコードを受け渡す変換部１２のプロセスＩＤである。
【００４８】
接続出力情報２１１は、ＣＤＷ処理部１３についての情報であり、接続管理ＩＤ、接続管理バージョン、入力エッジＩＤ、ＣＤＷｉｄ、出力エッジＩＤ、実行時付加情報（レコード長）、連携先論理テーブルＩＤからなる。
実行時付加情報（レコード長）は、ＣＤＷ処理部１３が受け渡し元の変換部１２から受け渡される更新反映データのデータ長（レコード長）である。
【００４９】
変換部接続情報２１２は、変換部１２についての情報であり、プロセス識別子、出力エッジ数、出力エッジ情報、入力エッジＩＤからなり、また、出力エッジ情報２１３は、出力エッジＩＤと実行時付加情報の組からなる。
【００５０】
更新データ到着ログ１５は、図６に示すような構成からなる。
更新データ到着ログ１５は、レコードを一意に特定するＩＤと連携元論理テーブルＩＤ、接続管理ＩＤ、単位時間あたりの平均トランザクション数、１トランザクションあたりの平均レコード数（更新済レコードの数）、最終更新日からなる。
【００５１】
次に、本実施の形態に係るデータベース連携装置１によるデータベース連携動作の詳細を説明する。
【００５２】
まず、変換部１２とＣＤＷ処理部１３はプロセス生成時に初期化処理として、連携メモリ管理部１８を呼び出し、それぞれ他の処理部からデータを取得するための個別データ格納部２１を生成する。
以下に、図１０をもとに個別データ格納部２１のサイズを算出する処理フローを記載する。
【００５３】
ＣＤＷ処理部１３は、連携メモリ管理部１８に、自身（ＣＤＷ処理部１３）の識別子であるＣＤＷｉｄを通知する（Ｓ２０１）。
連携メモリ管理部１８は、通知されたＣＤＷｉｄと同じＣＤＷｉｄが示される連携接続情報２４の接続出力情報２１１（図５）を１つ以上抽出し、抽出した接続出力情報２１１を接続管理ＩＤごとに分類する（Ｓ２０２）。
例えば、ＣＤＷ処理部１３ｘが変換部１２ａ−１及び変換部１２ｂ−１の各々からの更新反映データを用いて連携先データベース５ｘの連携先テーブルを更新する場合は、連携元テーブルＡ−１と連携先データベース５ｘとの組み合せに対応した接続管理ＩＤが記述されている接続出力情報２１１と、連携元テーブルＢ−１と連携先データベース５ｘとの組み合わせに対応した接続管理ＩＤが記述されている接続出力情報２１１が存在することになる。
このように、接続出力情報２１１に記述されている接続管理ＩＤが複数種類ある場合は、連携メモリ管理部１８は、Ｓ２０２において、接続管理ＩＤごとに接続出力情報２１１をグルーピングする。
【００５４】
次に、連携メモリ管理部１８は、接続出力情報２１１のグループごとに、接続出力情報２１１から実行時付加情報（レコード長）を取得し、取得した実行時付加情報（レコード長）の和を算出し、実行時付加情報（レコード）の和を個別データ格納部２１のブロック内レコードのサイズ（Ｓｌ）として定義する（Ｓ２０３、Ｓ２０４）。
接続管理ＩＤは、連携元テーブルと連携先データベースとの組み合わせを特定する識別子であるため、接続管理ＩＤが同一の接続出力情報２１１であっても出力エッジＩＤが異なっている場合がある。
例えば、ＣＤＷ処理部１３ｘが変換部１２ａ−１からの更新反映データを用いて連携先データベース５ｘ内の連携先テーブルＸ−１と連携先テーブルＸ−２の更新を行う場合は、接続管理ＩＤが同一であっても連携先テーブルＸ−１に対応する出力エッジＩＤが記述されている接続出力情報２１１と連携先テーブルＸ−２に対応する出力エッジＩＤが記述されている接続出力情報２１１が存在することになる。
連携メモリ管理部１８は、Ｓ２０３とＳ２０４において、接続出力情報２１１のグループごとの実行時付加情報（レコード長）の総和を求める。
【００５５】
次に、連携メモリ管理部１８は、当該接続管理ＩＤをキーにして更新データ到着ログ１５（図６）から平均トランザクション数／単位時間（Ｓｔｎ）、平均レコード数／トランザクション（Ｓｔｌ）の値を取得する（Ｓ２０５）。
次に、連携メモリ管理部１８は、個別データ格納部２１として（Ｓｔｎ×接続管理ＩＤ重複数×Ｓｔｌ×Ｓｌ）に相当するサイズのバッファを取得する（Ｓ２０６）。
Ｓ２０６の積算に用いた接続管理ＩＤ重複数は、同じ接続管理ＩＤが付されている接続出力情報２１１の個数、つまり、Ｓ２０２の分類の結果、同じ接続管理ＩＤが付されているとしてグルーピングされた接続出力情報２１１の個数である。
更に、連携メモリ管理部１８は、Ｓ２０６で生成した個別データ格納部２１への接続子（例えば、メモリアドレス）を、個別データ格納情報２０６（図４）の個別データ格納部ＩＤ欄に格納し、接続管理ＩＤ重複数欄にＳ２０６の積算に用いた接続管理ＩＤ重複数を格納する。
なお、連携メモリ管理部１８は、Ｓ２０３以降の処理を連携先論理テーブルＩＤの一覧に属する全ての接続管理ＩＤに対して行う（Ｓ２０７）。
全ての接続管理ＩＤに対してＳ２０３以降の処理が行われた後は、連携メモリ管理部１８は、生成した個別データ格納部２１に対して初期化ハンドルを生成し、生成した初期化ハンドルをＣＤＷ処理部１３に通知する。
【００５６】
このように、連携メモリ管理部１８は、各ＣＤＷ処理部１３に対して接続管理ＩＤごとに個別データ格納部２１を生成している。
接続管理ＩＤは連携元テーブルごとに異なっており、変換部１２は連携元テーブルごとに設けられている。
このため、連携メモリ管理部１８は、各ＣＤＷ処理部１３に対して、更新反映データの受け渡し元の変換部１２ごとに、個別データ格納部２１を生成しているといえる。
そして、個別データ格納部２１のサイズは、変換部１２がＣＤＷ処理部１３に受け渡す更新反映データのデータ長（Ｓｌ）と、変換部１２が対象としている連携元テーブルからの更新済レコードの単位時間あたりの受信数（Ｓｔｎ×Ｓｔｌ）と、ＣＤＷ処理部１３が更新反映データを反映させるレコード数（接続管理ＩＤ重複数）との積算により得られるサイズとしている。
【００５７】
以下にて、変換部１２の初期化処理の動作を説明する。
【００５８】
変換部１２は、自身（変換部１２）のＩＤがプロセス識別子の欄に記述されている変換部接続情報２１２（図５）から入力エッジＩＤを取得し、連携メモリ管理部１８に通知する。
連携メモリ管理部１８は、通知された入力エッジＩＤと同じ入力エッジＩＤが記述されている接続入力情報２１０（図５）を抽出し、抽出した接続入力情報２１０内の連携元論理テーブルＩＤを取得する。
次に、連携メモリ管理部１８は、取得した連携元論理テーブルＩＤと同じ連携元論理テーブルＩＤがテーブル識別子の欄に含まれている連携元テーブル情報９（テーブル定義情報：図３）を抽出し、抽出した連携元テーブル情報９内のカラム情報を取得する。
次に、連携メモリ管理部１８は、取得したカラム情報に対応付けられているカラム定義情報２０２（図３）のカラム識別子毎にデータ長を取得し、取得したデータ長を集計する。
次に、連携メモリ管理部１８は、集計した値を連携対象カラム長総数として個別データ格納部のブロック内レコードサイズ（Ｓｌ）として定義する。
次に、連携メモリ管理部１８は、当該連携元テーブルＩＤをキーにして更新データ到着ログ１５（図６）から平均トランザクション数／単位時間（Ｓｔｎ）、平均レコード数／トランザクション（Ｓｔｌ）の値を取得する。
次に、連携メモリ管理部１８は、個別データ格納部２１としてＳｔｎ×Ｓｔｌ×Ｓｌに相当するサイズのバッファを取得する。
そして、連携メモリ管理部１８は、生成した個別データ格納部２１への接続子（例えば、メモリアドレス）を、個別データ格納情報２０６（図４）の個別データ格納部ＩＤ欄に格納し、当該連携元論理テーブルＩＤを、データ格納部情報２０４（図４）の連携対象論理テーブルＩＤ欄に格納する。
最後に、連携メモリ管理部１８は、初期化ハンドルを生成し、生成した初期化ハンドルを変換部１２に通知する。
【００５９】
次に、受信部１１、変換部１２が処理データを書き込むデータ格納部との接続を確立するオープン処理について記述する。
【００６０】
受信部１１は、ＣＤＣ２２から取得した更新済レコードを変換部１２の個別データ格納部２１に書き込むためのオープンハンドルを取得する。
受信部１１は、連携メモリ管理部１８に初期化ハンドルと入力エッジＩＤを通知する。
連携メモリ管理部１８は、通知された入力エッジＩＤと同じ入力エッジＩＤが示されている連携接続情報の接続入力情報２１０（図５）を抽出し、抽出した接続入力情報２１０内の変換プロセス識別子と連携元論理テーブルＩＤを取得する。
次に、連携メモリ管理部１８は、取得した変換プロセス識別子と同じプロセスＩＤが示されている連携管理情報１７のプロセス管理表２０３（図４）を抽出し、抽出したプロセス管理表２０３内のデータ格納部ＩＤを取得する。
次に、取得したデータ格納部ＩＤに対応付けられているデータ格納部情報２０４の中から、取得した連携元論理テーブルＩＤと同じ連携対象論理テーブルＩＤが示されているデータ格納部情報２０４を抽出する。
次に、連携メモリ管理部１８は、抽出したデータ格納部情報２０４内の個別データ格納情報に格納されている個別データ格納部ＩＤを取得する。
次に、連携メモリ管理部１８は、取得した個別データ格納部ＩＤをキーに共有メモリをマップし、抽出したデータ格納部情報２０４内の個別排他制御情報に格納されている個別排他制御ＩＤをキーにセマフォを生成する。
更に、受信部１１から通知された初期化ハンドルと同じ初期化ハンドルが示されている連携管理情報１７のプロセス管理表２０３（図４）を抽出し、抽出したプロセス管理表２０３に対応付けられているオープンハンドル情報２０８の個別排他制御情報の欄にセマフォキーを格納し、個別データ格納情報の欄に共有メモリのアドレス（個別データ格納部のアドレス）を格納し、入力／出力エッジの欄に受信部１１から通知された入力エッジＩＤを格納し、オープンハンドルを返却する。
【００６１】
変換部１２は、更新反映データを個別データ格納部２１に書き込むためのオープンハンドルを取得する。
変換部１２は、連携メモリ管理部１８に初期化ハンドルと出力エッジＩＤを通知する。
連携メモリ管理部１８は、通知された出力エッジＩＤと同じ出力エッジＩＤが示されている連携接続情報２４の接続出力情報２１１（図５）を抽出し、抽出した接続出力情報２１１からＣＤＷｉｄと接続管理ＩＤを取得する。
次に、連携メモリ管理部１８は、取得したＣＤＷｉｄと同じプロセスＩＤが示されている連携管理情報１７のプロセス管理表２０３（図４）を抽出し、抽出したプロセス管理表２０３に対応付けられているデータ格納部情報２０４（図４）のうち、取得した接続管理ＩＤと同じ接続管理ＩＤが示されているデータ格納部情報２０４を抽出する。
次に、連携メモリ管理部１８は、抽出したデータ格納部情報２０４に対応付けられている個別データ格納情報２０６（図４）内の個別データ格納部ＩＤと、個別排他制御情報２０５（図４）内の個別排他制御ＩＤを取得する。
次に、連携メモリ管理部１８は、取得した個別データ格納部ＩＤをキーに個別データ格納部２１をマップする。
より具体的には、Ｃ言語で実装した場合にはマップファイルによる共有メモリをマップする操作となる。
さらに、連携メモリ管理部１８は、取得した個別排他制御ＩＤをキーに排他制御用のセマフォを生成する。
次に、連携メモリ管理部１８は、オープンハンドルを生成し、また、変換部１２から通知された初期化ハンドルと同じ初期化ハンドルが示されているプロセス管理表２０３（図４）を抽出し、抽出したプロセス管理表２０３に対応付けられているオープンハンドル情報２０８に、生成したオープンハンドルの情報を格納し、個別排他制御情報の欄にセマフォキーを格納し、個別データ格納情報の欄に共有メモリのアドレス（個別データ格納部のアドレス）を格納し、入力／出力エッジの欄に変換部１２から通知された出力エッジＩＤを格納し、オープンハンドルを変換部１２に返却する。
【００６２】
上述したように本実施の形態によれば、各個別データ格納部内のブロック数およびブロックサイズをデータベース設計情報および過去の更新データ到着ログから算出することが可能となる。
これにより、データ格納部が確保するメモリ領域が最適化され、データ連携処理実行時のメモリオーバフローの発生を抑制し、かつ利用されない無駄なメモリの確保を回避する。
そして、データベース連携装置１を実装するサーバ上で稼動可能な変換部１２およびＣＤＷ処理部１３の数を最大化することが可能となり、データベース連携装置１のスループット（単位時間あたりの処理レコード数）を向上させることができる。
また、変換部１２ごとに個別データ格納部２１を生成するため、各変換部１２における更新済レコードの読み出し、更新反映データの生成、更新反映データの個別データ格納部２１への書き込みは、受信部１１による更新済レコードの受信及び更新済レコードの書き込みと非同期に行うことができる。
更に、ＣＤＷ処理部１３ごとに個別データ格納部２１を生成するため、各ＣＤＷ処理部１３における更新反映データの読み出し、更新反映データを用いた連携先テーブルの更新は、受信部１１による更新済レコードの受信及び更新済レコードの書き込み、各変換部１２による更新済レコードの読み出し、更新反映データの生成、更新反映データの個別データ格納部２１への書き込みと非同期に行うことができる。
このため、各ＣＤＷ処理部１３は、１トランザクションにおいて連携先テーブルの２個以上のレコードに対する更新を行うことができる。
【００６３】
次に、受信部１１による更新済レコードの個別データ格納部２１への書き込みについて説明する。
【００６４】
受信部１１は、オープン処理において取得したオープンハンドルと一致するオープンハンドルが定義されている連携管理情報１７のプロセス管理表２０３（図４）を抽出し、抽出したプロセス管理表２０３に対応付けられているオープンハンドル情報２０８の個別排制御情報から個別排他制御部２０のセマフォを取得し、個別データ格納部２１への書込み権利を取得し、ＣＤＣ２２から受信した更新済レコードを個別データ格納部２１にデータを書き込む。
書込みが完了したら、個別排他制御部２０のセマフォを解放し、データ処理制御部１６にプロセス間通信用のメッセージを書き込む。
データ処理制御部１６は、図７に示すようなリスト構造を備えたＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）構造であり、ＣＤＣ２２から受信した順に連携先データベース５に更新済レコードを反映する機能を有する。
受信部１１は、データ処理制御部１６にプロセス間通信用のメッセージを書き込んだ後、読み出し制御フラグのセマフォを解放する。
これにより、変換部１２にデータ書込みイベントが通知されることとなり、連携元データベース３の更新順序制約を守り、連携先データベース５に更新データを反映することができる。
【００６５】
次に、図９をもとに、変換部１２による更新反映データの個別データ格納部２１への書き込みについて説明する。
なお、図９は変換部１２における１トランザクションの処理を表している。
【００６６】
変換部１２は、自身（変換部１２）のプロセスＩＤが記述されているプロセス管理表２０３から（図４）初期化ハンドルを取得し、初期化ハンドルに紐付けられた個別データ格納部２１への接続先アドレスを取得する（Ｓ１００）。
取得した接続先アドレスに基づき、個別データ格納部２１から更新済レコードを読み出し、読み出した更新済レコードに対して変換処理を行って更新反映データを生成する。
なお、変換部１２は、変換処理を実施する際に連携接続情報２４（図５）から取得した出力エッジをキーに連携管理情報１７を参照してオープンハンドルを取得する。
次に、変換部１２は、オープンハンドルをキーに管理された個別排他制御部２０のセマフォを取得する（Ｓ１０１）。
ＣＤＷ処理部１３の個別データ格納部２１のブロックが全て未処理状態の場合、すなわちＣＤＷ処理部１３がデキューしていないデータで個別データ格納部２１のバッファが満たされている場合は、変換部１２にて書込み待ちが発生することとなるが、本実施の形態では、単位時間当たりのトランザクション到着頻度を更新データ到着ログ１５で蓄積し、統計処理の結果を図６の形式で保管している。
この図６の情報をもとに連携メモリ管理部１８が個別データ格納部のブロック数を算出していることから、ＣＤＷ処理部１３が正常稼動時に個別データ格納部のブロックが全て未処理となる事象が発生することを回避することができる。
このとき、変換部１２が複数のＣＤＷ処理部１３に更新反映データを書き込む場合は、出力エッジ毎に対応するオープンハンドル、個別排他制御部２０のセマフォを全て取得していることが必要である（Ｓ１０２）。
次に、変換部１２は、オープンハンドル、セマフォを取得した個別データ格納部２１への書込み処理を並列に実施する（Ｓ１０３）。
次に、変換部１２は、出力エッジに該当するそれぞれの個別排他制御部２０のセマフォを解放する（Ｓ１０４）。
次に、変換部１２は、全ての個別排他制御部２０のセマフォを開放したことを確認する（Ｓ１０５）。
次に、変換部１２は、ＣＤＷ処理部１３のデータ処理制御部１６のセマフォを取得する（Ｓ１０６）。
次に、変換部１２は、データ処理制御部１６へのエンキュー処理を行い、出力エッジ毎に図８に示す更新データ情報３１０の出力エッジと更新レコード情報の組を格納する（Ｓ１０７）。
次に、変換部１２は、ＣＤＷ処理部１３のデータ処理制御部１６のセマフォを解放する（Ｓ１０８）。
すべてのＣＤＷ処理部１３のデータ処理制御部１６へのエンキューが完了したら、１トランザクションデータに対する変換部１２の処理が完了する（Ｓ１０９）。
【００６７】
次に、図１４をもとに、ＣＤＷ処理部１３による連携先データベースへのデータ反映処理を説明する。
【００６８】
ＣＤＷ処理部１３は、自身（ＣＤＷ処理部１３）のプロセスＩＤと同じプロセスＩＤが示されているプロセス管理表２０３（図４）を抽出し、抽出したプロセス管理表２０３に格納されている初期化ハンドルを取得する（Ｓ４０１）。
次に、ＣＤＷ処理部１３は、抽出したプロセス管理表２０３に対応付けられているデータ格納部情報のデータ格納部ＩＤをもとに個別排他制御情報を取得し、当該ＣＤＷ処理プロセスが読み込む個別データ格納部ＩＤを取得する（Ｓ４０２）。
次に、当該ＣＤＷ処理部１３へのデータ書込みを制御するデータ処理制御部１６（ＦＩＦＯ構造）に蓄積される書込み待ちデータをデキュー処理する。
データ処理制御部１６には、個別データ格納部２１に蓄積されている変換部１２からの更新反映データに対応する書き込み要求メッセージが格納されている。
このとき、データ処理制御部１６から複数の書き込み要求メッセージを一括してデキューするようにしてもよい（Ｓ４０３）。
ＣＤＷ処理部１３は、先に取得した個別排他制御情報をもとに各個別データ格納部２１をロックし、格納されている更新反映データをローカルメモリにコピーする（Ｓ４０４）。
データ処理制御部１６から全ての書き込み要求メッセージを取得し、また、全ての更新反映データをローカルメモリにコピーした後（Ｓ４０５）に、ＣＤＷ処理部１３はデータ処理制御部１６からデキューした書き込み要求メッセージの順にローカルメモリにコピーした更新反映データをもとに、連携先データベース５のＤＢＭＳ（ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）に対して発行するＳＱＬ文を生成する（Ｓ４０６）。
次に、ＣＤＷ処理部１３は、Ｓ４０６で生成したＳＱＬ文を順に実行する（Ｓ４０７）。
このとき、ＳＱＬ１文ごとにＣｏｍｍｉｔ処理は実施しない。
データ処理制御部１６と個別データ格納部２１から取得した全てのデータに対するＳＱＬ文を発行したのち、ＣＤＷ処理部１３は連携先データベース５のＤＢＭＳに対してＣｏｍｍｉｔ処理を発行する。
これにより、ＣＤＷ処理部１３が実施するＣｏｍｍｉｔ処理の発行回数が削減され、連携先データベースとの通信処理時間削減の効果を得る（Ｓ４０９）。
【００６９】
本実施の形態に係るデータベース連携装置は、複数の連携元データベース３を対象に更新データを複数の連携先データベース５に配信する。
そして、本実施の形態に係るデータベース連携装置では、更新データの仕様を変換する複数の変換部１２と、複数の変換部１２から変換データの入力を受付け、連携先データベース５に反映するＣＤＷ処理部１３とに対して、データ連携連動型バッファ管理部１４を備えている。
そして、データ連携連動型バッファ管理部１４において、ＣＤＷ処理部１３ごとに、変換部１２ごとの個別データ格納部２１と個別排他制御部２０を構成することで、変換部１２からのデータ書込みの並列処理が可能となり、スループットが向上する。
【００７０】
以上、本実施の形態では、
複数のデータベースの間でデータを転送するデータベース連携装置を説明した。
【００７１】
また、本実施の形態では、
データ連携の定義が記載された統合連携情報とデータ連携処理部、データ連携連動型バッファ管理部を備え、
データ連携処理部は、少なくとも変換部、ＣＤＷ処理部からなり、
データ連携連動型バッファ管理部は、変換部とＣＤＷ処理部間のデータの受け渡しをＣＤＷ処理部ごとに制御するデータ処理制御部とＣＤＷ処理部ごとに構成したデータ格納部を備え、
データ格納部は当該ＣＤＷ処理部にデータを書き込む変換部ごとに個別排他制御部と個別データ格納部を備え、
連携元データベースのテーブルが更新された際に、更新レコードの取得、変換、連携先データベースのテーブルへの反映を非同期に処理し、複数の更新レコードを一括して連携先データベースに反映するデータベース連携装置を説明した。
【００７２】
また、本実施の形態では、
データ連携連動型バッファ管理部は、連携管理情報を備え、
連携管理情報は、データ反映処理を実施するＣＤＷ処理部ごとに連携元データベースの変換処理を実施するプロセス単位で構成した個別データ格納部の情報、および個別排他制御情報の対応関係を備え、
個別データ格納部に接続管理ＩＤ重複数、連携対象カラム長総数を備えることを説明した。
【００７３】
また、本実施の形態では、
統合連携情報に、連携元データベースのカラム単位で連携先データベースへの連携情報を連携元データベースカラム識別子と連携先データベースカラム識別子の組で構成する情報とを備え、
データ連携処理部の変換部が、当該情報を用いてＣＤＷ処理部にデータを書き込む際に、データ書込み先となる全ての各個別データ格納部にデータを一括して書込み、書き込み完了後にデータ処理制御部を介して、複数の当該ＣＤＷ処理部に書込みを通知し、複数のＣＤＷ処理部を並列に稼動することを説明した。
【００７４】
また、本実施の形態では、
特定のＣＤＷ処理部がデータを読み取るための個別データ格納部を複数のデータバッファから構成し、それぞれの個別データ格納部に対する個別排他制御を設けることにより、複数の変換部からの並列書込みを可能とすることを説明した。
【００７５】
また、本実施の形態では、
連携元データベースから送信された抽出データの単位時間当たりの到着回数と単位到着当たりのレコード数を更新データ到着ログとして蓄積し、
連携メモリ管理部が、当該ログに対する統計処理手段を備え、
連携情報更新時に特定のＣＤＷ処理部が対象とする連携情報に定義されるカラム長の合計と単位到着あたりのレコード数の積から個別データ格納部内のブロックサイズを算出し、データの到着回数とブロックサイズと同一連携元テーブルを対象とした連携定義数の積から、連携元テーブルあたりのデータバッファサイズを算出し、特定ＣＤＷ処理部に対する全連携元テーブルに対して当該データバッファサイズの算出を実施し、個別データ格納部の容量を算出することを説明した。
【００７６】
実施の形態２．
本実施の形態では、連携元データベース３と連携先データベース５の間で新しいデータベース定義を追加する例を図面を参照して記載する。
【００７７】
例えば、いずれかの連携先データベース５で連携先テーブルが追加された場合には、追加された連携先テーブルに対応させて、変換部１２からＣＤＷ処理部１３に更新反映データを受け渡すための個別データ格納部２１の容量を増やす又は新たな個別データ格納部２１を生成する必要がある。
本実施の形態では、状況の変化に応じて個別データ格納部２１の容量の変更や新たな個別データ格納部２１の生成を行う例を説明する。
【００７８】
図１１をもとに連携定義が変更された際の処理フローを記載する。
ここでは、連携先データベース５で連携先テーブルが追加された場合、すなわち、ＣＤＷ処理部１３の出力エッジ数が増加した場合を例にして説明を行う。
【００７９】
ＣＤＷ処理部１３は、追加された出力エッジＩＤと自身のＣＤＷｉｄを連携メモリ管理部１８に通知する。
なお、この時点では、追加された出力エッジＩＤが含まれる接続出力情報２１１（図５）は生成済みであるとする。
連携メモリ管理部１８は、通知された出力エッジＩＤとＣＤＷｉｄが示される接続出力情報２１１を抽出し、抽出した接続出力情報２１１に示される接続管理ＩＤを取得する（Ｓ３０１）。
次に、連携メモリ管理部１８は、通知されたＣＤＷｉｄと同じプロセスＩＤが示されている連携管理情報１７のプロセス管理表２０３（図４）を抽出し、抽出したプロセス管理表２０３に対応付けられているデータ格納部情報２０４のうち、Ｓ３０１で取得した接続管理ＩＤと同じ接続管理ＩＤが示されているデータ格納部情報２０４を検索する（Ｓ３０２）。
該当するデータ格納部情報２０４が抽出できなかった場合、すなわち、Ｓ３０１で取得した接続管理ＩＤが未登録の場合（Ｓ３０３でＹＥＳ）、新たな個別データ格納部２１と個別排他制御部２０を生成する必要があるため、連携メモリ管理部１８は、図Ｓ３０１で抽出した接続出力情報２１１より実行時付加情報（レコード長）を取得し、個別データ格納部２１のブロック内レコードのサイズ（Ｓｌ）とする。
次に、連携メモリ管理部１８は、更新データ到着ログ１５を参照し、接続出力情報２１１から取得した接続管理ＩＤが一致するレコードを選択し、平均トランザクション数／単位時間（Ｓｔｎ）、平均レコード数／トランザクション（Ｓｔｌ）の値を取得する（Ｓ３０４）。このとき、連携元となる変換部１２が追加された場合、すなわち連携元データベースのテーブルが新規に追加された場合には、平均トランザクション数、平均レコード数が更新データ到着ログに記録されていない場合がある。この場合には、予め指定した規定値を平均トランザクション数、平均レコード数として割り当て、個別データ格納部２１のサイズを算出する際の指標とする。
次に、連携メモリ管理部１８は、個別データ格納部として（Ｓｔｎ×重複接続管理ＩＤ数）×Ｓｔｌ×Ｓｌに相当するサイズのバッファを取得し、個別データ格納情報２０６（図４）の個別データ格納部ＩＤ欄にバッファへの接続子を、接続管理ＩＤ欄に当該接続管理ＩＤを格納する行を追加する（Ｓ３０５）。
次に、ＣＤＷ処理部１３が個別データ格納部２１へのアクセスを確立する（Ｓ３０６）。
【００８０】
一方、Ｓ３０３にて接続管理ＩＤが存在する場合、Ｓ３０１で取得した接続出力情報２１１から実行時付加情報（レコード長）を取得し、取得した実行時付加情報（レコード長）を、Ｓ３０２の検索の結果得られたデータ格納部情報２０４（図４）に対応付けられている個別データ格納情報２０６の連携対象カラム長総数（Ｓｌ）に加算する（Ｓ３０７）。
また、連携メモリ管理部１８は、個別データ格納情報２０６の接続管理ＩＤ重複数を加算する（Ｓ３０８）。
次に、連携メモリ管理部１８は、接続管理ＩＤをキーに更新データ到着ログ１５から最新の、平均トランザクション数／単位時間（Ｓｔｎ）、平均レコード数／トランザクション（Ｓｔｌ）の値を取得し、Ｓｔｎ×Ｓｔｌ×Ｓｌを算出し、個別データ格納部の増分容量を算出する（Ｓ３０９）。
次に、連携メモリ管理部１８は、変換部接続情報（図５）から出力エッジＩＤをもとに変換部１２のプロセス識別子を検索し、プロセス識別子を取得した変換部１２と追加対象のＣＤＷ処理部１３に対して、当該個別データ格納部２１へのアクセス遮断処理の実施を通知する（Ｓ３１０）。
アクセス遮断完了後、連携メモリ管理部１８は、当該個別データ格納部２１の容量拡大を実施する（Ｓ３１１）。
最後に、連携メモリ管理部１８は、当該個別データ格納部２１へのアクセスが遮断されていた変換部１２及びＣＤＷ処理部１３に再オープン処理実施を通知する（Ｓ３１２）。
【００８１】
次に、Ｓ３０４〜Ｓ３０６の処理時にて新規に個別データ格納部２１を生成した場合の変換部１２によるオープン処理のフローを説明する。
【００８２】
変換部１２は、連携メモリ管理部１８に対して初期化ハンドルと出力エッジＩＤを通知する。
連携メモリ管理部１８は、連携接続情報の接続先情報２１１（図５）から出力エッジＩＤをキーに、ＣＤＷｉｄと接続管理ＩＤを取得する。
次に、連携メモリ管理部１８は、取得したＣＤＷｉｄと同じプロセスＩＤが示されている連携管理情報１７のプロセス管理表２０３（図４）を抽出し、抽出したプロセス管理表２０３に対応付けられているデータ格納部情報２０４のうち、取得した接続管理ＩＤと同じ接続管理ＩＤが示されているデータ格納部情報２０４を抽出する。
次に、連携メモリ管理部１８は、抽出したデータ格納部情報２０４に対応付けられている個別データ格納情報の個別データ格納部ＩＤと、個別排他制御情報の個別排他制御ＩＤを取得する。
次に、連携メモリ管理部１８は、取得した個別データ格納部ＩＤをキーに個別データ格納部２１をマップする。
より具体的には、Ｃ言語で実装した場合にはマップファイルによる共有メモリをマップする操作となる。
さらに、連携メモリ管理部１８は、個別排他制御ＩＤをキーに排他制御用のセマフォを生成する。
次に、連携メモリ管理部１８は、オープンハンドルを生成し、また、変換部１２から通知された初期化ハンドルと同じ初期化ハンドルが示されているプロセス管理表２０３（図４）を抽出し、抽出したプロセス管理表２０３に対応付けられているオープンハンドル情報２０８に、生成したオープンハンドルの情報を格納し、個別排他制御情報の欄にセマフォキーを格納し、個別データ格納情報の欄に共有メモリのアドレス（個別データ格納部のアドレス）を格納し、入力／出力エッジの欄に変換部１２から通知された出力エッジＩＤを格納し、オープンハンドルを変換部１２に返却する。
【００８３】
本実施の形態によれば、連携接続情報２４を更新した場合に、更新された連携接続情報２４に関連する変換部１２とＣＤＷ処理部１３の処理のみが中断され、データ格納部１９とのオープン処理が発生することとなる。
従来では、連携接続情報２４の更新によりプロセス間通信を実施するためバッファを共有する全ての変換部とＣＤＷ処理部の処理を中断していた。
しかし、本実施の形態により、オープン処理の発生対象を連携元テーブルとして追加されたテーブルに対応する変換部１２と連携先テーブルを構成するデータベースに対応して稼動するＣＤＷ処理部１３のみに限定することが可能となり、データベース連携装置のスループットを向上させることができる。
【００８４】
このように、本実施の形態では、いずれかのＣＤＷ処理部１３が対象とする連携先テーブルが変化した場合に、当該ＣＤＷ処理部１３以外のＣＤＷ処理部１３と、当該ＣＤＷ処理部１３を更新反映データの受け渡し先としている変換部１２以外の変換部１２の動作に影響を与えずに、当該ＣＤＷ処理部１３に対応する新たな個別データ格納部２１の生成及び当該ＣＤＷ処理部１３に対応する既存の個別データ格納部２１の容量の変更を行うことができる。
【００８５】
以上、本実施の形態では、
統合連携情報が更新された際に、連携先テーブル情報を参照し、連携先テーブル情報に追加された新たな連携先テーブルのカラム構成情報に基づき、変換部から書き込まれるデータ長を算出する連携メモリ管理部を備え、
連携先データベースとして新たに追加されたレコードのデータ長に応じて個別データ格納部の容量を算出し、個別データ格納部を拡張可能なデータベース連携装置を説明した。
【００８６】
実施の形態３．
本実施の形態では、データベース連携装置１を実装するハードウェアに加えて、個別データ格納部２１のデータを一時的に格納する二次記憶格納部２６を設けた例を、図面を参照して説明する。
【００８７】
図１２は、本実施の形態に係るシステム構成例を示す。
なお、図１２では、作図上の理由から、データ連携設計部６、データ連携設計情報７の図示を省略しているが、図２と同様に、データベース連携装置１には、データ連携設計部６、データ連携設計情報７が含まれているものとする。
本実施の形態では、図１に示すデータベース連携装置１の構成に加えて、二次記憶装置である二次記憶格納部２６が含まれるデータ退避装置２７を設けている。
データ退避装置２７とデータベース連携装置１は、同一のハードウェア装置に実装しても、異なるハードウェア装置に実装してもよい。
また、データ退避装置２７を複数のデータベース連携装置１で利用する構成であってもよい。
【００８８】
実施の形態１及び２では、個別データ格納部２１を主記憶装置（共有メモリ）上に生成している。
連携先データベース５がなんらかの理由により停止した場合、ＣＤＷ処理部１３は連携先データベース５に対する書込み処理を実施することができないため、個別データ格納部２１に格納されている更新反映データを消去することができない。
この場合、個別データ格納部２１を実装するメモリが枯渇し、変換部１２の処理が待ち状態となるため、その影響が受信部１１に伝播し、ＣＤＣ２２からの更新データ受け取りが滞ることになってしまう。
【００８９】
そこで、本実施の形態では、二次記憶格納部２６が含まれるデータ退避装置２７を備えることで、個別データ格納部２１に格納すべき更新反映データを一時的に二次記憶格納部２６に退避させ、変換部１２の処理待ち状態の発生を回避し、ＣＤＣ２２からの更新データ到着遅れを発生させないようにする。
つまり、個別データ格納部２１における更新反映データの蓄積量が所定レベルを超え、オーバーフローが近くなると、連携メモリ管理部１８は、二次記憶格納部２６内に更新反映データ用の個別データ格納部２１を生成する。
変換部１２は、連携メモリ管理部１８により二次記憶格納部２６内に個別データ格納部２１が生成される前は、主記憶装置（共有メモリ）内の個別データ格納部２１に更新反映データを書き込み、連携メモリ管理部１８により二次記憶格納部２６内に個別データ格納部２１が生成された後は、二次記憶格納部２６内の個別データ格納部２１に更新反映データを書き込む。
また、同様に、個別データ格納部２１における更新済レコードの蓄積量が所定レベルを超え、オーバーフローが近くなると、連携メモリ管理部１８は、二次記憶格納部２６内に更新済レコード用の個別データ格納部２１を生成する。
受信部１１は、連携メモリ管理部１８により二次記憶格納部２６内に個別データ格納部２１が生成される前は、主記憶装置（共有メモリ）内の個別データ格納部２１に更新済レコードを書き込み、連携メモリ管理部１８により二次記憶格納部２６内に個別データ格納部２１が生成された後は、二次記憶格納部２６内の個別データ格納部２１に更新済レコードを書き込む。
【００９０】
以上、本実施の形態では、
主記憶装置上に構成した個別データ格納部の容量を超過する連携対象データの入力ある場合に、二次記憶格納部に一時的に連携対象データを格納するための領域を確保し、データ処理制御部が主記憶以外のデータ領域を参照するデータベース連携装置を説明した。
【００９１】
実施の形態４．
本実施の形態では、図１２に示すデータベース連携装置１の構成に加えて、データ退避装置２７に二次記憶制御部２８を設ける例を説明する。
【００９２】
図１３は、本実施の形態に係るシステム構成例を示す。
なお、図１３でも、作図上の理由から、データ連携設計部６、データ連携設計情報７の図示を省略しているが、図２と同様に、データベース連携装置１には、データ連携設計部６、データ連携設計情報７が含まれているものとする。
図１３では、図１２の構成に比べて、データ退避装置２７に二次記憶制御部２８が追加されている。
実施の形態３における二次記憶退避処理では、二次記憶格納部２６にデータ（更新済レコード、更新反映データ）を書き込む際に書込み確定処理を実施するため、書込み速度が遅く、データベース連携装置１のスループットを著しく低下させる場合がある。
本実施の形態では、二次記憶制御部２８が、書き込み元のデータ連携処理部２３の識別子と、書き込み先の二次記憶格納部２６と、読み出し対象のデータ連携処理部２３の識別子を対応づけて保持する。
これにより、二次記憶格納部２６への書込み処理が二次記憶制御部２８に要求された場合、二次記憶制御部２８では要求元のデータ連携処理部２３の識別子を受け取り、対応する退避領域へデータを一時格納する。
このとき、二次記憶格納部２６のディスクへの書込み確定処理を実施せず、二次記憶格納部２６のメモリ上に書き込み対象のデータを留める。
データベース連携装置１のデータ連携処理部２３からデータの読込み要求があった際に、二次記憶制御部２８は、要求元のデータ連携処理部２３の識別子を取得し、対応する二次記憶格納部２６に対する確定処理を実施し、二次記憶格納部２６からの読込み処理でのみ唯一の確定処理を実施する。
より具体的には、データ退避装置２７としてリレーショナルデータベースを活用した際、データ書込み時にコミットせず、データ読込み要求が二次記憶制御部２８に到着した場合にコミットを実施し、確定したデータを読み込み要求元に返却する構成とする。
【００９３】
このように、本実施の形態では、二次記憶制御部２８は、受信部１１／変換部１２による二次記憶格納部２６内の個別データ格納部２１への更新済レコード／更新反映データの書き込みの際には書き込みを確定させず、変換部１２／ＣＤＷ処理部１３による二次記憶格納部２６内の個別データ格納部２１からの更新済レコード／更新反映データの読み出しの際に、受信部１１／変換部１２による更新済レコード／更新反映データの書き込みを確定させる。
このため、書込み確定処理が繰り返し発生することによるデータベース連携装置１のスループット低下を抑制することができる。
【００９４】
以上、本実施の形態では、
二次記憶としてデータを格納する二次記憶格納部と、二次記憶制御部を備えるデータベース連携システムを説明した。
より具体的には、
二次記憶制御部が、
二次記憶格納部への書込み処理と読み出し処理を制御し、
書き込み処理時にはデータ書込み確定処理を実施せず、読み出し処理時にデータ確定処理を実施し、
データ確定処理の実施回数を抑えて、退避装置に対するデータベース連携装置の処理時間を高速化することを説明した。
【００９５】
最後に、実施の形態１〜４に示したデータベース連携装置１のハードウェア構成例について説明する。
図１５は、実施の形態１〜４に示すデータベース連携装置１のハードウェア資源の一例を示す図である。
なお、図１５の構成は、あくまでもデータベース連携装置１のハードウェア構成の一例を示すものであり、データベース連携装置１のハードウェア構成は図１５に記載の構成に限らず、他の構成であってもよい。
【００９６】
図１５において、データベース連携装置１は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態１〜４で説明した「個別データ格納部２１」は、共有メモリとしてのＲＡＭ９１４上に構成される。
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７、ＦＤＤ９０４などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【００９７】
通信ボード９１５は、図１に示すように、ネットワーク接続されている。
例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などに接続されていても構わない。
【００９８】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【００９９】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【０１００】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
データベース連携装置１の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【０１０１】
上記プログラム群９２３には、実施の形態１〜４の説明において「〜部」（「個別データ格納部２１」以外、以下同様）、「〜手段」として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【０１０２】
ファイル群９２４には、実施の形態１〜４の説明において、「〜の判断」、「〜の算出」、「〜の比較」、「〜の生成」、「〜の抽出」、「〜の検索」、「〜の取得」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１〜４で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。
また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【０１０３】
また、実施の形態１〜４の説明において「〜部」、「〜手段」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態１〜４で説明したフローチャートに示すステップ、手順、処理により、本発明に係るデータ処理装置を方法として把握することができる。
また、「〜部」、「〜手段」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。
プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。
すなわち、プログラムは、実施の形態１〜４の「〜部」、「〜手段」としてコンピュータを機能させるものである。あるいは、実施の形態１〜４の「〜部」、「〜手段」の手順や方法をコンピュータに実行させるものである。
【０１０４】
このように、実施の形態１〜４に示すデータベース連携装置１は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」、「〜手段」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【０１０５】
１  データベース連携装置、２  連携元システム、３  連携元データベース、４  連携先システム、５  連携先データベース、６  データ連携設計部、７  データ連携設計情報、８  統合連携情報、９  連携元テーブル情報、１０  連携先テーブル情報、１１  受信部、１２  変換部、１３  ＣＤＷ処理部、１４  データ連携連動型バッファ管理部、１５  更新データ到着ログ、１６  データ処理制御部、１７  連携管理情報、１８  連携メモリ管理部、１９  データ格納部、２０  個別排他制御部、２１  個別データ格納部、２２  ＣＤＣ、２３  データ連携処理部、２４  連携接続情報。
【図１】
2012090281.tif 000003
【図２】
2012090281.tif 000004
【図３】
2012090281.tif 000005
【図４】
2012090281.tif 000006
【図５】
2012090281.tif 000007
【図６】
2012090281.tif 000008
【図７】
2012090281.tif 000009
【図８】
2012090281.tif 000010
【図９】
2012090281.tif 000011
【図１０】
2012090281.tif 000012
【図１１】
2012090281.tif 000013
【図１２】
2012090281.tif 000014
【図１３】
2012090281.tif 000015
【図１４】
2012090281.tif 000016
【図１５】
2012090281.tif 000017
【国際調査報告】
2012090281.tif 000018
2012090281.tif 000019
2012090281.tif 000020
2012090281.tif 000021
2012090281.tif 000022
2012090281.tif 000023