JP2004505380A - ネスト化データベースを実行するための方法、システム及びデータ構造 - Google Patents
ネスト化データベースを実行するための方法、システム及びデータ構造 Download PDFInfo
- Publication number
- JP2004505380A JP2004505380A JP2002515631A JP2002515631A JP2004505380A JP 2004505380 A JP2004505380 A JP 2004505380A JP 2002515631 A JP2002515631 A JP 2002515631A JP 2002515631 A JP2002515631 A JP 2002515631A JP 2004505380 A JP2004505380 A JP 2004505380A
- Authority
- JP
- Japan
- Prior art keywords
- data structure
- database
- lock
- data
- transaction
- 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
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000012545 processing Methods 0.000 claims abstract description 17
- 230000015654 memory Effects 0.000 claims description 66
- 238000004590 computer program Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 description 22
- 238000007726 management method Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 7
- 238000013459 approach Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 244000144619 Abrus precatorius Species 0.000 description 1
- 206010011906 Death Diseases 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
データの同時使用のリクエストを処理、管理する方法及びシステム。ネスト化されたデータベースによって、データへのアクセスや変更が可能な様々な環境を創出する。現在存在する各トランザクションについて、そのトランザクションと関連するデータベースやサブデータベースの表示や参照を有する。また、問題の各データ・アイテムに対し、どのデータベースやサブデータベースがそのアイテムに関連しているかを示すデータ構造も有する。トランザクション、サブデータベース、データ・アイテムに関するデータ構造の使用により、種々のトランザクションやサブデータベースに対する制御の領域(sphere)を創出することができる。これにより、データを複数の利用者間で容易に共有することができる。サブデータベースの創出はデータの複数のコピーを必要とせず、本データベースマネジメントシステムは、所望により複数のコピーも使用できるとはいえ、1部(one copy)のデータを使用するだけで遂行可能である。
Description
【0001】
【発明の属する技術分野】
本発明は一般にデータベースマネジメントシステムに関し、より詳細には、データベース資源を不適切な使用から守るためにロックマネジャを用いたデータマネジメントシステムやトランザクション処理システムに関する。
【0001】
本発明は更に、メモリにストアされたコンピュータデータ構造に基づいて、ネスト化データベースの使用を許容するデータベースマネジメントシステムの実行方法にも関する。加えて本発明は、共有データへの同時アクセスを提供する如何なるシステムにも関するものであって、またそのようなシステムに適用できる。
【0002】
【従来の技術、及び発明が解決しようとする課題】
二人の人や二グループの団体が同時に或るデータベースやその他のロケーションに存在する情報にアクセスしたい時、あるいは同時か殆ど同時に同一の情報に関するデータベースにデータを書き込みたい時に存在する問題として、コンフリクト等の問題は避けることができない。このような問題は、データが共有されるタイプのアプリケーションでは如何なるアプリケーションでも起こりうるものであって、ワード・プロセッシングとエンジニアリング設計は、そのような同時アクセスが起こる2つの領域である。但し、本発明はこれら二領域に加え、二以上のグループが同一のデータを使用したいと希望する如何なる状況に対しても適用可能である。
【0003】
データベースマネジメントシステムにおいては、ACID (”Atomicity, Consistency, Isolation, Durability”)と称される特性が望まれる。
【0004】
Atomicity(アトミック性)とは、トランザクション(即ちデータベースへの変更)の結果が全て正しくデータベースに反映されているか、あるいはトランザクションの結果のいずれも全く反映されていないことを意味する。一般に、トランザクションについては「コミット(確認)」あるいは「アボート(中止)」という表現が用いられる。トランザクションが確認されると、このトランザクションによってデータベースになされた全ての変更が恒久的に保存され、データベースは定常状態に置かれる。
【0005】
トランザクションが中止されると、このトランザクションによってデータベースになされた如何なる変更も撤回され、この場合もやはりデータベースは定常状態(consistent state)に置かれる。
【0006】
Consistency(一貫性)とは、各トランザクションがデータベースに対し矛盾のない結果のみを確認することを意味する。
【0007】
よって或るトランザクションによって、データベースは或る一定常状態から他の或る一定常状態にされなければならない。
【0008】
Isolation(隔離性)とは、トランザクション内の事象が同時的に進行している他のトランザクションから隠されていなければならないことを意味する。同時的トランザクションは互いに干渉してはならない。それらトランザクションはあたかも専用のデータベースを有するがごとくに実行されなければならない。
【0009】
Durability(継続性)とは、一旦トランザクションが完了し、その結果がデータベースに対し確認されてしまうと、その後如何なる動作不良があってもこれらの結果が生き残り続けることをシステムが保障しなければならないことを意味する。
【0010】
上記のACID 特性は非常に望ましいものであるが、同一のデータに書込む者が複数存在すると、通常、ACID 特性との妥協が必要となる。トランザクションの諸特性を確実にし且つ同時に各人又は各トランザクションがしようとしていることを何であれ許容することは非常に困難である。
【0011】
或るデータが使用されている時に、他者に対し単純に該データへのアクセスを許容すると、ACID 特性との不可避なコンフリクトが顕在化する。
【0012】
【課題を解決するための手段】
従って、本発明の一目的は、同一のデータに複数の団体がアクセスできるようにすることである。本発明の更なる目的は、複数のユーザが存在する環境で、可能な限りACID 特性が維持されるよう、データをロックすることである。本発明の更なる目的は、複数のユーザや団体が、種々の異なるデータベース(以下、これら異なる各種データベースを、単にデータベースと称するかあるいはバーチャルデータベース、サブデータベースと称する)を経由してデータにアクセスできるようにするデータベースマネジメントシステムを提供することである。本発明の更なる目的は、サブデータベースやバーチャルデータベースの実行を許容するデータベースマネジメントシステム及び/又はそのデータ構造を提供することである。
【0013】
これら及びその他の目的は、複数のユーザが存在する環境で、データの同時実行制御とロックを許容する、データ構造を有するメモリ、方法、システム、及びコンピュータプログラム製品によって達成される。現在存在するトランザクションについて、そのトランザクションに関連するデータベース又はサブデータベースへの関連付けや参照(リファレンス)を有する。トランザクションに関係するこのデータ構造を以下、トランザクション制御ブロックと称する。
【0014】
データ構造(本明細書ではこれをデータベース制御ブロックと称する)は、どのデータベースあるいはサブデータベースがデータ・アイテムに関係しているかを示す。更に、そのデータについての実際のロックに関係するデータ構造が存在し、これをロック制御ブロック(及び/又はロックリクエストブロック)と称する。
【0015】
種々のデータ構造間の関連付けにより、ネストされたデータベース、サブデータベース、バーチャルデータベースという概念を実現させることができる。例えば、データ構造アレンジメントは、好ましくは特定のトランザクションのコンテキストデータベースに関する判断(determination)が存在することを許容すると共にそのトランザクションの下のサブデータベースを許容する。更に、トランザクションに関係するデータ構造は、そのデータのロックに関するデータ構造によって表される、許可されたあるいは許可待ちのロックリクエストへの参照を含む。バーチャルデータベースに関係するデータ構造、即ちデータベース制御ブロックは、ロッキングデータ構造として参照され、ロックが関係するのはいずれのデータベースあるいはサブデータベースであるのかを決定できるようになっている。
【0016】
本発明の一実施形態では、データ処理システムによってアクセスされるデータをストアするためのメモリが存在する。このデータは必ずしもエンドユーザが究極的に欲しているデータ・アイテムである必要はなく、ロッキングとサブデータベース情報を示すデータ構造に関係するデータであることができる。メモリは、トランザクションの情報を含むデータ構造を有する。好ましくは、このデータ構造はトランザクション制御ブロックとして実現される。メモリは更にトランザクションのデータのロックの情報を含むデータ構造を有する。このデータ構造を、以下、ロック制御ブロック及び/又はロックリクエストブロックと称する場合がある。更に、複数データベースの情報を含む複数のデータ構造が存在する。種々のデータベースに関係するこれらのデータ構造を、データベース制御ブロックと称する場合がある。このデータベース制御ブロックを用いて特定のデータベースやサブデータベースをロック及びトランザクションに関連付け、あるいはその逆に関連付け、ネスト化データベースあるいはサブデータベースを適切に制御する。
【0017】
本発明はまた、ネスト化データベースあるいはサブデータベースの概念を実現化する、データ構造の作成(creation)と使用に関する。あるデータ・アイテムがロックされていることを示す一方法は、第一の階層レベルと関連する第一のトランザクションによってそのデータ・アイテムがロックされていることを示すデータ構造をこの第一の階層レベルに作成する種々の段階を含む。
【0018】
更に、本発明方法は、データ・アイテムが第二の階層レベルと関連する第二のトランザクションによってロックされていることを示すデータ構造を第二の階層レベルに作成する段階を含む。かくして、これら段階は、制御されたデータ構造(ロック制御ブロック等)の階層を作成する。階層における各レベルは異なるデータベース、サブデータベース、又はバーチャルデータベースによって使用されることができる。
【0019】
或るデータ・アイテムへのアクセスを達成するためには、最初に判断しなければならないことがある。それはそのデータ・アイテムに関してロックが存在するかどうかという点である。これについては次の各ステップを追うことによって決定できる:(a) 第一の階層レベルにそのデータ・アイテムに対するロックが存在するかどうかを判断するステップ、及び (b) ステップ(a)でそのデータ・アイテムに対するロックが存在しないと判断された場合、第一の階層レベルにおいてそのデータ・アイテムに対するロックを作成するステップ。
【0020】
ステップ(c)は、ステップ(a)でそのデータ・アイテムに対するロックが存在しないと判断された場合、第二のレベルに該データ・アイテムに対するロックが存在するかどうかを判断するステップである。更に、ステップ(d)は、そのデータ・アイテムに関するロックが第二の階層レベルに存在しないと判断された場合、該データ・アイテムに関するロックを作成するステップである。
【0021】
上記の機能を実行する方法の各ステップに加え、本発明は、上記機能を行使するための各種手段を有するシステムを包含する。更に、本発明は、本方法を実施するための実行可能な指令を含むコンピュータプログラム製品も包含する。
【0022】
【発明の実施の形態】
本発明とその利点については、添付の図面を参照することによってより完全な理解に到達できるであろう。
以下、図を参照して本発明を説明する。各図面を通して、同一の参照番号は同一又は対応する部分を示す。図1はデータベースマネジメントシステム(DBMS)100を示す。トランザクションオペレーション及びマネージメント(管理)はトランザクションマネージャ102及びロックマネージャ104で処理されるが、これらは両者ともシステムのデータプロセッサ即ちCPU106によって実行されるソフトウエア手続である。トランザクションマネージャは、許可待ち中のトランザクションのアイデンティティとステータスの追跡履歴(track)を残すためにトランザクションテーブル108(これはツリー構造として実施されることもある)を維持する。ロックマネージャ104はロックテーブル110を維持するが、これは通常ハッシュテーブル及び種々のリンクしたリスト及び/又はツリー構造(以下により詳細に記述する)を使用して実施される。ロックテーブル110はデータベース112中の資源に関してリクエストされたロックの追跡履歴を保持する。ロックテーブル110は、トランザクションのメモリアドレス、トランザクションID、ロックのタイプやモード、ロックのパラメータ、ロックと関連したデータベースやサブデータベースに関係する情報を蓄えてもよい。データベース112は、DBMS100によって実行されるトランザクションにアクセス可能なデータを保存する。データベース112は永続的なデータを保存する必要はない(但し通常の場合は永続的なデータ保存である)。別の方法では、保存されたデータは暫定的であってもよい。従って、データベースの内容について共同的に作業しているトランザクションは、ほんの数分、数時間、又は数日だけ存在するデータ資源を処理出来、システムが取り出されるかシャットダウンされた場合には存在しなくなるであろう。
【0023】
またDBMS100は、通常、付加的メモリ資源114、システムの種々の部分を相互接続するための一以上のシステムバス116、及びネットワークインターフェース118やクライアントワークステーション120との通信を取扱うための他の通信インターフェースを含む。メモリ114は、ランダムアクセスメモリを含むがそれに限定されない如何なるタイプのメモリを使用して提供されてもよく、好ましくは、読出し可能で且つ書込み可能なメモリである。更に、メモリ114は本発明のデータ構造を保存するために利用してもよい。図1は本発明の一つの可能な実施例を示すが、本発明の機能を達成するために、任意の所望のハードウエア及びソフトウエアを利用できる。例えば、本発明は、任意のタイプのコンピュータ、コンピュータサーバ、及び/又はパーソナルコンピュータ及び/又は任意の所望のオペレーティングシステムが動作するハードウエアを使用して実施できる。係るハードウエアの構成要素、構造、及び作用は周知である。
【0024】
図2を参照すると、好ましい実施形態における「ロックテーブル」110が次のように提供される。ハッシュ関数150を用いて、資源識別子(RID)を、固定したサイズを有するように提供されるハッシュテーブル152内のハッシュテーブルアドレスに変換する。関数150によってハッシュされる資源識別子は、資源のタイプやレベルの標識(例えば、ロックされるべき資源は、データベース、テーブル、ページ、組(tuple)、その他の何れであるかを示す)及び資源の開始アドレスを含んでもよい。ハッシュテーブルのスロット154−1等の各アドレス可能なスロット154は、そのスロットのハッシュテーブルアドレスに対応するロックされた資源がない場合のヌル値か、ハッシュ値がそのスロットのハッシュテーブルアドレスに対応する一以上のロックされた資源が有る場合には、LCB160−1等のロック制御ブロック(LCB)のリストへのポインタの何れかを含む。
【0025】
ロックマネージャは、実際にロックされる各ロック可能なデータ・アイテムに対して一ロック制御ブロック(LCB)160を割り当て(即ち生成し記憶される)、トランザクションが有する各ロックに対してLRB162−1等の一ロックリクエストブロック(LRB)162を割り当てる(即ち生成し記憶される)であろう。従って、もし特定のデータベースの一オブジェクトが三つの異なるトランザクションによって所定の時点でロックされる場合には、そのオブジェクトに対してLCB160が一個と、そのLCBから“ぶら下がっている(hanging)”リンクした3個のLRB(トランザクション当たり一)のリストとが存在するであろう。
【0026】
各LCB160は好ましくは次のものを含む:
ロックされた資源に対する資源識別子のコピーを通常含むロックID 170と、
このLCBによって表わされるデータベース資源に関して認められた(granted)全てのロックの最も制限的なアクセスモード(例えば、ブラウズ、読出し、パラメータ化された読出し、書込み、パラメータ化された書込み、又は排他(exclusive))を示すモード標識171と、
ロックされた資源の未処理の(outstanding)パラメータ化された読出しロック(もし有れば)によって使用される読出しパラメータの論理ORを表わす、好ましくはビットマップの形態にある、任意的読出しパラメータ標識172と、
ロックされた資源の未処理のパラメータ化された書込みロック(もし有れば)の書込みパラメータ、好ましくはビットマップの形態にある、オプショナル書込みパラメータ標識173(なお、読出し及び書込みパラメータ標識172及び173の詳細によって本発明の様相が更に構成されるものであるがこれについては、Anfindsenに付与された米国特許第5,983,225号に詳細に記載されており、それを本明細書の一部を構成するものとしてここに援用する)と、
このLCBによって表わされるデータベース資源のための認められた資源リクエストに対するLRB 162のリストへの認められたリクエストリストポインタ174と、
このLCBによって表わされる許可待ち(即ち、未だ認められていない)資源リクエストに対するLRB 162のリスト(キュー(queue)とも呼ばれる)への許可待ちリクエストポインタ 175と、
このLCBが属するデータベース又はサブデータベースへの参照であるデータベースフィールド177とを含む。本発明の特徴は、データは、本明細書ではサブデータベース、バーチャルデータベース、データベースとして参照される異なるデータベースに分割されてもよいということである。係る分割を行うことにより、同一のデータを使用する人やトランザクションが複数あることが可能である。係るシステムにおいて、本発明者は、或るロックがどのデータベースに属するかを知ることが望ましく、また係る情報はデータベースフィールド177を使用して容易に決定され得ることを見出した。本発明の特徴はデータベースリファレンス177等のリファレンスを使用して実現されるが、LCB内のデータベース名を含むような他の実施形態も可能である。図2では、データベースリファレンス177はグローバルデータベース192を参照している。
【0027】
このグローバルデータベース192は最高レベルのデータベースであり、更なるサブデータベースは、DB1、DB2、・・・DBnとして言及される。サブデータベース使用の更なる詳細を以下に説明する。即ち、
ネクストレベルLCBリファレンス178は、サブデータベースロック制御ブロック(SLCB)164−1等のサブデータベース(異なる階層レベルでのバーチャル又はサブデータベース)ロック制御ブロックを示し(このリファレンスは、ヌルか、又は異なる階層レベルでのサブデータベースロック制御ブロックの何れかを参照する。このフィールドに関する更なる情報を以下に述べる)、そして
このLCBと同一のハッシュアドレスを共有する次のLCB(もし有れば)への次のLCBポインタ176。
【0028】
LCB 160内のフィールド172及び173によって表わされる読出しパラメータと書込みパラメータは、本発明にとって必須ではないが、本発明におけるサブデータベースの発明と合わせて又は切り離して使用されてもよい特徴を表わす。更に、パラメータ172及び173は、DBMSによって使用される従来のアクセスモードへの本発明による拡張を表わす。読出し/書込みパラメータドメインの定義されたセットの各異なる値が、対応するデータの信頼性の分類又はカテゴリーを表わす。従って、8個のパラメータ値(各々8−ビットパラメータフイールドの対応するビットによって表わされる)を有するパラメータドメインは、8個迄の異なるデータ信頼性分類を定義することが可能であろう。本発明の別の実施形態においては、パラメータを、“信頼性”以外のデータベースオブジェクトのプロパティ(例えばオブジェクト上に書込みロック状態を作るアプリケーションのタイプやそのID、又は書込みロックされていてもデータを読もうとするか否かを判断するためにアプリケーションによって使用され得る他の情報等)を示すために使用してもよい。
【0029】
許可された(granted)又は許可待ちの一ロックリクエストを表わす各LRB 162は、好ましくは、次のものを含む:
特定のトランザクションによって資源がアクセスされるかリクエストされるアクセスモード(例えば、ブラウズ、読出し、パラメータ化された読出し、書込み、パラメータ化された書込み、又は排他(exclusive))を示すモード標識181と、
このLRBに対応するロックをリクエストしたかあるいは保持するトランザクションを同定するトランザクション識別子184と、
この読出し又は書込みロックの所有者によって使用される読出し又は書込みアクセスモードパラメータ(もし有れば)を表わす、好ましくはビットマップ形態にある、任意的パラメータ標識182(このフィールドは、このロック又はロックリクエストされる所有者がパラメータ化されたアクセスリクエストを使用している場合にのみ使用される。ロック制御ブロックのパラメータ172及び173のように、パラメータフィールド182は、本発明に係るネスト化データベースやサブデータベースを実施するために必須ではなくまた、必要でもない)と、
トランザクションID 184によって同定されるトランザクションT1等のトランザクションによって所有されるLRBのリンクしたリストを形成するために使用されるロックセットポインタ185(なお、LRBのリンクしたリストは、二重にリンクしたリスト等の更なる特徴を含むように実施されてもよく、それによりLRBのチェーンを二方向にトレースすることが可能になる。LRBの更なる別態様が以下に記載される)と、
このLRBと同一のデータベース資源に対するネクストLRB(もし有れば)へのネクストLRBポインタ186。
【0030】
LCBの読出し及び書込みパラメータフィールドとLRBのアクセスモードパラメータフィールドに対する典型的なサイズは1〜2バイトで、8〜16個の別個のパラメータ値をサポートする。
【0031】
サブデータベースLCB(SLCB)164−1は、LCB 160−1 と同一又は類似の構成を有している。従って、サブデータベースLCB164は、サブデータベースのデータに対するアクセスのロックを制御するために LCBが使用されることを明確に示すためにSLCBと呼ぶ。図2において、SLCB 164−1からサブデータベースDB1 へのリファレンス又はポインタはデータベースリファレンス177 であり、 SLCB 164−1 はサブデータベースDB1 に接続されていることを示している。同様に、LCB 160−1 のデータベースリファレンス177 はグローバルデータベース192 を参照する。しかしながら、DBMSは、全ての LCB、或いは少なくとも第一レベルのLCB がグローバルデータベース192 を参照するようにセットアップできるため、 LCBからデータベースリファレンスフィールド177 を削除することが可能てあり、好ましい。
【0032】
本明細書全体を通して、図面は、一つのフィールドから図中の他のアイテムを指定するポインタとして現れるもを示す。これらのポインタは、従来のコンピュータのポインタに限定されず、任意のタイプのリファレンス又はツリー構造として実施できる。更に、参照する情報をデータ構造自体に含めてもよい。したがって、フィールド177 がグローバルデータベース192 を参照する代わりに、グローバルデータベース192 に関連する情報をフィールド177 に入れてもよい。以下に詳細に説明するが、グローバルデータベース192 及びサブデータベースDB1 、DB2 、... 、DBn を含む種々のデータベースはデータベース制御ブロック(DBCB)であり、好適な実施形態では、エンドユーザが最終的に必要とするデータを含んでいない。むしろ、データベース制御ブロックは、データベース又はサブデータベースの何れにロック又はロック制御ブロック(即ち、LCB )が関係しているのかを示すのに使用される。
【0033】
SLCB 164−1は、LRB 162−1と同一の構造を有するLRB 162−2 を参照する。図2は、二つのトランザクション制御ブロックT1、T2も示す。トランザクションT1はグローバルデータベースと関連付けられ、トランザクションT2はサブデータベースDB1 と関連付けられている。更に、トランザクションT1は、 LRB 162−1を参照することにより許可ブロックリクエストを得る。同様に、トランザクションT2はLRB 162−2 を参照する。これは、トランザクションT2がサブデータベースDB1 に関連するデータにロークを有していることを示す。
【0034】
本発明においては、ロックマネージャの主要部分はロック制御ブロック(LCB) である。従来のデータベースマネジメントシステムのように、LCB は、ロック可能な資源、例えば、リレーショナルやテーブルやレコードにおけるオブジェクト、ロー(組)を特定する。
【0035】
そのような資源は通常オブジェクト ID(”OID”)、組ID(”TID”) 、ROW/RECORD ID(”RID”)によって特定される。説明を簡単にするために、これらのID全体を示す用語としてRID と言う語を使用する。
【0036】
図2ではハッシュテーブルが示されているが、本発明はハッシュテーブルを用いたものに限定されない。考慮すべき点は、対応するLCB を見つけるのにRID を使用するのが好ましく、ハッシュテーブルが好適な手段であることである。しかしながら、アレーやその他のサーチ型構造を用いることもでき、本発明はハッシュテーブルの使用に限定されない。
【0037】
或るRID には如何なるトランザクションによってもロックが設定されない場合、簡便な方法は、データ構造内にそのRID のためのLCB を設けないことである。即ち、ハッシュテーブルから到達可能な LCBは、現時点における少なくとも一つのトランザクションによってロックされる可能性のある資源等の、全てのロック可能な資源のサブセットを表しているにすぎない。
【0038】
LCB を一方向にリンクするための別の方法として、二重にリンクされたリスト設けることができ、これによりLCB のチェーンを両方向にトレースすることが可能となる。各ロック可能な資源について、問題となっている資源に対してロックを保持するトランザクションが複数存在することが可能である。許可されたか或いは許可待ちのロックリクエストは、ロックリクエストブロック(LRB) によって表される。各LRB がそのLCB をリファーバック又は参照することが好ましい。この特徴は、簡明化とスペースの観点から図面には含まれていない。また、二重リンク構造を用いてLRB チェーンを提供することも可能であり、これにより、LRB のチェーンを両方向にトレース(追跡)することが可能となる。更に、最初の LRBがLRB のチェーン内の最後のLRB を参照することも可能である。これにより、チェーンの終端を可能な限り速く見つけ出したいとき(例えば、待ちリストの終りに新しい LRBを挿入するとき)の性能を向上できる。例えば、この特徴を提供するためには、図3において、LRB 162−5 はLRB 162−7 を参照する。
【0039】
図3は、本発明で使用するデータ構造の例である。
【0040】
しかしながら、簡明化のためにDBCBは示されていない。トランザクション制御ブロック(TCB)Tl及びT2はトランザクションを表す。トランザクションは多くのロック、従って多くのLRB を持つことができ、一LRB は一トランザクションのみに属するのが好ましい。各TCB に対して一組のLRB が維持されている。図では、破線を用いてLRB 間の関係及び TCBからLRB への関係を表している。LRB を二重リンクリストの形態で構成することもでき、更に、各LRB がそのトランザクション制御ブロックを参照するようにLRB を設けることできる。例えば、この場合、図3の各LRB162は TCB T1 又はTCB T2の一方を参照する。
【0041】
本発明の LCB及びSLCBのデータ構造から明らかなように、ロック可能な資源とデータベースを表すために一つのLCB が使用される。即ち、LCB は特定のデータベース内のロック可能な資源(グローバルデータベース又はその中のサブデータベースの一つt)を表す。
【0042】
図4はロッキングに用いるデータ構造を示し、各 LCB(又はSLCB)は単一のデータベース、従って単一のデータベース制御ブロック(DBCB)に関連しているのが好ましいことを示すために提供されている。例えば、図1においては、SLCB 164−1はDB1 を参照し、SLCB 164−2はDB2 を参照し、SLCB 164−3はDB1 を参照し、SLCB 164−4はDB2 を参照する。必要に応じ、グローバルデータベースのためのデータベース制御ブロックを持つことを回避することも可能である。何故なら、最も低い階層レベルにある LCBの各々はグローバルデータベースに属し、LCB 及びトランザクションに対してのデフォルトであると考えることができるためである。この場合、グローバルデータベースとの関係を示すために LCB及びTCB からの参照が適宜使用される
【0043】
更に、図4は、任意数のレベルのサブデータベースをどの様にして作ることができるかを示す。上で述べたように、SLCBの構造をLCB の構造と同一にすることが可能であり、サブデータベースのためのLCB をグローバルデータベースのためのLCB と区別するために、本特許出願では上記のようなラベリングを行った。しかしながら、LCB をチェーンで結ぶために使用される「next LCB reference」を用いることなくSLCBを設けることによりメモリをある程度節約できる。しかしながら、必要に応じ、SLCBを一方向に相互にリンクするか、或いは必要であれば二重リンクにすることもできる。図4では、LCB 160−1 及び160−2 は第一レベルのLCB であり、グローバルデータベースに関連付けられておいる。SLCB 164−1及び164−3 は第二レベルのLCB であり、第一レベルのSLCBと考えることもできる。SLCB 164−2及び164−4 は第三レベルのLCB,、即ち第二レベルのSLCBである。同一レベルのSLCB間のオプションのリンクは、破線の矢印又は参照記号によって表されており、二重リンクを設け、SLCB 164−3がSLCB 164−1も参照できるようにすることも可能である。
【0044】
図5は、好ましい実施形態では、各トランザクションが単一のデータベースに属していることを示す。トランザクション制御ブロックT1、T2、T3、... 、Tmはそれぞれ、単一のデータベース制御ブロックを参照する。従って、特定のトランザクションに関連するデータベース又はサブデータベースのレベルを決定することが可能である。
【0045】
図6はデータ構造の例を示し、好ましい実施形態のトランザクションはそれら自身のデータベース内の資源のみにアクセスする。例えば、実線の矢印を用いてグローバルデータベース192 を参照するトランザクションT1の場合、トランザクションT1は、破線の矢印を用いて LRB 162−1及び162−3 も参照するが、LRB 162−1 及び162−3 の各々は、ハッシュテーブル152 によって参照される第一レベル即ち LCBレベルと関連付けられている。又、トランザクションT2及びそのトランザクション制御ブロックはサブデータベースDB1 を参照するか又はその一部であり、破線の矢印を用いて LRB 162−2及び162−4 を更に参照するが、 LRB 162−2及び162−4 は、第二LCB レベル即ち第一SLCBレベルと関連付けられ、且つ DB1と対応している。好ましい実施形態においては、トランザクションは単一のデータベースのコンテキスト内で行われる。更に、トランザクションのデータベースの範囲内でない資源にトランザクションがアクセスすることを阻止するのが好ましい。実施レベルでは、これにより、トランザクションのLRB は、そのトランザクションのトランザクション制御ブロックが参照するのと同一のデータベース制御ブロックを参照する LCB(又はSLCB)に属するか又は関連付けられている。例えば、図6では、T2は DB1内で実行される。
【0046】
従って、T2(162−2及び162−4)のLRB は、同一のデータベースDB1 を参照するLCB(SLCB164−1 及び164−2)に属する。
【0047】
図7は、データベース制御ブロック(DBCB)の実施例を示す。好ましい実施形態では、DBCBに対して、エンドユーザが最終的に必要とするデータを記憶することはリクエストされておらず、DBCBの目的は、LCB 又はSLCBによって少なくとも部分的に表されるロックがどのデータベース又はサブデータベースに属するかを示すことである。
【0048】
図7では、DBCB 202は、IDと略された識別子フィールド204 を含む。このフィールドはDBCBの名称又は識別情報を示す。アクティブトランザクションフィールド206 (Act Txと略す)は、問題となっているデータベース又はサブデータベース内において現時点でアクティブになっているトランザクションへのDBCBからのトレースを可能にする。例えば、サブデータベースの所有者がサブデータベースをコミット又は終了することを望む場合、上記の機能は望ましい。システムは、サブデータベースのアクティブトランザクションが何であるかを決定しなければならず、もしアクティブトランザクションのリストが空でない場合、サブデータベースの所有者は、サブデータベース内で他の作業が行われていることを示すと共に、現時点でそれらのトランザクションを終了することが望ましいか否かを問い合わせる警告を得る。サブデータベースを終了することについて責任を有する者(entity)に、終了の決定を変更する可能性を与えることが望ましい。
【0049】
或いは、サブデータベース内においてアクティブトランザクションが実行されている時点ではサブデータベースを終了できないようにシステムを構成することも可能である。この場合、トランザクションを終了させ、アクティブトランザクションが存在しない時だけサブデータベースの終了が許容されるようにしなければならない。そのようなチェックがない場合、システムはトランザクション状態を停止し、データベース・マネジメントシステムの特性が望ましくない状態になるであろう。
【0050】
アクティブトランザクションフィールド206 は、全てのアクティブトランザクションのリストを含むリンクされたリストの一部である単一のリファレンス又は複数のリファレンスを含んでいてもよく、或いは、アクティブトランザクションの名称又は識別情報を含んでいてもよい。それに加えるか又はそれに代え、アクティブトランザクションフィールドは、問題となっているデータベース又はサブデータベースのためのアクティブトランザクションの各々を参照する二重リンクリストを用いて実施することもできる。
【0051】
所有トランザクションフィールド 208 (Own Txと略す)は、問題となっているDBCBを作り、従ってそれを所有するトランザクションへの参照である。グローバルデータベースの場合、このフィールドはヌルリファレンスに設定されるであろう。また、サブデータベースの場合、このフィールドは、その作成/所有トランザクション制御ブロックを参照する。スーパーデータベースフィールド210 (Sup DBと略す)は、このデータベースによってその一部を構成しているデータベースを表すDBCBへの参照である。
【0052】
サブデータベースフィールド212 (Sub Dbと略す)は、このデータベースのサブデータベースを表すDBCBのセットへの参照である。ネクストデータベースフィールド214 (Next DBと略す)は、データベース階層の同一レベル内の次のDBCBを参照する。先の(previous)データベースフィールド216 (Prev DBと略す)は、サブデータベース階層の同一レベル内の前の DBCB への参照である。Next DB 及びPrev DB フィールドは、サブデータベース階層内の或るレベルにおけるDBCBの二重リンクリストを作るために使用される。
【0053】
このようにして、親データベースが同一であるサブデータベースが上記のリスト内でリンクされる。DBCB 202の最後のフィールドの3個の点又は楕円は、必要に応じて追加のフィールドがDBCBに含まれることを表している。
【0054】
DBCB の目的は、資源階層又はデータベース階層において、ロック等の特定のものが属している場所を具体的に高精度で示すことである。これにより、サブデータベースとシステムの残部との関係を簡単に決定することが可能になる。
【0055】
上記した DBCB 及び以下に詳述するトランザクション制御ブロック(TCB) に関して、これらのデータ構造内に多数のフィールドが含まれているが、このフィードは各図に示されていない。参照の数を理解可能な範囲に抑え、且つ分かり易くするために、参照の内には図示しないものもある、即ち不要なものもある。したがって、図面に参照が含まれていないという事実は、参照が存在しないことを意味するものと解釈してはならず、同様に、データ構造が特定の参照又はフィールドを含むという事実は、そのような参照がそのデータ構造の絶対条件であると解釈してはならない。好ましくは、DBCBは階層を形成している。
【0056】
しかしながら、 DBCB を階層に配置しない構成も可能である。
【0057】
図8はトランザクション制御ブロック(TCB) データ構造222を示す。このデータ構造は、アクティブトランザクションを示し、トランザクションが属しているデータベース又はサブデータベースのレべルを示し、及び/又はトランザクションのロックされた資源とロックの状態を決定するために使用される。
【0058】
TCB 内には、例えば、トランザクションの名称を識別する識別子フィールド224 が設けられている。コンテキストデータベースフィールド226 (Ctxt DB と略す)は、問題となっているトランザクションについての範囲又はコンテキストを表す、データベースのDBCBを参照するために用いられる。
【0059】
これは、トランザクションの作成時に決定されるであろう。本発明の実施形態によれば、トランザクションが発生してからそれが終了するまでトランザクションは存続し、その全ての動作を単一のデータベース内で行う。好ましい実施形態においては、トランザクションの存続期間の開始から終了まで単一のコンテキスト内にトランザクションを存在させるルールを用いることにより本発明は能率的に且つ適切に動作する。このように、コンテキストデータベースフィールド226 は、問題となっているトランザクションの範囲又はコンテキストを表すために使用される。例えば、コンテキストデータベースフィールド226 はグローバルデータベースを参照する。これは、TCB に対応するトランザクションはグローバルデータベース内で実行されるか、又はそのコンテキストデータベースとしてグローバルデータベースを有していることを意味する。
【0060】
図8のサブデータベースフィールド228 は、このトランザクションが作成したサブデータベースのセットを表すために使用される。なお、このフィールドを空にするか又はヌルを参照するようにすることも可能である。トランザクションは多数のサブデータベースを作成することが可能で、従って、多数のサブデータベースを所有することが可能である。
【0061】
実行されているアクションの種類によっては、特定のトランザクションのためにどれだけ多くのサブデータベースが存在しているかを決定することが望ましい場合がある。従って、トランザクションを終了することが望ましくなった時点で、そのトランザクションが実行される前に存在していたサブデータベースを知ることが好ましい。同様に、既に説明したように、データベース制御ブロックのためのサブデータベースを知ることが望ましい。
【0062】
フィルド230 はTCB の許可されたロックリクエストを表し、フィールド234 はTCB の許可待ちのロックリクエストを表す。図面、例えば図6に示すように、これらのフィールド230 及び234 は、 TCBからLRB への参照を用いて作成される。
【0063】
必要な場合、トランザクション又はTCB の階層を維持するためにスーパートランザクションフィールド236 が用いられる。スーパートランザクションフィールド236 は、問題となっているトランザクションよりも階層の高いトランザクションを参照又は指定する。例えば、問題となっているトランザクションを作成したか又はそのトランザクションの作成を許可したトランザクションを参照するためにトランザクションフィールド236 が使用される。
【0064】
図9は、DBCB間の関係及びDCBCとTCB との関係を示す。これらのデータ構造は、資源のロックを制御するために使用される。図9では、図面が過度に複雑になることを避けるために、ハッシュテーブル、LCB 、SLCB、LRB は示されていない。しかしながら、通常、これらのデータ構造は、本システム内に存在している。図9には、TCB T1、T2、T3、... 、Tmが示されている。
【0065】
DBCB 240、250 、260 、270 、280 、290 、300 も示されている。本例では、DBCBの階層を見ることができる。例えば、DBCB 240は、DBCB階層構造にける最も高いレベルのDBCBであり、グローバルデータベース192 に対応している。DBCB 240に関しては、IDフィールド241 が、このDBCBがグローバルデータベースのためのものであることを示す。DBCBでは、グローバルデータベースの所有者、即ち所有トランザクションを明確に特定する必要はないので、Own Txフィールド243 はヌルを示している。同様に、グローバルデータベースについてはスーパーデータベースは存在しないため、Sup DBフィールド244 もヌルを示している。
【0066】
Sub DB フィールド245 は、本データベースのためのサブデータベースを参照し、この場合、DBCB 250を参照する。この特定の例では、グローバルデータベースのレベルには、他のデータベースが存在せず、従って、Next DBフィールド246 及びPrev DB フィールド247 の各々はヌルを示す。なお、図9では、図面を簡単にするために図7に示すアクティブトランザクションフィールド206 が示されていないが、上記した様に、好ましい実施形態では、アクティブトランザクションフィールドが使用される。
【0067】
DBCB 240以下の階層レベルには DBCB 250 と260 がある。図9のフィールドは自明であるため、これらのフィールドの全ては説明しない。しかしながら、DBCB 250 に関しては、所有(owning)トランザクション253 が T2 を参照し、このDBCBのためのスーパーデータベース 254は、DBCB 240によって表されているグローバルデータベースであることが分かる。このサブデータベースのためのDBCB 250は、DBCB 270を参照するSub DB 255によって示されている。データベース 250の他のサブデータベース230、290、300はサブデータベース 270にリンクされている。Next DB フィールド256は DBCB 260を参照し、Prev DBフィールド257 はヌルを参照する。
【0068】
DBCB 250と階層レベルが同一のDBCB 260 に関しては、所有トランザクション263 は T3 であり、スーパーデータベース264は DBCB 240 を参照し、ヌルを参照しているサブDBフィールド265 によって表されているようにDBCB 260のためのサブデータベースは存在せず、フィールド266 によって示されているようにNext DB は存在しない。Prev DB フィールド267 は DBCB 250 を参照する。DBCB 240、 250、及び260 についての上記の記載から、DBCB 270、280 、290 、及び300 の各々は、DBCB 250及び260 の階層レベルよりも低い同一の階層レベルであることが分かる。
【0069】
DBCB に関しては、一般化して考えると、スーパーデータベースフィールドは、如何なるスーパーデータベースも参照しないグローバルデータベースを除き、一つのスーパーデータベースを参照する。そのような参照により、上記の階層の表現が可能とされている。図9は、特定の一連のトランザクションの間におけるDBCBの配置の例を示してるだけであり、図9に示す階層と全く同じである必要はない。
【0070】
トランザクションがサブデータベースを作成する時、サブデータベースは、その作成するトランザクションのコンテキストに基づいて作成される。図9においては、トランザクションT2及びT3はグローバルデータベース内で実行されることが好ましい。何故ならば、その様にしないと、それらはグローバルデータベース内に属するサブトランザクションを作成できないからである。従って、DBCB 250及び260 が、それらの上位の(superior)のデータベースとしてDBCB 240で表されるグローバルデータベースを有しているという事実は、所有トランザクションはグローバルデータベースをその範囲又はコンテキストとして有していることを示す。
【0071】
更に、上で述べたように、各DBCBのためのスーパーデータベースは一つしか存在しないことが好ましいが、サブデータベースの数は任意である。しかしながら、そのような必要のない別の実施形態も可能である。
【0072】
図9は、例えば、DBCB 250がDBCB 260を参照し、DBCB 260が DBCB 250 を参照することにより二重リンクリスト構造を示しているが、そのようなDBCB間の二重リンクリスト関係は必須要件ではなく、ツリー構造等、他の構成も使用できる。別のオブジェクトを指定又は参照する DBCB からのポインタ又はリファレンスであることができるが、その目的は、DBCBの位置を表す或る構造のセット又はリストを表すことである。この代替の実施形態では、別のデータ構造がデータ構造アレンジメントに付加される。そのような代替の配置は、データ構造アレンジメントをより複雑化するが、そのようにする利点がある。その一例は、必要であれば、DBCBの次の参照及び/又は前の参照を削除できることである。
【0073】
図10は、図9に示されていないTCB 及びDBCBの別の詳細部分を示す。この詳細部分は、明確化及び図面が過度に乱雑になるのを防ぐために図9では省略されていた。同様に、図9に含まれている DBCB の特徴は、明確化のために図10では省略されている。図10では、アクティブトランザクションフィールドはDBCB内に示されており、コンテキスト及びサブデータベースフィールドの使用は TCBに関して示されている。図10のこれらのフィールドは、DBCBとTCB の関係を寄り詳細に示す。
【0074】
図9に示すように、トランザクションがその所有トランザクションの追跡履歴を保持(keep track)することが好ましく、又サブデータベースのアクティブトランザクションの追跡履歴を保持することが好ましい。
【0075】
そのような機能は、 DBCB のアクティブトランザクションリファレンス又はフィールドによって行われる。図10に示すように、DBCB 310は識別フィールド311 及びアクティブトランザクションフィールド312 を有する。アクティブトランザクションフィールド312 は TCB 320を参照する。これにより、DBCB 310に対応するサブデータベースの所有者は、TCB 320 に対応するトランザクションがDBCB 310のためのアクティブトランザクションであることを判定できる。更に、TCB 320 の最も右側の部分においてTCB 330 への参照があり、TCB 330 は TCB 340を参照していることが分かる。
【0076】
また、TCB 340 は、TCB 320 を参照するTCB 330 を参照する。更に、TCB 320 、330 、340 の各々のコンテキストデータフィールドは DBCB 310 を参照する。
【0077】
トランザクションが作成又は開始される場合、そのトランザクションがある種のコンテキストを有し、その中でトランザクションが実行されるのが好ましい。古典的なコンテキスト及び従来技術においては、このセッティングが常にグローバルデータベースであった。しかしながら、本発明のネスト化データベースでは、トランザクションをグローバルデータベース内で開始して実行でき、又ランザクションをサブデータベース内で開始することもできる。好ましくは、トランザクションが開始されたサブデータベース外のデータはアクセスできず、又、好ましくは、このトランザクションが実行されているデータベースをロックマネージャが知っているか判定でき、これがコンテキストデータベースとして参照されるものである。トランザクションがリクエストしている資源がコンテキストデータベース外である場合、そのような情報に対するアクセスのリクエストはロックマネージャによって拒否されるのが好ましい。しかしながら、別の方法として、問題となっているサブデータベースを動的に成長させることも可能である。必要であれば、この動的成長が丁度その時に起きるようにでき、又、更に必要であれば、成長を(ユーザの介在なしに)自動的に開始させることもできる。その様な成長は、図16のプロセスに類似したマネージャ内で生じる。図16は、新しいデータ・アイテムがどの様にしてサブデータベースに持ってこられるかを示す。リクエストされているデータがコンテキストデータベースの一部である場合、その資源はアクセス可能なデータベースに属し、評価しなければならない次の問題は、その資源について矛盾するロックが存在するか否かである。矛盾するロックが存在しない場合、ロックマネージャはロックリクエストを許可できる。従って、本発明のデータ構造は、資源がアクセス可能であるか否かの表示と、その資源がロックされているか否かの判定の両方を可能にする。
【0078】
図10を再度参照すると、TCB 320 のSub DBフィールド323 は DBCB 348 を参照し、TCB 330 のSub DBフィールド333 は DBCB 346 を参照し、TCB 340 のSub DBフィールド343 はDBCB 347 を参照することが分かる。 DBCB 348 、352 、356 に関しては、これらのDBCBのスーパーデータベースポインタ又はリファンレスは DBCB 310 を参照する。DBCB 348は、そのアクティブトランザクションリファレンスを使用してTCB 360 を参照する。TCB 360 及び364 はそれぞれ、コンテキストデータベースリファレンスを用いて DBCB 348 を参照する。
【0079】
図10の単純化したDBCB及びTCB のフィールドの詳細構造は、明確化のためと、図10がリファレンスによって過度に複雑になることを避けるために省略されている。
【0080】
図11は、資源のロックを制御及びモニターするために使用されるデータ構造の代替構成を示す。図2、図4、及び図6を参照して示した実施例では、或るデータベース内の或る資源のロックに対するロックリクエストをロックマネージャが処理するとき、グローバルデータベース内のその或る資源のためのLCB を見つけ出すために資源ID(RID) を最初に使用する。その後、必要であれば、同一のRID ではあるが、処理中のロックリクエストによって特定された特定のデータベース又はサブデータベース内のRID のためのLCB を見つけ出すために”Next Level LCB”リファレンスを使用する。図11の代替の実施形態(及び図12の代替の実施形態) は、上に述べた場合とは逆のイベントシーケンスを可能にする。即ち、図11のデータ構造により、ロックマネージャは、DBCBによって表されたデータベースを最初に見つけ、その後、そのデータベース内でRID 見つけることが可能となる。これは、上に述べたように単一のグローバルサーチテーブルだけではなく、DBCB 毎に一つのサーチテーブルを設けることによって達成される。
【0081】
図11において、DBCBは、その所有する(owning)TCBを参照することに加えサーチテーブルを参照する。このサーチテーブルは問題のデータベース内に含まれているRIDへのアクセスを提供する。例えば、DB1はテーブル380を参照し、DB2はテーブル390を参照し、DBnはサーチテーブル400を参照する。各サーチテーブル380、390、400はSLCBを参照するが、このSLCBは特定のデータ・アイテムのロックに関する情報を提供する。図11には図示されていないが、LRBは、SLCBに関連する許可されたあるいは許可待ちのロックリクエストに対して用いることができ、その用い方は上に記載の実施態様におけると同様である。
【0082】
テーブル380、390、400等のサブデータベースサーチテーブルは、ハッシュテーブルとすることができるが、別の態様で作成することも可能である。例えば、LCBリファレンス群の固定サイズの配列アレイを用いて作成することができるであろう。サブデータベースのサイズがサブデータベース創出の際に固定されている場合にはそのような態様は有利であろう。あるいはまた、LCBリファレンス群の非固定サイズの配列アレイ(成長可能(growable)アレイ)を用いて作成することもできる。ハッシュテーブルをサブデータベースサーチテーブルとして用いる場合、このハッシュテーブルには、所望により、グローバルデータベースハッシュテーブルよりもより少ないエントリーを割り当てることができる。ハッシュテーブルをサブデータベースサーチテーブルとして用いる場合、与えられたいずれのハッシュテーブルに対してもLCBのチェーンを持つことができるであろう。これは例えば、サーチテーブル400について図示されているように、リファレンス402はSLCB 164−5 を参照し、SLCB 164−5 はSLCB 164−6を参照している。図11に示す別実施形態では、各LCBは異なるサーチテーブルの下にオーガナイズされているので、LCBやSLCBの”Next Level LCB”フィールドはもはや必要でない。よってそのようなサーチテーブルの一つにおける所定のエントリーから、上述の実施形態のLCBとSLCBの階層構造とは対照的に、LCBの線形構造にアクセスすることができる。図11では、各サブデータベースDBCBは、その所有TCBへの参照を有し、また、各TCBはそこに含まれるDBCBへの参照を有する。図11のデータ構造はスーパーデータベース・リファレンスの使用をなくするものではない(但し、これらリファレンスについては図11、12には図示していない)。
【0083】
図11では、トランザクションに対するコンテキストデータベースに関係する情報を示す、TCBとDBCB間の両方向に行き来するリファレンスが存在する。即ち、例えばT1について説明すると、T1はグローバルデータベース192に向けられているので、T1がグローバルデータベース内で処理実行すること、あるいはT1がグローバルデータベースをそのコンテキストデータベースとして有することがわかる。DB1からトランザクションT1への参照について説明すると、この参照は、DB1がT1によって所有される、あるいは創出されることを示す。T2、T3、T4は全てDB1を参照しており、これらのトランザクションはDB1の範囲内あるいはコンテキスト内で実行されることを示す。図11の示す所によれば、T4は、DB2からT4へと参照されることにより、DB2の作成元であるが、T4はDB1内で動作する。この情報から、DB2はDB1に含まれるサブデータベースであると結論することができる。念のため記載すると、図11は単にサブデータベースシステムの一例を示すものに過ぎず、別の表現方法もありうる。しかしながら、図11に示すように、T4を介する結合のゆえに、DB2の内部に存在するものはなんであれ、DB1のサブセットである。図11はまた、T5とT6がDB2をそのコンテキストとして実行することを示している。T6はDBnを創出し、T7とT8とはDBnの中で動作する。
【0084】
図12は、本発明の更なる別の実施態様を示す。サブデータベースは、サイズが小さくできることから(なぜならそれらは少数のロック可能な資源を含むようにできる為)、必要に応じて、サブデータベースを固定サイズとすることができるであろう。また、必要に応じて、サーチテーブル410、414、416はLCBのアレイとできるであろう。各LCBはサブデータベースに対するものなので、図12のLCBは、SLCB(サブデータベースロック制御ブロック)164−1〜164−20として示されている。リファレンス群のアレイやLCBリファレンス群のハッシュテーブルではなく、SLCBのアレイを用いることができるであろう。なお、ハッシュテーブル152は好ましくは前述の各実施形態に関して記載されたのと同様にして作成される。グローバルデータベースに対するこのハッシュテーブルの作成は、所望により、グローバルデータベースに対して多数のLCBを使用することを許容するものである。もしサブデータベースの特定の使用が知られている場合には(知られていない場合でも)、サブデータベースにおけるアイテムの数を例えば20データ・アイテム等の任意数に制限することが適切であるかもしれない。この数は必要に応じ、より大きくも小さくもすることができる。しかしながら、これは固定された数であって、実施形態においてはアレイ410、414、416が20メモリを有するように作成することができる(各メモリは全SLCBを保持できる)。そうすれば、もし割り当てられたメモリの一部分のみが用いられた場合、用いられていない部分は無駄になるが、この用いられていない部分はそれほど大きいものではなく、また、達成される利点として、新しいLCBが導入されてもダイナミックメモリの割当てに対処する必要がない。また、サーチテーブルなしにLCBのチェイン(リンクされたリストやダブルリンクされたリスト等)を持つことも可能で、特定のLCBを設定する必要がある場合にはいつでもポインタやリファレンスチェーンの順次的な調査ができる。
【0085】
図13は、DBCBに関するデータ構造群とTCB群の両者を含む階層を示す。本発明によれば、トランザクション群とデータベース群とを、同一の種類の「物」としてみることができる。これが可能な理由は、データベースをパッシブトランザクションとみることができるからである。よって、データベースがパッシブトランザクションとみなされ、トランザクションとして上に記載したもの(T1等)がアクティブトランザクションと表示(label)されることから、単一の階層データ構造におけるDBCBとTCBへの統一化されたアプローチが可能となる。
【0086】
図13にはATCB群とPTCB群を示すが、これらをそれぞれアクティブTCB及びパッシブTCBと称する。アクティブTCB(即ちATCB)は前述のTCBに対応し、パッシブTCB(即ちPTCB)はDBCBの別称である。図13では、データベース/トランザクション階層とも称される階層のルーツは、グローバルデータベースPTCB 420である。このノードは、上記のグローバルデータベースデータ構造192に対応する。この階層において、いずれのノードも如何なるタイプの子ノードを有してもよいようにできる(とはいっても、PTCBがその直接的親ノードとして他のPTCBを有することは通常ないし、そのようなことは行なわれていないであろうが)。上で述べたことを別の言い方でいうと次のようにいえる。階層の出発点はグローバルデータベースで、これは階層のルーツであり、そこから、トランザクションやサブデータベースが作成され寿命を全うする、考えうる殆どあらゆる方法でデータベース/トランザクション階層が動的に展開される(成長(grow)と退縮(shrink))。このことは、グローバルデータベースに対するPTCBは、他のノード全てが過渡的(transient)でありながらトランザクション・マネジメントとロック・マネジメントが行なわれる対象に対してシステムが存在する限り、存在するであろうということを意味する。この場合、グローバルデータベースに対するPTCBは、恒常的に存在するように作成することができる。図13の統合された(unified)構造は、上に述べたいずれの実施態様についても用いることができる。これが意味することは、システムは、全てのLCBへのアクセスを提供するグローバルサーチテーブルを有するように作るか、あるいは問題としているPTCBに属するLCB群へのアクセスを与えるPTCB毎にサーチテーブルを有するように作ることができる、ということである。
【0087】
図13を参照すると、グローバルデータベースPTCB 420が一番上の階層レベルに描かれている。このグローバルデータベースPTCB 420の直下には4種のトランザクションATCB 422、ATCB 424、ATCB 426がある。これら3種のATCB はトップレベルのトランザクションであって、グローバルデータベースPTCB をそれらの直接の親ノードとして有している。図13の階層における全ての他のトランザクションやATCBは、サブトランザクションと考えることができる。図13に示したデータ構造の関係を実現可能である理由は、本発明者の知見、即ち、サブデータベースをパッシブトランザクションと見ることができ、またサブデータベースが常ににアクティブトランザクションよって創出されると、そのサブデータベースはサブトランザクションになる、という本発明者の知見による。図13に示すデータ構造の階層と統合化(unification)の利点は、図10に示す構成に比べ単純化できる可能性が提供されていることである。この単純化がもたらされる理由は、TCB群階層とDBCB群階層という二つの異なる階層の間を行き来するポインタやリファレンスの代わりに単一の階層があるためであると考えることができる。これにより、データベース制御ブロックをしてその所有トランザクションとスーパーデータベースとの間の差別化をさせる代わりに、データ構造の作成を、それら2つのフィールドのただ一つのみが必要とされるようにして行なうことができる;その場合、スーパーノードのみを含むシステムとすることができる。例えば、図10を見ると、各トランザクション制御ブロックはコンテキストデータベースを指すポインタやレファンレスを有しており、従前の実施方法におけるデータ構造は、(必要ではないにせよ)スーパートランザクションを指す他のポインタやレファンレスを有するのが好ましい。これに対し、図13の実施形態では、これらスーパートランザクション及びコンテキストデータベースリファレンスやポインタは、単一のリファレンスと結び付けられる。前出の実施形態と同様、本実施形態でもハッシュテーブル、LCB、SLCB、LRB等のサーチテーブルが用いられる。
【0088】
ロックリクエストを実施するときは、前出の実施形態と同様の処理ステップを行なう。処理にあたっては、TCBからLCBへ、あるいはLCBからTCBへと進むことが望まれるかもしれない。正に前の例と同様に、回答は、PTCB(これはDBCBに対応する)を参照するTCBやATCBによって判断されることができる。別の方法として、PTCBが見出される所まで上方に階層を上がって行くこともできる。いずれの場合においても、トランザクション制御ブロックから、そのトランザクションのデータベース制御ブロックへと迅速に進むことができる。この時点で、2つのオプションのいずれかに従うことができる。即ち、ハッシュテーブルを有するRIDを用いて問題のリファレンスを見つけ次いで問題のデータベースに対するLCBを見つけるか、あるいは、DBCBに行ってからハッシュテーブル又はデータベース制御ブロックに行く(これらは所望する一つのRIDに対するLCBをサーチするのに用いられる)。PTCBの構造は、前に記載したDBCBと同様である。
【0089】
しかしながら、PTCBは、所有トランザクションとDBCBのスーパーデータベースフィールドを結合させることによって作成することが好ましく、この結合されたフィールドを、簡単に「上位」(superior)と称することができよう。
【0090】
上記TCBに対応するATCBの作成に関しては、図8のコンテキストデータベースフィールド226を、図8のTCBのスーパートランザクションあるいは親トランザクションフィールドと結合させることができる。このようにして(必要に応じ付加的な変更がなされるにせよ)、ATCBをTCBと非常に類似した方法で作成することができる。
【0091】
前出の各実施形態では、ロックリクエストブロック(LRB)を参照するLCBあるいはSLCBを用いることが好ましい。この実施形態の別の方法として又はこれに加え、LRBを、LCB又はSLCB自身の中の許可待ちリクエストビットマップや許可されたリクエストビットマップで置き換えることもできる。図14を参照すると、LCBやSLCBの別の実施形態がデータ構造460として示されている。このデータ構造はLRBに保存されている情報をLCBへと統合するので、LCB(及びSLCB)はクラッシク形式のLCB(及びSLCB)より多くの情報を含む、より「リッチ」な制御ブロックである。図14のデータ構造は米国特許第5,983,225号の図3のデータ構造に基づいていると共にこれに類似しているものであって、この特許公報を本明細書の一部を構成するものとしてここに援用する。
【0092】
データ構造460はロックIDフィールド462を含むが、このフィールドは通常、今問題としているロックされた資源やその他の資源に対する資源識別子のコピーを有する。モードフィールド(mode field)464は、このLCBで表されるデータベース資源に関して許可された全ロックの最も制限的なアクセスモードを示す。許可されたリクエストビットマップフィールド466及び許可待ちリクエストビットマップフィールド468はそれぞれ、システム(あるいはサブデータベースレベル)によってサポートされた同時的トランザクションの最大数を示すよう、十分なサイズの(例えば、64ビットあるいは128ビットの)ビットマップを含む。各トランザクションにはビットマップトランザクション識別子が一つ割り当てられる。許可されたリクエストビットマップ466は、LCB(又はSLCB)460で表されるロック資源を許可された各アクティブトランザクションに対するセットビットを含む。同様に、許可待ちリクエストビットマップ468は、LCB460で表される資源に許可待ちのロックリクエスト(アクセスリクエストとも称する)を有する各アクティブトランザクションに対するセットビットを含む。データベースフィールド470は、LCB460に対応する資源に対するデータベースを表すDBCBへのリファレンスを含む。本実施形態によれば、他の実施形態と同様、所定のレコードあるいはオブジェクトの唯一個の物理的コピーが存在するが、そのレコードは二以上のデータベースにおいてアクセスされることができ、仮にある一時点で二以上のデータベース中でアクセスされることができない場合には、時間をずらせばアクセス可能であるようにシステムを作成することができる。よって、トランザクションが現在問題としている資源にアクセスしている時、その資源をどのデータベース中にアクセスしようとしているのかを示すこと、またその場合その目下問題となっている資源が所属する各データベースに対し、単一のLCB(又はSLCB)が存在すること、が好ましく、そして好ましくは、そのLCB(又はSLCB)は目下問題としているデータベースがそれに対応していることを明示的にはっきりこれと示すことができるべきである。これが、データベースフィールド470の目的である。
【0093】
ネクスト・レベルLCB472については、このフィールドはネクスト・レベルLCBを参照するが、参照の仕方は図4及び図6に示すより高い階層レベルのSLCBの参照の場合と同様である。フィールド474は、追加のフィールドがLCB/SLCB460中に含まれてもよいことを示す。例えば、読出し/書込みパラメータビットマップ(その例としては、米国特許第5,983,225号の図2に要素172及び173として示されている要素が挙げられる)を用い、LCB460で示すデータベース資源について許可された読出し/書込みパラメータ化アクセスモードを表すことができる。加えて、他のフィールド群もLCB460のエリア474に含まれていても良い。ネクストLCBフィールド476を用いてネクストLCBを表しても良く、このフィールド476は図2のフィールド176に対応するであろう。更に、データベースフィールド477及びネクスト・レベルLCBフィールド178が図2に関して作成されると同様、データベースフィールド470及びネクスト・レベルLCB472も作成されることができる。LCB(あるいはSLCB)460の別の実施形態をもって、LCB又はSLCBが用いられている先の図面のいずれかに置き換えることができ、このようにすることによって、それら実施例で用いることが好ましいLRBを使用しないで済ませることができる。
【0094】
本発明は様々なトランザクションに関し、ここでトランザクションとは作業の論理的単位(a logical unit of work)と考えることができる。このようなトランザクションは、人が端末の前に座って作業をする環境に基づくものであるか、既存のコンピュータプログラム及びそのプログラムの命令を実行するためのリクエストを走らせたり提示したり(submission)することに基づく何かであることができる。サブトランザクションは、トランザクションと共に、あるいはトランザクションの下で、あるいはトランザクションと関連してなされる作業という概念に関する。
【0095】
トランザクションをサブユニットに分割することは、サブトランザクションを作り出すことと考えることができる。所望により(例示的実施形態に過ぎないが)、トランザクションは、他のトランザクションとは独立したものと考えることができ、また作業の自律的単位であることができる。
【0096】
これに対し、サブトランザクションは、非自律的あるいは非独立的トランザクションと考えることができる。よって、サブトランザクションはより高いレベルのトランザクションの一部と考えることができる。
【0097】
データベースはデータの集まり(collection)と考えることができる。サブデータベースもまたデータの集まり(collection)であるが、サブデータベースは一般に動的に創出(dynamically created)され、暫定的なエンティティ(transient entity)と考えられる。好ましい実施形態においては、サブデータベースは、創出トランザクションが生きている間だけ生き続け、サブデータベースを創出したエンティティが存在しなくなったらサブデータベースも存在しなくなるように作成しても良い。サブデータベースは、制御の領域(a sphere of control)である、あるいはこれと関係する、と考えることができる。この制御の領域とは、データのサブセットの周囲にフェンスやラインを置き、そのフェンスの内側がサブデータベースとみなされる領域である。サブデータベースはまた、バーチャルデータベースと考えることもできる。本明細書においては、「データベース」という語はサブデータベース又はバーチャルデータベースを指すものとして使用することがある。サブデータベースは、物質化される必要がないという意味ではバーチャルなものと考えることができる。本発明の実施態様においては、サブデータベース中に別の物理的コピーを持つ必要はない。よって、グローバルデータベースに属し且つ同時にグローバルデータベース制御ブロック192に対応する一以上のサブデータベースに属することができるデータのコピーを一個のみ有すれば良く、別の物理的コピーを持つ必要はない。
【0098】
好ましくは、データは図1のデータベース等のグローバルデータベースに保存される。グローバルデータベース192は、好ましくはDBMSのロックマネージャを管理し動作させるプロセス中で用いられるデータベース制御ブロックとして具現化される。データベース中に実際に格納されているデータを得るためには、グローバルデータベース192及び他のDBCB群、DB1、DB2、...、DBnは所望のデータを得るためのエントリーポイントとしては直接使用されず、データは好ましくはこれらのデータ構造に格納されない。
【0099】
本発明の一実施形態においては、LCB及びSLCBを経由してデータに到達する(あるいはデータへのアクセスを得るために用いられるロック情報を得る)ことが好ましい。
【0100】
次を仮定するものとする:即ちレコードID(RID)が一個存在し、そのRIDに対応する特定のレコードにアクセスしたいと所望され、且つそのレコードへのアクセスが所定のデータベース又はサブデータベース中にあるものと仮定する。基本的なアプローチでは、例えば図2〜10に示したデータ構造では、RIDに対するエントリーを得るためにハッシュテーブルを用いるが、そのRIDが見出された時には、そのRIDは、空であるかもしれないLCB群のチェーンを指すか特定のRIDに対応する一LCBを指す。その他のRID群に所属するLCB群は無視することができる。若しサブデータベースが所望のものでないかあるいはグローバルデータベースレベルのものであるならば、ハッシュテーブルの利用によって見いだされたLCBに対応するLRB群を調べ、コンフリクトしているロックが存在するかどうか、またそのロックリクエストは許可できるかどうかを判断する。もしコンフリクトしているロックが存在しロックリクエストが許可されるものなら、リクエストされたロックに対応するLRBを、許可されたLRB群のチェーン中に導入し、データへのアクセス許可を認容する。このとき、該システム中の他のコンポーネント、例えばバッファマネージャ(よく知られており図示しない)に行くこともできる。また、実際のデータを得るためにレコードを取ってくるための目的とする物理的アドレスやディスクへのアクセスを許容するアイテムに行くこともできる。若しネスト化データベース群やサブデータベース群が存在すれば、データベース制御ブロックを用いてデータへのアクセスに対する許可を得る。データに直接アクセスするためデータベース制御ブロックを用いることは好ましくない。上に述べたように、データを得るためには、ハッシュテーブルを用いてそのハッシュテーブルからハングオフ(hangs off)している対応LCB群を見出す。問題としているRIDに対するエントリーが得られ、図面上、右への動きがあり問題としているRIDに対するLCBを見出す。どのようにデータが得られるかを視覚化したものが図4である。図4では、第一レベルのLCB 160−1と160−2が存在する。図4のハッシュテーブル152から、LCB 160−1と接続するリファレンス154−1が見出される。LCB 160−1はグローバルデータベースDBCB 192を参照する。データがデータベース 2 (DB2)に入力されている、あるいは問題とするトランザクションがデータベース 2のコンテキスト内で行われると仮定すると、正しい資源に対するSLCBを見出すことが必要である。第一レベルのLCB 160−1から第二レベルのLCB 164−1へと進むことが必要となる。SLCB 164−1はDB1を参照するが、これは所望のデータベースではない。
【0101】
よって、LCB/SLCBの階層を一レベルずつLCB群の第三レベルまで上って行くゆくと、SLCB 164−2がDB2を参照していることが分かるが、このDB2が所望するものであるので、正しいLCBのレベルに到達できたことになる。この段階でロックマネージャは、SLCB 164−2においてこのデータベース及びこの資源に対しどんなロックが存在するかを調べる。もし新しいロックリクエストが既に存在するもの(それが何であれ)と適合性(compatible)があるなら、そのロックリクエストは許可される。一旦ロックリクエストが許可されれば、データに対するロックが得られるが、そのデータ自身にアクセスできなければならない。好ましい実施形態においては、DBCBを用いずにデータへのアクセスを得る。好ましくは、同時実行制御のためにデータベース制御ブロックを用い、該制御ブロックがロックマネージャによって使用されることが好ましく、バッファマネージャや、データを取りに出ていくシステム中の何らかの他のメカニズムによって使用されないことが好ましい。好ましい実施形態においては、データベース制御ブロックは単なる制御ブロックであってデータを含まない;即ちデータベース制御ブロックは制御情報を含む。よって、一旦ロックが許可されると、システムは或るトランザクションが特定のRIDを持つ資格を有する(entitled to)と表示(indication)する。
【0102】
次いで、従来の技術およびデータベース構築法によって、例えば、「該データに対するロックが許可された」との表示を存在させることができる。また、RIDによって同定されるデータを得るために、バッファマネージャや他の構成要素を用いることもできる。
【0103】
バッファマネージャはデータを得るためにDBCBを必要としない、あるいは使用しないことが好ましい。データを得ることは物理的なアクセス経路の問題、及びディスクのどこに所望のデータが存在するかという問題である。
【0104】
好ましい実施形態においては、データは一部のみである。但し別の実施形態では二部以上であることができる。好ましくは、所望のレコードその他の如何なるオブジェクトもその数は一部である。該レコード等はディスク上に物理的アドレスを有しており、バッファマネージャはRIDによって与えられた物理的アドレスを特定することができ、バッファマネージャにとっては、データがどのサブデータベースに属するのかはどうでもよい;なお、該物理的アドレスは如何なる場合でも不変であることが好ましい。
【0105】
以上、SLCBやLCBはDBCBに対するリファレンスやポインタを有するものとして説明してきた。しかしながら、別の実施形態では、LCBやSLCBの中に或るフィールドを有することによって、これらリファレンスやポインタを不要とすることができる。このフィールドは、ナンバーであるか、あるいはSLCBが特定のデータベース又はサブデータベースに属することを示す表示である。LCBやSLCBに対するリファレンスは別の態様も可能である。
【0106】
本発明のサブデータベースを実現するのに用いられるデータ構造は、「ロッキング」として知られている周知の同時実行制御技法に再帰(recursion)を用いる。
【0107】
再帰法を行なうには、所定の原理を何度も繰り返し適用し、本発明においてはデータのグローバルな集まり(例えば、ワードプロセッシングやエンジニアリングやCAD/CAM 設計のドキュメントや構造等)を収めているグローバルデータベースからスタートする。
【0108】
同時実行制御(concurrency control)は、或る一人あるいは一トランザクションの行為によって、他の者が作業中のデータが壊されたり不良になったりしないことを確実にするために、ロッキングによって行なわれる。本発明で用いる原理は、ミニデータベースとみなしうるサブデータベースやネスト化データベースを創出すること、次いでグローバルデータベースに対してなさたと同じ基本概念とロッキングをサブデータベースに対して実施することである。従って、本発明はグローバルデータベースにおける原理をサブデータベース群のバーチャルな集まりに適用するものである。よって、本発明は、再帰的同時実行制御の原理を共同作業(collaboration)の問題に適用し、これによってバーチャルデータベースやバーチャルな砂箱(sandbox)環境の作出を可能とする。これらのバーチャルな環境やサブデータベースに対し、本発明は従来の同時実行制御の使用を許容し、共同作業することを所望している複数のユーザ間での時として複雑なパターンのやり取りを確立することを可能とする。
【0109】
若しデータの変更をキャンセルしたい希望や前の状態にデータを戻せるようにしたいという希望がある場合(これはアトミック性に関係する)、本発明はトランザクションの範囲において、各データ・アイテムになされたすべてのログを保持するように構成することができる。そのログのコンテンツによって、変更されたいかなるアイテムも前進的にも後退的にも両方向の回復が可能となる。これは回復可能性として知られており、その実施には周知の各種技法が存在する。しかしながら、書込みを行なう複数の人々の間での共同作業実現へのアプローチの多くは、トランザクションをより小さなトランザクション群に分割することによってトランザクションのアトミック性を犠牲にしている。そのようなアプローチのよく知られた例として、オープンネスト化トランザクションやいわゆるsagasが挙げられる。これは上記の極く小さいアトミック・トランザクションの中での回復可能性を実現するものであるが、ユーザの見たいという希望により、トランザクションを構成する極く大きい作業論理単位(logical unit of work)については回復可能性は失われる。このため、トランザクションの補償という概念の導入が必要となる。これはアプリケーション開発者によって創出される必要のあるトランザクションである。言い換えるとこれは本質的には回復可能性へのドゥ・イット・ユアセルフともいうべきアプローチである。
【0110】
これはネスト化データベースの場合とは対照的である。即ち、ネスト化データベースの場合、回復可能性は失われず、補償トランザクションの使用も不要である。更に、ネスト化データベースの存在下において、回復可能性を実現するための周知の技法を引き続き用いることができる;即ち回復可能性の実現の目的で何らの新たなアルゴリズム、データ構造、技法も開発する必要はない。データベースのネスト化におけるあらゆるレベルで回復可能性が保持できることは、標準技法によるサポートと組み合わせることにより、共同作業(collaborative work)の問題への他の各種アプローチと比べて優れた本発明の利点である。
【0111】
本発明の好ましい実施形態においては、サブデータベースを創出したり稼動しはじめるために、問題としているオブジェクトやサブデータベースに関する書込みロックを有することが好ましい。トランザクションは制御領域を確立するが、誰でも動的に(dynamically)或るオブジェクトを該制御領域に持ってきて、その制御領域の性質に基づいてそれらのオブジェクトを操作(manipulation)することができる。書込み制御領域があれば、制御の全領域あるいはその一部を変更することができる。書込みロックによってデータの書込み、削除、挿入、変更が許容され、好ましい実施形態によれば、書込みロックはサブデータベースの創出に対する一要件である。サブデータベースは、書込みロックでなくデータベースロックを作出すると考えることができる。データベースロックを持っていても書込みロックでできることの全てはできないかもしれないし、またデータベースロックは現実にはその構成要素に対し、書込みロックに幾つかの権利を放棄させるようにしてしまうかもしれない。幾つかの権利が放棄されてしまうかもしれないが、それら権利を放棄してサブデータベースを作出することの利点は、そのサブデータベースの所有者が他者や他のグループと該サブデータベースのオブジェクトを共有することに異存がないことにより同時実行制御の別の枠組み(regime)が作出されることである。
【0112】
特定のトランザクションに関するロックマネージャは、そのトランザクションをして或るデータベースの範囲内で一生を終わるようにさせる。従って、本発明は、様々な範囲のトランザクションや様々なサブデータベースを有するトランザクションを認識する再帰的アルゴリズムを用いる態様として実施できる。本発明は、システムをより強力にしまた付加的特徴を実現するために米国特許第5,983,225の技法と共に実施することができとはいえ、本発明は、米国特許第5,983,225号公報に記載のパラメータ化ロックマネジメントシステムとは異なる。本発明におけるネストされたデータベースあるいはデータベースをネスト化すること、およびサブデータベースを利用することの目的は、データに書込む者が複数ある場合それら複数の者の間を調整することにある。
【0113】
図15に戻ると、これは新しい空の(empty)サブデータベースを作出するためのフローチャートである。図15で暗黙の了解事項とされていることは、トランザクションがデータベース又はグローバルデータベース内の何らかの他のサブデータベースの中で実行されていること、及びこのトランザクションの所有者あるいはこのトランザクションの管理者が新しいデータベースを作りだそうとしていることである。図15において、スタートの後、ステップ482で新しいDBCBを作成する。創出されようとしているこの新しいサブデータベースの存在に関する制御点あるいは参照点とするために、データベース制御ブロックが作成される。上で述べたように、好ましい実施形態においては、このサブデータベースに対してデータのコピーを作成する必要はないが、必要に応じて、データのコピーを作成しても良い。ステップ484、486、488は作成されたDBCBを、存在するかもしれない他のデータ構造と関連付けるものである。ステップ484では、DBCBの「Own TX」フィールドをして、作成/所有トランザクションを参照させる。
【0114】
このステップは、作成トランザクションと新しいDBCBとの間の関係を明確にするために行なわれる。なお、各フローチャートに記載の全ステップが必須であるのはなく、実施態様によっては、所望であればあるいは名指されたデータ構造やフィールドが使用されていないならば、なくても良いステップもあろう。次に、ステップ486では、DBCBのスーパーデータベースフィールドをして適切なDBCBのスーパーデータベースを参照させる。これを行なうことにより、「この新しいサブデータベースをその一部として有するデータベースは何か」をシステムに告げ、またDBCBデータ構造において明確にする。次いで、ステップ488では、DBCBデータ構造の「Prev DBフィールド」や「Next DB」に書込み、それらが同胞データベース(もし存在すれば)を参照できるようにする。これらの同胞データベースは、同一の作成トランザクション(もしあれば)によって予め作成された他のサブデータベースであることができ、この予めの作成は、該他のサブデータベースとの関係が定義されあるいは作成されるようになされるものである。
【0115】
次に、図15中、ステップ490では作成トランザクションのTCB中に適切な情報を書込むが、この書込みはこのDBCBが作成トランザクションのTCBの「Sub DBフィールド」によって参照されるようになされる。このステップによって、スーパーデータベースがこの新しいデータベースを、それ自身(即ちスーパーデータベース自身)が有するサブデータベース群の集合中に含むことが確実になる。最後に、ステップ492において、LCBのための新しいサーチテーブルが割り当てられ、該新しいサーチテーブルはこのDBCBから参照される。このステップ492は全ての実施形態において実施されなければならないものではないが、図11のデータ構造及び/又は図12のデータ構造では望まれるステップである。図11及び/又は図12の実施形態において、好ましくは、各DBCBはそれ自身のハッシュテーブルや、アレイや、そのドメイン又はサブデータベースの中にあるRIDを指定するためのエントリーポイントとして用いられるその他のサーチ構造を有することが好ましい。図15のプロセスはそこで終了する。
【0116】
図16は、サブデータベースの要素を構成する(populate)ために前記RIDをサブデータベース中に持ち込むプロセスを示す。図15で作成されたサブデータベースは最初作られた時には空であって、図16は、オブジェクトやデータ・アイテムがどのようにしてサブデータベースに引き込まれ、目下問題としているサブデータベース中で実行されることになる将来のトランザクションにそのオブジェクトやデータ・アイテムが利用可能となるかを示す。図16において、スタート後、ステップ500は問題のオペレーションが有効かどうかを判断する。このステップが行なわれる理由は、好ましい実施形態においては操作者は如何なるオブジェクトもサブデータベースに移動できないが、一定の条件が存在するべきであるからである。例えば、サブデータベースを所有する、創出されたトランザクションは、この時点では、それ(トランザクション)がサブデータベースへと持ち込もうと希望しているオブジェクトを所有していることが好ましい。その他の質問や判定も実施することができる。例えば、オブジェクトがこのサブデータベースのスーパーデータベース中に存在する場合にのみオブジェクトをそのサブデータベースにき込む(該スーパーデータベースがグローバルデータベースや他のサブデータベースであろうとなかろうと)などである。よって、好ましい実施形態においは、オブジェクトをデータベース階層におけるその直上のデータベースからのみ引きだすことができる。若し、上記二条件が満たされないなどの理由でオペレーションが有効でないと判断されれば、図16のプロセスはそこで終了する。
【0117】
もしステップ500がそのオペレーションが有効であると判断すれば、ステップ502に進み、目下問題としているオブジェクトをサブデータベース中に取り込む。図16の実施形態は図2〜4及び6に示したアレンジメント等のデータ構造アレンジメントに関する。ステップ502ではスーパーデータベースにおいてこのRIDに対するLCBを見つけ出す(locate)。好ましくは、このステップは次のように行なわれる。即ち、まずハッシュテーブルに行き、RIDをハッシングし、ハッシュテーブルのエントリー又はリファレンスを獲得し、そしてポインタチェーンやリファレンスに従って前記ハッシュテーブルから第一のレベルのLCBに進む。このLCBはグローバルデータベース中のRIDを特定するであろう。もし、問題としているオブジェクトを目下引き込もうとしているこのサブデータベースがグローバルデータベースの直下のものではなく、その上に(即ちグローバルデータベースとそれ自身の間に)他のサブデータベースを幾つか有しているならば、次のレベルのデータベースリファレンス群の中を移動したりあるいは一LCBから他のLCBへと、このサブデータベースの直接上のスーパーデータベース中の資源を特定するLCBに到達するまで次のレベルのLCBに移動することが適切である。ステップ500に関するこの判定によって、そのようなLCBが存在するようになることが分かる。
【0118】
ステップ502の後、ステップ504に進み、このデータベースあるいはサブデータベース中の問題のRIDに新しいLCBを割り当てる。この新しいLCBは、我々が作成した新しいサブデータベース(そこに資源が持ち込まれる)中の全く同じ資源を表す。ステップ506において、スーパーデータベース中のこのRIDに対するLCBは新しいLCBを参照するようにされる。最後に、ステップ508で、この新しいLCBにこのデータベースのためのDBCBを参照させる。即ち、この新しいLCBがはっきりとデータベースとの関係を示すことを確実にすることが好ましい。これは「これは私のデータベースだ」とか「これは私のコンテキストデータベースだ」ということを示すことによってなされる。図16のプロセスはそこで終了する。
【0119】
図17は、データベースやサブデータベースの要素をいかにして構成する(populate)かを示すフローチャートである。これは例えば、図11や12に示すデータ構造を有する別の態様においても用いることができる。このように要素を集めて構成する(populating)目的は、資源のロック状態を決定するためにLCBを作出することによりロッキング構造を実現する点にある。
【0120】
図17ではスタートした後、ステップ510を行う。このステップは問題のオペレーションが有効かどうかを判定する。このステップは、図16のステップ500と同一のステップであるので、このステップの説明は省略する。次に、ステップ512において、このデータベース用のDBCBを見つけ出す。
【0121】
この時、グローバルデータベースや対象とする何らかのサブデータベース等のデータベースは既知である。なお、データベース制御ブロックによって或るオブジェクトを引き込もうという企図が存在するデータベースはどれかが示されることが好ましい。更に、所定のデータベース用のDBCBを見つけ出す方法があることが好ましく、それはデータベース制御ブロックへの参照があるようになされることが好ましい。次に、ステップ514において、このデータベース内で、新しいLCB(又はSLCB)が問題のRIDに対して割り当てられる。このステップでは、データベース中に新しいオブジェクトが持ち込まれる際に新しいLCBが作出される。即ち、もし一オブジェクトが複数のデータベースに存在すれば、そのオブジェクトを有するデータベース群が存在することにより、そのオブジェクトは自身を表す同数のLCBを有す。最後に、ステップ516において、LCBがデータベースのサーチテーブルに挿入される。これはレコードIDについてハッシングし、ハッシュテーブルが使用されていると仮定するとハッシュテーブルエントリーを得ることによって達成される(但しアレイやテーブル等上述の別法を用い、新しいLCBを、如何なるハッシュテーブルエントリーであれ、ハッシュ関数が指示する挿入箇所に挿入してもよい)。この時もしLCBのチェーンが空であれば(即ち、LCBなし)、LCBをチェーン中最初のアイテムとして挿入する。また、チェーンが空でなければ、LCBを第一のアイテムとして挿入するか、あるいは、チェーンにおける最後又は中間のアイテムとして挿入する(エントリーが挿入され、問題としている特定のハッシュテーブルやアレイ・エントリーから到達されうる限りにおいて)。
【0122】
図18は、図2〜4及び6に示した本発明実施形態のデータ構造を用いてロックリクエストの処理を行なうための例示的ステップを示すフローチャートである。図18において、スタート後、ステップ520を行なって、問題としているRID用のハッシュテーブル・スロットを見つけ出す。ロックリクエストによって、あるデータへのアクセスの許可を求めているトランザクションを特定し、このRIDがその中に見出されようとしているデータベースを特定すると共に問題のデータのIDやRIDを特定する。更に、アクセスモードの表示が存在し、これはたとえばデータの読出しや書込みが所望されているか等である。この情報はロックリクエストの処理の際、ロックマネージャによって利用される。よって、RID用のためのハッシュテーブル・スロットを見つけ出すために、RIDのハッシングがあって、ハッシュテーブル・エントリーが見出され、そしてハッシュテーブル・エントリーにおけるリファレンスが調べられて、グローバルデータベース中でこのRIDに対するLCBが存在するかどうかを判断する。もしステップ522でRIDのためのLCBがグローバルデータベース中に存在しないと判断されれば、ステップ530に進み、そこでLCBを作出してそれを第一レベルのLCBチェーンに挿入する。ステップ522でRIDのためのLCBがグローバルデータベース中に存在しないと判断されれば、ロックリクエストは、LCBがまだ存在していないためLCBが作出されるという比較的単純な状況において、グローバルデータベース中の前記RIDのためのものと結論付けられ、LCBがまだ存在していないからには、そのデータ・アイテムについてのロックを有するトランザクションは他にないと容易に判断されるため、リクエストされているロックは無条件に許可されるであろう。このようにしてグローバルデータベースに関係する第一レベルのLCBチェーンへのLCBの挿入がなされる。ステップ530の後、ステップ532で前記リクエストを許可し、許可されたリクエストに対応するLRBを創出する。
【0123】
あるいは、もしステップ522で、RIDのためのLCBがグローバルデータベース中に存在すると判断されれば、ステップ524に進み、正しいデータベースあるいはサブデータベースが見出されるまで「Next Level LCB」に従う。ステップ524を行なう回数はゼロ回であってもよい。よってグローバルデータベース中の資源に対するリクエストがもしあっても、目下見られているLCBが所望の、あるいは正しいLCBであるかどうかを即座に見出すことができ、よって、このLCBでストップして先に進まないことができる。次に、ステップ526では、競合しているロックが存在するかどうかを判断する。これはそのデータ・アイテムに対してすでに許可されているかもしれない既存のロックのいずれとも前記リクエストが適合する(compatible)かどうかを判断することによって容易に行なうことができる。もしステップ526で競合しているロックが存在すると判断されればステップ528に進み、リクエストは待ち状態(queued)とされるかあるいは拒絶される。システムには待ち時間を設定することができ、既存のロックをリリースしてロックマネージャが後でリクエストされたロックを許可してよい時がきたかどうかを再考することができるようにもできる。あるいは、ステップ528において、リクエストされたロックは単純に拒絶されるようにしても良い;これは単にこの問題をどのように取り扱うかに関する設計上の選択事項である。すぐリクエストを拒絶すればハンギングを防止でき、また所望のロックへのアクセスを得られるかもしれないとの希望をもって不特定時間の間待つという問題をなくすることができる。
【0124】
ステップ526で競合するロックが存在しないと判定された場合、ステップ532に進み、ここで適切に資源や関連するデータのロッキングを指摘するためにリクエストを許可しそのリクエストに関係するLRBを創出する。
【0125】
図18と同様に図19も、ネスト化データベースの存在下で如何にロックリクエストは取り扱われるかを示すが、図19は、各データベースあるいはサブデータベース制御ブロックがそれ自身のサーチテーブルを有している図11及び図12のデータ構造に関するものである。図19では、スタート後、問題のデータベースのためのLCBサーチテーブルが見いだされる。これは、ロックリクエストによって特定されるデータベースのDBCBからサーチテーブルリファレンスに従うことによって行なうことができる。次に、ステップ536において、RIDのためのハッシュテーブル・スロットが見出される(もし本態様に関してそのようなデータ構造が存在するならば)。別の方法として、ハッシュテーブルを持つことを避けたいのであれば、本実施態様はLCBの表示や割り当てをより直接的に行なうようにしてもよい。次に、ステップ538で、RID用のLCBが既に存在するかどうかを判断する。
【0126】
もしLCBが存在しないなら、ステップ537に進み、リクエストがグローバルデータベース中の資源のためのものであるかどうかを判断する。その場合、ステップ544へ進む。しかしながら、もし前記リクエストが或るサブデータベース中の資源のためのものであってその資源のためのLCBがそのサブデータベースのサーチテーブルに存在しないなら、トランザクションがリクエストしているものはそのコンテキストデータベースの範囲から外れる何らかのものであることになるので、特殊な状態であることになる。通常、そのようなリクエストは拒絶される(ステップ539の「NO」の枝で示される)。しかしながら、システムのプラグラミング次第ではその時にリクエストされた資源を動的に持ち込む可能性(即ち問題のサブデータベースを動的に成長される可能性)を、サブデータベースの成長が許容されるべきかどうかを決定するステップ539の質問によって開いておくことができるであろう。そのような判断は人間の介入によってでもよらなくても行なうことができるであろう。ステップ539における答えがイエスであるときは、ステップ544に進む。必要に応じて、図18のフローチャートを修正し、図19のステップ522と530の間にステップ537と539を挿入することができる。これによって、ステップ537及び539の機能性が図18のプロセスにおいて達成される。
【0127】
ステップ538において、もしRID用のLCBが既に存在すると判断されるならば、ステップ540に進み、競合するロックが存在するかどうかを判定する。もし競合するが存在するなら、図18のステップ528に関して説明したように、ロックリクエストが待ちの状態(queued)にされるかあるいは拒絶される。もし競合するロックが存在しないなら、ステップ546に進み、上述のようにロックのリクエストが許可されLRBが作出される。図19のプロセスはそこで終了する。
【0128】
図20は、サブデータベースの終了時に実行されるステップを示すフローチャートである。スタート後、ステップ550 は、このデータベースのトランザクション又はサブデータベースが存在するか否かを判定する。ステップ550 の問い合わせの何れかに対する答えがYESの場合、流れはステップ552 に進み、このプロセスを継続するリクエストがあるか否かを問い合わせる。ステップ552 の判定ブロックは任意の要求される方法で行うことができ、ユーザがサブデータベースを終了することをまだ望んでいるか否かシステムのユーザに問い合わせた後におけるユーザの手動判定であってもよい。
【0129】
或いは、サブデータベースを終了することを受け入れられるか否かを示す自動判定であってもよい。このデータベースのトランザクション又はサブトランザクションが存在するためにサブデータベースを保存することが望まれる場合には、問題となっているデータは保存することが望まれているので、流れはステップ552 からエンドへ進行する。ステップ552 の継続的な判定は予めプログラムできる、即ちコンピュータプーグラム判定であり、手操作による判定であっもよい。ステップ552 において終了を継続する要求がある場合、ステップ554 が実行され、本データベースの全てのサブデータベースとトランザクションが終了される。この終了は、再帰(recursion)の他の例である。何故なら、ステップ554 のアクションを実行することにより、テップ554 で終了されるアイテムのために図20のフローチャートが再度実行されるからである。
【0130】
問題となっているデータベースについてのトランザクション又はサブデータベースが存在しないとステップ550 で判定された場合、又はステップ554 の実行の後にステップ556 が実行された場合、問題となっているデータベースについての全ての LCBの割当てが解除される。このステップ556 の割当て解除は安全に行うことができる。何故なら、LRB 及びこれらのLCB に依存するトランザクション又はサブデータベースが存在しておらず、それらを除去、即ち割当て解除する(例えば、コンピュータのメモリからそれらを削除する)ことが可能であるためである。次に、ステップ558 が実行され、サーチテーブルが使用されている場合には、サーチテーブルの割当てを解除される。なお、場合によっては、割当て解除すべきサーチテーブルが存在しない場合があり、この場合、ステップ558 を実行する必要はない。最後に、ステップ560 が実行されて、問題となっているデータベースのための DBCB の割当てが解除され、ステップ560 が一旦実行されると、通常は、このサブデータベース専用に設けられたコンピュータメモリ内にデータ構造が存在しなくなり、サブデータベースが存続を停止する。図20のプロセスはその後終了する。
【0131】
本発明の可能なアプリケーション、結果、及び特徴をより簡単に分かるようにするため、本発明ができることの例を図21(a)〜図21(d)を参照して説明する。本例は、ドキュメントを共用する例であるが、本発明は多くのアプリケーションを有し、複数のユーザの間でデータを共有したいという希望がある如何なる状況においても使用できる。更に、本発明は、一つのドキュメントの一部をユーザの間で共有し、複数のユーザが単一のドキュメントに対して同時に作業するために用いることもできる。本例では、各ユーザのために単一のスクリーン、即ちコンピュータ・ディスプレイが提供され、ユーザが利用できるドキュメント又ははデータ・アイテムの各々が画面上に示される。しかしながら、これは例示に過ぎず、実際には、問題としているデータ・アイテムの各々を単一のコンピュータスクリーンに表示する要求も必要性もない。図21(a)を参照すると、4つのドキュメント、即ち、ドキュメント1 572 、ドキュメント2 574 、ドキュメント3 576 、ドキュメント4 578 を有するゲールのコンピュータスクリーン570 が示されている。この図21(a)のスクリーン570 において、ゲールは書込みロックドキュメント1 、2 、3 、4 を有し、ゲールはこれらのドキュメントの内容を読んだり書いたりできる。図21(a)〜21(d)の例の実施を示すデータ構造に関して以下に説明するように、ゲールはグローバルデータベース内にトップレベルのトランザクションを有している。
【0132】
図21(b)では、ゲールはサブデータベースを作成し、論理的に言えば、ドキュメント2 、3 、4 をこのサブデータベースに引き入れた。これにより、これらのドキュメントは、各ドキュメントの右上の角において”R/O” で指定されているように、読出専用になる。
【0133】
図21(c)に、ゲールのためのスクリーンショット570 が示されており、又、ブライアンは自分のスクリーン580 に示されているように、ドキュメント2 582 及びドキュメント4 584 に対して作業できるようになっていることを示している。
【0134】
図21(c)において、ブライアンはゲールのサブデータベース内でトランザクションを開始し、書込みロックドキュメント2 及び4 を有している。これにより、ブライアンは、これらのドキュメントに対してフルエディットを行うことができるようになり、一方、ゲールは、暫くの間、ブライアンの管理下にあるドキュメント2 及び4 に対して書込みを行うことができない。しかし、必要であれば、ゲールがそれらを読み出し、ブライアンが行っている作業を観察することができる。
【0135】
図21(d)に、ゲールのスクリーン570 とブライアンのスクリーン580 を見ることができるが、更に、アンヌがスクリーン590 を有しており、このスクリーン590 には、読出専用ドキュメントであるドキュメント2 592 とドキュメント3 594 が示されている。図21(d)のシナリオでは、アンヌがゲールのサブデータベース内でトランザクションを開始した。彼女はドキュメント2 について読出しロックを、ドキュメント3 について書込みロックを有しており、アンヌはドキュメント3 だけを変更できる。
【0136】
なお、図21(d)において、ブライアンはドキュメント2 582 について書込みロックを有し、一方、アンヌはドキュメント2 について読出しロックを有している。従来のシステムでは、通常、ブライアンの書込みロックとアンヌの読出しロックは矛盾する。アンヌがブライアンの作業を見られるようにするために、パラメータ化ロック又はその他の機構を用いることができる。したがって、本発明の中核、即ちネスト化データベースをパラメータ化ロックと組み合わせて、システムの能力を更に高めることができる。
【0137】
図21(a)及び21(d)の例が存在するシナリオを実施するために、例示的データ構造を図22(a)〜22(d)及び23(a)〜23(d)にそれぞれ示す。これらの図面は、サブデータベース及びデータの共有がどのように起きるかを示している。図22(a)〜22(d)は、図21(a)〜21(d)の例を実施するために用いられるデータ構造の最初の例を示す。図22(a)では、ゲールはトランザクション制御ブロック(TCB)600を有している。又、ドキュメント1−4 のそれぞれのためにロック制御ブロック(LCB) が設けられ、これらは160−1 〜160−4 の番号が付けられている。ドキュメントのロッキングを実施するために、各LCB に関連してロックリクエストブロック(LRB)162−1〜162−4 が使用される。図22(a)の各LCB 160 はグローバルデータベース192 (実際にはグローバルデータベース制御ブロック)を参照し、これにより、ゲールは、グローバルデータベース内でトップレベルのトランザクションを有していることを表す。ゲールのトップレベルのトランザクションであるTCB 600 については、ドキュメント1−4 の各々についてフルエディットの能力がある。
【0138】
これらのドキュメントのためのLCB 及びデータ自体は、グローバルデータベースの一部であるか関連しているものと考えなければならない。
【0139】
図21(b)に対応する図22(b)においては、ゲールはサブデータベースを作成し、論理的に言えば、ドキュメント2 、3 、4 をサブデータベースに移動させる。サブデータベースは、ゲールが他の人を招き入れて共同作業するために作られる。ゲールはサブデータベースを作成しているので、追加のデータ構造が図22(b)に示されている。特に、ドキュメント2 、3 、4 はサブデータベースの一部であるので、第二レベルのLCB (SLCBとも呼ばれる) がドキュメント2 、3 、4 のために作られ、符号 164−2、164−4 、164−1 によってそれぞれ表されている。これらの SLCB がゲールのサブデータベース制御ブロック(DBCB)602 を参照しているのが分かる。ゲールはドキュメント1 を彼女のサブデータベースに移していないため、ドキュメント1 のための第二レベルのLCB 又はSLCBは存在しない。従って、この時点では、ドキュメント1 だけが、ゲールが編集できるドキュメントであり、他のドキュメントは閲覧だけが可能である。他のドキュメントが異なるサブデータベースに移動されたために、ゲールはドキュメント1 だけを編集できることをデータ構造が表すようにするため、ゲールのサブデータベースへ移動されたドキュメントのためのLRB のモードフィールドが、ロックについてのドキュメントに関連する能力を示すために変更される。図22(b)では、ゲールのサブデータベース内にアクティブなトランザクションは存在していない。更に、図22(b)では、ゲールのTCB のためのコンテキストデータベースはグローバルデータベース 192に残っており、ゲールのサブデータベースはゲールのトランザクションによって所有されていることを示すためにゲールのサブデータベース DBCB 602 はゲールのTCB 600 を参照する。
【0140】
図22(c)を参照すると、ブライアンは、ゲールのサブデータベース内でトランザクションを開始し、ブライアンのトランザクションは、図22(c)の右上部のブライアンのTCB 604 によって表されている。この特定の例では、ブライアンのトランザクションはドキュメント2 、3 、4 のみをアクセスできる。何故なら、ゲールのサブデータベースのドキュメント内、これらに対してのみブライアンのトランザクションがアクセス許可を有しているからである。しかしながら、本発明の或る実施形態では、別のユーザ、例えばブライアンがサブデータベース内でトランザクションを開始した後であっても、ゲールが、更なるドキュメントを追加することにより、彼女のデータベースを動的に成長させることが可能である。図22(c)では、ブライアンは、書込みロックをドキュメント2 及び4 に設定しており、これらのドキュメントについてのフルエディットの能力を有している。従って、ゲールは、ブライアンがドキュメントに対して何を行っているのかを見ることはできるが、彼女は、彼の行った変更に対して直接変更を加えることはできない。
【0141】
ドキュメント2 及び4 に対して書込みロックを持つことができるブライアンの能力は、ドキュメント2 のためのLRB 162−6 を参照しているドキュメント4 のためのLRB 162−5 へのブライアンのTCB 604 からの破線の矢印、即ちリファレンスによって表されている。又、図22(c)から分かることは、ブライアンのTCB 604 がゲールのサブデータベース(又はDBCB)602 を参照していることであり、これはブライアンのTCB のためのコンテキストデータベースがゲールのサブデータベースであることを示している。
【0142】
図21(d)に示した配置とアクセス能力に対応する図22(d)を参照すると、アンヌはゲールのサブデータベース内で既にトランザクションを開始している。ブライアンのトランザクションと同様、ゲールがより多くのドキュメントを加えることによって彼女のサブデータベースを動的に成長させることを選択していない限り、アンヌのトランザクションは、ドキュメント2 、3 、4 のみをアクセスできる。この時点では、アンヌはドキュメント3 に対して書込みロックを有し、ドキュメント2 に対して読出しロックを有している。この情報は LRB 162−7及びLRB 162−8 によって表される。ドキュメント2 のためのSLCBであるLRB 162−7 は読出しロックを示し、ドキュメント3 のためのLRB 162−8 は書込みロックを示すようにそのモードが設定される。この時点では、アンヌはドキュメント3 のみを編集できるが、彼女はブライアンがドキュメント2 に対して行っている変更を全て見ることができる。必要であれば、アンヌはドキュメント4 も見ることができ、同様に、必要であれば、ブライアンはドキュメント3 を見ることができる。LRB 162−7 及び162−8 の参照に加え、アンヌのTCB 606 は、コンテキストデータベースリファレンスにより、ゲールのサブデータベース602 も参照する。
【0143】
図23(a)〜23(d)は、図11に示したデータ構造を使用して図21(a)〜21(d)の例を実行するようにした代替の実施形態を示す。図21(a)に対応する図23(a)では、問題となっている4つのドキュメントのためのLCB 160−1 〜160−4 があり、各 LCBは対応するLRB 162 を参照している。ゲールのTCB 650 は LRB 162を参照しており、又、ゲールのTCB 650 は、そのコンテキストデータベースがグローバルデータベース192 であることを示している。
【0144】
図21(b)に対応する図23(b)では、ゲールはサブデータベースを作成し、これにより、ゲールのサブデータベースのためのデータベース制御ブロック652 が作成される。ゲールのサブデータベース DBCB 652 はゲールのTCB 650 を参照して、ゲールのサブデータベースがゲールのトランザクションによって所有されていることを示し、又、ゲールのサブデータベース652 はハッシュテーブル、アレー又はその他の構造 654を参照する。この構造654 は、ゲールのサブデータベースの一部である、3つのドキュメントのためのSLCB 164−1、164−2 、164−3 を有している。SLCB 164は、テーブル654 のリファレンス656 、658 、660 によって参照される。
【0145】
図21(c)に対応する図23(c)では、ブライアンのトランザクションが存在するようになり、これがブライアンのTCB 670 として表されている。ブライアンのTCB 670 はゲールのサブデータベース制御ブロック652 を参照し、ブライアンのTCB 670 即ちトランザクションのコンテキストデータベースはゲールのサブデータベース652 であることを示す。ブライアンは、ドキュメント2 及び4 についてのロックを得るが、これらはLRB 160−5及び160−6によって表されている。
【0146】
図21(d)の配置に対応する図23(d)では、アンヌのトランザクションが存在するようになり、ゲールのサブデータベースをそのコンテキストデータベースとして有している。これは、アンヌのTCB 680 のコンテキスト DB リファレンスのゲールのDBCB 652への参照によって示されている。
【0147】
更に、アンヌはドキュメント2 及び3 に対して所定の権利を有しており、これは、ドキュメント2 及び3 のためのLRB 160−7 及び160−8 を参照するアンヌのTCB 680 によってデータ構造内で表される。LRB 160−7 及び160−8 は、アンヌが有しているアクセス能力が読出し専用であるのか書込みもできるのかを示すためにそれらのフィールドをセットする。
【0148】
図21(a)〜23(d)に関して記載した上記の例は、異なるドキュメントのロックと共有に関するものであった。しかし、本発明は、ファイル又はドキュメントレベルでの共有に限定されるものでなく、複数のユーザ等の間で単一のファイル、ドキュメント、設計図等を共有するために利用できるものである。単一のファイルやドキュメントや他のデータ・アイテムを、本明細書で開示したネスト化データベースのフレームワーク内で共有するようにした実施形態を達成することは、ロッキングの細分性(locking granularity)に関連している。即ち、ロッキングデータ構造又はLCB がどの資源を表しているかに関係する。従って、本発明は、例えば、パラブラフレベル、センテンスレベル等、ファイル又はドキュメントのより小さい部分のロッキングを可能にし、更に、個々の単語、文字、又はビット毎にロッキングを行うことを可能にする。
【0149】
更に、ドキュメントプロセシング又はワードプロセシング環境以外では、設計図の異なる部分を CAD/CAM システム又は他のシテスム上で共有できる。
【0150】
図24(a)〜24(d)により提示する例(及び、必要であれば前出の例)では、ブライアンのトランザクションとアンヌのトランザクションは実際にはゲールのトランザクションのサブトランザクションである。従って、ゲール、ブライアン、及びアンヌのトランザクションの各々は、ゲールのトップレベルのトランザクションと同一の細分性でロッキングを行うものととりあえず推定される。しかしながら、別の方法として、ゲールにセクションレベルでロックさせ、またこれと同時に、ドキュメント又はパラブラフレベルでロックする他のトップレベルのトランザクションを持つことも可能である。
【0151】
多細分性ロッキングの概念は知られているが、本発明では、多細分性ロッキングとネスト化データベースの概念の両方を一緒に用いてもよく、一般にこれらの概念は相互に直交している(例えば、互いに独立している)ものと考えられている。多細分性ロッキングに関しての更なる情報は、以下で参照されている Anfindsenの論文から得ることができるであろう。
【0152】
図24(a)〜24(d)の実施例に戻って、図24(a)にゲールのテキストエディタの例示的なスクリーンイメージ710を示す。問題になっているテキストのドキュメントはセクション1、セクション2、セクション3、セクション4で示される4セクションを有する。図24(a)において、ゲールは図示されたドキュメントの全てのセクションをロックしており、全ドキュメントの完全エディット能力を有する。各セクションにおいて、サンプルテキストが図示されているが、任意の所望のテキストを使用してもよい。
【0153】
図24(b)のスクリーンイメージ720もまたゲールのテキストエディタを示しているが、しかしこのイメージでは、ゲールはセクション2、3、4をサブデータベースに委託(delegated)してしまっており、セクション2、3、4を通じて斜線で示されているこれらのセクションは今はゲールのエディタ内でリードオンリーになっている。
【0154】
図24(c)のスクリーンイメージ730は、ブライアンのテキストエディタを示す。図24(c)に関しては、ブライアンはゲールのサブデータベース(そこで作業することがブライアンはゲールによってオーソライズされている)を介してゲールのドキュメントにアクセスした。ブライアンは、セクション2及び4上に書込みロックを問題なくリクエストし、その結果セクション2及び4はブライアンのエディタ内でエディット可能であるが、セクション1及び3はリードオンリーである。なお、ドキュメントのリードオンリーセクションを通じての斜線は、説明の目的だけのためであり、斜線がテキストにかけられているいる必要はない。しかしながら、好ましい一実施形態では、或るセクションはロックされており他のセクションはロックされていないことを示すことが望ましいかもしれない。これは、異なるタイプやロックのモードやアクセス能力に対してテキストの異なる色やテキストのバックグランドを利用することによって達成されるであろう。例えば、一つの色を各個人に割り当てることができ、各セクション又はドキュメントの他の部分は、データ上に書込みロックを有する個人又はグル−プ(entity)に従って色がつけられるであろう。或いは、単一の色がリードオンリーであるドキュメントのセクションを示すために利用されてもよい。
【0155】
最後に、図24(d)にアンヌのテキストエディタを示すスクリーンイメージ740を図示する。
【0156】
アンヌはゲールのサブデータベース(そこで作業することがアンヌはゲールによってオーソライズされている)を介してゲールのドキュメントにアクセスした。アンヌは、セクション3上に書込みロックを問題なくリクエストでき、その結果セクション3はアンヌのエディタ内でエディット可能であるが、セクション1、2、4はリードオンリーである。
【0157】
本発明は、明細書の教示に従ってプログラムされた一以上の従来の汎用ディジタルコンピュータを使用して差し支えなく実施され得ることは、コンピュータ技術の当業者であれば明白であろう。当業者にとっては明白であるように、適切なソフトウエアコーディングが、本開示の教示に基づいて、熟練プログラマーによって容易に用意できる。当業者にはすぐ明白となるように、本発明はまた、特定の集積回路のアプリケーションを用意すること又は従来のコンポーネント回路の適切なネットワークを接続することによって実施されてもよい。更に、本発明は、複数のコンピュータ、計算デバイス、他のタイプのデバイスを使用して実施されてもよい。これらのデバイスは、データ、命令、データのリクエスト、及びデータベースマネジメントシステムの運用に関係する他の任意の情報を伝達するために、如何なるタイプのネットワークを介して接続されてもよい。係るコンピュータネットワークは、必要に応じて、有線ネットワーク、電波、赤外線、又は超音波タイプネットワーク等の無線ネットワークを使用して実施されてもよい。汎用コンピュータの使用の代わりにあるいは追加として、本発明は、パーム・パイロット(Palm Pilot)、インターネットサーバ、特別目的コンピュータ、及び電話ブラウザを含む任意のタイプのインターネットブラウザ等のパーソナルディジタルアシスタントを含む任意のタイプのデバイスを使用して実施されることを含む。
【0158】
本発明は、本発明のプロセスを遂行するようにコンピュータをプログラムするために使用され得る命令を含む記憶媒体であるコンピュータプログラム製品を含む。記憶媒体は、フレキシブルディスク、光ディスク、CD−ROM、光磁気ディスク、ROM、RAM、EPROM、EEPROM、フラッシュメモリ、磁気カードや光カードを含む任意のタイプのディスク、又はハードディスクドライブを含む電子命令を記憶するのに適している任意のタイプの媒体を含むことが出来るが、本発明の記憶媒体はこれに限られるものではない。また、本発明は、本明細書に記載されており、且つこのアプリケーションで論じられる何れかのメモリ又は保存媒体に記憶されてもよいデータ構造を含む。
【0159】
本発明は特定の好ましい実施形態を参照して記載されてきたが、当業者にとっては、本発明の範囲及び精神を逸脱することなしに、種々の変更が可能で同等物が要素の代用になれるということは明白である。例えば、本発明は、一メモリに記憶されたデータ構造を記載しているが、それはそのデータ構造を複数のメモリに記憶するのと同等であろう。更に、本発明は必要に応じて、データ構造を結合することもその範囲に含むものである。
【0160】
本発明は、発明者によって種々の出版物に従前記載されてきた技術及び理論の上に立ってなされた。これらの出版物としては、「Apotram−アプリケーション指向のトランザクションモデル」、理学博士論文、Ole Jorgen Anfindsen、1997年;「ネストされたデータベースによるマルチメディア会議での支持的共同作業」、Ole Jorgen Anfindsen、ノルウェーコンピュータ科学会議議事録−NIK’96、1996、311−322頁;及び「ネストされたデータベースによる工学環境での共同作業サポート」、Ole Jorgen Anfindsen、CEEDAの議事録、1996、Poole、UK、325−330頁、が挙げられ、これらを本明細書の一部を構成するものとしてここに援用する。これらの出版物に引用されている参考文献の各々も同様に本明細書の一部を構成するものとしてここに援用する。これらの出版物中のアプリケーション及び説明の各々は、本発明によって実施されるか、又は本発明と一緒に利用されてもよい。更に、米国特許第5,983,225号及び第6,044,370号を含む本発明者による米国特許を本明細書の一部を構成するものとしてここに援用し、本発明と一緒に使用しても、又は本発明と別個に使用してもよい。
【図面の簡単な説明】
【図1】
図1は、本発明を実施するデータベースマネジメントシステムのブロックダイアグラムである。
【図2】
図2は、サブデータベースに分割される資源について追跡履歴を保持(keeping track)するためのデータ構造を示す。
【図3】
図3は、複数のリンクされたロック制御ブロック及びロックリクエストブロックを示す。
【図4】
図4は、サブデータベース内のデータ・アイテムに関するロックを設けるために用いるサブデータベースロック制御ブロック(SLCB)を含むデータ構造を示す。
【図5】
図5は、各トランザクションが特定のデータベース又はサブデータベースに属することを示す。
【図6】
図6は、この特定の実施態様において、トランザクションがそれ自身のデータベース又はサブデータベース中の資源にのみアクセス可能であることを示す。
【図7】
図7は、データベース制御ブロック(DBCB)データ構造の例示的構成を示す。
【図8】
図8は、トランザクション制御ブロック(TCB)データ構造の例示的構成を示す。
【図9】
図9は、階層中に実現させたサブデータベースの例を示す
【図10】
図10は、アクティブトランザクションフィールドをデータベース制御ブロックに用い、コンテキストデータベースとサブデータベースフィールドとをトランザクション制御ブロックに用いた例を示す。
【図11】
図11は、サブデータベース毎に一サーチテーブルが存在し、且つサーチテーブルがサブデータベースロック制御ブロックへのリファレンスを含む、別の態様を示す。
【図12】
図12は、サブデータベースロック制御ブロックがアレイやテーブル内に含まれている、例示的構成を示す。
【図13】
図13は、データベース制御ブロックとトランザクション制御ブロックとを単一の階層的データ構造アレンジメントとして実現可能であることを示す。
【図14】
図14は、ロック制御ブロックデータ構造の別の構成を示す。
【図15】
図15は、新しいサブデータベースを作出するためのフローチャートである。
【図16】
図16は、ユーザ・データの物理的動きを必要とせずに如何にサブデータベースの要素を構成する(populate)するかを示すフローチャートである。
【図17】
図17は、図11のデータ構造を用いてサブデータベースの要素を構成する(populate)するための別の実施形態を示すフローチャートである。
【図18】
図18は、ネスト化データベースの存在下でのロックリクエストの取り扱いを示すフローチャートである。
【図19】
図19は、ロック制御ブロックが図11の別の構造を有する時の、ネスト化データベースの存在下でのロックリクエストの取り扱いを示すフローチャートの別の態様である。
【図20】
図20は、サブデータベースの使用を終わるために用いるプロセスのフローチャートである。
【図21(a)】
図21(a)〜21(d)は、複数のユーザが単一のデータベースの使用を所望し、サブデータベースにオーガナイズされる4種のワードプロセッシング・ドキュメントをこのデータベースが有している場合の例を示す。
【図21(b)】
図21(a)〜21(d)は、複数のユーザが単一のデータベースの使用を所望し、サブデータベースにオーガナイズされる4種のワードプロセッシング・ドキュメントをこのデータベースが有している場合の例を示す。
【図21(c)】
図21(a)〜21(d)は、複数のユーザが単一のデータベースの使用を所望し、サブデータベースにオーガナイズされる4種のワードプロセッシング・ドキュメントをこのデータベースが有している場合の例を示す。
【図21(d)】
図21(a)〜21(d)は、複数のユーザが単一のデータベースの使用を所望し、サブデータベースにオーガナイズされる4種のワードプロセッシング・ドキュメントをこのデータベースが有している場合の例を示す。
【図22(a)】
図22(a)〜22(d)は、それぞれ図21(a)〜21(d)に対応して、図21(a)〜21(d)の例が実施される際のデータ構造アレンジメントを示す。
【図22(b)】
図22(a)〜22(d)は、それぞれ図21(a)〜21(d)に対応して、図21(a)〜21(d)の例が実施される際のデータ構造アレンジメントを示す。
【図22(c)】
図22(a)〜22(d)は、それぞれ図21(a)〜21(d)に対応して、図21(a)〜21(d)の例が実施される際のデータ構造アレンジメントを示す。
【図22(d)】
図22(a)〜22(d)は、それぞれ図21(a)〜21(d)に対応して、図21(a)〜21(d)の例が実施される際のデータ構造アレンジメントを示す。
【図23(a)】
図23(a)〜23(d)は、それぞれ図21(a)〜21(d)の例に対応するが、各データベースに対してサーチテーブルあるいはアレイが存在するデータ構造アレンジメントを使用する場合を示す。
【図23(b)】
図23(a)〜23(d)は、それぞれ図21(a)〜21(d)の例に対応するが、各データベースに対してサーチテーブルあるいはアレイが存在するデータ構造アレンジメントを使用する場合を示す。
【図23(c)】
図23(a)〜23(d)は、それぞれ図21(a)〜21(d)の例に対応するが、各データベースに対してサーチテーブルあるいはアレイが存在するデータ構造アレンジメントを使用する場合を示す。
【図23(d)】
図23(a)〜23(d)は、それぞれ図21(a)〜21(d)の例に対応するが、各データベースに対してサーチテーブルあるいはアレイが存在するデータ構造アレンジメントを使用する場合を示す。
【図24(a)】
図24(a)〜24(d)は、一ドキュメントの複数セクションが、異なる読出し・書込み能力を有する複数の人々によって、ネスト化データベースを使用することによって共有される場合の例を示す。
【図24(b)】
図24(a)〜24(d)は、一ドキュメントの複数セクションが、異なる読出し・書込み能力を有する複数の人々によって、ネスト化データベースを使用することによって共有される場合の例を示す。
【図24(c)】
図24(a)〜24(d)は、一ドキュメントの複数セクションが、異なる読出し・書込み能力を有する複数の人々によって、ネスト化データベースを使用することによって共有される場合の例を示す。
【図24(d)】
図24(a)〜24(d)は、一ドキュメントの複数セクションが、異なる読出し・書込み能力を有する複数の人々によって、ネスト化データベースを使用することによって共有される場合の例を示す。
【符号の説明】
100 データベースマネジメントシステム(DBMS)
102 トランザクションマネージャ
104 ロックマネージャ
106 データプロセッサ(CPU)
108 トランザクションテーブル
110 ロックテーブル
112 データベース
【発明の属する技術分野】
本発明は一般にデータベースマネジメントシステムに関し、より詳細には、データベース資源を不適切な使用から守るためにロックマネジャを用いたデータマネジメントシステムやトランザクション処理システムに関する。
【0001】
本発明は更に、メモリにストアされたコンピュータデータ構造に基づいて、ネスト化データベースの使用を許容するデータベースマネジメントシステムの実行方法にも関する。加えて本発明は、共有データへの同時アクセスを提供する如何なるシステムにも関するものであって、またそのようなシステムに適用できる。
【0002】
【従来の技術、及び発明が解決しようとする課題】
二人の人や二グループの団体が同時に或るデータベースやその他のロケーションに存在する情報にアクセスしたい時、あるいは同時か殆ど同時に同一の情報に関するデータベースにデータを書き込みたい時に存在する問題として、コンフリクト等の問題は避けることができない。このような問題は、データが共有されるタイプのアプリケーションでは如何なるアプリケーションでも起こりうるものであって、ワード・プロセッシングとエンジニアリング設計は、そのような同時アクセスが起こる2つの領域である。但し、本発明はこれら二領域に加え、二以上のグループが同一のデータを使用したいと希望する如何なる状況に対しても適用可能である。
【0003】
データベースマネジメントシステムにおいては、ACID (”Atomicity, Consistency, Isolation, Durability”)と称される特性が望まれる。
【0004】
Atomicity(アトミック性)とは、トランザクション(即ちデータベースへの変更)の結果が全て正しくデータベースに反映されているか、あるいはトランザクションの結果のいずれも全く反映されていないことを意味する。一般に、トランザクションについては「コミット(確認)」あるいは「アボート(中止)」という表現が用いられる。トランザクションが確認されると、このトランザクションによってデータベースになされた全ての変更が恒久的に保存され、データベースは定常状態に置かれる。
【0005】
トランザクションが中止されると、このトランザクションによってデータベースになされた如何なる変更も撤回され、この場合もやはりデータベースは定常状態(consistent state)に置かれる。
【0006】
Consistency(一貫性)とは、各トランザクションがデータベースに対し矛盾のない結果のみを確認することを意味する。
【0007】
よって或るトランザクションによって、データベースは或る一定常状態から他の或る一定常状態にされなければならない。
【0008】
Isolation(隔離性)とは、トランザクション内の事象が同時的に進行している他のトランザクションから隠されていなければならないことを意味する。同時的トランザクションは互いに干渉してはならない。それらトランザクションはあたかも専用のデータベースを有するがごとくに実行されなければならない。
【0009】
Durability(継続性)とは、一旦トランザクションが完了し、その結果がデータベースに対し確認されてしまうと、その後如何なる動作不良があってもこれらの結果が生き残り続けることをシステムが保障しなければならないことを意味する。
【0010】
上記のACID 特性は非常に望ましいものであるが、同一のデータに書込む者が複数存在すると、通常、ACID 特性との妥協が必要となる。トランザクションの諸特性を確実にし且つ同時に各人又は各トランザクションがしようとしていることを何であれ許容することは非常に困難である。
【0011】
或るデータが使用されている時に、他者に対し単純に該データへのアクセスを許容すると、ACID 特性との不可避なコンフリクトが顕在化する。
【0012】
【課題を解決するための手段】
従って、本発明の一目的は、同一のデータに複数の団体がアクセスできるようにすることである。本発明の更なる目的は、複数のユーザが存在する環境で、可能な限りACID 特性が維持されるよう、データをロックすることである。本発明の更なる目的は、複数のユーザや団体が、種々の異なるデータベース(以下、これら異なる各種データベースを、単にデータベースと称するかあるいはバーチャルデータベース、サブデータベースと称する)を経由してデータにアクセスできるようにするデータベースマネジメントシステムを提供することである。本発明の更なる目的は、サブデータベースやバーチャルデータベースの実行を許容するデータベースマネジメントシステム及び/又はそのデータ構造を提供することである。
【0013】
これら及びその他の目的は、複数のユーザが存在する環境で、データの同時実行制御とロックを許容する、データ構造を有するメモリ、方法、システム、及びコンピュータプログラム製品によって達成される。現在存在するトランザクションについて、そのトランザクションに関連するデータベース又はサブデータベースへの関連付けや参照(リファレンス)を有する。トランザクションに関係するこのデータ構造を以下、トランザクション制御ブロックと称する。
【0014】
データ構造(本明細書ではこれをデータベース制御ブロックと称する)は、どのデータベースあるいはサブデータベースがデータ・アイテムに関係しているかを示す。更に、そのデータについての実際のロックに関係するデータ構造が存在し、これをロック制御ブロック(及び/又はロックリクエストブロック)と称する。
【0015】
種々のデータ構造間の関連付けにより、ネストされたデータベース、サブデータベース、バーチャルデータベースという概念を実現させることができる。例えば、データ構造アレンジメントは、好ましくは特定のトランザクションのコンテキストデータベースに関する判断(determination)が存在することを許容すると共にそのトランザクションの下のサブデータベースを許容する。更に、トランザクションに関係するデータ構造は、そのデータのロックに関するデータ構造によって表される、許可されたあるいは許可待ちのロックリクエストへの参照を含む。バーチャルデータベースに関係するデータ構造、即ちデータベース制御ブロックは、ロッキングデータ構造として参照され、ロックが関係するのはいずれのデータベースあるいはサブデータベースであるのかを決定できるようになっている。
【0016】
本発明の一実施形態では、データ処理システムによってアクセスされるデータをストアするためのメモリが存在する。このデータは必ずしもエンドユーザが究極的に欲しているデータ・アイテムである必要はなく、ロッキングとサブデータベース情報を示すデータ構造に関係するデータであることができる。メモリは、トランザクションの情報を含むデータ構造を有する。好ましくは、このデータ構造はトランザクション制御ブロックとして実現される。メモリは更にトランザクションのデータのロックの情報を含むデータ構造を有する。このデータ構造を、以下、ロック制御ブロック及び/又はロックリクエストブロックと称する場合がある。更に、複数データベースの情報を含む複数のデータ構造が存在する。種々のデータベースに関係するこれらのデータ構造を、データベース制御ブロックと称する場合がある。このデータベース制御ブロックを用いて特定のデータベースやサブデータベースをロック及びトランザクションに関連付け、あるいはその逆に関連付け、ネスト化データベースあるいはサブデータベースを適切に制御する。
【0017】
本発明はまた、ネスト化データベースあるいはサブデータベースの概念を実現化する、データ構造の作成(creation)と使用に関する。あるデータ・アイテムがロックされていることを示す一方法は、第一の階層レベルと関連する第一のトランザクションによってそのデータ・アイテムがロックされていることを示すデータ構造をこの第一の階層レベルに作成する種々の段階を含む。
【0018】
更に、本発明方法は、データ・アイテムが第二の階層レベルと関連する第二のトランザクションによってロックされていることを示すデータ構造を第二の階層レベルに作成する段階を含む。かくして、これら段階は、制御されたデータ構造(ロック制御ブロック等)の階層を作成する。階層における各レベルは異なるデータベース、サブデータベース、又はバーチャルデータベースによって使用されることができる。
【0019】
或るデータ・アイテムへのアクセスを達成するためには、最初に判断しなければならないことがある。それはそのデータ・アイテムに関してロックが存在するかどうかという点である。これについては次の各ステップを追うことによって決定できる:(a) 第一の階層レベルにそのデータ・アイテムに対するロックが存在するかどうかを判断するステップ、及び (b) ステップ(a)でそのデータ・アイテムに対するロックが存在しないと判断された場合、第一の階層レベルにおいてそのデータ・アイテムに対するロックを作成するステップ。
【0020】
ステップ(c)は、ステップ(a)でそのデータ・アイテムに対するロックが存在しないと判断された場合、第二のレベルに該データ・アイテムに対するロックが存在するかどうかを判断するステップである。更に、ステップ(d)は、そのデータ・アイテムに関するロックが第二の階層レベルに存在しないと判断された場合、該データ・アイテムに関するロックを作成するステップである。
【0021】
上記の機能を実行する方法の各ステップに加え、本発明は、上記機能を行使するための各種手段を有するシステムを包含する。更に、本発明は、本方法を実施するための実行可能な指令を含むコンピュータプログラム製品も包含する。
【0022】
【発明の実施の形態】
本発明とその利点については、添付の図面を参照することによってより完全な理解に到達できるであろう。
以下、図を参照して本発明を説明する。各図面を通して、同一の参照番号は同一又は対応する部分を示す。図1はデータベースマネジメントシステム(DBMS)100を示す。トランザクションオペレーション及びマネージメント(管理)はトランザクションマネージャ102及びロックマネージャ104で処理されるが、これらは両者ともシステムのデータプロセッサ即ちCPU106によって実行されるソフトウエア手続である。トランザクションマネージャは、許可待ち中のトランザクションのアイデンティティとステータスの追跡履歴(track)を残すためにトランザクションテーブル108(これはツリー構造として実施されることもある)を維持する。ロックマネージャ104はロックテーブル110を維持するが、これは通常ハッシュテーブル及び種々のリンクしたリスト及び/又はツリー構造(以下により詳細に記述する)を使用して実施される。ロックテーブル110はデータベース112中の資源に関してリクエストされたロックの追跡履歴を保持する。ロックテーブル110は、トランザクションのメモリアドレス、トランザクションID、ロックのタイプやモード、ロックのパラメータ、ロックと関連したデータベースやサブデータベースに関係する情報を蓄えてもよい。データベース112は、DBMS100によって実行されるトランザクションにアクセス可能なデータを保存する。データベース112は永続的なデータを保存する必要はない(但し通常の場合は永続的なデータ保存である)。別の方法では、保存されたデータは暫定的であってもよい。従って、データベースの内容について共同的に作業しているトランザクションは、ほんの数分、数時間、又は数日だけ存在するデータ資源を処理出来、システムが取り出されるかシャットダウンされた場合には存在しなくなるであろう。
【0023】
またDBMS100は、通常、付加的メモリ資源114、システムの種々の部分を相互接続するための一以上のシステムバス116、及びネットワークインターフェース118やクライアントワークステーション120との通信を取扱うための他の通信インターフェースを含む。メモリ114は、ランダムアクセスメモリを含むがそれに限定されない如何なるタイプのメモリを使用して提供されてもよく、好ましくは、読出し可能で且つ書込み可能なメモリである。更に、メモリ114は本発明のデータ構造を保存するために利用してもよい。図1は本発明の一つの可能な実施例を示すが、本発明の機能を達成するために、任意の所望のハードウエア及びソフトウエアを利用できる。例えば、本発明は、任意のタイプのコンピュータ、コンピュータサーバ、及び/又はパーソナルコンピュータ及び/又は任意の所望のオペレーティングシステムが動作するハードウエアを使用して実施できる。係るハードウエアの構成要素、構造、及び作用は周知である。
【0024】
図2を参照すると、好ましい実施形態における「ロックテーブル」110が次のように提供される。ハッシュ関数150を用いて、資源識別子(RID)を、固定したサイズを有するように提供されるハッシュテーブル152内のハッシュテーブルアドレスに変換する。関数150によってハッシュされる資源識別子は、資源のタイプやレベルの標識(例えば、ロックされるべき資源は、データベース、テーブル、ページ、組(tuple)、その他の何れであるかを示す)及び資源の開始アドレスを含んでもよい。ハッシュテーブルのスロット154−1等の各アドレス可能なスロット154は、そのスロットのハッシュテーブルアドレスに対応するロックされた資源がない場合のヌル値か、ハッシュ値がそのスロットのハッシュテーブルアドレスに対応する一以上のロックされた資源が有る場合には、LCB160−1等のロック制御ブロック(LCB)のリストへのポインタの何れかを含む。
【0025】
ロックマネージャは、実際にロックされる各ロック可能なデータ・アイテムに対して一ロック制御ブロック(LCB)160を割り当て(即ち生成し記憶される)、トランザクションが有する各ロックに対してLRB162−1等の一ロックリクエストブロック(LRB)162を割り当てる(即ち生成し記憶される)であろう。従って、もし特定のデータベースの一オブジェクトが三つの異なるトランザクションによって所定の時点でロックされる場合には、そのオブジェクトに対してLCB160が一個と、そのLCBから“ぶら下がっている(hanging)”リンクした3個のLRB(トランザクション当たり一)のリストとが存在するであろう。
【0026】
各LCB160は好ましくは次のものを含む:
ロックされた資源に対する資源識別子のコピーを通常含むロックID 170と、
このLCBによって表わされるデータベース資源に関して認められた(granted)全てのロックの最も制限的なアクセスモード(例えば、ブラウズ、読出し、パラメータ化された読出し、書込み、パラメータ化された書込み、又は排他(exclusive))を示すモード標識171と、
ロックされた資源の未処理の(outstanding)パラメータ化された読出しロック(もし有れば)によって使用される読出しパラメータの論理ORを表わす、好ましくはビットマップの形態にある、任意的読出しパラメータ標識172と、
ロックされた資源の未処理のパラメータ化された書込みロック(もし有れば)の書込みパラメータ、好ましくはビットマップの形態にある、オプショナル書込みパラメータ標識173(なお、読出し及び書込みパラメータ標識172及び173の詳細によって本発明の様相が更に構成されるものであるがこれについては、Anfindsenに付与された米国特許第5,983,225号に詳細に記載されており、それを本明細書の一部を構成するものとしてここに援用する)と、
このLCBによって表わされるデータベース資源のための認められた資源リクエストに対するLRB 162のリストへの認められたリクエストリストポインタ174と、
このLCBによって表わされる許可待ち(即ち、未だ認められていない)資源リクエストに対するLRB 162のリスト(キュー(queue)とも呼ばれる)への許可待ちリクエストポインタ 175と、
このLCBが属するデータベース又はサブデータベースへの参照であるデータベースフィールド177とを含む。本発明の特徴は、データは、本明細書ではサブデータベース、バーチャルデータベース、データベースとして参照される異なるデータベースに分割されてもよいということである。係る分割を行うことにより、同一のデータを使用する人やトランザクションが複数あることが可能である。係るシステムにおいて、本発明者は、或るロックがどのデータベースに属するかを知ることが望ましく、また係る情報はデータベースフィールド177を使用して容易に決定され得ることを見出した。本発明の特徴はデータベースリファレンス177等のリファレンスを使用して実現されるが、LCB内のデータベース名を含むような他の実施形態も可能である。図2では、データベースリファレンス177はグローバルデータベース192を参照している。
【0027】
このグローバルデータベース192は最高レベルのデータベースであり、更なるサブデータベースは、DB1、DB2、・・・DBnとして言及される。サブデータベース使用の更なる詳細を以下に説明する。即ち、
ネクストレベルLCBリファレンス178は、サブデータベースロック制御ブロック(SLCB)164−1等のサブデータベース(異なる階層レベルでのバーチャル又はサブデータベース)ロック制御ブロックを示し(このリファレンスは、ヌルか、又は異なる階層レベルでのサブデータベースロック制御ブロックの何れかを参照する。このフィールドに関する更なる情報を以下に述べる)、そして
このLCBと同一のハッシュアドレスを共有する次のLCB(もし有れば)への次のLCBポインタ176。
【0028】
LCB 160内のフィールド172及び173によって表わされる読出しパラメータと書込みパラメータは、本発明にとって必須ではないが、本発明におけるサブデータベースの発明と合わせて又は切り離して使用されてもよい特徴を表わす。更に、パラメータ172及び173は、DBMSによって使用される従来のアクセスモードへの本発明による拡張を表わす。読出し/書込みパラメータドメインの定義されたセットの各異なる値が、対応するデータの信頼性の分類又はカテゴリーを表わす。従って、8個のパラメータ値(各々8−ビットパラメータフイールドの対応するビットによって表わされる)を有するパラメータドメインは、8個迄の異なるデータ信頼性分類を定義することが可能であろう。本発明の別の実施形態においては、パラメータを、“信頼性”以外のデータベースオブジェクトのプロパティ(例えばオブジェクト上に書込みロック状態を作るアプリケーションのタイプやそのID、又は書込みロックされていてもデータを読もうとするか否かを判断するためにアプリケーションによって使用され得る他の情報等)を示すために使用してもよい。
【0029】
許可された(granted)又は許可待ちの一ロックリクエストを表わす各LRB 162は、好ましくは、次のものを含む:
特定のトランザクションによって資源がアクセスされるかリクエストされるアクセスモード(例えば、ブラウズ、読出し、パラメータ化された読出し、書込み、パラメータ化された書込み、又は排他(exclusive))を示すモード標識181と、
このLRBに対応するロックをリクエストしたかあるいは保持するトランザクションを同定するトランザクション識別子184と、
この読出し又は書込みロックの所有者によって使用される読出し又は書込みアクセスモードパラメータ(もし有れば)を表わす、好ましくはビットマップ形態にある、任意的パラメータ標識182(このフィールドは、このロック又はロックリクエストされる所有者がパラメータ化されたアクセスリクエストを使用している場合にのみ使用される。ロック制御ブロックのパラメータ172及び173のように、パラメータフィールド182は、本発明に係るネスト化データベースやサブデータベースを実施するために必須ではなくまた、必要でもない)と、
トランザクションID 184によって同定されるトランザクションT1等のトランザクションによって所有されるLRBのリンクしたリストを形成するために使用されるロックセットポインタ185(なお、LRBのリンクしたリストは、二重にリンクしたリスト等の更なる特徴を含むように実施されてもよく、それによりLRBのチェーンを二方向にトレースすることが可能になる。LRBの更なる別態様が以下に記載される)と、
このLRBと同一のデータベース資源に対するネクストLRB(もし有れば)へのネクストLRBポインタ186。
【0030】
LCBの読出し及び書込みパラメータフィールドとLRBのアクセスモードパラメータフィールドに対する典型的なサイズは1〜2バイトで、8〜16個の別個のパラメータ値をサポートする。
【0031】
サブデータベースLCB(SLCB)164−1は、LCB 160−1 と同一又は類似の構成を有している。従って、サブデータベースLCB164は、サブデータベースのデータに対するアクセスのロックを制御するために LCBが使用されることを明確に示すためにSLCBと呼ぶ。図2において、SLCB 164−1からサブデータベースDB1 へのリファレンス又はポインタはデータベースリファレンス177 であり、 SLCB 164−1 はサブデータベースDB1 に接続されていることを示している。同様に、LCB 160−1 のデータベースリファレンス177 はグローバルデータベース192 を参照する。しかしながら、DBMSは、全ての LCB、或いは少なくとも第一レベルのLCB がグローバルデータベース192 を参照するようにセットアップできるため、 LCBからデータベースリファレンスフィールド177 を削除することが可能てあり、好ましい。
【0032】
本明細書全体を通して、図面は、一つのフィールドから図中の他のアイテムを指定するポインタとして現れるもを示す。これらのポインタは、従来のコンピュータのポインタに限定されず、任意のタイプのリファレンス又はツリー構造として実施できる。更に、参照する情報をデータ構造自体に含めてもよい。したがって、フィールド177 がグローバルデータベース192 を参照する代わりに、グローバルデータベース192 に関連する情報をフィールド177 に入れてもよい。以下に詳細に説明するが、グローバルデータベース192 及びサブデータベースDB1 、DB2 、... 、DBn を含む種々のデータベースはデータベース制御ブロック(DBCB)であり、好適な実施形態では、エンドユーザが最終的に必要とするデータを含んでいない。むしろ、データベース制御ブロックは、データベース又はサブデータベースの何れにロック又はロック制御ブロック(即ち、LCB )が関係しているのかを示すのに使用される。
【0033】
SLCB 164−1は、LRB 162−1と同一の構造を有するLRB 162−2 を参照する。図2は、二つのトランザクション制御ブロックT1、T2も示す。トランザクションT1はグローバルデータベースと関連付けられ、トランザクションT2はサブデータベースDB1 と関連付けられている。更に、トランザクションT1は、 LRB 162−1を参照することにより許可ブロックリクエストを得る。同様に、トランザクションT2はLRB 162−2 を参照する。これは、トランザクションT2がサブデータベースDB1 に関連するデータにロークを有していることを示す。
【0034】
本発明においては、ロックマネージャの主要部分はロック制御ブロック(LCB) である。従来のデータベースマネジメントシステムのように、LCB は、ロック可能な資源、例えば、リレーショナルやテーブルやレコードにおけるオブジェクト、ロー(組)を特定する。
【0035】
そのような資源は通常オブジェクト ID(”OID”)、組ID(”TID”) 、ROW/RECORD ID(”RID”)によって特定される。説明を簡単にするために、これらのID全体を示す用語としてRID と言う語を使用する。
【0036】
図2ではハッシュテーブルが示されているが、本発明はハッシュテーブルを用いたものに限定されない。考慮すべき点は、対応するLCB を見つけるのにRID を使用するのが好ましく、ハッシュテーブルが好適な手段であることである。しかしながら、アレーやその他のサーチ型構造を用いることもでき、本発明はハッシュテーブルの使用に限定されない。
【0037】
或るRID には如何なるトランザクションによってもロックが設定されない場合、簡便な方法は、データ構造内にそのRID のためのLCB を設けないことである。即ち、ハッシュテーブルから到達可能な LCBは、現時点における少なくとも一つのトランザクションによってロックされる可能性のある資源等の、全てのロック可能な資源のサブセットを表しているにすぎない。
【0038】
LCB を一方向にリンクするための別の方法として、二重にリンクされたリスト設けることができ、これによりLCB のチェーンを両方向にトレースすることが可能となる。各ロック可能な資源について、問題となっている資源に対してロックを保持するトランザクションが複数存在することが可能である。許可されたか或いは許可待ちのロックリクエストは、ロックリクエストブロック(LRB) によって表される。各LRB がそのLCB をリファーバック又は参照することが好ましい。この特徴は、簡明化とスペースの観点から図面には含まれていない。また、二重リンク構造を用いてLRB チェーンを提供することも可能であり、これにより、LRB のチェーンを両方向にトレース(追跡)することが可能となる。更に、最初の LRBがLRB のチェーン内の最後のLRB を参照することも可能である。これにより、チェーンの終端を可能な限り速く見つけ出したいとき(例えば、待ちリストの終りに新しい LRBを挿入するとき)の性能を向上できる。例えば、この特徴を提供するためには、図3において、LRB 162−5 はLRB 162−7 を参照する。
【0039】
図3は、本発明で使用するデータ構造の例である。
【0040】
しかしながら、簡明化のためにDBCBは示されていない。トランザクション制御ブロック(TCB)Tl及びT2はトランザクションを表す。トランザクションは多くのロック、従って多くのLRB を持つことができ、一LRB は一トランザクションのみに属するのが好ましい。各TCB に対して一組のLRB が維持されている。図では、破線を用いてLRB 間の関係及び TCBからLRB への関係を表している。LRB を二重リンクリストの形態で構成することもでき、更に、各LRB がそのトランザクション制御ブロックを参照するようにLRB を設けることできる。例えば、この場合、図3の各LRB162は TCB T1 又はTCB T2の一方を参照する。
【0041】
本発明の LCB及びSLCBのデータ構造から明らかなように、ロック可能な資源とデータベースを表すために一つのLCB が使用される。即ち、LCB は特定のデータベース内のロック可能な資源(グローバルデータベース又はその中のサブデータベースの一つt)を表す。
【0042】
図4はロッキングに用いるデータ構造を示し、各 LCB(又はSLCB)は単一のデータベース、従って単一のデータベース制御ブロック(DBCB)に関連しているのが好ましいことを示すために提供されている。例えば、図1においては、SLCB 164−1はDB1 を参照し、SLCB 164−2はDB2 を参照し、SLCB 164−3はDB1 を参照し、SLCB 164−4はDB2 を参照する。必要に応じ、グローバルデータベースのためのデータベース制御ブロックを持つことを回避することも可能である。何故なら、最も低い階層レベルにある LCBの各々はグローバルデータベースに属し、LCB 及びトランザクションに対してのデフォルトであると考えることができるためである。この場合、グローバルデータベースとの関係を示すために LCB及びTCB からの参照が適宜使用される
【0043】
更に、図4は、任意数のレベルのサブデータベースをどの様にして作ることができるかを示す。上で述べたように、SLCBの構造をLCB の構造と同一にすることが可能であり、サブデータベースのためのLCB をグローバルデータベースのためのLCB と区別するために、本特許出願では上記のようなラベリングを行った。しかしながら、LCB をチェーンで結ぶために使用される「next LCB reference」を用いることなくSLCBを設けることによりメモリをある程度節約できる。しかしながら、必要に応じ、SLCBを一方向に相互にリンクするか、或いは必要であれば二重リンクにすることもできる。図4では、LCB 160−1 及び160−2 は第一レベルのLCB であり、グローバルデータベースに関連付けられておいる。SLCB 164−1及び164−3 は第二レベルのLCB であり、第一レベルのSLCBと考えることもできる。SLCB 164−2及び164−4 は第三レベルのLCB,、即ち第二レベルのSLCBである。同一レベルのSLCB間のオプションのリンクは、破線の矢印又は参照記号によって表されており、二重リンクを設け、SLCB 164−3がSLCB 164−1も参照できるようにすることも可能である。
【0044】
図5は、好ましい実施形態では、各トランザクションが単一のデータベースに属していることを示す。トランザクション制御ブロックT1、T2、T3、... 、Tmはそれぞれ、単一のデータベース制御ブロックを参照する。従って、特定のトランザクションに関連するデータベース又はサブデータベースのレベルを決定することが可能である。
【0045】
図6はデータ構造の例を示し、好ましい実施形態のトランザクションはそれら自身のデータベース内の資源のみにアクセスする。例えば、実線の矢印を用いてグローバルデータベース192 を参照するトランザクションT1の場合、トランザクションT1は、破線の矢印を用いて LRB 162−1及び162−3 も参照するが、LRB 162−1 及び162−3 の各々は、ハッシュテーブル152 によって参照される第一レベル即ち LCBレベルと関連付けられている。又、トランザクションT2及びそのトランザクション制御ブロックはサブデータベースDB1 を参照するか又はその一部であり、破線の矢印を用いて LRB 162−2及び162−4 を更に参照するが、 LRB 162−2及び162−4 は、第二LCB レベル即ち第一SLCBレベルと関連付けられ、且つ DB1と対応している。好ましい実施形態においては、トランザクションは単一のデータベースのコンテキスト内で行われる。更に、トランザクションのデータベースの範囲内でない資源にトランザクションがアクセスすることを阻止するのが好ましい。実施レベルでは、これにより、トランザクションのLRB は、そのトランザクションのトランザクション制御ブロックが参照するのと同一のデータベース制御ブロックを参照する LCB(又はSLCB)に属するか又は関連付けられている。例えば、図6では、T2は DB1内で実行される。
【0046】
従って、T2(162−2及び162−4)のLRB は、同一のデータベースDB1 を参照するLCB(SLCB164−1 及び164−2)に属する。
【0047】
図7は、データベース制御ブロック(DBCB)の実施例を示す。好ましい実施形態では、DBCBに対して、エンドユーザが最終的に必要とするデータを記憶することはリクエストされておらず、DBCBの目的は、LCB 又はSLCBによって少なくとも部分的に表されるロックがどのデータベース又はサブデータベースに属するかを示すことである。
【0048】
図7では、DBCB 202は、IDと略された識別子フィールド204 を含む。このフィールドはDBCBの名称又は識別情報を示す。アクティブトランザクションフィールド206 (Act Txと略す)は、問題となっているデータベース又はサブデータベース内において現時点でアクティブになっているトランザクションへのDBCBからのトレースを可能にする。例えば、サブデータベースの所有者がサブデータベースをコミット又は終了することを望む場合、上記の機能は望ましい。システムは、サブデータベースのアクティブトランザクションが何であるかを決定しなければならず、もしアクティブトランザクションのリストが空でない場合、サブデータベースの所有者は、サブデータベース内で他の作業が行われていることを示すと共に、現時点でそれらのトランザクションを終了することが望ましいか否かを問い合わせる警告を得る。サブデータベースを終了することについて責任を有する者(entity)に、終了の決定を変更する可能性を与えることが望ましい。
【0049】
或いは、サブデータベース内においてアクティブトランザクションが実行されている時点ではサブデータベースを終了できないようにシステムを構成することも可能である。この場合、トランザクションを終了させ、アクティブトランザクションが存在しない時だけサブデータベースの終了が許容されるようにしなければならない。そのようなチェックがない場合、システムはトランザクション状態を停止し、データベース・マネジメントシステムの特性が望ましくない状態になるであろう。
【0050】
アクティブトランザクションフィールド206 は、全てのアクティブトランザクションのリストを含むリンクされたリストの一部である単一のリファレンス又は複数のリファレンスを含んでいてもよく、或いは、アクティブトランザクションの名称又は識別情報を含んでいてもよい。それに加えるか又はそれに代え、アクティブトランザクションフィールドは、問題となっているデータベース又はサブデータベースのためのアクティブトランザクションの各々を参照する二重リンクリストを用いて実施することもできる。
【0051】
所有トランザクションフィールド 208 (Own Txと略す)は、問題となっているDBCBを作り、従ってそれを所有するトランザクションへの参照である。グローバルデータベースの場合、このフィールドはヌルリファレンスに設定されるであろう。また、サブデータベースの場合、このフィールドは、その作成/所有トランザクション制御ブロックを参照する。スーパーデータベースフィールド210 (Sup DBと略す)は、このデータベースによってその一部を構成しているデータベースを表すDBCBへの参照である。
【0052】
サブデータベースフィールド212 (Sub Dbと略す)は、このデータベースのサブデータベースを表すDBCBのセットへの参照である。ネクストデータベースフィールド214 (Next DBと略す)は、データベース階層の同一レベル内の次のDBCBを参照する。先の(previous)データベースフィールド216 (Prev DBと略す)は、サブデータベース階層の同一レベル内の前の DBCB への参照である。Next DB 及びPrev DB フィールドは、サブデータベース階層内の或るレベルにおけるDBCBの二重リンクリストを作るために使用される。
【0053】
このようにして、親データベースが同一であるサブデータベースが上記のリスト内でリンクされる。DBCB 202の最後のフィールドの3個の点又は楕円は、必要に応じて追加のフィールドがDBCBに含まれることを表している。
【0054】
DBCB の目的は、資源階層又はデータベース階層において、ロック等の特定のものが属している場所を具体的に高精度で示すことである。これにより、サブデータベースとシステムの残部との関係を簡単に決定することが可能になる。
【0055】
上記した DBCB 及び以下に詳述するトランザクション制御ブロック(TCB) に関して、これらのデータ構造内に多数のフィールドが含まれているが、このフィードは各図に示されていない。参照の数を理解可能な範囲に抑え、且つ分かり易くするために、参照の内には図示しないものもある、即ち不要なものもある。したがって、図面に参照が含まれていないという事実は、参照が存在しないことを意味するものと解釈してはならず、同様に、データ構造が特定の参照又はフィールドを含むという事実は、そのような参照がそのデータ構造の絶対条件であると解釈してはならない。好ましくは、DBCBは階層を形成している。
【0056】
しかしながら、 DBCB を階層に配置しない構成も可能である。
【0057】
図8はトランザクション制御ブロック(TCB) データ構造222を示す。このデータ構造は、アクティブトランザクションを示し、トランザクションが属しているデータベース又はサブデータベースのレべルを示し、及び/又はトランザクションのロックされた資源とロックの状態を決定するために使用される。
【0058】
TCB 内には、例えば、トランザクションの名称を識別する識別子フィールド224 が設けられている。コンテキストデータベースフィールド226 (Ctxt DB と略す)は、問題となっているトランザクションについての範囲又はコンテキストを表す、データベースのDBCBを参照するために用いられる。
【0059】
これは、トランザクションの作成時に決定されるであろう。本発明の実施形態によれば、トランザクションが発生してからそれが終了するまでトランザクションは存続し、その全ての動作を単一のデータベース内で行う。好ましい実施形態においては、トランザクションの存続期間の開始から終了まで単一のコンテキスト内にトランザクションを存在させるルールを用いることにより本発明は能率的に且つ適切に動作する。このように、コンテキストデータベースフィールド226 は、問題となっているトランザクションの範囲又はコンテキストを表すために使用される。例えば、コンテキストデータベースフィールド226 はグローバルデータベースを参照する。これは、TCB に対応するトランザクションはグローバルデータベース内で実行されるか、又はそのコンテキストデータベースとしてグローバルデータベースを有していることを意味する。
【0060】
図8のサブデータベースフィールド228 は、このトランザクションが作成したサブデータベースのセットを表すために使用される。なお、このフィールドを空にするか又はヌルを参照するようにすることも可能である。トランザクションは多数のサブデータベースを作成することが可能で、従って、多数のサブデータベースを所有することが可能である。
【0061】
実行されているアクションの種類によっては、特定のトランザクションのためにどれだけ多くのサブデータベースが存在しているかを決定することが望ましい場合がある。従って、トランザクションを終了することが望ましくなった時点で、そのトランザクションが実行される前に存在していたサブデータベースを知ることが好ましい。同様に、既に説明したように、データベース制御ブロックのためのサブデータベースを知ることが望ましい。
【0062】
フィルド230 はTCB の許可されたロックリクエストを表し、フィールド234 はTCB の許可待ちのロックリクエストを表す。図面、例えば図6に示すように、これらのフィールド230 及び234 は、 TCBからLRB への参照を用いて作成される。
【0063】
必要な場合、トランザクション又はTCB の階層を維持するためにスーパートランザクションフィールド236 が用いられる。スーパートランザクションフィールド236 は、問題となっているトランザクションよりも階層の高いトランザクションを参照又は指定する。例えば、問題となっているトランザクションを作成したか又はそのトランザクションの作成を許可したトランザクションを参照するためにトランザクションフィールド236 が使用される。
【0064】
図9は、DBCB間の関係及びDCBCとTCB との関係を示す。これらのデータ構造は、資源のロックを制御するために使用される。図9では、図面が過度に複雑になることを避けるために、ハッシュテーブル、LCB 、SLCB、LRB は示されていない。しかしながら、通常、これらのデータ構造は、本システム内に存在している。図9には、TCB T1、T2、T3、... 、Tmが示されている。
【0065】
DBCB 240、250 、260 、270 、280 、290 、300 も示されている。本例では、DBCBの階層を見ることができる。例えば、DBCB 240は、DBCB階層構造にける最も高いレベルのDBCBであり、グローバルデータベース192 に対応している。DBCB 240に関しては、IDフィールド241 が、このDBCBがグローバルデータベースのためのものであることを示す。DBCBでは、グローバルデータベースの所有者、即ち所有トランザクションを明確に特定する必要はないので、Own Txフィールド243 はヌルを示している。同様に、グローバルデータベースについてはスーパーデータベースは存在しないため、Sup DBフィールド244 もヌルを示している。
【0066】
Sub DB フィールド245 は、本データベースのためのサブデータベースを参照し、この場合、DBCB 250を参照する。この特定の例では、グローバルデータベースのレベルには、他のデータベースが存在せず、従って、Next DBフィールド246 及びPrev DB フィールド247 の各々はヌルを示す。なお、図9では、図面を簡単にするために図7に示すアクティブトランザクションフィールド206 が示されていないが、上記した様に、好ましい実施形態では、アクティブトランザクションフィールドが使用される。
【0067】
DBCB 240以下の階層レベルには DBCB 250 と260 がある。図9のフィールドは自明であるため、これらのフィールドの全ては説明しない。しかしながら、DBCB 250 に関しては、所有(owning)トランザクション253 が T2 を参照し、このDBCBのためのスーパーデータベース 254は、DBCB 240によって表されているグローバルデータベースであることが分かる。このサブデータベースのためのDBCB 250は、DBCB 270を参照するSub DB 255によって示されている。データベース 250の他のサブデータベース230、290、300はサブデータベース 270にリンクされている。Next DB フィールド256は DBCB 260を参照し、Prev DBフィールド257 はヌルを参照する。
【0068】
DBCB 250と階層レベルが同一のDBCB 260 に関しては、所有トランザクション263 は T3 であり、スーパーデータベース264は DBCB 240 を参照し、ヌルを参照しているサブDBフィールド265 によって表されているようにDBCB 260のためのサブデータベースは存在せず、フィールド266 によって示されているようにNext DB は存在しない。Prev DB フィールド267 は DBCB 250 を参照する。DBCB 240、 250、及び260 についての上記の記載から、DBCB 270、280 、290 、及び300 の各々は、DBCB 250及び260 の階層レベルよりも低い同一の階層レベルであることが分かる。
【0069】
DBCB に関しては、一般化して考えると、スーパーデータベースフィールドは、如何なるスーパーデータベースも参照しないグローバルデータベースを除き、一つのスーパーデータベースを参照する。そのような参照により、上記の階層の表現が可能とされている。図9は、特定の一連のトランザクションの間におけるDBCBの配置の例を示してるだけであり、図9に示す階層と全く同じである必要はない。
【0070】
トランザクションがサブデータベースを作成する時、サブデータベースは、その作成するトランザクションのコンテキストに基づいて作成される。図9においては、トランザクションT2及びT3はグローバルデータベース内で実行されることが好ましい。何故ならば、その様にしないと、それらはグローバルデータベース内に属するサブトランザクションを作成できないからである。従って、DBCB 250及び260 が、それらの上位の(superior)のデータベースとしてDBCB 240で表されるグローバルデータベースを有しているという事実は、所有トランザクションはグローバルデータベースをその範囲又はコンテキストとして有していることを示す。
【0071】
更に、上で述べたように、各DBCBのためのスーパーデータベースは一つしか存在しないことが好ましいが、サブデータベースの数は任意である。しかしながら、そのような必要のない別の実施形態も可能である。
【0072】
図9は、例えば、DBCB 250がDBCB 260を参照し、DBCB 260が DBCB 250 を参照することにより二重リンクリスト構造を示しているが、そのようなDBCB間の二重リンクリスト関係は必須要件ではなく、ツリー構造等、他の構成も使用できる。別のオブジェクトを指定又は参照する DBCB からのポインタ又はリファレンスであることができるが、その目的は、DBCBの位置を表す或る構造のセット又はリストを表すことである。この代替の実施形態では、別のデータ構造がデータ構造アレンジメントに付加される。そのような代替の配置は、データ構造アレンジメントをより複雑化するが、そのようにする利点がある。その一例は、必要であれば、DBCBの次の参照及び/又は前の参照を削除できることである。
【0073】
図10は、図9に示されていないTCB 及びDBCBの別の詳細部分を示す。この詳細部分は、明確化及び図面が過度に乱雑になるのを防ぐために図9では省略されていた。同様に、図9に含まれている DBCB の特徴は、明確化のために図10では省略されている。図10では、アクティブトランザクションフィールドはDBCB内に示されており、コンテキスト及びサブデータベースフィールドの使用は TCBに関して示されている。図10のこれらのフィールドは、DBCBとTCB の関係を寄り詳細に示す。
【0074】
図9に示すように、トランザクションがその所有トランザクションの追跡履歴を保持(keep track)することが好ましく、又サブデータベースのアクティブトランザクションの追跡履歴を保持することが好ましい。
【0075】
そのような機能は、 DBCB のアクティブトランザクションリファレンス又はフィールドによって行われる。図10に示すように、DBCB 310は識別フィールド311 及びアクティブトランザクションフィールド312 を有する。アクティブトランザクションフィールド312 は TCB 320を参照する。これにより、DBCB 310に対応するサブデータベースの所有者は、TCB 320 に対応するトランザクションがDBCB 310のためのアクティブトランザクションであることを判定できる。更に、TCB 320 の最も右側の部分においてTCB 330 への参照があり、TCB 330 は TCB 340を参照していることが分かる。
【0076】
また、TCB 340 は、TCB 320 を参照するTCB 330 を参照する。更に、TCB 320 、330 、340 の各々のコンテキストデータフィールドは DBCB 310 を参照する。
【0077】
トランザクションが作成又は開始される場合、そのトランザクションがある種のコンテキストを有し、その中でトランザクションが実行されるのが好ましい。古典的なコンテキスト及び従来技術においては、このセッティングが常にグローバルデータベースであった。しかしながら、本発明のネスト化データベースでは、トランザクションをグローバルデータベース内で開始して実行でき、又ランザクションをサブデータベース内で開始することもできる。好ましくは、トランザクションが開始されたサブデータベース外のデータはアクセスできず、又、好ましくは、このトランザクションが実行されているデータベースをロックマネージャが知っているか判定でき、これがコンテキストデータベースとして参照されるものである。トランザクションがリクエストしている資源がコンテキストデータベース外である場合、そのような情報に対するアクセスのリクエストはロックマネージャによって拒否されるのが好ましい。しかしながら、別の方法として、問題となっているサブデータベースを動的に成長させることも可能である。必要であれば、この動的成長が丁度その時に起きるようにでき、又、更に必要であれば、成長を(ユーザの介在なしに)自動的に開始させることもできる。その様な成長は、図16のプロセスに類似したマネージャ内で生じる。図16は、新しいデータ・アイテムがどの様にしてサブデータベースに持ってこられるかを示す。リクエストされているデータがコンテキストデータベースの一部である場合、その資源はアクセス可能なデータベースに属し、評価しなければならない次の問題は、その資源について矛盾するロックが存在するか否かである。矛盾するロックが存在しない場合、ロックマネージャはロックリクエストを許可できる。従って、本発明のデータ構造は、資源がアクセス可能であるか否かの表示と、その資源がロックされているか否かの判定の両方を可能にする。
【0078】
図10を再度参照すると、TCB 320 のSub DBフィールド323 は DBCB 348 を参照し、TCB 330 のSub DBフィールド333 は DBCB 346 を参照し、TCB 340 のSub DBフィールド343 はDBCB 347 を参照することが分かる。 DBCB 348 、352 、356 に関しては、これらのDBCBのスーパーデータベースポインタ又はリファンレスは DBCB 310 を参照する。DBCB 348は、そのアクティブトランザクションリファレンスを使用してTCB 360 を参照する。TCB 360 及び364 はそれぞれ、コンテキストデータベースリファレンスを用いて DBCB 348 を参照する。
【0079】
図10の単純化したDBCB及びTCB のフィールドの詳細構造は、明確化のためと、図10がリファレンスによって過度に複雑になることを避けるために省略されている。
【0080】
図11は、資源のロックを制御及びモニターするために使用されるデータ構造の代替構成を示す。図2、図4、及び図6を参照して示した実施例では、或るデータベース内の或る資源のロックに対するロックリクエストをロックマネージャが処理するとき、グローバルデータベース内のその或る資源のためのLCB を見つけ出すために資源ID(RID) を最初に使用する。その後、必要であれば、同一のRID ではあるが、処理中のロックリクエストによって特定された特定のデータベース又はサブデータベース内のRID のためのLCB を見つけ出すために”Next Level LCB”リファレンスを使用する。図11の代替の実施形態(及び図12の代替の実施形態) は、上に述べた場合とは逆のイベントシーケンスを可能にする。即ち、図11のデータ構造により、ロックマネージャは、DBCBによって表されたデータベースを最初に見つけ、その後、そのデータベース内でRID 見つけることが可能となる。これは、上に述べたように単一のグローバルサーチテーブルだけではなく、DBCB 毎に一つのサーチテーブルを設けることによって達成される。
【0081】
図11において、DBCBは、その所有する(owning)TCBを参照することに加えサーチテーブルを参照する。このサーチテーブルは問題のデータベース内に含まれているRIDへのアクセスを提供する。例えば、DB1はテーブル380を参照し、DB2はテーブル390を参照し、DBnはサーチテーブル400を参照する。各サーチテーブル380、390、400はSLCBを参照するが、このSLCBは特定のデータ・アイテムのロックに関する情報を提供する。図11には図示されていないが、LRBは、SLCBに関連する許可されたあるいは許可待ちのロックリクエストに対して用いることができ、その用い方は上に記載の実施態様におけると同様である。
【0082】
テーブル380、390、400等のサブデータベースサーチテーブルは、ハッシュテーブルとすることができるが、別の態様で作成することも可能である。例えば、LCBリファレンス群の固定サイズの配列アレイを用いて作成することができるであろう。サブデータベースのサイズがサブデータベース創出の際に固定されている場合にはそのような態様は有利であろう。あるいはまた、LCBリファレンス群の非固定サイズの配列アレイ(成長可能(growable)アレイ)を用いて作成することもできる。ハッシュテーブルをサブデータベースサーチテーブルとして用いる場合、このハッシュテーブルには、所望により、グローバルデータベースハッシュテーブルよりもより少ないエントリーを割り当てることができる。ハッシュテーブルをサブデータベースサーチテーブルとして用いる場合、与えられたいずれのハッシュテーブルに対してもLCBのチェーンを持つことができるであろう。これは例えば、サーチテーブル400について図示されているように、リファレンス402はSLCB 164−5 を参照し、SLCB 164−5 はSLCB 164−6を参照している。図11に示す別実施形態では、各LCBは異なるサーチテーブルの下にオーガナイズされているので、LCBやSLCBの”Next Level LCB”フィールドはもはや必要でない。よってそのようなサーチテーブルの一つにおける所定のエントリーから、上述の実施形態のLCBとSLCBの階層構造とは対照的に、LCBの線形構造にアクセスすることができる。図11では、各サブデータベースDBCBは、その所有TCBへの参照を有し、また、各TCBはそこに含まれるDBCBへの参照を有する。図11のデータ構造はスーパーデータベース・リファレンスの使用をなくするものではない(但し、これらリファレンスについては図11、12には図示していない)。
【0083】
図11では、トランザクションに対するコンテキストデータベースに関係する情報を示す、TCBとDBCB間の両方向に行き来するリファレンスが存在する。即ち、例えばT1について説明すると、T1はグローバルデータベース192に向けられているので、T1がグローバルデータベース内で処理実行すること、あるいはT1がグローバルデータベースをそのコンテキストデータベースとして有することがわかる。DB1からトランザクションT1への参照について説明すると、この参照は、DB1がT1によって所有される、あるいは創出されることを示す。T2、T3、T4は全てDB1を参照しており、これらのトランザクションはDB1の範囲内あるいはコンテキスト内で実行されることを示す。図11の示す所によれば、T4は、DB2からT4へと参照されることにより、DB2の作成元であるが、T4はDB1内で動作する。この情報から、DB2はDB1に含まれるサブデータベースであると結論することができる。念のため記載すると、図11は単にサブデータベースシステムの一例を示すものに過ぎず、別の表現方法もありうる。しかしながら、図11に示すように、T4を介する結合のゆえに、DB2の内部に存在するものはなんであれ、DB1のサブセットである。図11はまた、T5とT6がDB2をそのコンテキストとして実行することを示している。T6はDBnを創出し、T7とT8とはDBnの中で動作する。
【0084】
図12は、本発明の更なる別の実施態様を示す。サブデータベースは、サイズが小さくできることから(なぜならそれらは少数のロック可能な資源を含むようにできる為)、必要に応じて、サブデータベースを固定サイズとすることができるであろう。また、必要に応じて、サーチテーブル410、414、416はLCBのアレイとできるであろう。各LCBはサブデータベースに対するものなので、図12のLCBは、SLCB(サブデータベースロック制御ブロック)164−1〜164−20として示されている。リファレンス群のアレイやLCBリファレンス群のハッシュテーブルではなく、SLCBのアレイを用いることができるであろう。なお、ハッシュテーブル152は好ましくは前述の各実施形態に関して記載されたのと同様にして作成される。グローバルデータベースに対するこのハッシュテーブルの作成は、所望により、グローバルデータベースに対して多数のLCBを使用することを許容するものである。もしサブデータベースの特定の使用が知られている場合には(知られていない場合でも)、サブデータベースにおけるアイテムの数を例えば20データ・アイテム等の任意数に制限することが適切であるかもしれない。この数は必要に応じ、より大きくも小さくもすることができる。しかしながら、これは固定された数であって、実施形態においてはアレイ410、414、416が20メモリを有するように作成することができる(各メモリは全SLCBを保持できる)。そうすれば、もし割り当てられたメモリの一部分のみが用いられた場合、用いられていない部分は無駄になるが、この用いられていない部分はそれほど大きいものではなく、また、達成される利点として、新しいLCBが導入されてもダイナミックメモリの割当てに対処する必要がない。また、サーチテーブルなしにLCBのチェイン(リンクされたリストやダブルリンクされたリスト等)を持つことも可能で、特定のLCBを設定する必要がある場合にはいつでもポインタやリファレンスチェーンの順次的な調査ができる。
【0085】
図13は、DBCBに関するデータ構造群とTCB群の両者を含む階層を示す。本発明によれば、トランザクション群とデータベース群とを、同一の種類の「物」としてみることができる。これが可能な理由は、データベースをパッシブトランザクションとみることができるからである。よって、データベースがパッシブトランザクションとみなされ、トランザクションとして上に記載したもの(T1等)がアクティブトランザクションと表示(label)されることから、単一の階層データ構造におけるDBCBとTCBへの統一化されたアプローチが可能となる。
【0086】
図13にはATCB群とPTCB群を示すが、これらをそれぞれアクティブTCB及びパッシブTCBと称する。アクティブTCB(即ちATCB)は前述のTCBに対応し、パッシブTCB(即ちPTCB)はDBCBの別称である。図13では、データベース/トランザクション階層とも称される階層のルーツは、グローバルデータベースPTCB 420である。このノードは、上記のグローバルデータベースデータ構造192に対応する。この階層において、いずれのノードも如何なるタイプの子ノードを有してもよいようにできる(とはいっても、PTCBがその直接的親ノードとして他のPTCBを有することは通常ないし、そのようなことは行なわれていないであろうが)。上で述べたことを別の言い方でいうと次のようにいえる。階層の出発点はグローバルデータベースで、これは階層のルーツであり、そこから、トランザクションやサブデータベースが作成され寿命を全うする、考えうる殆どあらゆる方法でデータベース/トランザクション階層が動的に展開される(成長(grow)と退縮(shrink))。このことは、グローバルデータベースに対するPTCBは、他のノード全てが過渡的(transient)でありながらトランザクション・マネジメントとロック・マネジメントが行なわれる対象に対してシステムが存在する限り、存在するであろうということを意味する。この場合、グローバルデータベースに対するPTCBは、恒常的に存在するように作成することができる。図13の統合された(unified)構造は、上に述べたいずれの実施態様についても用いることができる。これが意味することは、システムは、全てのLCBへのアクセスを提供するグローバルサーチテーブルを有するように作るか、あるいは問題としているPTCBに属するLCB群へのアクセスを与えるPTCB毎にサーチテーブルを有するように作ることができる、ということである。
【0087】
図13を参照すると、グローバルデータベースPTCB 420が一番上の階層レベルに描かれている。このグローバルデータベースPTCB 420の直下には4種のトランザクションATCB 422、ATCB 424、ATCB 426がある。これら3種のATCB はトップレベルのトランザクションであって、グローバルデータベースPTCB をそれらの直接の親ノードとして有している。図13の階層における全ての他のトランザクションやATCBは、サブトランザクションと考えることができる。図13に示したデータ構造の関係を実現可能である理由は、本発明者の知見、即ち、サブデータベースをパッシブトランザクションと見ることができ、またサブデータベースが常ににアクティブトランザクションよって創出されると、そのサブデータベースはサブトランザクションになる、という本発明者の知見による。図13に示すデータ構造の階層と統合化(unification)の利点は、図10に示す構成に比べ単純化できる可能性が提供されていることである。この単純化がもたらされる理由は、TCB群階層とDBCB群階層という二つの異なる階層の間を行き来するポインタやリファレンスの代わりに単一の階層があるためであると考えることができる。これにより、データベース制御ブロックをしてその所有トランザクションとスーパーデータベースとの間の差別化をさせる代わりに、データ構造の作成を、それら2つのフィールドのただ一つのみが必要とされるようにして行なうことができる;その場合、スーパーノードのみを含むシステムとすることができる。例えば、図10を見ると、各トランザクション制御ブロックはコンテキストデータベースを指すポインタやレファンレスを有しており、従前の実施方法におけるデータ構造は、(必要ではないにせよ)スーパートランザクションを指す他のポインタやレファンレスを有するのが好ましい。これに対し、図13の実施形態では、これらスーパートランザクション及びコンテキストデータベースリファレンスやポインタは、単一のリファレンスと結び付けられる。前出の実施形態と同様、本実施形態でもハッシュテーブル、LCB、SLCB、LRB等のサーチテーブルが用いられる。
【0088】
ロックリクエストを実施するときは、前出の実施形態と同様の処理ステップを行なう。処理にあたっては、TCBからLCBへ、あるいはLCBからTCBへと進むことが望まれるかもしれない。正に前の例と同様に、回答は、PTCB(これはDBCBに対応する)を参照するTCBやATCBによって判断されることができる。別の方法として、PTCBが見出される所まで上方に階層を上がって行くこともできる。いずれの場合においても、トランザクション制御ブロックから、そのトランザクションのデータベース制御ブロックへと迅速に進むことができる。この時点で、2つのオプションのいずれかに従うことができる。即ち、ハッシュテーブルを有するRIDを用いて問題のリファレンスを見つけ次いで問題のデータベースに対するLCBを見つけるか、あるいは、DBCBに行ってからハッシュテーブル又はデータベース制御ブロックに行く(これらは所望する一つのRIDに対するLCBをサーチするのに用いられる)。PTCBの構造は、前に記載したDBCBと同様である。
【0089】
しかしながら、PTCBは、所有トランザクションとDBCBのスーパーデータベースフィールドを結合させることによって作成することが好ましく、この結合されたフィールドを、簡単に「上位」(superior)と称することができよう。
【0090】
上記TCBに対応するATCBの作成に関しては、図8のコンテキストデータベースフィールド226を、図8のTCBのスーパートランザクションあるいは親トランザクションフィールドと結合させることができる。このようにして(必要に応じ付加的な変更がなされるにせよ)、ATCBをTCBと非常に類似した方法で作成することができる。
【0091】
前出の各実施形態では、ロックリクエストブロック(LRB)を参照するLCBあるいはSLCBを用いることが好ましい。この実施形態の別の方法として又はこれに加え、LRBを、LCB又はSLCB自身の中の許可待ちリクエストビットマップや許可されたリクエストビットマップで置き換えることもできる。図14を参照すると、LCBやSLCBの別の実施形態がデータ構造460として示されている。このデータ構造はLRBに保存されている情報をLCBへと統合するので、LCB(及びSLCB)はクラッシク形式のLCB(及びSLCB)より多くの情報を含む、より「リッチ」な制御ブロックである。図14のデータ構造は米国特許第5,983,225号の図3のデータ構造に基づいていると共にこれに類似しているものであって、この特許公報を本明細書の一部を構成するものとしてここに援用する。
【0092】
データ構造460はロックIDフィールド462を含むが、このフィールドは通常、今問題としているロックされた資源やその他の資源に対する資源識別子のコピーを有する。モードフィールド(mode field)464は、このLCBで表されるデータベース資源に関して許可された全ロックの最も制限的なアクセスモードを示す。許可されたリクエストビットマップフィールド466及び許可待ちリクエストビットマップフィールド468はそれぞれ、システム(あるいはサブデータベースレベル)によってサポートされた同時的トランザクションの最大数を示すよう、十分なサイズの(例えば、64ビットあるいは128ビットの)ビットマップを含む。各トランザクションにはビットマップトランザクション識別子が一つ割り当てられる。許可されたリクエストビットマップ466は、LCB(又はSLCB)460で表されるロック資源を許可された各アクティブトランザクションに対するセットビットを含む。同様に、許可待ちリクエストビットマップ468は、LCB460で表される資源に許可待ちのロックリクエスト(アクセスリクエストとも称する)を有する各アクティブトランザクションに対するセットビットを含む。データベースフィールド470は、LCB460に対応する資源に対するデータベースを表すDBCBへのリファレンスを含む。本実施形態によれば、他の実施形態と同様、所定のレコードあるいはオブジェクトの唯一個の物理的コピーが存在するが、そのレコードは二以上のデータベースにおいてアクセスされることができ、仮にある一時点で二以上のデータベース中でアクセスされることができない場合には、時間をずらせばアクセス可能であるようにシステムを作成することができる。よって、トランザクションが現在問題としている資源にアクセスしている時、その資源をどのデータベース中にアクセスしようとしているのかを示すこと、またその場合その目下問題となっている資源が所属する各データベースに対し、単一のLCB(又はSLCB)が存在すること、が好ましく、そして好ましくは、そのLCB(又はSLCB)は目下問題としているデータベースがそれに対応していることを明示的にはっきりこれと示すことができるべきである。これが、データベースフィールド470の目的である。
【0093】
ネクスト・レベルLCB472については、このフィールドはネクスト・レベルLCBを参照するが、参照の仕方は図4及び図6に示すより高い階層レベルのSLCBの参照の場合と同様である。フィールド474は、追加のフィールドがLCB/SLCB460中に含まれてもよいことを示す。例えば、読出し/書込みパラメータビットマップ(その例としては、米国特許第5,983,225号の図2に要素172及び173として示されている要素が挙げられる)を用い、LCB460で示すデータベース資源について許可された読出し/書込みパラメータ化アクセスモードを表すことができる。加えて、他のフィールド群もLCB460のエリア474に含まれていても良い。ネクストLCBフィールド476を用いてネクストLCBを表しても良く、このフィールド476は図2のフィールド176に対応するであろう。更に、データベースフィールド477及びネクスト・レベルLCBフィールド178が図2に関して作成されると同様、データベースフィールド470及びネクスト・レベルLCB472も作成されることができる。LCB(あるいはSLCB)460の別の実施形態をもって、LCB又はSLCBが用いられている先の図面のいずれかに置き換えることができ、このようにすることによって、それら実施例で用いることが好ましいLRBを使用しないで済ませることができる。
【0094】
本発明は様々なトランザクションに関し、ここでトランザクションとは作業の論理的単位(a logical unit of work)と考えることができる。このようなトランザクションは、人が端末の前に座って作業をする環境に基づくものであるか、既存のコンピュータプログラム及びそのプログラムの命令を実行するためのリクエストを走らせたり提示したり(submission)することに基づく何かであることができる。サブトランザクションは、トランザクションと共に、あるいはトランザクションの下で、あるいはトランザクションと関連してなされる作業という概念に関する。
【0095】
トランザクションをサブユニットに分割することは、サブトランザクションを作り出すことと考えることができる。所望により(例示的実施形態に過ぎないが)、トランザクションは、他のトランザクションとは独立したものと考えることができ、また作業の自律的単位であることができる。
【0096】
これに対し、サブトランザクションは、非自律的あるいは非独立的トランザクションと考えることができる。よって、サブトランザクションはより高いレベルのトランザクションの一部と考えることができる。
【0097】
データベースはデータの集まり(collection)と考えることができる。サブデータベースもまたデータの集まり(collection)であるが、サブデータベースは一般に動的に創出(dynamically created)され、暫定的なエンティティ(transient entity)と考えられる。好ましい実施形態においては、サブデータベースは、創出トランザクションが生きている間だけ生き続け、サブデータベースを創出したエンティティが存在しなくなったらサブデータベースも存在しなくなるように作成しても良い。サブデータベースは、制御の領域(a sphere of control)である、あるいはこれと関係する、と考えることができる。この制御の領域とは、データのサブセットの周囲にフェンスやラインを置き、そのフェンスの内側がサブデータベースとみなされる領域である。サブデータベースはまた、バーチャルデータベースと考えることもできる。本明細書においては、「データベース」という語はサブデータベース又はバーチャルデータベースを指すものとして使用することがある。サブデータベースは、物質化される必要がないという意味ではバーチャルなものと考えることができる。本発明の実施態様においては、サブデータベース中に別の物理的コピーを持つ必要はない。よって、グローバルデータベースに属し且つ同時にグローバルデータベース制御ブロック192に対応する一以上のサブデータベースに属することができるデータのコピーを一個のみ有すれば良く、別の物理的コピーを持つ必要はない。
【0098】
好ましくは、データは図1のデータベース等のグローバルデータベースに保存される。グローバルデータベース192は、好ましくはDBMSのロックマネージャを管理し動作させるプロセス中で用いられるデータベース制御ブロックとして具現化される。データベース中に実際に格納されているデータを得るためには、グローバルデータベース192及び他のDBCB群、DB1、DB2、...、DBnは所望のデータを得るためのエントリーポイントとしては直接使用されず、データは好ましくはこれらのデータ構造に格納されない。
【0099】
本発明の一実施形態においては、LCB及びSLCBを経由してデータに到達する(あるいはデータへのアクセスを得るために用いられるロック情報を得る)ことが好ましい。
【0100】
次を仮定するものとする:即ちレコードID(RID)が一個存在し、そのRIDに対応する特定のレコードにアクセスしたいと所望され、且つそのレコードへのアクセスが所定のデータベース又はサブデータベース中にあるものと仮定する。基本的なアプローチでは、例えば図2〜10に示したデータ構造では、RIDに対するエントリーを得るためにハッシュテーブルを用いるが、そのRIDが見出された時には、そのRIDは、空であるかもしれないLCB群のチェーンを指すか特定のRIDに対応する一LCBを指す。その他のRID群に所属するLCB群は無視することができる。若しサブデータベースが所望のものでないかあるいはグローバルデータベースレベルのものであるならば、ハッシュテーブルの利用によって見いだされたLCBに対応するLRB群を調べ、コンフリクトしているロックが存在するかどうか、またそのロックリクエストは許可できるかどうかを判断する。もしコンフリクトしているロックが存在しロックリクエストが許可されるものなら、リクエストされたロックに対応するLRBを、許可されたLRB群のチェーン中に導入し、データへのアクセス許可を認容する。このとき、該システム中の他のコンポーネント、例えばバッファマネージャ(よく知られており図示しない)に行くこともできる。また、実際のデータを得るためにレコードを取ってくるための目的とする物理的アドレスやディスクへのアクセスを許容するアイテムに行くこともできる。若しネスト化データベース群やサブデータベース群が存在すれば、データベース制御ブロックを用いてデータへのアクセスに対する許可を得る。データに直接アクセスするためデータベース制御ブロックを用いることは好ましくない。上に述べたように、データを得るためには、ハッシュテーブルを用いてそのハッシュテーブルからハングオフ(hangs off)している対応LCB群を見出す。問題としているRIDに対するエントリーが得られ、図面上、右への動きがあり問題としているRIDに対するLCBを見出す。どのようにデータが得られるかを視覚化したものが図4である。図4では、第一レベルのLCB 160−1と160−2が存在する。図4のハッシュテーブル152から、LCB 160−1と接続するリファレンス154−1が見出される。LCB 160−1はグローバルデータベースDBCB 192を参照する。データがデータベース 2 (DB2)に入力されている、あるいは問題とするトランザクションがデータベース 2のコンテキスト内で行われると仮定すると、正しい資源に対するSLCBを見出すことが必要である。第一レベルのLCB 160−1から第二レベルのLCB 164−1へと進むことが必要となる。SLCB 164−1はDB1を参照するが、これは所望のデータベースではない。
【0101】
よって、LCB/SLCBの階層を一レベルずつLCB群の第三レベルまで上って行くゆくと、SLCB 164−2がDB2を参照していることが分かるが、このDB2が所望するものであるので、正しいLCBのレベルに到達できたことになる。この段階でロックマネージャは、SLCB 164−2においてこのデータベース及びこの資源に対しどんなロックが存在するかを調べる。もし新しいロックリクエストが既に存在するもの(それが何であれ)と適合性(compatible)があるなら、そのロックリクエストは許可される。一旦ロックリクエストが許可されれば、データに対するロックが得られるが、そのデータ自身にアクセスできなければならない。好ましい実施形態においては、DBCBを用いずにデータへのアクセスを得る。好ましくは、同時実行制御のためにデータベース制御ブロックを用い、該制御ブロックがロックマネージャによって使用されることが好ましく、バッファマネージャや、データを取りに出ていくシステム中の何らかの他のメカニズムによって使用されないことが好ましい。好ましい実施形態においては、データベース制御ブロックは単なる制御ブロックであってデータを含まない;即ちデータベース制御ブロックは制御情報を含む。よって、一旦ロックが許可されると、システムは或るトランザクションが特定のRIDを持つ資格を有する(entitled to)と表示(indication)する。
【0102】
次いで、従来の技術およびデータベース構築法によって、例えば、「該データに対するロックが許可された」との表示を存在させることができる。また、RIDによって同定されるデータを得るために、バッファマネージャや他の構成要素を用いることもできる。
【0103】
バッファマネージャはデータを得るためにDBCBを必要としない、あるいは使用しないことが好ましい。データを得ることは物理的なアクセス経路の問題、及びディスクのどこに所望のデータが存在するかという問題である。
【0104】
好ましい実施形態においては、データは一部のみである。但し別の実施形態では二部以上であることができる。好ましくは、所望のレコードその他の如何なるオブジェクトもその数は一部である。該レコード等はディスク上に物理的アドレスを有しており、バッファマネージャはRIDによって与えられた物理的アドレスを特定することができ、バッファマネージャにとっては、データがどのサブデータベースに属するのかはどうでもよい;なお、該物理的アドレスは如何なる場合でも不変であることが好ましい。
【0105】
以上、SLCBやLCBはDBCBに対するリファレンスやポインタを有するものとして説明してきた。しかしながら、別の実施形態では、LCBやSLCBの中に或るフィールドを有することによって、これらリファレンスやポインタを不要とすることができる。このフィールドは、ナンバーであるか、あるいはSLCBが特定のデータベース又はサブデータベースに属することを示す表示である。LCBやSLCBに対するリファレンスは別の態様も可能である。
【0106】
本発明のサブデータベースを実現するのに用いられるデータ構造は、「ロッキング」として知られている周知の同時実行制御技法に再帰(recursion)を用いる。
【0107】
再帰法を行なうには、所定の原理を何度も繰り返し適用し、本発明においてはデータのグローバルな集まり(例えば、ワードプロセッシングやエンジニアリングやCAD/CAM 設計のドキュメントや構造等)を収めているグローバルデータベースからスタートする。
【0108】
同時実行制御(concurrency control)は、或る一人あるいは一トランザクションの行為によって、他の者が作業中のデータが壊されたり不良になったりしないことを確実にするために、ロッキングによって行なわれる。本発明で用いる原理は、ミニデータベースとみなしうるサブデータベースやネスト化データベースを創出すること、次いでグローバルデータベースに対してなさたと同じ基本概念とロッキングをサブデータベースに対して実施することである。従って、本発明はグローバルデータベースにおける原理をサブデータベース群のバーチャルな集まりに適用するものである。よって、本発明は、再帰的同時実行制御の原理を共同作業(collaboration)の問題に適用し、これによってバーチャルデータベースやバーチャルな砂箱(sandbox)環境の作出を可能とする。これらのバーチャルな環境やサブデータベースに対し、本発明は従来の同時実行制御の使用を許容し、共同作業することを所望している複数のユーザ間での時として複雑なパターンのやり取りを確立することを可能とする。
【0109】
若しデータの変更をキャンセルしたい希望や前の状態にデータを戻せるようにしたいという希望がある場合(これはアトミック性に関係する)、本発明はトランザクションの範囲において、各データ・アイテムになされたすべてのログを保持するように構成することができる。そのログのコンテンツによって、変更されたいかなるアイテムも前進的にも後退的にも両方向の回復が可能となる。これは回復可能性として知られており、その実施には周知の各種技法が存在する。しかしながら、書込みを行なう複数の人々の間での共同作業実現へのアプローチの多くは、トランザクションをより小さなトランザクション群に分割することによってトランザクションのアトミック性を犠牲にしている。そのようなアプローチのよく知られた例として、オープンネスト化トランザクションやいわゆるsagasが挙げられる。これは上記の極く小さいアトミック・トランザクションの中での回復可能性を実現するものであるが、ユーザの見たいという希望により、トランザクションを構成する極く大きい作業論理単位(logical unit of work)については回復可能性は失われる。このため、トランザクションの補償という概念の導入が必要となる。これはアプリケーション開発者によって創出される必要のあるトランザクションである。言い換えるとこれは本質的には回復可能性へのドゥ・イット・ユアセルフともいうべきアプローチである。
【0110】
これはネスト化データベースの場合とは対照的である。即ち、ネスト化データベースの場合、回復可能性は失われず、補償トランザクションの使用も不要である。更に、ネスト化データベースの存在下において、回復可能性を実現するための周知の技法を引き続き用いることができる;即ち回復可能性の実現の目的で何らの新たなアルゴリズム、データ構造、技法も開発する必要はない。データベースのネスト化におけるあらゆるレベルで回復可能性が保持できることは、標準技法によるサポートと組み合わせることにより、共同作業(collaborative work)の問題への他の各種アプローチと比べて優れた本発明の利点である。
【0111】
本発明の好ましい実施形態においては、サブデータベースを創出したり稼動しはじめるために、問題としているオブジェクトやサブデータベースに関する書込みロックを有することが好ましい。トランザクションは制御領域を確立するが、誰でも動的に(dynamically)或るオブジェクトを該制御領域に持ってきて、その制御領域の性質に基づいてそれらのオブジェクトを操作(manipulation)することができる。書込み制御領域があれば、制御の全領域あるいはその一部を変更することができる。書込みロックによってデータの書込み、削除、挿入、変更が許容され、好ましい実施形態によれば、書込みロックはサブデータベースの創出に対する一要件である。サブデータベースは、書込みロックでなくデータベースロックを作出すると考えることができる。データベースロックを持っていても書込みロックでできることの全てはできないかもしれないし、またデータベースロックは現実にはその構成要素に対し、書込みロックに幾つかの権利を放棄させるようにしてしまうかもしれない。幾つかの権利が放棄されてしまうかもしれないが、それら権利を放棄してサブデータベースを作出することの利点は、そのサブデータベースの所有者が他者や他のグループと該サブデータベースのオブジェクトを共有することに異存がないことにより同時実行制御の別の枠組み(regime)が作出されることである。
【0112】
特定のトランザクションに関するロックマネージャは、そのトランザクションをして或るデータベースの範囲内で一生を終わるようにさせる。従って、本発明は、様々な範囲のトランザクションや様々なサブデータベースを有するトランザクションを認識する再帰的アルゴリズムを用いる態様として実施できる。本発明は、システムをより強力にしまた付加的特徴を実現するために米国特許第5,983,225の技法と共に実施することができとはいえ、本発明は、米国特許第5,983,225号公報に記載のパラメータ化ロックマネジメントシステムとは異なる。本発明におけるネストされたデータベースあるいはデータベースをネスト化すること、およびサブデータベースを利用することの目的は、データに書込む者が複数ある場合それら複数の者の間を調整することにある。
【0113】
図15に戻ると、これは新しい空の(empty)サブデータベースを作出するためのフローチャートである。図15で暗黙の了解事項とされていることは、トランザクションがデータベース又はグローバルデータベース内の何らかの他のサブデータベースの中で実行されていること、及びこのトランザクションの所有者あるいはこのトランザクションの管理者が新しいデータベースを作りだそうとしていることである。図15において、スタートの後、ステップ482で新しいDBCBを作成する。創出されようとしているこの新しいサブデータベースの存在に関する制御点あるいは参照点とするために、データベース制御ブロックが作成される。上で述べたように、好ましい実施形態においては、このサブデータベースに対してデータのコピーを作成する必要はないが、必要に応じて、データのコピーを作成しても良い。ステップ484、486、488は作成されたDBCBを、存在するかもしれない他のデータ構造と関連付けるものである。ステップ484では、DBCBの「Own TX」フィールドをして、作成/所有トランザクションを参照させる。
【0114】
このステップは、作成トランザクションと新しいDBCBとの間の関係を明確にするために行なわれる。なお、各フローチャートに記載の全ステップが必須であるのはなく、実施態様によっては、所望であればあるいは名指されたデータ構造やフィールドが使用されていないならば、なくても良いステップもあろう。次に、ステップ486では、DBCBのスーパーデータベースフィールドをして適切なDBCBのスーパーデータベースを参照させる。これを行なうことにより、「この新しいサブデータベースをその一部として有するデータベースは何か」をシステムに告げ、またDBCBデータ構造において明確にする。次いで、ステップ488では、DBCBデータ構造の「Prev DBフィールド」や「Next DB」に書込み、それらが同胞データベース(もし存在すれば)を参照できるようにする。これらの同胞データベースは、同一の作成トランザクション(もしあれば)によって予め作成された他のサブデータベースであることができ、この予めの作成は、該他のサブデータベースとの関係が定義されあるいは作成されるようになされるものである。
【0115】
次に、図15中、ステップ490では作成トランザクションのTCB中に適切な情報を書込むが、この書込みはこのDBCBが作成トランザクションのTCBの「Sub DBフィールド」によって参照されるようになされる。このステップによって、スーパーデータベースがこの新しいデータベースを、それ自身(即ちスーパーデータベース自身)が有するサブデータベース群の集合中に含むことが確実になる。最後に、ステップ492において、LCBのための新しいサーチテーブルが割り当てられ、該新しいサーチテーブルはこのDBCBから参照される。このステップ492は全ての実施形態において実施されなければならないものではないが、図11のデータ構造及び/又は図12のデータ構造では望まれるステップである。図11及び/又は図12の実施形態において、好ましくは、各DBCBはそれ自身のハッシュテーブルや、アレイや、そのドメイン又はサブデータベースの中にあるRIDを指定するためのエントリーポイントとして用いられるその他のサーチ構造を有することが好ましい。図15のプロセスはそこで終了する。
【0116】
図16は、サブデータベースの要素を構成する(populate)ために前記RIDをサブデータベース中に持ち込むプロセスを示す。図15で作成されたサブデータベースは最初作られた時には空であって、図16は、オブジェクトやデータ・アイテムがどのようにしてサブデータベースに引き込まれ、目下問題としているサブデータベース中で実行されることになる将来のトランザクションにそのオブジェクトやデータ・アイテムが利用可能となるかを示す。図16において、スタート後、ステップ500は問題のオペレーションが有効かどうかを判断する。このステップが行なわれる理由は、好ましい実施形態においては操作者は如何なるオブジェクトもサブデータベースに移動できないが、一定の条件が存在するべきであるからである。例えば、サブデータベースを所有する、創出されたトランザクションは、この時点では、それ(トランザクション)がサブデータベースへと持ち込もうと希望しているオブジェクトを所有していることが好ましい。その他の質問や判定も実施することができる。例えば、オブジェクトがこのサブデータベースのスーパーデータベース中に存在する場合にのみオブジェクトをそのサブデータベースにき込む(該スーパーデータベースがグローバルデータベースや他のサブデータベースであろうとなかろうと)などである。よって、好ましい実施形態においは、オブジェクトをデータベース階層におけるその直上のデータベースからのみ引きだすことができる。若し、上記二条件が満たされないなどの理由でオペレーションが有効でないと判断されれば、図16のプロセスはそこで終了する。
【0117】
もしステップ500がそのオペレーションが有効であると判断すれば、ステップ502に進み、目下問題としているオブジェクトをサブデータベース中に取り込む。図16の実施形態は図2〜4及び6に示したアレンジメント等のデータ構造アレンジメントに関する。ステップ502ではスーパーデータベースにおいてこのRIDに対するLCBを見つけ出す(locate)。好ましくは、このステップは次のように行なわれる。即ち、まずハッシュテーブルに行き、RIDをハッシングし、ハッシュテーブルのエントリー又はリファレンスを獲得し、そしてポインタチェーンやリファレンスに従って前記ハッシュテーブルから第一のレベルのLCBに進む。このLCBはグローバルデータベース中のRIDを特定するであろう。もし、問題としているオブジェクトを目下引き込もうとしているこのサブデータベースがグローバルデータベースの直下のものではなく、その上に(即ちグローバルデータベースとそれ自身の間に)他のサブデータベースを幾つか有しているならば、次のレベルのデータベースリファレンス群の中を移動したりあるいは一LCBから他のLCBへと、このサブデータベースの直接上のスーパーデータベース中の資源を特定するLCBに到達するまで次のレベルのLCBに移動することが適切である。ステップ500に関するこの判定によって、そのようなLCBが存在するようになることが分かる。
【0118】
ステップ502の後、ステップ504に進み、このデータベースあるいはサブデータベース中の問題のRIDに新しいLCBを割り当てる。この新しいLCBは、我々が作成した新しいサブデータベース(そこに資源が持ち込まれる)中の全く同じ資源を表す。ステップ506において、スーパーデータベース中のこのRIDに対するLCBは新しいLCBを参照するようにされる。最後に、ステップ508で、この新しいLCBにこのデータベースのためのDBCBを参照させる。即ち、この新しいLCBがはっきりとデータベースとの関係を示すことを確実にすることが好ましい。これは「これは私のデータベースだ」とか「これは私のコンテキストデータベースだ」ということを示すことによってなされる。図16のプロセスはそこで終了する。
【0119】
図17は、データベースやサブデータベースの要素をいかにして構成する(populate)かを示すフローチャートである。これは例えば、図11や12に示すデータ構造を有する別の態様においても用いることができる。このように要素を集めて構成する(populating)目的は、資源のロック状態を決定するためにLCBを作出することによりロッキング構造を実現する点にある。
【0120】
図17ではスタートした後、ステップ510を行う。このステップは問題のオペレーションが有効かどうかを判定する。このステップは、図16のステップ500と同一のステップであるので、このステップの説明は省略する。次に、ステップ512において、このデータベース用のDBCBを見つけ出す。
【0121】
この時、グローバルデータベースや対象とする何らかのサブデータベース等のデータベースは既知である。なお、データベース制御ブロックによって或るオブジェクトを引き込もうという企図が存在するデータベースはどれかが示されることが好ましい。更に、所定のデータベース用のDBCBを見つけ出す方法があることが好ましく、それはデータベース制御ブロックへの参照があるようになされることが好ましい。次に、ステップ514において、このデータベース内で、新しいLCB(又はSLCB)が問題のRIDに対して割り当てられる。このステップでは、データベース中に新しいオブジェクトが持ち込まれる際に新しいLCBが作出される。即ち、もし一オブジェクトが複数のデータベースに存在すれば、そのオブジェクトを有するデータベース群が存在することにより、そのオブジェクトは自身を表す同数のLCBを有す。最後に、ステップ516において、LCBがデータベースのサーチテーブルに挿入される。これはレコードIDについてハッシングし、ハッシュテーブルが使用されていると仮定するとハッシュテーブルエントリーを得ることによって達成される(但しアレイやテーブル等上述の別法を用い、新しいLCBを、如何なるハッシュテーブルエントリーであれ、ハッシュ関数が指示する挿入箇所に挿入してもよい)。この時もしLCBのチェーンが空であれば(即ち、LCBなし)、LCBをチェーン中最初のアイテムとして挿入する。また、チェーンが空でなければ、LCBを第一のアイテムとして挿入するか、あるいは、チェーンにおける最後又は中間のアイテムとして挿入する(エントリーが挿入され、問題としている特定のハッシュテーブルやアレイ・エントリーから到達されうる限りにおいて)。
【0122】
図18は、図2〜4及び6に示した本発明実施形態のデータ構造を用いてロックリクエストの処理を行なうための例示的ステップを示すフローチャートである。図18において、スタート後、ステップ520を行なって、問題としているRID用のハッシュテーブル・スロットを見つけ出す。ロックリクエストによって、あるデータへのアクセスの許可を求めているトランザクションを特定し、このRIDがその中に見出されようとしているデータベースを特定すると共に問題のデータのIDやRIDを特定する。更に、アクセスモードの表示が存在し、これはたとえばデータの読出しや書込みが所望されているか等である。この情報はロックリクエストの処理の際、ロックマネージャによって利用される。よって、RID用のためのハッシュテーブル・スロットを見つけ出すために、RIDのハッシングがあって、ハッシュテーブル・エントリーが見出され、そしてハッシュテーブル・エントリーにおけるリファレンスが調べられて、グローバルデータベース中でこのRIDに対するLCBが存在するかどうかを判断する。もしステップ522でRIDのためのLCBがグローバルデータベース中に存在しないと判断されれば、ステップ530に進み、そこでLCBを作出してそれを第一レベルのLCBチェーンに挿入する。ステップ522でRIDのためのLCBがグローバルデータベース中に存在しないと判断されれば、ロックリクエストは、LCBがまだ存在していないためLCBが作出されるという比較的単純な状況において、グローバルデータベース中の前記RIDのためのものと結論付けられ、LCBがまだ存在していないからには、そのデータ・アイテムについてのロックを有するトランザクションは他にないと容易に判断されるため、リクエストされているロックは無条件に許可されるであろう。このようにしてグローバルデータベースに関係する第一レベルのLCBチェーンへのLCBの挿入がなされる。ステップ530の後、ステップ532で前記リクエストを許可し、許可されたリクエストに対応するLRBを創出する。
【0123】
あるいは、もしステップ522で、RIDのためのLCBがグローバルデータベース中に存在すると判断されれば、ステップ524に進み、正しいデータベースあるいはサブデータベースが見出されるまで「Next Level LCB」に従う。ステップ524を行なう回数はゼロ回であってもよい。よってグローバルデータベース中の資源に対するリクエストがもしあっても、目下見られているLCBが所望の、あるいは正しいLCBであるかどうかを即座に見出すことができ、よって、このLCBでストップして先に進まないことができる。次に、ステップ526では、競合しているロックが存在するかどうかを判断する。これはそのデータ・アイテムに対してすでに許可されているかもしれない既存のロックのいずれとも前記リクエストが適合する(compatible)かどうかを判断することによって容易に行なうことができる。もしステップ526で競合しているロックが存在すると判断されればステップ528に進み、リクエストは待ち状態(queued)とされるかあるいは拒絶される。システムには待ち時間を設定することができ、既存のロックをリリースしてロックマネージャが後でリクエストされたロックを許可してよい時がきたかどうかを再考することができるようにもできる。あるいは、ステップ528において、リクエストされたロックは単純に拒絶されるようにしても良い;これは単にこの問題をどのように取り扱うかに関する設計上の選択事項である。すぐリクエストを拒絶すればハンギングを防止でき、また所望のロックへのアクセスを得られるかもしれないとの希望をもって不特定時間の間待つという問題をなくすることができる。
【0124】
ステップ526で競合するロックが存在しないと判定された場合、ステップ532に進み、ここで適切に資源や関連するデータのロッキングを指摘するためにリクエストを許可しそのリクエストに関係するLRBを創出する。
【0125】
図18と同様に図19も、ネスト化データベースの存在下で如何にロックリクエストは取り扱われるかを示すが、図19は、各データベースあるいはサブデータベース制御ブロックがそれ自身のサーチテーブルを有している図11及び図12のデータ構造に関するものである。図19では、スタート後、問題のデータベースのためのLCBサーチテーブルが見いだされる。これは、ロックリクエストによって特定されるデータベースのDBCBからサーチテーブルリファレンスに従うことによって行なうことができる。次に、ステップ536において、RIDのためのハッシュテーブル・スロットが見出される(もし本態様に関してそのようなデータ構造が存在するならば)。別の方法として、ハッシュテーブルを持つことを避けたいのであれば、本実施態様はLCBの表示や割り当てをより直接的に行なうようにしてもよい。次に、ステップ538で、RID用のLCBが既に存在するかどうかを判断する。
【0126】
もしLCBが存在しないなら、ステップ537に進み、リクエストがグローバルデータベース中の資源のためのものであるかどうかを判断する。その場合、ステップ544へ進む。しかしながら、もし前記リクエストが或るサブデータベース中の資源のためのものであってその資源のためのLCBがそのサブデータベースのサーチテーブルに存在しないなら、トランザクションがリクエストしているものはそのコンテキストデータベースの範囲から外れる何らかのものであることになるので、特殊な状態であることになる。通常、そのようなリクエストは拒絶される(ステップ539の「NO」の枝で示される)。しかしながら、システムのプラグラミング次第ではその時にリクエストされた資源を動的に持ち込む可能性(即ち問題のサブデータベースを動的に成長される可能性)を、サブデータベースの成長が許容されるべきかどうかを決定するステップ539の質問によって開いておくことができるであろう。そのような判断は人間の介入によってでもよらなくても行なうことができるであろう。ステップ539における答えがイエスであるときは、ステップ544に進む。必要に応じて、図18のフローチャートを修正し、図19のステップ522と530の間にステップ537と539を挿入することができる。これによって、ステップ537及び539の機能性が図18のプロセスにおいて達成される。
【0127】
ステップ538において、もしRID用のLCBが既に存在すると判断されるならば、ステップ540に進み、競合するロックが存在するかどうかを判定する。もし競合するが存在するなら、図18のステップ528に関して説明したように、ロックリクエストが待ちの状態(queued)にされるかあるいは拒絶される。もし競合するロックが存在しないなら、ステップ546に進み、上述のようにロックのリクエストが許可されLRBが作出される。図19のプロセスはそこで終了する。
【0128】
図20は、サブデータベースの終了時に実行されるステップを示すフローチャートである。スタート後、ステップ550 は、このデータベースのトランザクション又はサブデータベースが存在するか否かを判定する。ステップ550 の問い合わせの何れかに対する答えがYESの場合、流れはステップ552 に進み、このプロセスを継続するリクエストがあるか否かを問い合わせる。ステップ552 の判定ブロックは任意の要求される方法で行うことができ、ユーザがサブデータベースを終了することをまだ望んでいるか否かシステムのユーザに問い合わせた後におけるユーザの手動判定であってもよい。
【0129】
或いは、サブデータベースを終了することを受け入れられるか否かを示す自動判定であってもよい。このデータベースのトランザクション又はサブトランザクションが存在するためにサブデータベースを保存することが望まれる場合には、問題となっているデータは保存することが望まれているので、流れはステップ552 からエンドへ進行する。ステップ552 の継続的な判定は予めプログラムできる、即ちコンピュータプーグラム判定であり、手操作による判定であっもよい。ステップ552 において終了を継続する要求がある場合、ステップ554 が実行され、本データベースの全てのサブデータベースとトランザクションが終了される。この終了は、再帰(recursion)の他の例である。何故なら、ステップ554 のアクションを実行することにより、テップ554 で終了されるアイテムのために図20のフローチャートが再度実行されるからである。
【0130】
問題となっているデータベースについてのトランザクション又はサブデータベースが存在しないとステップ550 で判定された場合、又はステップ554 の実行の後にステップ556 が実行された場合、問題となっているデータベースについての全ての LCBの割当てが解除される。このステップ556 の割当て解除は安全に行うことができる。何故なら、LRB 及びこれらのLCB に依存するトランザクション又はサブデータベースが存在しておらず、それらを除去、即ち割当て解除する(例えば、コンピュータのメモリからそれらを削除する)ことが可能であるためである。次に、ステップ558 が実行され、サーチテーブルが使用されている場合には、サーチテーブルの割当てを解除される。なお、場合によっては、割当て解除すべきサーチテーブルが存在しない場合があり、この場合、ステップ558 を実行する必要はない。最後に、ステップ560 が実行されて、問題となっているデータベースのための DBCB の割当てが解除され、ステップ560 が一旦実行されると、通常は、このサブデータベース専用に設けられたコンピュータメモリ内にデータ構造が存在しなくなり、サブデータベースが存続を停止する。図20のプロセスはその後終了する。
【0131】
本発明の可能なアプリケーション、結果、及び特徴をより簡単に分かるようにするため、本発明ができることの例を図21(a)〜図21(d)を参照して説明する。本例は、ドキュメントを共用する例であるが、本発明は多くのアプリケーションを有し、複数のユーザの間でデータを共有したいという希望がある如何なる状況においても使用できる。更に、本発明は、一つのドキュメントの一部をユーザの間で共有し、複数のユーザが単一のドキュメントに対して同時に作業するために用いることもできる。本例では、各ユーザのために単一のスクリーン、即ちコンピュータ・ディスプレイが提供され、ユーザが利用できるドキュメント又ははデータ・アイテムの各々が画面上に示される。しかしながら、これは例示に過ぎず、実際には、問題としているデータ・アイテムの各々を単一のコンピュータスクリーンに表示する要求も必要性もない。図21(a)を参照すると、4つのドキュメント、即ち、ドキュメント1 572 、ドキュメント2 574 、ドキュメント3 576 、ドキュメント4 578 を有するゲールのコンピュータスクリーン570 が示されている。この図21(a)のスクリーン570 において、ゲールは書込みロックドキュメント1 、2 、3 、4 を有し、ゲールはこれらのドキュメントの内容を読んだり書いたりできる。図21(a)〜21(d)の例の実施を示すデータ構造に関して以下に説明するように、ゲールはグローバルデータベース内にトップレベルのトランザクションを有している。
【0132】
図21(b)では、ゲールはサブデータベースを作成し、論理的に言えば、ドキュメント2 、3 、4 をこのサブデータベースに引き入れた。これにより、これらのドキュメントは、各ドキュメントの右上の角において”R/O” で指定されているように、読出専用になる。
【0133】
図21(c)に、ゲールのためのスクリーンショット570 が示されており、又、ブライアンは自分のスクリーン580 に示されているように、ドキュメント2 582 及びドキュメント4 584 に対して作業できるようになっていることを示している。
【0134】
図21(c)において、ブライアンはゲールのサブデータベース内でトランザクションを開始し、書込みロックドキュメント2 及び4 を有している。これにより、ブライアンは、これらのドキュメントに対してフルエディットを行うことができるようになり、一方、ゲールは、暫くの間、ブライアンの管理下にあるドキュメント2 及び4 に対して書込みを行うことができない。しかし、必要であれば、ゲールがそれらを読み出し、ブライアンが行っている作業を観察することができる。
【0135】
図21(d)に、ゲールのスクリーン570 とブライアンのスクリーン580 を見ることができるが、更に、アンヌがスクリーン590 を有しており、このスクリーン590 には、読出専用ドキュメントであるドキュメント2 592 とドキュメント3 594 が示されている。図21(d)のシナリオでは、アンヌがゲールのサブデータベース内でトランザクションを開始した。彼女はドキュメント2 について読出しロックを、ドキュメント3 について書込みロックを有しており、アンヌはドキュメント3 だけを変更できる。
【0136】
なお、図21(d)において、ブライアンはドキュメント2 582 について書込みロックを有し、一方、アンヌはドキュメント2 について読出しロックを有している。従来のシステムでは、通常、ブライアンの書込みロックとアンヌの読出しロックは矛盾する。アンヌがブライアンの作業を見られるようにするために、パラメータ化ロック又はその他の機構を用いることができる。したがって、本発明の中核、即ちネスト化データベースをパラメータ化ロックと組み合わせて、システムの能力を更に高めることができる。
【0137】
図21(a)及び21(d)の例が存在するシナリオを実施するために、例示的データ構造を図22(a)〜22(d)及び23(a)〜23(d)にそれぞれ示す。これらの図面は、サブデータベース及びデータの共有がどのように起きるかを示している。図22(a)〜22(d)は、図21(a)〜21(d)の例を実施するために用いられるデータ構造の最初の例を示す。図22(a)では、ゲールはトランザクション制御ブロック(TCB)600を有している。又、ドキュメント1−4 のそれぞれのためにロック制御ブロック(LCB) が設けられ、これらは160−1 〜160−4 の番号が付けられている。ドキュメントのロッキングを実施するために、各LCB に関連してロックリクエストブロック(LRB)162−1〜162−4 が使用される。図22(a)の各LCB 160 はグローバルデータベース192 (実際にはグローバルデータベース制御ブロック)を参照し、これにより、ゲールは、グローバルデータベース内でトップレベルのトランザクションを有していることを表す。ゲールのトップレベルのトランザクションであるTCB 600 については、ドキュメント1−4 の各々についてフルエディットの能力がある。
【0138】
これらのドキュメントのためのLCB 及びデータ自体は、グローバルデータベースの一部であるか関連しているものと考えなければならない。
【0139】
図21(b)に対応する図22(b)においては、ゲールはサブデータベースを作成し、論理的に言えば、ドキュメント2 、3 、4 をサブデータベースに移動させる。サブデータベースは、ゲールが他の人を招き入れて共同作業するために作られる。ゲールはサブデータベースを作成しているので、追加のデータ構造が図22(b)に示されている。特に、ドキュメント2 、3 、4 はサブデータベースの一部であるので、第二レベルのLCB (SLCBとも呼ばれる) がドキュメント2 、3 、4 のために作られ、符号 164−2、164−4 、164−1 によってそれぞれ表されている。これらの SLCB がゲールのサブデータベース制御ブロック(DBCB)602 を参照しているのが分かる。ゲールはドキュメント1 を彼女のサブデータベースに移していないため、ドキュメント1 のための第二レベルのLCB 又はSLCBは存在しない。従って、この時点では、ドキュメント1 だけが、ゲールが編集できるドキュメントであり、他のドキュメントは閲覧だけが可能である。他のドキュメントが異なるサブデータベースに移動されたために、ゲールはドキュメント1 だけを編集できることをデータ構造が表すようにするため、ゲールのサブデータベースへ移動されたドキュメントのためのLRB のモードフィールドが、ロックについてのドキュメントに関連する能力を示すために変更される。図22(b)では、ゲールのサブデータベース内にアクティブなトランザクションは存在していない。更に、図22(b)では、ゲールのTCB のためのコンテキストデータベースはグローバルデータベース 192に残っており、ゲールのサブデータベースはゲールのトランザクションによって所有されていることを示すためにゲールのサブデータベース DBCB 602 はゲールのTCB 600 を参照する。
【0140】
図22(c)を参照すると、ブライアンは、ゲールのサブデータベース内でトランザクションを開始し、ブライアンのトランザクションは、図22(c)の右上部のブライアンのTCB 604 によって表されている。この特定の例では、ブライアンのトランザクションはドキュメント2 、3 、4 のみをアクセスできる。何故なら、ゲールのサブデータベースのドキュメント内、これらに対してのみブライアンのトランザクションがアクセス許可を有しているからである。しかしながら、本発明の或る実施形態では、別のユーザ、例えばブライアンがサブデータベース内でトランザクションを開始した後であっても、ゲールが、更なるドキュメントを追加することにより、彼女のデータベースを動的に成長させることが可能である。図22(c)では、ブライアンは、書込みロックをドキュメント2 及び4 に設定しており、これらのドキュメントについてのフルエディットの能力を有している。従って、ゲールは、ブライアンがドキュメントに対して何を行っているのかを見ることはできるが、彼女は、彼の行った変更に対して直接変更を加えることはできない。
【0141】
ドキュメント2 及び4 に対して書込みロックを持つことができるブライアンの能力は、ドキュメント2 のためのLRB 162−6 を参照しているドキュメント4 のためのLRB 162−5 へのブライアンのTCB 604 からの破線の矢印、即ちリファレンスによって表されている。又、図22(c)から分かることは、ブライアンのTCB 604 がゲールのサブデータベース(又はDBCB)602 を参照していることであり、これはブライアンのTCB のためのコンテキストデータベースがゲールのサブデータベースであることを示している。
【0142】
図21(d)に示した配置とアクセス能力に対応する図22(d)を参照すると、アンヌはゲールのサブデータベース内で既にトランザクションを開始している。ブライアンのトランザクションと同様、ゲールがより多くのドキュメントを加えることによって彼女のサブデータベースを動的に成長させることを選択していない限り、アンヌのトランザクションは、ドキュメント2 、3 、4 のみをアクセスできる。この時点では、アンヌはドキュメント3 に対して書込みロックを有し、ドキュメント2 に対して読出しロックを有している。この情報は LRB 162−7及びLRB 162−8 によって表される。ドキュメント2 のためのSLCBであるLRB 162−7 は読出しロックを示し、ドキュメント3 のためのLRB 162−8 は書込みロックを示すようにそのモードが設定される。この時点では、アンヌはドキュメント3 のみを編集できるが、彼女はブライアンがドキュメント2 に対して行っている変更を全て見ることができる。必要であれば、アンヌはドキュメント4 も見ることができ、同様に、必要であれば、ブライアンはドキュメント3 を見ることができる。LRB 162−7 及び162−8 の参照に加え、アンヌのTCB 606 は、コンテキストデータベースリファレンスにより、ゲールのサブデータベース602 も参照する。
【0143】
図23(a)〜23(d)は、図11に示したデータ構造を使用して図21(a)〜21(d)の例を実行するようにした代替の実施形態を示す。図21(a)に対応する図23(a)では、問題となっている4つのドキュメントのためのLCB 160−1 〜160−4 があり、各 LCBは対応するLRB 162 を参照している。ゲールのTCB 650 は LRB 162を参照しており、又、ゲールのTCB 650 は、そのコンテキストデータベースがグローバルデータベース192 であることを示している。
【0144】
図21(b)に対応する図23(b)では、ゲールはサブデータベースを作成し、これにより、ゲールのサブデータベースのためのデータベース制御ブロック652 が作成される。ゲールのサブデータベース DBCB 652 はゲールのTCB 650 を参照して、ゲールのサブデータベースがゲールのトランザクションによって所有されていることを示し、又、ゲールのサブデータベース652 はハッシュテーブル、アレー又はその他の構造 654を参照する。この構造654 は、ゲールのサブデータベースの一部である、3つのドキュメントのためのSLCB 164−1、164−2 、164−3 を有している。SLCB 164は、テーブル654 のリファレンス656 、658 、660 によって参照される。
【0145】
図21(c)に対応する図23(c)では、ブライアンのトランザクションが存在するようになり、これがブライアンのTCB 670 として表されている。ブライアンのTCB 670 はゲールのサブデータベース制御ブロック652 を参照し、ブライアンのTCB 670 即ちトランザクションのコンテキストデータベースはゲールのサブデータベース652 であることを示す。ブライアンは、ドキュメント2 及び4 についてのロックを得るが、これらはLRB 160−5及び160−6によって表されている。
【0146】
図21(d)の配置に対応する図23(d)では、アンヌのトランザクションが存在するようになり、ゲールのサブデータベースをそのコンテキストデータベースとして有している。これは、アンヌのTCB 680 のコンテキスト DB リファレンスのゲールのDBCB 652への参照によって示されている。
【0147】
更に、アンヌはドキュメント2 及び3 に対して所定の権利を有しており、これは、ドキュメント2 及び3 のためのLRB 160−7 及び160−8 を参照するアンヌのTCB 680 によってデータ構造内で表される。LRB 160−7 及び160−8 は、アンヌが有しているアクセス能力が読出し専用であるのか書込みもできるのかを示すためにそれらのフィールドをセットする。
【0148】
図21(a)〜23(d)に関して記載した上記の例は、異なるドキュメントのロックと共有に関するものであった。しかし、本発明は、ファイル又はドキュメントレベルでの共有に限定されるものでなく、複数のユーザ等の間で単一のファイル、ドキュメント、設計図等を共有するために利用できるものである。単一のファイルやドキュメントや他のデータ・アイテムを、本明細書で開示したネスト化データベースのフレームワーク内で共有するようにした実施形態を達成することは、ロッキングの細分性(locking granularity)に関連している。即ち、ロッキングデータ構造又はLCB がどの資源を表しているかに関係する。従って、本発明は、例えば、パラブラフレベル、センテンスレベル等、ファイル又はドキュメントのより小さい部分のロッキングを可能にし、更に、個々の単語、文字、又はビット毎にロッキングを行うことを可能にする。
【0149】
更に、ドキュメントプロセシング又はワードプロセシング環境以外では、設計図の異なる部分を CAD/CAM システム又は他のシテスム上で共有できる。
【0150】
図24(a)〜24(d)により提示する例(及び、必要であれば前出の例)では、ブライアンのトランザクションとアンヌのトランザクションは実際にはゲールのトランザクションのサブトランザクションである。従って、ゲール、ブライアン、及びアンヌのトランザクションの各々は、ゲールのトップレベルのトランザクションと同一の細分性でロッキングを行うものととりあえず推定される。しかしながら、別の方法として、ゲールにセクションレベルでロックさせ、またこれと同時に、ドキュメント又はパラブラフレベルでロックする他のトップレベルのトランザクションを持つことも可能である。
【0151】
多細分性ロッキングの概念は知られているが、本発明では、多細分性ロッキングとネスト化データベースの概念の両方を一緒に用いてもよく、一般にこれらの概念は相互に直交している(例えば、互いに独立している)ものと考えられている。多細分性ロッキングに関しての更なる情報は、以下で参照されている Anfindsenの論文から得ることができるであろう。
【0152】
図24(a)〜24(d)の実施例に戻って、図24(a)にゲールのテキストエディタの例示的なスクリーンイメージ710を示す。問題になっているテキストのドキュメントはセクション1、セクション2、セクション3、セクション4で示される4セクションを有する。図24(a)において、ゲールは図示されたドキュメントの全てのセクションをロックしており、全ドキュメントの完全エディット能力を有する。各セクションにおいて、サンプルテキストが図示されているが、任意の所望のテキストを使用してもよい。
【0153】
図24(b)のスクリーンイメージ720もまたゲールのテキストエディタを示しているが、しかしこのイメージでは、ゲールはセクション2、3、4をサブデータベースに委託(delegated)してしまっており、セクション2、3、4を通じて斜線で示されているこれらのセクションは今はゲールのエディタ内でリードオンリーになっている。
【0154】
図24(c)のスクリーンイメージ730は、ブライアンのテキストエディタを示す。図24(c)に関しては、ブライアンはゲールのサブデータベース(そこで作業することがブライアンはゲールによってオーソライズされている)を介してゲールのドキュメントにアクセスした。ブライアンは、セクション2及び4上に書込みロックを問題なくリクエストし、その結果セクション2及び4はブライアンのエディタ内でエディット可能であるが、セクション1及び3はリードオンリーである。なお、ドキュメントのリードオンリーセクションを通じての斜線は、説明の目的だけのためであり、斜線がテキストにかけられているいる必要はない。しかしながら、好ましい一実施形態では、或るセクションはロックされており他のセクションはロックされていないことを示すことが望ましいかもしれない。これは、異なるタイプやロックのモードやアクセス能力に対してテキストの異なる色やテキストのバックグランドを利用することによって達成されるであろう。例えば、一つの色を各個人に割り当てることができ、各セクション又はドキュメントの他の部分は、データ上に書込みロックを有する個人又はグル−プ(entity)に従って色がつけられるであろう。或いは、単一の色がリードオンリーであるドキュメントのセクションを示すために利用されてもよい。
【0155】
最後に、図24(d)にアンヌのテキストエディタを示すスクリーンイメージ740を図示する。
【0156】
アンヌはゲールのサブデータベース(そこで作業することがアンヌはゲールによってオーソライズされている)を介してゲールのドキュメントにアクセスした。アンヌは、セクション3上に書込みロックを問題なくリクエストでき、その結果セクション3はアンヌのエディタ内でエディット可能であるが、セクション1、2、4はリードオンリーである。
【0157】
本発明は、明細書の教示に従ってプログラムされた一以上の従来の汎用ディジタルコンピュータを使用して差し支えなく実施され得ることは、コンピュータ技術の当業者であれば明白であろう。当業者にとっては明白であるように、適切なソフトウエアコーディングが、本開示の教示に基づいて、熟練プログラマーによって容易に用意できる。当業者にはすぐ明白となるように、本発明はまた、特定の集積回路のアプリケーションを用意すること又は従来のコンポーネント回路の適切なネットワークを接続することによって実施されてもよい。更に、本発明は、複数のコンピュータ、計算デバイス、他のタイプのデバイスを使用して実施されてもよい。これらのデバイスは、データ、命令、データのリクエスト、及びデータベースマネジメントシステムの運用に関係する他の任意の情報を伝達するために、如何なるタイプのネットワークを介して接続されてもよい。係るコンピュータネットワークは、必要に応じて、有線ネットワーク、電波、赤外線、又は超音波タイプネットワーク等の無線ネットワークを使用して実施されてもよい。汎用コンピュータの使用の代わりにあるいは追加として、本発明は、パーム・パイロット(Palm Pilot)、インターネットサーバ、特別目的コンピュータ、及び電話ブラウザを含む任意のタイプのインターネットブラウザ等のパーソナルディジタルアシスタントを含む任意のタイプのデバイスを使用して実施されることを含む。
【0158】
本発明は、本発明のプロセスを遂行するようにコンピュータをプログラムするために使用され得る命令を含む記憶媒体であるコンピュータプログラム製品を含む。記憶媒体は、フレキシブルディスク、光ディスク、CD−ROM、光磁気ディスク、ROM、RAM、EPROM、EEPROM、フラッシュメモリ、磁気カードや光カードを含む任意のタイプのディスク、又はハードディスクドライブを含む電子命令を記憶するのに適している任意のタイプの媒体を含むことが出来るが、本発明の記憶媒体はこれに限られるものではない。また、本発明は、本明細書に記載されており、且つこのアプリケーションで論じられる何れかのメモリ又は保存媒体に記憶されてもよいデータ構造を含む。
【0159】
本発明は特定の好ましい実施形態を参照して記載されてきたが、当業者にとっては、本発明の範囲及び精神を逸脱することなしに、種々の変更が可能で同等物が要素の代用になれるということは明白である。例えば、本発明は、一メモリに記憶されたデータ構造を記載しているが、それはそのデータ構造を複数のメモリに記憶するのと同等であろう。更に、本発明は必要に応じて、データ構造を結合することもその範囲に含むものである。
【0160】
本発明は、発明者によって種々の出版物に従前記載されてきた技術及び理論の上に立ってなされた。これらの出版物としては、「Apotram−アプリケーション指向のトランザクションモデル」、理学博士論文、Ole Jorgen Anfindsen、1997年;「ネストされたデータベースによるマルチメディア会議での支持的共同作業」、Ole Jorgen Anfindsen、ノルウェーコンピュータ科学会議議事録−NIK’96、1996、311−322頁;及び「ネストされたデータベースによる工学環境での共同作業サポート」、Ole Jorgen Anfindsen、CEEDAの議事録、1996、Poole、UK、325−330頁、が挙げられ、これらを本明細書の一部を構成するものとしてここに援用する。これらの出版物に引用されている参考文献の各々も同様に本明細書の一部を構成するものとしてここに援用する。これらの出版物中のアプリケーション及び説明の各々は、本発明によって実施されるか、又は本発明と一緒に利用されてもよい。更に、米国特許第5,983,225号及び第6,044,370号を含む本発明者による米国特許を本明細書の一部を構成するものとしてここに援用し、本発明と一緒に使用しても、又は本発明と別個に使用してもよい。
【図面の簡単な説明】
【図1】
図1は、本発明を実施するデータベースマネジメントシステムのブロックダイアグラムである。
【図2】
図2は、サブデータベースに分割される資源について追跡履歴を保持(keeping track)するためのデータ構造を示す。
【図3】
図3は、複数のリンクされたロック制御ブロック及びロックリクエストブロックを示す。
【図4】
図4は、サブデータベース内のデータ・アイテムに関するロックを設けるために用いるサブデータベースロック制御ブロック(SLCB)を含むデータ構造を示す。
【図5】
図5は、各トランザクションが特定のデータベース又はサブデータベースに属することを示す。
【図6】
図6は、この特定の実施態様において、トランザクションがそれ自身のデータベース又はサブデータベース中の資源にのみアクセス可能であることを示す。
【図7】
図7は、データベース制御ブロック(DBCB)データ構造の例示的構成を示す。
【図8】
図8は、トランザクション制御ブロック(TCB)データ構造の例示的構成を示す。
【図9】
図9は、階層中に実現させたサブデータベースの例を示す
【図10】
図10は、アクティブトランザクションフィールドをデータベース制御ブロックに用い、コンテキストデータベースとサブデータベースフィールドとをトランザクション制御ブロックに用いた例を示す。
【図11】
図11は、サブデータベース毎に一サーチテーブルが存在し、且つサーチテーブルがサブデータベースロック制御ブロックへのリファレンスを含む、別の態様を示す。
【図12】
図12は、サブデータベースロック制御ブロックがアレイやテーブル内に含まれている、例示的構成を示す。
【図13】
図13は、データベース制御ブロックとトランザクション制御ブロックとを単一の階層的データ構造アレンジメントとして実現可能であることを示す。
【図14】
図14は、ロック制御ブロックデータ構造の別の構成を示す。
【図15】
図15は、新しいサブデータベースを作出するためのフローチャートである。
【図16】
図16は、ユーザ・データの物理的動きを必要とせずに如何にサブデータベースの要素を構成する(populate)するかを示すフローチャートである。
【図17】
図17は、図11のデータ構造を用いてサブデータベースの要素を構成する(populate)するための別の実施形態を示すフローチャートである。
【図18】
図18は、ネスト化データベースの存在下でのロックリクエストの取り扱いを示すフローチャートである。
【図19】
図19は、ロック制御ブロックが図11の別の構造を有する時の、ネスト化データベースの存在下でのロックリクエストの取り扱いを示すフローチャートの別の態様である。
【図20】
図20は、サブデータベースの使用を終わるために用いるプロセスのフローチャートである。
【図21(a)】
図21(a)〜21(d)は、複数のユーザが単一のデータベースの使用を所望し、サブデータベースにオーガナイズされる4種のワードプロセッシング・ドキュメントをこのデータベースが有している場合の例を示す。
【図21(b)】
図21(a)〜21(d)は、複数のユーザが単一のデータベースの使用を所望し、サブデータベースにオーガナイズされる4種のワードプロセッシング・ドキュメントをこのデータベースが有している場合の例を示す。
【図21(c)】
図21(a)〜21(d)は、複数のユーザが単一のデータベースの使用を所望し、サブデータベースにオーガナイズされる4種のワードプロセッシング・ドキュメントをこのデータベースが有している場合の例を示す。
【図21(d)】
図21(a)〜21(d)は、複数のユーザが単一のデータベースの使用を所望し、サブデータベースにオーガナイズされる4種のワードプロセッシング・ドキュメントをこのデータベースが有している場合の例を示す。
【図22(a)】
図22(a)〜22(d)は、それぞれ図21(a)〜21(d)に対応して、図21(a)〜21(d)の例が実施される際のデータ構造アレンジメントを示す。
【図22(b)】
図22(a)〜22(d)は、それぞれ図21(a)〜21(d)に対応して、図21(a)〜21(d)の例が実施される際のデータ構造アレンジメントを示す。
【図22(c)】
図22(a)〜22(d)は、それぞれ図21(a)〜21(d)に対応して、図21(a)〜21(d)の例が実施される際のデータ構造アレンジメントを示す。
【図22(d)】
図22(a)〜22(d)は、それぞれ図21(a)〜21(d)に対応して、図21(a)〜21(d)の例が実施される際のデータ構造アレンジメントを示す。
【図23(a)】
図23(a)〜23(d)は、それぞれ図21(a)〜21(d)の例に対応するが、各データベースに対してサーチテーブルあるいはアレイが存在するデータ構造アレンジメントを使用する場合を示す。
【図23(b)】
図23(a)〜23(d)は、それぞれ図21(a)〜21(d)の例に対応するが、各データベースに対してサーチテーブルあるいはアレイが存在するデータ構造アレンジメントを使用する場合を示す。
【図23(c)】
図23(a)〜23(d)は、それぞれ図21(a)〜21(d)の例に対応するが、各データベースに対してサーチテーブルあるいはアレイが存在するデータ構造アレンジメントを使用する場合を示す。
【図23(d)】
図23(a)〜23(d)は、それぞれ図21(a)〜21(d)の例に対応するが、各データベースに対してサーチテーブルあるいはアレイが存在するデータ構造アレンジメントを使用する場合を示す。
【図24(a)】
図24(a)〜24(d)は、一ドキュメントの複数セクションが、異なる読出し・書込み能力を有する複数の人々によって、ネスト化データベースを使用することによって共有される場合の例を示す。
【図24(b)】
図24(a)〜24(d)は、一ドキュメントの複数セクションが、異なる読出し・書込み能力を有する複数の人々によって、ネスト化データベースを使用することによって共有される場合の例を示す。
【図24(c)】
図24(a)〜24(d)は、一ドキュメントの複数セクションが、異なる読出し・書込み能力を有する複数の人々によって、ネスト化データベースを使用することによって共有される場合の例を示す。
【図24(d)】
図24(a)〜24(d)は、一ドキュメントの複数セクションが、異なる読出し・書込み能力を有する複数の人々によって、ネスト化データベースを使用することによって共有される場合の例を示す。
【符号の説明】
100 データベースマネジメントシステム(DBMS)
102 トランザクションマネージャ
104 ロックマネージャ
106 データプロセッサ(CPU)
108 トランザクションテーブル
110 ロックテーブル
112 データベース
Claims (72)
- データ処理システムによってアクセスされるためのデータを保存するメモリであって、
トランザクションの情報を含むデータ構造と、
トランザクションのデータのロックの情報を含むデータ構造と、
複数のデータベースについての情報を含む複数のデータ構造と
を含み、前記複数のデータ構造の少なくとも一のもの、データベースデータ構造、が前記トランザクションと前記データとに関連付けられた、複数のデータベースの少なくとも一のものの情報を含む、メモリ。 - データベースデータ構造がトランザクションの情報を含むデータ構造と関連付けられた、請求項1に記載のメモリ。
- データベースデータ構造がトランザクションの情報を含むデータ構造へのレファンレスを含む、請求項2に記載のメモリ。
- トランザクションの情報を含むデータ構造へのリファレンスが、
所有トランザクションへのリファレンスを含む、請求項3に記載のメモリ。 - データベースデータ構造が、トランザクションの情報を含むデータ構造とは異なるデータ構造である、請求項4に記載のメモリ。
- データベースデータ構造が、データベース中でアクティブな少なくとも一トランザクションの表示(indication)を保存するフィールドを有する、請求項1に記載のメモリ。
- トランザクションの情報を含むデータ構造が、データベースデータ構造との関連を示すフィールドを有する、請求項1に記載のメモリ。
- トランザクションの情報を含むデータ構造が、トランザクションの少なくとも一サブデータベースとの関連を示すフィールドを有する、請求項7に記載のメモリ。
- データベースデータ構造との関連を示すフィールドが、コンテキストデータベースとの関連を示す、請求項7に記載のメモリ。
- データベースデータ構造との関連を示すフィールドが、データベースデータ構造へのリファレンスを含む、請求項9に記載のメモリ
- データベースデータ構造との関連を示すフィールドが、データベースデータ構造へのポインタを含む、請求項10に記載のメモリ。
- データベースデータ構造が、トランザクションの情報を含むデータ構造とは異なるデータ構造である、請求項11に記載のメモリ。
- トランザクションの情報を含むデータ構造が、少なくとも一サブデータベースとの関連を示すフィールドを有する、請求項1に記載のメモリ。
- トランザクションの情報を含むデータ構造が、ロックの情報を含むデータ構造と関連付けられたフィールドを有する、請求項1に記載のメモリ。
- ロックの情報を含むデータ構造と関連付けられたフィールドが、ロックの情報を含むデータ構造へのリファレンスを含む、請求項14に記載のメモリ。
- ロックの情報を含むデータ構造が、二以上の分離したデータ構造を有する、請求項15に記載のメモリ。
- 二の分離したデータ構造が、ロック制御ブロック及びロックリクエストブロックを有する、請求項16に記載のメモリ。
- ロックの情報を含むデータ構造へのリファレンスが、ロックリクエストブロックへのリファレンスである、請求項17に記載のメモリ。
- ロックリクエストブロックが、異なるロックリクエストブロックへのリファレンスを含む、請求項18に記載のメモリ。
- データのロックの情報を含むデータ構造が、データベースデータ構造と関連付けられたフィールドを有する、請求項1に記載のメモリ。
- データベースデータ構造と関連付けられたフィールドが、複数のデータベースのうちどのデータベースにロックが属しているかを示す、請求項20に記載のメモリ。
- データベースデータ構造と関連付けられたフィールドが、データベースデータ構造へのリファレンスを含む、請求項21に記載のメモリ。
- データベースデータ構造と関連付けられたフィールドが、データベースデータ構造へのポインタを含む、請求項22に記載のメモリ。
- ロックの情報を含むデータ構造が、二以上の分離したデータ構造を有する、請求項1に記載のメモリ。
- 二の分離したデータ構造が、ロック制御ブロック及びロックリクエストブロックを有する、請求項24に記載のメモリ。
- ロックリクエストブロックが、異なるロックリクエストブロックへのリファレンスを含む、請求項25に記載のメモリ。
- ロックの情報を含むデータ構造が、許可されたロックの情報を保存する一以上のフィールドを有する一データ構造を含む、請求項1に記載のメモリ。
- 許可されたロックの情報を保存する一以上のフィールドが、許可されたロックの情報のビットマップを保存する、請求項27に記載のメモリ。
- トランザクションのデータのロックの情報を含むデータ構造が、該データのロックを異なるデータベースに対する別のデータのロックと関連付けるフィールドを有する、請求項1に記載のメモリ。
- データのロックを異なるデータベースに対する別のデータのロックと関連付けるフィールドによってリファレンスされる、異なるデータベースに対する別のロックの情報を含むデータ構造
を更に含む、請求項29に記載のメモリ。 - データのロックの情報を含むデータ構造が、ロックに関連付けられたデータベースの表示(indication)を有する、請求項1に記載のメモリ。
- データのロックの情報を含むデータ構造が、ロックに関連付けられたデータベースへのリファレンスを含み、該リファレンスはロックに関連付けられたデータベースの表示(indication)である、請求項31に記載のメモリ。
- ロックに関連付けられたデータベースへのリファレンスがポインタを含む、請求項32に記載のメモリ。
- データのロックの情報を含むデータ構造との関連を示す情報を含むサーチ用データ構造を更に有する、請求項1に記載のメモリ。
- サーチ用データ構造が、前記関連であるロックの情報を含むデータ構造へのリファレンスを含む、請求項34に記載のメモリ。
- サーチ用データ構造が、前記リファレンスであるロックの情報を含むデータ構造へのポインタを含む、請求項35に記載のメモリ。
- 前記サーチ用データ構造がハッシュテーブルを含む、請求項34に記載のメモリ。
- 前記サーチ用データ構造がアレイ(array)を含む、請求項34に記載のメモリ。
- 前記サーチ用データ構造がテーブルを含む、請求項34に記載のメモリ。
- 前記データベースデータ構造が、前記サーチ用データ構造へのリファレンスを含む、請求項34に記載のメモリ。
- 前記サーチ用データ構造と異なる第二のサーチ用データ構造と、
前記第二のサーチ用データ構造をリファレンスする第二のデータベースデータ構造と
を更に含む、請求項40に記載のメモリ。 - サーチ用データ構造の中にロックの情報を含むデータ構造が含まれる、請求項34に記載のメモリ。
- トランザクションの情報を含むデータ構造と、データ構造と、データベースデータ構造とが同じ階層に含まれる、請求項1に記載のメモリ。
- トランザクションに関連付けられた他のデータ構造及び複数のデータベース構造をリファレンスするトランザクションに関連付けられたデータ構造と、
トランザクションの情報を含むデータ構造の一以上をリファレンスする複数のデータベース構造と
を更に含む、請求項43に記載のメモリ。 - トランザクションの情報を含むデータ構造と、トランザクションのデータのロックの情報を含むデータ構造と、データベースデータ構造とが異なるデータ構造である、請求項1に記載のメモリ。
- データ・アイテムがロックされていることを表示する方法であって、
第一の階層レベルにおいて、第一の階層レベルに関連付けられた第一のトランザクションによってデータ・アイテムがロックされたことを表示するデータ構造を作成する段階と、
第二の階層レベルにおいて、第二の階層レベルに関連付けられた第二のトランザクションによってデータ・アイテムがロックされたことを表示するデータ構造を作成する段階と
を含む方法。 - 第一の階層レベルにおいて作成されたデータ構造と第二の階層レベルにおいて作成されたデータ構造との間に関連を作成する段階
を更に含む、請求項46に記載の方法。 - 関連を作成する段階が、第一の階層レベルにおいて作成されたデータ構造のフィールドに、第二の階層レベルにおいて作成されたデータ構造をリファレンスするリファレンスを作成する段階
を含む、請求項47に記載の方法。 - 第二の階層レベルにおいてデータ構造を作成する段階が、
データ構造を第二の階層レベルにおいて作成して、第二の階層レベルに関連付けられたデータベースへのリファレンスを含める段階
を含む、請求項46に記載の方法。 - 第一の階層レベルにおいてデータ構造を作成する段階が、
第一の階層レベルにおけるデータ構造を、第一の階層レベルにおけるデータ構造が第二の階層レベルに関連付けられたデータベースへのリファレンスを含まないように作成する段階
を含む、請求項49に記載の方法。 - 第一の階層レベルにおいてデータ構造を作成する段階が、
第一の階層レベルにデータ構造を、第一の階層レベルにおけるデータ構造が第一の階層レベルに関連付けられたデータベースへとの関連を含むように作成する段階
を含む、請求項49に記載の方法。 - データ・アイテムに対するロックが存在するか否かを判断する方法であって、次の各ステップ、
(a) データ・アイテムに対するロックが第一の階層レベルに存在するか否かを判断する段階と、
(b) ステップ(a)でデータ・アイテムに対するロックが存在しないと判断された場合に、第一の階層レベルにおけるデータ・アイテムに対するロックを作成する段階と、
(c) ステップ(a)でデータ・アイテムに対するロックが存在しないと判断された場合に、データ・アイテムに対するロックが第二の階層レベルに存在するか否かを判断する段階と、
(d) データ・アイテムに対するロックが第二の階層レベルに存在しない場合に、データ・アイテムに対するロックを作成する段階と
を含む方法。 - 前記作成するステップ(b)が、
(b+1) ロックを示す第一の階層レベルにおけるデータ構造を作成する段階を含む、請求項52に記載の方法。 - 前記ステップ(b)が、
(b+2) サーチデータ構造からロックを示す第一の階層レベルにおけるデータ構造までのリファレンスを作成する段階を更に含む、請求項53に記載の方法。 - データ・アイテムがロックされていることを表示するシステムであって、
第一の階層レベルにおいて、第一の階層レベルに関連付けられた第一のトランザクションによってデータ・アイテムがロックされたことを表示するデータ構造を作成する手段と、
第二の階層レベルにおいて、第二の階層レベルに関連付けられた第二のトランザクションによってデータ・アイテムがロックされたことを表示するデータ構造を作成する手段と
を含むシステム。 - 第一の階層レベルにおいて作成されたデータ構造と第二の階層レベルにおいて作成されたデータ構造との間に関連を作成する手段
を更に含む、請求項55に記載のシステム。 - 関連を作成する手段が、第一の階層レベルにおいて作成されたデータ構造のフィールドに、第二の階層レベルにおいて作成されたデータ構造をリファレンスするリファレンスを作成する手段
を含む、請求項56に記載のシステム。 - 第二の階層レベルにおいてデータ構造を作成する手段が、
データ構造を第二の階層レベルにおいて作成して、第二の階層レベルに関連付けられたデータベースへのリファレンスを含める手段
を含む、請求項55に記載のシステム。 - 第一の階層レベルにおいてデータ構造を作成する手段が、
第一の階層レベルにおけるデータ構造を、第一の階層レベルにおけるデータ構造が第二の階層レベルに関連付けられたデータベースへのリファレンスを含まないように作成する手段
を含む、請求項58に記載のシステム。 - 第一の階層レベルにおいてデータ構造を作成する手段が、
第一の階層レベルにデータ構造を、第一の階層レベルにおけるデータ構造が第一の階層レベルに関連付けられたデータベースへとの関連を含むように作成する手段
を含む、請求項58に記載のシステム。 - データ・アイテムに対するロックが存在するか否かを判断するシステムであって、次の各手段、
データ・アイテムに対するロックが第一の階層レベルに存在するか否かを判断する手段と、
データ・アイテムに対するロックが第一の階層レベルに存在するか否かを判断する手段が、データ・アイテムに対するロックが存在しないと判断した場合に、第一の階層レベルにおけるデータ・アイテムに対するロックを作成する手段と、
データ・アイテムに対するロックが第一の階層レベルに存在するか否かを判断する手段が、データ・アイテムに対するロックが存在しないと判断した場合に、データ・アイテムに対するロックが第二の階層レベルに存在するか否かを判断する手段と、
データ・アイテムに対するロックが第二の階層レベルに存在しない場合に、データ・アイテムに対するロックを作成する手段と
を含むシステム。 - 前記データ・アイテムに対するロックが第一の階層レベルに存在するか否かを判断する手段が、
ロックを示す第一の階層レベルにおけるデータ構造を作成する手段
を含む、請求項61に記載のシステム。 - 前記データ・アイテムに対するロックが第一の階層レベルに存在するか否かを判断する手段が、
サーチデータ構造からロックを示す第一の階層レベルにおけるデータ構造までのリファレンスを作成する手段
を含む、請求項62に記載のシステム。 - データ・アイテムがロックされていることを表示するコンピュータ・リーダブル・プログラムコード手段を含むコンピュータプログラム製品であって、
第一の階層レベルにおいて、第一の階層レベルに関連付けられた第一のトランザクションによってデータ・アイテムがロックされたことを表示するデータ構造を作成する手段と、
第二の階層レベルにおいて、第二の階層レベルに関連付けられた第二のトランザクションによってデータ・アイテムがロックされたことを表示するデータ構造を作成する手段と
を含むコンピュータプログラム製品。 - 第一の階層レベルにおいて作成されたデータ構造と第二の階層レベルにおいて作成されたデータ構造との間に関連を作成する手段
を更に含む、請求項64に記載のコンピュータプログラム製品。 - 関連を作成する手段が、第一の階層レベルにおいて作成されたデータ構造のフィールドに、第二の階層レベルにおいて作成されたデータ構造をリファレンスするリファレンスを作成する手段
を含む、請求項65に記載のコンピュータプログラム製品。 - 第二の階層レベルにおいてデータ構造を作成する手段が、
データ構造を第二の階層レベルにおいて作成して、第二の階層レベルに関連付けられたデータベースへのリファレンスを含める手段
を含む、請求項64に記載のコンピュータプログラム製品。 - 第一の階層レベルにおいてデータ構造を作成する手段が、
第一の階層レベルにおけるデータ構造を、第一の階層レベルにおけるデータ構造が第二の階層レベルに関連付けられたデータベースへのリファレンスを含まないように作成する手段
を含む、請求項67に記載のコンピュータプログラム製品。 - 第一の階層レベルにおいてデータ構造を作成する手段が、
第一の階層レベルにデータ構造を、第一の階層レベルにおけるデータ構造が第一の階層レベルに関連付けられたデータベースへとの関連を含むように作成する手段
を含む、請求項67に記載のコンピュータプログラム製品。 - データ・アイテムに対するロックが存在するか否かを判断するコンピュータ・リーダブル・プログラムコード手段を含むコンピュータプログラム製品であって、次の各手段、
データ・アイテムに対するロックが第一の階層レベルに存在するか否かを判断する手段と、
データ・アイテムに対するロックが第一の階層レベルに存在するか否かを判断する手段が、データ・アイテムに対するロックが存在しないと判断した場合に、第一の階層レベルにおけるデータ・アイテムに対するロックを作成する手段と、
データ・アイテムに対するロックが第一の階層レベルに存在するか否かを判断する手段が、データ・アイテムに対するロックが存在しないと判断した場合に、データ・アイテムに対するロックが第二の階層レベルに存在するか否かを判断する手段と、
データ・アイテムに対するロックが第二の階層レベルに存在しない場合に、データ・アイテムに対するロックを作成する手段と
を含むコンピュータプログラム製品。 - 前記データ・アイテムに対するロックが第一の階層レベルに存在するか否かを判断する手段が、
ロックを示す第一の階層レベルにおけるデータ構造を作成する手段
を含む、請求項70に記載のコンピュータプログラム製品。 - 前記データ・アイテムに対するロックが第一の階層レベルに存在するか否かを判断する手段が、
サーチデータ構造からロックを示す第一の階層レベルにおけるデータ構造までのリファレンスを作成する手段
を含む、請求項71に記載のコンピュータプログラム製品。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/628,728 US6751617B1 (en) | 1999-07-12 | 2000-07-28 | Method, system, and data structures for implementing nested databases |
PCT/NO2001/000304 WO2002010978A2 (en) | 2000-07-28 | 2001-07-16 | Method, system and data structures for implementing nested databases |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004505380A true JP2004505380A (ja) | 2004-02-19 |
Family
ID=24520055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002515631A Pending JP2004505380A (ja) | 2000-07-28 | 2001-07-16 | ネスト化データベースを実行するための方法、システム及びデータ構造 |
Country Status (10)
Country | Link |
---|---|
EP (1) | EP1323071A2 (ja) |
JP (1) | JP2004505380A (ja) |
KR (1) | KR20030047996A (ja) |
CN (1) | CN1539110A (ja) |
AU (2) | AU7286301A (ja) |
BR (1) | BR0112967A (ja) |
CA (1) | CA2416909A1 (ja) |
MX (1) | MXPA03000756A (ja) |
RU (1) | RU2003105686A (ja) |
WO (1) | WO2002010978A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009526324A (ja) * | 2006-02-10 | 2009-07-16 | オラクル・インターナショナル・コーポレイション | ロックによって管理されるリソースに対する予測的変更 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040044648A1 (en) * | 2002-06-24 | 2004-03-04 | Xmyphonic System As | Method for data-centric collaboration |
US7899999B2 (en) * | 2007-06-27 | 2011-03-01 | Microsoft Corporation | Handling falsely doomed parents of nested transactions |
US7890472B2 (en) * | 2007-09-18 | 2011-02-15 | Microsoft Corporation | Parallel nested transactions in transactional memory |
CN101650646B (zh) * | 2009-09-22 | 2012-02-08 | 杭州华三通信技术有限公司 | 一种共享数据一致性的实现方法及装置 |
US9760584B2 (en) * | 2012-03-16 | 2017-09-12 | Oracle International Corporation | Systems and methods for supporting inline delegation of middle-tier transaction logs to database |
CN104572077B (zh) * | 2014-12-12 | 2018-03-06 | 百度在线网络技术(北京)有限公司 | 数据库事务的处理方法及业务系统 |
KR102016417B1 (ko) * | 2016-01-29 | 2019-09-02 | 한국전자통신연구원 | 분산 파일 시스템을 채용한 스토리지 시스템에서 클라이언트 장치와 함께 파일의 분산 잠금을 관리하도록 구성되는 데이터 서버 장치 |
CN111190908B (zh) * | 2018-11-15 | 2023-09-22 | 华为技术有限公司 | 一种数据管理方法、装置及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4965719A (en) * | 1988-02-16 | 1990-10-23 | International Business Machines Corporation | Method for lock management, page coherency, and asynchronous writing of changed pages to shared external store in a distributed computing system |
US5226143A (en) * | 1990-03-14 | 1993-07-06 | International Business Machines Corporation | Multiprocessor system includes operating system for notifying only those cache managers who are holders of shared locks on a designated page by global lock manager |
JP2533266B2 (ja) * | 1991-06-14 | 1996-09-11 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 共用デ―タシステムにおけるデ―タ資源のロッキング方法及びシステム間のデ―タロック管理方法 |
US5983225A (en) * | 1998-01-26 | 1999-11-09 | Telenor As | Parameterized lock management system and method for conditional conflict serializability of transactions |
US6044370A (en) * | 1998-01-26 | 2000-03-28 | Telenor As | Database management system and method for combining meta-data of varying degrees of reliability |
-
2001
- 2001-07-16 CN CNA018135137A patent/CN1539110A/zh active Pending
- 2001-07-16 JP JP2002515631A patent/JP2004505380A/ja active Pending
- 2001-07-16 RU RU2003105686/09A patent/RU2003105686A/ru not_active Application Discontinuation
- 2001-07-16 KR KR10-2003-7001266A patent/KR20030047996A/ko not_active Application Discontinuation
- 2001-07-16 CA CA002416909A patent/CA2416909A1/en not_active Abandoned
- 2001-07-16 MX MXPA03000756A patent/MXPA03000756A/es unknown
- 2001-07-16 AU AU7286301A patent/AU7286301A/xx active Pending
- 2001-07-16 WO PCT/NO2001/000304 patent/WO2002010978A2/en not_active Application Discontinuation
- 2001-07-16 BR BR0112967-8A patent/BR0112967A/pt not_active IP Right Cessation
- 2001-07-16 AU AU2001272863A patent/AU2001272863B2/en not_active Ceased
- 2001-07-16 EP EP01952068A patent/EP1323071A2/en not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009526324A (ja) * | 2006-02-10 | 2009-07-16 | オラクル・インターナショナル・コーポレイション | ロックによって管理されるリソースに対する予測的変更 |
Also Published As
Publication number | Publication date |
---|---|
RU2003105686A (ru) | 2004-06-20 |
KR20030047996A (ko) | 2003-06-18 |
AU7286301A (en) | 2002-02-13 |
EP1323071A2 (en) | 2003-07-02 |
BR0112967A (pt) | 2004-02-25 |
CA2416909A1 (en) | 2002-02-07 |
WO2002010978A9 (en) | 2003-11-06 |
WO2002010978A3 (en) | 2002-08-08 |
WO2002010978A2 (en) | 2002-02-07 |
MXPA03000756A (es) | 2004-11-01 |
CN1539110A (zh) | 2004-10-20 |
AU2001272863B2 (en) | 2004-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6751617B1 (en) | Method, system, and data structures for implementing nested databases | |
US6792432B1 (en) | Database system with methods providing high-concurrency access in B-Tree structures | |
US6606626B1 (en) | Database system with lock manager enhancement for improving concurrency | |
EP1540533B1 (en) | Controlling visibility in multi-version database systems | |
US5448727A (en) | Domain based partitioning and reclustering of relations in object-oriented relational database management systems | |
US5995973A (en) | Storing relationship tables identifying object relationships | |
US7730032B2 (en) | Efficient queriability of version histories in a repository | |
US5983225A (en) | Parameterized lock management system and method for conditional conflict serializability of transactions | |
US5276872A (en) | Concurrency and recovery for index trees with nodal updates using multiple atomic actions by which the trees integrity is preserved during undesired system interruptions | |
US5842196A (en) | Database system with improved methods for updating records | |
US7028057B1 (en) | Versioned relational database system with an optimistic constraint model | |
CA2537411C (en) | A database management system with efficient version control | |
RU2413984C2 (ru) | Системы и способы манипулирования данными в системе хранения данных | |
Lomet et al. | Access method concurrency with recovery | |
Lomet et al. | Concurrency and recovery for index trees | |
US20040225673A1 (en) | Range-clustered tables in a database management system | |
AU2003227293A1 (en) | Database management system and method for conditional conflict serializability of transactions and for combining meta-data of varying degrees of reliability | |
CA2143288A1 (en) | Data storage system with set lists which contain elements associated with parents for defining a logical hierarchy and general record pointers identifying specific data sets | |
Taniar et al. | A taxonomy of indexing schemes for parallel database systems | |
Jordan et al. | Precision locks | |
US7596584B2 (en) | Predicate based group management | |
JP2004505380A (ja) | ネスト化データベースを実行するための方法、システム及びデータ構造 | |
JP4126843B2 (ja) | データ管理方法および装置並びにデータ管理プログラムを格納した記録媒体 | |
AU2001272863A1 (en) | Method, system and data structures for implementing nested databases | |
US7321898B1 (en) | Locking mechanism for materialized views in a database system |