JP5069337B2 - 分散データ管理システム、データサーバ、トランザクションサーバ、分散データ管理方法、プログラム - Google Patents

分散データ管理システム、データサーバ、トランザクションサーバ、分散データ管理方法、プログラム Download PDF

Info

Publication number
JP5069337B2
JP5069337B2 JP2010120468A JP2010120468A JP5069337B2 JP 5069337 B2 JP5069337 B2 JP 5069337B2 JP 2010120468 A JP2010120468 A JP 2010120468A JP 2010120468 A JP2010120468 A JP 2010120468A JP 5069337 B2 JP5069337 B2 JP 5069337B2
Authority
JP
Japan
Prior art keywords
lock
data
statement
transaction
server
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.)
Active
Application number
JP2010120468A
Other languages
English (en)
Other versions
JP2011248584A (ja
Inventor
正圭 韓
大子郎 横関
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2010120468A priority Critical patent/JP5069337B2/ja
Publication of JP2011248584A publication Critical patent/JP2011248584A/ja
Application granted granted Critical
Publication of JP5069337B2 publication Critical patent/JP5069337B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、複数のデータサーバにデータを分散して格納する分散データ管理システムにおいて、デッドロックを回避する技術に関する。
複数の処理主体(プロセス、クライアント等)が同じデータを同時に更新すると、データの整合性が崩れてしまうという問題がある。この問題を解決するために、一般的にロック手法が用いられている。
ロック手法では、処理主体は、データを参照/更新する前に、そのデータのロックを取得し、そのデータを参照/更新した後にロックを解放する。ある処理主体がロックを取得している場合は、他の処理主体は、ロックが解放されるまでそのデータにアクセスできない。そのため、複数の処理主体が同じデータに同時にアクセスする場合でも、ロックにより、ある瞬間には1つの処理主体のみがそのデータにアクセスすることが保障される。
しかし、複数の処理主体が同じ複数のデータに同時にアクセスする場合、ロックの取得順序によってはデッドロックが起こり得る。例えば、処理主体1と2がともにデータA,Bにアクセスする必要があり、処理主体1がデータA,Bの順にアクセスし、処理主体2がデータB,Aの順にアクセスするものとする。最初のアクセスにおいては、処理主体1はデータAを、処理主体2はデータBを、それぞれロック可能である。しかし、処理主体1が次にアクセスすることが必要なデータBは処理主体2にロックされ、処理主体2が次にアクセスすることが必要なデータAは処理主体1にロックされているため、処理主体1,2は、それぞれ他の処理主体のロックの解放を待つことになる。従って、処理主体1,2は、互いが必要なデータのロックを解放しないまま、無限にロック解放を待っている状態になる。この現象がデッドロックである。
1つのサーバ内では、異なるプロセス同士でロックの取得順序を一致させるという手法によりデッドロックを回避できる。
一方、大量のデータを格納することおよび多数のクライアントからの要求に対して高いスループットを達成することを目的とし、複数のデータサーバにデータを分散して格納する分散データ管理システムでは、上記手法を用いてもデッドロックが起こり得る。
分散データ管理システムのクライアントは、性能向上のために、複数のデータサーバに対し、データのロック要求を並列伝送することがある。ここで、並列伝送とは、あるデータサーバに先に伝送したロック要求に対するロック取得可否の結果を待たずに、他のデータサーバにロック要求を伝送することである。例えば、データAはデータサーバ1に、データBはデータサーバ2に、それぞれ存在するものとする。この場合、クライアント1と2が共にロック要求をデータサーバ1,2の順に伝送したとしても、ネットワークの伝送タイミングによっては、データサーバ1に存在するデータAはクライアント1,2の順にロックが取得され、データサーバ2に存在するデータBはクライアント2,1の順にロックが取得される可能性がある。そうすると、クライアント1,2のロックの取得順序は同じにならないため、デッドロックが起こり得る。
このような分散環境でのデットロックを回避するために様々な方式が提案されている。その中に資源グラフを用いる方式がある。この方式は、現状の資源と資源を要求しているものとの関係をグラフで表現し、グラフでサイクルを見つけることによりデットロックを検知し、関連プロセスを再実行させる方式である。この方式は、グラフを格納し計算するデータサーバの個数に応じて、ORACLE RAC(非特許文献1)のようなグローバルデッドロックグラフ方式と、分散デッドロックグラフ方式と、に分けることができる。しかし、これらの方式は、データサーバ間の通信と情報の同期とが必要であるため、1つのデータサーバまたは情報同期のための通信がシステム性能のボトルネックになる。
分散環境でのデットロックを回避するその他の方式として、タイムスタンプ方式(非特許文献2)がある。タイムスタンプ方式は、クライアントのトランザクションに対してシステム全体でユニークなトランザクション識別子(以下、TxID)を与え、ロックが競合した場合には、競合したロックの優先度を評価するロック評価を行い、例えば、TxIDが大きいトランザクションにロックをキャンセルさせることにより、データサーバ間の通信なしにデットロックを回避できる方式である。具体的には、トランザクションが発行された時間のタイムスタンプがTxIDになる。例えば、あるデータAに対して、TxIDが大きいトランザクションが既にロックを取得している時に、TxIDが小さいトランザクションが同じデータAのロックを取得しようとすると、すでにロックを取得しているトランザクションはロックがキャンセルされてロールバックされ、TxIDが小さいトランザクションがデータAのロックを取得する。これにより、複数データサーバへのロック要求の到達順が変わってしまった場合も、各トランザクションのロックの取得順序は同じになり、その結果、デッドロックを回避できる。
"ORACLE RAC"、[平成22年4月19日検索]、インターネット<URL: http://www.oracle.com/technology/products/database/clustering/index.html> 16.6.1 Deadlock Prevention, p615-617, "DATABASE System Concepts", SilberSchats, Korth, Sudarshan, published by Mc Graw Hill,McGraw-Hill Science, ISBN-13: 978-0072958867 16.4 Multiple Granularity(多粒度ロック), p609~612, "DATABASE System Concepts", SilberSchats, Korth, Sudarshan, published by Mc Graw Hill,McGraw-Hill Science, ISBN-13: 978-0072958867
しかし、上述のようなタイムスタンプ方式でデットロックを回避する手法には、以下の2つの問題がある。
第1の問題は、トランザクションが広範囲の連続したデータをロックすると、ロック評価の回数が増える。例えば、あるトランザクションが1000個の連続したデータを操作する場合、1000個のデータのそれぞれについて個別にロック評価を行う必要があり、システム性能の低下につながる。広範囲のロックを管理するための技術として、多粒度ロック方式(非特許文献3)がある。多粒度ロック方式では、ロックは、他のオブジェクトを含んだオブジェクトに対して設定される。つまり、多粒度ロック方式は、「包含関係」の階層構造の性質を利用する。例えば、データベースにはファイルがあり、ファイルにはページがあり、ページにはレコードがある。これをオブジェクトの木構造と捉え、各ノード下に子ノードが包含されているとする。そして、あるノードをロックするだけで、そのノード下のノード群をまとめてロックする。多粒度ロック方式のより具体的な内容は、非特許文献3を参照すればわかるため、ここでの説明は省略する。しかし、多粒度ロック方式は、タイムスタンプを考慮しておらず、タイムスタンプをそのまま適用すると、後述のように、あるトランザクションが自分でロックを取得できないにも拘らず、自分よりもタイムスタンプが大きいトランザクションが取得済みの既存ロックをキャンセルさせてしまうことがあり、同時実行性能が下がってしまう。これが第1の問題である。
第2の問題は、TxIDが大きいトランザクションがデータのロックを取得した後に、TxIDが小さいトランザクションのロック要求が到着すると、TxIDが大きいトランザクションは、たとえデッドロックの可能性がなくても、ロールバックされてしまうということである。
上記の2つの問題について、図13および図14を用いて説明する。
図13では、4つの異なるトランザクションTx0,Tx2,Tx3,Tx5が、多粒度ロック方式でデータをロックしており、それぞれ0,2,3,5のタイムスタンプを持つとする。また、データの更新および参照の両方をロックする排他ロックはXで表し、データの更新のみをロックする参照ロックはSで表す。また、下位ノードのいずれかに排他ロックが存在するロックはIXで表し、下位ノードのいずれかに参照ロックが存在するロックはISで表す。また、ノードNLはロックなしを表す。また、SIXは、該当ノードに参照ロックが存在し、該当ノードの下位ノードのいずれかに排他ロックが存在することを表す。同時にロック取得が可能なロックの組み合わせを示すロック表は、図13の通りであり、Yesの場合は、同時にロック取得可能であり、NOの場合は、後からロック要求が到着したロックが待つ。各ロックの右の番号はそのロックを取得しているまたはそのロックを待っているトランザクションの番号である。例えば、X0は、トランザクションTx0がデータAに対して取得している排他ロックを意味する。
図13では、Tx0,Tx3,Tx5が、それぞれデータA,D,BをXロックしている状態で、Tx2がデータA〜DをSロックしようとしている。従って、この状態では、ルートノード(最上位ノード。ノード1)およびノード2はTx0,Tx3,Tx5によりIXロックされ、ノード4はTx0,Tx5によりIXロックされ、ノード5はTx3によりIXロックされ、最終的に、データAがTx0によりXロックされ、データBがTx5によりXロックされ、データDがTx3によりXロックされている。Tx2はデータA〜DをSロックしようとしているため、上位のノード2をSロックする必要がある。ロック表に従うと、ノード1はISでロック可能だが、ノード2はIXとSが競合する。一般的な多粒度ロック方式であれば、タイムスタンプを適用しないため、Tx2は、ノード2に対して先にロックを取得しているトランザクションがロックを解除するのを待つ。従って、Tx2は、Tx0,Tx3,Tx5がXロックを解除し、結果的にノード2のIX0,IX3,IX5が解除されるまで、ノード2のSロックを取得できない。
次に、図13のケースで、多粒度ロック方式にタイムスタンプを適用した場合の問題について、図14を用いて説明する。タイムスタンプ方式では、トランザクションのロックが競合すると、トランザクションのタイムスタンプを比較し、タイムスタンプが大きいトランザクションにロックをキャンセルさせる。そのため、図13のように、ノード2がTx0,Tx3,Tx5によりIXロックされている状態で、Tx2がノード2のSロックを取得する場合、Tx3,Tx5はTx2よりもタイムスタンプが小さいため、IX3とIX5がS2によりキャンセルされる。これにより、ノード2の下位のデータB,DにかかっていたXロックもキャンセルされる。しかし、Tx2よりもタイムスタンプが小さいTx0によりノード2がIXロックされているため、Tx2は、他のTx3,Tx5が取得したIX3,IX5をキャンセルさせながらも自分がロックを取得することができない。その結果、Tx3,Tx5を意味もなくロックキャンセルによりロールバックさせてしまうことになり、同時実行性能が下がり、システム性能が低下してしまう(第1の問題)。
また、Tx0が存在しないとしても、Tx3,Tx5が取得したデータB,DのXロックがデッドロックの可能性のないロックだった場合も、Tx3,Tx5のロックがキャンセルされ、Tx3,Tx5がロールバックしてしまう(第2の問題)。
ここで、トランザクションは複数のステートメント(データ参照命令やデータ更新命令)で構成されるのが一般的であり、そのうち1つのステートメントでもロールバックされると、全体のトランザクションがロールバックされてしまう。
従って、トランザクション内のステートメントのうちの1つにも、上記の2つの問題に示したようなロールバックをさせないことが、システム性能向上の観点で重要である。
そこで、本発明の目的は、トランザクション内のステートメントに対し、上記の2つの問題のいずれかに示したロールバックをさせないことができる分散データ管理システム、データサーバ、トランザクションサーバ、分散データ管理方法、プログラムを提供することにある。
本発明の分散管理システムは、
トランザクションを発行するトランザクションサーバと、該トランザクションで用いるデータを分散して格納する複数のデータサーバと、を有してなる分散データ管理システムであって、
前記トランザクションサーバは、
トランザクション内のステートメント毎に、該ステートメントで用いるデータに対するロック要求を前記データサーバに伝送する分散ロック状態管理装置を有し、
前記複数のデータサーバの各々は、
自サーバで格納するデータの階層関係を管理し、前記トランザクションサーバからステートメントのロック要求を受けると、階層関係のルートノードから、ロック要求をしてきたステートメントで用いるデータを持つ下位ノードまでを1つのグループとして該グループの各ノードのロックを取得させることとし、該グループにおいて既に他のトランザクションのステートメントがロックを取得している場合、ロック要求をしてきたステートメントのトランザクションに一意に付与される特定値を、グループの他のトランザクションの中の最小の特定値と比較し、最小の特定値よりも小さい場合にグループのロックを取得させるロック管理装置を有する。
本発明のデータサーバは、
トランザクションサーバにて発行されたトランザクションで用いるデータを分散して格納する複数のデータサーバのうちの1つのデータサーバであって、
自サーバで格納するデータの階層関係を管理し、前記トランザクションサーバから、トランザクション内のステートメントで用いるデータに対するロック要求を受けると、階層関係のルートノードから、ロック要求をしてきたステートメントで用いるデータを持つ下位ノードまでを1つのグループとして該グループの各ノードのロックを取得させることとし、該グループにおいて既に他のトランザクションのステートメントがロックを取得している場合、ロック要求をしてきたステートメントのトランザクションに一意に付与される特定値を、グループの他のトランザクションの中の最小の特定値と比較し、最小の特定値よりも小さい場合にグループのロックを取得させるロック管理装置を有する。
本発明のトランザクションサーバは、
データを分散して格納する複数のデータサーバに対し、トランザクションを発行するトランザクションサーバであって、
トランザクション内のステートメント毎に、該ステートメントで用いるデータに対するロック要求を前記データサーバに伝送し、さらに、該ステートメントが、1つのデータサーバにのみロック要求をする場合、および、複数のデータサーバにロック要求をしたロックを全て取得した場合は、該ステートメントにデッドロックの可能性がない旨を、該ステートメントのロック要求の伝送先のデータサーバに通知する分散ロック状態管理装置を有する。
本発明の分散データ管理方法の一態様は、
トランザクションを発行するトランザクションサーバと、該トランザクションで用いるデータを分散して格納する複数のデータサーバと、を有してなる分散データ管理システムによる分散データ管理方法であって、
前記複数のデータサーバの各々が、自サーバで格納するデータの階層関係を管理し、前記トランザクションサーバからステートメントのロック要求を受けると、階層関係のルートノードから、ロック要求をしてきたステートメントで用いるデータを持つ下位ノードまでを1つのグループとして該グループの各ノードのロックを取得させることとし、
前記トランザクションサーバが、トランザクション内のステートメント毎に、該ステートメントで用いるデータに対するロック要求を前記データサーバに伝送するステップと、
前記トランザクションサーバからステートメントのロック要求を受けたデータサーバが、該ステートメントにロックを取得させるグループにおいて既に他のトランザクションのステートメントがロックを取得している場合、ロック要求をしてきたステートメントのトランザクションに一意に付与される特定値を、グループの他のトランザクションの中の最小の特定値と比較し、最小の特定値よりも小さい場合にグループのロックを取得させるステップと、を有する。
本発明の分散データ管理方法の他の態様は、
トランザクションサーバにて発行されたトランザクションで用いるデータを分散して格納する複数のデータサーバのうちの1つのデータサーバによる分散データ管理方法であって、
自サーバで格納するデータの階層関係を管理し、前記トランザクションサーバから、トランザクション内のステートメントで用いるデータに対するロック要求を受けると、階層関係のルートノードから、ロック要求をしてきたステートメントで用いるデータを持つ下位ノードまでを1つのグループとして該グループの各ノードのロックを取得させることとし、
前記トランザクションサーバから、ステートメントのロック要求を受けると、該グループにおいて既に他のトランザクションのステートメントがロックを取得している場合、ロック要求をしてきたステートメントのトランザクションに一意に付与される特定値を、グループの他のトランザクションの中の最小の特定値と比較し、最小の特定値よりも小さい場合にグループのロックを取得させるロック取得ステップを有する。
本発明の分散データ管理方法のさらに他の態様は、
データを分散して格納する複数のデータサーバに対し、トランザクションを発行するトランザクションサーバによる分散データ管理方法であって、
トランザクション内のステートメント毎に、該ステートメントで用いるデータに対するロック要求を前記データサーバに伝送するステップと、
ステートメントが、1つのデータサーバにのみロック要求をする場合、および、複数のデータサーバにロック要求をしたロックを全て取得した場合は、該ステートメントにデッドロックの可能性がない旨を、該ステートメントのロック要求の伝送先のデータサーバに通知するステップと、を有する。
本発明のプログラムの一態様は、
前記分散データ管理方法を前記データサーバに実行させる。
本発明のプログラムの他の態様は、前記分散データ管理方法を前記トランザクションサーバに実行させる。
本発明によれば、データサーバは、自サーバで格納するデータの階層関係を管理し、トランザクションサーバからステートメントのロック要求を受けると、階層関係のルートノードから、ロック要求をしてきたステートメントで用いるデータを持つ下位ノードまでを1つのグループとして該グループの各ノードのロックを取得させることとする。もし、該グループにおいて既に他のトランザクションのステートメントがロックを取得している場合、ロック要求をしてきたステートメントのトランザクションに一意に付与される特定値(例えば、タイムスタンプ)を、グループの他のトランザクションの中の最小の特定値と比較し、最小の特定値よりも小さい場合にグループのロックを取得させる。
このように、グループのトランザクションの中の最小のタイムスタンプよりも小さい場合に、ステートメントにロックを取得させるため、そのステートメントがロックを取得できないケースで、必要のないロックがキャンセルさせられることを抑止できる。
よって、多粒度ロック方式にタイムスタンプを適用した場合に、他のトランザクションのステートメントが取得したロックを意味なくキャンセルさせることにより同時実行性能が下がるという問題を回避できる。
本発明の第1の実施形態の分散データ管理システムの構成を示す図である。 本発明の第2の実施形態の分散データ管理システムの構成を示す図である。 図2に示したトランザクションサーバで管理するロック状態情報を説明する図である。 図2に示したデータサーバで管理するロック管理情報を説明する図である。 図2に示したデータサーバにおけるロック取得の全体動作を説明するフローチャートである。 図5に示したステップ502における個別ノードのロック取得処理を説明するフローチャートである。 図6に示したステップ607における他ロックのキャンセル処理を説明するとともに他ロックの解除処理を説明するフローチャートである。 図2に示したデータサーバにおけるロック要求情報の優先フラグの変更動作を説明する図である。 図2に示した分散データ管理システムにおいて、トランザクションサーバからデータサーバへのロック要求の伝送時の具体的な処理の流れを説明する図である。 図2に示したデータサーバにおける待ちロックキュー内のロック要求同士のロック評価動作を説明するフローチャートである。 図2に示したデータサーバにおける取得ロックキュー内のロック要求同士のロック評価動作を説明するフローチャートである。 図2に示したデータサーバにおける待ちロックキュー内のロック要求と取得ロックキュー内のロック要求とのロック評価動作を説明するフローチャートである。 タイムスタンプ方式でデットロックを回避する従来手法の問題を説明する図である。 タイムスタンプ方式でデットロックを回避する従来手法の問題を説明する図である。
以下に、本発明を実施するための形態について図面を参照して説明する。
(1)第1の実施形態
(1−1)第1の実施形態の構成
図1に、本実施形態の分散データ管理システムの構成を示す。
図1に示すように、本実施形態の分散データ管理システムは、データサーバ1と、トランザクションサーバ2と、を有している。
データサーバ1は、記憶装置11と、記憶装置11のデータに識別子を付与して管理し、識別子で指定したデータを参照/更新することが可能なデータ管理機構(不図示)と、を有している。また、このデータ管理機構の一構成要素として、ロック管理装置12が設けられている。また、データサーバ1は、ネットワークを介してトランザクションサーバ2から伝送されてきたデータを記憶装置11に格納し、記憶装置11から読み出したデータをトランザクションサーバ2に伝送することが可能である。本分散データ管理システムでは、データは、複数のデータサーバ1に一定の順序で排他的に分散されて格納される。
トランザクションサーバ2は、データサーバ1と通信可能な計算機であって、あるデータの参照/更新の順列に対して原子性、整合性、隔離性、永続性のACID特性を保障するトランザクション管理機構(不図示)を有している。また、このトランザクション管理機構の一構成要素として、分散ロック状態管理装置21が設けられている。なお、このトランザクション管理機構は、データサーバ1とトランザクションサーバ2の両方に分散して配置し、データサーバ1とトランザクションサーバ2が協調してトランザクションを管理することも可能である。
トランザクションサーバ2は、トランザクションで用いるデータが格納されているデータサーバ1にそのデータのロック要求を伝送し、データサーバ1は、トランザクションサーバ2からロック要求されたロックを取得する。ロックが取得されると、以降、トランザクションサーバ2は、ロックを取得したデータにアクセスすることが可能となる。
なお、トランザクションサーバ2は、同時に複数のデータサーバ1に接続し、各データサーバ1にデータのロック要求を伝送することが可能であり、データサーバ1は、複数のトランザクションサーバ2からのロック要求を同時に処理することが可能である。
また、トランザクションサーバ2は、複数のデータサーバ1にロック要求を伝送する時、あるデータサーバ1に先に伝送したロック要求に対するロック取得可否の結果を待たずに、他のデータサーバ1へロック要求を伝送する並列伝送を基本とする。
データサーバ1およびトランザクションサーバ2は、上記機能を備えるものならどのような機器でもよい。また、ネットワーク上の伝送方式は、データサーバ1およびトランザクションサーバ2が相互にデータを送受信可能であれば具体的な伝送方式を問わない。
また、トランザクションサーバ2は、上記機能を備えるものなら、分散データ管理システム内の専用サーバでも、データサーバ1を利用するクライアント(アプリケーション)でもいい。
(1−2)第1の実施形態の動作
ロック管理装置12は、各データサーバ1に備えられ、各データサーバ1のロック管理装置12は、タイムスタンプを用いて、次の方式で同じ動作する。
ロック管理装置12は、データの階層関係を管理し、トランザクションサーバ2からトランザクション内のステートメント毎のロック要求を受け取ると、階層関係のルートノードから、そのステートメントで用いるデータを持つ下位ノードまでを1つのグループとし、そのグループの各ノードのロックを取得させる。
この時、ロック管理装置12は、ステートメントがロック要求をしたグループにおいて既に他のトランザクションのステートメントがロックを取得している場合(ロックが競合した場合)、ロック要求をしてきたステートメントのトランザクションに一意に付与される特定値を、グループの他のトランザクションの中の最小の特定値と比較し、最小の特定値よりも小さい場合にグループのロックを取得させる。なお、以下では、特定値がタイムスタンプであるものとして説明するが、特定値は、任意の2つの発行された値を比較すれば必ず大小を判断可能な値であれば、必ずしもタイムスタンプである必要はない。
このように、グループのトランザクションの中の最小のタイムスタンプよりも小さい場合に、ステートメントにロックを取得させるため、そのステートメントがロックを取得できないケースで、必要のないロックがキャンセルさせられることを抑止できる。
よって、多粒度ロック方式にタイムスタンプを適用した場合に、他のトランザクションのステートメントが取得したロックを意味なくキャンセルさせることにより同時実行性能が下がるという第1の問題を回避できる。
また、ステートメントが、1つのデータサーバ1にのみロック要求をした場合や、複数のデータサーバ1にロック要求をしたロックを全て取得した場合は、そのステートメントがロックを取得または取得しようとしているデータ範囲ではデッドロックの可能性がないと考えることが可能である。これは、ステートメントでデータ操作処理が可能であるため、いずれロックが解放されデッドロックにならないためである。
そこで、分散ロック状態管理装置21は、デッドロックの可能性がないステートメントを、ロック要求の伝送先のデータサーバ1に通知し、ロック管理装置12は、上記の通知を受けたステートメントのロック要求の優先フラグをTRUEにする。そして、ロック管理装置12は、グループで既にロックを取得した他のトランザクションのステートメントの中にロック要求の優先フラグがTRUEのトランザクションがある場合、ロック要求をしてきたステートメントには、タイムスタンプの値によらず、ロックを取得させない。
従って、デッドロックの可能性がないステートメントは、自分よりもタイムスタンプが小さいステートメントによりロックをキャンセルさせられることなくそのまま実行が可能であり、システム全体としてもデッドロックは起こらない。
よって、多粒度ロック方式にタイムスタンプを適用した場合に、デッドロックの可能性がないロックがキャンセルされるという第2の問題を回避できる。
以上の動作を、図13の例を用いて具体的に説明する。ここでは、図13のTxをステートメントと読み替えて説明を行うものとする。
図13の例の場合、ロック管理装置12は、ノード2において、S2とIX0,IX3,IX5のそれぞれとのタイムスタンプ比較を行いIX3,IX5をキャンセルさせて待ちロックリストに回すのではなく、タイムスタンプが最小のIX0のロックが解除されるまで待った後、S2とIX3,IX5とのタイムスタンプ比較を行う。これにより、Tx0がロックを解除し、IX0のロックが解除されるまでの間に、Tx3,Tx5の実行が終了すれば、Tx3,Tx5がS2によりキャンセルされずに済む。これにより、Tx3,Tx5に意味なくロックキャンセルをさせることにより同時実行性能が下がるという第1の問題を回避できる。
また、図13の例において、Tx5にデッドロックの可能性がないとする。この場合、分散ロック状態管理装置21は、Tx5にデッドロックの可能性がない旨をデータサーバ1に通知し、ロック管理装置12は、Tx5のIX5のロック要求の優先フラグをTRUEにする。そのため、Tx0が終了し、ノード2のIX0ロックが解除され、S2とIX3,IX5のそれぞれとのタイムスタンプ比較を行いIX3,IX5がS2によりロックをキャンセルされるケースでも、IX3はキャンセルされるが、IX5はキャンセルされない。これにより、デッドロックの可能性がないTx5がロックキャンセルされるという第2の問題を回避できる。
(2)第2の実施形態
(2−1)第2の実施形態の構成
(2−1−1)分散データ管理システムの全体構成
図2に、本実施形態の分散データ管理システムの構成を示す。なお、図2において、図1と同様の部分には同一の符号を付す。
本実施形態は、図1に示した第1の実施形態をより具体化した実施形態であり、分散データ管理システムの構成自体は、図2に示すように、位置管理サーバ3を追加した点が異なっている。
位置管理サーバ3は、データとデータを格納しているデータサーバ1とのマップを管理しており、トランザクションサーバ2からのデータの問い合わせに対して、そのデータが格納されているデータサーバ1を通知する。
なお、位置管理サーバ3は、上記機能を備えるものならどのような機器でもよい。また、ネットワーク上の伝送方式は、データサーバ1、トランザクションサーバ2、および位置管理サーバ3が相互にデータを送受信可能であれば具体的な伝送方式を問わない。
(2−1−2)トランザクションサーバ2の構成
次に、トランザクションサーバ2の構成について説明する。
トランザクションサーバ2の分散ロック状態管理装置21は、トランザクションサーバ2で発行された進行中のトランザクションとそのトランザクション内のステートメントとを、分散データ管理システム全体でユニークなトランザクション識別子(以下、TxID)とトランザクション内でユニークなステートメント識別子(以下、StID)とでそれぞれ管理する。StIDの付与の一例として、トランザクション毎のカウンターを利用する方法がある。カウンターの値はトランザクションの実行が開始された時を0とする。トランザクション内でステートメントが発行される度に、その時のカウンターの値をそのステートメントのStIDとし、カウンターの値を1つ増加させる。TxIDの詳細な説明は後述する。また、分散ロック状態管理装置21は、ステートメント単位で、そのステートメントにてロックを取得すべきデータ範囲を示すロック範囲およびそのロック範囲におけるロックの取得状態等を管理する。なお、ステートメントは、データサーバ1で管理している階層木のルートノード(最上位ノード)から、そのステートメントで用いるデータを持つ下位ノードまでを1つのグループと仮定し、そのグループの各ノードのロックを取得することになる。
以下、分散ロック状態管理装置21で管理するロック状態情報のデータ構造と分散ロック状態管理装置21の機能を説明する。
図3に、分散ロック状態管理装置21で管理するロック状態情報のデータ構造を示す。
分散ロック状態管理装置21は、トランザクション内のステートメント単位でロック状態情報を管理する。具体的には、図3に示すように、ステートメント毎に、そのステートメントのロック範囲およびそのロック範囲におけるロックの取得状態と、そのロック範囲のデータを格納するデータサーバ1の情報と、を示すロック状態情報を管理する。図3の下にロック状態情報の実体を示す。ロック状態情報は、トランザクションのTxIDと、そのトランザクション内のステートメントのStmtIDと、そのステートメントのロック範囲のデータを格納するデータサーバ1のIDおよび位置を示すデータサーバ情報と、そのロック範囲およびそのロック範囲におけるロックの取得状態を示すロック部分状態情報と、を含む。あるステートメントにてロックを取得すべきデータが複数のデータサーバ1に分散して格納されている場合には(例えば、StmtID24)、複数のデータサーバ1毎にロック状態情報が作成される。ロック部分状態情報のロック範囲は、連続したデータ範囲を示すものであり、そのデータ範囲の開始データの範囲開始キーと終了データの範囲終了キーとにより表される。ロック範囲が1つのデータサーバ1内で複数の連続した範囲になっている場合、その範囲毎にロック部分状態情報が作成される。ロック部分状態情報の取得状態は、そのロック部分状態の範囲のロックを取得していることを示す[取得]、そのロックを待っていることを示す[待機]、または、そのロックをキャンセルしたことを示す[キャンセル]のいずれかで表される。なお、ロックの取得、待機、キャンセルなどの状態は、データサーバ1からトランザクションサーバ2に通知され、これにより、分散ロック状態管理装置21は、ロック取得の状態を管理できるようになっている。
分散ロック状態管理装置21は、トランザクション情報の追加/削除/検索が可能であり、あるトランザクション情報に対して、ステートメント毎にロック状態情報の追加/削除/更新が可能である。トランザクションサーバ2でトランザクションが発行されたら、そのトランザクションのTxIDを識別子としてトランザクション情報を追加する。トランザクション情報はステートメント毎のロック状態情報を含む。ただし、トランザクションの実行開始直後は、ステートメント毎のロック状態情報は空である。トランザクション内のステートメントが実行を開始すると、そのステートメントに付与されたStmtIDとそのステートメントのロック範囲を基に、そのロック範囲のデータを格納しているデータサーバ1毎のロック状態情報を作成する。ロック状態情報のロック部分状態情報は、ユーザが定義したステートメントのロック範囲を基に構成可能である。また、データサーバ情報は、位置管理サーバ3にデータの所在を問い合わせ、その応答としてデータサーバ1のIDと位置の通知を受けることで構成可能である。データサーバ1の位置を知ったら、データサーバ1にロック要求を伝送する。この時、ロック部分状態情報の取得状態は[待機]である。あるステートメントのロック範囲のロックを全て取得した場合に(=全データサーバのロック部分状態情報の取得状態が全て[取得]になった場合)、そのステートメントのロックを取得したこととする。ステートメントが取得したロックをトランザクションが解放したらロック状態情報は削除される。また、トランザクションが成功、失敗で終了したら、トランザクション情報は削除される。
(2−1−3)データサーバ1の構成
次に、データサーバ1の構成について説明する。
データサーバ1のロック管理装置12は、図4に示すように、[階層木]と、[ノード構造情報]と、[ロック要求情報]と、を含むロック管理情報を持つ。
階層木は、自分の記憶装置11に格納されているデータの階層関係を木構造で表したものである。上位のノードをロックできれば、そのノードの子孫ノードが持つ全データの範囲をロックしたのと同等の効果(例えば、図13の例の場合、ノード2をSロックした場合、下位のノード4,5が持つデータA〜DをSロックした効果)を持つ。この階層木は、多粒度ロック方式(非特許文献3)と同じ木構造であり、木の高さ、1つのノードが持つ子ノードの数、リーフノード(最下位ノード)がロックするデータの範囲は実装に応じて異なるが、これらは本発明を制約しない。各ノードは、次に説明するノード構造情報で示されるデータ構造体を持つ。
ノード構造情報は、ノードIDと、グラフ管理情報と、取得ロックキューと、待ちロックキューと、を含む。ノードIDは、データサーバ内でユニークな識別子である。ノードIDの付与の仕方は一意性が保証できれば方法は問わない。例えば、まず、階層木を作成し、その階層木を構成するノードを一列に並べた後、最初のノードから1,2,3,・・・と順番に番号を付与してもいい。グラフ管理情報は、ノードのロック管理範囲(そのノードをロックした時にロックされる子ノードの範囲)、ノードの親ノードや子ノードへのポインタ、ノードの子ノード毎のロック管理範囲等、ノードが階層木の機能(そのノードの子孫ノードが持つデータの全範囲をロックする機能)を実行するために必要な情報を含んでいる。取得ロックキューは、ノードに対して現時点でロックを取得しているロック要求を格納するキュー、待ちロックキューは、ノードに対してロックを要求し、既にロックを取得している既存ロックと競合したため、既存ロックの解放を待っているロック要求を格納するキューである。各キューでは、ロック要求は、そのロック要求をしたトランザクションのタイムスタンプが小さい順に配置されるが、後述のNP−Flag(以下、優先フラグ)がTRUEであるロック要求は優先的に先頭方向に配置される。
ロック要求情報は、取得ロックキューおよび待ちロックキューに格納されているロック要求の情報であり、ロック種類と、トランザクション識別と、タイムスタンプと、優先フラグと、を含む。ロック種類は、ノードに対して取得しようとするロックの種類であり、多粒度ロック方式で定義されたロック種類と同じ、Sロック、Xロック、ISロック、IXロック、SIXロックのいずれかである。トランザクション識別は、ロックがどのトランザクションのどのステートメントにマッピングされているかを示すための情報であり、「TxID」と「StmtID」とのペアで構成される。タイムスタンプは、トランザクションの発行時間を意味するタイムスタンプであり、分散データ管理システム内の全トランザクションサーバ2のトランザクションの順序を一意に区別できるものである。タイムスタンプ付与の一例として、分散データ管理システムの全トランザクションサーバ2に一意のIDを付与し、全トランザクションサーバ2の時間をNTP(Network Time Protocol)などで同期させ、トランザクションが発行される時、トランザクションを発行したトランザクションサーバ2の「発行時間」、「トランザクションサーバID」のペアをタイムスタンプとするのが一般的である。タイムスタンプはその一意性からTxIDとしても利用する。本実施形態では、便宜上TxIDとタイムスタンプは同値であるが、必ずしも同値である必要はない。優先フラグは、ロックがロック評価によりキャンセル可能であるか否かを示すフラグである。もし、取得ロックキューに格納されているロック要求の優先フラグがTRUEであれば、そのロックは、タイムスタンプが大きくても、待ちロックキューにロック要求が格納されているロックとのロック評価によりキャンセルされない。
(2−2)第2の実施形態の動作
(2−2−1)ロック取得動作
次に、ロック取得動作について、図5を用いて説明する。
図5に示すように、ロック管理装置12は、トランザクションサーバ2からトランザクション内のステートメント(ステートメントStmtID1とする)のロック要求が伝送されてくると、まず、階層木のルートノード(最上位ノード)を開始ノードとし(ステップ501)、開始ノードのロックを取得する処理を行う(ステップ502)。ステートメントStmtID1がロックを取得できると(ステップ503のyes)、ロックを取得したノードがロックを取得すべき最後のノード(ロック要求されたデータを持つ下位ノード)でなければ(ステップ504のno)、次のノード(子ノードのうち、ロック要求されたデータを持つ子孫ノードを含むノード)に移り(ステップ505)、そのロックを取得する処理を行う。以上の処理を繰り返し、ステートメントStmtID1が、ルートノードから、ロック要求したデータを持つ下位ノードまでのロックを全て取得すると、処理を終了する。この処理の過程において、ステートメントStmtID1が途中のノードでロックが取得できずにロック待ちになった場合(ステップ503のno)や、ステートメントStmtID1が既に取得したロックが他のトランザクションのステートメントとのロック評価によりキャンセルされてロック待ちになった場合は、ロック待ちが解除された後(ステップ506のyes)、ルートノードからステートメントStmtID1のロック取得をやり直す。なお、ロック待ちは、該当ノードにおいて、既存ロックのいずれかが解除/キャンセルされた時点で解除される。ロックの目的に従いノード別に取得するロックの種類は、多粒度ロック方式(非特許文献3)と同じである。
次に、図5のステップ502における個別ノードのロック取得処理について、図6を用いて説明する。
図6に示すように、ロック管理装置12は、ステートメントStmtID1がロックを取得していないノードであれば(ステップ601のno)、そのノードの待ちロックキューにロックの解放を待っているロック要求が格納されているか否かを判断する(ステップ602)。待ちロックキューにロック要求が格納されていれば(ステップ602のyes)、ステートメントStmtID1のロック要求を待ちロックキューに格納し(ステップ603)、ロック要求が待ちロックキューの先頭に位置していなければ(ステップ604のno)、ロック待ち状態になり、図5のステップ503経由でステップ506に移行する。待ちロックキューにロック要求が格納されていない場合(ステップ602のno)や、待ちロックキューの先頭に位置した場合(ステップ604のyes)、取得ロックキューの先頭に位置するロック要求のロックが、ステートメントStmtID1のロック要求のロックと競合するか否かを、図13のロック表を利用して判断する(ステップ605)。競合するロックであれば(ステップ605のyes)、ステートメントStmtID1のロック要求と取得ロックキューの先頭のロック要求とでタイムスタンプを比較する(ステップ606)。なお、取得ロックキューの先頭のロック要求のタイムスタンプは、取得ロックキューのいずれかのロック要求の優先フラグがTRUEになっている場合を除き、最小なものとなるが、これについては後述する。ステートメントStmtID1のロック要求のタイムスタンプが取得ロックキューの先頭のロック要求のタイムスタンプよりも小さければ(ステップ606のyes)、取得ロックキューの他のロック要求を待ちロックキューに移動させ、他ロックをキャンセルさせる処理を行い(ステップ607)、ステートメントStmtID1のロック要求を取得ロックキューに格納する(ステップ608)。一方、ステートメントStmtID1のロック要求のタイムスタンプが取得ロックキューの先頭のロック要求のタイムスタンプよりも小さくなければ(ステップ606のno)、ロック待ち状態になり、図5のステップ503経由でステップ506に移行する。これは、ステートメントStmtID1がロックを取得できないケースで、必要のないロックキャンセルを抑止するためである。また、取得ロックキューの先頭のロック要求のロックが競合しないロックであれば(ステップ605のno)、ステートメントStmtID1のロック要求を取得ロックキューに格納し(ステップ608)、図5のステップ503経由でステップ504に移行する。
次に、ロックの解除/キャンセル処理について、図7を用いて説明する。なお、図6のステップ607における他ロックのキャンセル処理も、図7のようにして行われる。
ロック管理装置12は、解除/キャンセル処理において、ロックを解除/キャンセルさせるステートメントが、解除/キャンセルが発生したノードよりも下位ノードで取得したロックも、全て解除/キャンセルさせる。また、あるノードでロックが解除/キャンセルされると、図5のステップ506でロック待ちしていたロック要求のロック待ちが解除される。図5によれば、ロック待ちが解除されたロック要求はルートノードからロック取得を再開するようにみえるが、図6に示すように、既にロックを取得している状態ならロック取得処理をせずに、次のノードへ処理を移すため、実際にはロックが解除されたノードに対してのみロック取得処理をする。解除とキャンセルの違いは、図7の処理を開始するきっかけがトランザクションサーバ2からの指示によるものか、ロック評価の結果によるものかで区分する。本実施形態では、解除は、ステートメントの実行が成功しロックを正常に解除することを意味し、キャンセルは、ロック評価の結果、既存ロックがキャンセルされることを意味する。キャンセルの場合は、キャンセルをトランザクションサーバ2に通知し、ステートメント再実行等、例外処理をする必要がある。例外処理の具体的手順は、既存のトランザクションの例外処理手法を用いるためここでは説明しない。
図7に示すように、ロック管理装置12は、ステートメントが取得した既存ロックの解除/キャンセルが発生したノードを開始ノードとし(ステップ701)、そのステートメントがロックを取得しているノードの中で、最下位のノードを探す(ステップ702)。そして、探したノードのロックを解除/キャンセルし(ステップ703)、ロックを解除/キャンセルしたノードが開始ノードでなければ(ステップ704のno)、そのノードの親ノードを探し(ステップ705)、探したノードのロックを解除/キャンセルする処理を行う。以上の処理を繰り返し、開始ノードから最下位ノードまでのロックを全て解除/キャンセルすると、処理を終了する。
(2−2−2)優先フラグの変更動作
次に、ロック要求情報の優先フラグの変更動作について、図8を用いて説明する。
図8に示すように、トランザクションサーバ(#2)2のステートメントが、データサーバ(#1、#2)1に対してしたロック要求(A−C,E−G)が全て成功し、必要なロックを全て取得した場合、そのロックを取得したデータ範囲では、デッドロックの可能性がない状態になる。これは、この場合には、ステートメントでデータ操作処理が可能であるため、いずれロックが解放されデッドロックにならないためである。この場合、分散ロック状態管理装置21は、デッドロックの可能性がないステートメントをデータサーバ(#1、#2)1に通知し、データサーバ(#1、#2)1のロック管理装置12は、上記通知を受けたステートメントのロック要求情報の優先フラグ(NP−Flag)をTRUEにする。この時、分散ロック状態管理装置21が上記通知を行うタイミングは、ステートメントが必要なロックを全て取得したタイミングとする。
なお、ステートメントが1つのデータサーバ1に対してのみロック要求をする場合も、デッドロックの可能性はない。この場合も、分散ロック状態管理装置21は、デッドロックの可能性がないステートメントをデータサーバ(#1、#2)1に通知し、データサーバ(#1、#2)1のロック管理装置12は、上記通知を受けたステートメントのロック要求情報の優先フラグをTRUEにする。この時、分散ロック状態管理装置21が上記通知を行うタイミングは、ステートメントのロック要求を伝送したタイミングとする。
(2−2−3)ロック要求の伝送時の具体的な流れ
次に、トランザクションサーバ2からデータサーバ1へのロック要求の伝送時の処理の具体的な流れについて、図9を用いて説明する。
図9においては、左から右へと時間が経過するとする。トランザクションサーバ2が発行するトランザクションTxID1には、StmtID1,StmtID24の2つのステートメントが含まれている。StmtID1は、1つのデータサーバ(#3)1に必要なデータが格納されているステートメント、StmtID24は複数のデータサーバ(#1,#2)1に必要なデータが格納されているステートメントである。
トランザクションサーバ2は、位置管理サーバ3に問い合わせを行うことで、StmtID1が1つのデータサーバ(#3)1にロック要求をする必要があることをわかる。この場合、トランザクションサーバ2は、データサーバ(#3)1へロック要求をする時に、StmtID1にデッドロックの可能性がないことを通知する。この時点で、データサーバ(#3)1は、StmtID1のロック要求情報の優先フラグ(NP−Flag)をTRUEにした後、図5から図7にかけて説明したロック取得プロセスを実施する。StmtID1がロックを取得できたらデータサーバ(#3)1はトランザクションサーバ2にロック取得完了通知を返す。
また、トランザクションサーバ2は、位置管理サーバ3に問い合わせを行うことで、StmtID24が複数のデータサーバ(#1,#2)1にロック要求をする必要があることをわかる。そのため、トランザクションサーバ2は、データサーバ(#1,#2)1へロック要求する時に、StmtID24にデッドロックの可能性があることを通知する。この時点で、データサーバ(#1,#2)1は、StmtID24のロック要求情報の優先フラグをFALSEにした後、図5から図7にかけて説明したロック取得プロセスを実施する。StmtID24がロックを取得できたらデータサーバ(#1,#2)1はトランザクションサーバ2にロック取得完了通知を返す。トランザクションサーバ2は、StmtID24に必要なデータのロックを全て取得したら、必要なデータアクセスを開始する。また、StmtID24がロックを取得したデータ範囲ではデッドロックの可能性がなくなるため、StmtID24にデッドロックの可能性がないことを、データサーバ(#1,#2)1に通知する。この時点で、データサーバ(#1,#2)1は、StmtID24のロック要求情報の優先フラグをTRUEにする。優先フラグは、データサーバ1内でのロック評価を行うためのものであり、トランザクションサーバ2の動作とは関係ないので、データサーバ1からトランザクションサーバ2への優先フラグの変更通知は行わない。優先フラグは、図5から図7にかけて説明したロック取得プロセスのロック評価に影響する。基本的に、取得ロックキューに格納されているロック要求の優先フラグがTRUEであれば、そのロックは、タイムスタンプが小さい扱いになり、待ちロックキューに格納されているロック要求情報と比べてタイムスタンプが大きい場合でもキャンセルされない。
(2−2−4)ロック評価動作
次に、優先フラグを考慮して、ロック要求情報のロック取得の優先度を評価するロック評価動作について、図10、図11、および図12を用いて説明する。
ロック評価方式は、比較対象に応じて3つの方式に分けられる。第1の方式は、待ちロックキュー内のロック要求情報同士の比較であり、第2の方式は、取得ロックキュー内のロック要求情報同士の比較である。第3の方式は、ノードにおける異なるキュー内のロック要求情報同士の比較、つまり取得ロックキュー内のロック要求情報と待ちロックキュー内のロック要求情報との比較である。
図10に示すように、待ちロックキュー内にロック要求情報A,Bが入力されている場合(ステップ1001)、AのタイムスタンプがBのタイムスタンプよりも小さいか同じで(ステップ1002のyes)、AのトランザクションサーバIDがBのトランザクションサーバIDよりも小さければ(ステップ1003のyes)、Aの優先度が高いと判定し(ステップ1004)、その他の場合はBの優先度が高いと判定する(ステップ1005)。
すなわち、まず、トランザクションの発行時間であるタイムスタンプを比較し、タイムスタンプが小さいロック要求情報の優先度を高くする。タイムスタンプが同じ場合は、トランザクションを発行したトランザクションサーバ2のトランザクションサーバIDを比較し、トランザクションサーバIDが小さいロック要求情報の優先度を高くする。
また、図11に示すように、取得ロックキュー内にロック要求情報A,Bが入力されている場合(ステップ1101)、A,Bのいずれか一方の優先フラグがTRUEであれば、優先フラグがTRUEであるロック要求情報(デッドロック可能性がないロック)を、タイムスタンプの値と関係なく、優先度が高いと判定する(ステップ1102〜1106)。その他の場合は、図10のステップ1002〜1005と同様のステップ1105〜1108により、A,Bの優先度を判定する。これにより、タイムスタンプが大きくてもデッドロックにならないことが保証されているロックは、ロック取得の優先度が高くなり、取得済みの既存ロックをキャンセルされない。
また、図12に示すように、取得ロックキュー内にロック要求情報Aが入力され、待ちロックキュー内にロック要求情報Bが入力されている場合(ステップ1201)、Aの優先フラグがTRUEであれば(ステップ1202のyes)、Aを、タイムスタンプの値と関係なく、優先度が高いと判定する(ステップ1203)。その他の場合は、図10のステップ1002〜1005と同様のステップ1203〜1206により、A,Bの優先度を判定する。
ただし、取得ロックキュー内のロック要求情報と待ちロックキュー内のロック要求情報との比較は、最初、それぞれのキューの先頭(最小)のロック要求情報同士で行われ、待ちロックキューの先頭のロック要求情報の優先度が高いと、以降、該当ロック要求情報と取得ロックキュー内のロック要求情報全てとの比較が開始される。そのため、取得ロックキューの先頭に位置すべきロック要求情報は、待ちロックキューの先頭に位置するロック要求情報との競合に勝つ確率が高い方がいい。
従って、取得ロックキューの内部のロック評価では、図11に示すように、優先フラグがTRUEの方の優先度を高くし、両者がTRUEの場合は、タイムスタンプが小さい方の優先度を高くしている。
上述したように本実施形態においては、データサーバ1は、データの階層関係を木構造で表した階層木を管理し、トランザクションサーバ2からトランザクション内のステートメント毎のロック要求を受け取ると、階層木のルートノードから、そのステートメントで用いるデータを持つ下位ノードまでを1つのグループとし、そのグループの各ノードのロックを取得させる。
この時、データサーバ1は、ステートメントがロック要求をしたグループにおいて既に他のトランザクションのステートメントがロックを取得している場合、ロック要求をしてきたステートメントのトランザクションのタイムスタンプを、グループの他のトランザクションの中の最小のタイムスタンプと比較し、最小のタイムスタンプよりも小さい場合にグループのロックを取得させる。
このように、グループのトランザクションの中の最小のタイムスタンプよりも小さい場合に、ステートメントにロックを取得させるため、そのステートメントがロックを取得できないケースで、必要のないロックがキャンセルさせられることを抑止できる。
よって、多粒度ロック方式にタイムスタンプを適用した場合に、他のトランザクションのステートメントが取得したロックを意味なくキャンセルさせることにより同時実行性能が下がるという第1の問題を回避できる。
また、トランザクションサーバ2は、ステートメントが、1つのデータサーバ1にのみロック要求をした場合や、複数のデータサーバ1にロック要求をしたロックを全て取得した場合は、そのステートメントにデッドロックの可能性がない旨をデータサーバ1に通知し、データサーバ1は、上記の通知を受けたステートメントのロック要求の優先フラグをTRUEにする。そして、データサーバ1は、グループで既にロックを取得した他のトランザクションのステートメントの中にロック要求の優先フラグがTRUEのトランザクションがある場合、ロック要求をしてきたステートメントには、タイムスタンプの値によらず、ロックを取得させない。
従って、デッドロックの可能性がないステートメントは、自分よりもタイムスタンプが小さいステートメントによりロックをキャンセルさせられることなくそのまま実行が可能であり、システム全体としてもデッドロックは起こらない。
よって、多粒度ロック方式にタイムスタンプを適用した場合に、デッドロックの可能性がないロックがキャンセルされるという第2の問題を回避できる。
また、ロックを提供しデータの整合性を維持しつつ、データサーバ1間のデットロック回避のための調停のコストを除去し、データサーバを追加しても、処理性能が増えるだけで、データサーバ間の通信コストを抑えられるため、データサーバ1の追加による高効率な性能向上が可能である。
また、1つのトランザクションに対しても、必要なケースのみ処理を再実行させ、また、データベース検索など範囲のデータアクセスが多い環境でのデータサーバ1のロック管理コストを削減できる手法を提供することにより、任意のトランザクションの応答時間を短縮することが可能である。
その結果、分散データ管理システムのデータ整合性を維持しながら、スループットと処理速度向上に寄与できる。
なお、本発明のデータサーバ1およびトランザクションサーバ2にて行われる方法は、コンピュータに実行させるためのプログラムに適用してもよい。また、そのプログラムを記憶媒体に格納することも可能であり、ネットワークを介して外部に提供することも可能である。
1 データサーバ
11 記憶装置
12 ロック管理装置
2 トランザクションサーバ
21 分散ロック状態管理装置
3 位置管理サーバ

Claims (10)

  1. トランザクションを発行するトランザクションサーバと、該トランザクションで用いるデータを分散して格納する複数のデータサーバと、を有してなる分散データ管理システムであって、
    前記トランザクションサーバは、
    トランザクション内のステートメント毎に、該ステートメントで用いるデータに対するロック要求を前記データサーバに伝送する分散ロック状態管理装置を有し、
    前記複数のデータサーバの各々は、
    自サーバで格納するデータの階層関係を管理し、前記トランザクションサーバからステートメントのロック要求を受けると、階層関係のルートノードから、ロック要求をしてきたステートメントで用いるデータを持つ下位ノードまでを1つのグループとして該グループの各ノードのロックを取得させることとし、該グループにおいて既に他のトランザクションのステートメントがロックを取得している場合、ロック要求をしてきたステートメントのトランザクションに一意に付与される特定値を、グループの他のトランザクションの中の最小の特定値と比較し、最小の特定値よりも小さい場合にグループのロックを取得させるロック管理装置を有する、分散データ管理システム。
  2. トランザクションサーバにて発行されたトランザクションで用いるデータを分散して格納する複数のデータサーバのうちの1つのデータサーバであって、
    自サーバで格納するデータの階層関係を管理し、前記トランザクションサーバから、トランザクション内のステートメントで用いるデータに対するロック要求を受けると、階層関係のルートノードから、ロック要求をしてきたステートメントで用いるデータを持つ下位ノードまでを1つのグループとして該グループの各ノードのロックを取得させることとし、該グループにおいて既に他のトランザクションのステートメントがロックを取得している場合、ロック要求をしてきたステートメントのトランザクションに一意に付与される特定値を、グループの他のトランザクションの中の最小の特定値と比較し、最小の特定値よりも小さい場合にグループのロックを取得させるロック管理装置を有する、データサーバ。
  3. 前記ロック管理装置は、
    前記トランザクションサーバから、デッドロックの可能性がないステートメントが通知されると、前記通知を受けたステートメントのロック要求の優先フラグをTRUEにし、
    前記トランザクションサーバから、ステートメントのロック要求を受けると、該ステートメントにロックを取得させるグループにおいて既にロックを取得した他のトランザクションのステートメントの中にロック要求の優先フラグがTRUEのトランザクションがある場合、ロック要求をしてきたステートメントには、ロックを取得させない、請求項2に記載のデータサーバ。
  4. データを分散して格納する複数のデータサーバに対し、トランザクションを発行するトランザクションサーバであって、
    トランザクション内のステートメント毎に、該ステートメントで用いるデータに対するロック要求を前記データサーバに伝送し、さらに、該ステートメントが、1つのデータサーバにのみロック要求をする場合、および、複数のデータサーバにロック要求をしたロックを全て取得した場合は、該ステートメントにデッドロックの可能性がない旨を、該ステートメントのロック要求の伝送先のデータサーバに通知する分散ロック状態管理装置を有する、トランザクションサーバ。
  5. トランザクションを発行するトランザクションサーバと、該トランザクションで用いるデータを分散して格納する複数のデータサーバと、を有してなる分散データ管理システムによる分散データ管理方法であって、
    前記複数のデータサーバの各々が、自サーバで格納するデータの階層関係を管理し、前記トランザクションサーバからステートメントのロック要求を受けると、階層関係のルートノードから、ロック要求をしてきたステートメントで用いるデータを持つ下位ノードまでを1つのグループとして該グループの各ノードのロックを取得させることとし、
    前記トランザクションサーバが、トランザクション内のステートメント毎に、該ステートメントで用いるデータに対するロック要求を前記データサーバに伝送するステップと、
    前記トランザクションサーバからステートメントのロック要求を受けたデータサーバが、該ステートメントにロックを取得させるグループにおいて既に他のトランザクションのステートメントがロックを取得している場合、ロック要求をしてきたステートメントのトランザクションに一意に付与される特定値を、グループの他のトランザクションの中の最小の特定値と比較し、最小の特定値よりも小さい場合にグループのロックを取得させるステップと、を有する、分散データ管理方法。
  6. トランザクションサーバにて発行されたトランザクションで用いるデータを分散して格納する複数のデータサーバのうちの1つのデータサーバによる分散データ管理方法であって、
    自サーバで格納するデータの階層関係を管理し、前記トランザクションサーバから、トランザクション内のステートメントで用いるデータに対するロック要求を受けると、階層関係のルートノードから、ロック要求をしてきたステートメントで用いるデータを持つ下位ノードまでを1つのグループとして該グループの各ノードのロックを取得させることとし、
    前記トランザクションサーバから、ステートメントのロック要求を受けると、該グループにおいて既に他のトランザクションのステートメントがロックを取得している場合、ロック要求をしてきたステートメントのトランザクションに一意に付与される特定値を、グループの他のトランザクションの中の最小の特定値と比較し、最小の特定値よりも小さい場合にグループのロックを取得させるロック取得ステップを有する、分散データ管理方法。
  7. 前記トランザクションサーバから、デッドロックの可能性がないステートメントが通知されると、前記通知を受けたステートメントのロック要求の優先フラグをTRUEにするステップをさらに有し、
    前記ロック取得ステップでは、前記トランザクションサーバから、ステートメントのロック要求を受けると、該ステートメントにロックを取得させるグループにおいて既にロックを取得した他のトランザクションのステートメントの中にロック要求の優先フラグがTRUEのトランザクションがある場合、ロック要求をしてきたステートメントには、ロックを取得させない、請求項6に記載の分散データ管理方法。
  8. データを分散して格納する複数のデータサーバに対し、トランザクションを発行するトランザクションサーバによる分散データ管理方法であって、
    トランザクション内のステートメント毎に、該ステートメントで用いるデータに対するロック要求を前記データサーバに伝送するステップと、
    ステートメントが、1つのデータサーバにのみロック要求をする場合、および、複数のデータサーバにロック要求をしたロックを全て取得した場合は、該ステートメントにデッドロックの可能性がない旨を、該ステートメントのロック要求の伝送先のデータサーバに通知するステップと、を有する、分散データ管理方法。
  9. 請求項6または7に記載の分散データ管理方法を前記データサーバに実行させるためのプログラム。
  10. 請求項8に記載の分散データ管理方法を前記トランザクションサーバに実行させるためのプログラム。
JP2010120468A 2010-05-26 2010-05-26 分散データ管理システム、データサーバ、トランザクションサーバ、分散データ管理方法、プログラム Active JP5069337B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010120468A JP5069337B2 (ja) 2010-05-26 2010-05-26 分散データ管理システム、データサーバ、トランザクションサーバ、分散データ管理方法、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010120468A JP5069337B2 (ja) 2010-05-26 2010-05-26 分散データ管理システム、データサーバ、トランザクションサーバ、分散データ管理方法、プログラム

Publications (2)

Publication Number Publication Date
JP2011248584A JP2011248584A (ja) 2011-12-08
JP5069337B2 true JP5069337B2 (ja) 2012-11-07

Family

ID=45413769

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010120468A Active JP5069337B2 (ja) 2010-05-26 2010-05-26 分散データ管理システム、データサーバ、トランザクションサーバ、分散データ管理方法、プログラム

Country Status (1)

Country Link
JP (1) JP5069337B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013132628A1 (ja) 2012-03-08 2013-09-12 株式会社Murakumo データベースの管理方法
WO2013157099A1 (ja) * 2012-04-18 2013-10-24 株式会社Murakumo データベースの管理方法、データベースシステム、及び、プログラム
US9519510B2 (en) * 2014-03-31 2016-12-13 Amazon Technologies, Inc. Atomic writes for multiple-extent operations
US10372685B2 (en) 2014-03-31 2019-08-06 Amazon Technologies, Inc. Scalable file storage service
US10264071B2 (en) 2014-03-31 2019-04-16 Amazon Technologies, Inc. Session management in distributed storage systems
JP6912724B2 (ja) 2017-11-29 2021-08-04 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0277960A (ja) * 1988-09-14 1990-03-19 Toshiba Corp 分散型データベースにおける一貫性制御のデッドロック防止方式
JP4287900B2 (ja) * 2001-03-19 2009-07-01 株式会社リコー 書き込み遅延データベース管理システム、及びプログラム

Also Published As

Publication number Publication date
JP2011248584A (ja) 2011-12-08

Similar Documents

Publication Publication Date Title
JP5069337B2 (ja) 分散データ管理システム、データサーバ、トランザクションサーバ、分散データ管理方法、プログラム
CN107977376B (zh) 分布式数据库系统及事务处理方法
US9424070B2 (en) Combining scalability across multiple resources in a transaction processing system having global serializability
US10255340B2 (en) Method and apparatus for distributed configuration management
US20040199734A1 (en) Deadlock resolution through lock requeuing
US20080215586A1 (en) Simulating Multi-User Activity While Maintaining Original Linear Request Order for Asynchronous Transactional Events
AU2016244128A1 (en) Processing database transactions in a distributed computing system
JP2005276181A (ja) 動的ピアツーピア環境における相互排除技法
JP6198825B2 (ja) 分散並列環境における非同期メッセージのシーケンシングの方法、システム、およびコンピュータプログラム製品
CN113722127A (zh) 高效轻量易用的分布式网络消息中间件
Nawab et al. Message Futures: Fast Commitment of Transactions in Multi-datacenter Environments.
Shrivastava et al. Replica control following 1SR in DRTDBS through best case of transaction execution
EP2693337B1 (en) Method, system and computer program products for sequencing asynchronous messages in a distributed and parallel environment
Lejeune et al. A fair starvation-free prioritized mutual exclusion algorithm for distributed systems
CN110659303A (zh) 一种数据库节点的读写控制方法及装置
Yadav et al. A review of various mutual exclusion algorithms in distributed environment
Neamatollahi et al. Info-based approach in distributed mutual exclusion algorithms
Alom et al. Deadlock detection views of distributed database
Olmsted et al. High volume web service resource consumption
WO2013018593A1 (ja) 情報処理装置、情報処理システム、情報処理方法および制御プログラム記録媒体
Lou et al. An effective deadlock prevention mechanism for distributed transaction management
Tang et al. A pipeline-based approach for long transaction processing in web service environments
Ahmad A framework of transaction management in distributed database system environment
Böttcher et al. Reducing sub-transaction aborts and blocking time within atomic commit protocols
Jayanta et al. Conflicting management of transactions in real time database system

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120726

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: 20120814

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: 20120816

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

Free format text: PAYMENT UNTIL: 20150824

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5069337

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350