(57)【要約】【課題】ジャーナルエントリが、データメースメンバー、及びユーザーの指定したグルーピングによって確実に順序付けられるデータベース複製システムを実現する。【解決手段】本発明は、情報のストリングスが処理のための順序付けグループに割り当てられるデータベース複製の方法を含む、データ処理法及びシステムに関する。記憶スペース領域から、その領域にデータの書き込みが行われていない間に、データが送られるメモリ管理の方法が開示されている。データベースメンバーに提供された処理情報に対してダイナミックテーブルが作成される、データベースを複製する方法も開示されている。更に、タスクが、プログラムコンポーネントに、プログラムコンポーネント同士の対話無しに割り当てられる、データベースを複製する方法も開示されている。【選択図】図１
2006202337.tif 000002
【特許請求の範囲】
【請求項１】
データ伝送オペレーションにおいてメモリスペースを管理する方法において、
ｉ）複数の記憶スペース領域を定義する段階と、
ii）データを第１記憶スペース領域に書き込む段階と、
iii）前記第１記憶スペース領域にデータが書き込まれていない間に、前記第１記憶スペース領域からデータを読み出す段階と、を含むことを特徴とする方法。
【請求項２】
前記データは、データベースジャーナルエントリであることを特徴とする、請求項１に記載の方法。
【請求項３】
前記ジャーナルエントリは、第１の記憶スペース領域が少なくとも実質的に一杯になり、次いでデータが次の記憶スペース領域に書き込まれるようになるまで、第１の記憶スペース領域に連続して書き込まれることを特徴とする、請求項２に記載の方法。
【請求項４】
各ジャーナルエントリは、同じ順序付けグループを有する次のジャーナルエントリへの変位（displacement）を記録する、関連ヘッダ（associated header）を有していることを特徴とする、請求項２又は３に記載の方法。
【請求項５】
データが第１の記憶スペースから読み取られている間に、データが第２の記憶スペースに書き込まれることを特徴とする、請求項１から４の何れかに記載の方法。
【請求項６】
各記憶スペースは、その記憶スペース内にジャーナルエントリを有する順序付けグループの数を記録する記憶スペースヘッダを有していることを特徴とする、請求項１から５の何れかに記載の方法。
【請求項７】
全てのデータが記憶スペースから読み取られたとき、前記記憶スペースヘッダは減らされ、その記憶スペースはデータを書き込めるようになることを特徴とする、請求項６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理の方法及び装置に関する。より具体的には、排他的にというわけではないが、本発明は、データベース複製の方法及び装置に関する。
【背景技術】
【０００２】
数多くのデータ処理アプリケーションでは、ソースシステムから送られてくるデ−タのフラクションを、目標システム上で必要なデータフォーマットに処理しなければならない。
【０００３】
ソースシステム上のデータベースから、目標コンピュータシステム上にデータベースを複製することが求められることも多い。この処理には、ソースデータベースからジャーナルエントリエントリを送って、目標データベースを更新できるようにすることも含まれる。データベースは１つ又は複数のライブラリから構成され、各ライブラリには１つ又は複数のファイルが含まれ、各ファイルは１つ又は複数のメンバーを有している。各メンバーは、１つ又は複数の行を有するテーブルで構成されている。ジャーナルエントリは、ライブラリの識別子と、ファイルと、ファイルメンバーと、ファイルメンバーに関する変更されたデータの行を含んでいる。目標コンピュータシステムは、このジャーナルエントリを使ってそのデータベースを更新する。
【０００４】
所与のテーブルからのデータベースエントリが正しい順序で更新されること、相互に関係するメンバーが正しい順序で更新されること、が重要である。ジャーナルエントリを確実に適正に処理するために、目標コンピュータシステムの受信プロセスは、オブジェクト名称（ライブラリ／ファイル／メンバー）を、目標コンピュータシステムに記憶されたオブジェクトのデータベースと比較する。整合するオブジェクトが在れば、そのオブジェクトに関わる処理情報を使ってジャーナルエントリが処理される。
【０００５】
伝統的な方法では、ジャーナルエントリを伝送し、それを記憶し、１つのエンジンを使ってデータベースを複製する。この方法は、遅くて複雑である。
【０００６】
以下の要件を満足するデータベース複製システムが望ましい。即ち、
１．ジャーナルエントリが、（最低でも）データメースメンバー、及び何であれユーザーの指定したグルーピングによって確実に順序付けられること。
【０００７】
２．極端に数の多いデータベース適用プロセスをサポートし、データベース入出力が容易に管理できるようになっていること。
【０００８】
３．エントリがジャーナルから取得される時間と、それが複製データベースに適用される時間との間のシステム入出力（例えば、ページング）の量を最小化するやり方でジャーナルエントリを処理すること。
【０００９】
４．ファンクションは、ジャーナルエントリだけでなくあらゆる型式のデータベースパケットをサポートしており、将来、他の形式の複製（例えば、オブジェクトファイル、ストリームファイルなど）へ拡張できるようになっていること。
【００１０】
５．システムは、メモリ管理機能の複雑さを、他のコンポーネントから覆い隠していること。
【００１１】
本発明の目的は、以上の要件を満足する情報複製の方法及び装置を提供することであり、或いは少なくとも、有用な選択肢を社会に提供することである。
【００１２】
（発明の要約）
本発明の第１の態様によれば、ソースシステムからの情報を目標システムに複製する方法が提供されており、この方法は、
ｉ）ソースシステムから情報のストリングスを受信する段階と、
ii）情報のストリングスを、相互に関係する情報のストリングスが同じ順序付けグループ内で処理されるように、処理するための順序付けグループに割り当てる段階とで構成されている。
【００１３】
情報のストリングスは、ソースデータベースからのジャーナルエントリで、それが順序付けグループに割り当てられるので、同じ型式のジャーナルエントリ又は他のジャーナルエントリに関係付けられているジャーナルエントリが、同一の順序付けグループ内で処理される。
【００１４】
本発明の別の態様によれば、データ伝送オペレーションにおいてメモリスペースを管理する方法が提供されており、この方法は、
ｉ）複数の記憶スペース領域を定義する段階と、
ii）データを第１記憶スペース領域に書き込む段階と、
iii）第１記憶スペース領域にデータが書き込まれていない間に、第１記憶スペース領域からデータを読み出す段階とで構成されている。
【００１５】
この方法は、情報が第１記憶スペース領域だけに書き込まれている間に、他の複数のデータ記憶スペース領域から同時に複数の読み取りが行えるようにする。
【００１６】
本発明の更に別の態様によれば、ソースコンピュータシステムからのデータベースを、目標コンピュータシステムに複製する方法が提供されており、この方法は、
ｉ）ジャーナルエントリをソースコンピュータシステムから受信する段階と、
ii）ジャーナルエントリの関係するデータベースメンバーに関係する処理情報を与えるダイナミックインデクス内にエントリが存在するかどうかを調べるために、ジャーナルエントリをチェックする段階と、
iii）エントリがダイナミックテーブル内に存在する場合は、関連処理情報に従ってジャーナルエントリを処理する段階と、
iv）エントリがダイナミックインデクス内に存在しない場合は、割り当てデータベース内のデータベースメンバーに対する関係処理情報を探索し、エントリを作ってそれをダイナミックインデクス内に記憶し、次に、処理情報に従ってジャーナルエントリを処理する段階とで構成されている。
【００１７】
ダイナミックインデクス内のエントリは、あるメンバーを他のメンバーによって処理する必要があるか否かに関する情報を提供する。ジャーナルエントリは、処理情報に従って処理される前に、一時的に記憶される。
【００１８】
本発明の更に又別の態様によれば、データベースを、ソースコンピュータシステムから目標コンピュータシステムに複製する方法が提供されており、この方法は、
ｉ）ジャーナルエントリをソースコンピュータシステムから受信する段階と、
ii）ジャーナルエントリを処理して目標データベースを更新するために、プログラムコンポーネントを割り当てる段階と、から成り、制御プログラムは、タスクをプログラムコンポーネントに割り当て、実質的にプログラムコンポーネント同士が互いに対話することなく、プログラムコンポーネントを制御するようになっている。
【発明を実施するための最良の形態】
【００１９】
以下、本発明を、添付図面を参照しながら例を挙げて説明する。
【００２０】
これよりデータベース複製法について説明するが、使用するソースコンピュータシステム及び目標コンピュータシステムは、ＯＳ／４００オペレーティングシステムで作動するＩＢＭ  ＡＳ／４００である。なお、本方法は、適切に修正を施して他のシステムにも適用できるものと理解されたい。
【００２１】
図１に示すように、ソースシステムＡは、一次データベース１を含んでいる。一次データベース１は、１つ又は複数のライブラリを含んでいる。各ライブラリは、１つ又は複数のファイルを含んでいる。各ファイルは、１つ又は複数のメンバーを含んでいる。各メンバーは、１つ又は複数の行を有するテーブルを含んでいる。固有のライブラリ／ファイル／メンバーの組合せをオブジェクトと呼ぶ。
【００２２】
一次データベース１の何れかのメンバーの行が修正されると、オブジェクト名と修正された行を含むジャーナルエントリが、局所ジャーナル受信器２に送られる。局所ジャーナル受信器２は、ジャーナルエントリを、通信リンク３経由で目標コンピュータシステムＢの遠隔ジャーナル受信器４に送る。データベース複製プロセス５は、ジャーナルエントリを受信して複製データベース６の内容を修正し、一次データベース１の内容に適合した状態に維持する。
【００２３】
次に、図２を参照しながら、目標コンピュータシステムの目標データベース６を複製するためのプロセスと装置について説明する。複製データベース６の適切な複製を確実なものとするため、データベースメンバーは、複製データベース６内で、一次データベース１内で修正されたと同じ順序で更新される。これを遂行するため、多数の順序付けグループ８が定義される。同じオブジェクト名を有するジャーナルエントリは、正しい順序で更新されるように、共通の順序付けグループにグルーピングされる。或るデータベースメンバーが、他のデータベースメンバーと（結合など）関係を有している場合は、共通の順序付けグループに割り当てられ、全ての相互に関係するメンバーが確実に正しい順序で更新されるようにする。このように、順序付けグループは、多数のオブジェクトに関するジャーナルエントリを含んでいる。この様な順序付けグループを使えば、データベース複製を、適切な順序で行えると同時に、効率的な並行処理が容易に行えるようになる。
【００２４】
受信プロセス７は、受信したジャーナルエントリを順序付けグループに割り当てるか、ジャーナルエントリをデフォルト順序付けグループに割り当てるか、ジャーナルエントリを廃棄するか、の何れかを行う。順序付けグループに割り当てるのは、割り当てデータベース（ＭＸＳＧＭＢＡＳ）と一時的ＯＳ／４００ユーザーインデクスオブジェクトに基づいて行われる。ジャーナルエントリ割り当て関数は、ＩＬＥサービスプログラム経由で提供され、このプログラムを使うと、土台をなすインプリメンテーションを、呼び出し関数の再コンパイル／バインド無しに修正することができる。
【００２５】
割り当てデータベースＭＸＳＧＭＢＡＳは、全てのオブジェクトと、各オブジェクト間の関係（即ち、処理の間に或るオブジェクトを他のオブジェクトとグルーピングする必要があるか）と、各オブジェクトの要求する処理の方法を含んでいる。ジャーナルエントリを順序付けグループ８に割り当てるのは、単に、受信した各ジャーナルエントリのオブジェクト名を割り当てデータベースＭＸＳＧＭＢＡＳと比較し、ジャーナルエントリを関連情報に基づいて順序付けグループに割り当てるだけで行うことができる。しかしながら、割り当てデータベースＭＸＳＧＭＢＡＳは多数のオブジェクトを含んでおり、データベース位置突き止めオペレーションを実行し、関連の処理情報を抽出するには相当な処理時間が必要である。本発明によれば、メンバー割り当て（ＭＢＩＸ）インデクス一時オブジェクトを使って、オブジェクトに関する処理情報を記憶する。これは、オブジェクトの関連順序付けグループ及び関係処理情報（関連制御構造とのリンクを含む）を与えるオブジェクトのインデクスである。
【００２６】
次に、図２及び図４を参照しながら、順序付けグループ割り当てを説明する。ジャーナルエントリをステップ１１で受信すると、受信プロエス７は、ステップ１２で比較を行い、オブジェクトがＭＢＩＸインデクス内に存在するか否かを調べる。存在する場合は、オペレーションはステップ１３に進んで、順序付けグループ番号及びデータベースファイルインデクス（ＤＢＦＩＤＸ）が戻され、処理は、割り当てられた順序付けグループ内で継続する。
【００２７】
オブジェクト名がＭＢＩＸインデクス内に記憶されていない場合、ステップ１４で、全オブジェクト名探索がＭＸＳＧＭＢＡＳ内で行われる。探索に成功した場合、順序付けグループは戻され、ステップ１５で、関連順序付けグループによって維持されているダイナミックアレイ内に記憶されている処理情報を指すデータベースファイルインデクス（ＤＢＦＩＤＸ）が割り当てられ、エントリがＭＢＩＸインデクスに追加される。各データベースファイルインデクス（ＤＢＦＩＤＸ）は、単に、順序付けグループに固有のインデクスを増加させることによって作り出される。
【００２８】
ステップ１４で整合が達成されなかった場合、ステップ１６で総称名探索が行われる。これは、ライブラリ／ファイル／＊オールによる、そして次にライブラリ／＊オール／＊オールによる探索を伴っている。総称整合が達成された場合、ステップ１７で全名称（フルネーム）がＭＢＩＸテーブルに追加され、ステップ１５及び１３で前と同じく処理が継続する。整合が達成できなかった場合、ジャーナルエントリは、ステップ１８で廃棄される。
【００２９】
従って、開始時、ＭＢＩＸインデクス１０にはエントリは無いことになる。ジャーナルエントリが処理される度に、オブジェクトに関する順序付けグループと処理情報が、ＭＢＩＸインデクス１０に追加されることになる。順序付けグループと処理情報は、ＭＢＩＸテーブル１０からの方が、ＭＸＳＧＭＢＡＳデータベース９からよりも、遙かに迅速に得ることができる。
【００３０】
この方法は、以下の重要な性能上の利益をもたらす。即ち、
１．順序付けグループは、メンバーの関係処理情報を探索する必要がない。順序付けグループは、単に、データベースファイルインデクスをアクセスの手段として備えているダイナミックアレイ内に処理情報を維持しているだけである。
【００３１】
２．特定のメンバー名に関係する全てのオペレーションは、順序付けグループとデータベースファイルインデクス値に言及し（refer to）、メンバーを一意的に識別する。（「ハンドル」（handle））
次に図３を参照しながら、目標コンピュータシステム内のメモリ管理の方法を説明する。記憶オブジェクトスペースは、多数の記憶ユニットＳＵ1−ＳＵNに分割される。各記憶ユニットは、記憶ユニットヘッダ２０を有している。記憶ユニットヘッダ２０は、記憶ユニット内にジャーナルエントリを有する順序付けグループの数を与える。各データセグメントは、記憶エントリヘッダ２１と記憶エントリ２２で構成されている。記憶エントリは、１６バイト境界上に、エントリと１６ビット境界の間の全てのスペースを満たすパディングブロック（padding block）２３で位置合わせされている。
【００３２】
ジャーナルエントリは、受信プロセス７から、記憶オブジェクトスペース２４内に記憶するために送られる。受信プロセス７からのジャーナルエントリは、ブロック２２内の記憶オブジェクトスペース２４に記憶される。各ジャーナルエントリ２２は、その順序付けグループ用の記憶ユニット内の次のジャーナルエントリへの変位に関する情報と、ジャーナルエントリに関連付けられたメンバーに関する処理情報を含んでいる関連データベースファイルインデクス（ＤＢＦＩＤＸ）とを含んでいる関連記憶エントリヘッダ２１（即ち、ハンドル）を有している。処理情報は、データベースファイルインデクスをアクセスの手段として備えているダイナミックメモリ内に維持されている。
【００３３】
通常の作動時には、ジャーナルエントリは、１つの記憶ユニットに、一杯になって次の利用可能な記憶ユニットにジャーナルエントリを書き込むようになるまで、連続して書き込まれる。或る記憶ユニットに対する書き込みが完了すると、ジャーナルエントリは、所属するその記憶ユニットから読み出せるようになる。部分的に詰め込まれた記憶ユニットは、システムリソースがそれ以外に利用されていない（即ち、入信してくるジャーナルエントリを記憶する必要がない）時に読み出すことができる。
【００３４】
この方法は、読み取り及び書き込みの間にメモリロックを必要としないことを意味している。書き込みプロセスの間、受信プロセス７は、記憶ユニットに書き込むため排他的アクセスを有している。読み取りオペレーションの間にはロックは必要ないので、ジャーナルエントリは、その各関連順序付けグループが同時に読み取ることができる。ロックが必要になるのは、順序付けグループに対する最後のジャーナルエントリが読み出されたとき、記憶ユニットヘッダ２０内に保持されている値を減少させるためだけである。
【００３５】
利用可能な記憶ユニット待ち行列（ＡＳＵＱ）２５は、空き記憶ユニットを使用する順序を制御する。ＡＳＵＱ２５は、空き記憶ユニットのアドレスを記憶する後入れ先出し方式（ＬＩＦＯ）バッファを含んでいる。順序付けグループのジャーナルエントリは、記憶エントリヘッダがヌル値となるまで記憶ユニットから読み出される。各記憶エントリ２２が読み出される度に、記憶ユニットヘッダ２０は減らされる。全てのジャーナルエントリが記憶ユニットから完全に読み出されると、記憶ユニットヘッダ２０はゼロに減らされ、記憶ユニット番号は、ＡＳＵＱに戻され、新しいジャーナルエントリを記憶スペースに書き込む必要が生じたときには、再割り当てされた最初の記憶ユニットとなる。この様にして、直近に使用された記憶ユニットは活動状態に維持され、記憶ユニットのワーキングセットを最小に低減する。
【００３６】
或る記憶ユニット内の全てのジャーナルエントリが読み取られ、その記憶ユニットが解放されると、記憶ユニットの全体アドレス範囲は、データを予備の記憶装置に書き込むことを要求することなくパージすることができる。
【００３７】
図２に戻って、処理の方式を更に説明する。制御プロセス１９は、複製プロセスを監督し、受信プロセス７内の処理、及び各順序付けグループ８内の処理を制御する。この様なやり方で、処理は、各順序付けグループ内で、他の順序付けグループ内の処理に関わることなく実行することができる。全てのプロセスを支配制御プロセス１９で制御することによって、各順序付けグループは、全体オペレーションの複雑さに関わることなく、自身の処理を隔離された状態で実行することができるようになっている。
【００３８】
各順序付けグループが或るメンバーに関するジャーナルエントリを順次受信する度に、複製データベース６内のそのメンバーの更新も順次行われる。特定の順序付けグループでリンクされたメンバーを処理することにより、処理は能率的に行われる。
【００３９】
一次データベースが複製データベース６を作る際には、部分的に適用されたコミットを削除しなければならない。先ず、制御プロセス１９は、受信プロセス７と、順序付けグループ８による処理とを中断する。制御プロセス１９は、次に、全ての「オープン」コミットグループ（例えば、コミット又はロールバック・ジャーナルエントリをまだ受信していないコミットＩＤ）を識別する。これらは、直近のもの（即ち、直近のジャーナルエントリを有するコミットグループ）から最も旧いものまで、逐次、以下のように処理される。即ち、
ｉ）受信プロセス７の受信プロセスは、ジャーナル受信器２６からコミットグループのジャーナルエントリを受信する。
ii）全てのエントリが「デフォルト」順序付けグループに割り当てられる。
iii）各エントリは通常のやり方で記憶ユニット２４内に記憶されるが、逆の順序にリンク付けされる（即ち、リストの最初にあるのが記憶ユニット内では最後のエントリになり、記憶ユニット内の最初のエントリまで後向きにリンクされている）。
iv）記憶ユニットが、そのコミットグループのエントリが完了する前に一杯になった場合、記憶ユニットは（デフォルト順序付けグループに解放する代わりに）ＬＩＦＯ待ち行列ＴＬＱ２７にプッシュされる。すると、新しい記憶ユニットが（通常のように）割り当てられ、エントリは記憶され続ける。
ｖ）コミットグループの利用可能なジャーナルエントリが完全に受信され、記憶ユニットに記憶されると、記憶ユニットは、ＬＩＦＯの順でデフォルト順序付けグループにディスパッチされる。その結果、順序付けグループはジャーナルエントリを逆に順序で（直近のものから最も旧いものへと）受信することになる。
vi）デフォルト順序付けグループは、エントリを「逆」エントリ（エントリは、「逆」エントリであることを表示するフラグを含んでいる）として処理する。その結果、全ての挿入は削除として処理され、更新はその前のイメージに移され、削除が挿入される、等のようになる。既に（例えば、通常の処理の間に）データベースに適用されたジャーナルエントリだけが処理される。
vii）デフォルト順序付けグループは、「データコミットグループ」ジャーナルエントリを受信するまで、「逆」エントリに関するコミットを実行しない。この結果、「クリーンアップ」の間に故障が生じた場合、データベースは既知の状態にある、ということが確実なものとなる。これによって、「クリーンアップ」を再開することができるようになる。
【００４０】
全ての「オープン」コミットグループが「取り除かれる」と、制御プロセス１９は他のプロセスを中断し、複製データベースは一次データベースとして使用される準備が整う。
【００４１】
この方法を使えば、実際に一次データベースによって二次データベースを作らなければならなくならない限りシステムの処理容量を利用する必要のない、部分的に適用されたコミットの迅速な「クリーンアップ」が可能になる。
【００４２】
本発明の方法及び装置は、以下の数多くの利点を提供する。即ち、
１．記憶スペースオブジェクト内の記憶ユニットブロックの割り当てと、読み取り／書き込みの制御によって、ロックの必要が無くなり、読み取り／書き込みを同時に行えるようになる。
【００４３】
２．順序付けグループを使うと、メンバーを順次更新することができ、相互に関係するメンバーも正しい順序で更新することができるようになる。順序付けグループによって、ジャーナルエントリの複数のストリームを、相互に関係するメンバーを一緒に処理しながら、同時に処理できるようになる。
【００４４】
３．ＭＢＩＸインデクスを使えば、各ジャーナルエントリに対する探索時間を大幅に削減することができるようになる。記憶エントリヘッダ２１（ハンドラ）を使えば、順序付けグループの次のジャーナルエントリの位置を迅速に突き止めることができるようになる。
【００４５】
４．受信プロセスと、順序付けグループ内の処理とのオペレーションを監督する制御プロセスを使えば、情報を処理するサブプロセスを、他のプロセスと対話する必要無しに、効率的に行えるようになる。
【００４６】
５．一次データベースによって二次データベースを作ろうとする場合、コミットを簡単にハンドリングすることができる。
【００４７】
以上の説明は、完全体又は既知の等価物を有するコンポーネントに対して行ったものであり、その様な等価物も、ここでそれぞれに記述されたものとして包含するものである。
【００４８】
以上、本発明を例を挙げて説明してきたが、本発明の範囲と精神から逸脱することなく、例示に対して改良及び／又は修正を加えうる旨理解頂きたい。
【図面の簡単な説明】
【００４９】
【図１】ジャーナルエントリを目標コンピュータシステムに提供するソースコンピュータシステムの概略図である。
【図２】目標コンピュータシステムにおけるデータベース複製に関わるプロセスを示す機能線図である。
【図３】目標コンピュータシステム内の記憶スペースのマッピングを示す。
【図４】ジャーナルエントリを順序付けグループに割り当てるためのプロセスを示すフローチャートである。
【図１】
2006202337.tif 000003
【図２】
2006202337.tif 000004
【図３】
2006202337.tif 000005
【図４】
2006202337.tif 000006