JPH0212460A - 索引木への並列アクセスのためのデータ・アクセス方法およびデータ処理システム - Google Patents
索引木への並列アクセスのためのデータ・アクセス方法およびデータ処理システムInfo
- Publication number
- JPH0212460A JPH0212460A JP1030131A JP3013189A JPH0212460A JP H0212460 A JPH0212460 A JP H0212460A JP 1030131 A JP1030131 A JP 1030131A JP 3013189 A JP3013189 A JP 3013189A JP H0212460 A JPH0212460 A JP H0212460A
- Authority
- JP
- Japan
- Prior art keywords
- node
- key
- tree
- record
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
A、産業上の利用分野
本発明は一般にデータ処理の方法及び装置に関し、具体
的には、実施例に示すように、レコードのデータベース
管理の方法及び装置に関する。
的には、実施例に示すように、レコードのデータベース
管理の方法及び装置に関する。
B、従来技術
データベース管理システムまたはトランザクション処理
システムは、従来技術で周知である。これらのシステム
は、一般に複数のデータ・レコードを含むデータベース
・テーブルに迅速にアクセスするために利用される。リ
レーショナル・トランザクション処理システムは、一般
にあるデータベース・テーブルの要素が別のデータベー
ス・テーブル中の要素と関連づけられている、複数のデ
ータベース・テーブルに対するアクセスを提供する。
システムは、従来技術で周知である。これらのシステム
は、一般に複数のデータ・レコードを含むデータベース
・テーブルに迅速にアクセスするために利用される。リ
レーショナル・トランザクション処理システムは、一般
にあるデータベース・テーブルの要素が別のデータベー
ス・テーブル中の要素と関連づけられている、複数のデ
ータベース・テーブルに対するアクセスを提供する。
リレーショナル・データベースは、ユーザが1つまたは
複数の特定の要素またはフィールドを用いて、複数のデ
ータベース・テーブルに含まれるデータを探索、アクセ
ス及び変更することを可能にする。
複数の特定の要素またはフィールドを用いて、複数のデ
ータベース・テーブルに含まれるデータを探索、アクセ
ス及び変更することを可能にする。
こうしたすべてのデータベース俸システムの1つの重要
な特徴は、各データベース中の個々のレコードに対する
迅速で効率のよいアクセスを提供できることである。近
年、同時に複数のユーザによるデータベースの利用をサ
ポートするデータベース管理システムが提供され、ユー
ザは特定のデータに同時にアクセスできるようになった
。
な特徴は、各データベース中の個々のレコードに対する
迅速で効率のよいアクセスを提供できることである。近
年、同時に複数のユーザによるデータベースの利用をサ
ポートするデータベース管理システムが提供され、ユー
ザは特定のデータに同時にアクセスできるようになった
。
索引ファイルは、テーブル中のレコードに対する迅速で
効率のよいアクセスを提供するため、データベース管理
プログラムによって一般に使用されている。これらの索
引ファイルは、一般にB木構造として構成されている。
効率のよいアクセスを提供するため、データベース管理
プログラムによって一般に使用されている。これらの索
引ファイルは、一般にB木構造として構成されている。
B木について論じた参照文献には、レーマン(Lehm
an)及びヤオ(Yao)の論文「B本土での並行動作
のための効率的なロック(Efficient Loc
king for ConcurrentOperat
ion on B−Tree) J 、A CMデータ
ベース。
an)及びヤオ(Yao)の論文「B本土での並行動作
のための効率的なロック(Efficient Loc
king for ConcurrentOperat
ion on B−Tree) J 、A CMデータ
ベース。
システム紀要(ACM Transactions o
n DatabaseSystems) 、V o l
、 6、No、 4.1981年12月、pp、65
0−670がある。B木構造を対象とする他の文献は、
コーメル(Comer )の論文「遍在するB木(Th
e Ubiquitous B−Tree) J、Co
mputing 5urveysXV o 1 、 1
1、No、2.1979年6月、pp、121−137
;及びサギーブ(Sagiv) 、r追越しを伴うB本
土の並行動作(Concurrent 0perati
on on B−Trees withOver Ta
king) J Nデータベース・システム原理に関す
るACM SIGACT−8IGMODシンポジウム
発表要旨集、1985年3月、pp。
n DatabaseSystems) 、V o l
、 6、No、 4.1981年12月、pp、65
0−670がある。B木構造を対象とする他の文献は、
コーメル(Comer )の論文「遍在するB木(Th
e Ubiquitous B−Tree) J、Co
mputing 5urveysXV o 1 、 1
1、No、2.1979年6月、pp、121−137
;及びサギーブ(Sagiv) 、r追越しを伴うB本
土の並行動作(Concurrent 0perati
on on B−Trees withOver Ta
king) J Nデータベース・システム原理に関す
るACM SIGACT−8IGMODシンポジウム
発表要旨集、1985年3月、pp。
28−37である。
B木構造として構成された索引ファイルは、ルート・ノ
ードから構成され、ルート・ノードから多数のレベルの
7−ドが枝別れしている。これらのノードに含まれる情
報には、次のレベルにあるノードを指すポインタまたは
データベース中のレコードを指すポインタがある。これ
らのノードは、データベース中のレコードを参照するキ
ー・レコード情報と呼ばれる他の情報を含む。レコード
・キーは、それらのノード全体を通して順番に並んでい
る。たとえば、従業員名のABC順のリストに対する索
引木が存在する。ルート・ノードは、次のレベルのノー
ドが間接または直接に参照するレコードに関連する参照
キー付きデータを含むことになる。参照キーは、ファイ
ルされた索引、すなわち、従業員名の英字縁りに関する
情報を含む。したがうて、ルート・ノード中の配列され
たキーは、次の後続ノード・レベルを指す。言い替えれ
ば、次の後続ノードは、AlBlCで始まるすべての従
業員名を間接または直接的に参照できる。次の後続ノー
ドは、最初の後続ノードと平行で、姓が文字D−Mで始
まる従業員のレコードを含む。このレベルの最後の後続
ノードは、姓がN−Zで始まる従業員のレコードを参照
することになる。索引ファイル木を探索するとき、最後
には最下層ノードに達する。最下層ノードの内容は、記
憶域中の個々のレコードを指すレコード・キーを含む。
ードから構成され、ルート・ノードから多数のレベルの
7−ドが枝別れしている。これらのノードに含まれる情
報には、次のレベルにあるノードを指すポインタまたは
データベース中のレコードを指すポインタがある。これ
らのノードは、データベース中のレコードを参照するキ
ー・レコード情報と呼ばれる他の情報を含む。レコード
・キーは、それらのノード全体を通して順番に並んでい
る。たとえば、従業員名のABC順のリストに対する索
引木が存在する。ルート・ノードは、次のレベルのノー
ドが間接または直接に参照するレコードに関連する参照
キー付きデータを含むことになる。参照キーは、ファイ
ルされた索引、すなわち、従業員名の英字縁りに関する
情報を含む。したがうて、ルート・ノード中の配列され
たキーは、次の後続ノード・レベルを指す。言い替えれ
ば、次の後続ノードは、AlBlCで始まるすべての従
業員名を間接または直接的に参照できる。次の後続ノー
ドは、最初の後続ノードと平行で、姓が文字D−Mで始
まる従業員のレコードを含む。このレベルの最後の後続
ノードは、姓がN−Zで始まる従業員のレコードを参照
することになる。索引ファイル木を探索するとき、最後
には最下層ノードに達する。最下層ノードの内容は、記
憶域中の個々のレコードを指すレコード・キーを含む。
データベース・テーブルに対する同時アクセスを提供す
る場合、複数のトランザクションが同時に1つのレコー
ドにアクセスしようとするときに問題が起こる。具体的
には、あるユーザがレコードを変更しようとし、別のユ
ーザがこのレコードにアクセスしようとするとき、競合
状況が発生する。競合問題の1つの解決方法は、レコー
ドまたはB木索引の部分に対する排他的アクセス(また
はロッキング)を実現して、ユーザがそれにアクセスし
ようとするとき索引ノードまたはレコードが変更されな
いようにすることである。ロッキングについては、「索
引のロッキング及び分割(Index Locking
and Splitting) J N I 8M
ディスクロージャ・プルテン、vol、25、No。
る場合、複数のトランザクションが同時に1つのレコー
ドにアクセスしようとするときに問題が起こる。具体的
には、あるユーザがレコードを変更しようとし、別のユ
ーザがこのレコードにアクセスしようとするとき、競合
状況が発生する。競合問題の1つの解決方法は、レコー
ドまたはB木索引の部分に対する排他的アクセス(また
はロッキング)を実現して、ユーザがそれにアクセスし
ようとするとき索引ノードまたはレコードが変更されな
いようにすることである。ロッキングについては、「索
引のロッキング及び分割(Index Locking
and Splitting) J N I 8M
ディスクロージャ・プルテン、vol、25、No。
7B11982年12月、1)I)、3725−372
9:及び「B本土の並行動作に対するロッキング・プロ
トコル(Locking Protocols for
Concurrent 0perations on
B−Trees) J N I B Mディスクロージ
ャ・プルテン、VOl、19、No、10.1977年
3月、I)1)、3887−3889で扱われている。
9:及び「B本土の並行動作に対するロッキング・プロ
トコル(Locking Protocols for
Concurrent 0perations on
B−Trees) J N I B Mディスクロージ
ャ・プルテン、VOl、19、No、10.1977年
3月、I)1)、3887−3889で扱われている。
ロッキングによる解決方法の欠点は、ロックが1人のユ
ーザにアクセスを提供している間、他のユーザによるア
クセスを妨げることである。したがって、当業者には明
らかなことだが、利用するロックの数を最小に抑えない
と、システムの並行性を高めることはできない。
ーザにアクセスを提供している間、他のユーザによるア
クセスを妨げることである。したがって、当業者には明
らかなことだが、利用するロックの数を最小に抑えない
と、システムの並行性を高めることはできない。
データ処理システムの他の重要な特徴は、データベース
内に含まれているデータを、回復可能な形で変更させる
ことができることである。すなわち、これらのシステム
は、システムの動作が様々な構成要素の障害によって中
断された場合に、特定のユーザが入力したすべての変更
が持続するか、あるいはそれらがすべて持続されないよ
うにする。
内に含まれているデータを、回復可能な形で変更させる
ことができることである。すなわち、これらのシステム
は、システムの動作が様々な構成要素の障害によって中
断された場合に、特定のユーザが入力したすべての変更
が持続するか、あるいはそれらがすべて持続されないよ
うにする。
同様に、ユーザがデータベースに加えた変更を、特定の
時点に達するまで、そのユーザが取り消すことを要求す
ることもできる。したがって、ユーザによるデータベー
スへの変更は「回復可能」と呼ばれる。この概念は、「
トランザクション」処理方式で動作するデータベース・
システムに組み込まれている。トランザクションとは、
必ずしもシーケンス中のすべての中間点では整合性を維
持することなく、回復可能データベース資源の第1の整
合状態から他の整合状態に変換する一連の動作から構成
される論理的作業単位をいう。トランザクション処理シ
ステムの利用により、トランザクションが回復可能デー
タベースに対しである種の更新を実行し、トランザクシ
ョンがその通常の終了または一時的整合点に達する前に
障害が発生した場合、それらの更新が取り消される。
時点に達するまで、そのユーザが取り消すことを要求す
ることもできる。したがって、ユーザによるデータベー
スへの変更は「回復可能」と呼ばれる。この概念は、「
トランザクション」処理方式で動作するデータベース・
システムに組み込まれている。トランザクションとは、
必ずしもシーケンス中のすべての中間点では整合性を維
持することなく、回復可能データベース資源の第1の整
合状態から他の整合状態に変換する一連の動作から構成
される論理的作業単位をいう。トランザクション処理シ
ステムの利用により、トランザクションが回復可能デー
タベースに対しである種の更新を実行し、トランザクシ
ョンがその通常の終了または一時的整合点に達する前に
障害が発生した場合、それらの更新が取り消される。
トランザクションは、アプリケーションが指定する動作
シーケンスの実行を含んでいるので、システム内でのそ
の存在は、一般に、特殊なrBEGIN WORKJ
動作で開始され、rcOMMITJまたはrABORT
Jで終了する。前述のCOMMIT動作及びABORT
動作は、次のような点でシステム中に原子構造をもたら
す。すなわち、COMMIT動作は、新しい整合点に到
達し、関連するトランザクションによるすべての更新が
永続的にならなければならないことを示す。
シーケンスの実行を含んでいるので、システム内でのそ
の存在は、一般に、特殊なrBEGIN WORKJ
動作で開始され、rcOMMITJまたはrABORT
Jで終了する。前述のCOMMIT動作及びABORT
動作は、次のような点でシステム中に原子構造をもたら
す。すなわち、COMMIT動作は、新しい整合点に到
達し、関連するトランザクションによるすべての更新が
永続的にならなければならないことを示す。
ABORT動作は、障害が発生し、関連する特定のトラ
ンザクションによる変更が「ロール・バック」すなわち
「取り消され」なければならず、回復可能データベース
資源が以前の整合点に戻らなければならないことを示す
。
ンザクションによる変更が「ロール・バック」すなわち
「取り消され」なければならず、回復可能データベース
資源が以前の整合点に戻らなければならないことを示す
。
このトランザクション回復を保証するには、回復可能デ
ータに対する更新動作の効果がシステムの再起動時に適
切に反映されるように、データベース・システムが、シ
ステム障害の間中、進行中のトランザクション及びその
更新動作状態を覚えておくことができなければならない
。これは、安定な記憶域に記憶されたログに各トランザ
クションのその初めから終わりまでの進行状況と、回復
可能データ資源を変更させる動作を記録することによっ
て実行できる。このログは、その後、トランザクション
のコミットされた動作が反映され、その非コミット動作
が取り消されて、データベースが整合性を保つようにす
るための資源になる。トランザクション動作のログがデ
ータ・オブジェクトの内容を反映する場合、これらのロ
グ・レコードは、損傷または失われたデータを再構成す
るための資源にもなる。これらのシステムは一般に、レ
コードがログに書き込まれるとき、各ログ・レコードに
固有のログ順序番号(LSN)を割り当てる。こうした
LSNは一般に昇順で割り当てられる。データベース中
のメモリのページに対する更新の記録が完了すると、そ
の更新に対応するログ・レコードのLSNも通常そのペ
ージに記憶される。
ータに対する更新動作の効果がシステムの再起動時に適
切に反映されるように、データベース・システムが、シ
ステム障害の間中、進行中のトランザクション及びその
更新動作状態を覚えておくことができなければならない
。これは、安定な記憶域に記憶されたログに各トランザ
クションのその初めから終わりまでの進行状況と、回復
可能データ資源を変更させる動作を記録することによっ
て実行できる。このログは、その後、トランザクション
のコミットされた動作が反映され、その非コミット動作
が取り消されて、データベースが整合性を保つようにす
るための資源になる。トランザクション動作のログがデ
ータ・オブジェクトの内容を反映する場合、これらのロ
グ・レコードは、損傷または失われたデータを再構成す
るための資源にもなる。これらのシステムは一般に、レ
コードがログに書き込まれるとき、各ログ・レコードに
固有のログ順序番号(LSN)を割り当てる。こうした
LSNは一般に昇順で割り当てられる。データベース中
のメモリのページに対する更新の記録が完了すると、そ
の更新に対応するログ・レコードのLSNも通常そのペ
ージに記憶される。
上記の形式のシステムは一般に、ログ先行書込みシステ
ムと呼ばれている。ログ先行書込みシステムでは、変更
されたデータ゛の新しいバージョンを持久記憶装置上で
以前のバージョンのデータと置き換える前に、特定の動
作に対応するログ項目を、安定記憶域に物理的に書き込
まなけれはならない。本明細書では、安定記憶域とは、
システム障害の間中も損傷を受けず利用可能なままであ
る持久記憶装置を意味する。こうした例の1つは、磁気
記憶ディスクの利用である。さらに、こうしたシステム
はトランザクション状況をログに記憶し、そのコミット
された状況とそのログ・データすべてが安全に安定記憶
域に記録されるまで、いかなるトランザクションも完了
していないと見なされる。すなわち、システム障害の場
合、首尾よく完了したがシステム障害の前に更新された
資源が安定記憶域に物理的に記憶されるようにはなって
なかったトランザクション内のどの動作も、再起動処理
で回復される。さらに、こうしたシステムでは、そのト
ランザクションのすべてのログ・レコードのすべての部
分が物理ログに書き込まれるまで、トランザクションが
COMMIT処理を完了させることはできない。
ムと呼ばれている。ログ先行書込みシステムでは、変更
されたデータ゛の新しいバージョンを持久記憶装置上で
以前のバージョンのデータと置き換える前に、特定の動
作に対応するログ項目を、安定記憶域に物理的に書き込
まなけれはならない。本明細書では、安定記憶域とは、
システム障害の間中も損傷を受けず利用可能なままであ
る持久記憶装置を意味する。こうした例の1つは、磁気
記憶ディスクの利用である。さらに、こうしたシステム
はトランザクション状況をログに記憶し、そのコミット
された状況とそのログ・データすべてが安全に安定記憶
域に記録されるまで、いかなるトランザクションも完了
していないと見なされる。すなわち、システム障害の場
合、首尾よく完了したがシステム障害の前に更新された
資源が安定記憶域に物理的に記憶されるようにはなって
なかったトランザクション内のどの動作も、再起動処理
で回復される。さらに、こうしたシステムでは、そのト
ランザクションのすべてのログ・レコードのすべての部
分が物理ログに書き込まれるまで、トランザクションが
COMMIT処理を完了させることはできない。
C0発明が解決しようとする問題点
したがって、本発明の目的は、索引木を介してデータベ
ース中のレコードにアクセスする効率の高い方法を提供
することである。
ース中のレコードにアクセスする効率の高い方法を提供
することである。
本発明の他の目的は、索引木を介してデータベース中の
レコードにアクセスする効率の高い方法を提供し、かつ
複数のユーザによるデータベースへの効率の高い並行ア
クセスを提供することである。
レコードにアクセスする効率の高い方法を提供し、かつ
複数のユーザによるデータベースへの効率の高い並行ア
クセスを提供することである。
本発明のさらに他の目的は、木構造の変更によってアク
セスに遅延が起こった場合、もう−回木を走査すること
なく、データにアクセスできる、索引木を介してデータ
ベース中のレコードにアクセスする効率の高い方法を提
供することである。
セスに遅延が起こった場合、もう−回木を走査すること
なく、データにアクセスできる、索引木を介してデータ
ベース中のレコードにアクセスする効率の高い方法を提
供することである。
D0問題点を解決するための手段
上記の目的は、以後に説明する方法で達成される。トラ
ンザクション処理システムの索引木の並行修正のための
方法及び装置が提供される。索引木は、次に下位のレベ
ルにある1つまたは複数のノードに対するキー・レコー
ド参照をもつ少なくとも1つのルート・ノードと、キー
・レコードに対するアクセスを提供する少なくとも1つ
の最下層レコードを含む。構造修正動作を含むトランザ
クションは、索引木を選択されたノードまで走査し、次
いで構造修正動作の保留状態を示す標識をセットするこ
とによって実行される。並行キー・レコードの挿入また
は削除は、保留中の構造修正動作を示す標識がない索引
木で可能であり、保留中の構造修正動作を示す標識があ
る場合には遅延される。同様に、キー・レコード削除を
含むトランザクションでは、そのトランザクションが新
しい整合点に達せず、取り消されなければならない場合
に構造修正動作が必要となる。したがって、いまだ新し
い整合点に達してない各キー・レコード削除の標識がセ
ットされ、並行キー・レコード挿入も構造修正動作の可
能性が完了するまで遅延される。構造修正動作が完了す
ると、構造修正動作を含むトランザクションが新しい整
合点に達したかどうかにかかわらず、システム障害の場
合に構造修正動作の取消しを妨げるログ・レコードが書
き込まれる。本発明の好ましいモードでは、木を2回目
に走査する必要なしにキーの挿入または削除が可能かど
うかを判定するため、遅延の後にローカル・ノードが探
索される。
ンザクション処理システムの索引木の並行修正のための
方法及び装置が提供される。索引木は、次に下位のレベ
ルにある1つまたは複数のノードに対するキー・レコー
ド参照をもつ少なくとも1つのルート・ノードと、キー
・レコードに対するアクセスを提供する少なくとも1つ
の最下層レコードを含む。構造修正動作を含むトランザ
クションは、索引木を選択されたノードまで走査し、次
いで構造修正動作の保留状態を示す標識をセットするこ
とによって実行される。並行キー・レコードの挿入また
は削除は、保留中の構造修正動作を示す標識がない索引
木で可能であり、保留中の構造修正動作を示す標識があ
る場合には遅延される。同様に、キー・レコード削除を
含むトランザクションでは、そのトランザクションが新
しい整合点に達せず、取り消されなければならない場合
に構造修正動作が必要となる。したがって、いまだ新し
い整合点に達してない各キー・レコード削除の標識がセ
ットされ、並行キー・レコード挿入も構造修正動作の可
能性が完了するまで遅延される。構造修正動作が完了す
ると、構造修正動作を含むトランザクションが新しい整
合点に達したかどうかにかかわらず、システム障害の場
合に構造修正動作の取消しを妨げるログ・レコードが書
き込まれる。本発明の好ましいモードでは、木を2回目
に走査する必要なしにキーの挿入または削除が可能かど
うかを判定するため、遅延の後にローカル・ノードが探
索される。
E、実施例
第1図には、本発明による並行アクセス・データベース
・システムの構成図が示しである。図を見るとわかるよ
うに、並行アクセス・データベース・システムは、複数
の対話型ワーク・ステーション10(IWS)をもつ。
・システムの構成図が示しである。図を見るとわかるよ
うに、並行アクセス・データベース・システムは、複数
の対話型ワーク・ステーション10(IWS)をもつ。
これらのワーク・ステーシロンはすべて上位プロセッサ
12に接続されている。上位プロセッサ12は、データ
ベース14に接続されている。当業者には当然のことな
がら、ここではこの特定の実施例を開示するが、ローカ
ル・エリア・ネットワークを介して接続された個々のコ
ンピュータから構成される類似のシステムも利用できる
。図を見るとわかるように、対話型ワーク・ステーショ
ン10の各操作員は、通常上位プロセッサ12内に組み
込まれているデータベース管理システムを用いて、デー
タベース14内に含まれるレコードを探索し、アクセス
し、変更することができる。当業者には当然のことなが
ら、データベース14は通常、索引ファイルを利用する
ことによって検索される。索引ファイルは一般に上記の
ようにB木構造として構成されている。代表的なり木構
造は、少なくとも1つのルート・ノードから構成され、
複数のレベルのノードがルート・ノードから枝分れして
いる。各ノードに含まれる情報は、次の下位レベルにあ
るノードを指すポインタ、あるいは最下層レベルのノー
ドではデータベースに含まれるレコードを指すポインタ
を含む。
12に接続されている。上位プロセッサ12は、データ
ベース14に接続されている。当業者には当然のことな
がら、ここではこの特定の実施例を開示するが、ローカ
ル・エリア・ネットワークを介して接続された個々のコ
ンピュータから構成される類似のシステムも利用できる
。図を見るとわかるように、対話型ワーク・ステーショ
ン10の各操作員は、通常上位プロセッサ12内に組み
込まれているデータベース管理システムを用いて、デー
タベース14内に含まれるレコードを探索し、アクセス
し、変更することができる。当業者には当然のことなが
ら、データベース14は通常、索引ファイルを利用する
ことによって検索される。索引ファイルは一般に上記の
ようにB木構造として構成されている。代表的なり木構
造は、少なくとも1つのルート・ノードから構成され、
複数のレベルのノードがルート・ノードから枝分れして
いる。各ノードに含まれる情報は、次の下位レベルにあ
るノードを指すポインタ、あるいは最下層レベルのノー
ドではデータベースに含まれるレコードを指すポインタ
を含む。
最下層レベルはしばしば、リーフ・ノードと呼ばれる。
第2図では、本発明によるデータベースにおける初期探
索動作を示す論理流れ図を示す。図を見るとわかるよう
に、アクセス・プログラムはステップ100から始まり
、ステップ102に進んで、そこで索引ルート・ノード
がSラッチされアクセスされる。Sラッチは、他の並行
ユーザに制限されたアクセスを提供する。この制限され
たアクセスにより、他のユーザは、ノード内に含まれる
情報にアクセスしてそれを読み取る能力を与えられる。
索動作を示す論理流れ図を示す。図を見るとわかるよう
に、アクセス・プログラムはステップ100から始まり
、ステップ102に進んで、そこで索引ルート・ノード
がSラッチされアクセスされる。Sラッチは、他の並行
ユーザに制限されたアクセスを提供する。この制限され
たアクセスにより、他のユーザは、ノード内に含まれる
情報にアクセスしてそれを読み取る能力を与えられる。
削除や変更の能力など他のアクセスは提供されない。索
引ルート・ノードは、索引の形式を識別し、この例では
レコードにアクセスするための初期方向を提供する。た
とえば、索引ルート・ノードは、索引を複数の名前に対
する昇順のアルファベット順索引として識別することが
できる。ステップ103で、アクセスすべき子ノードが
、親ノードの情報に基づいて識別される。ステップ10
4で示されているように、次に、実行すべき動作が取出
し動作であるかどうかが判定される。動作が取出し動作
でない場合、すなわち、動作がレコード挿入(またはキ
ー・レコード挿入)動作またはレコード削除(またはキ
ー・レコード削除)動作である場合、アクセス・プログ
ラムはステップ106に進み、親ノードの下の次のノー
ドが最下層ノードすなわち「リーフ・ノード」であるか
どうか判定する。次のノードがリーフ・ノードである場
合、プログラムはステップ110に進み、子ノードに対
するXラッチを獲得する。Xラッチは、この特定のノー
ドに対する他のすべてのアクセスを排除する排他的ラッ
チである。問題のノードにXラッチをかけることにより
、プログラムは、他のすべてのトランザクシぼンがこの
特定のノードにアクセスすることを禁止する。
引ルート・ノードは、索引の形式を識別し、この例では
レコードにアクセスするための初期方向を提供する。た
とえば、索引ルート・ノードは、索引を複数の名前に対
する昇順のアルファベット順索引として識別することが
できる。ステップ103で、アクセスすべき子ノードが
、親ノードの情報に基づいて識別される。ステップ10
4で示されているように、次に、実行すべき動作が取出
し動作であるかどうかが判定される。動作が取出し動作
でない場合、すなわち、動作がレコード挿入(またはキ
ー・レコード挿入)動作またはレコード削除(またはキ
ー・レコード削除)動作である場合、アクセス・プログ
ラムはステップ106に進み、親ノードの下の次のノー
ドが最下層ノードすなわち「リーフ・ノード」であるか
どうか判定する。次のノードがリーフ・ノードである場
合、プログラムはステップ110に進み、子ノードに対
するXラッチを獲得する。Xラッチは、この特定のノー
ドに対する他のすべてのアクセスを排除する排他的ラッ
チである。問題のノードにXラッチをかけることにより
、プログラムは、他のすべてのトランザクシぼンがこの
特定のノードにアクセスすることを禁止する。
ステップ104に戻って、動作が取出し動作である場合
、あるいはステップ106に戻って、子ノードがリーフ
・ノードでない場合、アクセス・プログラムはステップ
108に進み、子ノードに対するSラッチを獲得する。
、あるいはステップ106に戻って、子ノードがリーフ
・ノードでない場合、アクセス・プログラムはステップ
108に進み、子ノードに対するSラッチを獲得する。
次に、アクセス・プログラムはステップ112に進み、
探索中のレコードのキーが子ノード中の最上位キーより
も大きいかどうか判定する。もちろん、当業者には当然
のことながら、探索が空のノードに入った場合、探索中
のキーは自動的に子ノード中の最上位キーよりも大きい
と解釈される。探索中のキー・レコードが子ノード中の
最上位キーよりも大きい場合、プログラムはステップ1
14に進み、木索引構造がラッチされているかどうか判
定する。その木がラッチされていない場合、プログラム
は、ステップ118に進み、そこで親ノードと子ノード
がラッチ解除され、木がラッチされる。アクセス・プロ
グラムは、次にステップ118からステップ102に戻
り、木ラッチが許可されるとすぐ動作を再開する。当業
者には当然のことながら、最適化により、動作を再試行
するときにアクセスしなければならないノードの数を減
らすことができる。
探索中のレコードのキーが子ノード中の最上位キーより
も大きいかどうか判定する。もちろん、当業者には当然
のことながら、探索が空のノードに入った場合、探索中
のキーは自動的に子ノード中の最上位キーよりも大きい
と解釈される。探索中のキー・レコードが子ノード中の
最上位キーよりも大きい場合、プログラムはステップ1
14に進み、木索引構造がラッチされているかどうか判
定する。その木がラッチされていない場合、プログラム
は、ステップ118に進み、そこで親ノードと子ノード
がラッチ解除され、木がラッチされる。アクセス・プロ
グラムは、次にステップ118からステップ102に戻
り、木ラッチが許可されるとすぐ動作を再開する。当業
者には当然のことながら、最適化により、動作を再試行
するときにアクセスしなければならないノードの数を減
らすことができる。
この例では、木に対するXラッチは、木構造の変更が行
なわれていることを他のすべてのアクセスに示すために
設けられている。木に対してラッチが試みられていると
きに木のXラッチ・アクセスが進行中である場合、試行
中のアクセスは、以前のアクセスが完了するまで待たな
ければならない。木に対するSラッチは、構造上の変更
は行なわれていないが他のアクセスが同時に索引水にア
クセスしている可能性があることを、他のすべてのアク
セスに示すために設けられる。Sラッチが解除されるま
で、他の変更は行なわれない。SラッチやXラッチの有
無にかかわらず、木の走査は行なえる。こうした木の走
査には、キー・レコードの削除や挿入がある。
なわれていることを他のすべてのアクセスに示すために
設けられている。木に対してラッチが試みられていると
きに木のXラッチ・アクセスが進行中である場合、試行
中のアクセスは、以前のアクセスが完了するまで待たな
ければならない。木に対するSラッチは、構造上の変更
は行なわれていないが他のアクセスが同時に索引水にア
クセスしている可能性があることを、他のすべてのアク
セスに示すために設けられる。Sラッチが解除されるま
で、他の変更は行なわれない。SラッチやXラッチの有
無にかかわらず、木の走査は行なえる。こうした木の走
査には、キー・レコードの削除や挿入がある。
ステップ114で、木がラッチされている場合、あるい
はステップ112で、キーが子ノード内に含まれる最上
位キーよりも大きくない場合、プログラムはステップ1
16に進み、子ノードがリーフ・ノードかどうか判定す
る。子ノードがリーフ・ノードでない場合、プログラム
はステップ116に進み、親ノードのラッチを解除して
、ステップ103に戻る。しかし、子ノードがリーフ・
メートの場合、プログラムはステップ120に進み、親
ノードのラッチを解除し、次いで、ステップ122.1
24及び126に進んで、動作が取出し、挿入、削除動
作かどうか判定する。この実施例では、これら3つの動
作のどれも試みられてない場合、プログラムは、ステッ
プ130に示すようにユーザに戻る。実際には、この帰
還で、実行される動作がこのプログラムでは識別不可能
であることを示すエラー・メツセージが出る。
はステップ112で、キーが子ノード内に含まれる最上
位キーよりも大きくない場合、プログラムはステップ1
16に進み、子ノードがリーフ・ノードかどうか判定す
る。子ノードがリーフ・ノードでない場合、プログラム
はステップ116に進み、親ノードのラッチを解除して
、ステップ103に戻る。しかし、子ノードがリーフ・
メートの場合、プログラムはステップ120に進み、親
ノードのラッチを解除し、次いで、ステップ122.1
24及び126に進んで、動作が取出し、挿入、削除動
作かどうか判定する。この実施例では、これら3つの動
作のどれも試みられてない場合、プログラムは、ステッ
プ130に示すようにユーザに戻る。実際には、この帰
還で、実行される動作がこのプログラムでは識別不可能
であることを示すエラー・メツセージが出る。
実行される動作が取出し動作である場合、アクセス・プ
ログラムは、第3図のステップ200に進む。第3図に
は、本発明によるデータベースにおける取出し動作を示
す論理流れ図が示されている。ステップ200で、プロ
グラムは探索中の要求されたキーまたはデータベース中
の次に上位のキーを見つける。ステップ202で、プロ
グラムは、発見されたキー・レコードに対する条件付き
ロックを要求する。この例では、条件付きロックは、レ
コード・キーに対するロックを管理するデータベース管
理プログラムから要求される。「条件付き」という言葉
は、ロックがすぐには許可されない場合、こうしたロッ
クが許可されないことを示す応答が、要求側アクセス機
構に送られることを意味する。この応答は、ステップ2
04に示す判定を行なうために利用される。ロックが許
可されていない場合、プログラムはステップ206に進
み、子ノードのラッチを解除し、次いでステップ208
に進み、キー・レコードに対する無条件ロックを要求す
る。ステップ208に示されている無条件ロックは、次
に進む前にこうしたロックが許可されるまでアクセス機
構が待機することを要求する。ロックが許可されると、
プログラムは、ステップ214で子ノードを再ラツチし
、ステップ216で、そのノードが変更されたかどうか
判定する。ステップ216でのこのノードの検査は、本
明細書では「ローカル探索」と呼び、ノードが実質的に
修正されていない場合、プログラムが、2回目に木を走
査するのではなく、ローカル・ノードから再び前へ進め
ることによって、システムの効率を高めるのに利用され
る。このことは、たとえば、ノードに記憶されているL
SNと待機期間の前に記録されたLSNを比較すること
によって判定できる。ノードが変更されていない場合、
ステップ218で、そのキーがローカル・ノード中の最
初のキーかどうか判定される。そうでない場合、ステッ
プ209に示すように見つかったキー・レコードが戻さ
れる。その後、ステップ210に示すように、子ノード
のラッチが解除される。当業者には明らかなように、ス
テップ211は、トランザクションが完成したとき、ま
たはそれ以前に実行される。
ログラムは、第3図のステップ200に進む。第3図に
は、本発明によるデータベースにおける取出し動作を示
す論理流れ図が示されている。ステップ200で、プロ
グラムは探索中の要求されたキーまたはデータベース中
の次に上位のキーを見つける。ステップ202で、プロ
グラムは、発見されたキー・レコードに対する条件付き
ロックを要求する。この例では、条件付きロックは、レ
コード・キーに対するロックを管理するデータベース管
理プログラムから要求される。「条件付き」という言葉
は、ロックがすぐには許可されない場合、こうしたロッ
クが許可されないことを示す応答が、要求側アクセス機
構に送られることを意味する。この応答は、ステップ2
04に示す判定を行なうために利用される。ロックが許
可されていない場合、プログラムはステップ206に進
み、子ノードのラッチを解除し、次いでステップ208
に進み、キー・レコードに対する無条件ロックを要求す
る。ステップ208に示されている無条件ロックは、次
に進む前にこうしたロックが許可されるまでアクセス機
構が待機することを要求する。ロックが許可されると、
プログラムは、ステップ214で子ノードを再ラツチし
、ステップ216で、そのノードが変更されたかどうか
判定する。ステップ216でのこのノードの検査は、本
明細書では「ローカル探索」と呼び、ノードが実質的に
修正されていない場合、プログラムが、2回目に木を走
査するのではなく、ローカル・ノードから再び前へ進め
ることによって、システムの効率を高めるのに利用され
る。このことは、たとえば、ノードに記憶されているL
SNと待機期間の前に記録されたLSNを比較すること
によって判定できる。ノードが変更されていない場合、
ステップ218で、そのキーがローカル・ノード中の最
初のキーかどうか判定される。そうでない場合、ステッ
プ209に示すように見つかったキー・レコードが戻さ
れる。その後、ステップ210に示すように、子ノード
のラッチが解除される。当業者には明らかなように、ス
テップ211は、トランザクションが完成したとき、ま
たはそれ以前に実行される。
ステップ218を再び参照すると、見つかったキーがノ
ード中の最初のキーである場合、プログラムは第2図の
処理の始めに戻り、2回目に木の走査を行なう。それが
必要なのは、要求されたキー・レコードが見つからず、
見つかった次に上位のキーがローカル・ノード中の最初
のキーであったという可能性があるためである。見つか
ったキー・レコードに対する無条件ロックを待っている
間に遅延があった場合、それはキー・レコード挿入が次
に下位のノードで行なわれ、そのため要求されたキー・
レコードが存在するかもしれないことを示す。この場合
、要求されたキー・レコードが存在するかどうかを判定
するために再度水を走査しなければならない。
ード中の最初のキーである場合、プログラムは第2図の
処理の始めに戻り、2回目に木の走査を行なう。それが
必要なのは、要求されたキー・レコードが見つからず、
見つかった次に上位のキーがローカル・ノード中の最初
のキーであったという可能性があるためである。見つか
ったキー・レコードに対する無条件ロックを待っている
間に遅延があった場合、それはキー・レコード挿入が次
に下位のノードで行なわれ、そのため要求されたキー・
レコードが存在するかもしれないことを示す。この場合
、要求されたキー・レコードが存在するかどうかを判定
するために再度水を走査しなければならない。
ステップ216を再び参照すると、ノードが変更された
場合、ステップ220で、そのノードが依然として以前
の子ノードと同じ木の同じレベルにあるかどうかを判定
する。変更されていない場合、木を再度走査して、要求
されたキー・レコードに対する適切な子ノードを見つけ
出さなければならない。ノードの変更の有無にかかわら
ず、ローカル・ノードの木及びレベルが同じ場合、ステ
ップ222で、要求されたキーまたは次に上位のキーを
見つける。次に、ステップ224で、プログラムが以前
と同じキーを見つけたかどうか判定する。
場合、ステップ220で、そのノードが依然として以前
の子ノードと同じ木の同じレベルにあるかどうかを判定
する。変更されていない場合、木を再度走査して、要求
されたキー・レコードに対する適切な子ノードを見つけ
出さなければならない。ノードの変更の有無にかかわら
ず、ローカル・ノードの木及びレベルが同じ場合、ステ
ップ222で、要求されたキーまたは次に上位のキーを
見つける。次に、ステップ224で、プログラムが以前
と同じキーを見つけたかどうか判定する。
同じキーが見つかった場合、適切なキー・レコードが見
つかり、上記のようにステップ209を介して戻る。そ
うでない場合、適切な子ノードを見つけるために木を再
度走査しなければならない。
つかり、上記のようにステップ209を介して戻る。そ
うでない場合、適切な子ノードを見つけるために木を再
度走査しなければならない。
要求されたキー・レコードより少ない子ノード内にキー
がある場合、ステップ226で、以前に見つかったキー
・レコードに対するロックが解除されて、ステップ20
0に戻り、再び、要求されたキーまたは次に上位のキー
を見つけ出す。
がある場合、ステップ226で、以前に見つかったキー
・レコードに対するロックが解除されて、ステップ20
0に戻り、再び、要求されたキーまたは次に上位のキー
を見つけ出す。
第4図を参照すると、本発明によるデータベースにおけ
る挿入動作を示す論理流れ図が示しである。当業者には
自明であるが、挿入すべきキー・レコードは、挿入動作
が始める前に必要ならXロックされる。この動作は、コ
ンピュータ・メモリにレコードを挿入するのに利用され
、索引の当該ノードを更新する索引にキーを挿入して、
他のトランザクションが新しく挿入されたレコードにア
クセスできるようにする。
る挿入動作を示す論理流れ図が示しである。当業者には
自明であるが、挿入すべきキー・レコードは、挿入動作
が始める前に必要ならXロックされる。この動作は、コ
ンピュータ・メモリにレコードを挿入するのに利用され
、索引の当該ノードを更新する索引にキーを挿入して、
他のトランザクションが新しく挿入されたレコードにア
クセスできるようにする。
ステップ300で、まず、挿入すべきキー・レコードが
最下層ノードすなわちリーフ・ノードにフィツトするか
どうかが判定される。フィツトする場合、プログラムは
ステップ304に進み、挿入されるキーより大きい次の
キーを見つける。次のキーがメート中にない場合、アク
セス・プログラムに、次の後続位置にあるリーフ・ノー
ドが指される。次の後続位置にあるリーフ・ノードがな
い場合、アクセス・プログラムは空白(null )標
識を見つける。次いで、ステップ308で、アクセス・
プログラムは、次のキー・レコードに対する条件付きX
ロックを要求する。ステップ312で、この条件付きX
ロック要求が許可されているかどうか判定が行なわれる
。許可された場合、ステップ330で、SMOビットが
ゼロに等しいかどうか判定する。
最下層ノードすなわちリーフ・ノードにフィツトするか
どうかが判定される。フィツトする場合、プログラムは
ステップ304に進み、挿入されるキーより大きい次の
キーを見つける。次のキーがメート中にない場合、アク
セス・プログラムに、次の後続位置にあるリーフ・ノー
ドが指される。次の後続位置にあるリーフ・ノードがな
い場合、アクセス・プログラムは空白(null )標
識を見つける。次いで、ステップ308で、アクセス・
プログラムは、次のキー・レコードに対する条件付きX
ロックを要求する。ステップ312で、この条件付きX
ロック要求が許可されているかどうか判定が行なわれる
。許可された場合、ステップ330で、SMOビットが
ゼロに等しいかどうか判定する。
SMOビットは、構造修正動作を含むトランザクション
の保留状態によって設定される、リーフ・ノード中にあ
るフラグである。本発明によると、このフラグ・ビット
は、第2のユーザの構造修正動作が保留中に、第1のユ
ーザの動作を遅延させるのに利用される。第2のユーザ
の構造修正動作が完了すると、本発明によれば、システ
ム障害の場合にも構造修正は取り消されず、その後、S
MOビットがゼロに設定される。
の保留状態によって設定される、リーフ・ノード中にあ
るフラグである。本発明によると、このフラグ・ビット
は、第2のユーザの構造修正動作が保留中に、第1のユ
ーザの動作を遅延させるのに利用される。第2のユーザ
の構造修正動作が完了すると、本発明によれば、システ
ム障害の場合にも構造修正は取り消されず、その後、S
MOビットがゼロに設定される。
次に、ステップ332で、削除ビットがゼロに等しいか
どうか判定する。本発明の他の重要な態様によると、削
除ビットは各リーフ・ノードに設けられ、問題のノード
が、新しい整合状態をまだ実現していない削除動作に関
与している、または関与していたかどうかを示す。削除
動作の取消しが必要な場合、整合状態を実現する前に、
以前に削除されたビットを再挿入するのに十分なスペー
スがノード中に残ってない場合、以前に削除されたレコ
ードのその後の挿入に、ノードの分割が必要であること
から考えて、このことを認識することは重要である。索
引水の構造のこの変更は、並行動作に悪影響を及ぼすこ
とがある。
どうか判定する。本発明の他の重要な態様によると、削
除ビットは各リーフ・ノードに設けられ、問題のノード
が、新しい整合状態をまだ実現していない削除動作に関
与している、または関与していたかどうかを示す。削除
動作の取消しが必要な場合、整合状態を実現する前に、
以前に削除されたビットを再挿入するのに十分なスペー
スがノード中に残ってない場合、以前に削除されたレコ
ードのその後の挿入に、ノードの分割が必要であること
から考えて、このことを認識することは重要である。索
引水の構造のこの変更は、並行動作に悪影響を及ぼすこ
とがある。
したがって、削除ビットが1に等しい場合、試行中のキ
ー・レコード動作は、新しい整合点に達するまで遅延さ
れなければならない。これらの両条件が満たされる場合
、ステップ334で、すべてのログ先行書込みシステム
に必要な挿入動作の記録が行なわれる。その後、ステッ
プ318で問題の子ノードに対するキーを挿入する。ス
テップ324で、次のレコードとキー・レコードのロッ
クが解除される。さらに、ステップ329ですべてのラ
ッチが解除され、ステップ325でプログラムがユーザ
に戻る。
ー・レコード動作は、新しい整合点に達するまで遅延さ
れなければならない。これらの両条件が満たされる場合
、ステップ334で、すべてのログ先行書込みシステム
に必要な挿入動作の記録が行なわれる。その後、ステッ
プ318で問題の子ノードに対するキーを挿入する。ス
テップ324で、次のレコードとキー・レコードのロッ
クが解除される。さらに、ステップ329ですべてのラ
ッチが解除され、ステップ325でプログラムがユーザ
に戻る。
ステップ330及び332を再び参照すると、SMOビ
ットが1であるか、または削除ビットが1で、構造修正
動作が保留中であるか、または取消し中に構造修正動作
が必要となる可能性があることを示す場合、アクセス・
プログラムは、ステップ336に示すように、索引水に
対する条件付きSラッチを要求しなければならない。ス
テップ338で、ラッチが許可されているかどうかが判
定され、許可されている場合、ステップ340で、ステ
ップ334及び318に関して上記で述べたように、挿
入を記録し実行する前に、SMOビットと削除ビットが
ゼロに設定される。
ットが1であるか、または削除ビットが1で、構造修正
動作が保留中であるか、または取消し中に構造修正動作
が必要となる可能性があることを示す場合、アクセス・
プログラムは、ステップ336に示すように、索引水に
対する条件付きSラッチを要求しなければならない。ス
テップ338で、ラッチが許可されているかどうかが判
定され、許可されている場合、ステップ340で、ステ
ップ334及び318に関して上記で述べたように、挿
入を記録し実行する前に、SMOビットと削除ビットが
ゼロに設定される。
ステップ336で木に対して要求された条件付きSラッ
チが許可されていない場合、ステップ342で、そのノ
ードのラッチが解除され、ステップ344で、木に対す
る無条件Sラッチが要求される。時間が経過して無条件
Sラッチが許可された後、ステップ346で問題のノー
ドが再ラツチされる。次にステップ348で、次にノー
ドがローカルに探索されて、ノードが実質的に変更され
たかどうかが判定される。ノードが変更されていない場
合、ステップ334と318で、挿入すべきキー・レコ
ードが記録され挿入される。
チが許可されていない場合、ステップ342で、そのノ
ードのラッチが解除され、ステップ344で、木に対す
る無条件Sラッチが要求される。時間が経過して無条件
Sラッチが許可された後、ステップ346で問題のノー
ドが再ラツチされる。次にステップ348で、次にノー
ドがローカルに探索されて、ノードが実質的に変更され
たかどうかが判定される。ノードが変更されていない場
合、ステップ334と318で、挿入すべきキー・レコ
ードが記録され挿入される。
以前に見つかったノードが実質的に変更されている場合
、ステップ350で、見つかったノードが同じ索引木の
同じレベルにあるかどうかが判定される。そうでない場
合、プログラムは第2図に示された探索動作に戻り、適
切なノードを判定するために木が再び走査される。
、ステップ350で、見つかったノードが同じ索引木の
同じレベルにあるかどうかが判定される。そうでない場
合、プログラムは第2図に示された探索動作に戻り、適
切なノードを判定するために木が再び走査される。
見つかったノードが変更されているが、木及びレベルは
同じである場合、ステップ352で挿入すべきキーがロ
ーカル・ノード上で境界を定められている(bound
ed)かどうかが判定される。その場合、再度木を走査
する必要はなく、ステップ334及び318で挿入が記
録され実行される。
同じである場合、ステップ352で挿入すべきキーがロ
ーカル・ノード上で境界を定められている(bound
ed)かどうかが判定される。その場合、再度木を走査
する必要はなく、ステップ334及び318で挿入が記
録され実行される。
そうでない場合、上記のように、第2図の探索手順が再
び始まり、キー挿入のための適切なノードを見つけて識
別する。
び始まり、キー挿入のための適切なノードを見つけて識
別する。
ステップ312を再び参照すると、次のキー・レコード
に対する条件付きXロックが許可されない場合、プログ
ラムはステップ316に進み、そこで子ノードのラッチ
を解除し、次に、ステップ322に進み、次のキー・レ
コードに対する無条件Xロックを要求する。無条件Xロ
ックが許可された後、ステップ354でノードの再ラツ
チが行なわれ、ステップ356でノードを検査して、待
機期間中にノードが実質的に変更されたかどうかが判定
される。ノードが変更されていない場合、ステップ36
0で、挿入キーがノード上で境界を定められているかど
うかが判定される。その場合、ステップ334及び31
8で挿入が記録され実行される。
に対する条件付きXロックが許可されない場合、プログ
ラムはステップ316に進み、そこで子ノードのラッチ
を解除し、次に、ステップ322に進み、次のキー・レ
コードに対する無条件Xロックを要求する。無条件Xロ
ックが許可された後、ステップ354でノードの再ラツ
チが行なわれ、ステップ356でノードを検査して、待
機期間中にノードが実質的に変更されたかどうかが判定
される。ノードが変更されていない場合、ステップ36
0で、挿入キーがノード上で境界を定められているかど
うかが判定される。その場合、ステップ334及び31
8で挿入が記録され実行される。
ノードが変更されている場合、ステップ358で、ノー
ドの木及びレベルが同じであるかどうかが判定される。
ドの木及びレベルが同じであるかどうかが判定される。
そうでない場合、第2図に示す探索手順が、適切なノー
ドを見つけるために再び繰り返される。ノードの木及び
レベルが同じままである場合、ステップ360で、挿入
すべきキー・レコードがローカル・ノード上で境界を定
められているかどうかが判定される。境界を接していな
い場合、上記と同様に第2図の探索手順が繰り返される
。挿入すべきキー・レコードがローカル・ノードと境界
を接している場合、プログラムはステップ300に戻り
、上記に列挙した手順に従う。
ドを見つけるために再び繰り返される。ノードの木及び
レベルが同じままである場合、ステップ360で、挿入
すべきキー・レコードがローカル・ノード上で境界を定
められているかどうかが判定される。境界を接していな
い場合、上記と同様に第2図の探索手順が繰り返される
。挿入すべきキー・レコードがローカル・ノードと境界
を接している場合、プログラムはステップ300に戻り
、上記に列挙した手順に従う。
ステップ300(こ戻って、挿入すべきキー・レコード
がリーフ・ノードに当てはまらない場合、プログラムは
ステップ302に進み、索引木に対する条件付きXラッ
チを要求する。次いでステ、ツブ306で、条件付きラ
ッチが許可されているかどうかが判定される。許可され
てない場合、プログラムはステップ310に進み、子ノ
ードのう・ソチを解除し、次いで、ステップ314に進
み、索引木に対する無条件Xラッチを要求する。索引木
に対する無条件Xラッチが許可された後、ステップ36
2でノードが再ラツチされ、次にステップ364で、待
機期間中にノードが変更されたかどうかを判定するため
、ローカル・ノードが検査される。
がリーフ・ノードに当てはまらない場合、プログラムは
ステップ302に進み、索引木に対する条件付きXラッ
チを要求する。次いでステ、ツブ306で、条件付きラ
ッチが許可されているかどうかが判定される。許可され
てない場合、プログラムはステップ310に進み、子ノ
ードのう・ソチを解除し、次いで、ステップ314に進
み、索引木に対する無条件Xラッチを要求する。索引木
に対する無条件Xラッチが許可された後、ステップ36
2でノードが再ラツチされ、次にステップ364で、待
機期間中にノードが変更されたかどうかを判定するため
、ローカル・ノードが検査される。
ノードが変更された場合、ステップ320で、後でより
詳しく説明するノード分割アルゴリズムが呼び出され、
その汲水がラッチを解除され、挿入プロセスはステップ
300に戻り、キー値に応じて、新しく設定されたノー
ドまたは元々見つけ出されたノードにキー・レコードを
挿入する。見つけられたノードが変更されている場合、
ステ、ツブ366で、ローカル・ノードの木及びレベル
が同じままであるかどうかが判定される。同じでない場
合、上記のように、プログラムは第2図に示す探索処理
に戻り、適切なリーフ・ノードを見つけ出す。ローカル
・ノードの木及びレベルが同じままである場合、ステッ
プ368で、挿入すべきキー・レコードがローカル・ノ
ード上で境界を定められているかどうかが判定される。
詳しく説明するノード分割アルゴリズムが呼び出され、
その汲水がラッチを解除され、挿入プロセスはステップ
300に戻り、キー値に応じて、新しく設定されたノー
ドまたは元々見つけ出されたノードにキー・レコードを
挿入する。見つけられたノードが変更されている場合、
ステ、ツブ366で、ローカル・ノードの木及びレベル
が同じままであるかどうかが判定される。同じでない場
合、上記のように、プログラムは第2図に示す探索処理
に戻り、適切なリーフ・ノードを見つけ出す。ローカル
・ノードの木及びレベルが同じままである場合、ステッ
プ368で、挿入すべきキー・レコードがローカル・ノ
ード上で境界を定められているかどうかが判定される。
範囲外の場合、第2図に示す探索手順が繰り返される。
挿入すべきキー・レコードがノード上で境界を定められ
ている場合、プログラムはステップ300に戻り、キー
・レコードを挿入するのに必要なステップに進む。
ている場合、プログラムはステップ300に戻り、キー
・レコードを挿入するのに必要なステップに進む。
次に第5図を参照すると、本発明によるデータベースに
おける削除動作を示す論理流れ図が示されている。当業
者には自明のことだが、削除動作が始まる前に、必要な
ら削除すべきキー・レコードがXロックされる。ステッ
プ400で、プログラムは削除すべきキーより大きな次
のキーを見つける。ステップ402で、プログラムは、
この次のレコード・キーに対する条件付きXロックを要
求する。プログラムはステップ404に進み、条件付き
Xロックが許可されているかどうか判定する。要求され
た条件付きXロックが許可されなかった場合、プログラ
ムは、ステップ406で子ノードのラッチを解除し、ス
テップ410で次のキー・レコードに対する無条件ロッ
クを要求する。
おける削除動作を示す論理流れ図が示されている。当業
者には自明のことだが、削除動作が始まる前に、必要な
ら削除すべきキー・レコードがXロックされる。ステッ
プ400で、プログラムは削除すべきキーより大きな次
のキーを見つける。ステップ402で、プログラムは、
この次のレコード・キーに対する条件付きXロックを要
求する。プログラムはステップ404に進み、条件付き
Xロックが許可されているかどうか判定する。要求され
た条件付きXロックが許可されなかった場合、プログラ
ムは、ステップ406で子ノードのラッチを解除し、ス
テップ410で次のキー・レコードに対する無条件ロッ
クを要求する。
無条件ロックが許可されるまで待機した後、ステップ4
56で、子ノードが再ラツチされる。その後、ステップ
458で、待機期間中にノードが実質的に変更されたか
どうか判定するため、ローカル・ノードが検査される。
56で、子ノードが再ラツチされる。その後、ステップ
458で、待機期間中にノードが実質的に変更されたか
どうか判定するため、ローカル・ノードが検査される。
変更されてない場合、ステップ462で、削除すべきキ
ーが依然として存在しているかどうかが判定される。変
更されている場合、プログラムはステップ400に戻り
、削除処理を開始する。変更されてない場合、第2図の
探索処理が繰り返される。
ーが依然として存在しているかどうかが判定される。変
更されている場合、プログラムはステップ400に戻り
、削除処理を開始する。変更されてない場合、第2図の
探索処理が繰り返される。
ローカル・ノードが実質的に変更されている場合、ステ
ップ460で、ノードの木及びレベルが同じままかどう
かが判定される。同じままでない場合、プログラムは、
第2図に示す探索処理に戻る。ローカル・ノードの木及
びレベルが同じままである場合、ステップ462で、削
除すべきキーがローカル・ノード内に依然存在している
かどうかが判定される。存在してない場合、プログラム
は、適切なリーフ・ノードを見つけるため、再び第2図
に示す探索手順に戻る。しかし、削除すべきキーがロー
カル・ノードにある場合、プログラムはステップ400
に戻り、削除処理を開始する。
ップ460で、ノードの木及びレベルが同じままかどう
かが判定される。同じままでない場合、プログラムは、
第2図に示す探索処理に戻る。ローカル・ノードの木及
びレベルが同じままである場合、ステップ462で、削
除すべきキーがローカル・ノード内に依然存在している
かどうかが判定される。存在してない場合、プログラム
は、適切なリーフ・ノードを見つけるため、再び第2図
に示す探索手順に戻る。しかし、削除すべきキーがロー
カル・ノードにある場合、プログラムはステップ400
に戻り、削除処理を開始する。
ステップ404に戻って、次のキー・レコードの条件付
きXロックが許可されると、ステップ432で、削除す
べきキーがローカル・ノード上で境界を定められている
( bounded)かどうかが判定される。その場合
、ステップ434で、問題のリーフ・ノードが、まだ完
成してない構造修正動作に関与していないことを示すS
MOビットがゼロに等しいかどうかが判定される。SM
Oビットがゼロに等しい場合、ステップ436で問題の
ノードが、新しい整合点にまだ達していないトランザク
ション中に削除されたキー・レコードをもっていること
を示す削除ビットが1に設定される。その後、ステップ
437に示すように、削除すべきキー・レコードが記録
され、ステップ408で、そのキー・レコードが削除さ
れる。
きXロックが許可されると、ステップ432で、削除す
べきキーがローカル・ノード上で境界を定められている
( bounded)かどうかが判定される。その場合
、ステップ434で、問題のリーフ・ノードが、まだ完
成してない構造修正動作に関与していないことを示すS
MOビットがゼロに等しいかどうかが判定される。SM
Oビットがゼロに等しい場合、ステップ436で問題の
ノードが、新しい整合点にまだ達していないトランザク
ション中に削除されたキー・レコードをもっていること
を示す削除ビットが1に設定される。その後、ステップ
437に示すように、削除すべきキー・レコードが記録
され、ステップ408で、そのキー・レコードが削除さ
れる。
削除すべきキー・レコードがリーフ・ノート上で境界を
定められていない場合、またはSMOビットがゼロに等
しくない場合、ステップ438で、索引水に対する条件
付きSラッチが要求される。
定められていない場合、またはSMOビットがゼロに等
しくない場合、ステップ438で、索引水に対する条件
付きSラッチが要求される。
ステップ440で、要求されたラッチが許可されている
と判定された場合、ステップ442で、SMOビット及
び削除ピットがゼロに設定され、ステップ437と40
8に従って削除が記録され実行される。索引水に対して
要求された条件付きSラッチが許可されない場合、ステ
ップ444で、ノードのラッチが解除され、ステップ4
46で、索引水に対する無条件Sラッチが要求される。
と判定された場合、ステップ442で、SMOビット及
び削除ピットがゼロに設定され、ステップ437と40
8に従って削除が記録され実行される。索引水に対して
要求された条件付きSラッチが許可されない場合、ステ
ップ444で、ノードのラッチが解除され、ステップ4
46で、索引水に対する無条件Sラッチが要求される。
無条件Sラッチが許可されるまで待った後、ステップ4
48で、子ノードが再ラツチされ、ステップ450で、
ノードが待機期間中に実質的に変更されたかどうか判定
するため、ノードのローカル探索が行なわれる。変更さ
れていない場合、プロダラムはステップ442に戻り、
そこでSMOビット及び削除ビットがゼロに設定され、
ステップ437と408に従って削除が記録され実行さ
れる。
48で、子ノードが再ラツチされ、ステップ450で、
ノードが待機期間中に実質的に変更されたかどうか判定
するため、ノードのローカル探索が行なわれる。変更さ
れていない場合、プロダラムはステップ442に戻り、
そこでSMOビット及び削除ビットがゼロに設定され、
ステップ437と408に従って削除が記録され実行さ
れる。
ローカル・ノードが実質的に変更されている場合、ステ
ップ452で、ノードが依然として同じ木及び同じレベ
ルにあるかどうかが判定される。ノードが依然として同
じ木及び同じレベルにある場合、ステップ454で、削
除すべきキー・レコードがノード内にあるかどうかが判
定される。その場合、プログラムはステップ400に戻
り、削除処理を開始する。ローカル・ノードが同じ木ま
たは同じレベルにもはやない場合、あるいは削除すべき
キー・レコードがない場合、プログラムは第2図に示し
た探索手順に戻り、問題の動作に応じた適切なリーフ・
ノードを決定する。
ップ452で、ノードが依然として同じ木及び同じレベ
ルにあるかどうかが判定される。ノードが依然として同
じ木及び同じレベルにある場合、ステップ454で、削
除すべきキー・レコードがノード内にあるかどうかが判
定される。その場合、プログラムはステップ400に戻
り、削除処理を開始する。ローカル・ノードが同じ木ま
たは同じレベルにもはやない場合、あるいは削除すべき
キー・レコードがない場合、プログラムは第2図に示し
た探索手順に戻り、問題の動作に応じた適切なリーフ・
ノードを決定する。
ステップ408に従ってキー・レコードを削除した後、
プログラムはステップ412に進み、そのキー・レコー
ドを以前に含んでいたノードが現在空であるかどうか判
定する。空でない場合、プログラムはステップ421で
ノードのラッチを解除し、ステップ414で操作員に戻
る。一方、削除されたキー・レコードを以前に含んでい
たノードが空の場合、ステップ416で、索引水に対す
る条件付きXラッチが要求される。次に、ステップ41
8で、プログラムは、条件付きラッチが許可されている
かどうか判定する。許可されている場合、プログラムは
ステップ424に進み、ノート圧縮アルゴリズムを実行
する。このアルゴリズムについては、後でより詳しく説
明する。ノード圧縮アルゴリズムは、索引水中の先行ノ
ードがら空ノードに対する参照及び空ノードを除去する
。
プログラムはステップ412に進み、そのキー・レコー
ドを以前に含んでいたノードが現在空であるかどうか判
定する。空でない場合、プログラムはステップ421で
ノードのラッチを解除し、ステップ414で操作員に戻
る。一方、削除されたキー・レコードを以前に含んでい
たノードが空の場合、ステップ416で、索引水に対す
る条件付きXラッチが要求される。次に、ステップ41
8で、プログラムは、条件付きラッチが許可されている
かどうか判定する。許可されている場合、プログラムは
ステップ424に進み、ノート圧縮アルゴリズムを実行
する。このアルゴリズムについては、後でより詳しく説
明する。ノード圧縮アルゴリズムは、索引水中の先行ノ
ードがら空ノードに対する参照及び空ノードを除去する
。
その後、ステップ426で、木のラッチを解除し、ステ
ップ430でプログラムは操作員に戻る。
ップ430でプログラムは操作員に戻る。
ステップ418に戻って、索引水に対して要求された条
件付きXラッチが許可されていない場合、ステップ42
0で、子ノードのラッチが解除され、ステップ422に
示すように木に対する無条件Xラッチが要求される。索
引水に対する無条件Xラッチが許可されるのを待った後
、ステップ423で、問題のノードが待機期間中に変更
されたかどうかが判定される。変更された場合、プログ
ラムは、ステップ425で操作員に戻り、そうでない場
合、上記のノード圧縮アルゴリズムとその後のステップ
が実行される。
件付きXラッチが許可されていない場合、ステップ42
0で、子ノードのラッチが解除され、ステップ422に
示すように木に対する無条件Xラッチが要求される。索
引水に対する無条件Xラッチが許可されるのを待った後
、ステップ423で、問題のノードが待機期間中に変更
されたかどうかが判定される。変更された場合、プログ
ラムは、ステップ425で操作員に戻り、そうでない場
合、上記のノード圧縮アルゴリズムとその後のステップ
が実行される。
次に第6図を参照すると、本発明によるデータベースに
おけるキー・レコード挿入の取消し動作を示す論理流れ
図が示しである。当業者には当然のことながら、キー・
レコードがトランザクションに挿入され、システム障害
が新しい整合点に達する前に発生した場合、キー・レコ
ード挿入をロールバックする、すなわち「取り消す」必
要がある。
おけるキー・レコード挿入の取消し動作を示す論理流れ
図が示しである。当業者には当然のことながら、キー・
レコードがトランザクションに挿入され、システム障害
が新しい整合点に達する前に発生した場合、キー・レコ
ード挿入をロールバックする、すなわち「取り消す」必
要がある。
これは、キー・レコード削除と等価である。第8図に示
すように、キー・レコード挿入の取消しの最初のステッ
プは、ステップ500に示すように、ログ・レコードか
ら適切なノードを決定することである。次に、ステップ
502に示すように、適切なノードがXラッチされ、ス
テップ504で、システムの再起動の結果として取消し
が実行されている場合、SMOビットと削除ビットがゼ
ロに設定される。次にステップ506で、問題のノード
が取消しの原因となったシステム障害の前と同じ木及び
同じレベルにあるかどうかが判定される。
すように、キー・レコード挿入の取消しの最初のステッ
プは、ステップ500に示すように、ログ・レコードか
ら適切なノードを決定することである。次に、ステップ
502に示すように、適切なノードがXラッチされ、ス
テップ504で、システムの再起動の結果として取消し
が実行されている場合、SMOビットと削除ビットがゼ
ロに設定される。次にステップ506で、問題のノード
が取消しの原因となったシステム障害の前と同じ木及び
同じレベルにあるかどうかが判定される。
同様に、ステップ508で、削除すべきキーがノード内
にあるかどうかが判定される。どちらの場合も、木とレ
ベルが変化するか、またはキーが存在してない場合、プ
ログラムは第2図に示す探索手順に戻らなければならな
い。次に、ステップ510で、問題のノードが依然とし
て保留中の構造修正動作に関与していることを示すSM
Oビットが1であるかどうかが判定される。そうでない
場合、ステップ512で、削除すべきキーがノード中の
最初のキーまたは最後のキーであるかどうかが判定され
る。SMOビットが1に等しいか、または削除すべきキ
ーが当該のノード中の最初のキーである場合、ステップ
514で、木に対する条件付きSラッチが要求される。
にあるかどうかが判定される。どちらの場合も、木とレ
ベルが変化するか、またはキーが存在してない場合、プ
ログラムは第2図に示す探索手順に戻らなければならな
い。次に、ステップ510で、問題のノードが依然とし
て保留中の構造修正動作に関与していることを示すSM
Oビットが1であるかどうかが判定される。そうでない
場合、ステップ512で、削除すべきキーがノード中の
最初のキーまたは最後のキーであるかどうかが判定され
る。SMOビットが1に等しいか、または削除すべきキ
ーが当該のノード中の最初のキーである場合、ステップ
514で、木に対する条件付きSラッチが要求される。
次に、ステップ516で、ラッチが許可されているかど
うかが判定され、許可されている場合、ステップ518
で、SM。
うかが判定され、許可されている場合、ステップ518
で、SM。
ビットと削除ビットがゼロに設定される。
SMOビットが1に等しくなく、削除すべきキーが当該
のノード中の最初のキーでない場合、ステップ520で
、キー・レコード削除を実行する前にログ・レコードが
書き込まれる。その後、ステップ522に示すようにキ
ー・レコードが削除され、ステップ528で、ノードが
現在空であるかどうかが判定される。そうでない場合、
ステップ530で、プログラムは操作員に戻る。実際に
キー・レコードの削除でノードが空になった場合、ステ
ップ532で、プログラムはノード圧縮アルゴリズムに
進み、そのステップの完了後、こうしたステップ534
で木のラッチが解除され、ステップ536でプログラム
は操作員に戻る。
のノード中の最初のキーでない場合、ステップ520で
、キー・レコード削除を実行する前にログ・レコードが
書き込まれる。その後、ステップ522に示すようにキ
ー・レコードが削除され、ステップ528で、ノードが
現在空であるかどうかが判定される。そうでない場合、
ステップ530で、プログラムは操作員に戻る。実際に
キー・レコードの削除でノードが空になった場合、ステ
ップ532で、プログラムはノード圧縮アルゴリズムに
進み、そのステップの完了後、こうしたステップ534
で木のラッチが解除され、ステップ536でプログラム
は操作員に戻る。
ステップ516に戻って、木に対して要求された条件付
きSラッチが許可されていない場合、ステップ524で
、ノードのラッチが解除され、ステップ526に示すよ
うに、木に対する無条件Sラッチが要求される。その後
、プログラムはステップ502に戻り、無条件Sラッチ
が許可された後、キー挿入動作の取消しを開始する。
きSラッチが許可されていない場合、ステップ524で
、ノードのラッチが解除され、ステップ526に示すよ
うに、木に対する無条件Sラッチが要求される。その後
、プログラムはステップ502に戻り、無条件Sラッチ
が許可された後、キー挿入動作の取消しを開始する。
第7図を参照すると、本発明によるキー・レコード削除
の取消しを示す論理流れ図が示しである。
の取消しを示す論理流れ図が示しである。
当業者には当然のことながら、索引水を整合点に維持す
るために、完了の前にシステム障害または他のエラー条
件が発生した場合、新しい整合状態にまだ達してない動
作をロールバックする、すなわち「取り消す」ことが定
期的に必要になる。
るために、完了の前にシステム障害または他のエラー条
件が発生した場合、新しい整合状態にまだ達してない動
作をロールバックする、すなわち「取り消す」ことが定
期的に必要になる。
キー・レコード削除の取消しは、キー・レコード挿入と
ほぼ同じ方式で動作する。図かられかるように、最初の
ステップは、ログ先行書込みプロトコルに従って維持さ
れたログ・レコードから適切なノードを決定することで
ある。これはステップ600に示されている。次にステ
ップ602で、そのノードのXラッチが行なわれ、ステ
ップ604で、システム障害の後の再起動の結果として
取消しが実行されている場合、SMOビットと削除ビッ
トがゼロに設定される。
ほぼ同じ方式で動作する。図かられかるように、最初の
ステップは、ログ先行書込みプロトコルに従って維持さ
れたログ・レコードから適切なノードを決定することで
ある。これはステップ600に示されている。次にステ
ップ602で、そのノードのXラッチが行なわれ、ステ
ップ604で、システム障害の後の再起動の結果として
取消しが実行されている場合、SMOビットと削除ビッ
トがゼロに設定される。
ステップ606で、ノードが、取消しの原因が発生する
前の状態と同じ木及び同じレベルにあるかどうかが判定
され、そうでない場合、第2図に示す探索手順が繰り返
される。次に、ステップ608で、取消し動作によって
削除すべきキーがノードと境界を接しているかどうかが
判定される。そうでない場合は、やはり、第2図に示す
探索手順が繰り返される。
前の状態と同じ木及び同じレベルにあるかどうかが判定
され、そうでない場合、第2図に示す探索手順が繰り返
される。次に、ステップ608で、取消し動作によって
削除すべきキーがノードと境界を接しているかどうかが
判定される。そうでない場合は、やはり、第2図に示す
探索手順が繰り返される。
削除すべきキーがローカル・ノードと境界を接している
場合、ステップ610で、上記のように、問題のノード
が保留中の構造修正動作に関係していることを示すSM
Oビットが1に等しいかどうかが判定される。SMOビ
ットが1に等しくない場合、ステップ612で、削除ビ
ットが1に等しいかどうかが判定され、問題のノードが
、整合点にまだ達してないトランザクション中に削除さ
れたレコードを最近もっていたかどうかが判定される。
場合、ステップ610で、上記のように、問題のノード
が保留中の構造修正動作に関係していることを示すSM
Oビットが1に等しいかどうかが判定される。SMOビ
ットが1に等しくない場合、ステップ612で、削除ビ
ットが1に等しいかどうかが判定され、問題のノードが
、整合点にまだ達してないトランザクション中に削除さ
れたレコードを最近もっていたかどうかが判定される。
SMOビットも削除ビットも1に等しくない場合、プロ
グラムはステップ624に進み、挿入すべきキー・レコ
ードが適切なノードにフィツトするかどうかを判定する
。ステップ610と612を再び参照すると、SMOビ
ットが1に等しいか、または削除ビットが1に等しい場
合、ステップ614で、木に対する条件付きSラッチが
要求される。次にステップ616で、Sラッチが許可さ
れているかどうかが判定され、許可されている場合、ス
テップ622で、SMOビットと削除ビットがゼロに等
しく設定され、その後、ステップ824に関して述べた
ように、挿入すべきキーがノードにフィツトするかどう
かが判定される。
グラムはステップ624に進み、挿入すべきキー・レコ
ードが適切なノードにフィツトするかどうかを判定する
。ステップ610と612を再び参照すると、SMOビ
ットが1に等しいか、または削除ビットが1に等しい場
合、ステップ614で、木に対する条件付きSラッチが
要求される。次にステップ616で、Sラッチが許可さ
れているかどうかが判定され、許可されている場合、ス
テップ622で、SMOビットと削除ビットがゼロに等
しく設定され、その後、ステップ824に関して述べた
ように、挿入すべきキーがノードにフィツトするかどう
かが判定される。
ステップ614で木に対して要求された条件付きSラッ
チが許可されていない場合、ステップ618で、ノード
・ラッチが解除され、ステップ620で、木に対する無
条件Sラッチが要求される。
チが許可されていない場合、ステップ618で、ノード
・ラッチが解除され、ステップ620で、木に対する無
条件Sラッチが要求される。
木に対する無条件Sラッチが許可された後、プログラム
はステップ802に戻り、そこでノードがXラッチされ
、処理が再び開始する。
はステップ802に戻り、そこでノードがXラッチされ
、処理が再び開始する。
ステップ624に戻ると、挿入すべきキー・レコードが
当該のノードに当てはまらない場合、ステップ626で
ノード分割アルゴリズムが呼び出される。ノード分割ア
ルゴリズムが完了した後、ステップ628で木のラッチ
が解除され、プログラムは再びステップ602に戻り、
再び処理を開始する。挿入すべきキー・レコードが当該
のノードに当てはまる場合、ステップ630で、ログ・
レコードが書き込まれ、その後ステップ632でその挿
入が実行される。その後ステップ634で、プログラム
はユーザに戻る。
当該のノードに当てはまらない場合、ステップ626で
ノード分割アルゴリズムが呼び出される。ノード分割ア
ルゴリズムが完了した後、ステップ628で木のラッチ
が解除され、プログラムは再びステップ602に戻り、
再び処理を開始する。挿入すべきキー・レコードが当該
のノードに当てはまる場合、ステップ630で、ログ・
レコードが書き込まれ、その後ステップ632でその挿
入が実行される。その後ステップ634で、プログラム
はユーザに戻る。
第8図には、本発明によるノード分割アルゴリズムを示
す論理流れ図が示されている。図を見るとわかるように
、ノード分割アルゴリズムは、適切なログ順序番号を記
憶することによって始まる。
す論理流れ図が示されている。図を見るとわかるように
、ノード分割アルゴリズムは、適切なログ順序番号を記
憶することによって始まる。
その番号は、ノード分割動作の直前に実行された動作に
関連する。当業者には当然のことながら、順方向伝播ト
ランザクションでは、これは、ノード分割アルゴリズム
の直前に実行されたログ順序番号になる。しかし、ノー
ド分割動作を必要とする取消しでは、このログ順序番号
は、問題の命令の直後に行なわれた動作のログ順序番号
になる。
関連する。当業者には当然のことながら、順方向伝播ト
ランザクションでは、これは、ノード分割アルゴリズム
の直前に実行されたログ順序番号になる。しかし、ノー
ド分割動作を必要とする取消しでは、このログ順序番号
は、問題の命令の直後に行なわれた動作のログ順序番号
になる。
次に、ステップ702に示すように、木がXラッチされ
、ステップ704に示すように、新しいノード要件がロ
グ先行書込みプロトコルに従って記録される。ステップ
706で、新しいノードが獲得され、ステップ708で
、必要に応じて新しいノードと古いノードのXラッチが
行なわれる。ステップ710で、先行書込みプロトコル
に従って、キー位置の変更がログに書き込まれ、その後
にステップ712で、キーの一部分が古いノードから新
しいノードに移される。ステップ712で、問題のノー
ドがまだ完了してない構造修正動作に関連することを並
行ユーザが判定できるように、影響を受けたリーフ・ノ
ード中でSMOビットが1に設定される。
、ステップ704に示すように、新しいノード要件がロ
グ先行書込みプロトコルに従って記録される。ステップ
706で、新しいノードが獲得され、ステップ708で
、必要に応じて新しいノードと古いノードのXラッチが
行なわれる。ステップ710で、先行書込みプロトコル
に従って、キー位置の変更がログに書き込まれ、その後
にステップ712で、キーの一部分が古いノードから新
しいノードに移される。ステップ712で、問題のノー
ドがまだ完了してない構造修正動作に関連することを並
行ユーザが判定できるように、影響を受けたリーフ・ノ
ード中でSMOビットが1に設定される。
次に、ステップ714に示すように、古いノードと新し
いノードのラッチが解除され、ステップ716に示すよ
うに、親ノードがXラッチされる。
いノードのラッチが解除され、ステップ716に示すよ
うに、親ノードがXラッチされる。
親ノード中に必要な変更があれば、ステップ718でそ
れが記録され、ステップ720で親メートが更新される
。ステップ722に示すように、親ノードのラッチが解
除され、ダミー補償ログ・レコード(CLR)が、記憶
された適切なログ順序番号(LSN)を指すログ・メモ
リに書き込まれる。当業者には当然のことながら、補償
ログ・レコードとは、取消しが行なわれる場所と時間を
規定するログであり、その時点で何がどれぐらい取り消
されるかを識別する。このようにして、実行されたばか
りの構造修正動作は、関連するトランザクションが新し
い整合点に達する前にシステム障害が発生しうるにも関
わらず、取り消されない。
れが記録され、ステップ720で親メートが更新される
。ステップ722に示すように、親ノードのラッチが解
除され、ダミー補償ログ・レコード(CLR)が、記憶
された適切なログ順序番号(LSN)を指すログ・メモ
リに書き込まれる。当業者には当然のことながら、補償
ログ・レコードとは、取消しが行なわれる場所と時間を
規定するログであり、その時点で何がどれぐらい取り消
されるかを識別する。このようにして、実行されたばか
りの構造修正動作は、関連するトランザクションが新し
い整合点に達する前にシステム障害が発生しうるにも関
わらず、取り消されない。
こうした障害が発生した場合、見かけCLRレコードに
よって、取消しアルゴリズムは、構造修正動作の完了の
始めの直前に行なわれた動作にジャンプする。すなわち
、構造修正動作に関するトランザクションは、構造修正
動作が完了されてない場合は、そっくりロールバックさ
れるが、通常の処理中システム障害またはトランザクシ
ョン打切りの前に構造修正動作が完了していた場合は、
非構造修正動作に関してだけロールバックされる。この
ため、コミット状況を実現するための構造修正を含むト
ランザクションの障害にも関わらず、完了した構造修正
の取消しが有効に禁止されることに留意されたい。この
ようにして、コミット状態を実現するためにトランザク
ションを必要とせずにシステムが構造修正をコミットで
きるので、より高いレベルの並行性が得られる。
よって、取消しアルゴリズムは、構造修正動作の完了の
始めの直前に行なわれた動作にジャンプする。すなわち
、構造修正動作に関するトランザクションは、構造修正
動作が完了されてない場合は、そっくりロールバックさ
れるが、通常の処理中システム障害またはトランザクシ
ョン打切りの前に構造修正動作が完了していた場合は、
非構造修正動作に関してだけロールバックされる。この
ため、コミット状況を実現するための構造修正を含むト
ランザクションの障害にも関わらず、完了した構造修正
の取消しが有効に禁止されることに留意されたい。この
ようにして、コミット状態を実現するためにトランザク
ションを必要とせずにシステムが構造修正をコミットで
きるので、より高いレベルの並行性が得られる。
最後に、第9図を参照すると、本発明によるノード圧縮
アルゴリズムを示す論理流れ図が示しである。図を見る
とわかるように、メート分割アルゴリズムで示したのと
同様に、処理はステップ800で、適切なログ順序番号
(LSN)を記憶することから始まる。次に、ステップ
802で木がXラッチされ、ステップ804で必要に応
じて隣接ノードと古いノードがXラッチされる。
アルゴリズムを示す論理流れ図が示しである。図を見る
とわかるように、メート分割アルゴリズムで示したのと
同様に、処理はステップ800で、適切なログ順序番号
(LSN)を記憶することから始まる。次に、ステップ
802で木がXラッチされ、ステップ804で必要に応
じて隣接ノードと古いノードがXラッチされる。
先述のログ先行書込みプロトコルに従って、ステップ8
06でノード圧縮キーの移動が記録され、ステップ80
8で、隣接するノードから空のノードにキーが移される
。ステップ808で、この特定ノードに関して保留中の
構造修正動作が進行中であることを並行ユーザに示すS
MOビットが1に設定される。次にステップ810で、
順方向ノード・ポインタが更新され、ステップ812で
、隣接するノードが除去される。
06でノード圧縮キーの移動が記録され、ステップ80
8で、隣接するノードから空のノードにキーが移される
。ステップ808で、この特定ノードに関して保留中の
構造修正動作が進行中であることを並行ユーザに示すS
MOビットが1に設定される。次にステップ810で、
順方向ノード・ポインタが更新され、ステップ812で
、隣接するノードが除去される。
次にステップ814で子ノードと隣接ノードのラッチが
解除され、ステップ816で親ノードがXラッチされ、
その後親ノードが変更される。ステップ818で、親ノ
ードに対する変更が記録され、その後にステップ820
でそうした変更が実行される。その後ステップ822で
、親ノードのラッチが解除され、記憶された適切なログ
順序番号(LSN)を指すダミー補償ログ・レコード(
CLR)が書き込まれる。
解除され、ステップ816で親ノードがXラッチされ、
その後親ノードが変更される。ステップ818で、親ノ
ードに対する変更が記録され、その後にステップ820
でそうした変更が実行される。その後ステップ822で
、親ノードのラッチが解除され、記憶された適切なログ
順序番号(LSN)を指すダミー補償ログ・レコード(
CLR)が書き込まれる。
前述したノード分割アルゴリズム及びノード圧縮アルゴ
リズムでは、当業者には当然のことながら、SMOビッ
トは、構造修正動作が完了した後いつでも適切などんな
方式ででもゼロに設定される。以上の記載により、当業
者には理解できるように、本出願人等は、構造修正動作
が保留中である領域以外の木全体でキー・レコードの挿
入及び削除の実行を可能にすることによって、高度な並
行性を備えた、トランザクション処理システムにおける
索引木の並行修正の方法及び装置を提供した。
リズムでは、当業者には当然のことながら、SMOビッ
トは、構造修正動作が完了した後いつでも適切などんな
方式ででもゼロに設定される。以上の記載により、当業
者には理解できるように、本出願人等は、構造修正動作
が保留中である領域以外の木全体でキー・レコードの挿
入及び削除の実行を可能にすることによって、高度な並
行性を備えた、トランザクション処理システムにおける
索引木の並行修正の方法及び装置を提供した。
さらに、構造修正動作が完了すると、見かけ補償ログ・
レコードを利用して、問題のトランザクションが新しい
整合点に達する前に、システム障害に関わらず、構造修
正動作は取り消されないようにする。このようにして、
索引木の物理的整合性が維持され、この維持に基づく高
度な並行性により、複数の並行ユーザによる索引木の利
用度が高まる。
レコードを利用して、問題のトランザクションが新しい
整合点に達する前に、システム障害に関わらず、構造修
正動作は取り消されないようにする。このようにして、
索引木の物理的整合性が維持され、この維持に基づく高
度な並行性により、複数の並行ユーザによる索引木の利
用度が高まる。
同様に、削除が行なわれたばかりのノード内のフラグ・
ビットを利用して、取消し中に発生する構造修正動作の
影響を受ける恐れのあるキー・レコード挿入が遅延され
る。レコード削除を組み込んでいるトランザクションが
整合状態に達すると、削除ビットが再度ゼロに設定され
、遅延されたキー・レコード挿入が進行できるようにな
る。
ビットを利用して、取消し中に発生する構造修正動作の
影響を受ける恐れのあるキー・レコード挿入が遅延され
る。レコード削除を組み込んでいるトランザクションが
整合状態に達すると、削除ビットが再度ゼロに設定され
、遅延されたキー・レコード挿入が進行できるようにな
る。
当業者には理解できるように、本明細書に記載された動
作は、一般的にリーフ・モードで行なわれるように示さ
れているが、こうしたノード分割動作及びノード圧縮動
作によってしばしば、同様の動作がルート・ノードに向
かって木をさかのぼって伝播される。本明細書で開示し
た方法は、こうしたより高いレベルの動作にも同様に適
用できることを理解されたい。
作は、一般的にリーフ・モードで行なわれるように示さ
れているが、こうしたノード分割動作及びノード圧縮動
作によってしばしば、同様の動作がルート・ノードに向
かって木をさかのぼって伝播される。本明細書で開示し
た方法は、こうしたより高いレベルの動作にも同様に適
用できることを理解されたい。
本発明を好ましい実施例に関して詳しく図示し説明した
が、当業者には当然のことながら、本発明の精神と範囲
を逸脱せずに形態及び細部に様々な変更を加えることが
できる。
が、当業者には当然のことながら、本発明の精神と範囲
を逸脱せずに形態及び細部に様々な変更を加えることが
できる。
F1発明の効果
本発明によれば、索引木を介してデータベース中のレコ
ードにアクセスする効率の高い方法が提供される。
ードにアクセスする効率の高い方法が提供される。
第1図は、本発明による並行アクセス・データベース・
システムの構成図である。 第2図は、本発明によるデータベースにおける初期探索
動作を示す論理流れ図である。 第3図は、本発明によるデータベースにおける取出し動
作を示す論理流れ図である。 削除動作を示す論理流れ図である。 第6図は、本発明によるキー・レコード挿入の取消し動
作を示す論理流れ図である。 第7図は、本発明によるデータベースにおけるキー・レ
コード削除の取消しを示す論理流れ図である。 第8図は、本発明によるノード分割アルゴリズムを示す
論理流れ図である。 第9図は、本発明によるノード圧縮アルゴリズムを示す
論理流れ図である。 10・・・・対話型ワーク・ステーション、12・・・
・上位プロセッサ、14・・・・データベース。 出願人 インターナショナル・ビジネス・マシーンズ
eコーポレーション 代理人 弁理士 頓 宮 孝 (外1名) 第1図 !’T4b図 第5b図 6a 第9図
システムの構成図である。 第2図は、本発明によるデータベースにおける初期探索
動作を示す論理流れ図である。 第3図は、本発明によるデータベースにおける取出し動
作を示す論理流れ図である。 削除動作を示す論理流れ図である。 第6図は、本発明によるキー・レコード挿入の取消し動
作を示す論理流れ図である。 第7図は、本発明によるデータベースにおけるキー・レ
コード削除の取消しを示す論理流れ図である。 第8図は、本発明によるノード分割アルゴリズムを示す
論理流れ図である。 第9図は、本発明によるノード圧縮アルゴリズムを示す
論理流れ図である。 10・・・・対話型ワーク・ステーション、12・・・
・上位プロセッサ、14・・・・データベース。 出願人 インターナショナル・ビジネス・マシーンズ
eコーポレーション 代理人 弁理士 頓 宮 孝 (外1名) 第1図 !’T4b図 第5b図 6a 第9図
Claims (2)
- (1)少なくとも1つの構造変更動作を含む複数の動作
を含むトランザクションを実行する間に索引木に並行的
にアクセスすることを可能にする方法であって、 上記複数の動作を順次に実行し、 上記構造変更動作前に実行された選択された動作の系列
の標識を記憶し、 上記構造変更動作の完了時に上記選択された動作の上記
記憶された標識を指すレコードを書込み、上記構造変更
動作の完了前に上記トランザクションの終了が起きた時
は上記複数の動作の各々をロール・バックし、 上記構造変更動作の完了後に上記トランザクションの終
了が起きた時は構造変更に関係しない動作のみをロール
・バックするステップを含む 索引木への並行アクセス方法。 - (2)少なくとも1つの構造変更動作を含む複数の動作
を含むトランザクションを実行する間に索引木を通じて
データにアクセスする並行アクセス・データベース・シ
ステムであって、 上記複数の動作を順次に実行する手段と、 上記構造変更動作の前に実行された選択された動作の順
次位置の標識を記憶する手段と、上記構造変更動作の完
了時に上記選択された動作の順次位置の上記記憶された
標識を指す補償ログ・レコードを記憶する手段と、 上記構造変更動作の完了前に上記トランザクションが終
了する時は上記複数の動作の各々をロール・バックし、
かつ上記構造変更動作の完了後に上記トランザクション
が終了する時は構造変更に関係しない動作のみをロール
・バックする制御手段とを有するデータベース・システ
ム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US179190 | 1988-04-08 | ||
| US07/179,190 US5123104A (en) | 1988-04-08 | 1988-04-08 | Method and apparatus for concurrent modification of an index tree in a transaction processing system utilizing selective indication of structural modification operations |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0212460A true JPH0212460A (ja) | 1990-01-17 |
| JP2505040B2 JP2505040B2 (ja) | 1996-06-05 |
Family
ID=22655596
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1030131A Expired - Fee Related JP2505040B2 (ja) | 1988-04-08 | 1989-02-10 | 索引木への並列アクセスのためのデ―タ・アクセス方法およびデ―タ処理システム |
Country Status (13)
| Country | Link |
|---|---|
| US (1) | US5123104A (ja) |
| EP (1) | EP0336035B1 (ja) |
| JP (1) | JP2505040B2 (ja) |
| KR (1) | KR930002331B1 (ja) |
| CN (1) | CN1021713C (ja) |
| BR (1) | BR8901659A (ja) |
| DE (1) | DE3854667T2 (ja) |
| ES (1) | ES2079355T3 (ja) |
| GB (1) | GB8818455D0 (ja) |
| HK (1) | HK71296A (ja) |
| MY (1) | MY107385A (ja) |
| PH (1) | PH27313A (ja) |
| SG (1) | SG42824A1 (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0324645A (ja) * | 1989-06-21 | 1991-02-01 | Nec Corp | 情報処理装置 |
| JPH0324646A (ja) * | 1989-06-21 | 1991-02-01 | Nec Corp | 情報処理装置 |
Families Citing this family (65)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0402542B1 (en) * | 1989-06-13 | 1997-01-22 | International Business Machines Corporation | Method of removing uncommitted changes to stored data by a database management system |
| CA2027934C (en) * | 1989-12-22 | 1994-06-21 | Cherie C. Barnes | Accelerated deadlock detection in congested data transactions |
| US5319777A (en) * | 1990-10-16 | 1994-06-07 | Sinper Corporation | System and method for storing and retrieving information from a multidimensional array |
| US5430869A (en) * | 1991-05-29 | 1995-07-04 | Hewlett-Packard Company | System and method for restructuring a B-Tree |
| US5764877A (en) * | 1991-06-25 | 1998-06-09 | Digital Equipment Corporation | Media recovery with time-split B-trees |
| US5276872A (en) * | 1991-06-25 | 1994-01-04 | Digital Equipment Corporation | Concurrency and recovery for index trees with nodal updates using multiple atomic actions by which the trees integrity is preserved during undesired system interruptions |
| US5270712A (en) * | 1992-04-02 | 1993-12-14 | International Business Machines Corporation | Sort order preserving method for data storage compression |
| US5404508A (en) * | 1992-12-03 | 1995-04-04 | Unisys Corporation | Data base backup and recovery system and method |
| US5440732A (en) * | 1993-02-05 | 1995-08-08 | Digital Equipment Corp., Pat. Law Gr. | Key-range locking with index trees |
| US5678040A (en) * | 1993-10-29 | 1997-10-14 | Motorola, Inc. | Method for managing a hierarchical design transaction |
| US5590318A (en) * | 1993-11-18 | 1996-12-31 | Microsoft Corporation | Method and system for tracking files pending processing |
| JP3441807B2 (ja) * | 1994-09-19 | 2003-09-02 | 株式会社日立製作所 | B木インデクスの管理方法およびシステム |
| US5748952A (en) * | 1995-05-10 | 1998-05-05 | International Business Machines Corporation | System and method for avoiding complete index tree traversals in sequential and almost sequential index probes |
| US5713017A (en) * | 1995-06-07 | 1998-01-27 | International Business Machines Corporation | Dual counter consistency control for fault tolerant network file servers |
| US5644763A (en) * | 1995-06-28 | 1997-07-01 | Sybase, Inc. | Database system with improved methods for B-tree maintenance |
| US5842196A (en) * | 1996-04-03 | 1998-11-24 | Sybase, Inc. | Database system with improved methods for updating records |
| US5999946A (en) | 1996-04-10 | 1999-12-07 | Harris Corporation | Databases in telecommunications |
| US5832484A (en) * | 1996-07-02 | 1998-11-03 | Sybase, Inc. | Database system with methods for parallel lock management |
| US6009425A (en) * | 1996-08-21 | 1999-12-28 | International Business Machines Corporation | System and method for performing record deletions using index scans |
| US5937401A (en) * | 1996-11-27 | 1999-08-10 | Sybase, Inc. | Database system with improved methods for filtering duplicates from a tuple stream |
| US5958005A (en) * | 1997-07-17 | 1999-09-28 | Bell Atlantic Network Services, Inc. | Electronic mail security |
| US6792432B1 (en) | 1998-03-31 | 2004-09-14 | Sybase, Inc. | Database system with methods providing high-concurrency access in B-Tree structures |
| US6631366B1 (en) | 1998-10-20 | 2003-10-07 | Sybase, Inc. | Database system providing methodology for optimizing latching/copying costs in index scans on data-only locked tables |
| US6363387B1 (en) | 1998-10-20 | 2002-03-26 | Sybase, Inc. | Database system providing methodology for enhancing concurrency using row update bit and deferred locking |
| US6606626B1 (en) | 1998-10-20 | 2003-08-12 | Sybase, Inc. | Database system with lock manager enhancement for improving concurrency |
| US6591269B1 (en) * | 1999-05-19 | 2003-07-08 | Sybase, Inc. | Database system with methodology for online index rebuild |
| US6490578B1 (en) | 2000-04-05 | 2002-12-03 | Sybase, Inc. | Database system with methodology for high-performance date |
| US6647386B2 (en) * | 2000-12-14 | 2003-11-11 | International Business Machines Corporation | Method, system, and program for reverse index scanning |
| US6735600B1 (en) * | 2001-03-30 | 2004-05-11 | Lsi Logic Corporation | Editing protocol for flexible search engines |
| US6944615B2 (en) * | 2001-06-28 | 2005-09-13 | International Business Machines Corporation | System and method for avoiding deadlock situations due to pseudo-deleted entries |
| US7010662B2 (en) * | 2002-02-27 | 2006-03-07 | Microsoft Corporation | Dynamic data structures for tracking file system free space in a flash memory device |
| US7533214B2 (en) * | 2002-02-27 | 2009-05-12 | Microsoft Corporation | Open architecture flash driver |
| US6901499B2 (en) * | 2002-02-27 | 2005-05-31 | Microsoft Corp. | System and method for tracking data stored in a flash memory device |
| US7085879B2 (en) * | 2002-02-27 | 2006-08-01 | Microsoft Corporation | Dynamic data structures for tracking data stored in a flash memory device |
| US7082512B2 (en) * | 2002-11-21 | 2006-07-25 | Microsoft Corporation | Dynamic data structures for tracking file system free space in a flash memory device |
| US7281050B2 (en) * | 2003-04-08 | 2007-10-09 | Sun Microsystems, Inc. | Distributed token manager with transactional properties |
| US20040236744A1 (en) * | 2003-05-22 | 2004-11-25 | Desai Paramesh S. | Method for ensuring referential integrity in highly concurrent datbase environments |
| US20050102255A1 (en) * | 2003-11-06 | 2005-05-12 | Bultman David C. | Computer-implemented system and method for handling stored data |
| US7324995B2 (en) * | 2003-11-17 | 2008-01-29 | Rackable Systems Inc. | Method for retrieving and modifying data elements on a shared medium |
| US20050108300A1 (en) * | 2003-11-17 | 2005-05-19 | Terrascale Technologies Inc. | Method for the management of local client cache buffers in a clustered computer environment |
| US7293043B1 (en) * | 2003-12-04 | 2007-11-06 | Sprint Communications Company L.P. | Tracking switch transactions |
| US7650352B2 (en) * | 2006-03-23 | 2010-01-19 | International Business Machines Corporation | System and method for increasing availability of an index |
| CN100447294C (zh) * | 2006-03-27 | 2008-12-31 | 南京航空航天大学 | 一种生长厚纳米金刚石膜的方法 |
| US7941451B1 (en) * | 2006-08-18 | 2011-05-10 | Unisys Corporation | Dynamic preconditioning of a B+ tree |
| CN100472537C (zh) * | 2007-06-20 | 2009-03-25 | 中国科学院计算技术研究所 | 一种资源空间模型的存储与访问方法 |
| KR100922389B1 (ko) * | 2007-07-04 | 2009-10-19 | 삼성전자주식회사 | 플래시 메모리를 위한 색인 스킴 |
| US8706699B2 (en) * | 2009-07-16 | 2014-04-22 | Synopsys, Inc. | Transaction history with bounded operation sequences |
| US20110137922A1 (en) * | 2009-12-07 | 2011-06-09 | International Business Machines Corporation | Automatic generation of a query lineage |
| US20110145201A1 (en) * | 2009-12-11 | 2011-06-16 | Microsoft Corporation | Database mirroring |
| CN102385588B (zh) | 2010-08-31 | 2014-08-06 | 国际商业机器公司 | 用于提高数据并行插入的性能的方法和系统 |
| US8868514B2 (en) * | 2011-01-07 | 2014-10-21 | Microsoft Corporation | Transaction support for distributed data |
| US9582588B2 (en) | 2012-06-07 | 2017-02-28 | Google Inc. | Methods and systems for providing custom crawl-time metadata |
| US9003162B2 (en) | 2012-06-20 | 2015-04-07 | Microsoft Technology Licensing, Llc | Structuring storage based on latch-free B-trees |
| US9189518B2 (en) * | 2012-10-19 | 2015-11-17 | International Business Machines Corporation | Gathering index statistics using sampling |
| US8812744B1 (en) | 2013-03-14 | 2014-08-19 | Microsoft Corporation | Assigning priorities to data for hybrid drives |
| US9626126B2 (en) | 2013-04-24 | 2017-04-18 | Microsoft Technology Licensing, Llc | Power saving mode hybrid drive access management |
| US9323771B2 (en) * | 2013-04-24 | 2016-04-26 | Dell Products, Lp | Efficient rename in a lock-coupled traversal of B+tree |
| US9946495B2 (en) | 2013-04-25 | 2018-04-17 | Microsoft Technology Licensing, Llc | Dirty data management for hybrid drives |
| US9519591B2 (en) | 2013-06-22 | 2016-12-13 | Microsoft Technology Licensing, Llc | Latch-free, log-structured storage for multiple access methods |
| US9514211B2 (en) | 2014-07-20 | 2016-12-06 | Microsoft Technology Licensing, Llc | High throughput data modifications using blind update operations |
| US10095721B2 (en) * | 2015-03-27 | 2018-10-09 | International Business Machines Corporation | Index building in response to data input |
| CN105373835B (zh) * | 2015-10-14 | 2021-07-02 | 国网湖北省电力公司 | 一种基于构造树模型的链路信息管理方法 |
| US10558636B2 (en) | 2016-04-27 | 2020-02-11 | Sap Se | Index page with latch-free access |
| US10275480B1 (en) * | 2016-06-16 | 2019-04-30 | Amazon Technologies, Inc. | Immediately-consistent lock-free indexing for distributed applications |
| US11269837B2 (en) * | 2020-03-16 | 2022-03-08 | International Business Machines Corporation | Data tree checkpoint and restoration system and method |
Family Cites Families (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4318184A (en) * | 1978-09-05 | 1982-03-02 | Millett Ronald P | Information storage and retrieval system and method |
| US4468728A (en) * | 1981-06-25 | 1984-08-28 | At&T Bell Laboratories | Data structure and search method for a data base management system |
| US4507751A (en) * | 1982-06-21 | 1985-03-26 | International Business Machines Corporation | Method and apparatus for logging journal data using a log write ahead data set |
| US4627019A (en) * | 1982-07-08 | 1986-12-02 | At&T Bell Laboratories | Database management system for controlling concurrent access to a database |
| US4479196A (en) * | 1982-11-15 | 1984-10-23 | At&T Bell Laboratories | Hyperedge entity-relationship data base systems |
| US4698752A (en) * | 1982-11-15 | 1987-10-06 | American Telephone And Telegraph Company At&T Bell Laboratories | Data base locking |
| US4606002A (en) * | 1983-05-02 | 1986-08-12 | Wang Laboratories, Inc. | B-tree structured data base using sparse array bit maps to store inverted lists |
| US4611298A (en) * | 1983-06-03 | 1986-09-09 | Harding And Harris Behavioral Research, Inc. | Information storage and retrieval system and method |
| US4704703A (en) * | 1985-07-22 | 1987-11-03 | Airus Incorporated | Dynamic input processing system |
| US4868744A (en) * | 1986-03-03 | 1989-09-19 | International Business Machines Corporation | Method for restarting a long-running, fault-tolerant operation in a transaction-oriented data base system without burdening the system log |
| JPS62206628A (ja) * | 1986-03-07 | 1987-09-11 | Hitachi Ltd | 知識の蓄積方式 |
| US4878167A (en) * | 1986-06-30 | 1989-10-31 | International Business Machines Corporation | Method for managing reuse of hard log space by mapping log data during state changes and discarding the log data |
| US4823310A (en) * | 1987-08-10 | 1989-04-18 | Wang Laboratories, Inc. | Device for enabling concurrent access of indexed sequential data files |
| US4914569A (en) * | 1987-10-30 | 1990-04-03 | International Business Machines Corporation | Method for concurrent record access, insertion, deletion and alteration using an index tree |
| US4945474A (en) * | 1988-04-08 | 1990-07-31 | Internatinal Business Machines Corporation | Method for restoring a database after I/O error employing write-ahead logging protocols |
-
1988
- 1988-04-08 US US07/179,190 patent/US5123104A/en not_active Expired - Lifetime
- 1988-08-03 SG SG1995002310A patent/SG42824A1/en unknown
- 1988-08-03 GB GB888818455A patent/GB8818455D0/en active Pending
- 1988-08-03 ES ES88307158T patent/ES2079355T3/es not_active Expired - Lifetime
- 1988-08-03 EP EP88307158A patent/EP0336035B1/en not_active Expired - Lifetime
- 1988-08-03 DE DE3854667T patent/DE3854667T2/de not_active Expired - Fee Related
-
1989
- 1989-02-10 JP JP1030131A patent/JP2505040B2/ja not_active Expired - Fee Related
- 1989-03-29 MY MYPI89000400A patent/MY107385A/en unknown
- 1989-04-06 PH PH38442A patent/PH27313A/en unknown
- 1989-04-07 BR BR898901659A patent/BR8901659A/pt unknown
- 1989-04-07 CN CN89102067A patent/CN1021713C/zh not_active Expired - Lifetime
- 1989-04-07 KR KR1019890004568A patent/KR930002331B1/ko not_active Expired - Fee Related
-
1996
- 1996-04-25 HK HK71296A patent/HK71296A/en not_active IP Right Cessation
Non-Patent Citations (1)
| Title |
|---|
| IBM SYSTEM JOURNAL=1984 * |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0324645A (ja) * | 1989-06-21 | 1991-02-01 | Nec Corp | 情報処理装置 |
| JPH0324646A (ja) * | 1989-06-21 | 1991-02-01 | Nec Corp | 情報処理装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| BR8901659A (pt) | 1989-11-21 |
| JP2505040B2 (ja) | 1996-06-05 |
| EP0336035B1 (en) | 1995-11-08 |
| MY107385A (en) | 1995-11-30 |
| KR890016469A (ko) | 1989-11-29 |
| DE3854667T2 (de) | 1996-06-20 |
| CN1021713C (zh) | 1993-07-28 |
| CN1037044A (zh) | 1989-11-08 |
| GB8818455D0 (en) | 1988-09-07 |
| HK71296A (en) | 1996-05-03 |
| PH27313A (en) | 1993-05-28 |
| EP0336035A2 (en) | 1989-10-11 |
| US5123104A (en) | 1992-06-16 |
| SG42824A1 (en) | 1997-10-17 |
| ES2079355T3 (es) | 1996-01-16 |
| DE3854667D1 (de) | 1995-12-14 |
| EP0336035A3 (en) | 1992-07-01 |
| KR930002331B1 (ko) | 1993-03-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2505040B2 (ja) | 索引木への並列アクセスのためのデ―タ・アクセス方法およびデ―タ処理システム | |
| US12608363B2 (en) | Update and query of a large collection of files that represent a single dataset stored on a blob store | |
| JP3441807B2 (ja) | B木インデクスの管理方法およびシステム | |
| US6567928B1 (en) | Method and apparatus for efficiently recovering from a failure in a database that includes unlogged objects | |
| Mohan et al. | ARIES: A transaction recovery method supporting fine-granularity locking and partial rollbacks using write-ahead logging | |
| US6772155B1 (en) | Looking data in a database system | |
| US4945474A (en) | Method for restoring a database after I/O error employing write-ahead logging protocols | |
| Mohan et al. | ARIES/IM: an efficient and high concurrency index management method using write-ahead logging | |
| US6792432B1 (en) | Database system with methods providing high-concurrency access in B-Tree structures | |
| US5333303A (en) | Method for providing data availability in a transaction-oriented system during restart after a failure | |
| US5625815A (en) | Relational database system and method with high data availability during table data restructuring | |
| Kornacker et al. | High-concurrency locking in R-trees | |
| US9576038B1 (en) | Consistent query of local indexes | |
| US9922086B1 (en) | Consistent query of local indexes | |
| US20030078910A1 (en) | Transaction processing system using efficient file update processing and recovery processing | |
| US7225206B2 (en) | System and method for reorganizing stored data | |
| Lomet | Simple, robust and highly concurrent B-trees with node deletion | |
| US7051051B1 (en) | Recovering from failed operations in a database system | |
| Jaluta et al. | Recoverable B+-trees in centralized database management systems | |
| Jaluta | Transaction management in b-tree-indexed database systems | |
| US7650352B2 (en) | System and method for increasing availability of an index | |
| KR100243113B1 (ko) | 데이터베이스 관리 시스템에서 에스큐엘 수준의갱신 연산의 원자성 보장 방법 | |
| Alonso et al. | Reducing recovery constraints on locking based protocols | |
| US7209919B2 (en) | Library server locks DB2 resources in short time for CM implicit transaction | |
| CN117687807A (zh) | 数据处理方法、装置、电子设备及存储介质 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |