JPH0887511A - B木インデクスの管理方法およびシステム - Google Patents

B木インデクスの管理方法およびシステム

Info

Publication number
JPH0887511A
JPH0887511A JP6222931A JP22293194A JPH0887511A JP H0887511 A JPH0887511 A JP H0887511A JP 6222931 A JP6222931 A JP 6222931A JP 22293194 A JP22293194 A JP 22293194A JP H0887511 A JPH0887511 A JP H0887511A
Authority
JP
Japan
Prior art keywords
index
node
split
processing
log
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP6222931A
Other languages
English (en)
Other versions
JP3441807B2 (ja
Inventor
Norihiro Hara
憲宏 原
Nobuo Kawamura
信男 河村
Jiyunichirou Soshiki
潤一郎 祖敷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Software Engineering Co Ltd
Hitachi Ltd
Original Assignee
Hitachi Software Engineering Co Ltd
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Software Engineering Co Ltd, Hitachi Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP22293194A priority Critical patent/JP3441807B2/ja
Priority to US08/527,224 priority patent/US5758356A/en
Publication of JPH0887511A publication Critical patent/JPH0887511A/ja
Application granted granted Critical
Publication of JP3441807B2 publication Critical patent/JP3441807B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/953Organization of data
    • Y10S707/956Hierarchical
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99939Privileged access
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

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)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【目的】 複数のトランザクションが同一のB木インデ
クスを通じてデータにアクセスするデータベース管理シ
ステムにおいて、B木インデクスの構造変更完了の中断
処理においても、他トランザクションのB木インデクス
へのアクセスを妨げない効率の良いアクセスを提供す
る。 【構成】 インデクス構造変更処理部105において、
実行されているインデクス構造変更処理最中にトランザ
クションの中断が発生した場合、処理最中のインデクス
構造変更処理のログをインデクス構造変更処理ログ解析
部108によって解析し、未完インデクス構造変更完成
処理制御部109において未完インデクス構造変更処理
を完成させる、すなわちロールフォワードする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は一般にB木インデクスの
管理方法に関し、特にデータベース管理システムにおい
て、データベースとして格納管理されている複数のレコ
ードに対して関連付けられているB木インデクスの管理
方法およびシステムに関する。
【0002】
【従来の技術】データベース管理システムにおいて、B
木インデクスは、データベース中のレコードに迅速に効
率良くアクセスするための手段の一つとして一般に使用
されている。B木インデクスは、1つのルートノードを
頂点に、ルートノードから多数のレベルにわたりノード
が枝分かれしている。枝分かれしたノードの内末端のノ
ードをしばしばリーフノードと呼ぶ。またルートノード
を含むリーフノード以外のノードをしばしば上位ノード
と呼ぶ。各ノード内は以下に示す情報から構成される複
数のインデクスエントリを持つ。リーフノード内のイン
デクスエントリは、データベース中のレコードを示すポ
インタと、そのレコードの特徴の1つを表すキー値から
構成される。また上位ノード内のインデクスエントリ
は、次の下位レベルにあるノード(子ノード)を示すポ
インタと、その子ノードから枝分かれして最終的にリー
フノードで管理されているキー値の範囲を示す1キー値
から構成される。上位インデクスエントリ内のキー値
は、B木インデクスへのアクセス・プログラムがルート
ノードから目的とするレコードへのポインタを含むイン
デクスエントリが格納管理されているリーフノードへと
辿っていく際の道しるべ(判定要素)の役割を担う。
【0003】図15に、B木インデクス構造の一例を示
す。図を見ると分かるように、リーフノードが管理する
インデクスエントリのキー値はある順序規則に従って順
に格納されている。本実施例では、図の左から右方向へ
キー値が昇順に格納されている。一つの上位インデクス
エントリがポイントする子ノードには、その上位インデ
クスエントリ内キー値よりも小さいキー値を持つインデ
クスエントリが格納されている。
【0004】レコードを含むデータベーステーブルに対
して複数のトランザクションが同時にアクセスしてくる
場合、問題が起こる。具体的には、あるトランザクショ
ンが1つのレコードを更新しようとしたとき、同時に他
のトランザクションが同一レコードにアクセスしようと
するとき、競合状況が発生する。競合問題の解決法の1
つとして、レコードまたはB木インデクスのある部分
(B木インデクス全体、ノード、インデクスエントリ、
キー値など)に対するロッキング方式(排他的アクセス
方式)がある。ロッキング方式は、データにアクセスす
る前に強制的にトランザクションにロックを取得させ
る。このとき他のトランザクションによってロックがか
けられている場合、そのロックが衝突するために、必要
なロックを取得できないことがある。ロッキング方式は
自トランザクションの更新結果や参照結果を確実に保証
してくれるが、ロックを取得中他のトランザクションの
アクセスをロック解除まで待たすので、システムの多重
度(同時実行性)を高めスループットを上げるためには、
1つのトランザクションが同時に取得するロックの数や
ロックによる影響範囲を最小限に抑えることが重要であ
る。
【0005】B木インデクスに対する重要な更新操作
に、スプリット処理に代表されるB木インデクス構造変
更処理がある。スプリット処理は、インデクスエントリ
をリーフノードに挿入しようとした際、ノード内の空き
エリアが不足する場合に発生する。挿入対象のノードの
インデクスエントリを新しく割り当てたノードに分割
し、新ノードに関連する隣接ノードのポインタをB木構
造が保たれるように張り替える処理である。図16に、
図15のノードN5に対してキー6のインデクスエント
リを挿入した場合のスプリット処理完了後の状態を示
す。図15に示す状態において、キー6のインデクスエ
ントリの挿入をノードN5に対して行おうとする。しか
し空きエリア不足により挿入ができないので、ノードN
5のスプリット処理が発生し、ノードN5を新ノードN
51に分割する。その結果ノードが増えたので上位ノー
ドN2に対して、新ノードN51へのポインタを挿入し
ようとするが、ノードN2の空きエリアも不足している
のでリーフレベルと同様に、ノードN2を新ノードN2
1に分割し、新ノードN21へのポインタをノードN1
に対して挿入し、スプリット処理を完了する。
【0006】スプリット処理のようなB木インデクス構
造変更処理は、インデクスのノード間のポインタ関連の
更新を伴うため、B木インデクス構造変更処理と他トラ
ンザクションのインデクス構造変更を伴わないアクセス
処理との競合状況で以下のような2つ問題が生じる。図
17は、上記スプリット処理においてリーフノード分割
時点の状態を示す。この状態で、他トランザクションT
x2がキー7を検索しようとすると、新ノードN51を
示すポインタがまだ張られていないのでキー7は見つか
らないという不正結果を返してしまう。二つ目の問題
は、次のようなものである。他トランザクションTx3
がスプリット処理最中にノードN5にキー4を挿入した
とする。スプリット処理が完成する前にトランザクショ
ンが中断され、スプリット処理に関与したノードが元に
戻された場合、他トランザクションTx3の挿入結果キ
ー4は失われてしまう。上記のよう問題の発生を回避す
るため、トランザクションの完了またはインデクス構造
変更が完了するまで、インデクス全体あるいはインデク
ス構造変更影響範囲への他トランザクションのアクセス
を上述のロックにより待たされる。これは、システムの
多重度(同時実行性)を下げる要因になる。
【0007】また、上記スプリット処理の二つ目の問題
点でも示したように他トランザクションの更新結果など
が失われることなくトランザクションの取り消しあるい
は回復が行われるように管理しなければならない。デー
タベース管理システムにおける回復管理は、データベー
ス内に含まれているデータ、あるいはB木インデクスな
どを、障害発生あるいはトランザクションの中断発生時
に、トランザクションのオール・オア・ナッシングの性
質に沿って回復できるように管理することである。
【0008】このトランザクション回復を保証するに
は、更新動作の結果がシステムの再起動時に適切に反映
されるように、さらにシステム障害時進行中のトランザ
クションのすべての更新を無効にするように、データベ
ース管理システムが、進行中のトランザクションおよび
その更新動作状態を憶えておくことができなければなら
ない。これは、不揮発な外部記憶装置に記憶されたログ
に各トランザクションのその初めから終わりまでの進行
状況と、回復可能データ資源を変更させる動作を記録す
ることによって実行できる。
【0009】B木インデクスに関する代表的な文献には
以下のものがある。 ・Lehman,p.,Yao,S.B.:Efficient Locking for Concur
rent Operations on B-Trees ,ACM Transactions on Da
tabase Systems,Vol6,No.4,December 1981. ・Kwong,Y.S,Wood,D.:A New Method for Concurrency
on B-Trees ,IEEE Transactions on SoftwareEngineeri
n,No.3,pp.211-222,May 1982. ・Mohan,C.,Levine,F.:ARIES/IM:An Efficientt and H
igh Concurrency IndexManagement Method Using Write
-Ahead Logging,ACM-SIGMOD International Conference
on Management of Data, San Diego,June 1992.
【0010】
【発明が解決しようとする課題】Lehman,p.とYao,S.B.
の論文では、ノード内にスプリット方向への隣接ノード
へのポインタを設けることによって、スプリット処理中
の新ノードへのアクセスを可能にし同時実行性の向上を
実現している。しかし、回復管理に関しては触れていな
い。
【0011】Kwong,Y.SとWood,D.の論文では、スプリッ
ト処理範囲のコピーをインデクス本体とは別の作業領域
にとり、そこでスプリット処理を行ってから、インデク
ス本体のスプリット処理範囲と入れ替える方式が述べら
れている。その方式では、スプリット処理と検索処理と
の同時実行は提供されるが、スプリット範囲への更新は
許可していない。また、スプリット処理範囲インデクス
ノードのコピーを扱うため冗長なノードを格納するため
のページが多数必要であり、ページあるいはエリアの使
用効率が低下する。回復管理に関しては触れていない。
【0012】Mohan,C.とLevine,F.の論文では、インデ
クス構造変更を含めたB木インデクスアクセスの同時実
行性と回復管理との両側面から論じている。インデクス
というロック資源をスプリット処理が実行中であること
を示すフラグとして用いることと、インデクスノード内
にそのノードがスプリット処理に関与しているかどうか
を示すビットフラグを設けることにより、スプリット処
理中にはスプリット処理範囲への他トランザクションの
アクセスを待たせるようにしている。しかし、スプリッ
ト処理同士はシリアライズされ、複数のスプリット処理
の同時実行は提供されない。
【0013】本発明の目的は、複数ユーザに対して高多
重度なB木インデクスアクセス方式を提供することであ
る。本発明の他の目的は、木構造の変更最中の中断処理
においても、他ユーザのB木インデクスへのアクセスも
妨げない効率の良いアクセスを提供することである。本
発明のさらなる目的は、B木を構成するノードが格納さ
れるエリアの効率的な利用方法を提供することである。
【0014】
【課題を解決するための手段】本発明によれば、複数の
トランザクションが同一のB木インデクスを通じてデー
タにアクセスする手段を有するデータベース管理システ
ムにおいて、前記トランザクションの内あるトランザク
ションがデータの挿入あるいは更新に伴い、上記B木イ
ンデクスを構成するページへのインデクス構成要素の挿
入を行い、複数ページに対する更新操作からなるインデ
クス構造変更動作を上記B木インデクスに引き起こす際
に、上記構造変更動作開始時に、構造変更処理を実施す
るために必要な情報を含むレコードを書き込み、構造変
更処理を構成する各々の処理実行時には当該インデクス
構造変更処理における到達段階を示すレコードを書き込
む手段と、上記構造変更動作完了前に上記トランザクシ
ョンが中断された場合、上記構造変更動作に関与した各
々の処理に対応する前記レコードと、開始時レコードか
ら構造変更動作完成に必要な処理を決定する解析手段を
有し、構造変更動作をロールフォワードする手段と、構
造変更動作をロールフォワードした後に挿入あるいは削
除したインデクス構成要素に対する処理をロールバック
する手段を用いることにより、構造変更動作と他トラン
ザクションとの高同時実行性を提供する。
【0015】
【作用】本発明では、B木インデクス構造変更処理完了
前に当該構造変更処理を含むトランザクションが中断さ
れた場合、構造変更未完であるインデクス構造を元に戻
さず、ロールフォワードすなわち完成させることによ
り、当該構造変更処理に関与したインデクスページ(ノ
ード)に対する他トランザクションのアクセスを構造変
更処理完了前に早期に許可することができるので、複数
トランザクションの同一インデクスへの同時アクセスの
多重度が向上し、高速アクセスを可能とする。
【0016】
【実施例】以下、図を用いて本発明の一実施例について
説明する。図18には、本発明にデータベース管理シス
テムの構成図が示してある。図を見ると分かるようにデ
ータベース管理システ1802は、応用プログラム18
01からのデータ処理(問い合わせ)要求を受け付け解析
し、最適化等を施し、データ処理の実行制御を行う問い
合わせ解析及び実行制御手段(1803)と、データベー
ス処理を担当するデータベース処理部(1804)、お
よびデータベースバッファ(1807)から構成され
る。
【0017】ユーザは、応用プログラム1801を介
し、データベース管理システム1802を用いて、デー
タベース1811内のデータ部1813に含まれるデー
タレコードを探索、アクセスし、変更することができ
る。データベースは通常データレコードへの効率のよい
アクセスを実現するために、B木インデクス1812を
利用することによって検索される。
【0018】代表的なB木インデクスの構造は、少なく
とも1つのノードから構成され、複数のレベルのノード
がB木インデクスの最上位レベルに位置する1つのルー
トノードから枝分かれしている。各ノードに含まれる情
報(インデクスエントリ)は、あるキーと、次の下位レ
ベルのノードを指すポインタ、あるいは最下層レベルの
ノードではそのキーを持つデータベースに含まれるレコ
ードを指すポインタを含む。最下層レベルはしばしば、
リーフノードと呼ばれる。通常B木インデクスの1ノー
ドは、データベース上では、アクセス単位であるページ
によって実現される。
【0019】データベース1811内のデータ部181
3あるいはB木インデクス部1812は、アクセス単位
であるページ単位にデータベースバッファ1807にGE
Tしてくることによりアクセスが可能になる。バッファ
上のページを参照(検索)した後、バッファをRELEASE
することにより使用していたバッファを解放する。ま
た、バッファ上のページに対して更新を行った後、バッ
ファをPUTすることにより当該バッファ上のページがデ
ータベースに反映することを宣言し、使用していたバッ
ファを解放する。そのバッファ上のページはすぐにはデ
ータベースに反映されず、ある契機にデータベースに反
映される。バッファにGETしたページに他のトランザク
ションが不当にアクセスしないようにページに対してラ
ッチをかける。ラッチは一種のロックであるが通常のロ
ックよりもはるかに取得期間が短く、獲得と解除を安価
に行うことができる。本実施例では、インデクスノード
を参照する際にSラッチを、更新する際にXラッチをか
け、バッファ解放の際に獲得中ラッチを解除し、他トラ
ンザクションのアクセスを許可する。
【0020】図1に、本発明の基本構成図を示す。10
1は、図18でも述べたデータベース処理部を示す。デ
ータベース処理部101の中には、通常時インデクス処
理の実行制御を担当する通常処理制御部102と、トラ
ンザクションの中断が起こった場合に、そのトランザク
ションのそれまでのデータベース操作結果を取り消すた
めの処理を行うロールバック処理制御部103を持つ。
104は、インデクスエントリの検索、挿入、削除を行
うインデクスエントリ操作部、105はスプリット処理
等のインデクス構造変更を行うためのインデクス構造変
更処理部、106は種々の障害あるいはトランザクショ
ン中断時にデータベースの一貫性を保つために用いるロ
グをデータおよびインデクス操作時に取得するログレコ
ード取得部を表す。
【0021】また、107はロールバック処理時にログ
を解析しロールバック処理手順を決定するログ解析部、
108はログ解析でスプリット等のインデクス構造変更
処理ログと判断された場合にそのログを解析しインデク
ス構造変更処理を完成させるかを判断するインデクス構
造変更処理ログ解析部、109はインデクス構造変更処
理ログ解析部により解析決定された未完インデクス構造
変更処理を完成させる未完インデクス構造変更完成処理
制御部、110はログ情報に従ってデータおよびインデ
クス操作を取り消すロールバック処理を実行するロール
バック処理実行部を表す。
【0022】インデクスエントリ操作部104におい
て、B木インデクス操作を含むトランザクションは、最
上位ノードであるルートノードから選択されたノードま
でサーチすることによって実行される。B木インデクス
構造変更処理を含むトランザクションも同様にまずルー
トノードから選択されたノードまでサーチし、その後B
木インデクス構造変更処理を行うことにより実行され
る。
【0023】インデクスエントリの挿入処理において、
ノード内空き領域不足によりインデクスエントリの追加
ができない場合、インデクス構造変更処理であるスプリ
ット処理が発生する。スプリット処理の実行はインデク
ス構造変更処理部105が行う。
【0024】インデクス構造変更処理時には、ログレコ
ード取得部106により次に述べるようにログレコード
が取得される。インデクス構造変更処理開始時に、構造
変更処理を実施するために必要な情報を含むログレコー
ドを書き込む。また、インデクス構造変更処理を構成す
る各々の処理実行時には、当該インデクス構造変更処理
における到達段階を示すログレコードを書き込む。
【0025】トランザクションの中断が発生した際、ロ
ールバック処理制御部103において、ロールバック対
象のトランザクションが中断時までに行った更新操作に
関連するログを、ログ解析部107において時系列(更
新操作順)とは逆に一つずつ解析し、ロールバック処理
実行部110においてロールバック処理を施す。ロール
バック処理実行部110では、インデクスエントリ挿入
処理ログが渡された場合、ログ内の情報に基づき挿入し
たインデクスエントリを削除する。また、インデクスエ
ントリの削除処理ログが渡された場合には、ログ内の情
報に基づきインデクスエントリを挿入する。それらの処
理手順は、通常時のインデクスエントリの更新処理と同
じである。また、システムダウンの際のシステム回復
時、バッファの内容が失われているため、まずログから
ダウン時のバッファの状態を回復する。このことによっ
て通常時のロールバック処理と同じ方式でシステム回復
時のロールバックを行うことができる。
【0026】インデクス構造変更処理完了前に上記トラ
ンザクションが中断された場合、当該B木インデクス構
造変更処理に関与した各々の処理に対応するログレコー
ドと構造変更処理開始時取得したログレコードとをイン
デクス構造変更処理ログ解析部108により解析し、未
完成である当該B木インデクス構造変更処理完成に必要
な処理手順を決定する。そして、未完インデクス構造変
更完成処理制御部109により、B木インデクス構造変
更完成処理をロールフォワードすなわち完成させる。
【0027】B木インデクス構造変更処理をロールフォ
ワードした後に、ロールバック処理実行部110により
挿入したインデクスエントリに対する処理をインデクス
エントリ削除処理によりロールバックする。
【0028】図2では、インデクスエントリ更新時(ス
プリット処理を除く)に取得するログレコードの1実施
例を示す。210はインデクスエントリ削除ログを、2
20はインデクスエントリ挿入ログを表す。インデクス
エントリ削除ログ210は、削除キー211、削除デー
タへのポインタ212およびリラン時のバッファ復元情
報213を含む。リラン時のバッファ復元情報213
は、システムダウン時のバッファの状態を復元するため
の情報である。システムダウン時のリラン処理では、ま
ずバッファの状態をダウン時の状態に復元し、その後で
通常のロールバック処理と同じ方式でダウン時活動中で
あったトランザクションの操作をロールバックする。バ
ッファ復元情報の一実施例として更新後の物理ノードイ
メージが挙げられる。その場合、リラン時のREDO処理
(バッファ復元処理)において、復活対象バッファに復
元情報213を物理的にかぶせることにより容易にバッ
ファを復元することができる。
【0029】図3では、インデクス構造変更処理である
スプリット処理実行時に取得するログレコードの1実施
例を示す。310はスプリット処理開始ログを、320
は上位ノードスプリットログを、330はスプリット完
了ログを表す。本実施例のスプリット処理は、リーフノ
ードからボトムアップにインデクス上位レベルに向かっ
て実行する。すなわち、リーフノードレベルの分割およ
び新データへのポインタの挿入から始まり、上位ノード
の分割および新エントリの挿入を経て、上位ノードの新
エントリ挿入によって完了する。場合によっては、上位
ノードの分割および新エントリの挿入処理は伴わない。
これは、インデクスレベル2までしかインデクス構造変
更が波及しない場合である。本実施例では、リーフノー
ドのインデクスレベルを1とし、上位ノードへ向かって
インデクスレベルは1ずつ増加するものとする。スプリ
ット処理に関するログレコードは、1インデクスレベル
ごとに取得する。スプリット処理におけるリーフページ
レベルの分割および新データへのポインタ挿入時にスプ
リット処理開始ログ310を取得する。スプリット処理
開始ログ310は、分割キー311、スプリット新ノー
ド識別子312、インデクスサーチ履歴313、挿入キ
ー314、データへのポインタ315、リラン時バッフ
ァ復元情報(スプリットノード用)316およびリラン
時バッファ復元情報(新ノード用)317を含む。トラ
ンザクション中断時またはシステムダウン時の回復処理
時において、このスプリット処理開始ログ310内の情
報を得ることによって、インデクス構造変更処理である
スプリット処理をを実施することができる。分割キー3
11とスプリット新ノード識別子312は、トランザク
ション中断時にスプリット処理がリーフノードレベルま
でしか行われておらず未完成である場合に、インデクス
レベル2の上位ノードメンテナンス処理を実施するため
の情報である。インデクスサーチ履歴313は、通常時
ルートノードからリーフノードまでのインデクスサーチ
際のサーチ履歴情報であり、辿ってきたノードの識別子
より構成される。スプリット処理において次上位ノード
メンテナンス処理の対象ノードの確定に用いる。本スプ
リット処理開始ログ310内のインデクスサーチ情報
は、未完スプリット完成処理において次上位ノードの確
定に用いる。
【0030】挿入キー314およびデータへのポインタ
315は本スプリット処理を引き起こす要因となった挿
入インデクスエントリの情報である。トランザクション
中断時、スプリットが完了している場合、もしくは未完
スプリット処理完成後、この情報を用いて挿入されたイ
ンデクスエントリの削除を行う。リラン時バッファ復元
情報(スプリットノード用)316、リラン時バッファ
復元情報(新ノード用)317は、システムダウン時の
バッファの状態を復元するための情報である。システム
ダウンの際のリラン時REDO処理(バッファ復元処理)に
おいて、復活対象バッファにスプリット処理開始ログ3
10中の復元情報316または317を物理的にかぶせ
ることにより容易にバッファを復元することができる。
【0031】上位ノードの分割および新エントリの挿入
時に上位ノードスプリットログ320を取得する。この
上位ノードスプリットログ320は、インデクス構造変
更処理であるスプリット処理における到達段階および次
上位ノードに対する処理を進めるために必要な情報を有
する。上位ノードスプリットログ320は、分割キー3
21、スプリット新ノード識別子322、レベルn32
3、リラン時バッファ復元情報(スプリットノード用)
324およびリラン時バッファ復元情報(新ノード用)
325を含む。分割キー321とスプリット新ノード識
別子322は、トランザクション中断時にスプリット処
理が上位ノードレベルまでしか行われておらず未完成で
ある場合に、インデクスレベルn+1の上位ノードメンテ
ナンス処理を進めるための情報である。
【0032】レベルn323は、本ログレコードに対応
する処理が行われたインデクスレベルを示し、未完スプ
リット完成処理において、スプリット処理開始ログ31
0内のインデクスサーチ履歴313と合わせてメンテナ
ンス対象次上位ノードの確定に用いる。リラン時バッフ
ァ復元情報(スプリットノード用)234、リラン時バ
ッファ復元情報(新ノード用)235は、216、31
7と同様にシステムダウン時のバッファの状態を復元す
るための情報である。
【0033】ノード分割処理を伴わない上位ノードメン
テナンス時、すなわち上位ノードへの新エントリ挿入時
にスプリット完了ログ330を取得する。スプリット完
了ログ330は、スプリット処理到達段階としてスプリ
ット処理が完了したことを示す。スプリット完了ログ3
30は、リラン時バッファ復元情報(メンテナンス上位
ノード用)331を含む。リラン時バッファ復元情報
(メンテナンス上位ノード用)331は、316、31
7、324、325と同様システムダウン時のバッファ
の状態を復元するための情報である。
【0034】図4にB木インデクスにおける通常時処理
の論理流れ図を示す。図を見ると分かるように、B木イ
ンデクスに対するアクセス・プログラムはステップ40
0から始まり、ステップ401に進んで、そこでインデ
クスルートノードがSラッチされ、バッファにGETされア
クセスされる。Sラッチは、他の同時実行ユーザの同一
ノードに対するアクセスを制限する。このアクセス制限
により、他のユーザは、ノード内に含まれる情報にアク
セスしてそれを読みとる権限を与えられる。削除、挿入
など他のアクセス権限は許可されない。
【0035】ルートノードからのインデクスサーチ時に
は、まずステップ402においてルートページ内の情報
からインデクスレベルが1段かどうか、すなわちインデ
クスがルートノード1ノードのみにより構成されている
かを判定する。インデクスレベルが2以上の場合、以下
のようにインデクスサーチを下位ノードへと進めてい
く。ステップ403で、親ノード内のインデクスエント
リおよび図7の応用プログラ701からの問い合わせ要
求を解析して得られたサーチキーから、アクセスすべき
子ノードを識別する。そして、ステップ404において
インデクスサーチ履歴に現在アクセス中のノード(カレ
ントノード)のノード識別子を登録し、ステップ405
においてカレントノードのバッファをRELEASEし、ラッ
チを解除する。ステップ406において子ノードがリー
フノードかどうかを判定する。判定に用いる情報は、親
ノードをRELEASEする前に保持しておいた親ノード内の
情報を用いる。
【0036】具体的には、ノード内の情報にインデクス
レベルを持つようにする。ステップ406において子ノ
ードがリーフノードでない、すなわち上位ノードである
と判定された場合、以下のステップを踏んで、インデク
スをリーフノードまで辿る。ステップ407において子
ノードをSラッチし、バッファにGETする。そして、スキ
ャンキーがアクセス中ノードの管理範囲内かどうかをス
テップ408で判定する。本インデクス管理方式では、
他トランザクションのスプリット処理最中でもスプリッ
ト処理実行範囲に、制限されることなくアクセスするこ
とが可能であるが、タイミングによってはスプリット処
理との競合によってスキャンキーが本実施例のスプリッ
ト方向である右隣の新ノードに移動してしまっている場
合がある。その事象を408によって検知するのであ
る。
【0037】他スプリット処理によるスキャンキーの右
ノードへの移動を検知した場合、ステップ409によっ
てカレントノードのバッファをRELEASEし、ラッチを解
除し、ステップ410によって右隣の子ノードをSラッ
チし、バッファにGETする。そして、再び、スキップ4
08に戻り、スキャンキーの存在チェックを行う。右ノ
ードへの移動手段の具体例の1つとして上位ノードに右
ポインタを持たせる方式が挙げられる。本実施例でも右
隣への移動のために右ポインタを持たせる。ステップ4
08において、スキャンキーがノードの管理範囲内と判
定された場合、ステップ403に渡り(図4中
(A))、次の下位レベルへのサーチに進む。
【0038】ステップ406に戻って、子ノードがリー
フノードと判定された場合、アクセス・プログラムはス
テップ411に進み、実行すべき動作が検索処理かどう
かを判定する。動作が検索処理でない場合、すなわち、
動作がインデクスエントリまたはデータへのポインタの
挿入または削除である場合、ステップ412に進み更新
(挿入または削除)対象キーに対してXロックを獲得す
る。インデクスキーに対するXロックは、トランザクシ
ョンが完了するまで、操作対象インデクスキーに対応す
るインデクスエントリに、他トランザクションが検索お
よび更新処理ができないようにアクセスを制限するもの
である。トランザクションにおける一貫性を保持するた
めにインデクスキーへのロックが用いられる。もちろ
ん、目的が達成されるならば、インデクスキーに対する
ロックを獲得する必要はない。
【0039】代替案としてはデータレコードへのロック
をインデクスエントリとの関連によってインデクスエン
トリへの他トランザクションのアクセスを制限する方式
が挙げられる。Xロック獲得後、ステップ414により
ステップ408と同様のチェックを行い、スキャンキー
がノードの管理範囲外であれば、ステップ415、ステ
ップ416を介して右ノードにアクセスし、再びステッ
プ414に戻り、最終的に更新対象ノードにたどり着
く。ステップ414において更新対象ノードと判定され
た場合、アクセス・プログラムはステップ417に進み
インデクスエントリ更新処理を行い、アクセスプログラ
ムを終了する(ステップ426)。
【0040】ステップ411に戻って、実行すべき動作
が検索処理である場合、ステップ419に進みリーフノ
ードをSラッチし、バッファにGETする。その後、ステ
ップ420によりステップ408と同様のチェックを行
い、スキャンキーがノードの管理範囲外であれば、ステ
ップ421、ステップ422を介して右ノードにアクセ
スし、再びステップ420に戻り、最終的に検索対象ノ
ードにたどり着く。ステップ420において検索対象ノ
ードと判定された場合、アクセス・プログラムはステッ
プ423に進み、スキャンキーにSロックを獲得した
後、ステップ424によってインデクスエントリの検索
処理を行う。その後、ステップ425によってノードの
バッファをRELEASEし、ラッチを解除し、アクセスプロ
グラムを終了する。(ステップ426) ステップ402においてインデクスがルートページのみ
で構成されていると判定された場合、検索処理が更新処
理かを判断し(ステップ427)、更新処理である場合
には、スキャンキーにXロックを獲得し(ステップ42
8)、ルートノードのSラッチを解除しXラッチをかけ
る(ステップ429)。その後、リーフページのロジッ
クに進む(図4中(D),(E))。
【0041】図5に、インデクスエントリ更新処理の論
理流れ図を示す。500から開始されてまず、ステップ
501において更新が挿入処理かどうかを判断する。挿
入操作でない場合、すなわち削除処理の場合に、ステッ
プ502においてノードからインデクスエントリを削除
し、ステップ503においてインデクス削除ログ(図2
の210)を取得し、ステップ508に至って処理を終
了する。ステップ501に戻って、処理が挿入処理であ
る場合、ステップ504に進み、ノード内空きエリアが
不足しているかを判定する。不足していなく、インデク
スエントリが挿入できるならば、ステップ305におい
て、ノードへインデクスエントリを挿入し、インデクス
エントリ挿入ログ(図2の220)を取得し(ステップ
306)、ステップ508に至って処理を終了する。ス
テップ504に戻って、ノードの空きエリアか不足して
いる場合、ステップ307においてスプリット処理を行
い、更新処理を終了する(ステップ508)。
【0042】図6に、インデクス構造変更処理であるス
プリット処理の論理流れ図を示す。図4のステップ41
7インデクス挿入処理においてノード内に挿入スペース
が不足する場合には、ステップ400からスプリット処
理が開始される。スプリット処理は以前にも記述したよ
うに、リーフノードの分割および新インデクスエントリ
挿入から始まり、上位レベルに波及していく。以下スプ
リット処理を流れ図に従い説明する。また図7に、スプ
リット処理開始時のインデクスの構造を示す。本実施例
におけるインデクスを構成するノードには図上右隣の同
一レベルノードをポイントする「右ポインタ」を有す
る。
【0043】スプリット処理ではまず、新ノードをスプ
リットノードの右側に割り当て、Xラッチをかけバッフ
ァにGETする。ノードの分割により生じる新ノードをス
プリットノードの右側に割り当てる理由は、ノード分割
直後に他トランザクションのアクセスが入ってきた場
合、分割によってスキャンキーが新ノードに移動しても
右ポインタを辿ることによってスプリット処理に妨害さ
れることなしにスキャンキーにアクセスすることを可能
にするためである。本質的には、スプリットノードを右
側ではなく左側に割り当てても本質的には問題ない。そ
の場合、同レベルの隣接ノードへのポインタを右ポイン
タではなく、左ポインタにすればよい。スプリット方向
と隣接ノードへのポインタの方向が一致していることが
重要である。スプリット処理において他トランザクショ
ンのアクセスが制限されるのは、ノード分割最中のラッ
チが保持されている極めて短期間の間のみであり、スプ
リット処理との競合によってインデクス再サーチは発生
しない。
【0044】新ノードGET後、ステップ602〜ステッ
プ605によってノード内のインデクスエントリを分割
し、新インデクスエントリを挿入する。まず、ステップ
602ではスプリットノード内のエントリの右半分を新
ノードへ移動する。その後、新ノードの右ポインタおよ
びスプリットノードの右ポインタをメンテナンスし(ス
テップ603、ステップ604)、ステップ605によ
って新エントリの挿入ノードを決定し、新エントリを挿
入する。そこで図3で示したスプリット開始ログ310
を取得し(ステップ606)、スプリットノードおよび
新ノードをPUTしラッチを解除することによってリーフ
ノードの分割処理を終了する(ステップ607)。図8
にリーフレベルのノード分割時のインデクスの構造を示
す。この状態では、N5およびN51に対するラッチは
解除されているので、両ノードに対する他トランザクシ
ョンのアクセスは許可される。新ノードN51に対する
アクセスは図4の通常時処理でも説明したように、右ポ
インタ81を辿ることによって行われる。また、両ノー
ドに対するアクセスは検索だけでなく削除および挿入も
許可され、スプリット処理の発生をも許可する。
【0045】次に、上位ノードへの波及処理を以下のよ
うに行う。まず、インデクスサーチの際に作成したイン
デクスサーチ履歴よりメンテナンス対象上位ノードを決
定し、XラッチをかけバッファにGETする(ステップ6
08)。ここでインデクスサーチ履歴に含まれる上位ノ
ードはあくまでもメンテナンス対象上位ノードを決定す
るための目安でしかない。メンテナンス対象位置が、他
トランザクションのスプリット処理によって右ノードに
移動している場合があるからである。以上の理由から、
インデクスサーチ履歴内上位ノードをGETした後、ステ
ップ609によって分割キー(上位メンテナンス対象キ
ー)がノード管理範囲内かどうかを図4ステップ408
と同様に判定する。ノード管理範囲外である場合、ステ
ップ610およびステップ611によって右ノードに移
動し、ステップ609を繰り返し、メンテナンス対象ノ
ードをアクセスする。ノード管理範囲内である場合、ス
テップ612に進み分割キーおよび新ノード識別子によ
って上位ノード挿入エントリを作成し挿入を行う。ここ
で、上位ノードの空き領域が不足して新上位エントリを
挿入できない場合(ステップ613)、上位ノードの分
割処理として以下の処理に進む。
【0046】まず、新ノードをスプリットノードの右側
に割り当て、XラッチをかけバッファにGETする(ステ
ップ614)。その後、上位ノードの分割および新上位
エントリの挿入を行い(ステップ615)、図3で示し
た上位ノードスプリットログ320を取得する(ステッ
プ616)。その後、スプリットノードおよび新ノード
をPUTしラッチを解除することによって1上位レベルの
分割処理を終了する(ステップ617)。そして、ステ
ップ608へ戻って、さらに上位ノードへのメンテナン
スへと進む。図9に上位レベルのノード分割時のインデ
クスの構造例を示す。この状態では、N2およびN21
に対するラッチは解除されているので、両ノードに対す
る他トランザクションのアクセスは許可される。新ノー
ドN21に対するアクセスは図4の通常時処理でも説明
したように、右ポインタ91を辿ることによって行われ
る。
【0047】ステップ613に戻って、上位ノードへの
新上位エントリの挿入が完了した場合、スプリット処理
はそれ以上上位レベルへは波及せず、図3で示したスプ
リット完了ログ330を取得し(ステップ618)、上
位ノードをPUTおよびラッチ解除し(ステップ61
9)、スプリット処理をすべて完了する(ステップ62
0)。図10にスプリット処理完了時のインデクスの構
造図を示す。
【0048】以上のように本実施例におけるスプリット
処理では、スプリット処理最中でも他トランザクション
はスプリット影響範囲にアクセスすることができる。さ
らに複数のスプリット処理同士の同時実行も可能であ
る。また、複数ノードに対するラッチに関して、常にそ
の方向が左から右へと決まった方向なので、複数スプリ
ット処理同士でのデッドロックは発生しない。通常処理
においては、ラッチは必ず一度に一ノードに対してしか
かけないので、通常処理とのデッドロックも当然発生し
ない。
【0049】図11は、本発明の実施例のインデクス構
造変更処理ログ解析処理のアルゴリズムを示す論理流れ
図である。図1においても述べたように、トランザクシ
ョンがユーザの指示あるいは何らかの要因によって中断
された場合、そのトランザクションが行ったデータ操作
の結果を取り消すロールバック処理を図1で示したロー
ルバック処理制御部103にて行う。通常データ操作時
に取得したログを取得順とは逆順に新しいログからログ
解析部107に順次一つずつ渡し、ロールバック処理実
行部110においてロールバック処理を行う。インデク
ス構造変更処理関係のログはインデクス構造変更処理ロ
グ解析部108に渡され、未完インデクス構造変更完成
処理を実行するために解析され、インデクス構造変更処
理が未完である場合には完成処理制御部109をコール
する。以下図11を用いて、インデクス構造変更処理ロ
グ解析部108の処理について示す。
【0050】ログ解析部107においてインデクス構造
変更処理ログとして判定されたログレコードは、インデ
クス構造変更処理ログ解析部108に渡され、ステップ
1100より解析される。本解析処理は、図3で示した
スプリット処理開始ログ310、上位ノードスプリット
ログ320、スプリット完了ログ330に分類して行
う。未完インデクス構造変更完成処理は、スプリット処
理開始ログ310が渡された際にコールする。
【0051】まず、ステップ1110において渡された
インデクス構造変更処理ログがスプリット完了ログであ
るかどうかを判定する。スプリット完了ログである場
合、インデクス構造変更処理であるスプリット処理はそ
の一連の処理をすべて完了したと判断し、ステップ11
11にてスプリット完了フラグをONにする。スプリット
完了フラグは、インデクス構造変更処理ログ解析部が管
理しロールバック対象トランザクションの1インデクス
に1つ存在する。初期値はOFFであり、ONの場合スプリ
ット処理が完了していることを示す。スプリット処理が
完了している場合は、スプリット完了ログ以降に渡され
る上位ノードスプリットログおよびスプリット開始ログ
に関しては、ロールバックにおいて何も処理を行わない
ように指示する。
【0052】スプリット完了フラグをONにした後、本ス
プリット完了ログの解析処理完了として、ステップ11
50にログ解析部107に返る。そしてインデクス構造
変更処理ログ解析部としては次のログが渡されるのを待
つ。
【0053】ステップ1110においてスプリット完了
ログではない場合、ステップ1120に進み上位ノード
スプリットログかどうかを判定する。上位ノードスプリ
ットログの場合、まず、ステップ1121においてスプ
リット完了フラグがONかどうかを判定、すなわちスプリ
ット処理が完了しているかを判定する。スプリット完了
フラグがONの場合、本上位ノードスプリットログに関連
する操作は何も行わないこととして、ステップ1150
に進み、ログ解析部107に返る。スプリット完了フラ
グがONではない場合、すなわちスプリット処理が未完と
判定される場合、未完スプリット完成処理に備えて、ス
プリット処理の完成段階を示す情報を必要であるならば
一時的に記憶する。まず、ステップ1122においてス
プリット進行レベルがNULLかどうかを判定する。
【0054】スプリット進行レベルは、スプリット完了
フラグ同様インデクス構造変更処理ログ解析部がインデ
クス対応に管理し、スプリット処理がどのレベルまで進
行しているかを示す。初期値として、スプリット処理が
完了している状態でNULLが設定され、スプリット処理が
完了していない場合、一番始めに渡された上位ノードス
プリットログ内のインデクスレベルn(図3中323)
が設定される。ステップ1122においてスプリット進
行レベルがNULLである場合、本上位ノードスプリットロ
グにおけるインデクスレベルまでスプリット処理が進行
した時点でトランザクションの中断が発生したと判断
し、ステップ1123においてログ内のインデクスレベ
ルn(図3中323)を設定し、未完スプリット処理実
行時に必要な情報としてログを一時的に記憶し(ステッ
プ1124)、ステップ1150に進み、ログ解析部1
07に返る。スプリット進行レベルがNULLではない場
合、すでに本上位ノードスプリットログが渡される以前
に、さらに上位の上位ノードスプリットログが渡され解
析されたと判断し、ステップ1150に進み、ログ解析
部107に返る。
【0055】ステップ1120において上位ノードスプ
リットログではない場合、ステップ1130に進みスプ
リット開始ログかどうかを判定する。スプリット開始ロ
グではない場合、渡されたログは不正なログと判断し、
ログ解析部107にエラーとして返る(ステップ114
0)。スプリット開始ログである場合、ステップ113
1においてステップ1121と同様にスプリット完了フ
ラグがONかどうかを判定、すなわちスプリット処理が完
了しているかを判定する。スプリット完了フラグがONの
場合、本上位ノードスプリットログに関連する操作は何
も行わないこととして、ステップ1150に進み、ログ
解析部107に返る。
【0056】スプリット完了フラグがONではない場合、
すなわち、スプリット処理が未完と判定される場合、ス
テップ1131においてスプリット進行レベルを以下の
ように解析することによりスプリット処理進行レベルを
確定する。スプリット進行レベルがNULLの場合、スプリ
ット処理はリーフノードレベルまでのみ進行と判断し
(ステップ1133)、未完インデクス構造変更完成処
理制御部をコールし、インデクスレベル2から未完スプ
リット完成処理を行う(ステップ1136)。スプリッ
ト進行レベルがNULLの場合、スプリット処理はスプリッ
ト進行レベルに設定されているレベルnまで進行してい
ると判断し(ステップ1134)、未完インデクス構造
変更完成処理制御部をコールし、インデクスレベルn+
1から未完スプリット完成処理を行う(ステップ113
6)。ステップ1134の後に、ステップ1135にお
いてスプリット進行レベルにNULLを設定、すなわち初期
化する。
【0057】未完のスプリット処理を完成させた後、ス
テップ1137においてロールバック処理実行部をコー
ルし、ロールバック処理としてデータへのポインタを削
除する(ステップ1138)。データへのポインタの削
除においては、スプリット開始ログ310に含まれる挿
入キー314およびデータへのポインタ315を用い
る。削除操作対象リーフノードの確定(サーチ)等削除
操作に関する処理は、図4で示したB木インデクス通常
時処理と同一の操作によって容易に実現できる。また、
スプリット開始ログに挿入対象リーフノード識別子を持
たせることによって、インデクスルートノードからのサ
ーチを省くことができ、さらに効率の良いロールバック
処理を提供することができる。データへのポインタ削除
後、ステップ1138においてスプリット完了フラグを
OFFに設定、すなわち初期化し、ステップ1150に進
み、ログ解析部107に返る。
【0058】図12に、前記図7から図10を用いて説
明したスプリット処理において、図9の状態でトランザ
クションの中断が発生し場合の取得済みスプリット処理
関係ログを、図13にその場合のインデクス構造変更処
理ログ解析部108の未完スプリット完成処理コール前
のフラグ等の状態を示す。
【0059】図14に未完スプリット完成処理の論理流
れ図を示す。図11で示したインデクス構造変更処理ロ
グ解析部において確定したスプリット処理進行レベルお
よび保持してあるログを用いて、以下に示すようにステ
ップ1400から未完スプリット処理を開始する。ま
ず、ステップ1401において、インデクス構造変更処
理ログ解析部において確定したスプリット処理進行レベ
ル(インデクスレベルnあるいはインデクスレベル1)
およびスプリット開始ログ内のインデクスサーチ履歴を
基に未完スプリット処理を開始する上位ノードを決定す
る。しかし、あくまでその上位ノードはメンテナンス対
象ノードの目安でしかない。
【0060】図6で示したように通常スプリット処理と
同様に、挿入キーがノード管理範囲内かどうかを判定す
る(ステップ1402)。カレント上位ノードがメンテ
ナンス対象ノードでない、すなわち挿入キーがノード管
理範囲内でない場合、ステップ1403、ステップ14
04を通じ右側のノードを辿ってメンテナンス対象ノー
ドにアクセスする。ステップ1402において挿入キー
がノード管理範囲内である場合、ステップ1405へ進
み上位ページのメンテナンスを行う。ステップ1405
では保持してあるログ内の分割キー(挿入キー)および
新ノード識別子より新エントリを作成し、上位ノードへ
挿入する。上位ノードの空き領域が不足して新上位エン
トリを挿入できない場合(ステップ1406)、上位ノ
ードの分割処理として以下の処理に進む。
【0061】まず、新ノードを分割ノードの右側に割り
当て、Xラッチをかけ、バッファにGETする(ステップ
1407)。次に、上位ノードスプリット処理を行い、
新上位エントリを挿入する(ステップ1408)。そし
て、上位ノードスプリットログを通常時スプリット処理
と同様に取得し(ステップ1409)、スプリットノー
ドおよび新ノードをPUTしラッチを解除する(ステップ
1410)。ステップ1411において、さらに、次の
上位ノードのメンテナンス(新上位エントリの挿入)を
行い、挿入できたならば(ステップ1412)、スプリ
ット完了としてステップ1413に進み、上位ノードの
空き領域不足により挿入できなかったならば、ステップ
1407に戻りさらに上位ノードへとスプリット処理を
波及させる。
【0062】ステップ1406において、上位ノードへ
の新エントリ挿入ができた場合、スプリット完了として
ステップ1413に進み、スプリット完了ログを取得
し、ステップ1414において上位ノードのバッファを
PUTしラッチを解除することによって、未完スプリット
完成処理の全行程を完了する(ステップ1415)。
【0063】図9の状態でスプリット処理途中のトラン
ザクションが中断された場合の、未完スプリット完成処
理の処理を具体的に示す。前にも述べたように未完スプ
リット完成処理は、スプリット開始ログ1210が渡さ
れた際に行う。スプリット進行レベルの値が2であるの
でスプリット開始ログ1210のインデクスサーチ履歴
1213からインデクスレベル3(=2+1)のノード
N1をメンテナンス対象ノード(未完スプリット完成処
理開始上位ノード)に決定し、Xラッチをかけ、バッフ
ァにGETする。一時的に記憶されたログ内のキーはノー
ドN1の管理範囲内なので、キー6と一時的に記憶され
たログ内のスプリット新ノードN21へのポインタを用
いてノードN1のメンテナンスを行い、スプリット完了
ログを取得して、バッファをPUT、ラッチを解除してス
プリット処理を完成させる(図10の状態)。
【0064】以上のようにロールバック処理における未
完スプリット処理においても通常時スプリット処理の延
長のように実行されるので、通常時スプリット処理同様
未完スプリット処理範囲に対する他トランザクションの
アクセスが可能である。
【0065】
【発明の効果】本発明によれば、インデクス構造変更処
理に関与したインデクスノードに対するXラッチを当該
ノードの更新操作完了後すぐに解除することにより、他
トランザクションは当該ノードに早期にアクセスするこ
とが可能になる。さらに、インデクス構造変更処理途中
でトランザクションが中断された場合でも、一度インデ
クス構造変更処理に関与し更新されたノードはそのまま
なので、他トランザクションの当該ノードに対する更新
結果は失われることがない。すなわち、このことはイン
デクス構造変更処理途中でトランザクションが中断され
た場合でも、当該トランザクションのロールバック処理
が他トランザクションのインデクスへのアクセスに対し
て、インデクスの再サーチやアクセス制限などの悪影響
を全く及ぼさないことを示している。以上により同時に
B木インデクスへアクセスする複数トランザクションの
多重度を向上させ、高スループットを提供することが可
能になる。
【0066】また、さらに、従来技術の1つのようにイ
ンデクスへのアクセス多重度を向上させるために冗長な
インデクス格納ページ(ノード)を割り当ててインデク
ス構造変更処理を行わないので、B木を構成するノード
が格納されるページを効率的に利用することができる。
【図面の簡単な説明】
【図1】本発明の基本構成を示す図である。
【図2】本発明の実施例のインデクス更新処理に関係す
るログを示す図である。
【図3】本発明の実施例のインデクス構造変更処理に関
係するログを示す図である。
【図4】本発明の実施例のB木インデクス通常時処理の
アルゴリズムを示す論理流れ図である。
【図5】本発明の実施例のインデクスエントリ更新処理
のアルゴリズムを示す論理流れ図である。
【図6】本発明の実施例のB木インデクスにおけるイン
デクスエントリ挿入によるB木インデクス構造変更動作
のアルゴリズムを示す論理流れ図である。
【図7】本発明の実施例のスプリット処理開始時のイン
デクスの構造を示す図である。
【図8】本発明の実施例のスプリット処理におけるリー
フノード分割時のインデクスの構造を示す図である。
【図9】本発明の実施例のスプリット処理における上位
ノード分割時のインデクスの構造を示す図である。
【図10】本発明の実施例のスプリット処理完了時のイ
ンデクスの構造を示す図である。
【図11】本発明の実施例のインデクス構造変更処理ロ
グ解析処理のアルゴリズムを示す論理流れ図である。
【図12】取得済みのスプリット処理関係ログを示す図
である。
【図13】インデクス構造変更処理ログ解析部内の情報
を示す図である。
【図14】本発明の実施例のロールバックにおける未完
B木インデクス構造変更完成処理アルゴリズムを示す論
理流れ図である。
【図15】B木インデクスの構造を示す図である。
【図16】スプリット処理後のB木インデクスの構造を
示す図である。
【図17】スプリット処理最中のB木インデクスの構造
を示す図である。
【図18】データベース管理システムの構成を示す図で
ある。
【符号の説明】
101:データベース管理システム、102:通常処理
制御部、103:ロールバック処理制御部、105:イ
ンデクス構造変更処理部、108:インデクス構造変更
処理ログ解析部、109:未完インデクス構造変更完成
処理制御部、111:データベース、112:B木イン
デクス部、113:データ部、114:ログファイル
───────────────────────────────────────────────────── フロントページの続き (72)発明者 河村 信男 神奈川県川崎市麻生区王禅寺1099番地 株 式会社日立製作所システム開発研究所内 (72)発明者 祖敷 潤一郎 神奈川県横浜市中区尾上町6丁目81番地 日立ソフトウエアエンジニアリング株式会 社内

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】複数のトランザクションが同一のB木イン
    デクスを通じてデータにアクセスする手段を有するデー
    タベース管理システムにおいて、 前記トランザクションの内あるトランザクションがデー
    タの挿入あるいは更新に伴い上記B木インデクスを構成
    するページへのインデクス構成要素の挿入を行い、複数
    ページに対する更新操作からなるインデクス構造変更動
    作を上記B木インデクスに引き起こす際に、 上記構造変更動作に関与したページに対する排他制御を
    前記ページに対する更新操作後即座に解除し、 上記構造変更動作完了前で上記トランザクションが中断
    されるとまず完成途中である上記構造変更動作を完成さ
    せてからロールバックすることで他トランザクションの
    上記構造変更動作に関与したページへの更新結果の存在
    保証を実現することを特徴とするB木インデクスの管理
    方法。
  2. 【請求項2】複数のトランザクションが同一のB木イン
    デクスを通じてデータにアクセスする手段を有するデー
    タベース管理システムにおいて、 前記トランザクションの内あるトランザクションがデー
    タの挿入あるいは更新に伴い上記B木インデクスを構成
    するページへのインデクス構成要素の挿入を行い、複数
    ページに対する更新操作からなるインデクス構造変更動
    作を上記B木インデクスに引き起こす際に、 上記構造変更動作開始時に、構造変更動作を実施するた
    めに必要な情報を含むレコードを書き込み、構造変更処
    理を構成する各々の処理実行時には当該インデクス構造
    変更処理における到達段階を示すレコードを書き込む手
    段と、 上記構造変更動作完了前に上記トランザクションが中断
    された場合、上記構造変更動作に関与した各々の処理に
    対応する前記レコードと、開始時レコードから構造変更
    動作完成に必要な処理を決定する解析手段を有し、構造
    変更動作をロールフォワードする手段と、 構造変更動作をロールフォワードした後に挿入あるいは
    削除したインデクス構成要素に対する処理をロールバッ
    クする手段を有することを特徴とするB木インデクスの
    管理システム。
JP22293194A 1994-09-19 1994-09-19 B木インデクスの管理方法およびシステム Expired - Lifetime JP3441807B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP22293194A JP3441807B2 (ja) 1994-09-19 1994-09-19 B木インデクスの管理方法およびシステム
US08/527,224 US5758356A (en) 1994-09-19 1995-09-12 High concurrency and recoverable B-tree index management method and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP22293194A JP3441807B2 (ja) 1994-09-19 1994-09-19 B木インデクスの管理方法およびシステム

Publications (2)

Publication Number Publication Date
JPH0887511A true JPH0887511A (ja) 1996-04-02
JP3441807B2 JP3441807B2 (ja) 2003-09-02

Family

ID=16790118

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22293194A Expired - Lifetime JP3441807B2 (ja) 1994-09-19 1994-09-19 B木インデクスの管理方法およびシステム

Country Status (2)

Country Link
US (1) US5758356A (ja)
JP (1) JP3441807B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006228060A (ja) * 2005-02-18 2006-08-31 Tokyo Institute Of Technology ディレクトリ更新方法及びディレクトリ更新プログラム、並びに、木構造型データ記憶装置
JP2008046700A (ja) * 2006-08-11 2008-02-28 Tokyo Institute Of Technology ディレクトリ分散型記憶装置及びデータ処理要求移譲プログラム

