JP2007156916A - データ制御装置、システム、方法、及びプログラム - Google Patents

データ制御装置、システム、方法、及びプログラム Download PDF

Info

Publication number
JP2007156916A
JP2007156916A JP2005352447A JP2005352447A JP2007156916A JP 2007156916 A JP2007156916 A JP 2007156916A JP 2005352447 A JP2005352447 A JP 2005352447A JP 2005352447 A JP2005352447 A JP 2005352447A JP 2007156916 A JP2007156916 A JP 2007156916A
Authority
JP
Japan
Prior art keywords
data control
occupancy
control device
request
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005352447A
Other languages
English (en)
Other versions
JP3823169B1 (ja
Inventor
Atsushi Kaneko
淳 金子
Masamichi Nakada
正通 中田
Shoji Kozai
省治 香西
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
DATA ACCESS KK
Original Assignee
DATA ACCESS KK
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by DATA ACCESS KK filed Critical DATA ACCESS KK
Priority to JP2005352447A priority Critical patent/JP3823169B1/ja
Application granted granted Critical
Publication of JP3823169B1 publication Critical patent/JP3823169B1/ja
Publication of JP2007156916A publication Critical patent/JP2007156916A/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】データの同期維持に関する性能及び信頼性の面でのボトルネックがないデータ制御装置を提供する。
【解決手段】データの同期が維持されるべき複数のデータベースをそれぞれ制御する複数のデータ制御装置の一つに備えられる統合制御部100は、クライアントから発行された第1アクセス要求について前記複数のデータベース間でのデータの同期制御が必要か否かを判断する要求判断部110と、不要と判断された場合、自らのデータベースへ前記第1アクセス要求を発行する単独アクセス部120と、必要と判断された場合、他の全てのデータ制御装置を占有し、前記第1アクセス要求を他の全てのデータ制御装置へ転送すると共に自らのデータベースへ発行する連携マスタ部130と、他のデータ制御装置から転送された第2アクセス要求を自らのデータベースへ発行する連携サービス部150とを備える。
【選択図】図3

Description

データの同期が維持されるべき複数のデータベースをそれぞれ制御する複数のデータ制御装置の一つ、及び前記複数のデータ制御装置から構成されるデータ制御システム等に関し、特にデータの同期を維持するための技術に関する。
従来、分散データベースシステムの構成の一例として2階層構成が広く知られている。2階層構成を採る分散データベースシステムは、典型的には、複数のデータベースをそれぞれ制御する複数のバックエンドサーバと、クライアントからのアクセス要求を前記バックエンドサーバの一つへ転送する一つ以上のフロントエンドサーバと、前記複数のデータベース間でのデータの同期を維持管理するレプリケーションサーバとから構成される。
そのようなデータベースシステムを実現するためのコンピュータソフトウェアの一つにPGClusterがある(例えば非特許文献1を参照)。
図24は、PGClusterを用いて実現される分散データベースシステム9の機器構成の一例を示すブロック図である。分散データベースシステム9は、フロントエンドサーバ91、92、バックエンドサーバ61、62、63、データベース66、67、68、レプリケーションサーバ71、及びネットワーク80から構成される。なお、データベース66、67、68は、バックエンドサーバ61、62、63によって制御され、バックエンドサーバ61、62、63にそれぞれ含まれるとしてもよい。
フロントエンドサーバ91、92は、二重化されていて、何れか一方が動作し、図示しないクライアントから発行されたアクセス要求を、例えばアクセス負荷の分散を図って、バックエンドサーバ61、62、63の一つへ転送する。
バックエンドサーバ61、62、63は、それぞれ並列に動作し、フロントエンドサーバ91、92からアクセス要求を受信すると、そのアクセス要求についてデータベース間でのデータの同期制御が必要か否かを判断する。この判断は、例えば、そのアクセス要求がデータの参照のみに関するものか、データの追加、更新、又は削除に関するものかによって行われる。
そして、不要と判断されると、そのアクセス要求を自らのデータベースのみで実行し、アクセス要求を発行したクライアントへフロントエンドサーバを介して実行結果を返却する。必要と判断されると、そのアクセス要求をレプリケーションサーバ71へ転送する。
レプリケーションサーバ71は、アクセス要求を受信すると、そのアクセス要求をバックエンドサーバ61、62、63へ送信する。バックエンドサーバ61、62、63は、レプリケーションサーバ71からアクセス要求を受信すると、そのアクセス要求を自らのデータベースでそれぞれ実行し、実行結果をレプリケーションサーバ71へ返却する。レプリケーションサーバ71は、全てのバックエンドサーバから実行結果を受信すると、アクセス要求を転送したバックエンドサーバへその実行結果を送信する。実行結果を受信したバックエンドサーバは、アクセス要求を発行したクライアントへフロントエンドサーバを介してその実行結果を返却する。
この構成によれば、データの同期(ここでは特に、データ内容の一致を意味する)を維持するために全てのバックエンドサーバで実行されるべきアクセス要求の実行順序が、レプリケーションサーバ71ただ一箇所で管理される。レプリケーションサーバ71は、例えば図示しないデータキューを用いて、バックエンドサーバ61、62、63から受信したアクセス要求をそのデータキューに受信順に蓄積すると共に、蓄積順にアクセス要求を取り出して全てのバックエンドサーバへ送信することによって、アクセス要求の実行順序の管理を行う。
その結果、全てのバックエンドサーバにおいて、レプリケーションサーバ71によって管理される順序でアクセス要求が実行されるので、バックエンドサーバ間に実行順序の違いによる実行結果の不一致が生じることがなく、全てのデータベースでデータの同期が維持される。
このようにして、従来のデータベースシステムは、アクセス負荷の分散とデータの同期の維持とを達成している。
PGClusterのWEBページ、http://pgcluster.projects.postgresql.org/jp/
しかしながら、従来のデータベースシステムには、次のような問題がある。
第1に、アクセス要求の実行順序を管理するための負荷が一つのレプリケーションサーバに集中するという問題がある。この問題のため、システム全体の性能に見合う高価で高性能なレプリケーションサーバを導入するか、システム全体の性能をレプリケーションサーバの性能に見合うよう制限することを余儀なくされる。すなわち、システムのスケーラビリティの実現が困難となる。
第2に、レプリケーションサーバが故障した場合、データの同期が失われるという問題がある。この問題を回避すべく、例えば、レプリケーションサーバを二重化するか、レプリケーションサーバの故障中には唯一の代表データベースを更新することが考えられるが、前者の場合、システムがさらに高価にならざるを得ず、また後者の場合、復旧時にその代表データベースの内容を他のデータベースに複写することによってデータの同期を回復するという煩雑な処理が必要になる。
本発明は、上記の問題に鑑みてなされたものであり、データの同期維持に関する性能及び信頼性の面でのボトルネックがなく、またデータの同期を一時的に停止した後、迅速に回復可能なデータ制御装置、及びデータ制御システムを提供することを目的とする。
上記課題を解決するため、本発明のデータ制御装置は、データの同期が維持されるべき複数のデータベースをそれぞれ制御する複数のデータ制御装置の一つであって、クライアントから発行された第1のアクセス要求を受信すると、前記第1のアクセス要求について前記複数のデータベース間でのデータの同期制御が必要か否かを判断する要求判断手段と、不要と判断された場合、自らのデータベースに対して前記第1のアクセス要求を発行する単独アクセス手段と、必要と判断された場合、他の全てのデータ制御装置の占有を試み、前記占有に成功した場合、他の全てのデータ制御装置へ前記第1のアクセス要求を転送すると共に、自らのデータベースに対して前記第1のアクセス要求を発行する連携マスタ手段と、他のデータ制御装置から転送された第2のアクセス要求を受信すると、自らのデータベースに対して前記第2のアクセス要求を発行する連携サービス手段とを備える。
また、前記データ制御装置は、さらに、自らを占有しているデータ制御装置を示す占有受付情報を保持している占有受付レジスタを備え、前記連携マスタ手段は、自データ制御装置を示すように前記占有受付情報を更新した後、他の全てのデータ制御装置へ自データ制御装置を識別する第1の占有要求を送信することによって前記占有を試み、他の全てのデータ制御装置から占有受諾応答が受信された場合に前記占有に成功したと判断し、前記連携サービス手段は、他のデータ制御装置を識別する第2の占有要求を受信したとき、前記占有受付情報がどのデータ制御装置からも占有されていないことを示す場合、前記第2の占有要求によって識別されるデータ制御装置を示すように前記占有受付情報を更新すると共に占有受諾応答を返信し、その他の場合、占有拒否応答を返信してもよい。
この構成によれば、複数のデータベース間でのデータの同期制御が必要となるアクセス要求は、他の全てのデータ制御装置の占有に成功してから初めて実行されるため、そのアクセス要求は全てのデータ制御装置で確実に実行される。また、前記占有受付情報が占有状態を表す間は、新たな占有要求は拒否されるため、複数のアクセス要求がデータ制御装置ごとに異なる順序で実行される事態が避けられる。その結果、データ制御装置間に実行順序の違いによる実行結果の不一致が生じることがなく、全てのデータベースでデータの同期が維持される。
このように、データの同期の維持そのものが分散処理されることで、従来のレプリケーションサーバを省略できる。これにより、データの同期維持に関する性能及び信頼性の面でのボトルネックがシステムから排除され、システムのスケーラビリティの具現化が容易となる。
また、前記データ制御装置によって受信される占有拒否応答は、前記占有拒否応答を送信したデータ制御装置において継続中の占有を識別し、前記占有受付レジスタは、さらに、自データ制御装置を含む全てのデータ制御装置に共通して直前に受け入れられた占有を識別する直前占有情報を保持し、前記連携マスタ手段は、前記第1の占有要求に対して占有拒否応答が受信された場合、前記受信された占有拒否応答によって識別される占有が前記直前占有情報によって識別される占有と同一であれば、前記占有拒否応答を送信したデータ制御装置へ前記第1の占有要求を再送信してもよい。
この構成によれば、自データ制御装置において直前に処理されたアクセスが先方のデータ制御装置においてまだ処理中であるために新たな占有要求が拒否された場合に、直ちに占有失敗とせず占有要求をリトライすることが可能となる。これにより、データ制御装置間での処理タイミングの差異が吸収され、システムのスループットが向上する。
また、前記データ制御装置によって受信される占有拒否応答は、前記占有拒否応答を送信したデータ制御装置を占有しているデータ制御装置を示すと共に、前記複数のデータ制御装置には優先順位が定められており、前記連携マスタ手段は、前記第1の占有要求に対して占有拒否応答が受信された場合、前記受信された占有拒否応答によって示されるデータ制御装置である競合データ制御装置の優先順位と自データ制御装置の優先順位との比較に基づいて、占有の変更先となるべき優先データ制御装置を特定し、自データ制御装置から前記特定された優先データ制御装置への変更を示す第1の占有変更を送信すると共に、前記優先データ制御装置を示すように前記占有受付情報を更新し、前記連携サービス手段は、第2の占有変更を受信すると、前記第2の占有変更によって示される変更前のデータ制御装置と前記占有受付情報によって示されるデータ制御装置とが一致する場合、前記第2の占有変更によって示される変更後のデータ制御装置を示すように前記占有受付情報を更新すると共に、前記変更後のデータ制御装置へ占有受諾応答を送信してもよい。
この構成によれば、競合データ制御装置が存在することを知ったデータ制御装置は、自らの占有を優先順位がより高い競合データ制御装置へと積極的に明け渡すことができるので、競合の解消を、例えば所定時間待ってリトライするといった簡略な方法に比べて、より迅速かつ円滑に行うことができる。
また、前記連携マスタ手段は、前記第1の占有要求に対して他の全てのデータ制御装置から占有許諾応答又は占有拒否応答が受信された後、自データ制御装置及び前記各競合データ制御装置がそれぞれ自分以外のデータ制御装置を占有しているか否かを、受信された占有許諾応答又は占有拒否応答に基づいて判断し、自分以外のデータ制御装置を占有していない状態の前記複数のデータ制御装置を前記優先順位で並べ、さらにその高位に、自分以外のデータ制御装置を占有している状態の前記複数のデータ制御装置を並べて定義される順位に従って、自データ制御装置よりも高位の競合データ制御装置を前記優先データ制御装置として特定してもよい。
この構成によれば、自分以外のデータ制御装置を占有している状態のデータ制御装置の占有変更先としての優先順位を、そうでない状態のデータ制御装置よりも高めることによって、占有に成功する可能性が高いデータ制御装置へ優先的に占有を変更するので、競合の解消をより少ない手間で行うことができる。
また、前記連携マスタ手段は、自らの占有を前記優先データ制御装置へ変更した後、変更前の自らの占有を再度試みてもよい。
この構成によれば、占有変更が行われた場合に、占有に失敗したことを直ちにクライアントへ通知するのではなく、変更前の自らの占有をデータ制御装置自身が再試行することができるので、クライアントの処理を軽減できる。
また、前記連携マスタ手段、及び前記連携サービス手段は、送信されるデータの多寡、再送信か否か、送信されるデータが応答か否かのうちの少なくとも一つに応じて、他のデータ制御装置との通信に用いる通信プロトコルを変更してもよい。
この構成によれば、前記の条件の少なくとも一つに応じて、例えばTCPプロトコルとUDPプロトコルとを切り替えることによって、通信のオーバヘッドと信頼性との良好なトレードオフを図ることができる。
また、前記データ制御装置は、さらに、データ受信の有無を所定時間監視することによって他のデータ制御装置の故障を検出するサーバ状態管理手段を備え、前記連携マスタ手段は、故障と検出されたデータ制御装置を除外して、前記占有の成否を判断してもよい。
この構成によれば、故障したデータ制御装置が自動的にシステムから切り離されるので、一つのデータ制御装置の故障がシステム全体に及ぼす影響が軽減され、サービス無中断の運用が可能となる。
また、前記データ制御装置は、さらに、特定の動作モードにおいて一つ以上のアクセス要求を蓄積し、前記動作モードが解除されるとき、前記アクセス要求を蓄積された順に取り出して自らのデータベースに対して発行する保留制御手段を備え、前記連携サービス手段は、前記動作モードにおいて、前記第2のアクセス要求を自らのデータベースに対して発行する代わりに前記保留制御手段に蓄積してもよい。
この構成によれば、前記データ制御装置は、前記動作モードにおいては、データの同期の維持に関する処理を通常に実行しながら、前記第2のアクセス要求を蓄積するので、一つ以上のアクセス要求をデータの同期維持に必要な実行順序どおりに蓄積することが可能である。
前記動作モードが解除される際には、そのように蓄積された一つ以上のアクセス要求を単に蓄積された順に実行することによって、迅速にデータの同期を回復できる。そして、データの同期回復のために他のデータベースからデータを複写する必要がないため、データベースの規模が大きいほど、データの同期回復の迅速化に大きな効果が得られる。
これにより、例えばデータベースのメンテナンスを行うためにデータの更新を一時的に保留しその後回復するような場合に、極めて高い実用的価値が発揮される。
また、前記データ制御装置は、前記複数のデータ制御装置のみを接続する専用ネットワークへの接続手段を備えてもよい。
この構成によれば、データの同期維持に関する通信トラフィックを前記専用ネットワークに分離できるので、フロントエンドサーバやクライアントとの接続に用いられるネットワークの負荷の軽減に役立つ。
また、本発明は、前述したようなデータ制御装置として実現できるだけでなく、複数のデータベースについてそれぞれ前記データ制御装置を備えるデータ制御システムとして実現することもできる。また、前記データ制御装置が備える特徴的な手段によって実行される処理をステップとするデータ制御方法として実現することも、さらにはコンピュータプログラムとして実現することもできる。
本発明のデータ制御装置によれば、データの同期の維持そのものが分散処理されるので、従来のレプリケーションサーバを省略できる。これにより、システムからデータの同期維持に関する性能及び信頼性の面でのボトルネックとなるレプリケーションサーバが排除され、システムのスケーラビリティの具現化が容易となる。
また、故障したデータ制御装置を自動的にシステムから切り離し、一つのデータ制御装置の故障がシステム全体に及ぼす影響を軽減することも可能となる。
(第1の実施の形態)
本発明の第1の実施の形態におけるデータ制御装置及びデータ制御システムについて、図面を参照しながら詳細に説明する。
(全体構成)
図1は、本発明の第1の実施の形態におけるデータ制御システム10を含む分散データベースシステムの一例を示す機器構成図である。分散データベースシステム1は、背景技術の項で説明した2階層構成による典型的な分散データベースシステムから、レプリケーションサーバを省いて構成される。図1には、データ制御システム10と共に、フロントエンドサーバ41、42、…、4m、ネットワーク20、データベース31、32、…、3nが示される。
データ制御システム10は、データベース31、32、…、3nへのアクセスを制御すると共に、データの同期を維持管理するシステムであって、バックエンドサーバ11、12、…、1nから構成される。ここで、バックエンドサーバ11、12、…、1nが、請求項に言うデータ制御装置の一例である。
フロントエンドサーバ41、42、…、4mは、独立して並列に動作し、図示しないクライアントから発行されたアクセス要求をバックエンドサーバ11、12、…、1nの一つへ、例えば負荷分散を図って、転送するサーバ機能であり、例えばそれぞれ独立したコンピュータシステムを用いて実現される。このアクセス要求は、一例としてSQL(Structured Query Language)で記述されていてもよい。
バックエンドサーバ11、12、…、1nは、並列に動作し、フロントエンドサーバ41、42、…、4mからアクセス要求を受信すると、データの同期が維持されるように連携してデータベース31、32、…、3nへのアクセス処理を行うサーバ機能であり、例えばそれぞれ独立したコンピュータシステムを用いて実現される。
ここで、バックエンドサーバ11、12、…、1nには、固有のサーバIDと優先順位とが定められていて、バックエンドサーバ11、12、…、1nは、各バックエンドサーバのサーバIDと優先順位とを予め知っているものとする。
データベース31、32、…、3nは、独立して並列に動作し、アクセス要求に応じてデータを蓄積し、操作し、出力する一般的なデータベース機能であり、例えばそれぞれ独立したコンピュータシステムを用いて実現されるか、バックエンドサーバ11、12、…、1nと同一のコンピュータシステムを用いて実現される。データベース31、32、…、3nが、それぞれバックエンドサーバ11、12、…、1nの一部分として実現される場合も、本発明に含まれる。
バックエンドサーバ12、…、1nはバックエンドサーバ11と同様であり、またデータベース32、…、3nはデータベース31と同様である。以下、バックエンドサーバ11とデータベース31とについて代表して説明する。
(バックエンドサーバ)
図2は、バックエンドサーバ11の機能的な構成の一例を示すブロック図である。図2には、バックエンドサーバ11と共に、データベース31が示される。
バックエンドサーバ11は、統合制御部100、ネットワークアダプタ部200、フロントエンド通信制御部210、バックエンド通信制御部220、及びタイマ部400から構成される。
ネットワークアダプタ部200は、ネットワーク20に物理的に接続し、フロントエンド通信制御部210は、ネットワークアダプタ部200を介してフロントエンドサーバ41、42、…、4mとの通信を実行し、バックエンド通信制御部220は、ネットワークアダプタ部200を介してバックエンドサーバ12、…、1nとの通信を実行する。この通信は、例えば、IP(Internet Protocol)上のTCP(Transmission Control Protocol)及びUDP(User Datagram Protocol)の中から後述する基準で選択される一つを用いて行われるとしてもよい。
タイマ部400は、所定の時間の経過を統合制御部100へ通知する。
統合制御部100は、バックエンドサーバ11の全体の動作を制御する。統合制御部100は、例えば、バックエンドサーバ11を実現するコンピュータシステムが所定のプログラムを実行することによって果たされるソフトウェア機能であるとしてもよい。
(データベース)
データベース31は、データ記憶部300、及びデータベース制御部310から構成される。データベース31は、周知の技術を適宜用いて実現されるものとし、本発明はその内容を限定しないが、一例を挙げれば、データ記憶部300は、例えばハードディスク装置であり、データを物理的に記憶し、データベース制御部310は、例えばSQLインタプリタ機能であり、アクセス要求に従ってデータ記憶部300の内容を操作する。
(統合制御部)
図3は、統合制御部100の機能的な構成の一例を示すブロック図である。
統合制御部100は、要求判断部110、単独アクセス部120、連携マスタ部130、占有受付レジスタ140、及び連携サービス部150から構成される。
要求判断部110は、フロントエンドサーバ41、42、…、4mからフロントエンド通信制御部210を介してクライアントによって発行されたアクセス要求を受信すると、そのアクセス要求についてシステム全体でのデータ同期制御が必要か、言い換えれば、データベース31のみでそのアクセス要求を実行したとすれば他のデータベースとのデータの同期が失われるか否かを判断する。要求判断部110は、この判断を、例えば従来と同様に、そのアクセス要求がデータの参照のみに関するものか、データの追加、更新、又は削除に関するものかによって行ってもよい。
そして、システム全体でのデータ同期制御が必要でない(つまり、データベース31のみでそのアクセス要求を実行してもデータの同期が失われない)と判断された場合、単独アクセス部120を並列起動してそのアクセス要求を引き渡す。データ同期制御が必要であると判断された場合、連携マスタ部130を並列起動してそのアクセス要求を引き渡す。
単独アクセス部120は、要求判断部110から引き渡されたアクセス要求をデータベース制御部310へ発行する。そして、データベース制御部310から実行結果を受け取ると、アクセス要求の発行元であるクライアントへフロントエンド通信制御部210を介してその実行結果を返却する。単独アクセス部120そのものは、本発明の主要部ではないため、これ以上詳しく説明しない。
連携マスタ部130は、まず、要求判断部110から引き渡されたアクセス要求について他の全てのバックエンドサーバ12、…、1nの占有を試みる。この占有の詳細については、後述する。連携マスタ部130は、占有に成功した場合、そのアクセス要求を他の全てのバックエンドサーバ12、…、1nへバックエンド通信制御部220を介して転送すると共に、データベース制御部310へ発行する。
バックエンドサーバ12、…、1nにおける連携サービス部は、そのアクセス要求を受信すると、自らのデータベース制御部へそのアクセス要求を発行し、自らのデータベースでの実行を終えると、アクセス応答を返信する。
連携サービス部150は、このアクセス要求に応じた処理に代表されるように、他のバックエンドサーバから受信されるデータに応じた処理を行う。連携サービス部150は、このアクセス要求に応じた処理の他に、他のバックエンドサーバからの占有要求、占有変更、占有応答、及びアクセス応答に応じた処理を行うが、これらの処理については、それぞれ以下の関連する箇所で説明する。
なお、これらの処理は、データを受信する処理によって、受信されたデータに応じて並列起動されるとしてもよい。
(占有受付情報及び直前占有情報)
占有受付レジスタ140は、占有受付情報、及び直前占有情報を保持している。占有受付情報、及び直前占有情報は、バックエンドサーバ11を占有しているバックエンドサーバと、その占有に関係するアクセス要求とを示し、占有の制御に用いられる。占有受付情報は、バックエンドサーバ11がどのバックエンドサーバからも占有されていないことを示す空値を取り得るものとする。
図4は、占有受付レジスタ140に保持されている占有受付情報、及び直前占有情報の一例を示す図である。占有受付情報は、要求サーバID141、及び要求番号142を表し、直前占有情報は、要求サーバID143、及び要求番号144を表す。
要求サーバID141はバックエンドサーバ11を占有しているバックエンドサーバを識別するサーバIDであり、要求番号142はそのバックエンドサーバにおいて個々のアクセス要求に一意に付与される番号である。
要求サーバID141と要求番号142との組み合わせを要求IDと呼ぶ。要求IDは、アクセス要求をデータ制御システム10の全体で一意に識別する。
占有受付情報は、バックエンドサーバ11がどのバックエンドサーバからも占有されていないことを、空値(例えばNULL、’OFF’など)で表す。
直前占有情報は、占有受付情報によって示される占有要求が全てのバックエンドサーバによって受け入れられたことが分かったとき、その占有受付情報で更新される。これにより、直前占有情報は、バックエンドサーバ11を含む全てのバックエンドサーバに共通して直前に受け入れられた占有を識別する。
なお、アクセス要求の内容そのもの(例えばSQLで記述されるクエリ)は、要求IDと対応付けて、図示しない記憶領域に記憶されるものとする。
(連携マスタ部と占有一覧情報)
図5は、連携マスタ部130の機能的な構成の一例を示すブロック図である。
連携マスタ部130は、採番部131、占有試行部132、占有一覧テーブル133、及び要求発行部138から構成される。
採番部131は、要求判断部110からアクセス要求を受け取ると、バックエンドサーバ11で一意の番号を生成し、受け取ったアクセス要求と生成した番号とを占有試行部132へ引き渡す。採番部131は、例えばカウンタであり、アクセス要求を受け取るたびにカウンタをインクリメントすることによって、一意の番号を生成してもよい。
占有試行部132は、バックエンドサーバ11を識別するサーバIDと採番部131から受け取った番号とからなる要求IDで占有受付レジスタ140の占有受付情報を更新し、その要求IDを含む占有要求を送信することによって、他の全てのバックエンドサーバ12、…、1nの占有を試みる。
バックエンドサーバ12、…、1nにおける連携サービス部は、占有要求を受信すると、自らの占有受付レジスタに空値が保持されている(つまり、どのバックエンドサーバからも占有されていない)場合、受信された占有要求に含まれる要求IDでその占有受付レジスタの占有受付情報を更新した後、占有応答を返信する。
この占有応答は、対象要求ID、応答サーバID、及び受付要求IDを含む(図示省略)。ここで、対象要求IDは対応する占有要求に含まれていた要求IDであり、応答サーバIDはその占有応答を送信したバックエンドサーバを識別するサーバIDであり、受付要求IDはそのバックエンドサーバの占有受付レジスタに保持されている占有受付情報である。
説明の便宜上、対象要求IDと受付要求IDとが等しい占有応答を占有受諾応答と呼び、対象要求IDと受付要求IDとが異なる占有応答を占有拒否応答と呼ぶ。占有応答に、例えば'OK'、'NG'といった値を含めることによって、占有受諾応答と占有拒否応答との区別を明示してももちろん構わない。
連携サービス部150は、バックエンドサーバ12、…、1nから返信される占有応答を受信し、占有一覧テーブル133に収集する。
占有一覧テーブル133は、受信された占有応答を占有一覧情報として保持する。
図6は、占有一覧テーブル133に保持される占有一覧情報の一例を示す図である。占有一覧情報は、占有要求ごと、バックエンドサーバごとに、占有要求に対してバックエンドサーバから返される占有応答について、対象要求ID134、応答サーバID135、及び受付要求ID136を表す。
図6には、s2及びs3なるサーバIDで識別される2つのバックエンドサーバが他の全てのバックエンドサーバである場合に、対象要求IDid1に関する占有要求に対して、両方のバックエンドサーバから占有受諾応答が収集された占有成功例が示され、対象要求IDid2に関する占有要求について、s3で識別されるバックエンドサーバから占有拒否応答が収集された占有失敗例が示される。
再び図5を参照して、占有試行部132は、所定の時間内に他の全てのバックエンドサーバから占有受諾応答が収集された場合に占有成功と判断する。
要求発行部138は、占有成功と判断されると、他の全てのバックエンドサーバ12、…、1nへバックエンド通信制御部220を介して対象要求IDで識別されるアクセス要求を転送すると共に、そのアクセス要求をデータベース制御部310へ発行する。
バックエンドサーバ12、…、1nにおける連携サービス部は、そのアクセス要求を受信すると、自らのデータベース制御部へそのアクセス要求を発行する。そして、自らのデータベースにおける実行が完了すると、実行結果を示すアクセス応答を返信する。
連携サービス部150は、そのアクセス応答を受信し、占有一覧情報の対応レコードに、例えば図示しないフラグ情報を用いて、アクセス応答が返されたことを記録する。
要求発行部138は、他の全てのバックエンドサーバ12、…、1nと、データベース制御部310とからアクセス応答が返ることでシステム全体でのアクセス完了を知り、クライアントからのアクセス要求を転送したフロントエンドサーバへフロントエンド通信制御部210を介してアクセス結果を返却する。
また、占有試行部132は、一つ以上の占有拒否応答が収集された場合、次のようにして競合の解消を図る。
まず、収集された占有拒否応答に含まれる受付要求IDが受付占有レジスタ140に保持されている直前占有情報と同一である場合(つまり、バックエンドサーバ11を含む全てのバックエンドサーバによって直前に受け入れられた占有が、その占有拒否応答を返したバックエンドサーバではまだ解除されていない場合)には、そのバックエンドサーバとの真の競合は生じていないと考えて、占有試行部132は、その占有拒否応答を送信したバックエンドサーバへ占有要求を再送(つまり、占有をリトライ)して、占有試行を続行する。
次に、他の全てのバックエンドサーバ12、…、1nから占有応答が収集され、その中の一つ以上が占有拒否応答である場合、占有拒否応答に含まれる受付要求IDで識別されるバックエンドサーバ(これを競合サーバと呼ぶ)の優先順位とバックエンドサーバ11の優先順位との比較に基づいて、自らの占有を変更すべき優先サーバを特定する。
この比較は、バックエンドサーバ12、…、1n間に定められている優先順位に、さらに各バックエンドサーバが自分以外のバックエンドサーバを占有しているか否かを考慮に入れた順位を用いて行われる。
そのような順位の具体例として、自分以外のバックエンドサーバを占有していない状態のバックエンドサーバ12、…、1nを前記優先順位で並べ、さらにその高位に、自分以外のバックエンドサーバを占有している状態のバックエンドサーバ12、…、1nを前記優先順位で並べて定義される順位を用いることができる。
占有試行部132は、この順位に従って、自分以外のバックエンドサーバを占有している状態のバックエンドサーバをそうでないバックエンドサーバよりも優先して、バックエンドサーバ11よりも高位の競合サーバの中で最高位の競合サーバを前記優先サーバとして特定する。
なお、バックエンドサーバ11が自分以外のバックエンドサーバを占有しているか否かは、一つ以上の占有許諾応答が収集されるか否かによって判断でき、また、他の各バックエンドサーバ12、…、1nが自分以外のバックエンドサーバを占有しているか否かは、受信された占有拒否応答にその占有拒否応答を返したバックエンドサーバ以外のバックエンドサーバを識別する受付要求IDが含まれるか否かによって判断することができる。
そして、バックエンドサーバ11から前記特定された優先サーバへの変更を示す占有変更を送信すると共に、優先サーバによる占有を示す占有拒否応答に含まれる受付要求IDで占有受付レジスタ140の占有受付情報を更新する。
送信される占有変更は、具体的に、変更前に関して占有受付レジスタ140に保持されている要求IDを含み、変更後に関して優先サーバからの占有拒否応答に含まれる受付要求IDを含んでもよい。
バックエンドサーバ12、…、1nにおける連携サービス部は、占有変更を受信すると、受信された占有変更に含まれる変更前に関する要求IDと、自らの占有受付レジスタに保持されている要求受付情報の要求IDとが一致する場合、変更前の正真のバックエンドサーバからの占有変更であると判断して、受信された占有変更に含まれる変更後に関する受付要求IDで自らの占有受付レジスタを更新し、その要求IDで識別されるバックエンドサーバへ占有受諾応答を送信する。
他方、バックエンドサーバ11よりも高位の競合サーバがない場合には、占有試行部132は何もせず、競合サーバにおける占有試行部が前述した処理を行うことによって競合が解消されるのを待つ。
占有試行部132は、所定の時間内に占有成功も占有変更もできなかった場合に占有失敗と判断する。
要求発行部138は、占有失敗と判断されると、クライアントからのアクセス要求を転送したフロントエンドサーバへフロントエンド通信制御部210を介してアクセス失敗を通知する。
(主要部の詳細な動作)
以下、本発明の主要部の詳細な動作についてフローチャートを参照しながら説明する。
図7は、統合制御部100によって行われる統合制御処理の一例を示すフローチャートである。
統合制御部100は、クライアントから発行されたアクセス要求を受信すると(S101)、データベース31のみでそのアクセス要求を実行したとすれば他のデータベースとのデータの同期が維持されるか否か、言い換えれば、システム全体でのデータ同期制御が必要かを要求判断部110で判断する。そして、システム全体でのデータ同期制御が必要でないと判断された場合(S102でNO)、単独アクセス部120へそのアクセス要求を引き渡し(S103)、必要であると判断された場合(S102でYES)、連携マスタ部130へそのアクセス要求を引き渡す(S200)。
図8は、連携マスタ部130によって行われる連携マスタ処理の一例を示すフローチャートである。
連携マスタ部130は、要求判断部110からアクセス要求を受け取ると、占有受付レジスタ140の占有受付情報が空値になるまで(つまり、占有から解かれるまで)待って(S210)、バックエンドサーバ11を識別するサーバIDと採番部131で生成された番号とからなる要求IDを、占有受付情報として占有受付レジスタ140に登録する(S202)。
そして、占有試行処理を行い(S300)、占有に成功した場合には(S203で成功)、他のバックエンドサーバ12、…、1nへそのアクセス要求を転送すると共に(S204)、占有受付レジスタ140の直前占有情報を占有受付情報で更新する(S205)。この更新後の直前占有情報は、バックエンドサーバ11が要求して、全てのバックエンドサーバに共通して受け入れられた占有を識別する。
そして、占有受付情報を空値で更新することにより削除し(S206)、そのアクセス要求をデータベース制御部310へ発行してデータベース31をアクセスする(S207)。
さらに、他のバックエンドサーバ12、…、1nと、データベース制御部310とからアクセス応答が返るのを待って(S208)、クライアントからのアクセス要求を転送したフロントエンドサーバへアクセス結果を送信する(S209)。
また、占有に失敗した場合には(S203で失敗)、クライアントからのアクセス要求を転送したフロントエンドサーバへアクセス失敗を送信する(S209)。
また、占有を変更した場合には(S203で変更)、S201へ戻って変更前の自らの占有を再度試みる。
図9は、占有試行部132によって行われる占有試行処理の一例を示すフローチャートである。
占有試行部132は、占有受付レジスタ140に保持されている占有受付情報で示される要求IDを含む占有要求を他の全てのバックエンドサーバ12、…、1nへ送信し(S301)、タイマ部400をスタートさせる(S302)。この占有要求は、ブロードキャストされてもよく、またそれぞれのバックエンドサーバへ個別に送信されてもよい。
占有試行部132は、占有一覧テーブル133の占有一覧情報から、前記占有受付情報と一致する対象要求IDを持つ占有応答を参照し(S303)、参照された占有応答の中に、占有受付レジスタ140の直前占有情報と同一の受付要求IDを持つ占有拒否応答があれば(S304でYES)、その占有拒否応答を送信したバックエンドサーバへ前記占有要求を再送信する(S305)。
占有試行部132は、他の全てのバックエンドサーバから占有応答が収集された後(S311でYES)、収集された占有応答が全て占有受諾応答なら(S312でYES)、占有成功を示して連携マスタ処理へ戻る(S313)。
収集された占有応答の一つ以上が占有拒否応答なら(S312でNO)、占有試行部132は、前述したように、バックエンドサーバ間の優先順序にさらに各バックエンドサーバが自分以外のバックエンドサーバを占有しているか否かを考慮に入れた順位を用いて、競合サーバの中から自らの占有を変更すべき優先サーバを特定し(S314でYES)、バックエンドサーバ11から前記特定された優先サーバへの変更を示す占有変更を送信する(S321)。この占有変更は、バックエンドサーバ11へ占有受諾応答を返信したバックエンドサーバへ個別に送信されてもよく、またブロードキャストされてもよい。
そして、占有受付レジスタ140の占有受付情報を更新し(S322)、占有変更を示して連携マスタ処理へ戻る(S323)。
占有試行部132は、全てのバックエンドサーバから占有応答が収集されていないか(S311でNO)、特定すべき優先サーバ(つまり、バックエンドサーバ11よりも上位の競合サーバ)がなければ(S314でNO)、タイマ部400を参照する。タイムアウトしていれば(S315でYES)、占有受付レジスタ140の占有受付情報を空値で更新することによって削除し(S331)、占有失敗を示して連携マスタ処理へ戻る(S332)。タイムアウトしていなければ(S315でNO)、S303へ戻って処理を継続する。
図10は、連携サービス部150によって行われる連携サービス処理の一例を示すフローチャートである。
連携サービス部150は、他のバックエンドサーバからデータを受信すると(S401)、受信されたデータの種類を判断する。
受信されたデータが占有要求である場合(S402で占有要求)、次の処理を行う。
占有受付レジスタ140の占有受付情報が空値であれば(S411でYES)、受信された占有要求に含まれる要求IDを占有受付情報として占有受付レジスタ140に登録し(S413)、占有受諾応答を返信する(S414)。
また、占有受付情報と受信された占有要求に含まれる要求IDとが同一である、つまり現在受け入れている占有の再要求を受信した場合にも(S412でYES)、占有受諾応答を返信する(S414)。
その他の場合には(S412でNO)、占有拒否応答を返信する(S415)。
受信データがアクセス要求である場合(S402でアクセス要求)、次の処理を行う。
受信されたアクセス要求に含まれる要求IDと占有受付レジスタ140の占有受付情報の要求IDとが一致するならば(S421でYES)、直前占有情報を占有受付情報で更新する(S422)。この更新後の直前占有情報は、バックエンドサーバ11以外のバックエンドサーバが要求して、バックエンドサーバ11を含む全てのバックエンドサーバに共通して受け入れられた占有を識別する。
その後、占有受付情報を空値で更新することによって削除し(S423)、受信されたアクセス要求をデータベース制御部310へ発行することによってデータベース31において実行し(S433)、アクセス要求を送信したバックエンドサーバへアクセス応答を返信する(S434)。
受信されたアクセス要求に含まれる要求IDと占有受付レジスタ140の占有受付情報の要求IDとが一致しなければ(S421でNO)、何もしない。
受信データが占有応答、又はアクセス応答である場合(S402で占有応答、アクセス応答)、占有要求に対してバックエンドサーバから初めて返される占有応答ならその占有応答を占有一覧テーブル133の占有一覧情報へ追加登録する。また、同じ占有要求に対して同じバックエンドサーバから二度目以降に返される占有応答か、アクセス応答なら占有一覧情報の対応するレコードを更新する(S441)。
受信データが占有変更である場合(S402で占有変更)、受信された占有変更に含まれる変更前に関する要求IDと、占有受付レジスタ140に保持されている占有受付情報とが一致するなら(S451でYES)、受信された占有変更に含まれる要求IDで占有受付レジスタ140の占有受付情報を更新し(S452)、その要求IDで識別されるバックエンドサーバへ占有受諾応答を送信する(S453)。
(連携動作の典型例)
以下、連携動作の典型例についてシーケンスチャートを参照しながら説明する。
図11は、通常のデータ同期動作の一例を示すシーケンスチャートである。図11に表される矢印はデータフローを表し、それぞれのデータフローには、図7から図10のフローチャートに示される対応ステップの符号が付される。同一のステップに対応する複数のデータフローは、符号に添えた英字で区別される。
図11には、どのバックエンドサーバも占有されていない状態において、バックエンドサーバ11が、システム全体でのデータの同期制御が必要と判断されたアクセス要求を、他のバックエンドサーバ12〜1nを占有して実行する例が示される。
この例では、まず全てのバックエンドサーバの占有受付レジスタに、そのアクセス要求に対応する占有要求に含まれる要求IDが占有受付情報として登録され、次に他の全てのバックエンドサーバ12、…、1nからの占有受諾応答がバックエンドサーバ11に収集された後、バックエンドサーバ11からアクセス要求が発せられ、全てのバックエンドサーバが自らのデータベースでそのアクセス要求を実行する。
このように、アクセス要求は全てのバックエンドサーバがバックエンドサーバ11による占有を受諾してから初めて実行されるため、そのアクセス要求は全てのバックエンドサーバで確実に実行される。また、新たなアクセス要求に対応する占有要求が占有中に発生しても拒否されるため、複数のアクセス要求がバックエンドサーバによって異なる順序で実行される事態が避けられる。
このことはどのバックエンドサーバのどのアクセス要求についても成り立つから、この構成によって全てのデータベース間でのデータの同期が維持される。また、データの同期の維持そのものが分散処理されるので、従来のレプリケーションサーバを省略できる。その結果、システムからデータの同期維持に関する性能及び信頼性の面でのボトルネックが排除され、システムのスケーラビリティの具現化が容易となる。
図12は、同一のバックエンドサーバからの占有リトライ動作の一例を示すシーケンスチャートである。図12に表されるそれぞれのデータフローには、図11と同様の符号が付される。
図12には、他のバックエンドサーバの一つ(例えばバックエンドサーバ12)がバックエンドサーバ11から占有されている状態において、バックエンドサーバ11が、システム全体でのデータの同期制御が必要と判断されたアクセス要求を、他のバックエンドサーバ12〜1nを占有して実行する例が示される。
この例では、最初バックエンドサーバ12は、バックエンドサーバ11において直前に処理されたアクセス要求をまだ処理中であり、バックエンドサーバ12の占有受付レジスタには、その直前のアクセス要求に対応する占有要求(不図示)に関する要求IDが登録されている。そのため、バックエンドサーバ11からの新たな占有要求に対して占有拒否応答が返される。なお、直前のアクセス要求に関係するデータフローは点線で示される。
バックエンドサーバ11は、返された占有拒否応答に含まれる受付要求IDが受付占有レジスタ140に保持されている直前占有情報と同一であることによって、自らが直前に受け入れていた占有がバックエンドサーバ12ではまだ解除されていないことを知り、占有要求を再送することによって、バックエンドサーバ12の処理終了後に占有に成功する。その後の動作は、図11と同様である。
このように、占有拒否応答が受信された場合でも、自らが直前に受け入れていた占有に関係する占有拒否である場合には、直ちに占有失敗とするのではなく、占有要求を再送することで、効率的に占有に成功する可能性が高まる。
これにより、バックエンドサーバ間での処理タイミングの差異が吸収され、システムのスループットが向上する。
図13は、競合バックエンドサーバへの占有変更動作の一例を示すシーケンスチャートである。図13に表されるそれぞれのデータフローには、図11と同様の符号が付される。
図13には、自らよりも優先順位の高い競合サーバとの間で占有要求が競合したことを知ったバックエンドサーバ11が、自らの占有をその競合サーバに変更する例が示される。
この例では、バックエンドサーバ11は、受信された占有拒否応答に基づいて優先サーバを特定し、占有受諾応答を返したバックエンドサーバ12に、バックエンドサーバ11からその優先サーバへの変更を示す占有変更を送信すると共に、自らの占有受付レジスタの占有受付情報を占有拒否応答に含まれる受付要求IDで更新することによって、占有者をその優先サーバに変更する。
このように、より優先順位の高いバックエンドサーバとの間で占有要求が競合したことを知ったバックエンドサーバは、自らの占有を優先サーバへと積極的に変更するので、競合の解消を、例えば所定時間待ってリトライするといった簡略な方法に比べて、より迅速かつ円滑に行うことができる。
(通信プロトコルの変更)
フロントエンドサーバとバックエンドサーバとの通信、及びバックエンドサーバ同士の通信を、複数の通信プロトコル(例えばIP上のTCP及びUDP)の中から所定の基準で選択される一つを用いて行ってもよいことを、先に述べた。
以下では、この選択の基準、及び通信プロトコルを変更する意義について説明する。
図14は、通信プロトコル選択処理の一例を示すフローチャートである。
この通信プロトコル選択処理は、TCP及びUDPの一方を選択する処理であり、フロントエンド通信制御部210、及びバックエンド通信制御部220によって実行されてもよく、また、統合制御部100によって実行され、フロントエンド通信制御部210、及びバックエンド通信制御部220は、統合制御部100によって選択された通信プロトコルに従って通信を行ってもよい。
この通信プロトコル選択処理による選択の基準は、送信されるデータの量が予め定められたしきい値を超える場合(S501でYES)、再送信である場合(S502でYES)、及び送信されるデータが応答である場合(S503でYES)にTCPを選択し(S505)、その他の場合にUDPを選択する(S504)というものである。
一般に、UDPによる通信は、TCPによる通信に比べて、一度に通信できるデータ量に制限がある、通信に要する処理オーバヘッドが小さい、データの到達確認機能がなく通信の信頼性が低いといった特性がある。この特性に鑑みて、上記の選択の基準に従って用いる通信プロトコルを変更することにより、通信のオーバヘッドと信頼性との良好なトレードオフを図ることができる。
(第2の実施の形態)
本発明の第2の実施の形態におけるデータ制御装置について、図面を参照しながら詳細に説明する。第2の実施の形態におけるデータ制御装置も、第1の実施の形態と同様に、バックエンドサーバの例を用いて説明される。
第2の実施の形態におけるバックエンドサーバは、第1の実施の形態で説明したバックエンドサーバ11、12、…、1nと比べて、分散データベースシステム1(図1を参照)において同様の役割を果たすが、サーバ状態管理機能が追加される点で異なる。このサーバ状態管理機能は、具体的に、第1の実施の形態で説明したバックエンドサーバ(図2を参照)の統合制御部100に追加される。
以下、第2の実施の形態における統合制御部について詳細に説明する。
(統合制御部)
図15は、第2の実施の形態における統合制御部100aの機能的な構成の一例を示すブロック図である。統合制御部100aは、第1の実施の形態における統合制御部100(図3を参照)と比べて、サーバ状態管理部160が追加されると共に、変更された要求判断部110a、及び連携マスタ部130aを備える。
サーバ状態管理部160は、他のバックエンドサーバからのデータ受信の有無を所定時間監視することによって故障状態を検出する部であり、検出結果を保持するサーバ状態テーブル161を有する。
サーバ状態管理部160は、周期的に交換されるよう定められた監視用データの受信の有無を監視してもよく、また、例えば状態通知要求や占有要求といった所定のデータの送信に応じて受信されるべき応答の有無を監視してもよい。
図16は、サーバ状態テーブル161に保持されているサーバ状態情報の一例を示す図である。サーバ状態情報は、バックエンドサーバごとに、サーバID162、サーバが運用中か故障中かを示すサーバ状態163、及び受信の有無を示す受信フラグ164を表す。
サーバ状態管理部160は、周期的に、又は、例えば占有要求といった所定のデータが送信された後に、サーバ状態管理処理を実行して故障検出を行い、その検出の結果に応じてサーバ状態テーブル161のサーバ状態163を更新する。このサーバ状態管理処理は、後述するように、自分自身の故障をも検出する。
要求判断部110aは、サーバ状態テーブル161を参照して、自バックエンドサーバのサーバ状態が’故障中’と示されている間、フロントエンド通信制御部210からのアクセス要求の受け入れを停止する機能を、要求判断部110に追加してなる。
連携マスタ部130aは、サーバ状態テーブル161を参照して、サーバ状態が故障中と示されているバックエンドサーバを除外して、占有要求の送信、占有の成否判断、及びアクセス要求の送信を行うよう、連携マスタ部130を変更してなる。
この変更は、詳細には、図9のフローチャートにおいて、S301をサーバ状態が運用中と示されているバックエンドサーバのみへ占有要求を送信するように変更し、S304をサーバ状態が運用中と示されている全てのバックエンドサーバから占有受諾応答を収集したかを判断するように変更し、また、図8のフローチャートにおいて、S204をサーバ状態が運用中と示されているバックエンドサーバのみへアクセス要求を転送するように変更することによって達成される。
(サーバ状態管理処理)
図17は、サーバ状態管理部160によって行われるサーバ状態管理処理の一例を示すフローチャートである。
サーバ状態管理部160は、サーバ状態テーブル161の全ての受信フラグ164を’NO’にしてから(S601)、他の全てのバックエンドサーバへ状態通知要求を送信し(S602)、タイマ部400をスタートさせる(S603)。
状態通知応答が受信されると(S604でYES)、受信された状態通知応答を送信したバックエンドサーバに関して、受信フラグ164を’YES’に更新し、かつサーバ状態を’運用中’に更新する(S605)。タイムアウトになるまでS604〜S605の処理を繰り返した後(S606)、サーバ状態163が’運用中’と示された全てのバックエンドサーバについて受信フラグ164が’NO’のままであれば(S607でYES)、自バックエンドサーバのサーバ状態163を’故障中’に更新する(S608)。そうでなければ(S607でNO)、受信フラグ164が’NO’のままのバックエンドサーバについてサーバ状態163を’故障中’に更新する(S609)。
この構成によれば、故障したバックエンドサーバが自動的にシステムから切り離されるので、一つのバックエンドサーバの故障がシステム全体に及ぼす影響が軽減され、サービス無中断の運用が可能となる。
なお、ここでは、状態通知要求に応じて状態通知応答が返される例を説明したが、占有要求に応じて返される占有通知を監視してもよく、また、サーバ状態管理部160が状態通知応答を自発的かつ周期的に送信することにより、状態通知要求の送信を省略する変形も考えられる。
(第3の実施の形態)
本発明の第3の実施の形態におけるデータ制御装置について、図面を参照しながら詳細に説明する。第3の実施の形態におけるデータ制御装置も、第1及び第2の実施の形態と同様に、バックエンドサーバの例を用いて説明される。
第3の実施の形態におけるバックエンドサーバは、第1の実施の形態で説明した分散データベースシステム1(図1を参照)においてバックエンドサーバ11、12、…、1nと同様の役割を果たすが、第2の実施の形態で説明したサーバ状態管理機能に加えて、アクセス要求保留機能が追加される点で異なる。このアクセス要求保留機能は、具体的に、第1の実施の形態で説明したバックエンドサーバ(図2を参照)の統合制御部100に、前述のサーバ状態管理機能と共に追加される。
以下、第3の実施の形態における統合制御部について詳細に説明する。
(統合制御部)
図18は、第3の実施の形態における統合制御部100bの機能的な構成の一例を示すブロック図である。統合制御部100bは、第2の実施の形態における統合制御部100a(図15を参照)と比べて、保留制御部170が追加されると共に、変更された要求判断部110b、連携サービス部150b、及びサーバ状態管理部160bを備える。
保留制御部170は、特定の動作モードにおいて一つ以上のアクセス要求を蓄積し、前記動作モードが解除されるとき、前記アクセス要求を蓄積された順に取り出してデータベース制御部310へ発行する部であり、アクセス要求を蓄積して蓄積された順に出力する要求保留キュー171を有する。
図19は、要求保留キュー171に蓄積されているアクセス要求の一例を示す図である。要求保留キュー171は、アクセス要求ごとに、要求ID172、及び要求内容173を保持している。
保留制御部170は、例えばシステム管理者から図示しないシステムコンソール等を介して、前記特定の動作モードの開始と解除とを指示される。説明の便宜上、前記特定の動作モードを保留モードと呼び、保留モードの開始及び解除の指示を、それぞれ保留指示及び再開指示と呼ぶ。
サーバ状態管理部160bは、保留制御部170からの制御に応じて、自バックエンドサーバのサーバ状態を’保留中’及び’運用中’に更新する機能を、サーバ状態管理部160に追加してなる。
要求判断部110bは、自バックエンドサーバのサーバ状態が’保留中’と示されている間、フロントエンド通信制御部210からのアクセス要求の受け入れを制限する(例えば、ダンプコマンド等の参照専用コマンドのみを受け入れる)機能を、要求判断部110aに追加してなる。
連携サービス部150bは、自バックエンドサーバのサーバ状態が’保留中’と示されている間、他のバックエンドサーバから転送されたアクセス要求を、データベース制御部310へ発行する代わりに、保留制御部170の要求保留キュー171に蓄積するように、連携サービス部150を変更してなる。そして、連携サービス部150bは、この変更点を除いて連携サービス部150と同様に動作する。
図20は、連携サービス部150bによって行われる連携サービス処理の一例を示すフローチャートである。
連携サービス部150bは、アクセス要求が受信された場合(S402でアクセス要求)、自バックエンドサーバのサーバ状態が’保留中’であれば(S431でYES)、受信されたアクセス要求を要求保留キュー171に登録し(S432)、’保留中’でない場合にのみ(S431でNO)、受信されたアクセス要求をデータベース制御部310へ発行する(S433)。その他の動作、特に占有に関する動作については、図10のフローチャートに示される連携サービス部150の動作と同一である。
このように、連携サービス部150bは、保留中にも、占有に関する処理を運用中と変わらずに行うことから、保留中に受信されたアクセス要求は、運用中であれば実行されていた順序、つまりデータの同期維持に必要な順序通りに、要求保留キュー171に蓄積される。
図21は、保留制御部170によって行われる保留制御処理の一例を示すフローチャートである。
保留制御部170は、保留指示を受け付けると(S701で保留)、自バックエンドサーバについてサーバ状態テーブル161のサーバ状態163を’保留中’に更新する(S702)。
また、再開指示を受け付けると(S701で再開)、要求保留キュー171が空になるまで(S703でNO)、要求保留キュー171から先頭のアクセス要求を取り出し(S704)、取り出したアクセス要求をデータベース制御部310へ発行する(S705)処理を繰り返す。
そして、要求保留キュー171が空になれば(S703でYES)、自バックエンドサーバについてサーバ状態テーブル161のサーバ状態163を’運用中’に更新する(S706)。
この構成によれば、保留モードが解除されるとき、データの同期維持に必要な順序通りに蓄積された一つ以上のアクセス要求を単に蓄積された順に実行することによって、迅速にデータの同期を回復できる。そして、データの同期回復のために他のデータベースからデータを複写する必要がないため、データベースの規模が大きいほど、データの同期回復の迅速化に大きな効果が得られる。
これにより、例えば、データベースのメンテナンスを行うためにデータの更新を一時的に保留しその後回復するような場合に、極めて高い実用的価値が発揮される。
(変形例)
ここまでの実施の形態では、フロントエンドサーバとバックエンドサーバとの通信、及びバックエンドサーバ同士の通信を、一つのネットワークを介して行う例について説明した。しかしながら、バックエンドサーバ同士の通信を、フロントエンドサーバとバックエンドサーバとの通信から分離された専用のネットワークを介して行う変形も考えられる。以下、そのような変形について説明する。
図22は、本発明の変形例におけるデータ制御システム10aを含む分散データベースシステムの一例を示す機器構成図である。分散データベースシステム1aは、第1の実施の形態で説明した分散データベースシステム1(図1を参照)と比べて、バックエンドサーバ11a、12a、…、1naを接続する専用のネットワーク21を備える点で異なる。
バックエンドサーバ11a、12a、…、1naは、ネットワーク20を通してフロントエンドサーバと通信し、ネットワーク21を通して他のバックエンドサーバと通信する。
図23は、バックエンドサーバ11aの機能的な構成の一例を示すブロック図である。バックエンドサーバ11aと共に示されるデータベース31は、第1の実施の形態と同様である。
バックエンドサーバ11aは、バックエンドサーバ11におけるネットワークアダプタ部200に代えて、2つのネットワークアダプタ部201、202を備える。
ネットワークアダプタ部201は、ネットワーク20と物理的に接続し、フロントエンド通信制御部210は、ネットワークアダプタ部201を介してフロントエンドサーバとの通信を実行する。
ネットワークアダプタ部202は、ネットワーク21と物理的に接続し、バックエンド通信制御部220は、ネットワークアダプタ部202を介してバックエンドサーバとの通信を実行する。
この構成によれば、バックエンドサーバ同士は、フロントエンドサーバとバックエンドサーバとの間の通信トラフィックに影響されることなく通信を行うことができる。そのため、データ制御システム10と比べると、例えば占有要求、占有変更、占有応答、アクセス要求といったバックエンドサーバ同士の通信がより安定的に行われることとなり、もって、データ制御システム10aはより高い安定性を発揮することができる。
本発明のデータ制御装置は、データの同期が維持されるべき複数のデータベースを制御するデータ制御システムに利用でき、とりわけ、前記複数のデータベース間でのデータの同期を低コストかつ効率的に維持する装置として有用である。
第1の実施の形態におけるデータ制御システムの一例を示す機器構成図である。 バックエンドサーバの機能的な構成の一例を示すブロック図である。 統合制御部の機能的な構成の一例を示すブロック図である。 連携マスタ部の機能的な構成の一例を示すブロック図である。 占有受付レジスタに保持されている占有受付情報、及び直前占有情報の一例を示す図である。 占有一覧テーブルに保持されている占有一覧情報の一例を示す図である。 統合制御処理の一例を示すフローチャートである。 連携マスタ処理の一例を示すフローチャートである。 占有試行処理の一例を示すフローチャートである。 連携サービス処理の一例を示すフローチャートである。 通常のデータ同期動作の一例を示すシーケンスチャートである。 占有リトライ動作の一例を示すシーケンスチャートである。 占有変更動作の一例を示すシーケンスチャートである。 通信プロトコル選択処理の一例を示すフローチャートである。 第2の実施の形態における統合制御部の機能的な構成の一例を示すブロック図である。 サーバ状態テーブルに保持されているサーバ状態情報の一例を示す図である。 サーバ状態管理処理の一例を示すフローチャートである。 第3の実施の形態における統合制御部の機能的な構成の一例を示すブロック図である。 要求保留キューに蓄積されているアクセス要求の一例を示す図である。 保留応答を行う連携サービス処理の一例を示すフローチャートである。 保留制御処理の一例を示すフローチャートである。 変形例におけるデータ制御システムの構成の一例を示す機器構成図である。 変形例におけるバックエンドサーバの機能的な構成の一例を示すブロック図である。 従来のデータ制御システムの構成の一例を示すブロック図である。
符号の説明
1、1a、9 分散データベースシステム
10、10a データ制御システム
11、12、…、1n、11a、12a、…、1na バックエンドサーバ
20、21 ネットワーク
31、32、…、3n データベース
41、42、…、4m フロントエンドサーバ
61、62、63 バックエンドサーバ
66、67、68 データベース
71 レプリケーションサーバ
80 ネットワーク
91、92 フロントエンドサーバ
100、100a、100b 統合制御部
110、110a、110b 要求判断部
120 単独アクセス部
130、130a 連携マスタ部
131 採番部
132 占有試行部
133 占有一覧テーブル
134 対象要求ID
135 応答サーバID
136 受付要求ID
138 要求発行部
140 占有受付レジスタ
141、143 要求サーバID
142、144 要求番号
150、150b 連携サービス部
160、160b サーバ状態管理部
161 サーバ状態テーブル
162 サーバID
163 サーバ状態
164 受信フラグ
170 保留制御部
171 要求保留キュー
172 要求ID
173 要求内容
200、201、202 ネットワークアダプタ部
210 フロントエンド通信制御部
220 バックエンド通信制御部
300 データ記憶部
310 データベース制御部
400 タイマ部

Claims (14)

  1. データの同期が維持されるべき複数のデータベースをそれぞれ制御する複数のデータ制御装置の一つであって、
    クライアントから発行された第1のアクセス要求を受信すると、前記第1のアクセス要求について前記複数のデータベース間でのデータの同期制御が必要か否かを判断する要求判断手段と、
    不要と判断された場合、自らのデータベースに対して前記第1のアクセス要求を発行する単独アクセス手段と、
    必要と判断された場合、他の全てのデータ制御装置の占有を試み、前記占有に成功した場合、他の全てのデータ制御装置へ前記第1のアクセス要求を転送すると共に、自らのデータベースに対して前記第1のアクセス要求を発行する連携マスタ手段と、
    他のデータ制御装置から転送された第2のアクセス要求を受信すると、自らのデータベースに対して前記第2のアクセス要求を発行する連携サービス手段と
    を備えることを特徴とするデータ制御装置。
  2. 前記データ制御装置は、さらに、
    自らを占有しているデータ制御装置を示す占有受付情報を保持している占有受付レジスタを備え、
    前記連携マスタ手段は、自データ制御装置を示すように前記占有受付情報を更新した後、他の全てのデータ制御装置へ自データ制御装置を識別する第1の占有要求を送信することによって前記占有を試み、他の全てのデータ制御装置から占有受諾応答が受信された場合に前記占有に成功したと判断し、
    前記連携サービス手段は、他のデータ制御装置を識別する第2の占有要求を受信したとき、前記占有受付情報がどのデータ制御装置からも占有されていないことを示す場合、前記第2の占有要求によって識別されるデータ制御装置を示すように前記占有受付情報を更新すると共に占有受諾応答を返信し、その他の場合、占有拒否応答を返信する
    ことを特徴とする請求項1に記載のデータ制御装置。
  3. 前記データ制御装置によって受信される占有拒否応答は、前記占有拒否応答を送信したデータ制御装置において継続中の占有を識別し、
    前記占有受付レジスタは、さらに、自データ制御装置を含む全てのデータ制御装置に共通して直前に受け入れられた占有を識別する直前占有情報を保持し、
    前記連携マスタ手段は、前記第1の占有要求に対して占有拒否応答が受信された場合、前記受信された占有拒否応答によって識別される占有が前記直前占有情報によって識別される占有と同一であれば、前記占有拒否応答を送信したデータ制御装置へ前記第1の占有要求を再送信する
    ことを特徴とする請求項2に記載のデータ制御装置。
  4. 前記データ制御装置によって受信される占有拒否応答は、前記占有拒否応答を送信したデータ制御装置を占有しているデータ制御装置を示すと共に、前記複数のデータ制御装置には優先順位が定められており、
    前記連携マスタ手段は、前記第1の占有要求に対して占有拒否応答が受信された場合、前記受信された占有拒否応答によって示されるデータ制御装置である競合データ制御装置の優先順位と自データ制御装置の優先順位との比較に基づいて、占有の変更先となるべき優先データ制御装置を特定し、自データ制御装置から前記特定された優先データ制御装置への変更を示す第1の占有変更を送信すると共に、前記優先データ制御装置を示すように前記占有受付情報を更新し、
    前記連携サービス手段は、第2の占有変更を受信すると、前記第2の占有変更によって示される変更前のデータ制御装置と前記占有受付情報によって示されるデータ制御装置とが一致する場合、前記第2の占有変更によって示される変更後のデータ制御装置を示すように前記占有受付情報を更新すると共に、前記変更後のデータ制御装置へ占有受諾応答を送信する
    ことを特徴とする請求項2に記載のデータ制御装置。
  5. 前記連携マスタ手段は、前記第1の占有要求に対して他の全てのデータ制御装置から占有許諾応答又は占有拒否応答が受信された後、
    自データ制御装置及び前記各競合データ制御装置がそれぞれ自分以外のデータ制御装置を占有しているか否かを、受信された占有許諾応答又は占有拒否応答に基づいて判断し、
    自分以外のデータ制御装置を占有していない状態の前記複数のデータ制御装置を前記優先順位で並べ、さらにその高位に、自分以外のデータ制御装置を占有している状態の前記複数のデータ制御装置を前記優先順位で並べて定義される順位に従って、自データ制御装置よりも高位の競合データ制御装置を前記優先データ制御装置として特定する
    ことを特徴とする請求項4に記載のデータ制御装置。
  6. 前記連携マスタ手段は、自らの占有を前記優先データ制御装置へ変更した後、変更前の自らの占有を再度試みる
    ことを特徴とする請求項4に記載のデータ制御装置。
  7. 前記連携マスタ手段、及び前記連携サービス手段は、送信されるデータの多寡、再送信か否か、送信されるデータが応答か否かのうちの少なくとも一つに応じて、他のデータ制御装置との通信に用いる通信プロトコルを変更する
    ことを特徴とする請求項1に記載のデータ制御装置。
  8. 前記データ制御装置は、さらに、
    データ受信の有無を所定時間監視することによって他のデータ制御装置の故障を検出するサーバ状態管理手段を備え、
    前記連携マスタ手段は、故障と検出されたデータ制御装置を除外して、前記占有の成否を判断する
    ことを特徴とする請求項1に記載のデータ制御装置。
  9. 前記データ制御装置は、さらに、
    特定の動作モードにおいて一つ以上のアクセス要求を蓄積し、前記動作モードが解除されるとき、前記アクセス要求を蓄積された順に取り出して自らのデータベースに対して発行する保留制御手段を備え、
    前記連携サービス手段は、前記動作モードにおいて、前記第2のアクセス要求を自らのデータベースに対して発行する代わりに前記保留制御手段に蓄積する
    ことを特徴とする請求項1に記載のデータ制御装置。
  10. 前記データ制御装置は、前記複数のデータ制御装置のみを接続する専用ネットワークへの接続手段を備える
    ことを特徴とする請求項1に記載のデータ制御装置。
  11. データの同期が維持されるべき複数のデータベースを制御するデータ制御システムであって、
    前記複数のデータベースそれぞれに対応して請求項1に記載のデータ制御装置を備える
    ことを特徴とするデータ制御システム。
  12. データの同期が維持されるべき複数のデータベースにそれぞれ対応する複数のデータ制御装置の一つにおいて用いられるデータ制御方法であって、
    クライアントから発行された第1のアクセス要求を受信すると、自らのデータベースのみで前記第1のアクセス要求を実行したとすれば他のデータベースとのデータの同期が維持されるか否かを判断する要求判断ステップと、
    肯定判断された場合、自らのデータベースに対して前記第1のアクセス要求を発行する単独アクセスステップと、
    否定判断された場合、他の全てのデータ制御装置の占有を試み、前記占有に成功した場合、他の全てのデータ制御装置へ前記第1のアクセス要求を転送すると共に、自らのデータベースに対して前記第1のアクセス要求を発行する連携マスタステップと、
    他のデータ制御装置から転送された第2のアクセス要求を受信すると、自らのデータベースに対して前記第2のアクセス要求を発行する連携サービスステップと
    を含むことを特徴とするデータ制御方法。
  13. データの同期が維持されるべき複数のデータベースにそれぞれ対応する複数のデータ制御装置の一つを動作させるためのコンピュータ実行可能なプログラムであって、
    クライアントから発行された第1のアクセス要求を受信すると、自らのデータベースのみで前記第1のアクセス要求を実行したとすれば他のデータベースとのデータの同期が維持されるか否かを判断する要求判断ステップと、
    肯定判断された場合、自らのデータベースに対して前記第1のアクセス要求を発行する単独アクセスステップと、
    否定判断された場合、他の全てのデータ制御装置の占有を試み、前記占有に成功した場合、他の全てのデータ制御装置へ前記第1のアクセス要求を転送すると共に、自らのデータベースに対して前記第1のアクセス要求を発行する連携マスタステップと、
    他のデータ制御装置から転送された第2のアクセス要求を受信すると、自らのデータベースに対して前記第2のアクセス要求を発行する連携サービスステップと
    をコンピュータに実行させることを特徴とするプログラム。
  14. 請求項13に記載のプログラムを記憶していることを特徴とする、コンピュータ読み取り可能な記録媒体。
JP2005352447A 2005-12-06 2005-12-06 データ制御装置、システム、方法、及びプログラム Expired - Fee Related JP3823169B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005352447A JP3823169B1 (ja) 2005-12-06 2005-12-06 データ制御装置、システム、方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005352447A JP3823169B1 (ja) 2005-12-06 2005-12-06 データ制御装置、システム、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP3823169B1 JP3823169B1 (ja) 2006-09-20
JP2007156916A true JP2007156916A (ja) 2007-06-21

Family

ID=37101301

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005352447A Expired - Fee Related JP3823169B1 (ja) 2005-12-06 2005-12-06 データ制御装置、システム、方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP3823169B1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010134519A (ja) * 2008-12-02 2010-06-17 Hitachi Ltd データベース管理方法、データベース管理プログラム、および、データベース受付装置
US8527501B2 (en) 2010-07-01 2013-09-03 International Business Machines Corporation Method, system, and program for combining and processing transactions
JP2013206100A (ja) * 2012-03-28 2013-10-07 Fujitsu Ltd レプリケーションシステム、レプリケーションプログラム及びレプリケーション構成の再構築方法
JP2015011642A (ja) * 2013-07-02 2015-01-19 日本電信電話株式会社 サーバ/クライアントシステム
JP5703375B2 (ja) * 2011-05-26 2015-04-15 株式会社日立製作所 多重化システム、方法、およびプログラム
CN113703308A (zh) * 2021-08-27 2021-11-26 深圳市新威尔电子有限公司 多机协同控制方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010134519A (ja) * 2008-12-02 2010-06-17 Hitachi Ltd データベース管理方法、データベース管理プログラム、および、データベース受付装置
US8527501B2 (en) 2010-07-01 2013-09-03 International Business Machines Corporation Method, system, and program for combining and processing transactions
JP5703375B2 (ja) * 2011-05-26 2015-04-15 株式会社日立製作所 多重化システム、方法、およびプログラム
JP2013206100A (ja) * 2012-03-28 2013-10-07 Fujitsu Ltd レプリケーションシステム、レプリケーションプログラム及びレプリケーション構成の再構築方法
JP2015011642A (ja) * 2013-07-02 2015-01-19 日本電信電話株式会社 サーバ/クライアントシステム
CN113703308A (zh) * 2021-08-27 2021-11-26 深圳市新威尔电子有限公司 多机协同控制方法

Also Published As

Publication number Publication date
JP3823169B1 (ja) 2006-09-20

Similar Documents

Publication Publication Date Title
CN110297801B (zh) 基于容错fpga的事务系统的正好一次事务语义的系统和方法
CN100591031C (zh) 实现高可用性光纤信道交换机的方法和装置
JP3823169B1 (ja) データ制御装置、システム、方法、及びプログラム
US8375001B2 (en) Master monitoring mechanism for a geographical distributed database
US6934247B2 (en) Recovery following process or system failure
JP4301849B2 (ja) 情報処理方法及びその実施システム並びにその処理プログラム並びにディザスタリカバリ方法およびシステム並びにその処理を実施する記憶装置およびその制御処理方法
JP2003263280A (ja) 複数リモートストレージのデータ同期方式
EP1107533A2 (en) Load distribution in a network
JP5982842B2 (ja) コンピュータ障害監視プログラム、方法、及び装置
US20120254110A1 (en) Distributed file system
CN111368002A (zh) 一种数据处理方法、系统、计算机设备和存储介质
EP2144167B1 (en) Remote file system, terminal device, and server device
EP3200111A1 (en) License management system
JP2010033467A (ja) 情報管理システム
US7564860B2 (en) Apparatus and method for workflow-based routing in a distributed architecture router
JP2006338145A (ja) 多重化データベースシステム及びその同期化方法、仲介装置、仲介プログラム
JP2013161252A (ja) 冗長コンピュータ制御プログラム、方法、及び装置
JP2007133542A (ja) 情報引継ぎシステム、情報引継ぎ方法、現用系ノード及び待機系ノード
JP2016042338A (ja) 情報処理システム、情報処理装置、情報処理装置の制御方法、及びプログラム
JPH1115786A (ja) トランザクション処理システムにおける端末状態管理方法及びコンピュータ読み取り可能な記録媒体
US20160006660A1 (en) Communication control method, information processing apparatus, and storage medium
JP7022508B2 (ja) 通信装置、通信方法、及びプログラム
JP4155512B2 (ja) 多重アクセス制御システムおよびその制御方法
JPH09160874A (ja) メッセージ重送チェックシステム
JP5153310B2 (ja) フォールトトレラントコンピュータシステム、並びに再同期稼働化処理方法、及びプログラム

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090707

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120707

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120707

Year of fee payment: 6

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120707

Year of fee payment: 6

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130707

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees