(57)【要約】【課題】複数のサーバが分散処理を行う分散システムにおいて、他サーバに接続されたデータベースの更新内容をリアルタイムに取得する。【解決手段】複数のサーバが分散処理を行う分散システムであって、サーバ各々は、当該サーバに接続された自データベースと、他サーバに接続された他データベースと、を結合したビューの定義情報が記憶された記憶手段と、データベースへのアクセス要求を受け付けて、データベースの操作を行う操作手段と、を有し、前記アクセス要求がデータの書き込み要求の場合、前記操作手段は、前記自データベースにデータを書き込み、前記アクセス要求がデータの読み出し要求の場合、前記操作手段は、前記記憶手段に記憶されたビューの定義情報に基づいて前記自データベースおよび前記他データベースからデータを読み出す。【選択図】図１
2007179300.tif 000002
【特許請求の範囲】
【請求項１】
複数のサーバが分散処理を行う分散システムであって、
前記サーバ各々は、
当該サーバに接続された自データベースと、他サーバに接続された他データベースと、を結合したビューの定義情報が記憶された記憶手段と、
データベースへのアクセス要求を受け付けて、データベースの操作を行う操作手段と、を有し、
前記アクセス要求がデータの書き込み要求の場合、前記操作手段は、前記自データベースにデータを書き込み、
前記アクセス要求がデータの読み出し要求の場合、前記操作手段は、前記記憶手段に記憶されたビューの定義情報に基づいて前記自データベースおよび前記他データベースからデータを読み出すこと
を特徴とする分散システム。
【請求項２】
複数のサーバが分散処理を行う分散システムにおける、前記サーバの分散処理プログラムであって、
前記サーバに、
当該サーバに接続された自データベースと、他サーバに接続された他データベースと、を結合したビューの定義情報が記憶された記憶手段、および、
データベースへのアクセス要求を受け付けて、データベースの操作を行う操作手段、として機能させ、
前記アクセス要求がデータの書き込み要求の場合、前記操作手段は、前記自データベースにデータを書き込み、
前記アクセス要求がデータの読み出し要求の場合、前記操作手段は、前記記憶手段に記憶されたビューの定義情報に基づいて前記自データベースおよび前記他データベースからデータを読み出すこと
を特徴とする分散処理プログラム。
【請求項３】
複数のサーバが行う分散処理方法であって、
前記サーバ各々は、
当該サーバに接続された自データベースと、他サーバに接続された他データベースと、を結合したビューの定義情報を定義し、記憶部に記憶する定義ステップと、
データベースへのアクセス要求を受け付ける受付ステップと、
前記アクセス要求がデータの書き込み要求の場合、前記自データベースにデータを書き込むとともに、前記アクセス要求がデータの読み出し要求の場合、前記記憶部に記憶されたビューの定義情報に基づいて前記自データベースおよび前記他データベースからデータを読み出す操作ステップと、を行うこと
を特徴とする分散処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のサーバで分散処理を行う分散処理技術に関し、特に、各サーバに接続されたデータベースのデータ操作技術に関する。
【背景技術】
【０００２】
複数のサーバを並列に運用して、サーバ間での負荷が均等になるように処理を分散する負荷分散技術がある。例えば、特許文献１には、複数のデータベースシステムに対するアクセスの振り分け条件を可変可能な状態で事前に設定し、データベースシステムへのアクセス要求が発生した際に当該アクセス要求と振り分け条件とに基づいてアクセス先のデータベースシステムを固定的に設定する負荷分散方法が記載されている。
【特許文献１】特開２００４−２４６７７８
【発明の開示】
【発明が解決しようとする課題】
【０００３】
複数のサーバを用いて分散処理を行う場合、各サーバに接続されたデータベース間でデータを同期させる必要がある。データの同期をとる方法としては、所定のタイミングで他システムに接続されたデータベースの更新内容を、自システムに接続されたデータベースに反映させ、各データベースが同一のデータを保持する方法がある。
【０００４】
しかしながら、所定のデータベースに対する更新内容を他のデータベースにリアルタイムで反映させることは困難であり、タイムラグが発生してしまう。また、データベースの更新頻度が高い場合、更新内容を反映させる処理の負荷が大きくなり、システム全体の処理性能を低下させるおそれがある。また、各データベースがデータを重複して保持するため、データベースの容量が増大する。
【０００５】
なお、特許文献１などに記載された負荷分散方法のように、データベースへのアクセス要求を所定の条件で振り分ける場合、アクセス要求の振り分け制御機能を負荷分散装置またはサーバに作り込む必要がある。
【０００６】
本発明は上記事情に鑑みてなされたものであり、本発明の目的は、複数のサーバが分散処理を行う分散システムにおいて、他サーバに接続されたデータベースの更新内容を、リアルタイムに取得することにある。また、本発明の目的は、より低コストに、また、より容易に、他サーバに接続されたデータベースの更新内容を取得することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明では、例えば、複数のサーバが分散処理を行う分散システムであって、前記サーバ各々は、当該サーバに接続された自データベースと、他サーバに接続された他データベースと、を結合したビューの定義情報が記憶された記憶手段と、データベースへのアクセス要求を受け付けて、データベースの操作を行う操作手段と、を有し、前記アクセス要求がデータの書き込み要求の場合、前記操作手段は、前記自データベースにデータを書き込み、前記アクセス要求がデータの読み出し要求の場合、前記操作手段は、前記記憶手段に記憶されたビューの定義情報に基づいて前記自データベースおよび前記他データベースからデータを読み出す。
【発明の効果】
【０００８】
本発明では、複数のサーバが分散処理を行う分散システムにおいて、他サーバに接続されたデータベースの更新内容を、リアルタイムに取得することができる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施の形態について説明する。
【００１０】
図１は、本発明の一実施形態が適用された分散システムの全体構成図である。本実施形態の分散システムは、端末１と、負荷分散装置（load balancer）２と、複数のサーバ３Ａ、３Ｂと、を有する。本実施形態の分散システムは、各端末１からの要求を処理するために、サーバ１号機３Ａおよびサーバ２号機３Ｂの２つのサーバで分散して処理を行うものとする。そして、各端末１は、インターネットなどのネットワーク９および負荷分散装置２を介して、いずれかのサーバ３Ａ、３Ｂに接続することができる。
【００１１】
端末１は、ユーザが入力した各種の要求を受け付け、受け付けた要求をネットワーク９を介して負荷分散装置２に送信する。負荷分散装置２は、各端末１からの要求をサーバ１号機３Ａまたはサーバ２号機３Ｂに振り分け、各サーバの負荷を分散させる。
【００１２】
サーバ３Ａ、３Ｂは、それぞれ、専用のディスクを有する。具体的には、サーバ１号機３Ａには１号機用ディスク４Ａが、サーバ２号機３Ｂには２号機用ディスク４Ｂがマウント（接続）されている。１号機用ディスク４Ａは、データベース４１Ａと、定義情報ファイル４５Ａとを有する。そして、データベース４１Ａには、サーバ１号機３Ａが行った処理のログ情報（履歴情報）を格納する処理ログテーブル４２Ａが、実テーブルとして記憶されている。
【００１３】
定義情報ファイル４５Ａには、１号機用ディスク４Ａおよび２号機用ディスク４Ｂの処理ログテーブル４２Ａ、４２Ｂのテーブル定義情報、および、図示しないビュー（view）のビュー定義情報が記憶されている。ビューは、実テーブルから生成される仮想的なテーブルである。本実施形態のビューは、１号機用ディスク４Ａおよび２号機用ディスク４Ｂの処理ログテーブル４２Ａ、４２Ｂを結合した仮想テーブルであるものとする。
【００１４】
また、２号機用ディスク４Ｂは、データベース４１Ｂと、定義情報ファイル４５Ｂとを有する。そして、データベース４１Ｂには、サーバ２号機３Ｂが行った処理のログ情報を格納する処理ログテーブル４２Ｂが、実テーブルとして記憶されている。定義情報ファイル４５Ｂには、２号機用ディスク４Ｂおよび１号機用ディスク４Ａの処理ログテーブル４２Ｂ、４２Ａのテーブル定義情報、および、図示しないビューのビュー定義情報が記憶されている。
【００１５】
なお、本実施形態では、定義情報ファイル４５Ａ、４５Ｂは、各ディスク４Ａ、４Ｂにそれぞれ格納されている。しかしながら、各サーバ３Ａ、３Ｂ内の記憶手段（不図示）に、定義情報ファイル４５Ａ、４５Ｂを格納することとしてもよい。
【００１６】
また、本実施形態の定義情報ファイルには、前述のテーブル定義情報とビュー定義情報とが含まれる。しかしながら、テーブル定義情報用の定義情報ファイルと、ビュー定義情報用の定義情報ファイルとにファイルを分割して、２つの定義情報ファイルを有することとしてもよい。
【００１７】
そして、各サーバ３Ａ、３Ｂは、業務処理部３１と、ＤＢ操作部３２と、ＤＢ定義部３３とを有する。業務処理部３１は、端末１が送信した要求を受け付けて、所定の業務処理を行う。そして、業務処理部３１は、業務処理を行った後、データベースに対して所定のアクセス要求（操作指示）を生成する。アクセス要求には、データの書き込み要求（write要求）、データの読み出し要求（read要求）などが含まれる。
【００１８】
ＤＢ操作部３２は、業務処理部３１が生成したアクセス要求を受け付けて、データベースにデータを書き込むとともに、データベースからデータを読み出す。ＤＢ定義部３３は、システム管理者の指示を受け付けて、実テーブル（処理ログテーブル４２Ａ、４２Ｂ）のテーブル定義情報、および、実テーブルを結合したビューのビュー定義情報を定義し、定義情報ファイル４５Ａ、４５Ｂにあらかじめ記憶しておくものとする。具体的には、サーバ１号機のＤＢ定義部３３は１号機用ディスク４Ａの定義情報ファイル４５Ａに、サーバ２号機のＤＢ定義部３３は２号機用ディスク４Ｂの定義情報ファイル４５Ｂに、各定義情報を記憶する。
【００１９】
上記説明した端末１およびサーバ３Ａ、３Ｂは、いずれも、例えば図２に示すようなＣＰＵ９０１と、メモリ９０２と、ＨＤＤ等の外部記憶装置９０３と、キーボードやマウスなどの入力装置９０４と、ディスプレイやプリンタなどの出力装置９０５と、ネットワークと接続するための通信制御装置９０６と、を備えた汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、ＣＰＵ９０１がメモリ９０２上にロードされた所定のプログラムを実行することにより、各装置の各機能が実現される。
【００２０】
例えば、端末１およびサーバ３Ａ、３Ｂの各機能は、端末１用のプログラムの場合は端末１のＣＰＵ９０１が、そして、サーバ３Ａ、３Ｂ用のプログラムの場合はサーバ３Ａ、３ＢのＣＰＵ９０１が、それぞれ実行することにより実現される。なお、１号機用ディスク４Ａはサーバ１号機の外部記憶装置９０３であって、２号機用ディスク４Ｂはサーバ２号機の外部記憶装置９０３である。また、入力装置９０４および出力装置９０５については、各装置が必要に応じて備えるものとする。
【００２１】
次に、サーバが、データベースにアクセスする処理について説明する。
【００２２】
図３は、データベースへのアクセス処理を模式的に示した図である。図示する例では、サーバ１号機３ＡのＤＢ操作部３２は、業務処理部３１からの書き込み要求（ｗｒｉｔｅ要求）を受け付けると、サーバ１号機にマウントされた１号機用ディスク４Ａの処理ログテーブル４２Ａ（自データベース）にアクセスし、所定のデータを書き込む。同様に、サーバ２号機３ＢのＤＢ操作部３２は、業務処理部３１からの書き込み要求を受け付けると、サーバ２号機にマウントされた２号機用ディスク４Ｂの処理ログテーブル４２Ｂ（自データベース）にアクセスし、所定のデータを書き込む。
【００２３】
また、サーバ１号機３ＡのＤＢ操作部３２は、業務処理部３１からビュー４３Ａに対する読み出し要求（ｒｅａｄ要求）を受け付けると、定義情報ファイル４５Ａを参照し、実テーブルである１号機用ディスク４Ａの処理ログテーブル４２Ａおよび２号機用ディスク４Ｂの処理ログテーブル４２Ｂにアクセスする。そして、ＤＢ操作部３２は、ビュー４３Ａ（すなわち、各処理ログテーブル４２Ａ、４２Ｂに格納された全てのデータがマージされた仮想テーブル）の中から、所定のデータを読み出す。
【００２４】
なお、ＤＢ操作部３２は、ビュー４３Ａにアクセスする際に、サーバ２号機３Ｂに接続されている２号機用ディスク４Ｂの処理ログテーブル４２Ｂに対して、ＤＢリンクなどの機能を用いてリモートアクセスする。
【００２５】
同様に、サーバ２号機３ＢのＤＢ操作部３２は、業務処理部３１からビュー４３Ｂに対する読み出し要求を受け付けると、定義情報ファイル４５Ｂを参照し、実テーブルである２号機用ディスク４Ｂの処理ログテーブル４２Ｂおよび１号機用ディスク４Ａの処理ログテーブル４２Ａにアクセスする。そして、ＤＢ操作部３２は、ビュー４３Ｂの中から、所定のデータを読み出す。なお、ＤＢ操作部３２は、ビュー４３Ｂにアクセスする際に、サーバ１号機３Ａに接続されている１号機用ディスク４Ａの処理ログテーブル４２Ａに対して、ＤＢリンクなどの機能を用いてリモートアクセスする。
【００２６】
図３で説明したように、データベースからデータを読み出す際に、あらかじめ定義しておいたビューにアクセスすることにより、実テーブル４２Ｂ、４２Ａから所望のデータを抽出することができる。すなわち、各サーバは、ビューにアクセスすることにより、当該サーバが更新した自データベースのデータだけでなく、他サーバが更新した他データベースのデータを、読み出すことができる。
【００２７】
また、各サーバは、データを読み出す際にビューにアクセスすることにより、他サーバが行った他データベースに対する更新データを、タイムラグを発生させることなく、リアルタイムに取得することができる。
【００２８】
図４は、サーバのアクセス処理のフローチャートである。なお、各サーバのＤＢ定義部３３は、テーブル定義情報およびビュー定義情報を、あらかじめ定義情報ファイル４５Ａ、４５Ｂに定義してあるものとする。また、以下に述べるアクセス処理は、サーバ１号機３Ａを例として説明する。
【００２９】
まず、業務処理部３１は、負荷分散装置２を介して端末１から送信された要求を受け付け、所定の業務処理を行う（Ｓ１１）。ここでは、負荷分散装置２は、端末１が送信した要求を、サーバ１号機３Ａに振り分けるものとする。
【００３０】
そして、業務処理部３１は、業務処理の内容に応じて、データベースへのアクセス要求（操作指示）を生成し、生成したアクセス要求をＤＢ操作部３２に送出する（Ｓ１２）。なお、アクセス要求には、実テーブルである処理ログテーブル４２Ａへの書き込み要求（ｗｒｉｔｅ要求）と、仮想テーブルであるビュー４３Ａへの読み出し要求（ｒｅａｄ要求）とが含まれる。
【００３１】
すなわち、書き込み要求の場合、業務処理部３１は、アクセス先であるサーバ１号機３Ａに接続された処理ログテーブル４２Ａと、当該テーブルに書き込むデータと、を含む書き込み要求を生成する。また、読み出し要求の場合、業務処理部３１は、アクセス先であるビュー４３Ａと、所望のデータを読み出すための検索条件と、を含む読み出し要求を生成する。
【００３２】
そして、ＤＢ操作部３２は、アクセス要求に応じてデータベースを操作する。すなわち、アクセス要求が書き込み要求の場合（Ｓ１３：ＹＥＳ）、ＤＢ操作部３２は、書き込み要求で指定されたデータを、実テーブルである処理ログテーブル４２Ａに書き込む（Ｓ１４）。
【００３３】
一方、読み出し要求の場合（Ｓ１３：ＮＯ）、ＤＢ操作部３２は、読み出し要求で設定されたビュー４３Ａにアクセスする（Ｓ１５）。すなわち、ＤＢ操作部３２は、定義情報ファイル４５Ａに定義されたビュー定義情報を参照し、自処理ログテーブル４２Ａ（自データベース）および他処理ログテーブル４２Ｂ（他データベース）にアクセスする。そして、ＤＢ操作部３２は、ビュー４３Ａの中から（すなわち、自処理ログテーブル４２Ａと他処理ログテーブル４２Ｂに格納された全てのデータの中から）、読み出し要求で指定されたデータを読み出し、読み出したデータを業務処理部３１に送出する（Ｓ１６）。なお、サーバ２号機３Ｂのデータベースへのアクセス処理も、サーバ１号機３Ａと同様である。
【００３４】
以上説明した本実施形態では、各サーバのＤＢ操作部３２は、アクセス要求がデータの読み出し要求の場合、あらかじめ定義しておいたビューにアクセスすることにより、実テーブル４２Ｂ、４２Ａから所望のデータを抽出することができる。すなわち、各サーバは、ビューにアクセスすることにより、当該サーバが更新した自データベースのデータだけでなく、他サーバが更新した他データベースのデータを、読み出すことができる。
【００３５】
また、本実施形態では、各サーバのＤＢ操作部３２は、ビューからデータを読み出す際に、その都度、実テーブル４２Ｂ、４２Ａにアクセスする。このため、他サーバが行った他データベースに対する更新データを、リアルタイムに取得することができる。
【００３６】
また、本実施形態では、データベース間でデータの同期をとるために、各データベースが重複するデータを保持する必要がない。そのため、データベースの容量を削減することができる。
【００３７】
また、本実施形態では、各サーバのＤＢ定義部３３があらかじめビューを定義しておくことで、ビューにアクセスすると自データベースおよび他データベースにアクセスする。すなわち、新たにプログラムを作り込むことなく、より容易に、また、より低コストに、他データベースに対する更新データを取得することができる。
【００３８】
なお、本発明は上記の実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
【図面の簡単な説明】
【００３９】
【図１】本発明の一実施形態が適用された分散システムの全体構成図である。
【図２】各装置のハードウェア構成例を示す図である。
【図３】データベースへのアクセス処理を模式的に示す図である。
【図４】データベースへのアクセス処理のフローチャートである。
【符号の説明】
【００４０】
１：端末、２：負荷分散装置、３Ａ：サーバ１号機、３Ｂ：サーバ２号機、３１：業務処理部、３２：ＤＢ操作部３２、３３：ＤＢ定義部、４Ａ：１号機用ディスク、４１Ａ：データベース、４２Ａ：処理ログテーブル、４３Ａ：ビュー、４５Ａ：定義情報ファイル、４Ｂ：２号機用ディスク、４１Ｂ：データベース、４２Ｂ：処理ログテーブル、４３Ｂ：ビュー、４５Ｂ：定義情報ファイル
【図１】
2007179300.tif 000003
【図２】
2007179300.tif 000004
【図３】
2007179300.tif 000005
【図４】
2007179300.tif 000006