Families Citing this family (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5940839A (en) * 1997-04-04 1999-08-17 Hewlett-Packard Company Fault-tolerant system and method of managing transaction failures in hierarchies
US6026406A (en) * 1997-06-04 2000-02-15 Oracle Corporation Batch processing of updates to indexes
SE510000C2 (sv) * 1997-07-21 1999-03-29 Ericsson Telefon Ab L M Struktur vid databas
US6026402A (en) * 1998-01-07 2000-02-15 Hewlett-Packard Company Process restriction within file system hierarchies
US6792432B1 (en) * 1998-03-31 2004-09-14 Sybase, Inc. Database system with methods providing high-concurrency access in B-Tree structures
US6584459B1 (en) 1998-10-08 2003-06-24 International Business Machines Corporation Database extender for storing, querying, and retrieving structured documents
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
US6606626B1 (en) * 1998-10-20 2003-08-12 Sybase, Inc. Database system with lock manager enhancement for improving concurrency
KR100289331B1 (ko) 1998-10-27 2001-05-02 정선종 고차원 색인 구조의 동시성 제어 방법
US6199062B1 (en) 1998-11-19 2001-03-06 International Business Machines Corporation Reverse string indexing in a relational database for wildcard searching
KR100442991B1 (ko) * 1999-02-01 2004-08-04 주식회사 팬택앤큐리텔 트리구조의 동영상 색인 기술자를 이용한 검색장치 및 그 방법
US6446085B1 (en) * 1999-06-17 2002-09-03 International Business Machines Corporation Method and apparatus for processing recursive hard links in a data processing system
CA2279119C (en) 1999-07-29 2004-10-19 Ibm Canada Limited-Ibm Canada Limitee Heuristic-based conditional data indexing
US6829695B1 (en) * 1999-09-03 2004-12-07 Nexql, L.L.C. Enhanced boolean processor with parallel input
US6334123B1 (en) 1999-09-03 2001-12-25 Whamtech, Inc. Index relational processor
US20040225865A1 (en) * 1999-09-03 2004-11-11 Cox Richard D. Integrated database indexing system
US7805423B1 (en) 1999-11-15 2010-09-28 Quest Software, Inc. System and method for quiescing select data modification operations against an object of a database during one or more structural operations
US6711562B1 (en) * 1999-12-01 2004-03-23 The Trustees Of Columbia University In The City Of New York Cache sensitive search (CSS) tree indexing system and method
JP3866466B2 (ja) * 1999-12-13 2007-01-10 株式会社東芝 データ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムを格納する記録媒体
KR100327122B1 (ko) * 1999-12-24 2002-03-13 오길록 재삽입 연산을 수행하는 고차원 색인구조를 위한 회복방법
US6618822B1 (en) * 2000-01-03 2003-09-09 Oracle International Corporation Method and mechanism for relational access of recovery logs in a database system
US7065538B2 (en) * 2000-02-11 2006-06-20 Quest Software, Inc. System and method for reconciling transactions between a replication system and a recovered database
CA2307155A1 (en) * 2000-04-28 2001-10-28 Ibm Canada Limited-Ibm Canada Limitee Execution of database queries including filtering
US6769074B2 (en) * 2000-05-25 2004-07-27 Lumigent Technologies, Inc. System and method for transaction-selective rollback reconstruction of database objects
US6631374B1 (en) * 2000-09-29 2003-10-07 Oracle Corp. System and method for providing fine-grained temporal database access
US8650169B1 (en) 2000-09-29 2014-02-11 Oracle International Corporation Method and mechanism for identifying transaction on a row of data
JP2002108662A (ja) * 2000-10-02 2002-04-12 Fujitsu Ltd 情報管理方法
US7146364B1 (en) * 2000-11-03 2006-12-05 International Business Machines Corporation Method and system for recovering data in a plurality of systems
WO2002073409A1 (en) * 2001-03-13 2002-09-19 Telefonaktiebolaget Lm Ericsson (Publ) Method and arrangements for node recovery
US6735600B1 (en) * 2001-03-30 2004-05-11 Lsi Logic Corporation Editing protocol for flexible search engines
US6772155B1 (en) * 2001-04-04 2004-08-03 Ncr Corporation Looking data in a database system
US7293028B2 (en) * 2001-06-08 2007-11-06 Sap Ag Cache-conscious concurrency control scheme for database systems
US7752185B1 (en) * 2002-05-31 2010-07-06 Ebay Inc. System and method to perform data indexing in a transaction processing environment
US7206776B2 (en) * 2002-08-15 2007-04-17 Microsoft Corporation Priority differentiated subtree locking
WO2004027604A2 (en) * 2002-09-23 2004-04-01 Neos Financial Systems Limited Transaction processing system
US7499953B2 (en) * 2004-04-23 2009-03-03 Oracle International Corporation Online recovery of user tables using flashback table
US7761474B2 (en) * 2004-06-30 2010-07-20 Sap Ag Indexing stored data
US7603346B1 (en) 2004-07-23 2009-10-13 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and b-tree maintenance sub-engines therein
US7747599B1 (en) 2004-07-23 2010-06-29 Netlogic Microsystems, Inc. Integrated search engine devices that utilize hierarchical memories containing b-trees and span prefix masks to support longest prefix match search operations
US7725450B1 (en) 2004-07-23 2010-05-25 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that maintain search coherence during multi-cycle update operations
US8886677B1 (en) 2004-07-23 2014-11-11 Netlogic Microsystems, Inc. Integrated search engine devices that support LPM search operations using span prefix masks that encode key prefix length
US7653619B1 (en) 2004-07-23 2010-01-26 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that support variable tree height
US7512617B2 (en) * 2004-12-29 2009-03-31 Sap Aktiengesellschaft Interval tree for identifying intervals that intersect with a query interval
US7640259B2 (en) * 2005-08-01 2009-12-29 Sap Ag Systems and methods for modeling tree structures
JP4581962B2 (ja) * 2005-10-27 2010-11-17 株式会社日立製作所 情報検索システムとインデクス管理方法およびプログラム
EP1821571A1 (en) * 2006-02-15 2007-08-22 Oticon A/S Loop antenna for in the ear audio device
US20070214153A1 (en) * 2006-03-10 2007-09-13 Mazzagatti Jane C Method for processing an input particle stream for creating upper levels of KStore
US7650352B2 (en) * 2006-03-23 2010-01-19 International Business Machines Corporation System and method for increasing availability of an index
US20070226251A1 (en) * 2006-03-24 2007-09-27 Rocket Software, Inc. Method of augmenting and controlling utility program execution for a relational database management system
US7792812B1 (en) 2006-03-31 2010-09-07 Netlogic Microsystems, Inc. Search engine devices that support high speed parallel decoding of digital search tries
US7664766B2 (en) * 2006-09-12 2010-02-16 International Business Machines Corporation System, method and computer program product for managing data
US7697518B1 (en) 2006-09-15 2010-04-13 Netlogic Microsystems, Inc. Integrated search engine devices and methods of updating same using node splitting and merging operations
US8745005B1 (en) * 2006-09-29 2014-06-03 Emc Corporation Checkpoint recovery using a B-tree intent log with syncpoints
JP4933222B2 (ja) * 2006-11-15 2012-05-16 株式会社日立製作所 インデックス処理方法及び計算機システム
US8086641B1 (en) 2006-11-27 2011-12-27 Netlogic Microsystems, Inc. Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same
US7953721B1 (en) 2006-11-27 2011-05-31 Netlogic Microsystems, Inc. Integrated search engine devices that support database key dumping and methods of operating same
US7831626B1 (en) 2006-11-27 2010-11-09 Netlogic Microsystems, Inc. Integrated search engine devices having a plurality of multi-way trees of search keys therein that share a common root node
US7987205B1 (en) 2006-11-27 2011-07-26 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined node maintenance sub-engines therein that support database flush operations
US8055645B1 (en) * 2006-12-15 2011-11-08 Packeteer, Inc. Hierarchical index for enhanced storage of file changes
US7886176B1 (en) 2007-09-24 2011-02-08 Integrated Device Technology, Inc. DDR memory system for measuring a clock signal by identifying a delay value corresponding to a changed logic state during clock signal transitions
US7716204B1 (en) 2007-12-21 2010-05-11 Netlogic Microsystems, Inc. Handle allocation managers and methods for integated circuit search engine devices
US7801877B1 (en) 2008-04-14 2010-09-21 Netlogic Microsystems, Inc. Handle memory access managers and methods for integrated circuit search engine devices
US8775373B1 (en) 2008-05-21 2014-07-08 Translattice, Inc. Deleting content in a distributed computing environment
US8346824B1 (en) 2008-05-21 2013-01-01 Translattice, Inc. Data distribution system
US8417679B1 (en) * 2008-05-21 2013-04-09 Translattice, Inc. Fast storage writes
US8060476B1 (en) 2008-07-14 2011-11-15 Quest Software, Inc. Backup systems and methods for a virtual computing environment
US8135930B1 (en) 2008-07-14 2012-03-13 Vizioncore, Inc. Replication systems and methods for a virtual computing environment
US8046550B2 (en) 2008-07-14 2011-10-25 Quest Software, Inc. Systems and methods for performing backup operations of virtual machine files
US8429649B1 (en) 2008-09-25 2013-04-23 Quest Software, Inc. Systems and methods for data management in a virtual computing environment
US8996468B1 (en) 2009-04-17 2015-03-31 Dell Software Inc. Block status mapping system for reducing virtual machine backup storage
US9778946B2 (en) * 2009-08-07 2017-10-03 Dell Software Inc. Optimized copy of virtual machine storage files
US8868601B2 (en) * 2009-08-17 2014-10-21 International Business Machines Corporation Distributed file system logging
US8266126B2 (en) * 2010-03-24 2012-09-11 Matrixx Software, Inc. System with multiple conditional commit databases
US8453145B1 (en) 2010-05-06 2013-05-28 Quest Software, Inc. Systems and methods for instant provisioning of virtual machine files
US8438330B2 (en) 2010-05-17 2013-05-07 Netlogic Microsystems, Inc. Updating cam arrays using prefix length distribution prediction
US9569446B1 (en) 2010-06-08 2017-02-14 Dell Software Inc. Cataloging system for image-based backup
US20110320474A1 (en) * 2010-06-24 2011-12-29 International Business Machines Corporation Availability of Database Objects During Database Operations
US9547562B1 (en) 2010-08-11 2017-01-17 Dell Software Inc. Boot restore system for rapidly restoring virtual machine backups
US8898114B1 (en) 2010-08-27 2014-11-25 Dell Software Inc. Multitier deduplication systems and methods
CN102651007A (zh) * 2011-02-28 2012-08-29 国际商业机器公司 一种管理数据库索引的方法和装置
US9311375B1 (en) 2012-02-07 2016-04-12 Dell Software Inc. Systems and methods for compacting a virtual machine file
US9424304B2 (en) 2012-12-20 2016-08-23 LogicBlox, Inc. Maintenance of active database queries
US10417209B1 (en) 2013-03-14 2019-09-17 Roger Lawrence Deran Concurrent index using copy on write
KR101587158B1 (ko) 2014-02-10 2016-01-20 주식회사 티맥스데이터 트리 인덱스를 이용하는 노드 탐색 방법 및 장치
US10325014B2 (en) 2015-04-30 2019-06-18 Workiva Inc. System and method for convergent document collaboration
US10255263B2 (en) * 2015-05-18 2019-04-09 Workiva Inc. Data storage and retrieval system and method for storing cell coordinates in a computer memory
KR102057055B1 (ko) * 2018-06-27 2019-12-18 주식회사 티맥스데이터 인덱스 관리 방법
US11755825B2 (en) 2019-09-12 2023-09-12 Workiva Inc. Method, system, and computing device for facilitating private drafting
US11100281B1 (en) 2020-08-17 2021-08-24 Workiva Inc. System and method for maintaining links and revisions
US11443108B2 (en) 2020-08-17 2022-09-13 Workiva Inc. System and method for document management using branching
US11100277B1 (en) 2021-02-15 2021-08-24 Workiva Inc. Systems, methods, and computer-readable media for flow-through formatting for links
US11354362B1 (en) 2021-05-06 2022-06-07 Workiva Inc. System and method for copying linked documents
US11640495B1 (en) 2021-10-15 2023-05-02 Workiva Inc. Systems and methods for translation comments flowback

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4697266A (en) * 1983-03-14 1987-09-29 Unisys Corp. Asynchronous checkpointing system for error recovery
US5265244A (en) * 1986-02-14 1993-11-23 International Business Machines Corporation Method and system for facilitating processing of statistical inquires on stored data accessible through a data access structure
US5010478A (en) * 1986-04-11 1991-04-23 Deran Roger L Entity-attribute value database system with inverse attribute for selectively relating two different entities
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
US5123104A (en) * 1988-04-08 1992-06-16 International Business Machines Corporation Method and apparatus for concurrent modification of an index tree in a transaction processing system utilizing selective indication of structural modification operations
US5175849A (en) * 1988-07-28 1992-12-29 Amdahl Corporation Capturing data of a database system
US5089952A (en) * 1988-10-07 1992-02-18 International Business Machines Corporation Method for allowing weak searchers to access pointer-connected data structures without locking
US5265245A (en) * 1989-04-17 1993-11-23 International Business Machines Corporation High concurrency in use manager
US5095421A (en) * 1989-08-17 1992-03-10 International Business Machines Corporation Transaction processing facility within an operating system environment
US5319774A (en) * 1990-05-16 1994-06-07 International Business Machines Corporation Recovery facility for incomplete sync points for distributed application
US5319773A (en) * 1990-05-16 1994-06-07 International Business Machines Corporation Asynchronous resynchronization of a commit procedure
US5333303A (en) * 1991-03-28 1994-07-26 International Business Machines Corporation Method for providing data availability in a transaction-oriented system during restart after a failure
US5430869A (en) * 1991-05-29 1995-07-04 Hewlett-Packard Company System and method for restructuring a B-Tree
US5204958A (en) * 1991-06-27 1993-04-20 Digital Equipment Corporation System and method for efficiently indexing and storing a large database with high data insertion frequency
JP2708657B2 (ja) * 1992-02-18 1998-02-04 富士通株式会社 スプリット制御方法
US5418947A (en) * 1992-12-23 1995-05-23 At&T Corp. Locating information in an unsorted database utilizing a B-tree
GB2276737A (en) * 1993-03-30 1994-10-05 Ibm Fault-tolerant transaction-oriented data processing
US5560007A (en) * 1993-06-30 1996-09-24 Borland International, Inc. B-tree key-range bit map index optimization of database queries
US5446887A (en) * 1993-09-17 1995-08-29 Microsoft Corporation Optimal reorganization of a B-tree
US5596710A (en) * 1994-10-25 1997-01-21 Hewlett-Packard Company Method for managing roll forward and roll back logs of a transaction object
US5644763A (en) * 1995-06-28 1997-07-01 Sybase, Inc. Database system with improved methods for B-tree maintenance

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006228060A (ja) * 2005-02-18 2006-08-31 Tokyo Institute Of Technology ディレクトリ更新方法及びディレクトリ更新プログラム、並びに、木構造型データ記憶装置
JP2008046700A (ja) * 2006-08-11 2008-02-28 Tokyo Institute Of Technology ディレクトリ分散型記憶装置及びデータ処理要求移譲プログラム

Also Published As

Publication number Publication date
JP3441807B2 (ja) 2003-09-02
US5758356A (en) 1998-05-26

Similar Documents

Publication Publication Date Title
JP3441807B2 (ja) B木インデクスの管理方法およびシステム
JP2505040B2 (ja) 索引木への並列アクセスのためのデ―タ・アクセス方法およびデ―タ処理システム
US5430869A (en) System and method for restructuring a B-Tree
JP4603546B2 (ja) 効率的なバージョン制御を有するデータベース管理システム
US6792432B1 (en) Database system with methods providing high-concurrency access in B-Tree structures
US6411964B1 (en) Methods for in-place online reorganization of a database
JP2505112B2 (ja) トランザクション管理方法
CN1026631C (zh) 利用索引树对数据库记录进行并发存取的方法
EP0303231B1 (en) Method and device for enabling concurrent access of indexed sequential data files
EP2378420B1 (en) Ownership reassignment in a shared-nothing database system
US8909610B2 (en) Shared log-structured multi-version transactional datastore with metadata to enable melding trees
JP2583010B2 (ja) 多層インデックス構造におけるローカルインデックステーブル及び大域インデックステーブルの間の一貫性を維持する方法
US5625815A (en) Relational database system and method with high data availability during table data restructuring
EP0549140A2 (en) Record updating method
JPH04337850A (ja) データベース・トランザクション及び照会処理システム
Lomet et al. Concurrency and recovery for index trees
JPH06318165A (ja) 故障後の再起動中でのトランザクション適応システムにおいてデータを利用可能にする方法
Lomet Simple, robust and highly concurrent B-trees with node deletion
US6571250B1 (en) Method and system for processing queries in a data processing system using index
Kumar et al. Database recovery
Jaluta et al. Recoverable B+-trees in centralized database management systems
CN116745756A (zh) 快速跳跃列表清除
Srinivasan Index Construction Algorithms
Rastogi et al. Versioning Algorithms for Improving Transaction Predictability in Real-time Main-memory Databases
Sivalenka Study on Concurrent Operations in Extendible Hashing Involving Merging

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080620

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20080620

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090620

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100620

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20100620

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110620

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20110620

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120620

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20120620

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20130620

Year of fee payment: 10

EXPY Cancellation because of completion of term