JP2005310012A - データベースシステム、データベース不整合回避方法およびプログラム - Google Patents

データベースシステム、データベース不整合回避方法およびプログラム Download PDF

Info

Publication number
JP2005310012A
JP2005310012A JP2004129170A JP2004129170A JP2005310012A JP 2005310012 A JP2005310012 A JP 2005310012A JP 2004129170 A JP2004129170 A JP 2004129170A JP 2004129170 A JP2004129170 A JP 2004129170A JP 2005310012 A JP2005310012 A JP 2005310012A
Authority
JP
Japan
Prior art keywords
data
transaction
database
update
transactions
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
JP2004129170A
Other languages
English (en)
Other versions
JP4476011B2 (ja
Inventor
Kinya Fujitsuka
勤也 藤塚
Keita Tanikoshi
桂太 谷越
Kimitaka Uyama
公隆 宇山
Kimihisa Kondo
公久 近藤
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.)
NTT Data Group Corp
Original Assignee
NTT Data Corp
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 NTT Data Corp filed Critical NTT Data Corp
Priority to JP2004129170A priority Critical patent/JP4476011B2/ja
Publication of JP2005310012A publication Critical patent/JP2005310012A/ja
Application granted granted Critical
Publication of JP4476011B2 publication Critical patent/JP4476011B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

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

Abstract

【課題】 簡易な構成によりデータベースの内容に不整合が生じないよう、排他制御を行う。
【解決手段】 データベースサーバ100と101とはデータベースに同じデータを格納している。そして、データのロックに関するタイムアウト時間は、データベースサーバ101よりデータベースサーバ100の方が短く設定されている。データを更新しようとするトランザクションが競合すると、データベースサーバ100に対してロックをかけたトランザクション以外の競合トランザクションは、タイムアウト発生により更なるロックに失敗し、すでにかけたロックを解除する。このため、データベースサーバ100に対してロックをかけたトランザクションは、データベースサーバ101からロックを獲得でき、不整合を引き起こすことなくデータを更新することができる。
【選択図】 図1

Description

