JPWO2012090281A1 - データ処理装置 - Google Patents
データ処理装置 Download PDFInfo
- Publication number
- JPWO2012090281A1 JPWO2012090281A1 JP2012550608A JP2012550608A JPWO2012090281A1 JP WO2012090281 A1 JPWO2012090281 A1 JP WO2012090281A1 JP 2012550608 A JP2012550608 A JP 2012550608A JP 2012550608 A JP2012550608 A JP 2012550608A JP WO2012090281 A1 JPWO2012090281 A1 JP WO2012090281A1
- Authority
- JP
- Japan
- Prior art keywords
- update
- data
- unit
- buffer
- cooperation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
連携メモリ管理部18が、CDC22からの更新済レコードを書き込むための個別データ格納部21と、変換部12が更新済レコードから生成した更新反映データを書き込むための個別データ格納部21を生成し、変換部12が、受信部11とは非同期に個別データ格納部21からの更新済レコードの読み出し、更新反映データの生成、更新反映データの個別データ格納部21への書き込みを行い、CDW処理部13が、受信部11及び変換部12とは非同期に個別データ格納部21からの更新反映データの読み出し、連携先テーブルの更新を行う。
Description
本発明は、複数のデータベースのテーブル間でデータを転送するデータベース連携技術に関する。
例えば、特許文献1では、テーブルを構成するカラムの数、型、サイズが同一である連携元データベースと連携先データベースとの間におけるデータベースレプリケーションが開示されている。
特許文献1が対象とするデータベースレプリケーションは、同一仕様のデータベース間のデータ転送であるため、テーブルを構成するカラムの数、型、サイズが異なる連携元データベースと連携先データベースとの間のデータ連携はできないという課題がある。
複数の連携元データベースと複数の連携先データベース間のデータ転送を対象とする場合、データベースごとにテーブルを構成するカラムの数、型、サイズが異なり、更に、トランザクションの発生頻度と各トランザクション内で更新されるレコード数がデータベースごとに異なる。
複数の連携元データベースと複数の連携先データベース間のデータ転送を対象とする場合、データベースごとにテーブルを構成するカラムの数、型、サイズが異なり、更に、トランザクションの発生頻度と各トランザクション内で更新されるレコード数がデータベースごとに異なる。
本発明は、このような点に鑑みたものであり、複数の連携元データベースと複数の連携先データベースとの間のデータベース連携を効率的に行うことを主な目的とする。
本発明に係るデータ処理装置は、
連携元テーブルにおける更新を連携先テーブルに反映させるデータ処理装置であって、
前記連携元テーブルにおいて更新された更新済レコードを受信する更新済レコード受信部と、
前記連携先テーブルをレコード単位で更新する連携先テーブル更新部と、
前記更新済レコードを用いて、前記連携元テーブルにおける更新を反映するデータであって、前記連携先テーブルのレコードの少なくとも一部になるデータを更新反映データとして生成する更新反映データ生成部と、
前記更新済レコード受信部から前記更新反映データ生成部に更新済レコードを受け渡すための更新済レコードバッファを生成する更新済レコードバッファ生成部と、
前記更新反映データ生成部から前記連携先テーブル更新部に更新反映データを受け渡すための更新反映データバッファを生成する更新反映データバッファ生成部とを有し、
前記更新済レコード受信部は、
受信した更新済レコードを前記更新済レコードバッファに書き込み、
前記更新反映データ生成部は、
前記更新済レコード受信部による更新済レコードの受信とは非同期に、前記更新済レコードバッファに格納されている更新済レコードを読み出し、読み出した更新済レコードを用いて更新反映データを生成し、生成した更新反映データを前記更新反映データバッファに書き込み、
前記連携先テーブル更新部は、
前記更新済レコード受信部による更新済レコードの受信及び前記更新反映データ生成部による更新反映データの生成とは非同期に、前記更新反映データバッファに格納されている更新反映データを読み出し、読み出した更新反映データを用いて連携先テーブルの更新を行うことを特徴とする。
連携元テーブルにおける更新を連携先テーブルに反映させるデータ処理装置であって、
前記連携元テーブルにおいて更新された更新済レコードを受信する更新済レコード受信部と、
前記連携先テーブルをレコード単位で更新する連携先テーブル更新部と、
前記更新済レコードを用いて、前記連携元テーブルにおける更新を反映するデータであって、前記連携先テーブルのレコードの少なくとも一部になるデータを更新反映データとして生成する更新反映データ生成部と、
前記更新済レコード受信部から前記更新反映データ生成部に更新済レコードを受け渡すための更新済レコードバッファを生成する更新済レコードバッファ生成部と、
前記更新反映データ生成部から前記連携先テーブル更新部に更新反映データを受け渡すための更新反映データバッファを生成する更新反映データバッファ生成部とを有し、
前記更新済レコード受信部は、
受信した更新済レコードを前記更新済レコードバッファに書き込み、
前記更新反映データ生成部は、
前記更新済レコード受信部による更新済レコードの受信とは非同期に、前記更新済レコードバッファに格納されている更新済レコードを読み出し、読み出した更新済レコードを用いて更新反映データを生成し、生成した更新反映データを前記更新反映データバッファに書き込み、
前記連携先テーブル更新部は、
前記更新済レコード受信部による更新済レコードの受信及び前記更新反映データ生成部による更新反映データの生成とは非同期に、前記更新反映データバッファに格納されている更新反映データを読み出し、読み出した更新反映データを用いて連携先テーブルの更新を行うことを特徴とする。
本発明によれば、更新済レコードを書き込むための更新済レコードバッファと、更新反映データを書き込むための更新反映データバッファを生成し、更新反映データ生成部が、更新済レコード受信部とは非同期に更新済レコードの読み出し、更新反映データの生成、更新反映データの書き込みを行い、連携先テーブル更新部が、更新済レコード受信部及び更新反映データ生成部とは非同期に更新反映データの読み出し、連携先テーブルの更新を行うため、複数の連携元データベースと複数の連携先データベースとの間のデータベース連携において、効率的なパイプライン処理が可能になる。
実施の形態1.
データベース(以下、データベースをDBとも表記する)連携技術では、連携元データベース(連携元テーブル)で変更されたデータが抽出され、抽出されたデータが連携先データベース(連携先テーブル)の形式に変換され、変換後のデータが連携先のデータベースに反映される。
データ変換としては、例えば、以下に示すようなものがある。
大文字と小文字の変換 (abc→ABC):小文字から大文字への変換
数値データの単位の変換 (1000→1):K単位への変換
パディングの実施、桁数の変更 (123456→000123456):6桁から9桁への変換
データベース(以下、データベースをDBとも表記する)連携技術では、連携元データベース(連携元テーブル)で変更されたデータが抽出され、抽出されたデータが連携先データベース(連携先テーブル)の形式に変換され、変換後のデータが連携先のデータベースに反映される。
データ変換としては、例えば、以下に示すようなものがある。
大文字と小文字の変換 (abc→ABC):小文字から大文字への変換
数値データの単位の変換 (1000→1):K単位への変換
パディングの実施、桁数の変更 (123456→000123456):6桁から9桁への変換
データベースを連携させる方法は、2つに大別される。
第1の方法は、ETL(Extract Translate Load)ツールのように、連携元となる1つのデータベースから連携先となる1つのデータベースにデータ転送を実施する方法である。
第2の方法は、複数の連携元データベースと複数の連携先データベースとを接続するHub型構成において、複数の連携元データベースから複数の連携先データベースにデータ転送を行う方法である。
実施の形態1〜4では、第2の方法、すなわち、Hub型の構成によるデータベース連携方法を説明する。
第1の方法は、ETL(Extract Translate Load)ツールのように、連携元となる1つのデータベースから連携先となる1つのデータベースにデータ転送を実施する方法である。
第2の方法は、複数の連携元データベースと複数の連携先データベースとを接続するHub型構成において、複数の連携元データベースから複数の連携先データベースにデータ転送を行う方法である。
実施の形態1〜4では、第2の方法、すなわち、Hub型の構成によるデータベース連携方法を説明する。
Hub型のデータベース連携装置は、連携元DBで抽出された変更データを受け取る受信処理、抽出データを連携先DBの仕様に合わせるための変換処理、変換データを連携先DBに反映するためのCDW(Change Data Writer)処理からなる。
データベース連携を実施する際にパイプライン処理を行なう変換部とCDW処理部でテーブル間のキューの構成を一律とした場合、換言すれば、変換処理とCDW処理が同期している場合は、データベース連携装置のスループットが低下する。
実施の形態1〜4は、この課題を解決することを主な目的としており、データベース連携装置のスループットを向上させるために、パイプライン処理において変換部とCDW処理部とが非同期に動作する構成を説明する。
以下、実施の形態に係るデータベース連携装置を図面を参照して説明する。
データベース連携を実施する際にパイプライン処理を行なう変換部とCDW処理部でテーブル間のキューの構成を一律とした場合、換言すれば、変換処理とCDW処理が同期している場合は、データベース連携装置のスループットが低下する。
実施の形態1〜4は、この課題を解決することを主な目的としており、データベース連携装置のスループットを向上させるために、パイプライン処理において変換部とCDW処理部とが非同期に動作する構成を説明する。
以下、実施の形態に係るデータベース連携装置を図面を参照して説明する。
図1は、本実施の形態に係るデータベース連携システムを示し、データベース連携装置1、連携元システム2、連携先システム4との間の関係を示す。
データベース連携装置1はデータ処理装置の例である。
なお、データベース連携装置1の内部構成例は後述する。
データベース連携装置1は、複数の連携元システム2と、複数の連携先システム4とに接続されている。
図1では、連携元システム2は、連携元システムA2aと連携元システムB2bの2つである。
また、連携先システム4は、連携先システムX4xと連携先システムY4yと連携先システムZ4zの3つである。
データベース連携装置1はデータ処理装置の例である。
なお、データベース連携装置1の内部構成例は後述する。
データベース連携装置1は、複数の連携元システム2と、複数の連携先システム4とに接続されている。
図1では、連携元システム2は、連携元システムA2aと連携元システムB2bの2つである。
また、連携先システム4は、連携先システムX4xと連携先システムY4yと連携先システムZ4zの3つである。
各連携元システム2には、連携元データベース3と、CDC(Change Data Capture)22が含まれている。
連携元データベース3には、1つ以上の連携元テーブルが含まれている。
なお、以下では、連携元データベースA3aに2つの連携元テーブルが含まれていることを前提とし、それぞれの連携元テーブルを、連携元テーブルA−1、連携元テーブルA−2と表記する。
また、連携元データベースB3bにも2つの連携元テーブルが含まれていることを前提とし、それぞれの連携元テーブルを、連携元テーブルB−1、連携元テーブルB−2と表記する。
また、CDC22は、連携元データベース3の更新ログなどを監視し、連携元データベース3の更新を検知し、連携元データベース3で更新されたレコードを抽出する。
CDC22は、公知の技術により実現される。
なお、CDC22が抽出するレコードを更新済レコードとも表記する。
連携元データベース3には、1つ以上の連携元テーブルが含まれている。
なお、以下では、連携元データベースA3aに2つの連携元テーブルが含まれていることを前提とし、それぞれの連携元テーブルを、連携元テーブルA−1、連携元テーブルA−2と表記する。
また、連携元データベースB3bにも2つの連携元テーブルが含まれていることを前提とし、それぞれの連携元テーブルを、連携元テーブルB−1、連携元テーブルB−2と表記する。
また、CDC22は、連携元データベース3の更新ログなどを監視し、連携元データベース3の更新を検知し、連携元データベース3で更新されたレコードを抽出する。
CDC22は、公知の技術により実現される。
なお、CDC22が抽出するレコードを更新済レコードとも表記する。
各連携先システム4には、連携先データベース5が含まれている。
連携先データベース5には、1つ以上の連携先テーブルが含まれている。
なお、以下では、連携先データベースX5xに2つの連携先テーブルが含まれていることを前提とし、それぞれの連携先テーブルを、連携先テーブルX−1、連携元テーブルX−2と表記する。
また、連携先データベースY5yにも2つの連携先テーブルが含まれていることを前提とし、それぞれの連携先テーブルを、連携先テーブルY−1、連携元テーブルY−2と表記する。
また、連携先データベースZ5zにも2つの連携先テーブルが含まれていることを前提とし、それぞれの連携先テーブルを、連携先テーブルZ−1、連携元テーブルZ−2と表記する。
連携先データベース5には、1つ以上の連携先テーブルが含まれている。
なお、以下では、連携先データベースX5xに2つの連携先テーブルが含まれていることを前提とし、それぞれの連携先テーブルを、連携先テーブルX−1、連携元テーブルX−2と表記する。
また、連携先データベースY5yにも2つの連携先テーブルが含まれていることを前提とし、それぞれの連携先テーブルを、連携先テーブルY−1、連携元テーブルY−2と表記する。
また、連携先データベースZ5zにも2つの連携先テーブルが含まれていることを前提とし、それぞれの連携先テーブルを、連携先テーブルZ−1、連携元テーブルZ−2と表記する。
データベース連携装置1は、いずれかの連携元データベースにおける更新をいずれかの連携先テーブルに反映させる。
データベース連携装置1では任意のデータベース連携が可能である。
例えば、連携元テーブルA−1の更新済レコードを、連携先テーブルX−1、連携先テーブルY−1、連携先テーブルZ−1のそれぞれに反映させるというように、1つの連携元テーブルの更新済レコードを2以上の連携先テーブルに反映させるようにしてもよい。
また、連携元テーブルA−1の更新済レコードの一部と連携元テーブルB−1の更新済レコードの一部と連携元テーブルB−2の更新済レコードの一部との組み合せを、連携元テーブルZ−2に反映させるというように、複数の連携元テーブルの更新済レコードの組み合せを1つの連携先テーブルに反映させるようにしてもよい。
データベース連携装置1では任意のデータベース連携が可能である。
例えば、連携元テーブルA−1の更新済レコードを、連携先テーブルX−1、連携先テーブルY−1、連携先テーブルZ−1のそれぞれに反映させるというように、1つの連携元テーブルの更新済レコードを2以上の連携先テーブルに反映させるようにしてもよい。
また、連携元テーブルA−1の更新済レコードの一部と連携元テーブルB−1の更新済レコードの一部と連携元テーブルB−2の更新済レコードの一部との組み合せを、連携元テーブルZ−2に反映させるというように、複数の連携元テーブルの更新済レコードの組み合せを1つの連携先テーブルに反映させるようにしてもよい。
なお、連携元データベース3と連携先データベース5のスキーマ構成、より具体的にはデータベースインスタンス内に構成されるスキーマ、テーブル、カラムの構成が異っていてもよく、また連携元データベース3のカラムの型、サイズ、格納データと連携先データベース5のカラムの型、サイズ、格納データが異っていてもよい。
また、本実施の形態で示す連携元システム2の個数、連携先システム4の個数、連携元データベース3の個数、連携先データベース5の個数、連携元テーブルの個数、連携先テーブルの個数は例示であり、各々の個数を任意に設定することができる。
次に、図2に本実施の形態に係るデータベース連携装置1の構成例を示す。
本実施の形態に係るデータベース連携装置1では、受信部11、変換部12、CDW処理部13によるデータ連携定義に基づき、データ格納部19内の個別排他制御部20と個別データ格納部21の構成を決定する連携メモリ管理部18を備え、データ格納部19の構成は連携管理情報17にて管理される。
本実施の形態に係るデータベース連携装置1では、受信部11、変換部12、CDW処理部13によるデータ連携定義に基づき、データ格納部19内の個別排他制御部20と個別データ格納部21の構成を決定する連携メモリ管理部18を備え、データ格納部19の構成は連携管理情報17にて管理される。
データ連携処理部23において、受信部11は、連携元システム2内のCDC22が連携元データベース3の連携元テーブルから検出した更新済レコードを受信する。
受信部11は、更新済レコード受信部の例である。
受信部11は、連携元データベース3ごとに用意される。
図2では、図の簡明化のため、受信部11は1つしか図示されていないが、図1の構成に照らせば、図2のデータベース連携装置1では、連携元データベースA3aから更新済レコードを受信する受信部(以下、受信部11aと表記する)と、連携元データベースB3bから更新済レコードを受信する受信部(以下、受信部11bと表記する)が設けられている。
受信部11は、更新済レコード受信部の例である。
受信部11は、連携元データベース3ごとに用意される。
図2では、図の簡明化のため、受信部11は1つしか図示されていないが、図1の構成に照らせば、図2のデータベース連携装置1では、連携元データベースA3aから更新済レコードを受信する受信部(以下、受信部11aと表記する)と、連携元データベースB3bから更新済レコードを受信する受信部(以下、受信部11bと表記する)が設けられている。
変換部12は、連携元データベース3と連携先データベース5のデータベース定義の仕様が異なる場合に、連携元データベース3から抽出したデータを連携先データベース5のデータ仕様に変換するものである。
例えば、文字列データであれば大文字から小文字への変換、数値演算は桁揃えなどの機能を有し、変換処理は公知の技術により実施される。
変換部12は、入力した更新済レコードに変換が必要かどうか、変換が必要であればどのような変換を行うかを判定し、変換が必要であれば更新済レコードの変換を行い、変換後の更新済レコードを後述する個別データ格納部21に書き込む。
一方、変換の必要がなければ、無変換の更新済レコードを個別データ格納部21に書き込む。
変換部12が個別データ格納部21に書き込むデータは、変換後の更新済レコードであっても無変換の更新済レコードであっても、連携元テーブルにおける更新を反映するとともに、連携先テーブルのレコードの少なくとも一部になるデータ(更新反映データ)である。
換言すると、変換部12は、変換が必要であれば更新済レコードの変換を行って更新反映データを生成し、変換が必要なければ更新済レコードの変換を行わずに更新反映データを生成している。
このように、変換部12は更新反映データ生成部の例として機能する。
なお、変換部12は、連携元テーブルごとに用意される。
図2では、図の簡明化のため、変換部12は1つしか図示されていないが、図1の構成に照らせば、図2のデータベース連携装置1では、連携元テーブルA−1に対応する変換部(以下、変換部12a−1と表記する)と、連携元テーブルA−2に対応する変換部(以下、変換部12a−2と表記する)と、連携元テーブルB−1に対応する変換部(以下、変換部12b−1と表記する)と、連携元テーブルB−2に対応する変換部(以下、変換部12b−2と表記する)が設けられている。
例えば、文字列データであれば大文字から小文字への変換、数値演算は桁揃えなどの機能を有し、変換処理は公知の技術により実施される。
変換部12は、入力した更新済レコードに変換が必要かどうか、変換が必要であればどのような変換を行うかを判定し、変換が必要であれば更新済レコードの変換を行い、変換後の更新済レコードを後述する個別データ格納部21に書き込む。
一方、変換の必要がなければ、無変換の更新済レコードを個別データ格納部21に書き込む。
変換部12が個別データ格納部21に書き込むデータは、変換後の更新済レコードであっても無変換の更新済レコードであっても、連携元テーブルにおける更新を反映するとともに、連携先テーブルのレコードの少なくとも一部になるデータ(更新反映データ)である。
換言すると、変換部12は、変換が必要であれば更新済レコードの変換を行って更新反映データを生成し、変換が必要なければ更新済レコードの変換を行わずに更新反映データを生成している。
このように、変換部12は更新反映データ生成部の例として機能する。
なお、変換部12は、連携元テーブルごとに用意される。
図2では、図の簡明化のため、変換部12は1つしか図示されていないが、図1の構成に照らせば、図2のデータベース連携装置1では、連携元テーブルA−1に対応する変換部(以下、変換部12a−1と表記する)と、連携元テーブルA−2に対応する変換部(以下、変換部12a−2と表記する)と、連携元テーブルB−1に対応する変換部(以下、変換部12b−1と表記する)と、連携元テーブルB−2に対応する変換部(以下、変換部12b−2と表記する)が設けられている。
CDW処理部13は、変換部12が生成した更新反映データを連携先データベース5に反映する機能を有する。
より具体的にはODBC(Open DataBase Connectivity)などを用いて連携先データベース5にレコード単位で更新反映データを反映する。
このとき、CDW処理部13は、変換部12から複数の更新反映データを一括して取得し、連携先データベース5に反映する。
つまり、CDW処理部13は、取得した複数の更新反映データを用いて、1トランザクションにおいて連携先テーブルの2個以上のレコードに対する更新を行う。
CDW処理部13は、連携先テーブル更新部の例である。
なお、CDW処理部13は、連携先データベース5ごとに用意される。
図2では、図の簡明化のため、CDW処理部13は1つしか図示されていないが、図1の構成に照らせば、図2のデータベース連携装置1では、連携先データベースX5xに対応するCDW処理部(以下、CDW処理部13xと表記する)と、連携先データベースY5yに対応するCDW処理部(以下、CDW処理部13yと表記する)と、連携先データベースZ5zに対応するCDW処理部(以下、CDW処理部13zと表記する)が配置されている。
より具体的にはODBC(Open DataBase Connectivity)などを用いて連携先データベース5にレコード単位で更新反映データを反映する。
このとき、CDW処理部13は、変換部12から複数の更新反映データを一括して取得し、連携先データベース5に反映する。
つまり、CDW処理部13は、取得した複数の更新反映データを用いて、1トランザクションにおいて連携先テーブルの2個以上のレコードに対する更新を行う。
CDW処理部13は、連携先テーブル更新部の例である。
なお、CDW処理部13は、連携先データベース5ごとに用意される。
図2では、図の簡明化のため、CDW処理部13は1つしか図示されていないが、図1の構成に照らせば、図2のデータベース連携装置1では、連携先データベースX5xに対応するCDW処理部(以下、CDW処理部13xと表記する)と、連携先データベースY5yに対応するCDW処理部(以下、CDW処理部13yと表記する)と、連携先データベースZ5zに対応するCDW処理部(以下、CDW処理部13zと表記する)が配置されている。
データ連携連動型バッファ管理部14において、連携メモリ管理部18は、データベース連携装置1の主記憶装置(共有メモリ)上に、受信部11から変換部12に更新済レコードを受け渡すためのバッファ領域である個別データ格納部21を生成し、また、変換部12からCDW処理部13に更新反映データを受け渡すためのバッファ領域である個別データ格納部21を生成する。
受信部11から変換部12に更新済レコードを受け渡すための個別データ格納部21は、更新済レコードバッファの例であり、変換部12からCDW処理部13に更新反映データを受け渡すための個別データ格納部21は、更新反映データバッファの例である。
このため、連携メモリ管理部18は、更新済レコードバッファ生成部及び更新反映データバッファ生成部の例である。
受信部11から変換部12に更新済レコードを受け渡すための個別データ格納部21は、更新済レコードバッファの例であり、変換部12からCDW処理部13に更新反映データを受け渡すための個別データ格納部21は、更新反映データバッファの例である。
このため、連携メモリ管理部18は、更新済レコードバッファ生成部及び更新反映データバッファ生成部の例である。
前述のように、図2の構成では、変換部12として、変換部12a−1、変換部12a−2、変換部12b−1、変換部12b−2の4つが存在するため、連携メモリ管理部18は、それぞれの変換部に対応させて4つの個別データ格納部21を生成する。
つまり、連携メモリ管理部18は、受信部11aが連携元テーブルA−1の更新済レコードを変換部12a−1に受け渡すための個別データ格納部21、受信部11aが連携元テーブルA−2の更新済レコードを変換部12a−2に受け渡すための個別データ格納部21、受信部11bが連携元テーブルB−1の更新済レコードを変換部12b−1に受け渡すための個別データ格納部21、受信部11bが連携元テーブルB−2の更新済レコードを変換部12b−2に受け渡すための個別データ格納部21の4つを生成する。
また、図2の構成では、CDW処理部13として、CDW処理部13x、CDW処理部13y、CDW処理部13zの3つが存在するため、連携メモリ管理部18は、それぞれのCDW処理部に対応させて個別データ格納部21を生成する。
なお、CDW処理部13の個別データ格納部21は、更新反映データの受け渡し元の変換部12ごとに生成される。
例えば、CDW処理部13xが変換部12a−1、変換部12a−2及び変換部12b−1の各々から更新反映データを受け取る場合は、変換部12a−1のみが更新反映データを書き込める個別データ格納部21、変換部12a−2のみが更新反映データを書き込める個別データ格納部21、変換部12b−1のみが更新反映データを書き込める個別データ格納部21が生成される。
そして、各個別データ格納部21に対して設けられている個別排他制御部20により、各個別データ格納部21への更新済レコード又は更新反映データの書き込みに対する排他制御が行われる。
個別排他制御部20は、排他制御部の例である。
また、個別データ格納部21と個別排他制御部20との組が1組以上格納される論理アドレス空間をデータ格納部19という。
前述のCDW処理部13xの例では、変換部12a−1についての個別データ格納部21と個別排他制御部20との組、変換部12a−2についての個別データ格納部21と個別排他制御部20との組、変換部12b−1についての個別データ格納部21と個別排他制御部20との組が格納される論理アドレス空間が、CDW処理部13xのデータ格納部19になる。
つまり、連携メモリ管理部18は、受信部11aが連携元テーブルA−1の更新済レコードを変換部12a−1に受け渡すための個別データ格納部21、受信部11aが連携元テーブルA−2の更新済レコードを変換部12a−2に受け渡すための個別データ格納部21、受信部11bが連携元テーブルB−1の更新済レコードを変換部12b−1に受け渡すための個別データ格納部21、受信部11bが連携元テーブルB−2の更新済レコードを変換部12b−2に受け渡すための個別データ格納部21の4つを生成する。
また、図2の構成では、CDW処理部13として、CDW処理部13x、CDW処理部13y、CDW処理部13zの3つが存在するため、連携メモリ管理部18は、それぞれのCDW処理部に対応させて個別データ格納部21を生成する。
なお、CDW処理部13の個別データ格納部21は、更新反映データの受け渡し元の変換部12ごとに生成される。
例えば、CDW処理部13xが変換部12a−1、変換部12a−2及び変換部12b−1の各々から更新反映データを受け取る場合は、変換部12a−1のみが更新反映データを書き込める個別データ格納部21、変換部12a−2のみが更新反映データを書き込める個別データ格納部21、変換部12b−1のみが更新反映データを書き込める個別データ格納部21が生成される。
そして、各個別データ格納部21に対して設けられている個別排他制御部20により、各個別データ格納部21への更新済レコード又は更新反映データの書き込みに対する排他制御が行われる。
個別排他制御部20は、排他制御部の例である。
また、個別データ格納部21と個別排他制御部20との組が1組以上格納される論理アドレス空間をデータ格納部19という。
前述のCDW処理部13xの例では、変換部12a−1についての個別データ格納部21と個別排他制御部20との組、変換部12a−2についての個別データ格納部21と個別排他制御部20との組、変換部12b−1についての個別データ格納部21と個別排他制御部20との組が格納される論理アドレス空間が、CDW処理部13xのデータ格納部19になる。
データ処理制御部16は、プロセス間通信用のメッセージを格納するキューである。
つまり、各受信部11は更新済レコードを個別データ格納部21に書き込んだ後に、更新済レコードの書き込みを通知するメッセージをデータ処理制御部16に登録する。
また、各変換部12は、データ処理制御部16からメッセージを呼び出して、対応する個別データ格納部21から更新済レコードを読み出す。
また、各変換部12は更新反映データを個別データ格納部21に書き込んだ後に、更新反映データの書き込みを通知するメッセージをデータ処理制御部16に登録する。
また、各CDW処理部13は、データ処理制御部16からメッセージを呼び出して、対応する個別データ格納部21から更新反映データを読み出す。
つまり、各受信部11は更新済レコードを個別データ格納部21に書き込んだ後に、更新済レコードの書き込みを通知するメッセージをデータ処理制御部16に登録する。
また、各変換部12は、データ処理制御部16からメッセージを呼び出して、対応する個別データ格納部21から更新済レコードを読み出す。
また、各変換部12は更新反映データを個別データ格納部21に書き込んだ後に、更新反映データの書き込みを通知するメッセージをデータ処理制御部16に登録する。
また、各CDW処理部13は、データ処理制御部16からメッセージを呼び出して、対応する個別データ格納部21から更新反映データを読み出す。
更新データ到着ログ15は、受信部11による更新済レコードの受信状況を示す情報であり、より具体的には、連携元テーブルごとに更新済レコードの単位時間あたりの受信数を示す情報である。
更新データ到着ログ15の詳細は後述する。
更新データ到着ログ15の詳細は後述する。
データ連携設計部6は、連携元データベース3と連携先データベース5の連携関係を定義するものである。
連携関係の定義とは、連携元データベース3が備えるスキーマ、テーブル、カラムと連携先データベース5が備えるスキーマ、テーブル、カラムのそれぞれの対応関係を示すものである。
データ連携設計部6は、GUI(Graphical User Interface)を備えたツールであってもよい。
また、データ連携設計部6は、データベース連携装置1とは異なるハードウェア上で稼動するものであってもよい。
データ連携設計部6はデータベース連携定義をデータ連携設計情報7として出力し、統合連携情報8の入力データとする。
データ連携設計情報7及び統合連携情報8の詳細は後述する。
連携関係の定義とは、連携元データベース3が備えるスキーマ、テーブル、カラムと連携先データベース5が備えるスキーマ、テーブル、カラムのそれぞれの対応関係を示すものである。
データ連携設計部6は、GUI(Graphical User Interface)を備えたツールであってもよい。
また、データ連携設計部6は、データベース連携装置1とは異なるハードウェア上で稼動するものであってもよい。
データ連携設計部6はデータベース連携定義をデータ連携設計情報7として出力し、統合連携情報8の入力データとする。
データ連携設計情報7及び統合連携情報8の詳細は後述する。
ここで、本実施の形態に係るデータベース連携装置1の動作の概要を説明する。
先ず、連携メモリ管理部18が、変換部12ごとに、個別データ格納部21に必要なサイズを算出する。
より具体的には、連携メモリ管理部18は、変換部12ごとに、対象としている連携元テーブルからの更新済レコードの単位時間あたりの受信数と、対象としている連携元テーブルのレコード長とを積算して、当該変換部12に必要なサイズを算出する。
そして、連携メモリ管理部18は、算出したサイズ分の個別データ格納部21を当該変換部12に割り当てる。
なお、連携元テーブルからの更新済レコードの単位時間あたりの受信数は、更新データ到着ログ15から導出可能であり、連携元テーブルのレコード長は連携元テーブル情報9等から導出可能である。
より具体的には、連携メモリ管理部18は、変換部12ごとに、対象としている連携元テーブルからの更新済レコードの単位時間あたりの受信数と、対象としている連携元テーブルのレコード長とを積算して、当該変換部12に必要なサイズを算出する。
そして、連携メモリ管理部18は、算出したサイズ分の個別データ格納部21を当該変換部12に割り当てる。
なお、連携元テーブルからの更新済レコードの単位時間あたりの受信数は、更新データ到着ログ15から導出可能であり、連携元テーブルのレコード長は連携元テーブル情報9等から導出可能である。
また、連携メモリ管理部18は、CDW処理部13ごとに、個別データ格納部21に必要な容量を算出する。
前述したように、連携メモリ管理部18は、CDW処理部13ごとに、更新反映データの受け渡し元の変換部12ごとの個別データ格納部21を生成するため、更新反映データの受け渡し元の変換部12単位で必要容量を算出する。
より具体的には、連携メモリ管理部18は、更新反映データの受け渡し元の変換部12ごとに、CDW処理部13が当該変換部12から受け渡される更新反映データのデータ長と、当該変換部12の連携元テーブルからの更新済レコードの単位時間あたりの受信数と、CDW処理部13が更新反映データを反映させるレコード数とを積算し、積算により得られた容量分の個別データ格納部21を確保する。
このような積算処理を全ての受け渡し元の変換部12に対して行って、1つのCDW処理部13についての受け渡し元の変換部12ごとの個別データ格納部21が生成される。
なお、連携元テーブルからの更新済レコードの単位時間あたりの受信数は、更新データ到着ログ15から導出可能であり、連携先テーブルのレコード長及び連携先テーブル内で更新反映データを反映させるレコード数は連携先テーブル情報10等から導出可能である。
また、連携メモリ管理部18は、共有ライブラリとして実装され、受信部11、変換部12、CDW処理部13を構成するプロセスから起動される形態であってよい。
前述したように、連携メモリ管理部18は、CDW処理部13ごとに、更新反映データの受け渡し元の変換部12ごとの個別データ格納部21を生成するため、更新反映データの受け渡し元の変換部12単位で必要容量を算出する。
より具体的には、連携メモリ管理部18は、更新反映データの受け渡し元の変換部12ごとに、CDW処理部13が当該変換部12から受け渡される更新反映データのデータ長と、当該変換部12の連携元テーブルからの更新済レコードの単位時間あたりの受信数と、CDW処理部13が更新反映データを反映させるレコード数とを積算し、積算により得られた容量分の個別データ格納部21を確保する。
このような積算処理を全ての受け渡し元の変換部12に対して行って、1つのCDW処理部13についての受け渡し元の変換部12ごとの個別データ格納部21が生成される。
なお、連携元テーブルからの更新済レコードの単位時間あたりの受信数は、更新データ到着ログ15から導出可能であり、連携先テーブルのレコード長及び連携先テーブル内で更新反映データを反映させるレコード数は連携先テーブル情報10等から導出可能である。
また、連携メモリ管理部18は、共有ライブラリとして実装され、受信部11、変換部12、CDW処理部13を構成するプロセスから起動される形態であってよい。
次に、受信部11がCDC22から送信された更新済レコードを受信し、受信した更新済レコードの受け渡し先として指定されている変換部12に割り当てられているデータ格納部19に更新済レコードを書き込む。
前述したように、受信部11は連携元データベース3ごとに存在し、変換部12は連携元テーブルごとに存在する。
例えば、受信部11aは、連携元データベース3の連携元テーブルA−1の更新済レコードと連携元テーブルA−1の更新済レコードを受信する。
連携元テーブルA−1の更新済レコードを受信した場合は、受信部11aは、受信した更新済レコードを変換部12a−1用の個別データ格納部21に書き込み、連携元テーブルA−2の更新済レコードを受信した場合は、受信部11aは、受信した更新済レコードを変換部12a−2用の個別データ格納部21に書き込む。
前述したように、受信部11は連携元データベース3ごとに存在し、変換部12は連携元テーブルごとに存在する。
例えば、受信部11aは、連携元データベース3の連携元テーブルA−1の更新済レコードと連携元テーブルA−1の更新済レコードを受信する。
連携元テーブルA−1の更新済レコードを受信した場合は、受信部11aは、受信した更新済レコードを変換部12a−1用の個別データ格納部21に書き込み、連携元テーブルA−2の更新済レコードを受信した場合は、受信部11aは、受信した更新済レコードを変換部12a−2用の個別データ格納部21に書き込む。
変換部12は、割り当てられている個別データ格納部21から更新済レコードを読み出し、読み出した更新済レコードを用いて更新反映データを生成し、生成した更新反映データを受け渡し先として指定されているCDW処理部13の個別データ格納部21に書き込む。
例えば、変換部12a−1の受け渡し先がCDW処理部13xであり、CDW処理部13xが変換部12a−1及び変換部12b−1の各々から更新反映データを受け取る場合は、CDW処理部13xに対しては、変換部12a−1用の個別データ格納部21と、変換部12b−1用の個別データ格納部21が生成されている。
このため、変換部12a−1は、CDW処理部13xの変換部12a−1用の個別データ格納部21に更新反映データを書き込む。
また、変換部12a−1の受け渡し先がCDW処理部13xとCDW処理部13yである場合は、読み出した更新済レコードに対してCDW処理部13xの連携先データベースに合わせた変換を行ってCDW処理部13x向けの更新反映データを生成するとともに、CDW処理部13yの連携先データベースに合わせた変換を行ってCDW処理部13y向けの更新反映データを生成する。
そして、CDW処理部13x向けの更新反映データをCDW処理部13xの変換部12a−1用の個別データ格納部21に書き込み、CDW処理部13y向けの更新反映データをCDW処理部13yの変換部12a−1用の個別データ格納部21に書き込む。
なお、変換部12a−1は、CDW処理部13xの個別データ格納部21への書き込みと、CDW処理部13yの個別データ格納部21への書き込みを並列に行う。
また、各変換部12における更新済レコードの読み出し、更新反映データの生成、更新反映データの個別データ格納部21への書き込みは、受信部11による更新済レコードの受信及び更新済レコードの書き込みと非同期に行われる。
例えば、変換部12a−1の受け渡し先がCDW処理部13xであり、CDW処理部13xが変換部12a−1及び変換部12b−1の各々から更新反映データを受け取る場合は、CDW処理部13xに対しては、変換部12a−1用の個別データ格納部21と、変換部12b−1用の個別データ格納部21が生成されている。
このため、変換部12a−1は、CDW処理部13xの変換部12a−1用の個別データ格納部21に更新反映データを書き込む。
また、変換部12a−1の受け渡し先がCDW処理部13xとCDW処理部13yである場合は、読み出した更新済レコードに対してCDW処理部13xの連携先データベースに合わせた変換を行ってCDW処理部13x向けの更新反映データを生成するとともに、CDW処理部13yの連携先データベースに合わせた変換を行ってCDW処理部13y向けの更新反映データを生成する。
そして、CDW処理部13x向けの更新反映データをCDW処理部13xの変換部12a−1用の個別データ格納部21に書き込み、CDW処理部13y向けの更新反映データをCDW処理部13yの変換部12a−1用の個別データ格納部21に書き込む。
なお、変換部12a−1は、CDW処理部13xの個別データ格納部21への書き込みと、CDW処理部13yの個別データ格納部21への書き込みを並列に行う。
また、各変換部12における更新済レコードの読み出し、更新反映データの生成、更新反映データの個別データ格納部21への書き込みは、受信部11による更新済レコードの受信及び更新済レコードの書き込みと非同期に行われる。
CDW処理部13は、個別データ格納部21から更新反映データを読み出し、読み出した更新反映データを用いて連携先テーブルを更新する。
例えば、CDW処理部13xが変換部12a−1及び変換部12b−1の各々から更新反映データを受け取る場合は、変換部12a−1用の個別データ格納部21、変換部12b−1用の個別データ格納部21の各々から更新反映データを読み出す。
そして、CDW処理部13xは、例えば、読み出した更新反映データを用いて、連携先テーブルX−1と連携先テーブルX−2のレコードを更新する。
各CDW処理部13における更新反映データの読み出し及び更新反映データを用いた連携先テーブルの更新は、受信部11による更新済レコードの受信及び更新済レコードの書き込み、各変換部12による更新済レコードの読み出し、更新反映データの生成及び更新反映データの個別データ格納部21への書き込みと非同期に行われる。
このため、各CDW処理部13は、1トランザクションにおいて連携先テーブルの2以上のレコードに対する更新を行うことができる。
また、各CDW処理部13は、他のCDW処理部13における更新反映データの読み出し及び連携先テーブルの更新と並行して、更新反映データの読み出し及び連携先テーブルの更新を行う。
例えば、CDW処理部13xが変換部12a−1及び変換部12b−1の各々から更新反映データを受け取る場合は、変換部12a−1用の個別データ格納部21、変換部12b−1用の個別データ格納部21の各々から更新反映データを読み出す。
そして、CDW処理部13xは、例えば、読み出した更新反映データを用いて、連携先テーブルX−1と連携先テーブルX−2のレコードを更新する。
各CDW処理部13における更新反映データの読み出し及び更新反映データを用いた連携先テーブルの更新は、受信部11による更新済レコードの受信及び更新済レコードの書き込み、各変換部12による更新済レコードの読み出し、更新反映データの生成及び更新反映データの個別データ格納部21への書き込みと非同期に行われる。
このため、各CDW処理部13は、1トランザクションにおいて連携先テーブルの2以上のレコードに対する更新を行うことができる。
また、各CDW処理部13は、他のCDW処理部13における更新反映データの読み出し及び連携先テーブルの更新と並行して、更新反映データの読み出し及び連携先テーブルの更新を行う。
以上が、本実施の形態に係るデータベース連携装置1の動作の概要である。
次に、データ連携設計情報7、連携元テーブル情報9、連携先テーブル情報10、連携管理情報17、連携接続情報24及び更新データ到着ログ15の詳細を説明し、本実施の形態に係るデータベース連携装置1の動作の詳細を説明する。
次に、データ連携設計情報7、連携元テーブル情報9、連携先テーブル情報10、連携管理情報17、連携接続情報24及び更新データ到着ログ15の詳細を説明し、本実施の形態に係るデータベース連携装置1の動作の詳細を説明する。
データ連携設計情報7は、XML(Extensible Markup Language)のような形式で記述したものであってよく、ファイルの形式でデータベース連携装置1に外部が取込む形式であってもよい。
データ連携設計情報7は、連携元テーブル情報9、連携先テーブル情報10及び連携接続情報24から構成される。
なお、図2では、データ連携設計情報7に含まれる連携元テーブル情報9、連携先テーブル情報10及び連携接続情報24をデータベース連携装置1のメモリに展開した状態を示している。
データ連携設計情報7がXML形式で記述されたファイルである場合、データ連携処理部23がデータベース連携処理を実施するたびにファイルからデータベース連携設計情報7の内容を読み取ることも可能であるが、効率的でない。
このため、本実施の形態では、データ連携設計情報7を入力として受け取り、データベース連携装置1のメモリに統合連携情報8として格納する。
データ連携設計情報7は、連携元テーブル情報9、連携先テーブル情報10及び連携接続情報24から構成される。
なお、図2では、データ連携設計情報7に含まれる連携元テーブル情報9、連携先テーブル情報10及び連携接続情報24をデータベース連携装置1のメモリに展開した状態を示している。
データ連携設計情報7がXML形式で記述されたファイルである場合、データ連携処理部23がデータベース連携処理を実施するたびにファイルからデータベース連携設計情報7の内容を読み取ることも可能であるが、効率的でない。
このため、本実施の形態では、データ連携設計情報7を入力として受け取り、データベース連携装置1のメモリに統合連携情報8として格納する。
連携元テーブル情報9および連携先テーブル情報10は、図3に示すように、テーブル定義情報201とカラム定義情報202から構成される。
テーブル定義情報201において、CDC/CDW識別子は、CDC22またはCDW処理部13を特定する識別子である。
テーブル識別子は、連携元テーブル又は連携先テーブルをデータベース連携装置1内で一意に特定するための識別子である。
また、テーブルタイプは、連携元テーブル又は連携先テーブルの種別を示す情報であり、テーブル名は連携元テーブル又は連携先テーブルの名称を示す情報である。
また、テーブル定義情報201には、連携元テーブル又は連携先テーブルのカラム数、主キーとなるカラムの情報、参照関係を持つテーブルの情報、定義の登録日、更新日、定義のバージョンなどの情報が含まれる。
テーブル識別子は、連携元テーブル又は連携先テーブルをデータベース連携装置1内で一意に特定するための識別子である。
また、テーブルタイプは、連携元テーブル又は連携先テーブルの種別を示す情報であり、テーブル名は連携元テーブル又は連携先テーブルの名称を示す情報である。
また、テーブル定義情報201には、連携元テーブル又は連携先テーブルのカラム数、主キーとなるカラムの情報、参照関係を持つテーブルの情報、定義の登録日、更新日、定義のバージョンなどの情報が含まれる。
カラム定義情報202において、カラム識別子はカラムをデータベース連携装置1内で一意に特定するための識別子である。
テーブル識別子は、カラムが所属するテーブルの識別子である。
また、データ型は、カラムのデータ型を示し、数値精度は、カラムのデータ型が数値型の場合の数値の精度(桁数、少数以下の有効桁数)を示す。
また、カラム定義情報202には、カラムに含まれるデータのデータ長、カラム名、外部キーとなる場合の親カラム識別子などの情報が含まれる。
テーブル識別子は、カラムが所属するテーブルの識別子である。
また、データ型は、カラムのデータ型を示し、数値精度は、カラムのデータ型が数値型の場合の数値の精度(桁数、少数以下の有効桁数)を示す。
また、カラム定義情報202には、カラムに含まれるデータのデータ長、カラム名、外部キーとなる場合の親カラム識別子などの情報が含まれる。
連携管理情報17は、図4に示すように、プロセス管理表203、データ格納部情報204、個別排他制御情報205、個別データ格納情報206、外部識別子情報207、オープンハンドル情報208から構成される。
プロセス管理表203は、プロセスID、プロセス種別、外部識別子、状態、データ処理制御部ID、読み出し制御フラグ、データ格納部ID、初期化ハンドル、オープンハンドルから構成される。
プロセスIDは、受信部11、変換部12、CDW処理部13の各々のプロセスの識別子である。
プロセス種別は、プロセスIDで特定されるプロセスが、受信部11、変換部12、CDW処理部13のいずれのプロセスであるかを示す。
データ処理制御部IDは、データ処理制御部16の識別子であり、受信部11から変換部12へのメッセージのキューであるか、変換部12からCDW処理部13へのメッセージのキューであるかを示す。
読み出し制御フラグは、個別データ格納部21からのデータ読み出しが可能か否かを示す。
プロセスIDは、受信部11、変換部12、CDW処理部13の各々のプロセスの識別子である。
プロセス種別は、プロセスIDで特定されるプロセスが、受信部11、変換部12、CDW処理部13のいずれのプロセスであるかを示す。
データ処理制御部IDは、データ処理制御部16の識別子であり、受信部11から変換部12へのメッセージのキューであるか、変換部12からCDW処理部13へのメッセージのキューであるかを示す。
読み出し制御フラグは、個別データ格納部21からのデータ読み出しが可能か否かを示す。
データ格納部情報204は、データ格納部ID、個別データ数、個別排他制御情報、接続管理ID,連携対象論理テーブルID、個別データ格納情報から構成される。
データ格納部IDは、データ格納部19の識別子である。
接続管理IDは、連携元テーブルと連携先データベース5の組み合せごとに設定される識別子である。前述した例では、連携元テーブルが4つ(A−1、A−2、B−1、B−2)であり、連携先テーブルが3つ(X、Y、Z)であるため、12種類の接続管理IDが設けられる。
連携対象論理テーブルIDは、プロセス管理表203のプロセスIDで特定されるプロセスが受信部11及び変換部12の場合は連携元テーブルの識別子が示され、CDW処理部13の場合は連携先テーブルの識別子が示される。
データ格納部IDは、データ格納部19の識別子である。
接続管理IDは、連携元テーブルと連携先データベース5の組み合せごとに設定される識別子である。前述した例では、連携元テーブルが4つ(A−1、A−2、B−1、B−2)であり、連携先テーブルが3つ(X、Y、Z)であるため、12種類の接続管理IDが設けられる。
連携対象論理テーブルIDは、プロセス管理表203のプロセスIDで特定されるプロセスが受信部11及び変換部12の場合は連携元テーブルの識別子が示され、CDW処理部13の場合は連携先テーブルの識別子が示される。
個別排他制御情報205は、個別排他制御ID、バッファ排他制御フラグ、オーバーフロー制御フラグから構成される。
個別排他制御IDは、個別排他制御部20の識別子である。
個別排他制御IDは、個別排他制御部20の識別子である。
個別データ格納情報206は、個別データ格納部ID、接続管理ID重複数、連携対象カラム長総数(Sl)から構成される。
個別データ格納部IDは、個別データ格納部21の識別子である。
接続管理ID重複数は、個別データ格納部IDで特定されている個別データ格納部21から読み出された更新反映データにより、連携先テーブルのいくつのレコードが更新されるかを示す。
例えば、変換部12a−1からの1つの更新反映データをCDW処理部13xが連携先データベース5xの連携先テーブルX−1と連携先テーブルX−2に反映させる場合は、変換部12a−1からの更新反映データをCDW処理部13xに受け渡す個別データ格納部21では、接続管理ID重複数は2となる。
連携対象カラム長総数(Sl)は、個別データ格納部IDで特定されている個別データ格納部21に、書き込まれるデータ長(レコード長)を示す。
例えば、変換部12からCDW処理部13への個別データ格納部21の場合は、書き込み元の変換部12が当該個別データ格納部21に書き込む更新反映データのデータ長(レコード長)を示す。
個別データ格納部IDは、個別データ格納部21の識別子である。
接続管理ID重複数は、個別データ格納部IDで特定されている個別データ格納部21から読み出された更新反映データにより、連携先テーブルのいくつのレコードが更新されるかを示す。
例えば、変換部12a−1からの1つの更新反映データをCDW処理部13xが連携先データベース5xの連携先テーブルX−1と連携先テーブルX−2に反映させる場合は、変換部12a−1からの更新反映データをCDW処理部13xに受け渡す個別データ格納部21では、接続管理ID重複数は2となる。
連携対象カラム長総数(Sl)は、個別データ格納部IDで特定されている個別データ格納部21に、書き込まれるデータ長(レコード長)を示す。
例えば、変換部12からCDW処理部13への個別データ格納部21の場合は、書き込み元の変換部12が当該個別データ格納部21に書き込む更新反映データのデータ長(レコード長)を示す。
外部識別子情報207は、プロセス管理表203のプロセスIDで特定されるプロセスが受信部の場合はCDCid、変換部の場合は連携元論理テーブルID、CDW処理部の場合は連携先データベースIDを示す。
オープンハンドル情報208は、オープンハンドル、入力/出力エッジ、排他制御情報(セマフォIDなど)、個別データ格納情報(メモリへのアドレスなど)から構成される。
ここで、入力エッジ、出力エッジについて説明する。
入力エッジはデータの入力元であり、出力エッジはデータの出力先である。
受信部11にとっては、CDCが入力エッジとなり、変換部12に更新済レコードを受け渡すための個別データ格納部21が出力エッジとなる。
また、変換部12にとっては、更新済レコードを受け取るための個別データ格納部21が入力エッジとなり、CDW処理部13に更新反映データを受け渡すための個別データ格納部21が出力エッジとなる。
また、CDW処理部13にとっては、更新反映データを受け取るための個別データ格納部21が入力エッジとなり、連携先テーブルが出力エッジとなる。
例えば、CDW処理部13xが変換部12a−1及び変換部12b−1の各々から更新反映データを受け取る場合は、変換部12a−1用の個別データ格納部21と、変換部12b−1用の個別データ格納部21がそれぞれ入力エッジとなる。
また、CDW処理部13xが連携先テーブルX−1と連携先テーブルX−2の更新を行う場合は、連携先テーブルX−1と連携先テーブルX−2がそれぞれ出力エッジとなる。
入力エッジはデータの入力元であり、出力エッジはデータの出力先である。
受信部11にとっては、CDCが入力エッジとなり、変換部12に更新済レコードを受け渡すための個別データ格納部21が出力エッジとなる。
また、変換部12にとっては、更新済レコードを受け取るための個別データ格納部21が入力エッジとなり、CDW処理部13に更新反映データを受け渡すための個別データ格納部21が出力エッジとなる。
また、CDW処理部13にとっては、更新反映データを受け取るための個別データ格納部21が入力エッジとなり、連携先テーブルが出力エッジとなる。
例えば、CDW処理部13xが変換部12a−1及び変換部12b−1の各々から更新反映データを受け取る場合は、変換部12a−1用の個別データ格納部21と、変換部12b−1用の個別データ格納部21がそれぞれ入力エッジとなる。
また、CDW処理部13xが連携先テーブルX−1と連携先テーブルX−2の更新を行う場合は、連携先テーブルX−1と連携先テーブルX−2がそれぞれ出力エッジとなる。
次に、連携接続情報24は、図5に示すように、接続入力情報210、接続出力情報211、変換部接続情報212から構成される。
接続入力情報210は、受信部11についての情報であり、接続管理ID、接続管理バージョン、入力エッジID、出力エッジ数、連携元論理テーブルID、変換プロセス識別子からなる。
変換プロセス識別子は、受信部11が更新済レコードを受け渡す変換部12のプロセスIDである。
変換プロセス識別子は、受信部11が更新済レコードを受け渡す変換部12のプロセスIDである。
接続出力情報211は、CDW処理部13についての情報であり、接続管理ID、接続管理バージョン、入力エッジID、CDWid、出力エッジID、実行時付加情報(レコード長)、連携先論理テーブルIDからなる。
実行時付加情報(レコード長)は、CDW処理部13が受け渡し元の変換部12から受け渡される更新反映データのデータ長(レコード長)である。
実行時付加情報(レコード長)は、CDW処理部13が受け渡し元の変換部12から受け渡される更新反映データのデータ長(レコード長)である。
変換部接続情報212は、変換部12についての情報であり、プロセス識別子、出力エッジ数、出力エッジ情報、入力エッジIDからなり、また、出力エッジ情報213は、出力エッジIDと実行時付加情報の組からなる。
更新データ到着ログ15は、図6に示すような構成からなる。
更新データ到着ログ15は、レコードを一意に特定するIDと連携元論理テーブルID、接続管理ID、単位時間あたりの平均トランザクション数、1トランザクションあたりの平均レコード数(更新済レコードの数)、最終更新日からなる。
更新データ到着ログ15は、レコードを一意に特定するIDと連携元論理テーブルID、接続管理ID、単位時間あたりの平均トランザクション数、1トランザクションあたりの平均レコード数(更新済レコードの数)、最終更新日からなる。
次に、本実施の形態に係るデータベース連携装置1によるデータベース連携動作の詳細を説明する。
まず、変換部12とCDW処理部13はプロセス生成時に初期化処理として、連携メモリ管理部18を呼び出し、それぞれ他の処理部からデータを取得するための個別データ格納部21を生成する。
以下に、図10をもとに個別データ格納部21のサイズを算出する処理フローを記載する。
以下に、図10をもとに個別データ格納部21のサイズを算出する処理フローを記載する。
CDW処理部13は、連携メモリ管理部18に、自身(CDW処理部13)の識別子であるCDWidを通知する(S201)。
連携メモリ管理部18は、通知されたCDWidと同じCDWidが示される連携接続情報24の接続出力情報211(図5)を1つ以上抽出し、抽出した接続出力情報211を接続管理IDごとに分類する(S202)。
例えば、CDW処理部13xが変換部12a−1及び変換部12b−1の各々からの更新反映データを用いて連携先データベース5xの連携先テーブルを更新する場合は、連携元テーブルA−1と連携先データベース5xとの組み合せに対応した接続管理IDが記述されている接続出力情報211と、連携元テーブルB−1と連携先データベース5xとの組み合わせに対応した接続管理IDが記述されている接続出力情報211が存在することになる。
このように、接続出力情報211に記述されている接続管理IDが複数種類ある場合は、連携メモリ管理部18は、S202において、接続管理IDごとに接続出力情報211をグルーピングする。
連携メモリ管理部18は、通知されたCDWidと同じCDWidが示される連携接続情報24の接続出力情報211(図5)を1つ以上抽出し、抽出した接続出力情報211を接続管理IDごとに分類する(S202)。
例えば、CDW処理部13xが変換部12a−1及び変換部12b−1の各々からの更新反映データを用いて連携先データベース5xの連携先テーブルを更新する場合は、連携元テーブルA−1と連携先データベース5xとの組み合せに対応した接続管理IDが記述されている接続出力情報211と、連携元テーブルB−1と連携先データベース5xとの組み合わせに対応した接続管理IDが記述されている接続出力情報211が存在することになる。
このように、接続出力情報211に記述されている接続管理IDが複数種類ある場合は、連携メモリ管理部18は、S202において、接続管理IDごとに接続出力情報211をグルーピングする。
次に、連携メモリ管理部18は、接続出力情報211のグループごとに、接続出力情報211から実行時付加情報(レコード長)を取得し、取得した実行時付加情報(レコード長)の和を算出し、実行時付加情報(レコード)の和を個別データ格納部21のブロック内レコードのサイズ(Sl)として定義する(S203、S204)。
接続管理IDは、連携元テーブルと連携先データベースとの組み合わせを特定する識別子であるため、接続管理IDが同一の接続出力情報211であっても出力エッジIDが異なっている場合がある。
例えば、CDW処理部13xが変換部12a−1からの更新反映データを用いて連携先データベース5x内の連携先テーブルX−1と連携先テーブルX−2の更新を行う場合は、接続管理IDが同一であっても連携先テーブルX−1に対応する出力エッジIDが記述されている接続出力情報211と連携先テーブルX−2に対応する出力エッジIDが記述されている接続出力情報211が存在することになる。
連携メモリ管理部18は、S203とS204において、接続出力情報211のグループごとの実行時付加情報(レコード長)の総和を求める。
接続管理IDは、連携元テーブルと連携先データベースとの組み合わせを特定する識別子であるため、接続管理IDが同一の接続出力情報211であっても出力エッジIDが異なっている場合がある。
例えば、CDW処理部13xが変換部12a−1からの更新反映データを用いて連携先データベース5x内の連携先テーブルX−1と連携先テーブルX−2の更新を行う場合は、接続管理IDが同一であっても連携先テーブルX−1に対応する出力エッジIDが記述されている接続出力情報211と連携先テーブルX−2に対応する出力エッジIDが記述されている接続出力情報211が存在することになる。
連携メモリ管理部18は、S203とS204において、接続出力情報211のグループごとの実行時付加情報(レコード長)の総和を求める。
次に、連携メモリ管理部18は、当該接続管理IDをキーにして更新データ到着ログ15(図6)から平均トランザクション数/単位時間(Stn)、平均レコード数/トランザクション(Stl)の値を取得する(S205)。
次に、連携メモリ管理部18は、個別データ格納部21として(Stn×接続管理ID重複数×Stl×Sl)に相当するサイズのバッファを取得する(S206)。
S206の積算に用いた接続管理ID重複数は、同じ接続管理IDが付されている接続出力情報211の個数、つまり、S202の分類の結果、同じ接続管理IDが付されているとしてグルーピングされた接続出力情報211の個数である。
更に、連携メモリ管理部18は、S206で生成した個別データ格納部21への接続子(例えば、メモリアドレス)を、個別データ格納情報206(図4)の個別データ格納部ID欄に格納し、接続管理ID重複数欄にS206の積算に用いた接続管理ID重複数を格納する。
なお、連携メモリ管理部18は、S203以降の処理を連携先論理テーブルIDの一覧に属する全ての接続管理IDに対して行う(S207)。
全ての接続管理IDに対してS203以降の処理が行われた後は、連携メモリ管理部18は、生成した個別データ格納部21に対して初期化ハンドルを生成し、生成した初期化ハンドルをCDW処理部13に通知する。
次に、連携メモリ管理部18は、個別データ格納部21として(Stn×接続管理ID重複数×Stl×Sl)に相当するサイズのバッファを取得する(S206)。
S206の積算に用いた接続管理ID重複数は、同じ接続管理IDが付されている接続出力情報211の個数、つまり、S202の分類の結果、同じ接続管理IDが付されているとしてグルーピングされた接続出力情報211の個数である。
更に、連携メモリ管理部18は、S206で生成した個別データ格納部21への接続子(例えば、メモリアドレス)を、個別データ格納情報206(図4)の個別データ格納部ID欄に格納し、接続管理ID重複数欄にS206の積算に用いた接続管理ID重複数を格納する。
なお、連携メモリ管理部18は、S203以降の処理を連携先論理テーブルIDの一覧に属する全ての接続管理IDに対して行う(S207)。
全ての接続管理IDに対してS203以降の処理が行われた後は、連携メモリ管理部18は、生成した個別データ格納部21に対して初期化ハンドルを生成し、生成した初期化ハンドルをCDW処理部13に通知する。
このように、連携メモリ管理部18は、各CDW処理部13に対して接続管理IDごとに個別データ格納部21を生成している。
接続管理IDは連携元テーブルごとに異なっており、変換部12は連携元テーブルごとに設けられている。
このため、連携メモリ管理部18は、各CDW処理部13に対して、更新反映データの受け渡し元の変換部12ごとに、個別データ格納部21を生成しているといえる。
そして、個別データ格納部21のサイズは、変換部12がCDW処理部13に受け渡す更新反映データのデータ長(Sl)と、変換部12が対象としている連携元テーブルからの更新済レコードの単位時間あたりの受信数(Stn×Stl)と、CDW処理部13が更新反映データを反映させるレコード数(接続管理ID重複数)との積算により得られるサイズとしている。
接続管理IDは連携元テーブルごとに異なっており、変換部12は連携元テーブルごとに設けられている。
このため、連携メモリ管理部18は、各CDW処理部13に対して、更新反映データの受け渡し元の変換部12ごとに、個別データ格納部21を生成しているといえる。
そして、個別データ格納部21のサイズは、変換部12がCDW処理部13に受け渡す更新反映データのデータ長(Sl)と、変換部12が対象としている連携元テーブルからの更新済レコードの単位時間あたりの受信数(Stn×Stl)と、CDW処理部13が更新反映データを反映させるレコード数(接続管理ID重複数)との積算により得られるサイズとしている。
以下にて、変換部12の初期化処理の動作を説明する。
変換部12は、自身(変換部12)のIDがプロセス識別子の欄に記述されている変換部接続情報212(図5)から入力エッジIDを取得し、連携メモリ管理部18に通知する。
連携メモリ管理部18は、通知された入力エッジIDと同じ入力エッジIDが記述されている接続入力情報210(図5)を抽出し、抽出した接続入力情報210内の連携元論理テーブルIDを取得する。
次に、連携メモリ管理部18は、取得した連携元論理テーブルIDと同じ連携元論理テーブルIDがテーブル識別子の欄に含まれている連携元テーブル情報9(テーブル定義情報:図3)を抽出し、抽出した連携元テーブル情報9内のカラム情報を取得する。
次に、連携メモリ管理部18は、取得したカラム情報に対応付けられているカラム定義情報202(図3)のカラム識別子毎にデータ長を取得し、取得したデータ長を集計する。
次に、連携メモリ管理部18は、集計した値を連携対象カラム長総数として個別データ格納部のブロック内レコードサイズ(Sl)として定義する。
次に、連携メモリ管理部18は、当該連携元テーブルIDをキーにして更新データ到着ログ15(図6)から平均トランザクション数/単位時間(Stn)、平均レコード数/トランザクション(Stl)の値を取得する。
次に、連携メモリ管理部18は、個別データ格納部21としてStn×Stl×Slに相当するサイズのバッファを取得する。
そして、連携メモリ管理部18は、生成した個別データ格納部21への接続子(例えば、メモリアドレス)を、個別データ格納情報206(図4)の個別データ格納部ID欄に格納し、当該連携元論理テーブルIDを、データ格納部情報204(図4)の連携対象論理テーブルID欄に格納する。
最後に、連携メモリ管理部18は、初期化ハンドルを生成し、生成した初期化ハンドルを変換部12に通知する。
連携メモリ管理部18は、通知された入力エッジIDと同じ入力エッジIDが記述されている接続入力情報210(図5)を抽出し、抽出した接続入力情報210内の連携元論理テーブルIDを取得する。
次に、連携メモリ管理部18は、取得した連携元論理テーブルIDと同じ連携元論理テーブルIDがテーブル識別子の欄に含まれている連携元テーブル情報9(テーブル定義情報:図3)を抽出し、抽出した連携元テーブル情報9内のカラム情報を取得する。
次に、連携メモリ管理部18は、取得したカラム情報に対応付けられているカラム定義情報202(図3)のカラム識別子毎にデータ長を取得し、取得したデータ長を集計する。
次に、連携メモリ管理部18は、集計した値を連携対象カラム長総数として個別データ格納部のブロック内レコードサイズ(Sl)として定義する。
次に、連携メモリ管理部18は、当該連携元テーブルIDをキーにして更新データ到着ログ15(図6)から平均トランザクション数/単位時間(Stn)、平均レコード数/トランザクション(Stl)の値を取得する。
次に、連携メモリ管理部18は、個別データ格納部21としてStn×Stl×Slに相当するサイズのバッファを取得する。
そして、連携メモリ管理部18は、生成した個別データ格納部21への接続子(例えば、メモリアドレス)を、個別データ格納情報206(図4)の個別データ格納部ID欄に格納し、当該連携元論理テーブルIDを、データ格納部情報204(図4)の連携対象論理テーブルID欄に格納する。
最後に、連携メモリ管理部18は、初期化ハンドルを生成し、生成した初期化ハンドルを変換部12に通知する。
次に、受信部11、変換部12が処理データを書き込むデータ格納部との接続を確立するオープン処理について記述する。
受信部11は、CDC22から取得した更新済レコードを変換部12の個別データ格納部21に書き込むためのオープンハンドルを取得する。
受信部11は、連携メモリ管理部18に初期化ハンドルと入力エッジIDを通知する。
連携メモリ管理部18は、通知された入力エッジIDと同じ入力エッジIDが示されている連携接続情報の接続入力情報210(図5)を抽出し、抽出した接続入力情報210内の変換プロセス識別子と連携元論理テーブルIDを取得する。
次に、連携メモリ管理部18は、取得した変換プロセス識別子と同じプロセスIDが示されている連携管理情報17のプロセス管理表203(図4)を抽出し、抽出したプロセス管理表203内のデータ格納部IDを取得する。
次に、取得したデータ格納部IDに対応付けられているデータ格納部情報204の中から、取得した連携元論理テーブルIDと同じ連携対象論理テーブルIDが示されているデータ格納部情報204を抽出する。
次に、連携メモリ管理部18は、抽出したデータ格納部情報204内の個別データ格納情報に格納されている個別データ格納部IDを取得する。
次に、連携メモリ管理部18は、取得した個別データ格納部IDをキーに共有メモリをマップし、抽出したデータ格納部情報204内の個別排他制御情報に格納されている個別排他制御IDをキーにセマフォを生成する。
更に、受信部11から通知された初期化ハンドルと同じ初期化ハンドルが示されている連携管理情報17のプロセス管理表203(図4)を抽出し、抽出したプロセス管理表203に対応付けられているオープンハンドル情報208の個別排他制御情報の欄にセマフォキーを格納し、個別データ格納情報の欄に共有メモリのアドレス(個別データ格納部のアドレス)を格納し、入力/出力エッジの欄に受信部11から通知された入力エッジIDを格納し、オープンハンドルを返却する。
受信部11は、連携メモリ管理部18に初期化ハンドルと入力エッジIDを通知する。
連携メモリ管理部18は、通知された入力エッジIDと同じ入力エッジIDが示されている連携接続情報の接続入力情報210(図5)を抽出し、抽出した接続入力情報210内の変換プロセス識別子と連携元論理テーブルIDを取得する。
次に、連携メモリ管理部18は、取得した変換プロセス識別子と同じプロセスIDが示されている連携管理情報17のプロセス管理表203(図4)を抽出し、抽出したプロセス管理表203内のデータ格納部IDを取得する。
次に、取得したデータ格納部IDに対応付けられているデータ格納部情報204の中から、取得した連携元論理テーブルIDと同じ連携対象論理テーブルIDが示されているデータ格納部情報204を抽出する。
次に、連携メモリ管理部18は、抽出したデータ格納部情報204内の個別データ格納情報に格納されている個別データ格納部IDを取得する。
次に、連携メモリ管理部18は、取得した個別データ格納部IDをキーに共有メモリをマップし、抽出したデータ格納部情報204内の個別排他制御情報に格納されている個別排他制御IDをキーにセマフォを生成する。
更に、受信部11から通知された初期化ハンドルと同じ初期化ハンドルが示されている連携管理情報17のプロセス管理表203(図4)を抽出し、抽出したプロセス管理表203に対応付けられているオープンハンドル情報208の個別排他制御情報の欄にセマフォキーを格納し、個別データ格納情報の欄に共有メモリのアドレス(個別データ格納部のアドレス)を格納し、入力/出力エッジの欄に受信部11から通知された入力エッジIDを格納し、オープンハンドルを返却する。
変換部12は、更新反映データを個別データ格納部21に書き込むためのオープンハンドルを取得する。
変換部12は、連携メモリ管理部18に初期化ハンドルと出力エッジIDを通知する。
連携メモリ管理部18は、通知された出力エッジIDと同じ出力エッジIDが示されている連携接続情報24の接続出力情報211(図5)を抽出し、抽出した接続出力情報211からCDWidと接続管理IDを取得する。
次に、連携メモリ管理部18は、取得したCDWidと同じプロセスIDが示されている連携管理情報17のプロセス管理表203(図4)を抽出し、抽出したプロセス管理表203に対応付けられているデータ格納部情報204(図4)のうち、取得した接続管理IDと同じ接続管理IDが示されているデータ格納部情報204を抽出する。
次に、連携メモリ管理部18は、抽出したデータ格納部情報204に対応付けられている個別データ格納情報206(図4)内の個別データ格納部IDと、個別排他制御情報205(図4)内の個別排他制御IDを取得する。
次に、連携メモリ管理部18は、取得した個別データ格納部IDをキーに個別データ格納部21をマップする。
より具体的には、C言語で実装した場合にはマップファイルによる共有メモリをマップする操作となる。
さらに、連携メモリ管理部18は、取得した個別排他制御IDをキーに排他制御用のセマフォを生成する。
次に、連携メモリ管理部18は、オープンハンドルを生成し、また、変換部12から通知された初期化ハンドルと同じ初期化ハンドルが示されているプロセス管理表203(図4)を抽出し、抽出したプロセス管理表203に対応付けられているオープンハンドル情報208に、生成したオープンハンドルの情報を格納し、個別排他制御情報の欄にセマフォキーを格納し、個別データ格納情報の欄に共有メモリのアドレス(個別データ格納部のアドレス)を格納し、入力/出力エッジの欄に変換部12から通知された出力エッジIDを格納し、オープンハンドルを変換部12に返却する。
変換部12は、連携メモリ管理部18に初期化ハンドルと出力エッジIDを通知する。
連携メモリ管理部18は、通知された出力エッジIDと同じ出力エッジIDが示されている連携接続情報24の接続出力情報211(図5)を抽出し、抽出した接続出力情報211からCDWidと接続管理IDを取得する。
次に、連携メモリ管理部18は、取得したCDWidと同じプロセスIDが示されている連携管理情報17のプロセス管理表203(図4)を抽出し、抽出したプロセス管理表203に対応付けられているデータ格納部情報204(図4)のうち、取得した接続管理IDと同じ接続管理IDが示されているデータ格納部情報204を抽出する。
次に、連携メモリ管理部18は、抽出したデータ格納部情報204に対応付けられている個別データ格納情報206(図4)内の個別データ格納部IDと、個別排他制御情報205(図4)内の個別排他制御IDを取得する。
次に、連携メモリ管理部18は、取得した個別データ格納部IDをキーに個別データ格納部21をマップする。
より具体的には、C言語で実装した場合にはマップファイルによる共有メモリをマップする操作となる。
さらに、連携メモリ管理部18は、取得した個別排他制御IDをキーに排他制御用のセマフォを生成する。
次に、連携メモリ管理部18は、オープンハンドルを生成し、また、変換部12から通知された初期化ハンドルと同じ初期化ハンドルが示されているプロセス管理表203(図4)を抽出し、抽出したプロセス管理表203に対応付けられているオープンハンドル情報208に、生成したオープンハンドルの情報を格納し、個別排他制御情報の欄にセマフォキーを格納し、個別データ格納情報の欄に共有メモリのアドレス(個別データ格納部のアドレス)を格納し、入力/出力エッジの欄に変換部12から通知された出力エッジIDを格納し、オープンハンドルを変換部12に返却する。
上述したように本実施の形態によれば、各個別データ格納部内のブロック数およびブロックサイズをデータベース設計情報および過去の更新データ到着ログから算出することが可能となる。
これにより、データ格納部が確保するメモリ領域が最適化され、データ連携処理実行時のメモリオーバフローの発生を抑制し、かつ利用されない無駄なメモリの確保を回避する。
そして、データベース連携装置1を実装するサーバ上で稼動可能な変換部12およびCDW処理部13の数を最大化することが可能となり、データベース連携装置1のスループット(単位時間あたりの処理レコード数)を向上させることができる。
また、変換部12ごとに個別データ格納部21を生成するため、各変換部12における更新済レコードの読み出し、更新反映データの生成、更新反映データの個別データ格納部21への書き込みは、受信部11による更新済レコードの受信及び更新済レコードの書き込みと非同期に行うことができる。
更に、CDW処理部13ごとに個別データ格納部21を生成するため、各CDW処理部13における更新反映データの読み出し、更新反映データを用いた連携先テーブルの更新は、受信部11による更新済レコードの受信及び更新済レコードの書き込み、各変換部12による更新済レコードの読み出し、更新反映データの生成、更新反映データの個別データ格納部21への書き込みと非同期に行うことができる。
このため、各CDW処理部13は、1トランザクションにおいて連携先テーブルの2個以上のレコードに対する更新を行うことができる。
これにより、データ格納部が確保するメモリ領域が最適化され、データ連携処理実行時のメモリオーバフローの発生を抑制し、かつ利用されない無駄なメモリの確保を回避する。
そして、データベース連携装置1を実装するサーバ上で稼動可能な変換部12およびCDW処理部13の数を最大化することが可能となり、データベース連携装置1のスループット(単位時間あたりの処理レコード数)を向上させることができる。
また、変換部12ごとに個別データ格納部21を生成するため、各変換部12における更新済レコードの読み出し、更新反映データの生成、更新反映データの個別データ格納部21への書き込みは、受信部11による更新済レコードの受信及び更新済レコードの書き込みと非同期に行うことができる。
更に、CDW処理部13ごとに個別データ格納部21を生成するため、各CDW処理部13における更新反映データの読み出し、更新反映データを用いた連携先テーブルの更新は、受信部11による更新済レコードの受信及び更新済レコードの書き込み、各変換部12による更新済レコードの読み出し、更新反映データの生成、更新反映データの個別データ格納部21への書き込みと非同期に行うことができる。
このため、各CDW処理部13は、1トランザクションにおいて連携先テーブルの2個以上のレコードに対する更新を行うことができる。
次に、受信部11による更新済レコードの個別データ格納部21への書き込みについて説明する。
受信部11は、オープン処理において取得したオープンハンドルと一致するオープンハンドルが定義されている連携管理情報17のプロセス管理表203(図4)を抽出し、抽出したプロセス管理表203に対応付けられているオープンハンドル情報208の個別排制御情報から個別排他制御部20のセマフォを取得し、個別データ格納部21への書込み権利を取得し、CDC22から受信した更新済レコードを個別データ格納部21にデータを書き込む。
書込みが完了したら、個別排他制御部20のセマフォを解放し、データ処理制御部16にプロセス間通信用のメッセージを書き込む。
データ処理制御部16は、図7に示すようなリスト構造を備えたFIFO(First−In First−Out)構造であり、CDC22から受信した順に連携先データベース5に更新済レコードを反映する機能を有する。
受信部11は、データ処理制御部16にプロセス間通信用のメッセージを書き込んだ後、読み出し制御フラグのセマフォを解放する。
これにより、変換部12にデータ書込みイベントが通知されることとなり、連携元データベース3の更新順序制約を守り、連携先データベース5に更新データを反映することができる。
書込みが完了したら、個別排他制御部20のセマフォを解放し、データ処理制御部16にプロセス間通信用のメッセージを書き込む。
データ処理制御部16は、図7に示すようなリスト構造を備えたFIFO(First−In First−Out)構造であり、CDC22から受信した順に連携先データベース5に更新済レコードを反映する機能を有する。
受信部11は、データ処理制御部16にプロセス間通信用のメッセージを書き込んだ後、読み出し制御フラグのセマフォを解放する。
これにより、変換部12にデータ書込みイベントが通知されることとなり、連携元データベース3の更新順序制約を守り、連携先データベース5に更新データを反映することができる。
次に、図9をもとに、変換部12による更新反映データの個別データ格納部21への書き込みについて説明する。
なお、図9は変換部12における1トランザクションの処理を表している。
なお、図9は変換部12における1トランザクションの処理を表している。
変換部12は、自身(変換部12)のプロセスIDが記述されているプロセス管理表203から(図4)初期化ハンドルを取得し、初期化ハンドルに紐付けられた個別データ格納部21への接続先アドレスを取得する(S100)。
取得した接続先アドレスに基づき、個別データ格納部21から更新済レコードを読み出し、読み出した更新済レコードに対して変換処理を行って更新反映データを生成する。
なお、変換部12は、変換処理を実施する際に連携接続情報24(図5)から取得した出力エッジをキーに連携管理情報17を参照してオープンハンドルを取得する。
次に、変換部12は、オープンハンドルをキーに管理された個別排他制御部20のセマフォを取得する(S101)。
CDW処理部13の個別データ格納部21のブロックが全て未処理状態の場合、すなわちCDW処理部13がデキューしていないデータで個別データ格納部21のバッファが満たされている場合は、変換部12にて書込み待ちが発生することとなるが、本実施の形態では、単位時間当たりのトランザクション到着頻度を更新データ到着ログ15で蓄積し、統計処理の結果を図6の形式で保管している。
この図6の情報をもとに連携メモリ管理部18が個別データ格納部のブロック数を算出していることから、CDW処理部13が正常稼動時に個別データ格納部のブロックが全て未処理となる事象が発生することを回避することができる。
このとき、変換部12が複数のCDW処理部13に更新反映データを書き込む場合は、出力エッジ毎に対応するオープンハンドル、個別排他制御部20のセマフォを全て取得していることが必要である(S102)。
次に、変換部12は、オープンハンドル、セマフォを取得した個別データ格納部21への書込み処理を並列に実施する(S103)。
次に、変換部12は、出力エッジに該当するそれぞれの個別排他制御部20のセマフォを解放する(S104)。
次に、変換部12は、全ての個別排他制御部20のセマフォを開放したことを確認する(S105)。
次に、変換部12は、CDW処理部13のデータ処理制御部16のセマフォを取得する(S106)。
次に、変換部12は、データ処理制御部16へのエンキュー処理を行い、出力エッジ毎に図8に示す更新データ情報310の出力エッジと更新レコード情報の組を格納する(S107)。
次に、変換部12は、CDW処理部13のデータ処理制御部16のセマフォを解放する(S108)。
すべてのCDW処理部13のデータ処理制御部16へのエンキューが完了したら、1トランザクションデータに対する変換部12の処理が完了する(S109)。
取得した接続先アドレスに基づき、個別データ格納部21から更新済レコードを読み出し、読み出した更新済レコードに対して変換処理を行って更新反映データを生成する。
なお、変換部12は、変換処理を実施する際に連携接続情報24(図5)から取得した出力エッジをキーに連携管理情報17を参照してオープンハンドルを取得する。
次に、変換部12は、オープンハンドルをキーに管理された個別排他制御部20のセマフォを取得する(S101)。
CDW処理部13の個別データ格納部21のブロックが全て未処理状態の場合、すなわちCDW処理部13がデキューしていないデータで個別データ格納部21のバッファが満たされている場合は、変換部12にて書込み待ちが発生することとなるが、本実施の形態では、単位時間当たりのトランザクション到着頻度を更新データ到着ログ15で蓄積し、統計処理の結果を図6の形式で保管している。
この図6の情報をもとに連携メモリ管理部18が個別データ格納部のブロック数を算出していることから、CDW処理部13が正常稼動時に個別データ格納部のブロックが全て未処理となる事象が発生することを回避することができる。
このとき、変換部12が複数のCDW処理部13に更新反映データを書き込む場合は、出力エッジ毎に対応するオープンハンドル、個別排他制御部20のセマフォを全て取得していることが必要である(S102)。
次に、変換部12は、オープンハンドル、セマフォを取得した個別データ格納部21への書込み処理を並列に実施する(S103)。
次に、変換部12は、出力エッジに該当するそれぞれの個別排他制御部20のセマフォを解放する(S104)。
次に、変換部12は、全ての個別排他制御部20のセマフォを開放したことを確認する(S105)。
次に、変換部12は、CDW処理部13のデータ処理制御部16のセマフォを取得する(S106)。
次に、変換部12は、データ処理制御部16へのエンキュー処理を行い、出力エッジ毎に図8に示す更新データ情報310の出力エッジと更新レコード情報の組を格納する(S107)。
次に、変換部12は、CDW処理部13のデータ処理制御部16のセマフォを解放する(S108)。
すべてのCDW処理部13のデータ処理制御部16へのエンキューが完了したら、1トランザクションデータに対する変換部12の処理が完了する(S109)。
次に、図14をもとに、CDW処理部13による連携先データベースへのデータ反映処理を説明する。
CDW処理部13は、自身(CDW処理部13)のプロセスIDと同じプロセスIDが示されているプロセス管理表203(図4)を抽出し、抽出したプロセス管理表203に格納されている初期化ハンドルを取得する(S401)。
次に、CDW処理部13は、抽出したプロセス管理表203に対応付けられているデータ格納部情報のデータ格納部IDをもとに個別排他制御情報を取得し、当該CDW処理プロセスが読み込む個別データ格納部IDを取得する(S402)。
次に、当該CDW処理部13へのデータ書込みを制御するデータ処理制御部16(FIFO構造)に蓄積される書込み待ちデータをデキュー処理する。
データ処理制御部16には、個別データ格納部21に蓄積されている変換部12からの更新反映データに対応する書き込み要求メッセージが格納されている。
このとき、データ処理制御部16から複数の書き込み要求メッセージを一括してデキューするようにしてもよい(S403)。
CDW処理部13は、先に取得した個別排他制御情報をもとに各個別データ格納部21をロックし、格納されている更新反映データをローカルメモリにコピーする(S404)。
データ処理制御部16から全ての書き込み要求メッセージを取得し、また、全ての更新反映データをローカルメモリにコピーした後(S405)に、CDW処理部13はデータ処理制御部16からデキューした書き込み要求メッセージの順にローカルメモリにコピーした更新反映データをもとに、連携先データベース5のDBMS(DataBase Management System)に対して発行するSQL文を生成する(S406)。
次に、CDW処理部13は、S406で生成したSQL文を順に実行する(S407)。
このとき、SQL1文ごとにCommit処理は実施しない。
データ処理制御部16と個別データ格納部21から取得した全てのデータに対するSQL文を発行したのち、CDW処理部13は連携先データベース5のDBMSに対してCommit処理を発行する。
これにより、CDW処理部13が実施するCommit処理の発行回数が削減され、連携先データベースとの通信処理時間削減の効果を得る(S409)。
次に、CDW処理部13は、抽出したプロセス管理表203に対応付けられているデータ格納部情報のデータ格納部IDをもとに個別排他制御情報を取得し、当該CDW処理プロセスが読み込む個別データ格納部IDを取得する(S402)。
次に、当該CDW処理部13へのデータ書込みを制御するデータ処理制御部16(FIFO構造)に蓄積される書込み待ちデータをデキュー処理する。
データ処理制御部16には、個別データ格納部21に蓄積されている変換部12からの更新反映データに対応する書き込み要求メッセージが格納されている。
このとき、データ処理制御部16から複数の書き込み要求メッセージを一括してデキューするようにしてもよい(S403)。
CDW処理部13は、先に取得した個別排他制御情報をもとに各個別データ格納部21をロックし、格納されている更新反映データをローカルメモリにコピーする(S404)。
データ処理制御部16から全ての書き込み要求メッセージを取得し、また、全ての更新反映データをローカルメモリにコピーした後(S405)に、CDW処理部13はデータ処理制御部16からデキューした書き込み要求メッセージの順にローカルメモリにコピーした更新反映データをもとに、連携先データベース5のDBMS(DataBase Management System)に対して発行するSQL文を生成する(S406)。
次に、CDW処理部13は、S406で生成したSQL文を順に実行する(S407)。
このとき、SQL1文ごとにCommit処理は実施しない。
データ処理制御部16と個別データ格納部21から取得した全てのデータに対するSQL文を発行したのち、CDW処理部13は連携先データベース5のDBMSに対してCommit処理を発行する。
これにより、CDW処理部13が実施するCommit処理の発行回数が削減され、連携先データベースとの通信処理時間削減の効果を得る(S409)。
本実施の形態に係るデータベース連携装置は、複数の連携元データベース3を対象に更新データを複数の連携先データベース5に配信する。
そして、本実施の形態に係るデータベース連携装置では、更新データの仕様を変換する複数の変換部12と、複数の変換部12から変換データの入力を受付け、連携先データベース5に反映するCDW処理部13とに対して、データ連携連動型バッファ管理部14を備えている。
そして、データ連携連動型バッファ管理部14において、CDW処理部13ごとに、変換部12ごとの個別データ格納部21と個別排他制御部20を構成することで、変換部12からのデータ書込みの並列処理が可能となり、スループットが向上する。
そして、本実施の形態に係るデータベース連携装置では、更新データの仕様を変換する複数の変換部12と、複数の変換部12から変換データの入力を受付け、連携先データベース5に反映するCDW処理部13とに対して、データ連携連動型バッファ管理部14を備えている。
そして、データ連携連動型バッファ管理部14において、CDW処理部13ごとに、変換部12ごとの個別データ格納部21と個別排他制御部20を構成することで、変換部12からのデータ書込みの並列処理が可能となり、スループットが向上する。
以上、本実施の形態では、
複数のデータベースの間でデータを転送するデータベース連携装置を説明した。
複数のデータベースの間でデータを転送するデータベース連携装置を説明した。
また、本実施の形態では、
データ連携の定義が記載された統合連携情報とデータ連携処理部、データ連携連動型バッファ管理部を備え、
データ連携処理部は、少なくとも変換部、CDW処理部からなり、
データ連携連動型バッファ管理部は、変換部とCDW処理部間のデータの受け渡しをCDW処理部ごとに制御するデータ処理制御部とCDW処理部ごとに構成したデータ格納部を備え、
データ格納部は当該CDW処理部にデータを書き込む変換部ごとに個別排他制御部と個別データ格納部を備え、
連携元データベースのテーブルが更新された際に、更新レコードの取得、変換、連携先データベースのテーブルへの反映を非同期に処理し、複数の更新レコードを一括して連携先データベースに反映するデータベース連携装置を説明した。
データ連携の定義が記載された統合連携情報とデータ連携処理部、データ連携連動型バッファ管理部を備え、
データ連携処理部は、少なくとも変換部、CDW処理部からなり、
データ連携連動型バッファ管理部は、変換部とCDW処理部間のデータの受け渡しをCDW処理部ごとに制御するデータ処理制御部とCDW処理部ごとに構成したデータ格納部を備え、
データ格納部は当該CDW処理部にデータを書き込む変換部ごとに個別排他制御部と個別データ格納部を備え、
連携元データベースのテーブルが更新された際に、更新レコードの取得、変換、連携先データベースのテーブルへの反映を非同期に処理し、複数の更新レコードを一括して連携先データベースに反映するデータベース連携装置を説明した。
また、本実施の形態では、
データ連携連動型バッファ管理部は、連携管理情報を備え、
連携管理情報は、データ反映処理を実施するCDW処理部ごとに連携元データベースの変換処理を実施するプロセス単位で構成した個別データ格納部の情報、および個別排他制御情報の対応関係を備え、
個別データ格納部に接続管理ID重複数、連携対象カラム長総数を備えることを説明した。
データ連携連動型バッファ管理部は、連携管理情報を備え、
連携管理情報は、データ反映処理を実施するCDW処理部ごとに連携元データベースの変換処理を実施するプロセス単位で構成した個別データ格納部の情報、および個別排他制御情報の対応関係を備え、
個別データ格納部に接続管理ID重複数、連携対象カラム長総数を備えることを説明した。
また、本実施の形態では、
統合連携情報に、連携元データベースのカラム単位で連携先データベースへの連携情報を連携元データベースカラム識別子と連携先データベースカラム識別子の組で構成する情報とを備え、
データ連携処理部の変換部が、当該情報を用いてCDW処理部にデータを書き込む際に、データ書込み先となる全ての各個別データ格納部にデータを一括して書込み、書き込み完了後にデータ処理制御部を介して、複数の当該CDW処理部に書込みを通知し、複数のCDW処理部を並列に稼動することを説明した。
統合連携情報に、連携元データベースのカラム単位で連携先データベースへの連携情報を連携元データベースカラム識別子と連携先データベースカラム識別子の組で構成する情報とを備え、
データ連携処理部の変換部が、当該情報を用いてCDW処理部にデータを書き込む際に、データ書込み先となる全ての各個別データ格納部にデータを一括して書込み、書き込み完了後にデータ処理制御部を介して、複数の当該CDW処理部に書込みを通知し、複数のCDW処理部を並列に稼動することを説明した。
また、本実施の形態では、
特定のCDW処理部がデータを読み取るための個別データ格納部を複数のデータバッファから構成し、それぞれの個別データ格納部に対する個別排他制御を設けることにより、複数の変換部からの並列書込みを可能とすることを説明した。
特定のCDW処理部がデータを読み取るための個別データ格納部を複数のデータバッファから構成し、それぞれの個別データ格納部に対する個別排他制御を設けることにより、複数の変換部からの並列書込みを可能とすることを説明した。
また、本実施の形態では、
連携元データベースから送信された抽出データの単位時間当たりの到着回数と単位到着当たりのレコード数を更新データ到着ログとして蓄積し、
連携メモリ管理部が、当該ログに対する統計処理手段を備え、
連携情報更新時に特定のCDW処理部が対象とする連携情報に定義されるカラム長の合計と単位到着あたりのレコード数の積から個別データ格納部内のブロックサイズを算出し、データの到着回数とブロックサイズと同一連携元テーブルを対象とした連携定義数の積から、連携元テーブルあたりのデータバッファサイズを算出し、特定CDW処理部に対する全連携元テーブルに対して当該データバッファサイズの算出を実施し、個別データ格納部の容量を算出することを説明した。
連携元データベースから送信された抽出データの単位時間当たりの到着回数と単位到着当たりのレコード数を更新データ到着ログとして蓄積し、
連携メモリ管理部が、当該ログに対する統計処理手段を備え、
連携情報更新時に特定のCDW処理部が対象とする連携情報に定義されるカラム長の合計と単位到着あたりのレコード数の積から個別データ格納部内のブロックサイズを算出し、データの到着回数とブロックサイズと同一連携元テーブルを対象とした連携定義数の積から、連携元テーブルあたりのデータバッファサイズを算出し、特定CDW処理部に対する全連携元テーブルに対して当該データバッファサイズの算出を実施し、個別データ格納部の容量を算出することを説明した。
実施の形態2.
本実施の形態では、連携元データベース3と連携先データベース5の間で新しいデータベース定義を追加する例を図面を参照して記載する。
本実施の形態では、連携元データベース3と連携先データベース5の間で新しいデータベース定義を追加する例を図面を参照して記載する。
例えば、いずれかの連携先データベース5で連携先テーブルが追加された場合には、追加された連携先テーブルに対応させて、変換部12からCDW処理部13に更新反映データを受け渡すための個別データ格納部21の容量を増やす又は新たな個別データ格納部21を生成する必要がある。
本実施の形態では、状況の変化に応じて個別データ格納部21の容量の変更や新たな個別データ格納部21の生成を行う例を説明する。
本実施の形態では、状況の変化に応じて個別データ格納部21の容量の変更や新たな個別データ格納部21の生成を行う例を説明する。
図11をもとに連携定義が変更された際の処理フローを記載する。
ここでは、連携先データベース5で連携先テーブルが追加された場合、すなわち、CDW処理部13の出力エッジ数が増加した場合を例にして説明を行う。
ここでは、連携先データベース5で連携先テーブルが追加された場合、すなわち、CDW処理部13の出力エッジ数が増加した場合を例にして説明を行う。
CDW処理部13は、追加された出力エッジIDと自身のCDWidを連携メモリ管理部18に通知する。
なお、この時点では、追加された出力エッジIDが含まれる接続出力情報211(図5)は生成済みであるとする。
連携メモリ管理部18は、通知された出力エッジIDとCDWidが示される接続出力情報211を抽出し、抽出した接続出力情報211に示される接続管理IDを取得する(S301)。
次に、連携メモリ管理部18は、通知されたCDWidと同じプロセスIDが示されている連携管理情報17のプロセス管理表203(図4)を抽出し、抽出したプロセス管理表203に対応付けられているデータ格納部情報204のうち、S301で取得した接続管理IDと同じ接続管理IDが示されているデータ格納部情報204を検索する(S302)。
該当するデータ格納部情報204が抽出できなかった場合、すなわち、S301で取得した接続管理IDが未登録の場合(S303でYES)、新たな個別データ格納部21と個別排他制御部20を生成する必要があるため、連携メモリ管理部18は、図S301で抽出した接続出力情報211より実行時付加情報(レコード長)を取得し、個別データ格納部21のブロック内レコードのサイズ(Sl)とする。
次に、連携メモリ管理部18は、更新データ到着ログ15を参照し、接続出力情報211から取得した接続管理IDが一致するレコードを選択し、平均トランザクション数/単位時間(Stn)、平均レコード数/トランザクション(Stl)の値を取得する(S304)。このとき、連携元となる変換部12が追加された場合、すなわち連携元データベースのテーブルが新規に追加された場合には、平均トランザクション数、平均レコード数が更新データ到着ログに記録されていない場合がある。この場合には、予め指定した規定値を平均トランザクション数、平均レコード数として割り当て、個別データ格納部21のサイズを算出する際の指標とする。
次に、連携メモリ管理部18は、個別データ格納部として(Stn×重複接続管理ID数)×Stl×Slに相当するサイズのバッファを取得し、個別データ格納情報206(図4)の個別データ格納部ID欄にバッファへの接続子を、接続管理ID欄に当該接続管理IDを格納する行を追加する(S305)。
次に、CDW処理部13が個別データ格納部21へのアクセスを確立する(S306)。
なお、この時点では、追加された出力エッジIDが含まれる接続出力情報211(図5)は生成済みであるとする。
連携メモリ管理部18は、通知された出力エッジIDとCDWidが示される接続出力情報211を抽出し、抽出した接続出力情報211に示される接続管理IDを取得する(S301)。
次に、連携メモリ管理部18は、通知されたCDWidと同じプロセスIDが示されている連携管理情報17のプロセス管理表203(図4)を抽出し、抽出したプロセス管理表203に対応付けられているデータ格納部情報204のうち、S301で取得した接続管理IDと同じ接続管理IDが示されているデータ格納部情報204を検索する(S302)。
該当するデータ格納部情報204が抽出できなかった場合、すなわち、S301で取得した接続管理IDが未登録の場合(S303でYES)、新たな個別データ格納部21と個別排他制御部20を生成する必要があるため、連携メモリ管理部18は、図S301で抽出した接続出力情報211より実行時付加情報(レコード長)を取得し、個別データ格納部21のブロック内レコードのサイズ(Sl)とする。
次に、連携メモリ管理部18は、更新データ到着ログ15を参照し、接続出力情報211から取得した接続管理IDが一致するレコードを選択し、平均トランザクション数/単位時間(Stn)、平均レコード数/トランザクション(Stl)の値を取得する(S304)。このとき、連携元となる変換部12が追加された場合、すなわち連携元データベースのテーブルが新規に追加された場合には、平均トランザクション数、平均レコード数が更新データ到着ログに記録されていない場合がある。この場合には、予め指定した規定値を平均トランザクション数、平均レコード数として割り当て、個別データ格納部21のサイズを算出する際の指標とする。
次に、連携メモリ管理部18は、個別データ格納部として(Stn×重複接続管理ID数)×Stl×Slに相当するサイズのバッファを取得し、個別データ格納情報206(図4)の個別データ格納部ID欄にバッファへの接続子を、接続管理ID欄に当該接続管理IDを格納する行を追加する(S305)。
次に、CDW処理部13が個別データ格納部21へのアクセスを確立する(S306)。
一方、S303にて接続管理IDが存在する場合、S301で取得した接続出力情報211から実行時付加情報(レコード長)を取得し、取得した実行時付加情報(レコード長)を、S302の検索の結果得られたデータ格納部情報204(図4)に対応付けられている個別データ格納情報206の連携対象カラム長総数(Sl)に加算する(S307)。
また、連携メモリ管理部18は、個別データ格納情報206の接続管理ID重複数を加算する(S308)。
次に、連携メモリ管理部18は、接続管理IDをキーに更新データ到着ログ15から最新の、平均トランザクション数/単位時間(Stn)、平均レコード数/トランザクション(Stl)の値を取得し、Stn×Stl×Slを算出し、個別データ格納部の増分容量を算出する(S309)。
次に、連携メモリ管理部18は、変換部接続情報(図5)から出力エッジIDをもとに変換部12のプロセス識別子を検索し、プロセス識別子を取得した変換部12と追加対象のCDW処理部13に対して、当該個別データ格納部21へのアクセス遮断処理の実施を通知する(S310)。
アクセス遮断完了後、連携メモリ管理部18は、当該個別データ格納部21の容量拡大を実施する(S311)。
最後に、連携メモリ管理部18は、当該個別データ格納部21へのアクセスが遮断されていた変換部12及びCDW処理部13に再オープン処理実施を通知する(S312)。
また、連携メモリ管理部18は、個別データ格納情報206の接続管理ID重複数を加算する(S308)。
次に、連携メモリ管理部18は、接続管理IDをキーに更新データ到着ログ15から最新の、平均トランザクション数/単位時間(Stn)、平均レコード数/トランザクション(Stl)の値を取得し、Stn×Stl×Slを算出し、個別データ格納部の増分容量を算出する(S309)。
次に、連携メモリ管理部18は、変換部接続情報(図5)から出力エッジIDをもとに変換部12のプロセス識別子を検索し、プロセス識別子を取得した変換部12と追加対象のCDW処理部13に対して、当該個別データ格納部21へのアクセス遮断処理の実施を通知する(S310)。
アクセス遮断完了後、連携メモリ管理部18は、当該個別データ格納部21の容量拡大を実施する(S311)。
最後に、連携メモリ管理部18は、当該個別データ格納部21へのアクセスが遮断されていた変換部12及びCDW処理部13に再オープン処理実施を通知する(S312)。
次に、S304〜S306の処理時にて新規に個別データ格納部21を生成した場合の変換部12によるオープン処理のフローを説明する。
変換部12は、連携メモリ管理部18に対して初期化ハンドルと出力エッジIDを通知する。
連携メモリ管理部18は、連携接続情報の接続先情報211(図5)から出力エッジIDをキーに、CDWidと接続管理IDを取得する。
次に、連携メモリ管理部18は、取得したCDWidと同じプロセスIDが示されている連携管理情報17のプロセス管理表203(図4)を抽出し、抽出したプロセス管理表203に対応付けられているデータ格納部情報204のうち、取得した接続管理IDと同じ接続管理IDが示されているデータ格納部情報204を抽出する。
次に、連携メモリ管理部18は、抽出したデータ格納部情報204に対応付けられている個別データ格納情報の個別データ格納部IDと、個別排他制御情報の個別排他制御IDを取得する。
次に、連携メモリ管理部18は、取得した個別データ格納部IDをキーに個別データ格納部21をマップする。
より具体的には、C言語で実装した場合にはマップファイルによる共有メモリをマップする操作となる。
さらに、連携メモリ管理部18は、個別排他制御IDをキーに排他制御用のセマフォを生成する。
次に、連携メモリ管理部18は、オープンハンドルを生成し、また、変換部12から通知された初期化ハンドルと同じ初期化ハンドルが示されているプロセス管理表203(図4)を抽出し、抽出したプロセス管理表203に対応付けられているオープンハンドル情報208に、生成したオープンハンドルの情報を格納し、個別排他制御情報の欄にセマフォキーを格納し、個別データ格納情報の欄に共有メモリのアドレス(個別データ格納部のアドレス)を格納し、入力/出力エッジの欄に変換部12から通知された出力エッジIDを格納し、オープンハンドルを変換部12に返却する。
連携メモリ管理部18は、連携接続情報の接続先情報211(図5)から出力エッジIDをキーに、CDWidと接続管理IDを取得する。
次に、連携メモリ管理部18は、取得したCDWidと同じプロセスIDが示されている連携管理情報17のプロセス管理表203(図4)を抽出し、抽出したプロセス管理表203に対応付けられているデータ格納部情報204のうち、取得した接続管理IDと同じ接続管理IDが示されているデータ格納部情報204を抽出する。
次に、連携メモリ管理部18は、抽出したデータ格納部情報204に対応付けられている個別データ格納情報の個別データ格納部IDと、個別排他制御情報の個別排他制御IDを取得する。
次に、連携メモリ管理部18は、取得した個別データ格納部IDをキーに個別データ格納部21をマップする。
より具体的には、C言語で実装した場合にはマップファイルによる共有メモリをマップする操作となる。
さらに、連携メモリ管理部18は、個別排他制御IDをキーに排他制御用のセマフォを生成する。
次に、連携メモリ管理部18は、オープンハンドルを生成し、また、変換部12から通知された初期化ハンドルと同じ初期化ハンドルが示されているプロセス管理表203(図4)を抽出し、抽出したプロセス管理表203に対応付けられているオープンハンドル情報208に、生成したオープンハンドルの情報を格納し、個別排他制御情報の欄にセマフォキーを格納し、個別データ格納情報の欄に共有メモリのアドレス(個別データ格納部のアドレス)を格納し、入力/出力エッジの欄に変換部12から通知された出力エッジIDを格納し、オープンハンドルを変換部12に返却する。
本実施の形態によれば、連携接続情報24を更新した場合に、更新された連携接続情報24に関連する変換部12とCDW処理部13の処理のみが中断され、データ格納部19とのオープン処理が発生することとなる。
従来では、連携接続情報24の更新によりプロセス間通信を実施するためバッファを共有する全ての変換部とCDW処理部の処理を中断していた。
しかし、本実施の形態により、オープン処理の発生対象を連携元テーブルとして追加されたテーブルに対応する変換部12と連携先テーブルを構成するデータベースに対応して稼動するCDW処理部13のみに限定することが可能となり、データベース連携装置のスループットを向上させることができる。
従来では、連携接続情報24の更新によりプロセス間通信を実施するためバッファを共有する全ての変換部とCDW処理部の処理を中断していた。
しかし、本実施の形態により、オープン処理の発生対象を連携元テーブルとして追加されたテーブルに対応する変換部12と連携先テーブルを構成するデータベースに対応して稼動するCDW処理部13のみに限定することが可能となり、データベース連携装置のスループットを向上させることができる。
このように、本実施の形態では、いずれかのCDW処理部13が対象とする連携先テーブルが変化した場合に、当該CDW処理部13以外のCDW処理部13と、当該CDW処理部13を更新反映データの受け渡し先としている変換部12以外の変換部12の動作に影響を与えずに、当該CDW処理部13に対応する新たな個別データ格納部21の生成及び当該CDW処理部13に対応する既存の個別データ格納部21の容量の変更を行うことができる。
以上、本実施の形態では、
統合連携情報が更新された際に、連携先テーブル情報を参照し、連携先テーブル情報に追加された新たな連携先テーブルのカラム構成情報に基づき、変換部から書き込まれるデータ長を算出する連携メモリ管理部を備え、
連携先データベースとして新たに追加されたレコードのデータ長に応じて個別データ格納部の容量を算出し、個別データ格納部を拡張可能なデータベース連携装置を説明した。
統合連携情報が更新された際に、連携先テーブル情報を参照し、連携先テーブル情報に追加された新たな連携先テーブルのカラム構成情報に基づき、変換部から書き込まれるデータ長を算出する連携メモリ管理部を備え、
連携先データベースとして新たに追加されたレコードのデータ長に応じて個別データ格納部の容量を算出し、個別データ格納部を拡張可能なデータベース連携装置を説明した。
実施の形態3.
本実施の形態では、データベース連携装置1を実装するハードウェアに加えて、個別データ格納部21のデータを一時的に格納する二次記憶格納部26を設けた例を、図面を参照して説明する。
本実施の形態では、データベース連携装置1を実装するハードウェアに加えて、個別データ格納部21のデータを一時的に格納する二次記憶格納部26を設けた例を、図面を参照して説明する。
図12は、本実施の形態に係るシステム構成例を示す。
なお、図12では、作図上の理由から、データ連携設計部6、データ連携設計情報7の図示を省略しているが、図2と同様に、データベース連携装置1には、データ連携設計部6、データ連携設計情報7が含まれているものとする。
本実施の形態では、図1に示すデータベース連携装置1の構成に加えて、二次記憶装置である二次記憶格納部26が含まれるデータ退避装置27を設けている。
データ退避装置27とデータベース連携装置1は、同一のハードウェア装置に実装しても、異なるハードウェア装置に実装してもよい。
また、データ退避装置27を複数のデータベース連携装置1で利用する構成であってもよい。
なお、図12では、作図上の理由から、データ連携設計部6、データ連携設計情報7の図示を省略しているが、図2と同様に、データベース連携装置1には、データ連携設計部6、データ連携設計情報7が含まれているものとする。
本実施の形態では、図1に示すデータベース連携装置1の構成に加えて、二次記憶装置である二次記憶格納部26が含まれるデータ退避装置27を設けている。
データ退避装置27とデータベース連携装置1は、同一のハードウェア装置に実装しても、異なるハードウェア装置に実装してもよい。
また、データ退避装置27を複数のデータベース連携装置1で利用する構成であってもよい。
実施の形態1及び2では、個別データ格納部21を主記憶装置(共有メモリ)上に生成している。
連携先データベース5がなんらかの理由により停止した場合、CDW処理部13は連携先データベース5に対する書込み処理を実施することができないため、個別データ格納部21に格納されている更新反映データを消去することができない。
この場合、個別データ格納部21を実装するメモリが枯渇し、変換部12の処理が待ち状態となるため、その影響が受信部11に伝播し、CDC22からの更新データ受け取りが滞ることになってしまう。
連携先データベース5がなんらかの理由により停止した場合、CDW処理部13は連携先データベース5に対する書込み処理を実施することができないため、個別データ格納部21に格納されている更新反映データを消去することができない。
この場合、個別データ格納部21を実装するメモリが枯渇し、変換部12の処理が待ち状態となるため、その影響が受信部11に伝播し、CDC22からの更新データ受け取りが滞ることになってしまう。
そこで、本実施の形態では、二次記憶格納部26が含まれるデータ退避装置27を備えることで、個別データ格納部21に格納すべき更新反映データを一時的に二次記憶格納部26に退避させ、変換部12の処理待ち状態の発生を回避し、CDC22からの更新データ到着遅れを発生させないようにする。
つまり、個別データ格納部21における更新反映データの蓄積量が所定レベルを超え、オーバーフローが近くなると、連携メモリ管理部18は、二次記憶格納部26内に更新反映データ用の個別データ格納部21を生成する。
変換部12は、連携メモリ管理部18により二次記憶格納部26内に個別データ格納部21が生成される前は、主記憶装置(共有メモリ)内の個別データ格納部21に更新反映データを書き込み、連携メモリ管理部18により二次記憶格納部26内に個別データ格納部21が生成された後は、二次記憶格納部26内の個別データ格納部21に更新反映データを書き込む。
また、同様に、個別データ格納部21における更新済レコードの蓄積量が所定レベルを超え、オーバーフローが近くなると、連携メモリ管理部18は、二次記憶格納部26内に更新済レコード用の個別データ格納部21を生成する。
受信部11は、連携メモリ管理部18により二次記憶格納部26内に個別データ格納部21が生成される前は、主記憶装置(共有メモリ)内の個別データ格納部21に更新済レコードを書き込み、連携メモリ管理部18により二次記憶格納部26内に個別データ格納部21が生成された後は、二次記憶格納部26内の個別データ格納部21に更新済レコードを書き込む。
つまり、個別データ格納部21における更新反映データの蓄積量が所定レベルを超え、オーバーフローが近くなると、連携メモリ管理部18は、二次記憶格納部26内に更新反映データ用の個別データ格納部21を生成する。
変換部12は、連携メモリ管理部18により二次記憶格納部26内に個別データ格納部21が生成される前は、主記憶装置(共有メモリ)内の個別データ格納部21に更新反映データを書き込み、連携メモリ管理部18により二次記憶格納部26内に個別データ格納部21が生成された後は、二次記憶格納部26内の個別データ格納部21に更新反映データを書き込む。
また、同様に、個別データ格納部21における更新済レコードの蓄積量が所定レベルを超え、オーバーフローが近くなると、連携メモリ管理部18は、二次記憶格納部26内に更新済レコード用の個別データ格納部21を生成する。
受信部11は、連携メモリ管理部18により二次記憶格納部26内に個別データ格納部21が生成される前は、主記憶装置(共有メモリ)内の個別データ格納部21に更新済レコードを書き込み、連携メモリ管理部18により二次記憶格納部26内に個別データ格納部21が生成された後は、二次記憶格納部26内の個別データ格納部21に更新済レコードを書き込む。
以上、本実施の形態では、
主記憶装置上に構成した個別データ格納部の容量を超過する連携対象データの入力ある場合に、二次記憶格納部に一時的に連携対象データを格納するための領域を確保し、データ処理制御部が主記憶以外のデータ領域を参照するデータベース連携装置を説明した。
主記憶装置上に構成した個別データ格納部の容量を超過する連携対象データの入力ある場合に、二次記憶格納部に一時的に連携対象データを格納するための領域を確保し、データ処理制御部が主記憶以外のデータ領域を参照するデータベース連携装置を説明した。
実施の形態4.
本実施の形態では、図12に示すデータベース連携装置1の構成に加えて、データ退避装置27に二次記憶制御部28を設ける例を説明する。
本実施の形態では、図12に示すデータベース連携装置1の構成に加えて、データ退避装置27に二次記憶制御部28を設ける例を説明する。
図13は、本実施の形態に係るシステム構成例を示す。
なお、図13でも、作図上の理由から、データ連携設計部6、データ連携設計情報7の図示を省略しているが、図2と同様に、データベース連携装置1には、データ連携設計部6、データ連携設計情報7が含まれているものとする。
図13では、図12の構成に比べて、データ退避装置27に二次記憶制御部28が追加されている。
実施の形態3における二次記憶退避処理では、二次記憶格納部26にデータ(更新済レコード、更新反映データ)を書き込む際に書込み確定処理を実施するため、書込み速度が遅く、データベース連携装置1のスループットを著しく低下させる場合がある。
本実施の形態では、二次記憶制御部28が、書き込み元のデータ連携処理部23の識別子と、書き込み先の二次記憶格納部26と、読み出し対象のデータ連携処理部23の識別子を対応づけて保持する。
これにより、二次記憶格納部26への書込み処理が二次記憶制御部28に要求された場合、二次記憶制御部28では要求元のデータ連携処理部23の識別子を受け取り、対応する退避領域へデータを一時格納する。
このとき、二次記憶格納部26のディスクへの書込み確定処理を実施せず、二次記憶格納部26のメモリ上に書き込み対象のデータを留める。
データベース連携装置1のデータ連携処理部23からデータの読込み要求があった際に、二次記憶制御部28は、要求元のデータ連携処理部23の識別子を取得し、対応する二次記憶格納部26に対する確定処理を実施し、二次記憶格納部26からの読込み処理でのみ唯一の確定処理を実施する。
より具体的には、データ退避装置27としてリレーショナルデータベースを活用した際、データ書込み時にコミットせず、データ読込み要求が二次記憶制御部28に到着した場合にコミットを実施し、確定したデータを読み込み要求元に返却する構成とする。
なお、図13でも、作図上の理由から、データ連携設計部6、データ連携設計情報7の図示を省略しているが、図2と同様に、データベース連携装置1には、データ連携設計部6、データ連携設計情報7が含まれているものとする。
図13では、図12の構成に比べて、データ退避装置27に二次記憶制御部28が追加されている。
実施の形態3における二次記憶退避処理では、二次記憶格納部26にデータ(更新済レコード、更新反映データ)を書き込む際に書込み確定処理を実施するため、書込み速度が遅く、データベース連携装置1のスループットを著しく低下させる場合がある。
本実施の形態では、二次記憶制御部28が、書き込み元のデータ連携処理部23の識別子と、書き込み先の二次記憶格納部26と、読み出し対象のデータ連携処理部23の識別子を対応づけて保持する。
これにより、二次記憶格納部26への書込み処理が二次記憶制御部28に要求された場合、二次記憶制御部28では要求元のデータ連携処理部23の識別子を受け取り、対応する退避領域へデータを一時格納する。
このとき、二次記憶格納部26のディスクへの書込み確定処理を実施せず、二次記憶格納部26のメモリ上に書き込み対象のデータを留める。
データベース連携装置1のデータ連携処理部23からデータの読込み要求があった際に、二次記憶制御部28は、要求元のデータ連携処理部23の識別子を取得し、対応する二次記憶格納部26に対する確定処理を実施し、二次記憶格納部26からの読込み処理でのみ唯一の確定処理を実施する。
より具体的には、データ退避装置27としてリレーショナルデータベースを活用した際、データ書込み時にコミットせず、データ読込み要求が二次記憶制御部28に到着した場合にコミットを実施し、確定したデータを読み込み要求元に返却する構成とする。
このように、本実施の形態では、二次記憶制御部28は、受信部11/変換部12による二次記憶格納部26内の個別データ格納部21への更新済レコード/更新反映データの書き込みの際には書き込みを確定させず、変換部12/CDW処理部13による二次記憶格納部26内の個別データ格納部21からの更新済レコード/更新反映データの読み出しの際に、受信部11/変換部12による更新済レコード/更新反映データの書き込みを確定させる。
このため、書込み確定処理が繰り返し発生することによるデータベース連携装置1のスループット低下を抑制することができる。
このため、書込み確定処理が繰り返し発生することによるデータベース連携装置1のスループット低下を抑制することができる。
以上、本実施の形態では、
二次記憶としてデータを格納する二次記憶格納部と、二次記憶制御部を備えるデータベース連携システムを説明した。
より具体的には、
二次記憶制御部が、
二次記憶格納部への書込み処理と読み出し処理を制御し、
書き込み処理時にはデータ書込み確定処理を実施せず、読み出し処理時にデータ確定処理を実施し、
データ確定処理の実施回数を抑えて、退避装置に対するデータベース連携装置の処理時間を高速化することを説明した。
二次記憶としてデータを格納する二次記憶格納部と、二次記憶制御部を備えるデータベース連携システムを説明した。
より具体的には、
二次記憶制御部が、
二次記憶格納部への書込み処理と読み出し処理を制御し、
書き込み処理時にはデータ書込み確定処理を実施せず、読み出し処理時にデータ確定処理を実施し、
データ確定処理の実施回数を抑えて、退避装置に対するデータベース連携装置の処理時間を高速化することを説明した。
最後に、実施の形態1〜4に示したデータベース連携装置1のハードウェア構成例について説明する。
図15は、実施の形態1〜4に示すデータベース連携装置1のハードウェア資源の一例を示す図である。
なお、図15の構成は、あくまでもデータベース連携装置1のハードウェア構成の一例を示すものであり、データベース連携装置1のハードウェア構成は図15に記載の構成に限らず、他の構成であってもよい。
図15は、実施の形態1〜4に示すデータベース連携装置1のハードウェア資源の一例を示す図である。
なお、図15の構成は、あくまでもデータベース連携装置1のハードウェア構成の一例を示すものであり、データベース連携装置1のハードウェア構成は図15に記載の構成に限らず、他の構成であってもよい。
図15において、データベース連携装置1は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、SSD(Solid State Drive)、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態1〜4で説明した「個別データ格納部21」は、共有メモリとしてのRAM914上に構成される。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、SSD(Solid State Drive)、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態1〜4で説明した「個別データ格納部21」は、共有メモリとしてのRAM914上に構成される。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
通信ボード915は、図1に示すように、ネットワーク接続されている。
例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されていても構わない。
例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されていても構わない。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
データベース連携装置1の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
データベース連携装置1の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
上記プログラム群923には、実施の形態1〜4の説明において「〜部」(「個別データ格納部21」以外、以下同様)、「〜手段」として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、実施の形態1〜4の説明において、「〜の判断」、「〜の算出」、「〜の比較」、「〜の生成」、「〜の抽出」、「〜の検索」、「〜の取得」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜4で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。
また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜4で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。
また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、実施の形態1〜4の説明において「〜部」、「〜手段」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態1〜4で説明したフローチャートに示すステップ、手順、処理により、本発明に係るデータ処理装置を方法として把握することができる。
また、「〜部」、「〜手段」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。
プログラムはCPU911により読み出され、CPU911により実行される。
すなわち、プログラムは、実施の形態1〜4の「〜部」、「〜手段」としてコンピュータを機能させるものである。あるいは、実施の形態1〜4の「〜部」、「〜手段」の手順や方法をコンピュータに実行させるものである。
すなわち、実施の形態1〜4で説明したフローチャートに示すステップ、手順、処理により、本発明に係るデータ処理装置を方法として把握することができる。
また、「〜部」、「〜手段」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。
プログラムはCPU911により読み出され、CPU911により実行される。
すなわち、プログラムは、実施の形態1〜4の「〜部」、「〜手段」としてコンピュータを機能させるものである。あるいは、実施の形態1〜4の「〜部」、「〜手段」の手順や方法をコンピュータに実行させるものである。
このように、実施の形態1〜4に示すデータベース連携装置1は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」、「〜手段」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
そして、上記したように「〜部」、「〜手段」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
1 データベース連携装置、2 連携元システム、3 連携元データベース、4 連携先システム、5 連携先データベース、6 データ連携設計部、7 データ連携設計情報、8 統合連携情報、9 連携元テーブル情報、10 連携先テーブル情報、11 受信部、12 変換部、13 CDW処理部、14 データ連携連動型バッファ管理部、15 更新データ到着ログ、16 データ処理制御部、17 連携管理情報、18 連携メモリ管理部、19 データ格納部、20 個別排他制御部、21 個別データ格納部、22 CDC、23 データ連携処理部、24 連携接続情報。
Claims (15)
- 連携元テーブルにおける更新を連携先テーブルに反映させるデータ処理装置であって、
前記連携元テーブルにおいて更新された更新済レコードを受信する更新済レコード受信部と、
前記連携先テーブルをレコード単位で更新する連携先テーブル更新部と、
前記更新済レコードを用いて、前記連携元テーブルにおける更新を反映するデータであって、前記連携先テーブルのレコードの少なくとも一部になるデータを更新反映データとして生成する更新反映データ生成部と、
前記更新済レコード受信部から前記更新反映データ生成部に更新済レコードを受け渡すための更新済レコードバッファを生成する更新済レコードバッファ生成部と、
前記更新反映データ生成部から前記連携先テーブル更新部に更新反映データを受け渡すための更新反映データバッファを生成する更新反映データバッファ生成部とを有し、
前記更新済レコード受信部は、
受信した更新済レコードを前記更新済レコードバッファに書き込み、
前記更新反映データ生成部は、
前記更新済レコード受信部による更新済レコードの受信とは非同期に、前記更新済レコードバッファに格納されている更新済レコードを読み出し、読み出した更新済レコードを用いて更新反映データを生成し、生成した更新反映データを前記更新反映データバッファに書き込み、
前記連携先テーブル更新部は、
前記更新済レコード受信部による更新済レコードの受信及び前記更新反映データ生成部による更新反映データの生成とは非同期に、前記更新反映データバッファに格納されている更新反映データを読み出し、読み出した更新反映データを用いて連携先テーブルの更新を行うことを特徴とするデータ処理装置。 - 前記連携先テーブル更新部は、
前記更新反映データバッファから読み出した更新反映データを用いて、1トランザクションにおいて前記連携先テーブルの2個以上のレコードに対する更新を行うことを特徴とする請求項1に記載のデータ処理装置。 - 前記データ処理装置は、
対象としている連携先テーブルが異なっている複数の連携先テーブル更新部を有し、
前記更新反映データバッファ生成部は、
連携先テーブル更新部ごとに更新反映データバッファを生成し、
前記更新反映データ生成部は、
生成した更新反映データを、受け渡し先として指定されている連携先テーブル更新部の更新反映データバッファに書き込み、
各連携先テーブル更新部は、
対応する更新反映データバッファに格納されている更新反映データを読み出し、読み出した更新反映データを用いて連携先テーブルの更新を行うことを特徴とする請求項1又は2に記載のデータ処理装置。 - 各連携先テーブル更新部は、
更新反映データの読み出し及び連携先テーブルの更新を、他の連携先テーブル更新部における更新反映データの読み出し及び連携先テーブルの更新と並行して行うことを特徴とする請求項3に記載のデータ処理装置。 - 前記データ処理装置は、
対象としている連携元テーブルが異なっている複数の更新反映データ生成部を有し、
前記更新済レコードバッファ生成部は、
更新反映データ生成部ごとに更新済レコードバッファを生成し、
前記更新済レコード受信部は、
受信した更新済レコードを、受け渡し先として指定されている更新反映データ生成部の更新済レコードバッファに書き込み、
各更新反映データ生成部は、
対応する更新反映データバッファから更新済レコードを読み出し、読み出した更新済レコードを用いて更新反映データを生成し、生成した更新反映データを、受け渡し先として指定されている連携先テーブル更新部の更新反映データバッファに書き込むことを特徴とする請求項3又は4に記載のデータ処理装置。 - 前記更新反映データバッファ生成部は、
連携先テーブル更新部ごとに、更新反映データの受け渡し元の更新反映データ生成部ごとの更新反映データバッファを生成することを特徴とする請求項5に記載のデータ処理装置。 - 前記更新反映データバッファ生成部は、
更新反映データの受け渡し元の更新反映データ生成部ごとに、更新反映データ生成部から連携先テーブル更新部に受け渡す更新反映データのデータ長と、更新反映データ生成部が対象としている連携元テーブルからの更新済レコードの単位時間あたりの受信数と、連携先テーブル更新部が更新反映データを反映させるレコード数とを積算し、積算により得られる容量分の更新反映データバッファを生成することを特徴とする請求項6に記載のデータ処理装置。 - 各更新反映データ生成部は、
受け渡し先として指定されている連携先テーブル更新部の更新反映データ生成部ごとの更新反映データバッファのうち、対応する更新反映データバッファに更新反映データを書き込むことを特徴とする請求項6又は7に記載のデータ処理装置。 - 前記データ処理装置は、更に、
更新反映データ生成部ごとの更新反映データバッファ単位で、更新反映データの書き込みに対する排他制御を行う排他制御部を有することを特徴とする請求項6〜8のいずれかに記載のデータ処理装置。 - 各更新反映データ生成部は、
更新反映データの書き込み先の更新反映データバッファが複数ある場合に、複数の更新反映データバッファへの更新反映データの書き込みを並列に行うことを特徴とする請求項5〜9のいずれかに記載のデータ処理装置。 - 前記更新済レコードバッファ生成部は、
更新反映データ生成部ごとに、対象としている連携元テーブルからの更新済レコードの単位時間あたりの受信数と、対象としている連携元テーブルのレコード長とに基づき、更新済レコードバッファの容量を算出することを特徴とする請求項5〜10のいずれかに記載のデータ処理装置。 - 前記更新反映データバッファ生成部は、
いずれかの連携先テーブル更新部が対象とする連携先テーブルが変化した場合に、
当該連携先テーブル更新部以外の連携先テーブル更新部と、当該連携先テーブル更新部を更新反映データの受け渡し先としている更新反映データ生成部以外の更新反映データ生成部の動作に影響を与えずに、当該連携先テーブル更新部に対応する新たな更新反映データバッファの生成及び当該連携先テーブル更新部に対応する既存の更新反映データバッファの容量の変更の少なくともいずれかを行うことを特徴とする請求項5〜11のいずれかに記載のデータ処理装置。 - 前記更新反映データバッファ生成部は、
前記データ処理装置の主記憶装置内に更新反映データバッファを生成した後に、主記憶装置内の更新反映データバッファが特定の状態になった場合に、前記データ処理装置の二次記憶装置内に更新反映データバッファを生成し、
各更新反映データ生成部は、
前記更新反映データバッファ生成部により前記二次記憶装置内に更新反映データバッファが生成される前は、前記主記憶装置内の更新反映データバッファに更新反映データを書き込み、前記更新反映データバッファ生成部により前記二次記憶装置内に更新反映データバッファが生成された後は、前記二次記憶装置内の更新反映データバッファに更新反映データを書き込むことを特徴とする請求項5〜12のいずれかに記載のデータ処理装置。 - 前記データ処理装置は、更に、
更新反映データ生成部による前記二次記憶装置内の更新反映データバッファへの更新反映データの書き込みの際には書き込みを確定させず、連携先テーブル更新部による前記二次記憶装置内の更新反映データバッファからの更新反映データの読み出しの際に、更新反映データ生成部による更新反映データの書き込みを確定させる二次記憶制御部を有することを特徴とする請求項13に記載のデータ処理装置。 - 前記更新済レコードバッファ生成部は、
前記データ処理装置の主記憶装置内に更新済レコードバッファを生成した後に、主記憶装置内の更新済レコードバッファが特定の状態になった場合に、前記データ処理装置の二次記憶装置内に更新済レコードバッファを生成し、
前記更新済レコード受信部は、
前記更新済レコードバッファ生成部により前記二次記憶装置内に更新済レコードバッファが生成される前は、前記主記憶装置内の更新済レコードバッファに更新済レコードを書き込み、前記更新済レコードバッファ生成部により前記二次記憶装置内に更新済レコードバッファが生成された後は、前記二次記憶装置内の更新済レコードバッファに更新済レコードを書き込むことを特徴とする請求項5〜14のいずれかに記載のデータ処理装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/073608 WO2012090281A1 (ja) | 2010-12-27 | 2010-12-27 | データ処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2012090281A1 true JPWO2012090281A1 (ja) | 2014-06-05 |
Family
ID=46382431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012550608A Pending JPWO2012090281A1 (ja) | 2010-12-27 | 2010-12-27 | データ処理装置 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JPWO2012090281A1 (ja) |
WO (1) | WO2012090281A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014106568A (ja) * | 2012-11-22 | 2014-06-09 | Mitsubishi Electric Corp | 表示操作器及び画面パターン情報更新システム |
JP7457282B2 (ja) | 2020-02-28 | 2024-03-28 | 京セラドキュメントソリューションズ株式会社 | データ連携システムおよび構成変更システム |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05324426A (ja) * | 1992-05-22 | 1993-12-07 | Toshiba Corp | フォーマット変換装置 |
JPH0883221A (ja) * | 1994-09-14 | 1996-03-26 | Toshiba Corp | データ変換装置 |
JPH10340217A (ja) * | 1997-05-09 | 1998-12-22 | At & T Corp | データベースネットワーク及びデータ更新複製方法 |
JP2005322159A (ja) * | 2004-05-11 | 2005-11-17 | Canon Inc | データ連携システム及び方法 |
JP2005333434A (ja) * | 2004-05-20 | 2005-12-02 | Matsushita Electric Ind Co Ltd | 無線モジュール |
-
2010
- 2010-12-27 WO PCT/JP2010/073608 patent/WO2012090281A1/ja active Application Filing
- 2010-12-27 JP JP2012550608A patent/JPWO2012090281A1/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05324426A (ja) * | 1992-05-22 | 1993-12-07 | Toshiba Corp | フォーマット変換装置 |
JPH0883221A (ja) * | 1994-09-14 | 1996-03-26 | Toshiba Corp | データ変換装置 |
JPH10340217A (ja) * | 1997-05-09 | 1998-12-22 | At & T Corp | データベースネットワーク及びデータ更新複製方法 |
JP2005322159A (ja) * | 2004-05-11 | 2005-11-17 | Canon Inc | データ連携システム及び方法 |
JP2005333434A (ja) * | 2004-05-20 | 2005-12-02 | Matsushita Electric Ind Co Ltd | 無線モジュール |
Also Published As
Publication number | Publication date |
---|---|
WO2012090281A1 (ja) | 2012-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11003689B2 (en) | Distributed database transaction protocol | |
US11036540B2 (en) | Transaction commit operations with thread decoupling and grouping of I/O requests | |
US10110673B2 (en) | State management in distributed computing systems | |
US9230002B2 (en) | High performant information sharing and replication for single-publisher and multiple-subscriber configuration | |
US8392387B2 (en) | Asynchronous deletion of a range of messages processed by a parallel database replication apply process | |
US7702741B2 (en) | Configuring or reconfiguring a multi-master information sharing environment | |
US9934263B1 (en) | Big-fast data connector between in-memory database system and data warehouse system | |
US11263236B2 (en) | Real-time cross-system database replication for hybrid-cloud elastic scaling and high-performance data virtualization | |
US20160147859A1 (en) | Transactional and Parallel Log Replay for Asynchronous Table Replication | |
JP2006501585A (ja) | 非同期情報共有システム | |
CN113826084A (zh) | 流媒体数据的高效进程外重组 | |
JP2011258122A (ja) | データ転送装置及びデータ転送方法及びデータ転送プログラム及びデータ連携システム | |
WO2007078479A2 (en) | Method and mechanism for loading xml documents into memory | |
Chohan et al. | Database-agnostic transaction support for cloud infrastructures | |
JP4432087B2 (ja) | データベース更新管理システム、プログラムおよび方法 | |
JP5331050B2 (ja) | データ同期システム、データ同期方法、情報処理装置、情報処理方法、およびプログラム | |
WO2012090281A1 (ja) | データ処理装置 | |
JPWO2008105099A1 (ja) | アプリケーション連携制御プログラム、アプリケーション連携制御方法およびアプリケーション連携制御装置 | |
CN111459882A (zh) | 分布式文件系统的命名空间事务处理方法和装置 | |
US20110191549A1 (en) | Data Array Manipulation | |
JP5494915B2 (ja) | レプリケーションシステム、マスタサーバ、レプリカサーバ、レプリケーション方法、及びプログラム | |
US11921691B2 (en) | Low latency demultiplexer for propagating ordered data to multiple sinks | |
JP2008146420A (ja) | I/o要求の処理順序を最適化するためのコンピュータプログラム | |
Diaz et al. | Working with NoSQL Alternatives | |
US20170262512A1 (en) | Search processing method, search processing apparatus, and non-transitory computer-readable recording medium storing search processing program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20131119 |