【手続補正書】
【提出日】平成18年3月20日(2006.3.20)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
計算装置及びストレージ装置を有する第１情報処理装置と、計算装置及びストレージ装置を有する第２情報処理装置との間で、それぞれが１又は２以上のクエリから構成されるトランザクションを同期化するトランザクション同期方法であって、
前記第１情報処理装置が受け付けたクエリを順次実行するステップを有し、
前記第１情報処理装置は、
クエリを実行しようとする際に、該クエリが前記第２情報処理装置へ転送されているか否かを判定し、
該クエリが既に転送されていると判定した場合は、該クエリを実行し、
該クエリが未転送であると判定した場合は、該クエリが前記ストレージ装置の記憶内容への反映を伴うコミット処理であるときには、受け付けたクエリのうち未転送のクエリを前記第２情報処理装置に一括して転送し、その後に前記実行しようとするクエリを実行することを特徴とするトランザクション同期方法。
【請求項２】
前記第１情報処理装置は、前記実行しようとするクエリが前記第２情報処理装置に未転送であると判定した場合でも、該クエリがコミット処理以外であれば、直ちに該クエリを実行することを特徴とする請求項１に記載のトランザクション同期方法。
【請求項３】
前記クエリは、前記計算装置間を接続するネットワークを介して転送されることを特徴とする請求項１に記載のトランザクション同期方法。
【請求項４】
前記クエリは、前記ストレージ装置間を接続するネットワークを介して転送されることを特徴とする請求項１に記載のトランザクション同期方法。
【請求項５】
前記コミット処理であるクエリを実行しようとする際の一括転送に加えて、
前記受け付けたクエリを所定のタイミングで監視し、未転送のクエリがある場合は、その未転送のクエリを、前記第２情報処理装置に一括して転送する追加ステップを更に有することを特徴とする請求項１に記載のトランザクション同期方法。
【請求項６】
前記追加ステップの転送によって前記第１情報処理装置から第２情報処理装置へのクエリの非同期コピーが成され、
前記第１情報処理装置は、前記非同期コピーの完了を確認した後に、前記コミット処理を実行することを特徴とする請求項５に記載のトランザクション同期方法。
【請求項７】
前記第１情報処理装置は、
前記コミット処理の実行情報が、前記第２情報処理装置に転送されたか否かを管理し、
前記コミット処理の実行後に、該コミット処理の実行情報が前記第２情報処理装置に転送されていない場合は、受け付けたクエリのうち、前記実行情報が未転送のクエリに関する実行情報を、前記第２情報処理装置に一括して転送することを特徴とする請求項１に記載のトランザクション同期方法。
【請求項８】
計算装置及びストレージ装置を有する第１情報処理装置と、計算装置及びストレージ装置を有する第２情報処理装置との間で、それぞれが１又は２以上のクエリから構成されるトランザクションを同期化するトランザクション同期方法であって、
前記第１情報処理装置は、コミット処理を実行しようとする際に、該コミット処理が未転送である場合は、受け付けたクエリのうち未転送のクエリを前記第２情報処理装置に一括して転送し、その後に前記コミット処理を実行し、
前記第２情報処理装置は、前記第１情報処理装置から一括して転送されたクエリを受信したとき、前回に転送されたクエリは、前記第１情報処理装置で既に実行されたと判定し、該判定されたクエリを実行することを特徴とするトランザクション同期方法。
【請求項９】
計算装置及びストレージ装置を有する第１情報処理装置と、計算装置及びストレージ装置を有する第２情報処理装置との間で、それぞれが１又は２以上のクエリから構成されるトランザクションを同期化するトランザクション同期方法であって、
前記第２情報処理装置は、
前記第１情報処理装置から転送されたクエリを受信し、
前記転送されたクエリの範囲を記録し、
当該の転送範囲及び直前の転送範囲に含まれるクエリを調査し、
該直前の転送範囲内で、ストレージ装置の記憶内容へ反映を伴うコミット処理が行われていないトランザクションに関する情報を回復用の情報として記録することを特徴とするトランザクション同期方法。
【請求項１０】
計算装置及びストレージ装置を有する第１情報処理装置と、計算装置及びストレージ装置を有する第２情報処理装置との間で、それぞれが１又は２以上のクエリから構成されるトランザクションを同期化するトランザクション同期方法であって、
前記第２情報処理装置は、
前記第１情報処理装置から転送されたクエリを受信して、障害回復用の情報を生成し、
前記第１情報処理装置の障害を検知すると、
前記第１情報処理装置からの直前の転送範囲内で、ストレージ装置の記憶内容への反映を伴うコミット処理が行われていないトランザクションについては、当該トランザクションの開始前の状態に戻すロールバック処理の対象として、前記回復用情報から削除し、
前記第１情報処理装置からの直前の転送範囲内で、ストレージ装置の記憶内容への反映が行われているトランザクションは、前記回復用情報に記憶することを特徴とするトランザクション同期方法。
【請求項１１】
前記の直前の転送範囲内の最新のコピー範囲のトランザクション情報の調査が完了すると、
ロールバック処理の対象となったトランザクションについて、ロールバック処理を行い、
前記回復用情報に記憶されたトランザクションが使用するストレージ装置の記憶内容についてのアクセスを制限し、
前記第２情報処理装置において、投入されるトランザクションの処理を開始することを特徴とする請求項１０に記載のトランザクション同期方法。
【請求項１２】
前記アクセスが制限されたストレージ装置の記憶内容についての回復処理が完了した後に、該記憶内容のアクセス制限を解除することを特徴とする請求項１１に記載のトランザクション同期方法。
【請求項１３】
計算装置及びストレージ装置を有する第１情報処理装置と、計算装置及びストレージ装置を有する第２情報処理装置と、前記第１情報処理装置と前記第２情報処理装置とを接続する通信回線とから構成されるデータベースシステムにおいて、
前記第１情報処理装置は、
クエリを実行する際に、該クエリが前記第２情報処理装置へ転送されているか否かを判定するクエリ転送判定手段と、
該クエリが既に転送されている場合は、該クエリを実行するクエリ実行手段と、
該クエリが未転送である場合は、該クエリが前記ストレージ装置の記憶内容への反映を伴うコミット処理であるときには、受け付けたクエリのうち未転送のクエリを、前記第２情報処理装置に一括して転送するクエリ転送手段とを備えることを特徴とするデータベースシステム。
【請求項１４】
前記クエリ転送手段は、
受け付けたクエリを所定のタイミングで監視し、
未転送のクエリがある場合は、前記未転送のクエリを、前記第２情報処理装置に一括して転送することを特徴とする請求項１３に記載のデータベースシステム。
【請求項１５】
前記第１情報処理装置は、
前記コミット処理の実行情報が、前記第２情報処理装置に転送されたか否かを管理する転送管理手段を備え、
前記クエリ転送手段は、前記コミット処理の実行後に、該コミット処理の実行情報が前記第２情報処理装置に転送されていない場合は、受け付けたクエリのうち、前記実行情報が未転送のクエリに関する実行情報を、前記第２情報処理装置に一括して転送することを特徴とする請求項１３に記載のデータベースシステム。
【請求項１６】
前記第２情報処理装置は、前記第１情報処理装置から一括して転送されたクエリを受信したとき、前回に転送されたクエリは、前記第１情報処理装置で既に実行されたと判定し、該判定されたクエリを実行するクエリ実行手段を備えることを特徴とする請求項１３に記載のデータベースシステム。
【請求項１７】
前記第２情報処理装置は、
前記第１情報処理装置から転送されたクエリを受信して、障害回復用の情報を生成する回復用情報生成手段と、
前記第１情報処理装置の障害を検知すると、
前記第１情報処理装置からの直前の転送範囲内で、ストレージ装置の記憶内容への反映を伴うコミット処理が行われていないトランザクションについては、当該トランザクションの開始前の状態に戻すロールバック処理の対象として、前記回復用情報から削除し、
前記第１情報処理装置からの直前の転送範囲内で、ストレージ装置の記憶内容への反映が行われているトランザクションは、前記回復用情報に記憶する障害回復処理手段と、を備えることを特徴とする請求項１３に記載のデータベースシステム。
【請求項１８】
前記障害回復処理手段は、
前記直前の転送範囲内の最新のコピー範囲のトランザクション情報の調査が完了すると、
ロールバック処理の対象となったトランザクションについて、ロールバック処理を行い、
前記回復用情報に記憶されたトランザクションが使用するストレージ装置の記憶内容についてのアクセスを制限し、
前記第２情報処理装置において、投入されるトランザクションの処理を開始することを特徴とする請求項１７に記載のデータベースシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
正サイト１００から副サイト１１０への同期コピーでは、正サイトのサーバ１０１が同期コピーを指示すると、データは正サイトに接続されるストレージ（正）１０２のディスクキャッシュに書き込まれる。続いて、ストレージ（正）１０２は、副サイト１１０のストレージ（副）１０２のディスクキャッシュにコピーを行う。さらに、ストレージ（正）１０２は、ストレージ（副）１０２からのデータ受信の応答を受けると、転送元のサーバ１０１へ同期コピー完了の応答を返す。コミットに同期して副サイト１１０へ同期コピーを行うことによって、データ欠損がないデータコピーが実現される。しかし、同期コピーでは、ストレージ（副）１０２からの応答を待つ遅延が生じるため、サイト間距離が長距離となる場合には、この遅延が問題となる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３０
【補正方法】変更
【補正の内容】
【００３０】
正サイト１００は、クライアント１３０（ＵＡＰ（ｕｓｅｒａｐｐｌｉｃａｔｉｏｎ））から入力を受け付け、結果をＤＢ（Ｄａｔａｂａｓｅ）３１１に反映する。ＵＡＰからの入力は、通常、トランザクションとして認識される。ここで、トランザクションは、ＤＢＭＳ（ｄａｔａｂａｓｅ ｍａｎａｇｅｍｅｎｔｓｙｓｔｅｍ）に対する標準言語であるＳＱＬを用いた複数の問い合わせから構成される。問い合わせは、挿入（Ｉｎｓｅｒｔ）、更新（Ｕｐｄａｔｅ）、コミット（Ｃｏｍｍｉｔ）などいくつかの種類がある。トランザクションに含まれる問い合わせがコミットないで場合は、問い合わせの結果は、正サイト１００のサーバ１０１のＤＢＭＳ１０３内のバッファに記録されるだけである。そしてコミットが実行されて初めて、一連の問い合わせの結果がストレージ３１１に反映され、トランザクションが確定する。正サイト１００は、トランザクション及びトランザクション処理結果であるデータ（ＤＢＭＳのテーブル等）を、何らかのタイミングで副サイト１１０に転送しておく。障害が発生した場合は、系を切り替え、バックアップサイトであった副サイト１１０が業務を引き継いで実行する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００３８
【補正方法】変更
【補正の内容】
【００３８】
一方、トランザクションキュー３１０から取り出したクエリが、副サイトのトランザクション管理部３２０にコピーされていなかったら、トランザクション同期化・実行部３０２は、副サイトへコピーが必要か否かを判定する。該クエリがコミットでない場合は、コピーを行わず該クエリを直ちに実行する。一方、該クエリがコミットである場合は、副サイトのトランザクション管理部３２０に対する同期コピーを実行する。ただし、同期コピーの際には、該クエリだけでなく、トランザクションキュー３１０に記録されている未コピーであるトランザクション情報を一括して同期コピーし、その後にクエリを実行する。従って、トランザクション同期化・実行部３０２により、コミット前に、必ず該コミットに関連するトランザクション情報が副サイトのトランザクション管理部３２０に転送され、コピーされるため、トランザクション欠損が生じないことが保障される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００４１
【補正方法】変更
【補正の内容】
【００４１】
このとき、トランザクション受信部３３０は、トランザクション情報のコピー状態（最新の一括同期コピーで送られたかどうか）を管理する。トランザクション実行部は、コピー状態により、トランザクションが正サイトでコミットされているか否かを判断する。既にコミットが実行されていると判断される場合は、該トランザクションのコミットを副サイトでも実行する。一方、正サイトで未だコミットが実行されていないと判断される場合には、必要なトランザクション情報を回復テーブル３４１に保存する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００４３
【補正方法】変更
【補正の内容】
【００４３】
本実施の形態では、コミットの実行前に該トランザクションに関する情報をコピーしているため、副サイト１１０では、そのコピーを受信した時に、正サイト１００においてコミットが投入されたことは分かる。しかし、副サイト１１０では、該コミットが確かに実行されたかを判定することはできない。副サイト１１０は、該コミットを含むコピーの次のコピーが行われて初めて、該コミットが実行されたことがわかる。すなわち、上述した一括コピーの手順では、正サイト１００は、副サイト１１０へトランザクションをコピーした後、該コピーに係るトランザクションを実行する。そして、該コピーに含まれる全てのトランザクションが実行された後、次のコピーを行うので、コピーが行われた（副サイト１１０でクエリを受信した）ときに、該コピーに含まれるトランザクションは正サイトで全て実行されていると判定できるのである。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００４８
【補正方法】変更
【補正の内容】
【００４８】
また、テーブル５００には、３つのポインタを用意する。第１のポインタ（コピーポインタ：ＰＩ）５０１は、最後にコピーされたクエリを指す。つまり、コピーポインタＰＩの次が、コピーされていないクエリの内、最も古いのクエリである。第２のポインタ（最後尾ポインタ：ＬＩ）５０２は、最後にトランザクションキューに入力されたクエリ（最新のクエリ）を指す。第３のポインタ（実行ポインタ：ＥＩ）５０３は、これから実行処理手順を決定する対象のクエリ（未実行クエリのうち、最も古いクエリ）を指す。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００５３
【補正方法】変更
【補正の内容】
【００５３】
次に、クライアント（ＵＡＰ）からクエリの入力を監視して、クエリの入力があるか否かを判定する（ステップ６０４）。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００５９
【補正方法】変更
【補正の内容】
【００５９】
まず、実行ポインタＥＩが指す実行処理手順判定の対象のクエリが未実行であるかを判定する（ステップ７０２）。すなわち、ＥＩが指すクエリが未実行であれば、実行すべきクエリがあることが分かる。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００６０
【補正方法】変更
【補正の内容】
【００６０】
実行すべきクエリがない場合は、実行ポインタＥＩの更新（インクリメント）の可否（すなわち、新たなクエリが入力されたか）を判定する（ステップ７０４）。ＥＩが更新可能なら、ＥＩを更新し（ステップ７０６）、ステップ７０９へ進む。一方、ＥＩが更新不可能なら、ステップ７０４へ戻る。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００６３
【補正方法】変更
【補正の内容】
【００６３】
ステップ７１１において、クエリがコミットであると判定されると、ＬＩポインタの値をレジスタＬ０（図示せず）へ退避する（ステップ７１７）。続いて、キュー内の未コピークエリ（ＰＩ＋１からＬ０までのクエリ）を全て、一括同期コピーする（ステップ７１８）。同期コピーの完了後、コピーしたクエリのコピーフラグを全てＯＮにし、ＰＩポインタをＬ０に更新する（ステップ７１９）。そして、ＥＩポインタが指すクエリを実行し、該クエリの実行フラグをＯＮにする（ステップ７２０において）。