本発明は、データベースシステム、データベース不整合回避方法およびプログラムに関する。
システムの可用性向上のため、データベースサーバを複数台用意し、データベースの冗長化を図る仕組みを構築する場合、各データベースに格納されているデータが一致していなければならない。
しかし、データベース間で同一のテーブル内の同一レコードに対する更新トランザクションの実行順序が異なった場合に、データベース間で格納されているデータが一致しなくなることがある。
例えば、同じデータを格納するデータベースX、Yから構成され、2つの更新トランザクションA、Bが、ほぼ同時に、ある同じデータを更新する場合を例に説明する。この場合、更新トランザクションAはデータベースX、Yの順にデータを更新し、更新トランザクションBはデータベースY、Xの順にデータを更新すると、データベースXには更新トランザクションBが更新したデータが格納され、データベースYには更新トランザクションAが更新したデータが格納される。したがって、データが一致しなくなる。
更新トランザクションの際にすべてのデータベースをロックできた場合に更新できるようにすると、上記場合では、デッドロックが発生し、データベースシステムのスループットが低下する。
デッドロックの発生を回避するため、例えば、特許文献1に記載されたデータベースシステムでは、ロックに関する排他制御処理のデータ単位で、複数のアプリケーションプログラムから不定期に発行される更新トランザクションをデータベース管理システムが受け取り、更新トランザクションの実行順序が各データベース間で異ならないように、シーケンシャルに実行する。この方法により、デッドロックの発生を防止しつつ、各データベースに格納されているデータの整合性を保っている。
特開平10−283243号公報(第4、5頁、図1)
上記データベース管理システムでは、更新トランザクションを一括して受け取るデータベース管理システムが性能向上のボトルネックとなるという点がある。例えば、同じデータを更新する2つの更新トランザクションがあり、これらの更新トランザクションが実行されるタイミングが異なっていれば、本来、デッドロック回避制御を実行しなくてもよい。しかし、上記データベース管理システムでは、これらの更新トランザクションが同じロックに関する排他制御処理のデータ単位にあると、デッドロック回避制御を実行してしまう。
本発明は、上記問題点に鑑みてなされたもので、データベースの不整合を防止するデータベースシステム、データベース不整合回避方法、およびプログラムを提供することを目的とする。
上記目的を達成するため、この発明の第1の観点にかかるデータベースシステムは、
同一の内容が複製されている複数のデータベースを格納するデータベースシステムであって、
データを更新するトランザクションを受け付ける受け付け手段と、
前記受け付け手段で受け付けたトランザクションで指定されたデータに対応する各データベース上のデータを指定された順序でデータベース毎にロックする排他制御手段と、
前記排他制御手段でデータがロックされた場合に、ロックされたデータを更新するデータ更新手段と、
を具備し、
前記排他制御手段は、
前記受け付け手段において、ほぼ同時に同一のデータを更新する複数のトランザクションを受け付けた場合に、
該複数のトランザクションがデータをロックする順序が異なるか否かを判別し、
前記複数のトランザクションのデータをロックする順序が異なることを判別した場合に、さらに該複数のトランザクションのうち、所定の基準に従って、データの更新を許可すべきトランザクションを判別し、
該更新を許可すべきトランザクションのために前記データをロックすること、
を特徴とする。
この発明によれば、ほぼ同時に同一のデータを更新する、複数のトランザクションのデータベースをロックする順序が異なることを判別し、複数のトランザクションのうち、所定の基準に基づいて、データを更新できるトランザクションを判別する。そして、データを更新できるトランザクションのためにデータをロックする。このため、本データベースシステムは、デッドロックの発生を回避しつつ、データベース間のデータの不整合を回避してデータを更新(コミット)できる。また、本データベースシステムが、複数のトランザクションのデータをロックする順序が異なることを判別するのは、複数のトランザクションがほぼ同時に同一のデータを更新する場合であり、複数のトランザクションが同一のデータを更新する場合であっても、更新するタイミングが異なる場合には、データをロックする順序が異なることを判別する必要はない。
上記データベースシステムにおいて、
前記排他制御手段は、該更新を許可すべきトランザクションでないトランザクションが前記データをロックしている場合には、そのロックを解除した後に、更新を許可すべきトランザクションのために前記データをロックする、ことが望ましい。
上記データベースシステムにおいて、
1つのデータベースに対し、データのロックに関し、他のデータベースと比較して短いタイムアウト時間が設定されていることが望ましい。
この場合、前記排他制御手段は、
データをロックする順序が異なることを、タイムアウトが発生したか否かにより判別し、
前記複数のトランザクションのうち、最も短いタイムアウト時間が設定されているデータベース上のデータをロックしているトランザクションを前記更新を許可すべきトランザクションとして判別する。
この発明によれば、データのロックに関し、1つのデータベースのタイムアウト時間が他のデータベースのタイムアウト時間より、短く設定されている。このため、あるデータベースでタイムアウトが発生すると、本データベースシステムは複数のトランザクションのデータをロックする順序が異なっていることが判別できる。この場合、タイムアウト時間が最も短く設定されているデータをロックしたトランザクションが、データを更新する。
この発明の第2の観点にかかるデータベース不整合回避方法は、
同一の内容が複製されている複数のデータベースを格納するデータベースシステムが、
データを更新するトランザクションを受け付ける受け付けステップと、
前記受け付けステップで受け付けたトランザクションで指定されたデータに対応する各データベース上のデータを指定された順序でデータベース毎にロックする排他制御ステップと、
前記排他制御ステップでデータがロックされた場合に、ロックされたデータを更新するデータ更新ステップと、
を備え、
前記排他制御ステップは、
前記受け付けステップにおいて、ほぼ同時に同一のデータを更新する複数のトランザクションを受け付けた場合に、該複数のトランザクションがデータをロックする順序が異なるか否かを判別し、
複数のトランザクションのデータをロックする順序が異なることを判別した場合に、該複数のトランザクションのうち、所定の基準に従って、データの更新を許可すべきトランザクションを判別し、該更新を許可すべきトランザクションのために前記データをロックすること、
を特徴とする。
この発明の第3の観点にかかるプログラムは、
同一の内容が複製されている複数のデータベースを格納するコンピュータ装置を、
データベースに格納されているデータを更新するトランザクションを受け付け、
前記トランザクションで指定されたデータベース上のデータを指定された順序でロックして、
ロックされたデータを更新する、
データベース装置であって、
ほぼ同時に同一のデータを更新する複数のトランザクションを受け付けた場合に、該複数のトランザクションのデータをロックする順序が異なるか否かを判別し、
ロックする順序が異なる場合に、
前記複数のトランザクションのうち、所定の基準に従って、データの更新を許可すべきトランザクションを判別し、
該更新を許可すべきトランザクションのために前記データをロックする、
データベース装置として機能させる。
本発明によれば、同一のデータに対する複数のトランザクションがほぼ同時に実行された場合に、複数のデータベース間で格納されているデータに不整合が生じることを回避できる。
本発明にかかる実施の形態を、以下図面を参照して説明する。
以下、データベースの更新とは、フィールド値の更新、テーブルやレコード、フィールドの生成・追加・削除などのデータベースに格納されているデータの内容を変更すること一般を指すものとする。
図1は、本発明の実施の形態にかかるデータベースシステムの構成を示すブロック図である。図示するように、本実施の形態にかかるデータベースシステム1は、通信ネットワークCを介して相互接続された、データベースサーバ100、101と、クライアント端末200、201とから構成される。
通信ネットワークCは、例えば、TCP/IP(Transmission Control Protocol/Internet Protocol)などの所定の通信プロトコルに基づくLAN(Local Area Network)などの通信ネットワークである。なお、データベースシステム1内での通信遅延については無視する。
データベースサーバ100は、クライアント端末200と201からトランザクションを受け付け、処理結果に応じたデータをトランザクションを送信してきたクライアント端末に送信する。ここで、トランザクションは、データベースに格納されているデータを更新するものと更新しないものとに分類することができる。以下、データベースに格納されているデータを更新するトランザクションを更新トランザクションと称し、データを更新しないトランザクションを参照トランザクションと称する。
データベースサーバ100は、更新トランザクションを受け付けると、当該更新トランザクションで指定されたデータをロックする。その後、当該更新トランザクションを送信したクライアント端末200、201からデータを更新する旨の指示を受信すると、データを更新し、ロックを解除する。すでに、別の更新トランザクションにより、データがロックされている場合、データベースサーバ100は、データをロックする旨の要求を拒否する。さらに、所定の時間(以下、タイムアウト時間と称する)が経過するまで、ロック状態が継続していれば、データベースサーバ100はタイムアウトが発生したことをデータベースサーバ101と、データのロック要求を拒否したクライアント端末とに送信する。
データベースサーバ100は、参照トランザクションを受け付けると、参照しようとしているデータが更新トランザクションによりロックされていなければ、データベースにアクセスし、参照トランザクションで必要なデータを読み出し、トランザクションを送信してきたクライアント端末200あるいは201に送信する。
図2に示すように、データベースサーバ100は、制御部110と、プログラム格納部120と、入力制御部130と、出力制御部140と、通信制御部150と、データベース(DB)160とを備える。
制御部110は、中央演算処理装置(CPU、Central Processing Unit)やワークエリアとなる記憶装置(RAM(Random Access Memory))等から構成される。制御部110は、プログラム格納部120に格納されている所定の動作プログラム等を読み出して実行することにより、例えば図3に示すような、トランザクション管理部111、ロック管理部112、タイムアウト管理部113等を実現する。そして、これら各部が以下に示すような処理を行って、データベースサーバ101内のDBに格納されている内容と同期をとる。
図3を参照して、制御部110が実現する各機能について説明する。
トランザクション管理部111は、通信ネットワークCと通信制御部150とを介して、クライアント端末200と201とから送信されたトランザクションを受け付け、トランザクションの処理結果を送信してきたクライアント端末200あるいは201に返信する。参照トランザクションの場合には、トランザクション管理部111は、DB160からこの参照トランザクションで必要となるデータを読み出し、クライアント端末200あるいは201に送信する。更新トランザクションの場合には、DB160内の更新トランザクションで指定されたデータに対し、ロックをかけ、かけたロックをロック管理部112に管理させる。
ロック管理部112は、トランザクションがDB160に対して要求したデータのロックを、ロック管理情報として管理する。ロック管理部112は、どのデータに対してロックがかけられているか、そして、そのロックはどのトランザクションが要求したものなのかを管理する。
ロック管理部112は、トランザクション管理部111からロックの管理を指示されると、当該ロックをかけたデータとロックを要求したトランザクションとを組にして(以下、ロック情報と称する)、ロック管理情報に追加する。そして、トランザクション管理部111が、データの参照や更新などが正常終了したことを示す旨の情報を通知してきた際に、関係するロック情報をロック管理情報から削除する。また、データ更新が競合した場合には、関係するロック情報に競合していることを示すリンク情報を付加する。このリンク情報は、一方の更新トランザクションが終了した際に削除される。
また、ロック管理部112は、新たなトランザクションがデータベースサーバ100に送信されると、タイムアウト管理部113に時間を計測させ、所定の時間(以下、タイムアウト時間と称する)を経過した場合にその旨を通知することを指示する。
タイムアウト管理部113は、タイマなどを備え、トランザクションが最初にデータベースサーバ100に送信してきた時点からの経過時間を計測し、タイムアウト時間を経過すると、その旨をロック管理部112に通知する。
図2に戻って、プログラム格納部120は、ROM(Read Only Memory)等の記憶装置から構成され、制御部110が実行する動作プログラムを記憶する。
入力制御部130は、例えば、キーボードやポインティングデバイス等の入力装置13を接続し、入力装置13から入力された制御部110への指示などを受け付けて制御部110に伝達する。
出力制御部140は、例えば、ディスプレイなどの出力装置14を接続し、制御部110の処理結果などを必要に応じて出力装置14に出力する。
通信制御部150は、例えば、NIC(Network Interface Card)やルータなどの通信装置から構成され、データベースサーバ100と通信ネットワークCとを接続し、データベースサーバ101と、クライアント端末200、201との通信を行う。
DB160は、本データベースシステム1の利用者が読み書きできるデータを格納する。
データベースサーバ101の構成はデータベースサーバ100の構成と同一である。なお、データベースサーバ101のタイムアウト時間はデータベースサーバ100のタイムアウト時間より短く設定される。このように設定することにより、データベースサーバ100と101とは以下に示すようなデータ更新処理を実行することができる。
クライアント端末200は、このデータベースシステム1を利用する者が使用する端末装置であり、通常のパーソナルコンピュータ等から構成される。図4に図示するように、クライアント端末200は、CPUなどの制御部21と、ハードディスクなどの記憶部22と、キーボードなどの入力部23と、ディスプレイなどの出力部24と、NICなどの通信制御部25とを備える。なお、記憶部22には、データベースサーバ100、101内のDBに格納されているデータにアクセスして所定の処理を実行するアプリケーションプログラムと、本発明の実施の形態に特有なデータベースクライアントプログラムと、がインストールされているものとする。
クライアント端末201の構成はクライアント端末200の構成と同一である。
クライアント端末200と201とで、利用者はアプリケーションプログラムを操作して、データベース内のデータを検索したり更新したりする。アプリケーションプログラムは利用者からの指示に応じて、データベースを操作する指示をデータベースクライアントプログラムに送信する。データベースクライアントプログラムは、データベースを操作する指示をトランザクション単位に分割して各データベースサーバに送信する。そして、各データベースサーバから送信された処理結果を示す情報に基づいて、トランザクションをリトライするか、アプリケーションプログラムに処理結果(例えば、データベースから読み出したデータや、処理結果が成功したか否かを示す情報など)を送信するかを判別し、処理を継続する。
ここで、データをロックする際のリトライ時間間隔を、ロック要求がタイムアウトした際のリトライ時間間隔より短く設定することが望ましい。このように設定すれば、例えば、データベースサーバ101側でロックが解除された後、ロックを解除された更新トランザクションがデータのロックを再要求するより前に、データベースサーバ100内のデータベースに対しロックをかけた更新トランザクションが、データベースサーバ101内のデータベースに対しロックをかけることが保証される。
以下、図面を参照して本実施の形態にかかるデータベースシステム1の動作例について説明する。なお、動作例において、データベースサーバ100、101およびクライアント端末200、201は、単にサーバ100、101、端末200、201と称する。
図5は、端末200からサーバ100、101に格納されている各データベースのデータを更新する場合の、端末200のデータ更新処理時の動作を示したフローチャートである。図6は、この場合のサーバ100のデータ更新処理時の動作を示したフローチャートである。
第1の動作例は、端末200が更新トランザクションの実行をサーバ100、101に要求する場合であり、競合する他のトランザクションは無いものとする。第2の動作例は、端末200と201とが更新トランザクションの実行をサーバ100、101に要求する場合であり、これらの更新トランザクションは競合するものとする。
(第1の動作例)
第1の動作例では、サーバ100の動作とサーバ101の動作とは同一である。
まず、端末200は、通信ネットワークCを介して、更新対象のデータのロックをサーバ100と101とに指示を出すとともに(図5:ステップS101)、更新するデータをサーバ100と101とに送信する。
すると、サーバ100は更新データとロック指示とを受け付け(図6:ステップS201)、更新対象のデータのロックを試みる(ステップS202)。そして、トランザクション管理部111は、ロック管理部112にロックを管理させる指示を出す。
次に、サーバ100はロックが成功したか否かを判別する(ステップS203)。当該データをロックできていれば(ステップS203:YES)、その旨を示す情報を端末200に送信し、端末200からデータの確定指示が来るのを待機する(ステップS204)。当該データをロックできなければ(ステップS203:NO)、ステップS202に処理を戻し、再びロックを試みる。ここで、トランザクション管理部111は、すでに当該データが他のトランザクションによりロックされ、競合状態にあるか否かを、ロック管理部112が保持しているロック管理情報に基づいて判別する。競合状態にあると判別すれば、競合対象となっているトランザクションに対応するロック情報とこの要求に対応するロック情報との間にリンク情報を設定する。
端末200は、サーバ100と101とから当該データをロックしたという旨を示す情報が送信されたか否かを判別する(図5:ステップS102)。すべてのサーバから当該データをロックしたという旨を示す情報が送信されたと判別すれば(ステップS102:YES)、端末200はサーバ100と101とにデータの更新を確定する旨の指示を送信する(ステップS103)。
すると、サーバ100は、送信されているデータをDB160に格納し、データを更新し(図6:ステップS206)、更新した旨を示す情報を端末200に送信する。
最後に、端末200は、サーバ100と101に対し、ロックしたデータの解放を指示し(図5:ステップS104)、データ更新処理を終了する。
ロックしたデータの解放の指示を受けたサーバ100は、データに対してかけていたロックを解除し(図6:ステップS207)、データ更新処理を終了する。ここで、サーバ100は、ロック管理部112に作成されたロック情報を削除する。もし、このロック情報と関連づけられたロック情報がロック管理情報に含まれていれば、ロック管理部112はリンク情報を削除する。
一方、タイムアウトなどの理由により、サーバ100あるいは101からロックに失敗した旨が送信され、サーバ100、101の双方から当該データをロックしたという旨を示す情報が送信されなかったと判別すれば(図5:ステップS102:NO)、端末200は、サーバ100と101とに対し、ロック解除の指示を送信する(ステップS105)。そして、ステップS101に処理を戻し、すべてのデータベースの当該データにロックをかけることを繰り返す。ただし、第1の動作例では、競合する更新トランザクションは存在しないので、端末200はサーバ100、101の双方から当該データをロックしたという旨を示す情報が送信されなかったと判別することはない。なお、図6のステップS209およびS210でのサーバ100の動作に関しては、第2の動作例で説明を行う。
上述したデータ更新処理は、更新トランザクション毎に実行される。ロックするデータが他の更新トランザクションと競合しない限り、各更新トランザクションは正常に終了する。
なお、本動作例において、端末200がデータ更新の指示とロック解除の指示とを同時に出すようにしてもよい。
(第2の動作例)
第2の動作例は、第1の動作例で使用した図5、6と共に、図7を参照して説明する。図7は、サーバ101のデータ更新処理時の動作を示したフローチャートである。図7の各ステップにおいて、図6に示したステップと同じ処理には、下2桁に同じ数字を付している。以下、動作例1で説明したステップについては説明を省略する。
本動作例では、端末200から送信された更新トランザクション(以下、トランザクション1と称する)はサーバ100、101の順にデータをロックしようとし、端末201から送信された更新トランザクション(以下、トランザクション2)はサーバ101、100の順にデータをロックしようとする。そして、端末200から送信された更新トランザクションはサーバ100に格納されているデータをロックし、端末201から送信された更新トランザクションはサーバ101に格納されているデータをロックしているものとする。この場面で、端末200、201側では図5のステップS101の処理が終了している。トランザクション1に関し、サーバ100側では、図6のステップS204の処理中であり、サーバ101側では、図7のステップS301が終了している。また、トランザクション2に関し、サーバ101側では、図7のステップS304の処理中であり、サーバ100では、図6のステップS201が終了している。
トランザクション1に関し、サーバ101は、データをロックしようとする(図7:ステップS302)。しかし、トランザクション2がそのデータをロックしているので、ロックに失敗する。したがって、サーバ101は、ロックに失敗したと判別する(ステップS303:NO)。次に、サーバ101は、タイムアウト管理部から当該ロック要求に関しタイムアウトが通知されているか否かに基づいて、データのロックに関し、タイムアウトが発生したか否かを判別する(ステップS309)。上述したように、サーバ100のタイムアウト時間がサーバ101のタイムアウト時間より短く設定されているため、タイムアウトが発生していないと判別する(ステップS309:NO)。したがって、サーバ101は、ステップS302に処理を戻す。
一方、トランザクション2に関し、サーバ100は、データをロックしようとする(図6:ステップS202)。しかし、トランザクション1がそのデータをロックしているので、ロックに失敗する。したがって、サーバ100は、ロックに失敗したと判別する(ステップS203:NO)。次に、サーバ100は、タイムアウト管理部113から当該ロック要求に関しタイムアウトが通知されているか否かに基づいて、データのロックに関し、タイムアウトが発生したか否かを判別する(ステップS209)。タイムアウトが発生していないと判別した場合には(ステップS209:NO)、サーバ100は処理をステップS202に戻し、データのロックをリトライする。上述したように、サーバ100のタイムアウト時間がサーバ101のタイムアウト時間より短く設定されているため、何回かロックをかけることをリトライしているうちに、タイムアウトが発生する。すると、サーバ100はタイムアウトが発生したと判別し(ステップS209:YES)、端末201に対し、トランザクション2のロックが失敗したことを示す旨の情報を送信する(ステップS210)。トランザクション2に関し、データ更新処理は異常終了する。このとき、ロック管理部112は、異常終了であるので、対応するロック情報は削除しない。
すると、端末201は、サーバ100からトランザクション2のロックが失敗したことを示す旨の情報を受信する。すると、ステップS102では、データのロックに失敗したと判別し(図5:ステップS102:NO)、サーバ100と101に対して、ロック解除の指示を出す(ステップS105)。そして、ステップS101に処理を戻し、再び、サーバ101にデータのロックの指示を出す。ただ、トランザクション1が当該データに対しロックをかけている間は、再びタイムアウトが発生し、ステップS101とS102とS105を繰り返す。
トランザクション2に関し、サーバ101は、端末201からロックの解除を指示する旨の情報を受信すると(図7:ステップS305:YES)、トランザクション2がすべてのデータベース上のデータに対しロックを獲得できなかったと判別し、トランザクション2がかけたロックを解除し(ステップS308)、データ更新処理を異常終了する。この時、ロック管理部は、対応するロック情報とリンク情報とを削除する。同様に、サーバ100も、トランザクション2に関し、データ更新処理を異常終了する。この時、ロック管理部112は、対応するロック情報とリンク情報とを削除する。
トランザクション1に関し、サーバ101は、データをロックしようとする(図7:ステップS302)。しかし、トランザクション2がそのデータをロックしているので、ロックに失敗する。したがって、サーバ101は、ロックに失敗したと判別し(ステップS303:NO)、次に、サーバ101のタイムアウト管理部から当該ロック要求に関しタイムアウトが通知されているか否かに基づいて、データのロックに関し、タイムアウトが発生したか否かを判別する(ステップS309)。タイムアウトが発生していないと判別した場合には、サーバ101は処理をステップS302に戻し、データのロックをリトライする。
上述したように、サーバ100のタイムアウト時間がサーバ101のタイムアウト時間より短く設定されているため、タイムアウトが発生する前に、トランザクション2に関し、サーバ101がかけたロックが解除され、サーバ101は当該データをロックできる。サーバ101は、トランザクション1のためにデータをロックできると、データがロックできたことを示す旨の情報を端末200に送信する。
端末200は、サーバ101からデータがロックできたことを示す旨の情報を受信すると、すべてのサーバにおいて、データをロックできたと判別し(図5:ステップS102:YES)、データ更新の指示をサーバ100と101とに送信する(ステップS103)。以下の処理動作は第1の動作例と同一である。
トランザクション1によりデータが更新された後、端末201がデータのロックをサーバ100と101とに要求すると(ステップS101)、サーバ101と100とは、データをロックする(図7:ステップS302、図6:ステップS202)。以下の処理動作は第1の動作例と同一である。
なお、2つの更新トランザクションが同じデータを更新するものの、本動作例よりも更新するタイミングの差がもう少し長い場合(データをロックする順序は本動作例と同一とする)は、先に実行されている更新トランザクションはデータのロックを再試行することなく、データを更新することができる。そして、後に実行される更新トランザクションは最初にロックをかけようとしたときに、リトライを繰り返す。
なお、本動作例では、理解を容易にするため、サーバ100のデータ更新処理のフローとサーバ101のデータ更新処理のフローとが異なるものとしていた。しかし、タイムアウト時間を運用途中で変更することも考えられる。サーバ間でタイムアウト時間がどのように設定されていたとしても、上述の動作を実現できるようにするため、サーバ100のデータ更新処理のフローはサーバ101のデータ更新処理のフローと同一であることが望ましい。
以上説明したように、上記実施の形態にかかるデータベースシステム1によれば、複数の更新トランザクションのデータをロックする順序が異なることを判別し、その場合に最もタイムアウト時間の短いサーバ内のデータベースに対して、ロックを行った更新トランザクションがデータを最初に更新する。他の更新トランザクションは獲得したロックを解除されるので、再びロックの獲得からやり直す。データベースシステム1がこのように動作するため、各データベースに格納されるデータに不整合が発生しない。なお、3つ以上の更新トランザクションが競合したとしても、最もタイムアウト時間の短いサーバ内のデータベースに対して、上述した処理動作により、ロックを行った更新トランザクションがデータを最初に更新できる。
なお、本発明は上記実施の形態に限定されず、種々の変形および応用が可能である。例えば、上記実施の形態では、クライアントサーバ方式のデータベースシステムの場合を説明したが、データベースサーバ100とクライアント端末200との機能を合わせ持つ情報処理装置により、上記データベースシステムを構築してもよい。この場合、その情報装置はデータベースの複製を複数格納し、上述した処理動作を実行する。
また、データベースサーバの台数とクライアント端末の台数とは、上記実施例に開示した数に限られるものではなく、それぞれ任意の台数であってもよい。データのロックに関し、1つのデータベースのタイムアウト時間が他のデータベースのタイムアウト時間よりも短く設定されていれば、この場合のデータベースシステムは上記実施の形態で説明した更新処理を実行することができる。
また、上記動作例2では、ロック解除の指示が端末側から出されていたが、これをデータベースサーバ同士間で行うようにしてもよい。この場合、データベースサーバ側から端末側にはロックを解除した旨を示す情報が送信され、端末側ではその情報を受信してロック獲得のリトライを行う。
なお、本発明の実施の形態にかかるデータベースサーバ100およびクライアント端末200を実現するための情報処理装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、汎用コンピュータに、上述の処理を実行するためのプログラムを格納した媒体(CD−ROMなど)から当該プログラムをプログラム格納部120にインストールすることにより、上述の処理を実行するデータベースサーバ100を構成することができる。
また、上述の機能を、OS(Operating System)とアプリケーションとの分担、またはOSとアプリケーションとの協動により実現する場合などには、OS以外の部分のみを媒体に格納してもよい。
また、搬送波にプログラムを重畳し、通信ネットワークを介して配信することも可能である。例えば、通信ネットワーク上の掲示板(BBS、Bulletin Board System)に該プログラムを掲示し、ネットワークを介して該プログラムを配信してもよい。そして、このプログラムを起動し、オペレーティングシステムの制御下で、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行できるように構成しても構わない。
本発明の実施の形態にかかるデータベースシステムの構成を示すブロック図である。 図1のデータベースサーバの構成を示すブロック図である。 図2の制御部に実現される機能を示す機能ブロック図である。 図1のクライアント端末の構成を示すブロック図である。 データ更新処理を説明するためのフローチャートである。 データ更新処理を説明するためのフローチャートである。 データ更新処理を説明するためのフローチャートである。
符号の説明
1 データベースシステム
100、101 データベースサーバ
110 制御部
120 プログラム格納部
13 入力装置
130 入力制御部
14 出力装置
140 出力制御部
150 通信制御部
160 データベース
200、201 クライアント端末
21 制御部
22 記憶部
23 入力部
24 出力部
25 通信制御部

