(57)【要約】      （修正有）【課題】階層化されたＷｅｂシステムにおいて、データベースサーバの負荷を軽減して、処理速度を向上させる。【解決手段】マスタデータを記憶したデータベースを管理するデータベースサーバ１と、データベースサーバ１に接続され、業務処理を行う一又は複数のＥＪＢサーバ３と、業務処理サーバ３と接続され、ユーザインタフェースに関する処理を行う複数のＷｅｂサーバ５とを備える。Ｗｅｂサーバ５は、それぞれ、マスタデータのコピーデータを記憶するキャッシュメモリ５５を備える。ＥＪＢサーバ３は、それぞれ、Ｗｅｂサーバ５の一つがユーザ端末装置９からデータ更新要求を受け付けると、データベースサーバ１にデータ更新要求に応じてマスタデータを更新させるＤＢ更新部３３と、Ｗｅｂサーバ５のキャッシュメモリ５５に記憶されているコピーデータを、更新後のマスタデータと一致するように更新させる同期処理部３２と、を備える。【選択図】図１
2006164075.tif 000002
【特許請求の範囲】
【請求項１】
マスタデータを記憶したデータベースを管理するデータベースサーバと、前記データベースサーバに接続され、業務処理を行う一又は複数の業務処理サーバと、前記一又は複数の業務処理サーバと接続され、ユーザインタフェースに関する処理を行う複数のユーザインタフェース装置とを備え、
前記複数のユーザインタフェース装置は、それぞれ、
前記マスタデータのコピーデータを記憶する記憶装置と、
前記記憶装置に記憶されているコピーデータに基づいてユーザインタフェース画面をユーザ端末装置へ提供するインタフェース手段と、を備え、
前記一又は複数の業務処理サーバは、それぞれ、
前記複数のユーザインタフェース装置の一つが前記ユーザ端末装置からデータ更新要求を受け付けると、前記データベースサーバに前記受け付けたデータ更新要求に応じて前記マスタデータを更新させるマスタ更新手段と、
前記複数のユーザインタフェース装置の記憶装置に記憶されているコピーデータを、更新後のマスタデータと一致するように更新させる同期手段と、を備えるアプリケーションシステム。
【請求項２】
前記複数のユーザインタフェース装置のそれぞれは、
前記業務処理サーバの同期手段により更新されたコピーデータを、前記同期手段により定められた時刻から有効とすることを特徴とする請求項１に記載のアプリケーションシステム。
【請求項３】
前記同期手段が、いずれか一以上のユーザインタフェース装置の記憶装置に記憶されているコピーデータを更新後のマスタデータと一致させることができなかったときは、前記マスタ更新手段は、前記マスタデータの更新をロールバックすることを特徴とする請求項１に記載のアプリケーションシステム。
【請求項４】
前記一又は複数の業務処理サーバは、それぞれ、前記マスタ更新手段による処理と前記同期手段による処理を一トランザクションとして実行させることを特徴とする請求項１または３に記載のアプリケーションシステム。
【請求項５】
マスタデータを記憶したデータベースを管理するデータベースサーバと、前記データベースサーバに接続され、業務処理を行う一又は複数の業務処理サーバと、前記一又は複数の業務処理サーバと接続され、ユーザインタフェースに関する処理を行う複数のユーザインタフェース装置とを備えたアプリケーションシステムにおいて、
前記複数のユーザインタフェース装置のそれぞれが有する記憶装置に、前記マスタデータのコピーデータを記憶するステップと、
前記複数のユーザインタフェース装置の一つが前記ユーザ端末装置からデータ更新要求を受け付けると、前記受け付けたデータ更新要求に応じて、前記データベースサーバが前記マスタデータを更新するステップと、
前記一又は複数の業務処理サーバが、前記複数のユーザインタフェース装置の記憶装置に記憶されているコピーデータを、更新後のマスタデータと一致するように更新させるステップと、を有する分散データを同期させる方法。
【請求項６】
マスタデータを記憶したデータベースを管理するデータベースサーバと、前記データベースサーバに接続され、業務処理を行う一又は複数の業務処理サーバと、前記一又は複数の業務処理サーバと接続され、ユーザインタフェースに関する処理を行う複数のユーザインタフェース装置とを備えたアプリケーションシステムに実行されると、
前記複数のユーザインタフェース装置のそれぞれが有する記憶装置に、前記マスタデータのコピーデータを記憶するステップと、
前記複数のユーザインタフェース装置の一つが前記ユーザ端末装置からデータ更新要求を受け付けると、前記受け付けたデータ更新要求に応じて、前記データベースサーバが前記マスタデータを更新するステップと、
前記一又は複数の業務処理サーバが、前記複数のユーザインタフェース装置の記憶装置に記憶されているコピーデータを、更新後のマスタデータと一致するように更新させるステップと、を行う分散データを同期させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、階層化されたＷｅｂシステムの処理速度を向上させるための技術に関する。
【背景技術】
【０００２】
インターネットを介して多くのユーザにサービスを提供するＷｅｂシステムでは、ユーザインタフェースを受け持つＷｅｂサーバと、種々のアプリケーション処理を実行する業務サーバと、マスタデータを管理するデータベースサーバとの３階層からなるシステムが利用されている。
【０００３】
ここで、データベースサーバは、比較的高価で信頼性の高いハードウェアが用いられることが多いが、業務サーバは１台〜十数台、Ｗｅｂサーバは数台から数十台の通常のパソコンなどで構成されることが多い。このように比較的安価なハードウェアを複数台用いることにより負荷分散を行って、コストを抑制しつつＷｅｂサーバ全体の処理性能を向上させている。
【０００４】
上記のような構成を採用すると、業務サーバ及びＷｅｂサーバについては負荷分散をすることができる一方で、データベースサーバに処理が集中してしまう。そこで、データベースサーバが管理するマスタデータをＷｅｂサーバあるいは業務サーバにキャッシュして処理速度を向上させることが行われている（例えば、特許文献１）。
【特許文献１】特開２００４−２４０５７５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
Ｗｅｂサーバあるいは業務サーバにキャッシュして使用されるデータは、ほとんど更新されないデータ、つまり参照されるデータがほとんどであった。なぜならば、複数のＷｅｂサーバ及び業務サーバにキャッシュされたデータをすべて同期させるためには、管理者による作業が必要になるからである。
【０００６】
そこで、本発明の目的は、階層化されたＷｅｂシステムにおいて、データベースサーバの負荷を軽減して、処理速度を向上させることである。
【０００７】
本発明の別の目的は、階層化されたＷｅｂシステムにおいて、ユーザインタフェースあるいは業務処理を行うサーバにキャッシュされたデータを更新しても整合性を失わずに、そのまま処理を継続するための技術を提供することである。
【課題を解決するための手段】
【０００８】
本発明の一実施態様に従うアプリケーションシステムは、マスタデータを記憶したデータベースを管理するデータベースサーバと、前記データベースサーバに接続され、業務処理を行う一又は複数の業務処理サーバと、前記一又は複数の業務処理サーバと接続され、ユーザインタフェースに関する処理を行う複数のユーザインタフェース装置とを備える。そして、前記複数のユーザインタフェース装置は、それぞれ、前記マスタデータのコピーデータを記憶する記憶装置と、前記記憶装置に記憶されているコピーデータに基づいてユーザインタフェース画面をユーザ端末装置へ提供するインタフェース手段と、を備える。さらに、前記一又は複数の業務処理サーバは、それぞれ、前記複数のユーザインタフェース装置の一つが前記ユーザ端末装置からデータ更新要求を受け付けると、前記データベースサーバに前記受け付けたデータ更新要求に応じて前記マスタデータを更新させるマスタ更新手段と、前記複数のユーザインタフェース装置の記憶装置に記憶されているコピーデータを、更新後のマスタデータと一致するように更新させる同期手段と、を備える。
【０００９】
好適な実施形態では、前記複数のユーザインタフェース装置のそれぞれは、前記業務処理サーバの同期手段により更新されたコピーデータを、前記同期手段により定められた時刻から有効とするようにしてもよい。
【００１０】
好適な実施形態では、前記同期手段が、いずれか一以上のユーザインタフェース装置の記憶装置に記憶されているコピーデータを更新後のマスタデータと一致させることができなかったときは、前記マスタ更新手段は、前記マスタデータの更新をロールバックするようにしてもよい。
【００１１】
好適な実施形態では、前記一又は複数の業務処理サーバは、それぞれ、前記マスタ更新手段による処理と前記同期手段による処理を一トランザクションとして実行させるようにしてもよい。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の一実施形態について、図面を用いて説明する。図１は、本実施形態に係るＷｅｂシステムの構成を示す図である。本システムは、インターネット７を介してユーザ端末装置９へ所定のサービスを提供するためのいわゆるＷｅｂ３階層システムであって、マスタデータを管理するデータベースサーバ（以下、ＤＢサーバという）１と、業務サーバである一又は複数のＥＪＢ（Enterprise JavaBeans；Javaは登録商標）サーバ３と、ユーザインタフェースを受け持つ、Javaサーブレットが動作する複数のＷｅｂサーバ５とを備える。
【００１３】
ＤＢサーバ１，ＥＪＢサーバ３、Ｗｅｂサーバ５及びユーザ端末装置９は、いずれも例えば汎用的なコンピュータシステムにより構成され、以下に説明する各サーバ等１，３，５，９内の個々の構成要素または機能は、例えば、コンピュータプログラムを実行することにより実現される。
【００１４】
ＤＢサーバ１は、本システムが利用するマスタデータを記憶したデータベースを管理する。
【００１５】
Ｗｅｂサーバ５は、ユーザインタフェース装置として、ユーザ端末装置９からのリクエストを受け付けて、それに対する応答を返す。さらに、Ｗｅｂサーバ５は、ＥＪＢサーバ３に対して、ユーザ端末装置９からのリクエストに応じたリクエストを行う。
【００１６】
本システムは、Ｗｅｂサーバ５を複数台備え、ロードバランサ６がユーザ端末装置９からのリクエストをいずれからのＷｅｂサーバ５へ割り当てる。各Ｗｅｂサーバ５の構成は、すべて共通である。従って、図１ではＷｅｂサーバ５の内部構成は１台のみ示す。
【００１７】
Ｗｅｂサーバ５は、ＨＴＴＰ（Hyper Text Transfer Protocol）リクエスト処理部５１と、キャッシュメモリ５５を有するキャッシュシステム５３とを備える。
【００１８】
キャッシュシステム５３は、キャッシュメモリ５５に格納されているデータを管理する。例えば、キャッシュシステム５３がキャッシュメモリ５５内のデータの読み出し要求を受けてデータを読み出す。さらに、キャッシュメモリ５５内に新たなデータを格納するよう要求を受けたり、またはキャッシュメモリ内のデータの更新要求を受けたりすると、キャッシュシステム５３がそれぞれの要求に応じた処理を行う。キャッシュメモリ５５には、ＤＢサーバ１が管理するマスタデータのコピーがオブジェクト単位に格納され、ユーザ端末装置９からのリクエストに応答する際に参照される。ここで、各Ｗｅｂサーバ５のキャッシュメモリ５５に格納されるコピーデータは共通である。従って、ロードバランサ６がユーザ端末装置９からのリクエストをいずれかのＷｅｂサーバ５に割り振るが、すべてのＷｅｂサーバ５が同じデータをキャッシュメモリ５５に記憶しているので、どのＷｅｂサーバ５がリクエストを受け付けてもまったく同様の処理が実行される。さらに、いずれかのＷｅｂサーバ５がユーザ端末装置９からデータ更新のリクエストを受け付けると、マスタデータ及びすべてのＷｅｂサーバ５上のキャッシュされたデータが同時に更新されて、同期がとられる。このデータを同期させるための処理は後述する。
【００１９】
ユーザ端末装置９からのリクエストは、例えばＨＴＴＰリクエスト形式で行われる。ＨＴＴＰリクエスト処理部５１は、ユーザ端末装置９からのＨＴＴＰリクエストに応じて、所定の処理を実行する。例えば、ユーザ端末装置９からのリクエストがキャッシュメモリ５５に格納されているデータの参照であれば、ＨＴＴＰリクエスト処理部５１は、キャッシュメモリ５５からそのデータを取得して、所定のインタフェース画面を生成してユーザ端末装置９へ送る。また、キャッシュメモリ５５に存在しないデータの参照、あるいはデータの更新であれば、ＨＴＴＰリクエスト処理部５１は、所定の関数を呼び出すなどして、ＥＪＢサーバ３に処理を依頼する。
【００２０】
ＥＪＢサーバ３は、Ｗｅｂサーバ５を介してユーザからの要求を受け付けて、所定の業務処理を実行する。図１の例では、本システムは２台のＥＪＢサーバ３で構成されているが、１台でもよいし、あるいは３台以上でもよい。
【００２１】
ＥＪＢサーバ３は、それぞれ、トランザクション管理部３１と、同期処理部３２と、ＤＢ更新処理部３３と、オブジェクトの定義情報を記憶したオブジェクト定義記憶部３４とを備える。
【００２２】
トランザクション管理部３１は、データベースの参照、更新などの所定の処理をトランザクションとして実行する。例えば、トランザクション管理部３１は、トランザクションを実行するための複数の関数を予め保持している。関数としては、例えば、ＤＢサーバ１が管理するマスタデータの更新を行う関数や、マスタデータの参照を行う関数などがある。そして、Ｗｅｂサーバ５のＨＴＴＰリクエスト処理部５１から呼び出された関数を実行する。
【００２３】
同期処理部３２は、トランザクション管理部３１からデータベースの更新要求を受けると、データベース更新処理部３３に対してマスタデータの更新を指示し、更新後のマスタデータの内容をキャッシュメモリ５５の更新要求として全Ｗｅｂサーバ５へ配布し、キャッシュメモリ５５のコピーデータの同期をとる。
【００２４】
例えば、同期処理部３２は、トランザクション管理部３１からマスタデータの更新要求を受けると、オブジェクト定義記憶部３４を参照し、オブジェクトを再作成し、更新対象となるオブジェクトを特定する。そして、更新対象のオブジェクトの更新をＤＢ更新処理部３３に指示をして、マスタデータを更新させる。マスタデータの更新が完了すると、同期処理部３２は、更新後のオブジェクトのデータをＤＢサーバ１から取得して、全Ｗｅｂサーバ５へ通知する。このとき、ここで通知するデータを有効にする適用時刻も併せて通知する。この適用時刻になると、各キャッシュシステム５３は、通知されたデータを有効にする。そして、ＨＴＴＰリクエスト処理部５１は、これ以降更新後のデータを参照することができるようになる。この適用時刻により、転送あるいは処理の遅延などの影響ですら受けることなく、全Ｗｅｂサーバ５のキャッシュメモリ５５の内容が常に同一であることが保証される。
【００２５】
各Ｗｅｂサーバ５は、この更新後のデータが通知されると、これに基づいてキャッシュメモリ５５を更新し、マスタデータとキャッシュメモリ５５の内容を一致させる。各Ｗｅｂサーバ５は、キャッシュメモリ５５の更新が完了すると、更新完了を同期処理部３２へ送る。なお、上述の通り、適用時刻が来るまでここで更新した内容は有効とはされず、適用時刻になるとその時点で上記の更新が全Ｗｅｂサーバ５で同時に有効となる。なお、適用時刻になった場合でも、それ以前に受け付けたリクエストの処理が完了していない場合は、リクエスト受け付け時点でのキャッシュを依然有効とし、このリクエストの処理が完了した時点でキャッシュデータを更新する。これにより、このリクエストに関して、処理が完了するまでキャッシュデータの一貫性が保証される。
【００２６】
このとき、同期処理部３２では、すべてのＷｅｂサーバ５から更新完了の通知を受信しないときは、全キャッシュメモリ５５上のデータが一致していないと判断する。そして、トランザクション管理部３１は、マスタデータの更新をロールバックし、トランザクションを異常終了する。これにより、本システムでは、常に、全キャッシュメモリ５５上に分散されているデータがマスタデータと同期がとられるようになっている。
【００２７】
ＤＢ更新処理部３３は、同期処理部３２からの指示に基づいて、ＤＢサーバ１に対して更新対象となるオブジェクト及び更新内容を指示して、マスタデータを更新させる。なお、マスタデータについても適用時刻別にデータを記憶していてもよい。マスタデータを適用時刻別に保持していれば、Ｗｅｂサーバを新たに追加する場合などに、他のＷｅｂサーバと同じ構成にセットアップすることができる。
【００２８】
次に、マスタデータ更新時の処理手順について、図２のフローチャートを用いて説明する。
【００２９】
まず、Ｗｅｂサーバ５がユーザ端末装置９からマスタデータの更新要求を、ＨＴＴＰリクエスト形式で受信する（Ｓ１１）。このＨＴＴＰリクエストには、更新する項目名、及び更新内容が含まれている。
【００３０】
Ｗｅｂサーバ５は、このＨＴＴＰリクエストに基づいて、ＥＪＢサーバ３へマスタデータの更新を通知する（Ｓ１２）。本実施形態では、ＨＴＴＰリクエスト処理部５１がトランザクション管理部３１のマスタデータ更新のための関数を呼び出す。このとき、更新する項目名及び更新内容が、関数の引数としてセットされる。
【００３１】
ＥＪＢサーバ３では、トランザクション管理部３１が呼び出された関数を実行する。このとき、同期処理部３２がオブジェクトを再作成して、トランザクション管理部３１から通知を受けた更新する項目名を含むオブジェクトを更新対象オブジェクトとして特定する（Ｓ１３）。そして、ＤＢ更新処理部３３が、ＤＢサーバ１に指示をして更新対象オブジェクトのマスタデータを更新させる（Ｓ１４）。
【００３２】
マスタデータの更新が完了すると、同期処理部３２が更新後のマスタデータをすべてのＷｅｂサーバ５へ同報通知し、各Ｗｅｂサーバ５のキャッシュシステム５３は、この通知を受け付けてキャッシュメモリ５５を更新する（Ｓ１５）。各キャッシュシステム５３は、同報通知に対するデータの更新が完了すると、更新完了通知を同期処理部３２へ返す。
【００３３】
同期処理部３２は、各Ｗｅｂサーバ５のキャッシュシステム５３からの更新完了通知を受信する。ここで、すべてのＷｅｂサーバ５から上記の更新完了通知を受信したかどうかを判定する（Ｓ１６）。そして、すべてのＷｅｂサーバ５から上記の更新完了通知を受信した場合は（Ｓ１６：Ｙｅｓ）、トランザクション管理部３１がトランザクションを正常終了し、マスタデータの更新成功をリクエストの送信元へ返信する（Ｓ１７）。一方、いずれか一つのＷｅｂサーバ５からでも上記の更新完了通知を受信しない場合は（Ｓ１６：Ｎｏ）、トランザクション管理部３１がマスタデータの更新をロールバックする（Ｓ１８）。そして、このトランザクションを異常終了し、マスタデータの更新失敗をリクエストの送信元へ返信する（Ｓ１９）。
【００３４】
これにより、キャッシュメモリ５５に分散して格納されているコピーデータは、常にＤＢサーバ１のマスタデータと一致する。本システムは、Ｗｅｂサーバ５に分散させつつ、常にマスタデータとの整合をはかることにより、Ｗｅｂ３階層システム全体の処理速度を向上させることができる。
【００３５】
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【００３６】
例えば、上述した実施形態ではＷｅｂサーバがキャッシュメモリを有している場合について説明したが、ＥＪＢサーバがキャッシュメモリを有している場合も同様にして、マスタデータとキャッシュメモリ上のデータとの同期をとることができる。
【図面の簡単な説明】
【００３７】
【図１】本発明の一実施形態に係るＷｅｂシステムの構成図である。
【図２】本実施形態の処理手順を示すフローチャートである。
【符号の説明】
【００３８】
１…ＤＢサーバ、３…ＥＪＢサーバ、５…Ｗｅｂサーバ、６…ロードバランサ、９…ユーザ端末装置、３１…トランザクション管理部、３２…同期処理部、５５…キャッシュメモリ。
【図１】
2006164075.tif 000003
【図２】
2006164075.tif 000004