JP2011232926A - 分散データベースシステム、デッドロック通知方法およびデッドロック通知プログラム - Google Patents
分散データベースシステム、デッドロック通知方法およびデッドロック通知プログラム Download PDFInfo
- Publication number
- JP2011232926A JP2011232926A JP2010102036A JP2010102036A JP2011232926A JP 2011232926 A JP2011232926 A JP 2011232926A JP 2010102036 A JP2010102036 A JP 2010102036A JP 2010102036 A JP2010102036 A JP 2010102036A JP 2011232926 A JP2011232926 A JP 2011232926A
- Authority
- JP
- Japan
- Prior art keywords
- application
- deadlock
- lock
- data
- waiting
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】デッドロックが発生した際の処理効率を向上させる。
【解決手段】分散データベースを構成する複数のデータベースDBをそれぞれ管理する複数のサーバ装置10、20、30を有する分散データベースシステム1であって、サーバ装置10、20、30は、デッドロックが発生したか否かを判定する判定部123と、判定部123によりデッドロックが発生したと判定された場合に、デッドロックを発生させているアプリケーションのうち、ロックの解除待ちを開始した時刻が遅い方のアプリケーションにデッドロックの発生を通知する通信部121と、を備える。
【選択図】図1
【解決手段】分散データベースを構成する複数のデータベースDBをそれぞれ管理する複数のサーバ装置10、20、30を有する分散データベースシステム1であって、サーバ装置10、20、30は、デッドロックが発生したか否かを判定する判定部123と、判定部123によりデッドロックが発生したと判定された場合に、デッドロックを発生させているアプリケーションのうち、ロックの解除待ちを開始した時刻が遅い方のアプリケーションにデッドロックの発生を通知する通信部121と、を備える。
【選択図】図1
Description
本発明は、分散データベースシステム、デッドロック通知方法およびデッドロック通知プログラムに関する。
下記特許文献1には、分散データベースシステムで発生するデッドロックを検出する技術が開示されている。この従来技術では、ロックの衝突を検知したときに、例えばデータAのロックの解除待ちをしている側のアプリケーションが既にロックしているデータBを、データAのロックを獲得した側のアプリケーションがロックの解除待ちをしている場合に、デッドロックが発生していると判定する。
ところで、デッドロックが発生した場合に、デッドロックに関与する双方のアプリケーションにデッドロックが発生したことを通知すると、双方のアプリケーションがアボートされ、処理効率が低下するおそれがある。上記従来技術では、デッドロックを検出した場合に、デッドロックに関与するアプリケーションの中からアボートするアプリケーションを選択することについては記載されているものの、アボートするアプリケーションを、どのようにして選択するのかについてまでは開示されていない。
本発明は、上述した課題を解決するためになされたものであり、デッドロックが発生した際の処理効率を向上させることができる分散データベースシステム、デッドロック通知方法およびデッドロック通知プログラムを提供することを目的とする。
本発明の分散データベースシステムは、分散データベースを構成する複数のデータベースをそれぞれ管理する複数のサーバ装置を有する分散データベースシステムであって、前記サーバ装置は、デッドロックが発生したか否かを判定する判定部と、前記判定部によりデッドロックが発生したと判定された場合に、デッドロックを発生させているアプリケーションのうち、ロックの解除待ちを開始した時刻が遅い方のアプリケーションにデッドロックの発生を通知する通知部と、を備える。
本発明のデッドロック通知方法は、分散データベースを構成する複数のデータベースをそれぞれ管理する複数のサーバ装置を有する分散データベースシステムで実行されるデッドロック通知方法であって、前記サーバ装置が、デッドロックが発生したか否かを判定する判定ステップと、前記判定ステップにおいてデッドロックが発生したと判定された場合に、デッドロックを発生させているアプリケーションのうち、ロックの解除待ちを開始した時刻が遅い方のアプリケーションにデッドロックの発生を通知する通知ステップと、を含む。
本発明のデッドロック通知プログラムは、上記デッドロック通知方法に含まれる各ステップをコンピュータに実行させる。
本発明によれば、デッドロックが発生した際の処理効率を向上させることができる。
以下、添付図面を参照して、本発明に係る分散データベースシステム、デッドロック通知方法およびデッドロック通知プログラムの好適な実施形態について説明する。
まず、図1を参照して、実施形態における分散データベースシステムの構成について説明する。分散データベースシステム1は、ネットワークで相互に接続される複数のサーバ装置10、20、30を有する。サーバ装置10、20、30は、分散データベースを構成する複数のデータベースDBをそれぞれ管理する。ここで、各サーバ装置10、20、30は、それぞれ同一の機能構成を有するため、以下においては、説明の便宜のため、サーバ装置10の機能構成について説明する。
図1に示すように、実施形態におけるサーバ装置10は、機能的には、例えば、アプリケーション実行部11と、サーバ制御部12と、を有する。サーバ装置10は、これら各部が用いるデータを記憶する記憶部として、例えば、データベースDBと、アプリケーション情報テーブルTB1と、レコード情報テーブルTB2と、を備える。データベースDBは、インメモリデータベースであってもよいし、ディスク型データベースであってもよい。アプリケーション情報テーブルTB1およびレコード情報テーブルTB2は、後述するデッドロック判定処理で用いるロック情報を記憶する。
ここで、サーバ装置10は、物理的には、例えば、CPU(Central Processing Unit)と、記憶装置と、入出力インターフェースとを含んで構成される。記憶装置には、例えば、CPUで処理されるプログラムやデータを記憶するROM(Read Only Memory)やHDD(Hard Disk Drive)、主として制御処理のための各種作業領域として使用されるRAM(Random Access Memory)等が含まれる。これらの要素は、互いにバスを介して接続されている。CPUが、ROMに記憶されたプログラムを実行し、入出力インターフェースを介して受信されたメッセージや、RAMに展開されたデータを処理することで、後述するサーバ装置10の各部が有する機能を実現することができる。
図2を参照して、アプリケーション情報テーブルTB1のデータ構成について説明する。アプリケーション情報テーブルTB1は、サーバ装置10のアプリケーション実行部11が実行しているアプリケーションごとに、アプリケーションがアクセスするデータベースDBのレコードのロック状況に関する情報を管理するテーブルである。アプリケーション情報テーブルTB1は、データ項目として、例えば、アプリケーション識別子項目、ロック中レコード識別子項目、待機中レコード識別子項目および待機開始時刻項目を有する。アプリケーション識別子項目は、アプリケーションを一意に特定する識別情報を格納する。ロック中レコード識別子項目は、アプリケーションがロックしているデータベースDBのレコードを一意に特定する識別情報を格納する。待機中レコード識別子項目は、アプリケーションがロックの解除待ちをしているデータベースDBのレコードを一意に特定する識別情報を格納する。待機開始時刻項目は、アプリケーションがロックの解除待ちを開始したときの時刻情報を格納する。
アプリケーション情報テーブルTB1は、アプリケーションがデータベースDBのレコードをロックしたときや、ロックの解除待ちになったときに更新される。具体的には、アプリケーションがレコードをロックしたときには、そのアプリケーションの識別子に対応するロック中レコード識別子項目に、ロックしたレコードの識別子が格納される。その後、ロックが解除されたときには、解除されたレコードの識別子がロック中レコード識別子項目から削除される。また、アプリケーションがロックの解除待ちになったときには、そのアプリケーションの識別子に対応する待機中レコード識別子項目に、ロックの解除待ちになったレコードの識別子が格納され、そのアプリケーションの識別子に対応する待機開始時刻項目に、ロックの解除待ちを開始したときの時刻情報が格納される。その後、ロックの解除待ちが解消したときには、解除待ちが解消したレコードの識別子が待機中レコード識別子項目から削除され、解除待ちが解消したレコードに対応する時刻情報が待機開始時刻項目から削除される。
図3を参照して、レコード情報テーブルTB2のデータ構成について説明する。レコード情報テーブルTB2は、データベースDBのレコードごとに、ロックを要求してきたアプリケーションに関する情報を管理するテーブルである。レコード情報テーブルTB2は、データ項目として、例えば、レコード識別子項目、ロック中AP識別子項目および待機中AP識別子項目を有する。レコード識別子項目は、データベースDBのレコードを一意に特定する識別情報を格納する。ロック中AP識別子項目は、レコードをロックしているアプリケーションを一意に特定する識別情報を格納する。待機中AP識別子項目は、レコードに対してロックの解除待ちをしているアプリケーションを一意に特定する識別情報を格納する。
レコード情報テーブルTB2は、アプリケーションがデータベースDBのレコードをロックしたときや、ロックの解除待ちになったときに更新される。具体的には、アプリケーションがレコードをロックしたときには、そのレコードの識別子に対応するロック中AP識別子項目に、ロックしたアプリケーションの識別子が格納される。その後、ロックが解除されたときには、解除されたアプリケーションの識別子がロック中AP識別子項目から削除される。また、アプリケーションがロックの解除待ちになったときには、解除待ちのレコードの識別子に対応する待機中AP識別子項目に、ロックの解除待ちになったアプリケーションの識別子が格納される。その後、ロックの解除待ちが解消したときには、解除待ちが解消したアプリケーションの識別子が待機中AP識別子項目から削除される。
図1に示すアプリケーション実行部11は、データベースDBのデータ更新を伴う各種のアプリケーションを実行する。サーバ制御部12は、通信部121と、データベース制御部122と、判定部123と、を有する。
通信部121は、アプリケーション実行部11や他のサーバ装置20、30と、サーバ制御部12との間でやり取りされる各種メッセージやデータの送受信を制御する。各種メッセージとしては、例えば、データベースDBのレコードをロックするように要求するロック要求や、ロック要求に応じてロックが正常に行われることを知らせるロック応答、デッドロックが発生したことを知らせるデッドロック通知等が該当する。
データベース制御部122は、データベースDB、アプリケーション情報テーブルTB1およびレコード情報テーブルTB2へのアクセスやデータ更新を制御する。
判定部123は、各サーバ装置10、20、30のアプリケーション情報テーブルTB1およびレコード情報テーブルTB2に記憶されたアプリケーション情報およびレコード情報(以下、「ロック情報」という。)に基づいて、デッドロックが発生したか否かを判定する。判定部123による判定方法を、以下に、具体的に説明する。
最初に、判定部123は、自サーバ装置10のデータベースDBの特定のレコード(例えば「レコードA」とする。)でロックの解除待ちが発生した場合、他サーバ装置20、30のアプリケーション情報テーブルTB1およびレコード情報テーブルTB2に記憶されているロック情報を、他サーバ装置20、30からそれぞれ取得する。
続いて、判定部123は、上記データAをロックしているアプリケーション(例えば「アプリケーションAP1」とする。)が、データA以外の他のデータでロックの解除待ちをしているか否かを判定する。
判定部123は、上記アプリケーションAP1が他のデータでロックの解除待ちをしていると判定した場合、このアプリケーションAP1がロックの解除待ちをしているデータ(例えば「データB」とする。)をロックしているアプリケーションが、上記データAでロックの解除待ちをしているアプリケーション(例えば「アプリケーションAP2」とする。)と同一であるか否かを判定する。
判定部123は、上記データBをロックしているアプリケーションがアプリケーションAP2と同一であると判定した場合に、デッドロックが発生したと判定する。
次に、図4を参照して、本実施形態における分散データベースシステム1でアプリケーションを実行する際の動作について説明する。この動作では、サーバ装置10のアプリケーション実行部11がアプリケーションAP1を実行し、サーバ装置20のアプリケーション実行部11がアプリケーションAP2を実行している場合について説明する。
最初に、サーバ装置10のアプリケーション実行部11は、サーバ装置10のデータベースDBのレコードAをロックするように要求するロック要求をサーバ装置10のサーバ制御部12に送信する(ステップS101)。
続いて、サーバ装置10のデータベース制御部122は、この時点でサーバ装置10のデータベースDBのレコードAがいずれのアプリケーションにもロックされていないため、レコードAをロックし(ステップS102)、サーバ装置10のアプリケーション情報テーブルTB1およびレコード情報テーブルTB2を更新する。
続いて、サーバ装置10の通信部121は、ロック要求に応じてレコードAのロックが正常に行われたことを知らせるロック応答をサーバ装置10のアプリケーション実行部11に送信する(ステップS103)。
続いて、サーバ装置20のアプリケーション実行部11は、サーバ装置20のデータベースDBのレコードBをロックするように要求するロック要求をサーバ装置20のサーバ制御部12に送信する(ステップS104)。
続いて、サーバ装置20のデータベース制御部122は、この時点でサーバ装置20のデータベースDBのレコードBがいずれのアプリケーションにもロックされていないため、レコードBをロックし(ステップS105)、サーバ装置20のアプリケーション情報テーブルTB1およびレコード情報テーブルTB2を更新する。
続いて、サーバ装置20の通信部121は、ロック要求に応じてレコードBのロックが正常に行われたことを知らせるロック応答をサーバ装置20のアプリケーション実行部11に送信する(ステップS106)。
続いて、サーバ装置10のアプリケーション実行部11は、サーバ装置20のデータベースDBのレコードBをロックするように要求するロック要求をサーバ装置10のサーバ制御部12に送信する(ステップS107)。そして、サーバ装置10の通信部121は、同ロック要求をサーバ装置20に送信する(ステップS108)。
続いて、サーバ装置20のデータベース制御部122は、この時点でサーバ装置20のデータベースDBのレコードBがアプリケーションAP2によって既にロックされているため、アプリケーションAP1によるレコードBへのロック要求を待機させ(ステップS109)、サーバ装置20のアプリケーション情報テーブルTB1およびレコード情報テーブルTB2を更新する。
続いて、サーバ装置20の通信部121は、ロック情報を送信するように要求するロック情報取得要求を、サーバ装置10、30にそれぞれ送信する(ステップS110、S111)。
続いて、サーバ装置10、30の通信部121は、サーバ装置10、30のアプリケーション情報テーブルTB1およびレコード情報テーブルTB2に記憶されているロック情報を、サーバ装置20にそれぞれ送信する(ステップS112、S113)。
続いて、サーバ装置20の判定部123は、デッドロック判定処理を実行する(ステップS114)。デッドロック判定処理の詳細については、後述する。
続いて、サーバ装置20の通信部121は、後述するデッドロック判定処理でデッドロックが発生していないと判定されるため、ロック要求に応じてレコードBのロックが正常に行われることを知らせるロック応答をサーバ装置10に送信する(ステップS115)。そして、サーバ装置10の通信部121は、同ロック応答をアプリケーション実行部11に送信する(ステップS116)。
続いて、サーバ装置20のアプリケーション実行部11は、サーバ装置10のデータベースDBのレコードAをロックするように要求するロック要求をサーバ装置20のサーバ制御部12に送信する(ステップS117)。そして、サーバ装置20の通信部121は、同ロック要求をサーバ装置10に送信する(ステップS118)。
続いて、サーバ装置10のデータベース制御部122は、この時点でサーバ装置10のデータベースDBのレコードAがアプリケーションAP1によって既にロックされているため、アプリケーションAP2によるレコードAへのロック要求を待機させ(ステップS119)、サーバ装置10のアプリケーション情報テーブルTB1およびレコード情報テーブルTB2を更新する。
続いて、サーバ装置10の通信部121は、ロック情報を送信するように要求するロック情報取得要求を、サーバ装置20、30にそれぞれ送信する(ステップS120、S121)。
続いて、サーバ装置20、30の通信部121は、サーバ装置20、30のアプリケーション情報テーブルTB1およびレコード情報テーブルTB2に記憶されているロック情報を、サーバ装置10にそれぞれ送信する(ステップS122、S123)。
続いて、サーバ装置10の判定部123は、デッドロック判定処理を実行する(ステップS124)。デッドロック判定処理の詳細については、後述する。
続いて、サーバ装置10の通信部121は、後述するデッドロック判定処理においてデッドロックが発生し、デッドロック発生の通知対象としてサーバ装置20が選択されるため、デッドロックが発生したことを知らせるデッドロック通知をサーバ装置20に送信する(ステップS125)。
続いて、サーバ装置20の通信部121は、デッドロックを発生させているアプリケーションAP2をアボートするように要求するアボート要求を、サーバ装置20のアプリケーション実行部11に送信する(ステップS126)。これにより、アプリケーションAP2がアボートされるため、上記ステップS109でレコードBのロックの解除待ちをしていたアプリケーションAP1が、レコードBをロックすることができる。
次に、図5を参照して、上記デッドロック判定処理の処理手順について説明する。この処理手順では、サーバ装置10がデッドロック判定処理を行う場合について説明する。このデッドロック判定処理は、サーバ装置10の判定部123が、サーバ装置10のデータベースDBの一のレコードにロックの解除待ちが発生したと判定した場合に開始される。
最初に、サーバ装置10の判定部123は、ロックの解除待ちを発生させた一のレコードをロックしているアプリケーションが、他のレコードでロックの解除待ちをしているか否かを判定する(ステップS201)。この判定がNOである場合(ステップS201;NO)には、デッドロック判定処理を終了する。
一方、上記ステップS201の判定において、一のレコードをロックしているアプリケーションが他のレコードでロックの解除待ちをしていると判定された場合(ステップS201;YES)に、サーバ装置10の判定部123は、当該他のレコードをロックしているアプリケーションが、一のレコードでロックの解除待ちをしているアプリケーションと同一であるか否かを判定する(ステップS202)。この判定がNOである場合(ステップS202;NO)には、デッドロック判定処理を終了する。
上記ステップS202の判定において、他のレコードをロックしているアプリケーションが一のレコードでロックの解除待ちをしているアプリケーションと同一であると判定された場合(ステップS202;YES)に、サーバ装置10の判定部123は、デッドロックが発生したと判定し、デッドロックを発生させたアプリケーションのうち、アプリケーション情報の待機開始時刻が遅い方のアプリケーションをデッドロック発生の通知対象として選択する(ステップS203)。
以下に、デッドロック判定処理の具体例について説明する。まず、図4のステップS114で実行されるデッドロック判定処理について、図5を参照して説明する。
最初に、サーバ装置20の判定部123は、アプリケーションAP1にロックの解除待ちを発生させたレコードBをロックしているアプリケーションAP2が、他のレコードでロックの解除待ちをしているか否かを判定する(ステップS201)。この場合、アプリケーションAP2は、レコードBをロックしているだけであるため、この判定はNOとなり(ステップS201;NO)、デッドロック判定処理を終了する。つまり、デッドロックは発生していないと判定されることになる。
次に、図4のステップS124で実行されるデッドロック判定処理について、図5を参照して説明する。
最初に、サーバ装置10の判定部123は、アプリケーションAP2にロックの解除待ちをさせているレコードAをロックしているアプリケーションAP1が、他のレコードでロックの解除待ちをしているか否かを判定する(ステップS201)。この場合、アプリケーションAP1は、レコードAをロックし、レコードBでロックの解除待ちをしているため、この判定はYESとなる(ステップS201;YES)。
続いて、サーバ装置10の判定部123は、他のレコードBをロックしているアプリケーションが、レコードAでロックの解除待ちをしているアプリケーションと同一であるか否かを判定する(ステップS202)。この場合、他のレコードBをロックしているアプリケーションと、レコードAでロックの解除待ちをしているアプリケーションは、共にアプリケーションAP2となるため、この判定はYESとなる(ステップS202;YES)。
続いて、サーバ装置10の判定部123は、デッドロックが発生したと判定し、デッドロックを発生させたアプリケーションAP1、AP2のうち、アプリケーション情報の待機開始時刻が遅い方のアプリケーションをデッドロック発生の通知対象として選択する(ステップS203)。この場合、アプリケーションAP1は、図4のステップS109で待機を開始し、アプリケーションAP2は、図4のステップS119で待機を開始しているため、デッドロック発生の通知対象は、アプリケーションAP2が選択されることになる。
ここで、図5のステップS203において、判定部123は、自サーバ装置のアプリケーションに対応する待機開始時刻が、他サーバ装置のアプリケーションに対応する待機開始時刻よりも前の時刻(早い時刻)である場合に、デッドロックが発生したと判定し、他サーバ装置のアプリケーションをデッドロック発生の通知対象として選択することもできる。図4のステップS124で実行されるデッドロック判定処理を例にして具体的に説明する。
この例の場合、サーバ装置10の判定部123は、自サーバ装置10のアプリケーションAP1のレコードBへの待機開始時刻が、他サーバ装置20のアプリケーションAP2のレコードAへの待機開始時刻よりも前の時刻となるため、デッドロックが発生したと判定し、他サーバ装置20のアプリケーションAP2をデッドロック発生の通知対象として選択することになる。
このように処理することで、デッドロックに関与するアプリケーションAP1、AP2のうち、後からロック要求をしてきた他サーバ装置20のアプリケーションAP2のみをアボートさせることが可能となる。しかしながら、この処理には、以下の問題がある。
アプリケーションAP1を実行する自サーバ装置10で計測している時刻が、アプリケーションAP2を実行する他サーバ装置20で計測している時刻よりも進んでいる場合には、アプリケーションAP1の方がアプリケーションAP2よりも先にロックの解除待ちになったにもかかわらず、アプリケーションAP1に対応する待機開始時刻が、アプリケーションAP2に対応する待機開始時刻よりも後の時刻(遅い時刻)になることがある。この場合には、図4のステップS124で実行されるデッドロック判定処理において、他サーバ装置20のアプリケーションAP2の方が自サーバ装置10のアプリケーションAP1よりも先にロックの解除待ちになったと判定され、デッドロックが発生していないと誤判定されることになる。つまり、デッドロックを見逃してしまうことになる。
これに対して、本実施形態の判定部123は、上述した図5のステップS202でデッドロックの有無を判定し、上述したステップS203で待機開始時刻が遅い方のアプリケーションをデッドロック発生の通知対象に選択している。これにより、アプリケーションAP1を実行するサーバ装置10で計測している時刻が、アプリケーションAP2を実行するサーバ装置20で計測している時刻よりも進んでいる場合であっても、確実にデッドロックの発生を検出し、デッドロックに関与するいずれか一方のアプリケーションにのみデッドロック通知を送信することが可能となる。
図6を参照して、本実施形態における分散データベースシステム1において、アプリケーションAP1を実行するサーバ装置10で計測している時刻が、アプリケーションAP2を実行するサーバ装置20で計測している時刻よりも進んでいる場合の動作について説明する。なお、図6に示すステップS101〜ステップS123までの各処理は、図4に示すステップS101〜ステップS123までの各処理と同様であるため、これら各処理の説明については省略する。
図6に示す処理手順では、アプリケーションAP1が、ステップS109で待機を開始し、アプリケーションAP2が、ステップS119で待機を開始しているが、ここでは、サーバ装置10の時刻がサーバ装置20の時刻よりも進んでおり、アプリケーションAP1の待機開始時刻が、アプリケーションAP2の待機開始時刻よりも後の時刻(遅い時刻)になっていることとする。
この処理手順では、ステップS124aのデッドロック判定処理において、判定部123は、デッドロックが発生したと判定し、デッドロックを発生させたアプリケーションAP1、AP2のうち、アプリケーション情報の待機開始時刻が遅い方のアプリケーションAP1をデッドロック発生の通知対象として選択する(ステップS124a)。
続いて、サーバ装置10の通信部121は、デッドロックが発生したことを知らせるデッドロック通知、およびデッドロックを発生させているアプリケーションAP1をアボートするように要求するアボート要求を、サーバ装置10のアプリケーション実行部11に送信する(ステップS125a)。
続いて、サーバ装置10の通信部121は、上記ステップS118におけるロック要求に応じてレコードAのロックが正常に行われることを知らせるロック応答をサーバ装置20に送信する(ステップS126a)。
上述したように、実施形態における分散データベースシステム1によれば、デッドロックが発生したと判定された場合に、デッドロックを発生させているアプリケーションのうち、ロックの解除待ちを開始した時刻が遅い方のアプリケーションに対してデッドロックの発生を通知することができる。これにより、デッドロックに関与するいずれか一方のアプリケーションのみをアボートさせることができる。それゆえに、デッドロックが発生した際の処理効率を向上させることができる。
[変形例]
なお、上述した各実施形態は、単なる例示に過ぎず、各実施形態に明示していない種々の変形や技術の適用を排除するものではない。すなわち、本発明は、その趣旨を逸脱しない範囲で様々な形態に変形して実施することができる。
なお、上述した各実施形態は、単なる例示に過ぎず、各実施形態に明示していない種々の変形や技術の適用を排除するものではない。すなわち、本発明は、その趣旨を逸脱しない範囲で様々な形態に変形して実施することができる。
例えば、上述した各実施形態では、データベースDBのレコード単位にロックをかけているが、ロックの対象はレコード単位に限定されない。例えば、データベースDBのデータ単位であってもよいし、複数のデータ群であるレコード単位やファイル単位であってもよい。
最後に、上記の各実施形態の一部または全部は、以下の付記のようにも記載され得るが、本発明を以下に限定するものではない。
(付記1)分散データベースを構成する複数のデータベースをそれぞれ管理する複数のサーバ装置を有する分散データベースシステムであって、前記サーバ装置は、デッドロックが発生したか否かを判定する判定部と、前記判定部によりデッドロックが発生したと判定された場合に、デッドロックを発生させているアプリケーションのうち、ロックの解除待ちを開始した時刻が遅い方のアプリケーションにデッドロックの発生を通知する通知部と、を備えることを特徴とする分散データベースシステム。
(付記2)前記判定部は、自装置で管理するデータベースの第一のデータでロックの解除待ちが発生した場合に、当該第一のデータをロックしている第一のアプリケーションが、前記第一のデータとは異なる第二のデータでロックの解除待ちをしているか否かを判定する第一の判定部と、前記第一の判定部により前記第一のアプリケーションが前記第二のデータでロックの解除待ちをしていると判定された場合に、当該第一のアプリケーションがロックの解除待ちをしている前記第二のデータをロックしているアプリケーションが、前記第一のデータでロックの解除待ちをしている第二のアプリケーションと同一であるか否かを判定する第二の判定部と、を含み、前記第二の判定部により前記第二のデータをロックしているアプリケーションが、前記第二のアプリケーションと同一であると判定された場合に、デッドロックが発生したと判定する、ことを特徴とする付記1記載の分散データベースシステム。
(付記3)前記サーバ装置は、少なくとも、アプリケーションを特定するためのアプリケーション識別子ごとに、当該アプリケーションがロックしているデータを特定するためのロックデータ識別子、当該アプリケーションがロックの解除待ちをしているデータを特定するための待機データ識別子、および当該アプリケーションがロックの解除待ちを開始した時刻を示す待機開始時刻を対応付けた情報を含むロック情報を記憶する記憶部と、自装置で管理するデータベースの第一のデータでロックの解除待ちが発生した場合に、他装置の前記記憶部により記憶された前記ロック情報を、前記他装置からそれぞれ取得する取得部と、をさらに備え、前記判定部は、前記記憶部により記憶された前記ロック情報および前記取得部により取得された前記ロック情報に基づいて、デッドロックが発生したか否かを判定する、ことを特徴とする付記1または2記載の分散データベースシステム。
(付記4)分散データベースを構成する複数のデータベースをそれぞれ管理する複数のサーバ装置を有する分散データベースシステムで実行されるデッドロック通知方法であって、前記サーバ装置が、デッドロックが発生したか否かを判定する判定ステップと、前記判定ステップにおいてデッドロックが発生したと判定された場合に、デッドロックを発生させているアプリケーションのうち、ロックの解除待ちを開始した時刻が遅い方のアプリケーションにデッドロックの発生を通知する通知ステップと、を含むことを特徴とするデッドロック通知方法。
(付記5)付記4に記載の各ステップをコンピュータに実行させるためのデッドロック通知プログラム。
1…分散データベースシステム、10、20、30…サーバ装置、11…アプリケーション実行部、12…サーバ制御部、121…通信部、122…データベース制御部、123…判定部、DB…データベース、TB1…アプリケーション情報テーブル、TB2…レコード情報テーブル。
Claims (5)
- 分散データベースを構成する複数のデータベースをそれぞれ管理する複数のサーバ装置を有する分散データベースシステムであって、
前記サーバ装置は、
デッドロックが発生したか否かを判定する判定部と、
前記判定部によりデッドロックが発生したと判定された場合に、デッドロックを発生させているアプリケーションのうち、ロックの解除待ちを開始した時刻が遅い方のアプリケーションにデッドロックの発生を通知する通知部と、
を備えることを特徴とする分散データベースシステム。 - 前記判定部は、
自装置で管理するデータベースの第一のデータでロックの解除待ちが発生した場合に、当該第一のデータをロックしている第一のアプリケーションが、前記第一のデータとは異なる第二のデータでロックの解除待ちをしているか否かを判定する第一の判定部と、
前記第一の判定部により前記第一のアプリケーションが前記第二のデータでロックの解除待ちをしていると判定された場合に、当該第一のアプリケーションがロックの解除待ちをしている前記第二のデータをロックしているアプリケーションが、前記第一のデータでロックの解除待ちをしている第二のアプリケーションと同一であるか否かを判定する第二の判定部と、を含み、
前記第二の判定部により前記第二のデータをロックしているアプリケーションが、前記第二のアプリケーションと同一であると判定された場合に、デッドロックが発生したと判定する、
ことを特徴とする請求項1記載の分散データベースシステム。 - 前記サーバ装置は、
少なくとも、アプリケーションを特定するためのアプリケーション識別子ごとに、当該アプリケーションがロックしているデータを特定するためのロックデータ識別子、当該アプリケーションがロックの解除待ちをしているデータを特定するための待機データ識別子、および当該アプリケーションがロックの解除待ちを開始した時刻を示す待機開始時刻を対応付けた情報を含むロック情報を記憶する記憶部と、
自装置で管理するデータベースの第一のデータでロックの解除待ちが発生した場合に、他装置の前記記憶部により記憶された前記ロック情報を、前記他装置からそれぞれ取得する取得部と、
をさらに備え、
前記判定部は、前記記憶部により記憶された前記ロック情報および前記取得部により取得された前記ロック情報に基づいて、デッドロックが発生したか否かを判定する、
ことを特徴とする請求項1または2記載の分散データベースシステム。 - 分散データベースを構成する複数のデータベースをそれぞれ管理する複数のサーバ装置を有する分散データベースシステムで実行されるデッドロック通知方法であって、
前記サーバ装置が、
デッドロックが発生したか否かを判定する判定ステップと、
前記判定ステップにおいてデッドロックが発生したと判定された場合に、デッドロックを発生させているアプリケーションのうち、ロックの解除待ちを開始した時刻が遅い方のアプリケーションにデッドロックの発生を通知する通知ステップと、
を含むことを特徴とするデッドロック通知方法。 - 請求項4に記載の各ステップをコンピュータに実行させるためのデッドロック通知プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010102036A JP2011232926A (ja) | 2010-04-27 | 2010-04-27 | 分散データベースシステム、デッドロック通知方法およびデッドロック通知プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010102036A JP2011232926A (ja) | 2010-04-27 | 2010-04-27 | 分散データベースシステム、デッドロック通知方法およびデッドロック通知プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011232926A true JP2011232926A (ja) | 2011-11-17 |
Family
ID=45322188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010102036A Pending JP2011232926A (ja) | 2010-04-27 | 2010-04-27 | 分散データベースシステム、デッドロック通知方法およびデッドロック通知プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011232926A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015166741A1 (ja) * | 2014-05-01 | 2015-11-05 | ウイングアーク1st株式会社 | インメモリ管理システムおよびインメモリ管理用プログラム |
US9590908B2 (en) | 2014-03-31 | 2017-03-07 | Fujitsu Limited | Distributed data processing device and distributed data processing method |
-
2010
- 2010-04-27 JP JP2010102036A patent/JP2011232926A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9590908B2 (en) | 2014-03-31 | 2017-03-07 | Fujitsu Limited | Distributed data processing device and distributed data processing method |
WO2015166741A1 (ja) * | 2014-05-01 | 2015-11-05 | ウイングアーク1st株式会社 | インメモリ管理システムおよびインメモリ管理用プログラム |
JP2015212855A (ja) * | 2014-05-01 | 2015-11-26 | ウイングアーク1st株式会社 | インメモリ管理システムおよびインメモリ管理用プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107977376B (zh) | 分布式数据库系统及事务处理方法 | |
US9171019B1 (en) | Distributed lock service with external lock information database | |
KR100637775B1 (ko) | 클러스터형 컴퓨터 시스템의 자원 대상 작용 수행 방법 및 장치, 클러스터형 컴퓨터 시스템 및 그의 수행을 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독가능 기록 매체 | |
EP3252617B1 (en) | Transaction processing method, processing node, central node and cluster | |
KR20180030118A (ko) | 분산 데이터베이스 시스템을 갖는 네트워크에서 데이터베이스 접근 제어를 제공하기 위한 방법 및 아키텍처 | |
US20130036136A1 (en) | Transaction processing system, method and program | |
RU2585973C2 (ru) | Способ и устройство управления операцией блокировки системы баз данных | |
CN105700939A (zh) | 一种分布式系统中多线程同步的方法和系统 | |
JP2019008417A (ja) | 情報処理装置、メモリ制御方法およびメモリ制御プログラム | |
US20080319996A1 (en) | Distributed Lock Manager For File System Objects In A Shared File System | |
JP5686034B2 (ja) | クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム | |
CN110032424B (zh) | 分布式锁的实现方法和装置 | |
JP5390134B2 (ja) | 情報管理サーバ、情報処理システム、通信方法およびプログラム | |
US9747323B1 (en) | Method for reconstruction of a distributed lock state after a node addition or removal using a consistent hash | |
CN107066877B (zh) | 一种交易系统的权限变更方法及系统 | |
JP5331050B2 (ja) | データ同期システム、データ同期方法、情報処理装置、情報処理方法、およびプログラム | |
JP6586174B2 (ja) | データベースシステム、トランザクション管理ノード、方法およびプログラム | |
JP2011232926A (ja) | 分散データベースシステム、デッドロック通知方法およびデッドロック通知プログラム | |
US9418097B1 (en) | Listener event consistency points | |
JP2018101343A (ja) | 排他制御装置、排他制御システム、排他制御方法、および、排他制御プログラム | |
JP5459613B2 (ja) | データ処理システム、データ処理方法およびデータ処理プログラム | |
EP3391217B1 (en) | Long-running storage manageability operation management | |
JP6947421B2 (ja) | 監視装置、排他制御システム、プログラム及び制御方法 | |
JP5812512B2 (ja) | データベースシステム、マスタースレーブ管理方法およびマスタースレーブ管理プログラム | |
JP6172294B2 (ja) | トランザクション分散処理装置、方法、システム、および、記憶媒体 |