説明

アプリケーションシステム及び分散データを同期させる方法

【課題】階層化されたWebシステムにおいて、データベースサーバの負荷を軽減して、処理速度を向上させる。
【解決手段】マスタデータを記憶したデータベースを管理するデータベースサーバ1と、データベースサーバ1に接続され、業務処理を行う一又は複数のEJBサーバ3と、業務処理サーバ3と接続され、ユーザインタフェースに関する処理を行う複数のWebサーバ5とを備える。Webサーバ5は、それぞれ、マスタデータのコピーデータを記憶するキャッシュメモリ55を備える。EJBサーバ3は、それぞれ、Webサーバ5の一つがユーザ端末装置9からデータ更新要求を受け付けると、データベースサーバ1にデータ更新要求に応じてマスタデータを更新させるDB更新部33と、Webサーバ5のキャッシュメモリ55に記憶されているコピーデータを、更新後のマスタデータと一致するように更新させる同期処理部32と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、階層化されたWebシステムの処理速度を向上させるための技術に関する。
【背景技術】
【0002】
インターネットを介して多くのユーザにサービスを提供するWebシステムでは、ユーザインタフェースを受け持つWebサーバと、種々のアプリケーション処理を実行する業務サーバと、マスタデータを管理するデータベースサーバとの3階層からなるシステムが利用されている。
【0003】
ここで、データベースサーバは、比較的高価で信頼性の高いハードウェアが用いられることが多いが、業務サーバは1台〜十数台、Webサーバは数台から数十台の通常のパソコンなどで構成されることが多い。このように比較的安価なハードウェアを複数台用いることにより負荷分散を行って、コストを抑制しつつWebサーバ全体の処理性能を向上させている。
【0004】
上記のような構成を採用すると、業務サーバ及びWebサーバについては負荷分散をすることができる一方で、データベースサーバに処理が集中してしまう。そこで、データベースサーバが管理するマスタデータをWebサーバあるいは業務サーバにキャッシュして処理速度を向上させることが行われている(例えば、特許文献1)。
【特許文献1】特開2004−240575号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
Webサーバあるいは業務サーバにキャッシュして使用されるデータは、ほとんど更新されないデータ、つまり参照されるデータがほとんどであった。なぜならば、複数のWebサーバ及び業務サーバにキャッシュされたデータをすべて同期させるためには、管理者による作業が必要になるからである。
【0006】
そこで、本発明の目的は、階層化されたWebシステムにおいて、データベースサーバの負荷を軽減して、処理速度を向上させることである。
【0007】
本発明の別の目的は、階層化されたWebシステムにおいて、ユーザインタフェースあるいは業務処理を行うサーバにキャッシュされたデータを更新しても整合性を失わずに、そのまま処理を継続するための技術を提供することである。
【課題を解決するための手段】
【0008】
本発明の一実施態様に従うアプリケーションシステムは、マスタデータを記憶したデータベースを管理するデータベースサーバと、前記データベースサーバに接続され、業務処理を行う一又は複数の業務処理サーバと、前記一又は複数の業務処理サーバと接続され、ユーザインタフェースに関する処理を行う複数のユーザインタフェース装置とを備える。そして、前記複数のユーザインタフェース装置は、それぞれ、前記マスタデータのコピーデータを記憶する記憶装置と、前記記憶装置に記憶されているコピーデータに基づいてユーザインタフェース画面をユーザ端末装置へ提供するインタフェース手段と、を備える。さらに、前記一又は複数の業務処理サーバは、それぞれ、前記複数のユーザインタフェース装置の一つが前記ユーザ端末装置からデータ更新要求を受け付けると、前記データベースサーバに前記受け付けたデータ更新要求に応じて前記マスタデータを更新させるマスタ更新手段と、前記複数のユーザインタフェース装置の記憶装置に記憶されているコピーデータを、更新後のマスタデータと一致するように更新させる同期手段と、を備える。
【0009】
好適な実施形態では、前記複数のユーザインタフェース装置のそれぞれは、前記業務処理サーバの同期手段により更新されたコピーデータを、前記同期手段により定められた時刻から有効とするようにしてもよい。
【0010】
好適な実施形態では、前記同期手段が、いずれか一以上のユーザインタフェース装置の記憶装置に記憶されているコピーデータを更新後のマスタデータと一致させることができなかったときは、前記マスタ更新手段は、前記マスタデータの更新をロールバックするようにしてもよい。
【0011】
好適な実施形態では、前記一又は複数の業務処理サーバは、それぞれ、前記マスタ更新手段による処理と前記同期手段による処理を一トランザクションとして実行させるようにしてもよい。
【発明を実施するための最良の形態】
【0012】
以下、本発明の一実施形態について、図面を用いて説明する。図1は、本実施形態に係るWebシステムの構成を示す図である。本システムは、インターネット7を介してユーザ端末装置9へ所定のサービスを提供するためのいわゆるWeb3階層システムであって、マスタデータを管理するデータベースサーバ(以下、DBサーバという)1と、業務サーバである一又は複数のEJB(Enterprise JavaBeans;Javaは登録商標)サーバ3と、ユーザインタフェースを受け持つ、Javaサーブレットが動作する複数のWebサーバ5とを備える。
【0013】
DBサーバ1,EJBサーバ3、Webサーバ5及びユーザ端末装置9は、いずれも例えば汎用的なコンピュータシステムにより構成され、以下に説明する各サーバ等1,3,5,9内の個々の構成要素または機能は、例えば、コンピュータプログラムを実行することにより実現される。
【0014】
DBサーバ1は、本システムが利用するマスタデータを記憶したデータベースを管理する。
【0015】
Webサーバ5は、ユーザインタフェース装置として、ユーザ端末装置9からのリクエストを受け付けて、それに対する応答を返す。さらに、Webサーバ5は、EJBサーバ3に対して、ユーザ端末装置9からのリクエストに応じたリクエストを行う。
【0016】
本システムは、Webサーバ5を複数台備え、ロードバランサ6がユーザ端末装置9からのリクエストをいずれからのWebサーバ5へ割り当てる。各Webサーバ5の構成は、すべて共通である。従って、図1ではWebサーバ5の内部構成は1台のみ示す。
【0017】
Webサーバ5は、HTTP(Hyper Text Transfer Protocol)リクエスト処理部51と、キャッシュメモリ55を有するキャッシュシステム53とを備える。
【0018】
キャッシュシステム53は、キャッシュメモリ55に格納されているデータを管理する。例えば、キャッシュシステム53がキャッシュメモリ55内のデータの読み出し要求を受けてデータを読み出す。さらに、キャッシュメモリ55内に新たなデータを格納するよう要求を受けたり、またはキャッシュメモリ内のデータの更新要求を受けたりすると、キャッシュシステム53がそれぞれの要求に応じた処理を行う。キャッシュメモリ55には、DBサーバ1が管理するマスタデータのコピーがオブジェクト単位に格納され、ユーザ端末装置9からのリクエストに応答する際に参照される。ここで、各Webサーバ5のキャッシュメモリ55に格納されるコピーデータは共通である。従って、ロードバランサ6がユーザ端末装置9からのリクエストをいずれかのWebサーバ5に割り振るが、すべてのWebサーバ5が同じデータをキャッシュメモリ55に記憶しているので、どのWebサーバ5がリクエストを受け付けてもまったく同様の処理が実行される。さらに、いずれかのWebサーバ5がユーザ端末装置9からデータ更新のリクエストを受け付けると、マスタデータ及びすべてのWebサーバ5上のキャッシュされたデータが同時に更新されて、同期がとられる。このデータを同期させるための処理は後述する。
【0019】
ユーザ端末装置9からのリクエストは、例えばHTTPリクエスト形式で行われる。HTTPリクエスト処理部51は、ユーザ端末装置9からのHTTPリクエストに応じて、所定の処理を実行する。例えば、ユーザ端末装置9からのリクエストがキャッシュメモリ55に格納されているデータの参照であれば、HTTPリクエスト処理部51は、キャッシュメモリ55からそのデータを取得して、所定のインタフェース画面を生成してユーザ端末装置9へ送る。また、キャッシュメモリ55に存在しないデータの参照、あるいはデータの更新であれば、HTTPリクエスト処理部51は、所定の関数を呼び出すなどして、EJBサーバ3に処理を依頼する。
【0020】
EJBサーバ3は、Webサーバ5を介してユーザからの要求を受け付けて、所定の業務処理を実行する。図1の例では、本システムは2台のEJBサーバ3で構成されているが、1台でもよいし、あるいは3台以上でもよい。
【0021】
EJBサーバ3は、それぞれ、トランザクション管理部31と、同期処理部32と、DB更新処理部33と、オブジェクトの定義情報を記憶したオブジェクト定義記憶部34とを備える。
【0022】
トランザクション管理部31は、データベースの参照、更新などの所定の処理をトランザクションとして実行する。例えば、トランザクション管理部31は、トランザクションを実行するための複数の関数を予め保持している。関数としては、例えば、DBサーバ1が管理するマスタデータの更新を行う関数や、マスタデータの参照を行う関数などがある。そして、Webサーバ5のHTTPリクエスト処理部51から呼び出された関数を実行する。
【0023】
同期処理部32は、トランザクション管理部31からデータベースの更新要求を受けると、データベース更新処理部33に対してマスタデータの更新を指示し、更新後のマスタデータの内容をキャッシュメモリ55の更新要求として全Webサーバ5へ配布し、キャッシュメモリ55のコピーデータの同期をとる。
【0024】
例えば、同期処理部32は、トランザクション管理部31からマスタデータの更新要求を受けると、オブジェクト定義記憶部34を参照し、オブジェクトを再作成し、更新対象となるオブジェクトを特定する。そして、更新対象のオブジェクトの更新をDB更新処理部33に指示をして、マスタデータを更新させる。マスタデータの更新が完了すると、同期処理部32は、更新後のオブジェクトのデータをDBサーバ1から取得して、全Webサーバ5へ通知する。このとき、ここで通知するデータを有効にする適用時刻も併せて通知する。この適用時刻になると、各キャッシュシステム53は、通知されたデータを有効にする。そして、HTTPリクエスト処理部51は、これ以降更新後のデータを参照することができるようになる。この適用時刻により、転送あるいは処理の遅延などの影響ですら受けることなく、全Webサーバ5のキャッシュメモリ55の内容が常に同一であることが保証される。
【0025】
各Webサーバ5は、この更新後のデータが通知されると、これに基づいてキャッシュメモリ55を更新し、マスタデータとキャッシュメモリ55の内容を一致させる。各Webサーバ5は、キャッシュメモリ55の更新が完了すると、更新完了を同期処理部32へ送る。なお、上述の通り、適用時刻が来るまでここで更新した内容は有効とはされず、適用時刻になるとその時点で上記の更新が全Webサーバ5で同時に有効となる。なお、適用時刻になった場合でも、それ以前に受け付けたリクエストの処理が完了していない場合は、リクエスト受け付け時点でのキャッシュを依然有効とし、このリクエストの処理が完了した時点でキャッシュデータを更新する。これにより、このリクエストに関して、処理が完了するまでキャッシュデータの一貫性が保証される。
【0026】
このとき、同期処理部32では、すべてのWebサーバ5から更新完了の通知を受信しないときは、全キャッシュメモリ55上のデータが一致していないと判断する。そして、トランザクション管理部31は、マスタデータの更新をロールバックし、トランザクションを異常終了する。これにより、本システムでは、常に、全キャッシュメモリ55上に分散されているデータがマスタデータと同期がとられるようになっている。
【0027】
DB更新処理部33は、同期処理部32からの指示に基づいて、DBサーバ1に対して更新対象となるオブジェクト及び更新内容を指示して、マスタデータを更新させる。なお、マスタデータについても適用時刻別にデータを記憶していてもよい。マスタデータを適用時刻別に保持していれば、Webサーバを新たに追加する場合などに、他のWebサーバと同じ構成にセットアップすることができる。
【0028】
次に、マスタデータ更新時の処理手順について、図2のフローチャートを用いて説明する。
【0029】
まず、Webサーバ5がユーザ端末装置9からマスタデータの更新要求を、HTTPリクエスト形式で受信する(S11)。このHTTPリクエストには、更新する項目名、及び更新内容が含まれている。
【0030】
Webサーバ5は、このHTTPリクエストに基づいて、EJBサーバ3へマスタデータの更新を通知する(S12)。本実施形態では、HTTPリクエスト処理部51がトランザクション管理部31のマスタデータ更新のための関数を呼び出す。このとき、更新する項目名及び更新内容が、関数の引数としてセットされる。
【0031】
EJBサーバ3では、トランザクション管理部31が呼び出された関数を実行する。このとき、同期処理部32がオブジェクトを再作成して、トランザクション管理部31から通知を受けた更新する項目名を含むオブジェクトを更新対象オブジェクトとして特定する(S13)。そして、DB更新処理部33が、DBサーバ1に指示をして更新対象オブジェクトのマスタデータを更新させる(S14)。
【0032】
マスタデータの更新が完了すると、同期処理部32が更新後のマスタデータをすべてのWebサーバ5へ同報通知し、各Webサーバ5のキャッシュシステム53は、この通知を受け付けてキャッシュメモリ55を更新する(S15)。各キャッシュシステム53は、同報通知に対するデータの更新が完了すると、更新完了通知を同期処理部32へ返す。
【0033】
同期処理部32は、各Webサーバ5のキャッシュシステム53からの更新完了通知を受信する。ここで、すべてのWebサーバ5から上記の更新完了通知を受信したかどうかを判定する(S16)。そして、すべてのWebサーバ5から上記の更新完了通知を受信した場合は(S16:Yes)、トランザクション管理部31がトランザクションを正常終了し、マスタデータの更新成功をリクエストの送信元へ返信する(S17)。一方、いずれか一つのWebサーバ5からでも上記の更新完了通知を受信しない場合は(S16:No)、トランザクション管理部31がマスタデータの更新をロールバックする(S18)。そして、このトランザクションを異常終了し、マスタデータの更新失敗をリクエストの送信元へ返信する(S19)。
【0034】
これにより、キャッシュメモリ55に分散して格納されているコピーデータは、常にDBサーバ1のマスタデータと一致する。本システムは、Webサーバ5に分散させつつ、常にマスタデータとの整合をはかることにより、Web3階層システム全体の処理速度を向上させることができる。
【0035】
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【0036】
例えば、上述した実施形態ではWebサーバがキャッシュメモリを有している場合について説明したが、EJBサーバがキャッシュメモリを有している場合も同様にして、マスタデータとキャッシュメモリ上のデータとの同期をとることができる。
【図面の簡単な説明】
【0037】
【図1】本発明の一実施形態に係るWebシステムの構成図である。
【図2】本実施形態の処理手順を示すフローチャートである。
【符号の説明】
【0038】
1…DBサーバ、3…EJBサーバ、5…Webサーバ、6…ロードバランサ、9…ユーザ端末装置、31…トランザクション管理部、32…同期処理部、55…キャッシュメモリ。

