(57)【要約】【課題】トランザクションを分割して分散環境で実行することで、スケーラブルにトランザクションを実行できるシステムを提案する。【課題手段】本発明においては、トランザクションを分割して分散環境で実行するためのシステムを提案する。当該システムは、トランザクション処理を競合が起こりにくい（optimistic）処理と競合が起こりやすい（pessimistic）処理に分割する手段と、第１のサーバと、第２のサーバを含むシステムである。前記第１のサーバは、前記optimistic処理を実行すると第１のトランザクション実行部と、前記optimistic処理の実行結果を、前記第２のサーバに送信するためのトランザクション・ログ送信部とを有する。前記第２のサーバは、前記トランザクション・ログを受信するための、トランザクション・ログ受信部と、前記pessimistic処理を実行すると第２のトランザクション実行部とを有する【選択図】図２
2008165370.tif 000002
【特許請求の範囲】
【請求項１】
トランザクション処理を分散環境で実行するためのシステムであって、
トランザクション処理を競合が起こりにくい（optimistic）処理と競合が起こりやすい（pessimistic）処理に分割する手段と、
第１のサーバと、
第２のサーバと
を含むシステムであって、
前記第１のサーバは、
前記optimistic処理を実行する第１のトランザクション実行部と、
前記optimistic処理の実行結果を、前記第２のサーバに送信するためのトランザクション・ログ送信部と
を有し、
前記第２のサーバは、
前記トランザクション・ログを受信するための、トランザクション・ログ受信部と
前記pessimistic処理を実行する第２のトランザクション実行部と、
を有する
前記システム。
【請求項２】
前記第２のトランザクション実行部は、さらに
前記optimistic処理の実行結果をチェックするvalidation機能
を有する請求項１に記載のシステム。
【請求項３】
前記システムは、さらに
トランザクション処理の実行状態のプロファイル情報を収集する収集部を有するＤＢＭＳサーバを含む
請求項１に記載のシステム。
【請求項４】
前記分割する手段は、前記プロファイル情報を反映して、前記トランザクション処理を分割する請求項３に記載のシステム。
【請求項５】
前記第１のトランザクション実行部は、前記optimistic処理のうちＤＢの読み込み処理を行い、
前記第２のトランザクション実行部が、前記optimistic処理のうちＤＢの書き込み処理を行う
請求項１に記載のシステム。
【請求項６】
前記第２のサーバの機能と前記ＤＢＭＳサーバの機能が、同一サーバにある、請求項３に記載のシステム。
【請求項７】
トランザクション処理を分散環境で実行するための方法であって、
トランザクション処理を競合が起こりにくい（optimistic）処理と競合が起こりやすい（pessimistic）処理に分割するステップと、
第１のサーバで前記optimistic処理を実行するとステップと、
前記第１のサーバで、前記optimistic処理の実行結果を、第２のサーバに送信するステップと、
前記第２のサーバで前記トランザクション・ログを受信するステップと、
前記第２のサーバで前記pessimistic処理を実行するステップと、
を有する方法。
【請求項８】
前記方法は、さらに、
前記第２のサーバで、前記optimistic処理の実行結果をチェックするステップを、有する請求項７に記載の方法。
【請求項９】
前記方法は、さらに、
ＤＢＭＳサーバで、トランザクション処理の実行状態のプロファイル情報を収集するステップを
含む請求項７に記載の方法。
【請求項１０】
前記分割するステップは、前記プロファイル情報を反映して、前記トランザクション処理を分割する請求項９に記載の方法。
【請求項１１】
前記optimistic処理のトランザクションを実行するステップは、前記optimistic処理のうちＤＢの読み込み処理を行い、
前記pessimistic処理のトランザクションを実行するステップが、前記optimistic処理のうちＤＢの書き込み処理を行う
請求項７に記載の方法。
【請求項１２】
請求項１乃至１１のいずれか１項に記載の方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オンライントランザクション処理において、トランザクションをoptimisticロックとPessimisticロックに基づく処理に分割し、分散環境で実行することに関する。
【背景技術】
【０００２】
近年のオンライントランザクション処理（OLTP：On-Line Transaction Processing）システムは、Web化などにより多数のユーザの処理を直接受け付ける形態が多くなってきており、システムの処理能力およびスケーラビリティに対する要求が高まってきている。システムをスケーラブルにするには、複数のアプリケーション・サーバと、複数のデータベース管理システム（DBMS）から構成される多階層アーキテクチャを採用する事が一般的である。一般に、アプリケーション・サーバでの処理はスケールアウトされるように設計されることが望ましい。しかし、DBアクセス処理及びDBMS部分を注意して設計しなければ、DBアクセスにボトルネックが発生してしまい、スケールアウトさせることができない。
【０００３】
現在多くのOLTPで用いられている並行性制御機構は、悲観的並行性制御機構（Pessimistic Concurrency Control, 以下単にPessimistic CC）と呼ばれるものである。Pessimistic CCは、データアクセスを行う際に、DBMSでロック獲得処理を行うものである。この方法は、確実に読み書きの競合を制御できるものの、通信を介してロック獲得処理を行う必要があり、ネットワーク遅延が発生し、さらにはDBMSに負荷が集中してしまうため、スケーラビリティに欠けるといった問題がある。
【０００４】
一方、Pessimistic CCのスケーラビリティの問題を解決するための有効な手段として、楽観的並行性制御機構（Optimistic Concurrency Control, 以下単にOptimistic CC）がある。Optimistic CCは、ロック競合はまれにしか発生しないという前提のもと、ロックを取得せずにトランザクション処理を続行し、コミット時にまとめて読み書きの競合のチェック（Validate）を行う。読み書きの競合が無かった場合にのみトランザクションをDBにコミットし、読み書きの競合があった場合にはそのトランザクションの再実行を試みる。Optimistic CCはトランザクション処理の途中でDBMSに対するロック取得要求を出さないため、スケーラビリティに優れた処理方式であるといえる。しかし、読み書きの競合が頻繁に発生するようなデータアクセス（ホットスポット）があると、トランザクションの再実行ばかりが発生してしまい、逆にシステムの処理性能は低下する。
【０００５】
読み書きの競合が発生しやすいリソースに対してのみPessimistic CCを適用し、他のリソースに関してはOptimistic CCを適用することで、ロックのコストを最小限に抑え、スケーラビリティに優れたトランザクションの実行を行う手法もいくつか提案されている。しかし、これらの手法を利用した場合でも、ロック取得からロック開放までのトランザクションの実行、ネットワークの遅延の影響により、分散環境ではリソースに対するロックの競合が多発することがある。
【０００６】
また、特許文献１では、競合するリソースに対する書き込みをトランザクションのコミット直前まで遅らせ、コミット時に集中的に決定していく手法も提案されている。この手法を利用することで、複数のトランザクションが、トランザクション固有のオブジェクトに対し、トランザクション間で連続した番号を採番する、といった処理を、競合をなく処理することが可能となる。しかし、この手法は採番処理以外の処理に適用することが難しい。
【０００７】
特許文献２は、単にPessimisticロックとOptimisticロックとで、処理するノードを分けようという特許であり、トランザクションコンテキストが分割されるわけではない。また、特許文献３は、そのコンピュータ本来の命令セット（主命令セット）とは異なる命令セット（副命令セット）で記述されたプログラムをハードウェアエミュレーションで実行する機能を持つコンピュータに関するものである．エミュレーションに関するオーバヘッドが理由で副命令セットの実行は主命令セットの実行よりも遅いため，副命令セットで記述されたプログラムは主命令セットに変換して高速化することが望まれるが，変換そのものにも時間を要するためこれらのコストの間にはトレードオフが存在する．特許文献３は，副命令セットで記述されたプログラムの実行をプロファイルして速度に影響する部分を検出し，そこだけを主命令セットに変換することで，変換コストを抑えつつ実行を高速化する技術である．しかし、特許文献３は、トランザクションを分散環境で実行する機能と関連しているわけではない。
【０００８】
【特許文献１】US Patent Application Publication 20020174162
【特許文献２】US Patent Application Publication 20060136454
【特許文献３】US7,111,290B1
【発明の開示】
【発明が解決しようとする課題】
【０００９】
オンライントランザクション処理において、トランザクションをoptimisticロックとPessimisticロックに関する処理に分割し、分散環境で実行する方法および装置を提供する。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、本発明においては、トランザクションを分割して分散環境で実行するためのシステムを提案する。当該システムは、トランザクション処理を競合が起こりにくい（optimistic）処理と競合が起こりやすい（pessimistic）処理に分割する手段と、第１のサーバと、第２のサーバを含むシステムである。前記第１のサーバは、前記optimistic処理を実行すると第１のトランザクション実行部と、前記optimistic処理の実行結果を、前記第２のサーバに送信するためのトランザクション・ログ送信部とを有する。前記第２のサーバは、前記トランザクション・ログを受信するための、トランザクション・ログ受信部と、前記pessimistic処理を実行すると第２のトランザクション実行部とを有する
【００１１】
本発明の方法により、読み書きの競合がほとんど発生しない前半部分をOptimistic CCに基づいた方式で複数サーバ（スケーラブル）に実行し、ホットスポットを含む後半部分をPessimistic CCに基づき１カ所または少数箇カ所で集中的に実行することを可能にする。これにより、一部に読み書きの競合が頻繁に発生するような処理を含むトランザクション処理プログラムを、より多くのサーバで実行する事を可能にする。
【００１２】
以上、本発明の概要を、方法として説明したが、本発明は、装置、プログラム、またはプログラム製品として把握することもできる。プログラム製品は、例えば、前述のプログラムを格納した記憶媒体を含め、あるいはプログラムを伝送する媒体を含めることができる。
【００１３】
上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの構成要素のコンビネーションまたはサブコンビネーションもまた、発明となり得ることに留意すべきである。
【発明を実施するための最良の形態】
【００１４】
図１は、本発明の、オンライントランザクション処理において、OptimisticロックとPessimisticロックに基づく処理に分割し、分散環境で実行するシステム１００の高水準の概要図である。クライアント１５０ａ、ｂ・・は、ネットワーク１０１を通して、アプリケーション・サーバ１２０ａ，ｂ・・（第１のサーバ）にトランザクションの処理要求を送信する。サーバ１１０は、トランザクション処理プログラムを予め、あるいは動的に、OptimisticロックとPessimisticロックに基づく処理（ＳＱＬ）に分割し、アプリケーション・サーバにOptimisticロックに基づく処理（競合が起こりにくい処理）を配置し、コミット・サーバ１３０にPessimisticロックに基づく処理（競合が起こりやすい処理）を配置する。アプリケーション・サーバ１２０ａ，ｂ・・はOptimisticロックに基づくＳＱＬの読み込み部分のみＤＢＭＳサーバ１４０に対してＳＱＬコマンドを送信し、その結果およびＳＱＬの書き込み部分はトランザクション・ログとしてコミット・サーバ１３０（第２のサーバ）に送信する。コミット・サーバ１３０はＤＢＭＳサーバ１４０に対してＳＱＬを実行する。なお、コミット・サーバ１３０とＤＢＭＳサーバ１４０は、同一サーバであってもよい。
【００１５】
図２は、トランザクションをOptimisticロックとPessimisticロックに基づく処理に分割し、分散環境で実行するシステムの機能ブロックを概念的に示した概略図２００である。サーバ２１０は、トランザクション処理プログラムをOptimisticロックとPessimisticロックに基づく処理に分割するプログラム変換器２１１を有する。プログラム変換器２１１は、トランザクション処理プログラム２１３を、メタデータ２１５を利用して、競合が起こりにくい処理２１７と競合が起こりやすい処理２１９に分割する。メタデータ２１５には、トランザクションの実行時プロファイルやサーバの構成情報などを含む。プログラム変換器２１１は一例としてプログラムスライシングを利用したプログラムの分割方法（Automated Method-Extraction Refactoring by Using Block-Based Slicing, Katsuhisa Maruyama, SSR 2001）などの既知の手法を利用する。競合が起こりにくい処理２１７は、予め、またはその都度アプリケーション・サーバ２２０ａ，ｂ・・，ｎに渡して配置する。競合が起こりやすい処理２１９は、予め、またはその都度コミット・サーバ２３０に渡して配置する。
【００１６】
アプリケーション・サーバ２２０ａ、ｂ、・・，ｎは、クライアント２５１から処理要求があった場合、トランザクション実行部２２１（第１のトランザクション実行部）が、競合が起こりにくい処理２２７に含まれるＳＱＬを実行する。ただし、実際にデータベースにアクセスするのは、データの読み込み処理であり、かつ、同一トランザクションによって初めて読み込まれる場合に限って行なわれる(これは、一般のOptimisticトランザクション処理システムと同一の処理である)。トランザクション実行部２２１は、書き込み処理については、データの読み込み結果とともにトランザクション・ログとして、トランザクション送信部２２３に送信する。トランザクション送信部２２３は、トランザクション・ログ２２９をコミット・サーバ２３０に送信する。
【００１７】
コミット・サーバ２３０では、トランザクション・ログ受信部２３１が、トランザクション・ログ２２９を受信し、トランザクション実行部２３３（第２のトランザクション実行部）に渡す。トランザクション実行部２３３は、トランザクション・ログに含まれるすべての読み書き処理についてValidation処理を行う。Validationした結果、問題なければ、トランザクション・ログ２２９に含まれる競合が起こりにくい処理（Optimisticロックに基づく処理）の書き込み処理についてコマンドをＤＢＭＳサーバ２４０に対して実行した後、競合が起こりやすい処理２３９について読み込み処理と書き込み処理のコマンドをＤＢＭＳに対して発行し、トランザクションをコミットする。
【００１８】
ＤＢＭＳサーバ２４０は、ＤＢＭＳ２４１とプロファイル情報収集部２４３を有する。プロファイル情報収集部２４３は、ＤＢへのアクセス状態を情報として収集し、実行時プロファイルとしてサーバ２１０に取得される。サーバ２１０は、最新の実行時プロファイルなどを使って、どのＳＱＬで競合が起こりやすいか否かなどを検証し、プログラム変換器２１１におけるプログラム変換時に反映する。すなわち、実行しながらホットスポットの分析し、トランザクション処理プログラムの分割にその分析結果が反映可能となる。プロファイル情報収集２４３は、DBMSのモニタリング機構、例えばＩＢＭ（登録商標）のＤＢ２（登録商標）を利用して、定期的に各ＳＱＬの実行時間を計測する。なお、ＤＢＭＳサーバが複数ある場合は、コミット・サーバも複数になる。
【００１９】
ここで、下記のトランザクション処理プログラムを分割する例を説明する。
購入 (prodcode) {
1:      price = SELECT 金額 FROM 商品テーブル WHERE コード=’prodcode’;
*2:     stock = SELECT FOR UPDATE 在庫量 FROM 在庫テーブル;
3:      amount = 購入数計画(prodcode, price);
4:      INSERT INTO 購入記録(商品コード, 個数, 日時) VALUES(’prodcode’, ’amount’ , 現在時刻);
*5:     UPDATE 在庫テーブル SET 在庫量 = stock + amount;
}
【００２０】
このトランザクション処理プログラム中、２行目と５行目がホットスポットであったとする。このプログラムを、プログラム変換により、ホットスポットを含む後半部分と、それ以外の前半部分に分割する。最もナイーブな分割は、最初に現れた２行目の直前で分割するものであるが、２行目にデータ依存しない３行目も後半に含まれてしまう。特に３行目が計算機リソースを多く消費するような処理であった場合には、できるだけ前半に残してスケーラビリティを出すのが望ましい。そのため、プログラムの意味を変えない範囲でなるべく後半部分が最小となるよう、３−４行目の文を２行目の前まで移動させ、以下のようにoptimistic処理とpessimistic処理に分割する。
【００２１】
--optimistic処理--
購入_pre (prodcode) {
1:      price = SELECT 金額 FROM 商品テーブル WHERE コード=’prodcode’;
3:      amount = 購入数計画(prodcode, price);
4:      INSERT INTO 購入記録(商品コード, 個数, 日時) VALUES(’prodcode’, ’amount’ , 現在時刻);
delegateCommit(“購入”, prodcode, amount);
}
【００２２】
--pessimistic処理--
購入_post(prodcode, amount) {
*2:     stock = SELECT FOR UPDATE 在庫量 FROM 在庫テーブル;
*5:     UPDATE 在庫テーブル SET 在庫量 = stock + amount;
}
【００２３】
optimistic処理の最後尾には、delegateCommit呼び出しを挿入する。これは、図におけるトランザクション・ログ送信部２２３を起動するものである。
【００２４】
トランザクションログの形式はValidation方式に応じて様々なものがあるが、値比較によるValidationを前提とし、上記optimistic処理のトランザクションを実行した際のログの例を以下に示す。これはprodcode=123456 というパラメータで実行し、amount=100 であった場合を想定したものである。
ReadSet = {
“SELECT 金額 FROM 商品テーブル WHERE コード=’123456’”, {1280}
}
WriteSet = {
“INSERT INTO 購入記録(商品コード, 個数, 日時) VALUES(’123456’, ’100’ , ‘2006/9/30’)”
}
【００２５】
このトランザクションログには、読み込み履歴(ReadSet)が１エントリ、書き込み履歴(WriteSet)が１エントリ含まれる。読み込み履歴のエントリは、クエリとそのクエリを発行した結果読み出されるべき値のリストのペアからなる。ReadSetには、上記optimistic処理の行１に対応した「”SELECT 金額 FROM 商品テーブル WHERE コード=’123456’”というクエリを発行した結果1280という値を取得した」というログが含まれる。書き込み履歴のエントリは、発行した更新クエリ(SQLのUPDATE, INSERT, DELETE文)のリストから成る。WriteSetには、INSERT文が１つ含まれている。後述するValidationの際には、ReadSetに含まれるクエリを発行し、その結果がログの値リストと同じであるかどうかをチェックする。値が同じであれば、WriteSetにある更新クエリを発行して、データベースに対してトランザクションのコミット処理を行う。値が違う場合には、読み書きの競合が発生した事になるため、トランザクションをアボートさせ、再実行を促す。
【００２６】
図３は、本発明の処理フロー３００を例示したものである。ステップ３０１で処理が開始される。ステップ３０３でトランザクション処理プログラムの変換を行う。ここでは、トランザクション処理プログラムを競合が起こりにくい処理（optimistic処理）と競合が起こりやすい処理（pessimistic処理）に分割する。ステップ３０５では、アプリケーション・サーバで、クライアントからの処理要求を受けたことを契機に、トランザクション処理を開始する。ステップ３０５ではoptimistic処理の内、読み込み処理をＤＢＭＳに対して行う。ステップ３０７でステップ３０５の実行ログおよび書き込み処理をトランザクション・ログとしてコミット・サーバに送信する。
【００２７】
ステップ３０８では、トランザクション・ログを受信したコミット・サーバが、トランザクションの開始処理(begin処理)を行ったのち、ステップ３０９でこれまで行われたoptimistic処理の競合チェックのため、validationを行う。ステップ３１１でValidationの結果をチェックする。ステップ３１１で、Validationの結果のチェックに問題があれば（Ｎｏ）、ステップ３２３に進んで、それまでの処理をアボートして、ステップ３０５に戻って、再びトランザクション処理を開始する。
【００２８】
ステップ３１１で、Validationの結果のチェックに問題がなければ（Ｙｅｓ）、ステップ３１３に進んで、optimistic処理の内の書き込み処理を実行し、さらにステップ３１５に進んで、pessimisticの読み込み処理と書き込み処理を行う。ステップ３１７では、ＤＢＭＳに対して、トランザクション処理をコミットする(commit処理)。ステップ３１９でコミットの結果に問題ないかチェックする。ステップ３１９で問題あると判断した場合(Ｎｏ）、ステップ３２３に進んで、これまでの処理をアボートして、再びトランザクション処理を開始する。ステップ３１９で問題ないと判断した場合(Ｙｅｓ）、ステップ３２１に進んで、処理フローを終了する。
【００２９】
図４は、本発明の実施の形態によるクライアント１５０、サーバ１１０、１２０、１３０および１５０を実現するのに好適な情報処理装置のハードウェア構成の一例を示した図である。
【００３０】
情報処理装置は、バス２に接続されたＣＰＵ（中央処理装置）４０１とメインメモリ４０４を含んでいる。ハードディスク装置４１３、４３０、およびＣＤ−ＲＯＭ装置４２６、４２９、フレキシブル・ディスク装置４２０、ＭＯ装置４２８、ＤＶＤ装置４３１のようなリムーバブル・ストレージ（記憶メディアを交換可能な外部記憶システム）がフロッピーディスクコントローラ４１９、ＩＤＥコントローラ４２５、ＳＣＳＩコントローラ４２７などを経由してバス４０２へ接続されている。
【００３１】
フレキシブル・ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭのような記憶メディアが、リムーバブル・ストレージに挿入される。これらの記憶メディアやハードディスク装置４１３、４３０、ＲＯＭ４１４には、オペレーティング・システムと協働してＣＰＵ等に命令を与え、本発明を実施するためのコンピュータ・プログラムのコードを記憶することができる。メインメモリ４０４にロードされることによってコンピュータ・プログラムは実行される。コンピュータ・プログラムは圧縮し、また複数に分割して複数の媒体に記憶することもできる。
【００３２】
情報処理装置は、キーボード／マウス・コントローラ５を経由して、キーボード４０６やマウス４０７のような入力デバイスからの入力を受ける。情報処理装置は、視覚データをユーザに提示するための表示装置４１１にＤＡＣ／ＬＣＤＣ４１０を経由して接続される。
【００３３】
情報処理装置は、ネットワーク・アダプタ４１８（イーサネット（Ｒ）・カードやトークンリング・カード）等を介してネットワークに接続し、他のコンピュータ等と通信を行うことが可能である。図示はされていないが、パラレルポートを介してプリンタと接続することや、シリアルポートを介してモデムを接続することも可能である。
【００３４】
以上の説明により、本発明の実施の形態によるシステムを実現するのに好適な情報処理装置は、通常のパーソナルコンピュータ、ワークステーション、メインフレームなどの情報処理装置、または、これらの組み合わせによって実現されることが容易に理解されるであろう。ただし、これらの構成要素は例示であり、そのすべての構成要素が本発明の必須構成要素となるわけではない。
【００３５】
本発明の実施の形態において使用される情報処理装置の各ハードウェア構成要素を、複数のマシンを組み合わせ、それらに機能を配分し実施する等の種々の変更は当業者によって容易に想定され得ることは勿論である。それらの変更は、当然に本発明の思想に包含される概念である。
【００３６】
本発明の実施形態によるシステムは、マイクロソフト・コーポレーションが提供するＷｉｎｄｏｗｓ（Ｒ）オペレーティング・システム、アップル・コンピュータ・インコーポレイテッド提供するＭａｃＯＳ（Ｒ）、Ｘ  Ｗｉｎｄｏｗ  Ｓｙｓｔｅｍを備えるＵＮＩＸ（Ｒ）系システム（例えば、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するＡＩＸ（Ｒ）など）のような、ＧＵＩ（グラフィカル・ユーザー・インターフェース）マルチウインドウ環境をサポートするオペレーティング・システムを採用することができる。
【００３７】
以上から、本発明の実施の形態において使用されるシステムは、特定のオペレーティング・システム環境に限定されるものではないことを理解することができる。すなわち、オペレーティング・システムは、アプリケーション・ソフトウェアなどがデータ処理システムの資源を利用できるようにする資源管理機能を提供することができるものであれば、いかなるものをも採用することができる。なお、資源管理機能には、ハードウェア資源管理機能、ファイルハンドル機能、スプール機能、ジョブ管理機能、記憶保護機能、仮想記憶管理機能などが含まれ得るが、これらの機能については、当業者によく知られたものであるので詳細な説明は省略する。
【００３８】
また、本発明は、ハードウェア、ソフトウェア、またはハードウェア及びソフトウェアの組み合わせとして実現可能である。ハードウェアとソフトウェアの組み合わせによる実行において、所定のプログラムを有するデータ処理システムにおける実行が典型的な例として挙げられる。かかる場合、該所定プログラムが該データ処理システムにロードされ実行されることにより、該プログラムは、データ処理システムを制御し、本発明にかかる処理を実行させる。このプログラムは、任意の言語・コード・表記によって表現可能な命令群から構成される。そのような命令群は、システムが特定の機能を直接、または１．他の言語・コード・表記への変換、２．他の媒体への複製、のいずれか一方もしくは双方が行われた後に、実行することを可能にするものである。
【００３９】
もちろん、本発明は、そのようなプログラム自体のみならず、プログラムを記憶した媒体もその範囲に含むものである。本発明の機能を実行するためのプログラムは、フレキシブル・ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＤＶＤ、ハードディスク装置、ＲＯＭ、ＭＲＡＭ、ＲＡＭ等の任意のコンピュータ読み取り可能な記憶媒体に格納することができる。かかるプログラムは、記憶媒体への格納のために、通信回線で接続する他のデータ処理システムからダウンロードしたり、他の記憶媒体から複製したりすることができる。また、かかるプログラムは、圧縮し、または複数に分割して、単一または複数の記憶媒体に格納することもできる。また、様々な形態で、本発明を実施するプログラム製品を提供することも勿論可能であることにも留意されたい。
【００４０】
以上、本発明の実施形態によれば、ウェブサーバのリソース・データをクライアントにバックアップし、また、ウェブサーバのリソース・データが破損した場合に、クライアントがバックアップしたリソース・データから回復できるシステムを容易に構築することができることが理解される。
【００４１】
上記の実施の形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれることに留意されたい。
【図面の簡単な説明】
【００４２】
【図１】本発明の、オンライントランザクション処理において、OptimisticロックとPessimisticロックに基づく処理に分割し、分散環境で実行するシステム１００の高水準の概要図である。
【図２】トランザクションをOptimisticロックとPessimisticロックに基づく処理に分割し、分散環境で実行するシステムの機能ブロックを概念的に示した概略図２００である。
【図３】本発明の処理フロー３００を例示したものである。
【図４】本発明の実施の形態によるクライアント１５０、サーバ１１０、１２０、１３０および１５０を実現するのに好適な情報処理装置のハードウェア構成の一例を示した図である。
【図１】
2008165370.tif 000003
【図２】
2008165370.tif 000004
【図３】
2008165370.tif 000005
【図４】
2008165370.tif 000006