Claims (5)

  1. 同一の内容が複製されている複数のデータベースを格納するデータベースシステムであって、
    データを更新するトランザクションを受け付ける受け付け手段と、
    前記受け付け手段で受け付けたトランザクションで指定されたデータに対応する各データベース上のデータを指定された順序でデータベース毎にロックする排他制御手段と、
    前記排他制御手段でデータがロックされた場合に、ロックされたデータを更新するデータ更新手段と、
    を具備し、
    前記排他制御手段は、
    前記受け付け手段において、ほぼ同時に同一のデータを更新する複数のトランザクションを受け付けた場合に、
    該複数のトランザクションがデータをロックする順序が異なるか否かを判別し、
    前記複数のトランザクションのデータをロックする順序が異なることを判別した場合に、さらに該複数のトランザクションのうち、所定の基準に従って、データの更新を許可すべきトランザクションを判別し、
    該更新を許可すべきトランザクションのために前記データをロックすること、
    を特徴とするデータベースシステム。
  2. 前記排他制御手段は、該更新を許可すべきトランザクションでないトランザクションが前記データをロックしている場合には、そのロックを解除した後に、更新を許可すべきトランザクションのために前記データをロックする、ことを特徴とする請求項1に記載のデータベースシステム。
  3. 1つのデータベースに対し、データのロックに関し、他のデータベースと比較して短いタイムアウト時間が設定されており、
    前記排他制御手段は、
    データをロックする順序が異なることを、タイムアウトが発生したか否かにより判別し、
    前記複数のトランザクションのうち、最も短いタイムアウト時間が設定されているデータベース上のデータをロックしているトランザクションを前記更新を許可すべきトランザクションとして判別するものであること、
    を特徴とする請求項1または2に記載のデータベースシステム。
  4. 同一の内容が複製されている複数のデータベースを格納するデータベースシステムが、
    データを更新するトランザクションを受け付ける受け付けステップと、
    前記受け付けステップで受け付けたトランザクションで指定されたデータに対応する各データベース上のデータを指定された順序でデータベース毎にロックする排他制御ステップと、
    前記排他制御ステップでデータがロックされた場合に、ロックされたデータを更新するデータ更新ステップと、
    を備え、
    前記排他制御ステップは、
    前記受け付けステップにおいて、ほぼ同時に同一のデータを更新する複数のトランザクションを受け付けた場合に、該複数のトランザクションがデータをロックする順序が異なるか否かを判別し、
    複数のトランザクションのデータをロックする順序が異なることを判別した場合に、該複数のトランザクションのうち、所定の基準に従って、データの更新を許可すべきトランザクションを判別し、該更新を許可すべきトランザクションのために前記データをロックすること、
    を特徴とするデータベース不整合回避方法。
  5. 同一の内容が複製されている複数のデータベースを格納するコンピュータ装置を、
    データベースに格納されているデータを更新するトランザクションを受け付け、
    前記トランザクションで指定されたデータベース上のデータを指定された順序でロックして、
    ロックされたデータを更新する、
    データベース装置であって、
    ほぼ同時に同一のデータを更新する複数のトランザクションを受け付けた場合に、該複数のトランザクションのデータをロックする順序が異なるか否かを判別し、
    ロックする順序が異なる場合に、
    前記複数のトランザクションのうち、所定の基準に従って、データの更新を許可すべきトランザクションを判別し、
    該更新を許可すべきトランザクションのために前記データをロックする、
    データベース装置として機能させることを特徴とするプログラム。
JP2004129170A 2004-04-26 2004-04-26 データベースシステム、データベース不整合回避方法およびプログラム Expired - Fee Related JP4476011B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004129170A JP4476011B2 (ja) 2004-04-26 2004-04-26 データベースシステム、データベース不整合回避方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004129170A JP4476011B2 (ja) 2004-04-26 2004-04-26 データベースシステム、データベース不整合回避方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2005310012A true JP2005310012A (ja) 2005-11-04
JP4476011B2 JP4476011B2 (ja) 2010-06-09

Family

ID=35438682

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004129170A Expired - Fee Related JP4476011B2 (ja) 2004-04-26 2004-04-26 データベースシステム、データベース不整合回避方法およびプログラム

Country Status (1)

Country Link
JP (1) JP4476011B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008276475A (ja) * 2007-04-27 2008-11-13 Daiwa Securities Group Inc データ処理システム、端末装置及びプログラム
US8701111B2 (en) 2008-07-09 2014-04-15 International Business Machines Corporation Lock windows for reducing contention

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008276475A (ja) * 2007-04-27 2008-11-13 Daiwa Securities Group Inc データ処理システム、端末装置及びプログラム
JP4486108B2 (ja) * 2007-04-27 2010-06-23 株式会社大和証券グループ本社 データ処理システム、端末装置及びプログラム
US8701111B2 (en) 2008-07-09 2014-04-15 International Business Machines Corporation Lock windows for reducing contention

Also Published As

Publication number Publication date
JP4476011B2 (ja) 2010-06-09

Similar Documents

Publication Publication Date Title
JP4241940B2 (ja) 分散形データベース内でトランザクションをするための方法
US5802062A (en) Preventing conflicts in distributed systems
US9229827B2 (en) Storage management system for preserving consistency of remote copy data
US7693882B2 (en) Replicating data across the nodes in a cluster environment
JP2022515949A (ja) トランザクション処理方法、装置、機器並びにコンピュータプログラム
CN108710638B (zh) 一种基于混合rdma操作的分布式并发控制方法及系统
US10242027B2 (en) Three phase commit for a distributed file system
US9411869B2 (en) Replication between sites using keys associated with modified data
US10114848B2 (en) Ensuring the same completion status for transactions after recovery in a synchronous replication environment
EP1386234A2 (en) Resource action in clustered computer system incorporating prepare operation
EP3193256B1 (en) A fault-tolerant data processing computer system and method for implementing a distributed two-tier state machine
KR20060043196A (ko) 동적 피어-투-피어 환경에서 상호 배제 기술을 사용하는 방법 및 장치
WO2022170979A1 (zh) 日志执行方法、装置、计算机设备及存储介质
JP3445797B2 (ja) 最適化された同期化プロシージャ
CN115098229A (zh) 事务处理方法、装置、节点设备及存储介质
KR20140047230A (ko) 분산 시스템에서 분산 트랜잭션의 최적화를 위한 방법 및 트랜잭션을 최적화한 분산 시스템
CN112995262B (zh) 分布式事务提交方法、系统及计算设备
JPWO2006057061A1 (ja) 分散トランザクション処理方法、装置、及びプログラム
JP4379369B2 (ja) ファイル管理システム、監視サーバ、監視方法、及び、プログラム
CN115495495A (zh) 事务处理方法、分布式数据库系统、集群及介质
JP4476011B2 (ja) データベースシステム、データベース不整合回避方法およびプログラム
US20080276117A1 (en) End-to-end transactional protection for requests in a web application
JP2007264770A (ja) データベースアクセス方法及び装置
US6601069B2 (en) Synchronization using commitment
US6772176B1 (en) Coordinating a distributed transaction between participants unable to follow a two-phase commit

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070131

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091006

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091020

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091218

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100309

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100309

R150 Certificate of patent or registration of utility model

Ref document number: 4476011

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140319

Year of fee payment: 4

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

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