【特許請求の範囲】
【請求項1】
マスタデータを記憶したデータベースを管理するデータベースサーバと、前記データベースサーバに接続され、業務処理を行う一又は複数の業務処理サーバと、前記一又は複数の業務処理サーバと接続され、ユーザインタフェースに関する処理を行う複数のユーザインタフェース装置とを備え、
前記複数のユーザインタフェース装置は、それぞれ、
前記マスタデータのコピーデータを記憶する記憶装置と、
前記記憶装置に記憶されているコピーデータに基づいてユーザインタフェース画面をユーザ端末装置へ提供するインタフェース手段と、を備え、
前記一又は複数の業務処理サーバは、それぞれ、
前記複数のユーザインタフェース装置の一つが前記ユーザ端末装置からデータ更新要求を受け付けると、前記データベースサーバに前記受け付けたデータ更新要求に応じて前記マスタデータを更新させるマスタ更新手段と、
前記複数のユーザインタフェース装置の記憶装置に記憶されているコピーデータを、更新後のマスタデータと一致するように更新させる同期手段と、を備えるアプリケーションシステム。
【請求項2】
前記複数のユーザインタフェース装置のそれぞれは、
前記業務処理サーバの同期手段により更新されたコピーデータを、前記同期手段により定められた時刻から有効とすることを特徴とする請求項1に記載のアプリケーションシステム。
【請求項3】
前記同期手段が、いずれか一以上のユーザインタフェース装置の記憶装置に記憶されているコピーデータを更新後のマスタデータと一致させることができなかったときは、前記マスタ更新手段は、前記マスタデータの更新をロールバックすることを特徴とする請求項1に記載のアプリケーションシステム。
【請求項4】
前記一又は複数の業務処理サーバは、それぞれ、前記マスタ更新手段による処理と前記同期手段による処理を一トランザクションとして実行させることを特徴とする請求項1または3に記載のアプリケーションシステム。
【請求項5】
マスタデータを記憶したデータベースを管理するデータベースサーバと、前記データベースサーバに接続され、業務処理を行う一又は複数の業務処理サーバと、前記一又は複数の業務処理サーバと接続され、ユーザインタフェースに関する処理を行う複数のユーザインタフェース装置とを備えたアプリケーションシステムにおいて、
前記複数のユーザインタフェース装置のそれぞれが有する記憶装置に、前記マスタデータのコピーデータを記憶するステップと、
前記複数のユーザインタフェース装置の一つが前記ユーザ端末装置からデータ更新要求を受け付けると、前記受け付けたデータ更新要求に応じて、前記データベースサーバが前記マスタデータを更新するステップと、
前記一又は複数の業務処理サーバが、前記複数のユーザインタフェース装置の記憶装置に記憶されているコピーデータを、更新後のマスタデータと一致するように更新させるステップと、を有する分散データを同期させる方法。
【請求項6】
マスタデータを記憶したデータベースを管理するデータベースサーバと、前記データベースサーバに接続され、業務処理を行う一又は複数の業務処理サーバと、前記一又は複数の業務処理サーバと接続され、ユーザインタフェースに関する処理を行う複数のユーザインタフェース装置とを備えたアプリケーションシステムに実行されると、
前記複数のユーザインタフェース装置のそれぞれが有する記憶装置に、前記マスタデータのコピーデータを記憶するステップと、
前記複数のユーザインタフェース装置の一つが前記ユーザ端末装置からデータ更新要求を受け付けると、前記受け付けたデータ更新要求に応じて、前記データベースサーバが前記マスタデータを更新するステップと、
前記一又は複数の業務処理サーバが、前記複数のユーザインタフェース装置の記憶装置に記憶されているコピーデータを、更新後のマスタデータと一致するように更新させるステップと、を行う分散データを同期させるためのコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate