JP4603546B2 - 効率的なバージョン制御を有するデータベース管理システム - Google Patents

効率的なバージョン制御を有するデータベース管理システム Download PDF

Info

Publication number
JP4603546B2
JP4603546B2 JP2006522785A JP2006522785A JP4603546B2 JP 4603546 B2 JP4603546 B2 JP 4603546B2 JP 2006522785 A JP2006522785 A JP 2006522785A JP 2006522785 A JP2006522785 A JP 2006522785A JP 4603546 B2 JP4603546 B2 JP 4603546B2
Authority
JP
Japan
Prior art keywords
transaction
data
index
field
content item
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2006522785A
Other languages
English (en)
Other versions
JP2007501468A (ja
Inventor
ベルマ,サンジェイ
マコーリフ,マーク・エル
リストガーテン,シェリー
ハルダー,シブサンカー
ホアン,チー−キム
Original Assignee
オラクル・インターナショナル・コーポレイション
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 オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2007501468A publication Critical patent/JP2007501468A/ja
Application granted granted Critical
Publication of JP4603546B2 publication Critical patent/JP4603546B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • 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
    • 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/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • 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/2379Updates performed during online database operations; commit processing
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

技術分野
この発明は、複数のユーザによって同時にアクセス可能なデータの管理に関する。
背景
データベースは、コンピュータ中に保存される関連する記録の集合である。当該技術分野において、このデータ記録の集合は情報データベースとも呼ばれる。データ記録は代替的にデータタプルまたは単にタプルと呼ばれる。複数のユーザがこれらのデータ記録に同時にアクセスしてもよい。トランザクションがデータベースユーザのために実行され、これらのデータ記録にアクセスする。トランザクションはデータベースからの読取、データベースへの書込、またはその両方を行なってもよい。よって、トランザクション実行はデータ記録の組における読取および書込動作の組をもたらす。トランザクションは典型的に、それらが書込むかまたは読取るデータ記録に対するアクセス許可を要求する。アクセス許可は通常ロックを介して実施される。トランザクションは典型的に、対応するロックを求めることによってデータ記録に対するアクセス許可を要求する。アクセス許可における競合はロック競合として現われる。ロック競合は、両立しないモードにおいて複数のトランザクションが同時に同じデータ記録にアクセスを試みるときに起こり得る。
ロック競合を解決する態様の1つは、競合するトランザクションを待たせることである。たとえば、データ記録に対する競合するロック要求を発行したトランザクションは、同じ記録に対するロックを既に有するトランザクションが実行を完了するまで強制的に待たされる(トランザクションの完了とは、トランザクションがコミットするかまたはロールバックすることを意味する)。しかしこうした筋書きにおいては、2つまたはそれ以上のトランザクションが行き詰まり(デッドロック)になることがあり、そこでは各トランザクションが他方のトランザクションの完了を待つためにいずれも進行しなくなってしまう。
タイムスタンプ順序付け、確認およびマルチバージョン方式など、トランザクションシステムで用いられるロックの量を減少させるための多くの技術が発明された。これらの方式のうちマルチバージョン方式は商業的に成功し、多くのベンダがこれらの方式を用いる。典型的なマルチバージョン方式において、データ記録に対する書込動作は記録の新たなバージョンを作成し、読取動作は読取のために利用可能なバージョンから記録の適切なバージョンを選択する。この種のデータベースシステムには、データ記録の複数のバージョンが同時に存在することがある。これらのバージョンのうちいくつかは、現在実行中の、または将来のトランザクションのいずれにも使用されないかもしれない。これらの使用されないバージョンは「ガーベッジ(ゴミ)」と呼ばれる。よってこれらのシステムは、使用されないバージョンに占められる空間を回収するためのゴミ収集機構を用いる必要がある。多くのマルチバージョンデータベース方式は怠惰なゴミ収集を有しており、そこではデータ記録の旧バージョンが必要よりも長くデータベース中に存在し、ゴミがそのデータベース中にどれだけの長さ存在してもよいかということに関して制限されていない。
複数のトランザクションの同時実行は、所与のトランザクションの他のトランザクションからの何らかの保護を必要とする。トランザクションが他のトランザクションに対して有するこの保護は「分離」と呼ばれる。たとえば、トランザクションがデータ記録に対する書込動作を実行するとき、新たなデータ値は前のトランザクションが完了するまであらゆる他のトランザクションによって読取られるべきではない。ANSIはさまざまな分離
レベルを定めた。一例は一般的に公知の「直列可能な」分離レベルであり、ここでは各トランザクションのすべての動作がクラスタ化される直列スケジュールと実行スケジュールとが同等であるような態様で複数のトランザクションが実行する、すなわちトランザクションは1つずつ直列的に実行されたように見える。直列可能性は最高度の分離である。
あらゆるロッキング機構を介して得られる分離とは独立に、いくつかのデータベース動作は、動作によって読取られるデータ記録が安定であること、すなわちその動作が一度訪れたデータ記録が動作実行の終わりまで決して変わらないことを必要とする。この要求は一般的にデータの「スナップショット」として知られる。データベース動作を実行するために用いられる共通言語は構造化照会言語(SQL)である。いくつかのSQL文は、それらの実行中に一度より多く述語を満たすタプルまたはタプルの組を参照する必要があり得る。所与の述語が評価されるときに毎回SQL文実行が同じデータ値を見ることをデータベース管理システム(DBMS)が保証するとき、そのDBMSは「スナップショット」分離を与えるといわれる。
先行技術は、直列可能な分離の下で実行するトランザクションに対する上記の要求を満たす2バージョン技術およびマルチバージョン技術を用いるデータベースシステムを記載する。しかしこれらの方式はいくつかの欠点を有する。たとえば、読取専用トランザクションはそれを宣言する必要がある。多くのDBMSはSQL文を進行中に作成し、各々すべてのトランザクションの開始時にそのトランザクションが読取専用であるか否かを査定できないことがあるため、これは実際的でない。第2に、現在の分析およびいくつかの製品の商業的成功は、直列可能な分離は論理的に興味深い概念だが、最も実用的な分離はANSI SQL分離のREAD COMMITTED(コミットされた読取)またはその変形であることを示す。
現在、ANSI READ COMMITTEDトランザクションに対する効率的な実現に焦点を合わせて、同時処理可能なシステムにおけるトランザクション同時実行と現在用いられるアクセス制御およびロック競合解決策によって起こる問題との間のトレードオフを改善することが求められている。
発明の概要
各データ記録は内部で単一の論理タプルによって表わされる。論理タプルは直接単一の物理タプルを示すか、または「バージョンリスト」と呼ばれるデータ構造を示す。物理タプルは「内容項目」とも呼ばれる。論理タプルはバージョンリストを通じて2つの物理内容項目と関係してもよい。これら2つの物理内容項目の1つによって表わされるデータ記録において最後にコミットされた値は「コミット(committed)内容項目」と呼ばれる。各物理内容項目はデータ値および制御フラグの組、すなわち(1)削除ビット、(2)割当ビット、(3)参照カウントを保存する。
データ記録に対するアクセス制御は、DBMSにおけるロッキング構成要素により維持されてもよい。トランザクションがデータ記録の更新を求めるとき、それは論理タプル上にXロックを置くことによってデータ記録に対する排他的許可を得る。次いで、トランザクションはデータ記録のコミット物理内容項目の新たなバージョンを作成する。この新たな物理バージョンは「非コミット(uncommitted)内容項目」と呼ばれる。
静止状態において、すべての論理タプルはそれぞれのコミット物理内容項目を示す。データ記録に対する書込動作はバージョンリストを作成し、バージョンリストに対応する論
理タプル点を作る。バージョンリストは所与の論理タプルに対する最大2つの物理内容項目を維持する。このためにバージョンリストは2つのフィールドを有する。すなわち、(1)「読取コピー」とも呼ばれるコミット物理内容項目、および(2)「書込コピー」としても知られる非コミット物理内容項目である。コミット物理内容項目は、あらゆるトランザクションによって参照されてもよい現行の読取コピーである。バージョンリストにおける(保留中の)非コミット内容項目フィールドは、所与の書込動作を実行したトランザクションによってのみ用いられる物理非コミットコピーを参照する。この「書込」トランザクションがコミットするとき、可能であれば前の読取コピー(旧コミット内容項目)は割当解除される。書込トランザクションがコミットした後、論理タプルは新たなコミット内容項目を示し、バージョンリストは割当解除され、論理タプル上のXロックは解除される。
読取動作は、論理タプルまたはその物理内容項目に対する排他的アクセス権を保持しない。読取動作は最新のコミット物理内容項目の参照カウントを単に増加させる。読取動作が完了すると、それは物理内容項目に関連する参照カウントを減らす。既に述べたとおり、コミット時に各書込トランザクションは書込コピー(非コミット内容項目)を読取コピー(コミット内容項目)に切換える。次いで、書込トランザクションは旧コミット内容項目(すなわち前の読取コピー)の参照カウントをチェックする。参照カウントがゼロであれば、旧コミット物理内容項目は削除された内容項目を記載するすべてのログ記録とともに直ちに割当解除される。コミット物理内容項目に対する参照カウントが正であれば、書込トランザクションは物理内容項目を割当解除しない。書込トランザクションは次いで、代替的に「遅延削除」とも呼ばれる偽の削除を行なう。
書込トランザクションは、対応する旧コミット内容項目の削除されたビットを設定することによって、データ記録に対する遅延削除を行なう。次いで、それは削除が実際に行なわれたかのようにすべてのログ記録をプッシュする。しかし、物理内容項目の割当ビットは、旧コミット内容項目がDBMSによって再利用されることを防ぐ状態で保たれる。読取トランザクションがコミットするとき、読取コピー(旧コミット物理内容項目)が解除されたか否かにかかわらず、バージョンリストは割当解除され、論理タプルは新コミット内容項目を直接示す。
先に説明したとおり、動作実行が完了するとき、読取動作はそれが読んだすべての物理内容項目の参照カウントを減らす。書込トランザクションによって物理内容項目に対する遅延削除が行なわれたとき、その際のコミット物理内容項目の参照カウントは正でなければならない。最終的にすべての読取動作がその実行を終え、その物理内容項目に対する参照カウントはゼロに落ちる。参照カウントをゼロに減少させた読取動作は、この内容項目が以前書込トランザクションによって削除のためにマーク付けされたかをチェックする。この場合(遅延削除)、読取動作はその物理内容項目に対する割当ビットをリセットして、その物理内容項目をDBMSが再利用できるようにする。なお読取動作は、いかなるログ記録を書く必要もなく割当ビットをオフにすることによって物理内容項目を割当解除する。
バージョニング制御システムは、遅延削除の存在下でもゴミがない。現在どの読取動作もデータ記録の読取コピーにアクセスしていないとき、その読取コピーは新たな書込トランザクションが完了するとすぐに捨てられる。そうでなければ、最後の読取動作が物理内容項目をクリーンアップする。よって、物理内容項目は本当に必要な時間よりも長く割当てられることがない。
SQLスナップショット分離を必要とする分類およびその他の類似のトランザクションに対し、遅延削除は読取動作が論理タプルポインタを単にコピーすることによって一時的
な空間におけるデータ記録を再訪することを可能にする。これによって、分類トランザクションが参照カウントおよび読取られる物理内容項目の生存期間を管理することが可能になる。
一般的に、バージョニング技術は非効率的な索引維持を導く。しかし、我々のバージョン制御方式の局面を用いることにより、迅速な索引維持が得られた。すべての索引中の各エントリはコミット/非コミットビットを有する。このビットがいかにして書込動作の3つのカテゴリ、すなわち挿入、削除および更新に対して設定されるかを説明する。論理タプルの挿入に対して、非コミット内容項目が索引に挿入され、対応する索引エントリがコミットされたとマーク付けされる。論理タプルの削除に対しては、コミット時まで何も行なわれない。トランザクションのコミットの際に、索引エントリは削除され、対応するビットは意味を有さなくなる。論理タプルの更新に対しては、先に説明したとおり、新たな物理タプル、すなわち非コミット内容項目が索引に挿入され、対応するビットが「非コミット」とマーク付けされる。このトランザクションがコミットするとき、索引エントリは更新されて同じエントリを「コミットされた」とマーク付けする。一方、このトランザクションがロールバックすれば、単に索引エントリを除去すればよい。すると索引走査は誤った索引エントリを参照するときに無効値を受取る。
詳細な説明
図1は、データベース8と、データベース管理システム(DBMS)6およびバージョン制御システム10に対するソフトウェアを保存および実行するプロセッサ4(中央処理ユニット(CPU)およびメモリ)とを含むデータベースシステムを示す。1つの例において、プロセッサ4を含む計算装置2はサーバである。こうしたシステムはデータベースサーバとも呼ばれる。プロセッサ4はサーバ2において動作する単一CPUまたは複数のCPUであってもよい。データベース8は典型的に複数の直接アクセス記憶装置(DASD)に保存されるが、図1にはこうした装置を1つだけ例示する。DASDはたとえばディスクパックであってもよく、データベースシステムはデータベース8とプロセッサ4との間の通信を確立する、必要なDASDコントローラおよびチャネルを含むことが当業者に理解される。別の例において、データベース(8)は主メモリ(4)自体の中に保存されてもよい。
端末1は、データベースユーザからの要求を受入れて結果を戻すあらゆる入力/出力(I/O)装置である。たとえば、端末はパーソナルコンピュータ(PC)、または知られるアプリケーションプログラマインターフェイス(API)を用いるアプリケーションであってもよい。トランザクションおよび問合せは端末1から提出され、DBMS6によって同時に処理される。データベース8中の異なるバージョンのデータは、バージョン制御システム10によって維持される。
図2は、バージョン制御システム10をより詳細に説明するものである。論理テーブル12は論理タプル14の組を含む。各論理タプル14は物理テーブル16中の物理内容項目18を直接示すか、またはバージョンリスト20を示す。たとえば、論理タプル14Aは物理内容項目18Aを直接示すポインタを含み、論理タプル14Bはバージョンリスト20を示すポインタを含む。論理タプル14は、論理タプルがバージョンリストを示すかまたは物理タプルを直接示すかを示すフラグフィールド222を含む。
排他的ロック(Xロック)302は論理タプル14に関連付けられ、1つのトランザクションからの書込動作が他のトランザクションからの読取動作の同じ論理タプルへのアクセスをロックアウトしたことを示す。これらのロックはDBMSによって管理される。たとえば、1つのトランザクションからのロックマネージャ300中のXロック302Bは
、他のトランザクションの下にある書込動作が論理タプル14Bにアクセスすることを防止する。論理タプル14にアクセスできるあらゆる動作が、論理タプル14中のバージョンリストフラグ222をチェックすることによって、関連バージョンリストが存在するか否かをまずチェックする。設定されたバージョンリストフラグ222を有する論理タプルにアクセスする動作は、関連バージョンリストに行く。
物理テーブル空間16は、代替的に内容項目と呼ばれる物理タプルを含む。書込動作がデータ記録において完了するがそのオーナートランザクションがコミットする前であるとき、そのデータ記録(論理タプル)は物理テーブル空間中に2つの物理バージョンを有する。コミット内容項目は読取動作のみが利用可能であり、保留内容項目はそれを作成した書込トランザクションのみが利用可能である。たとえば、論理タプル14Bは書込動作によって変更された。ライタは論理タプル14Bに対する元のコミット内容項目18Bからコピー18B′を作成した。コミット内容項目18Bはあらゆる読取動作が利用可能である。しかし、保留内容項目18B′は保留内容項目18B′を作成した書込トランザクションのみが利用可能である。
タプルバージョンリスト20は3つのフィールドからなる。(1)「オーナーId」フィールドは、バージョンリスト20を作成したトランザクションの一意の識別子を含む。たとえば、保留内容項目18B′を作成した書込トランザクションに対するトランザクションId(XID)がオーナーIdフィールド22中に置かれる。(2)「コミット内容項目」フィールド24は、物理テーブル空間16中の物理コミット内容項目18Bに対するポインタを含む。(3)「保留内容項目」フィールド26は、物理テーブル空間16中の保留内容項目18D′を示す。
図3は、特定の物理内容項目18Aに関連する活性トランザクションがないときのデータベースを示す。この状態において、論理タプル14Aはコミット内容項目18Aを直接示し、タプルバージョンリスト20は存在しない。たとえば、論理タプル14Aにおけるアドレス値は、物理タプル18Aが物理テーブル空間16中に置かれているアドレス場所を直接示す。
物理内容項目18は関連削除フラグ30と、割当フラグ32と、参照カウント34とを有する。削除フラグ30は、削除に対して物理内容項目をマーク付けするために用いられる。割当フラグ32は、空間が現在割当てられていることを識別するために用いられる。参照カウント34は、物理内容項目を現在参照している読取動作の数を識別する。
挿入、削除または更新のいずれか1つが一般的に書込動作38と呼ばれる。読取動作を含むすべての動作は関連XIDを有するトランザクションの下で起こる。書込動作38が論理タプルを作成するとき、それは以下のステップを通る。挿入動作38は物理テーブル空間16中に新たな物理内容項目18Bを作成し、また関連バージョンリスト20も作成する。次いで、それはバージョンリスト20を示す新たな論理タプル14Bを作成する。バージョンリスト20中のオーナーIdフィールド22は、書込動作38に対するトランザクションId(XID)36を含む。コミット内容項目フィールド24はNULL(無効)に設定され、保留内容項目フィールド26は新たに挿入された物理内容項目18Bを示す。これによって、新たな論理タプルのテーブル空間への挿入が完了する。
前述の書込トランザクション38以外の何らかのトランザクションによるテーブル走査は、バージョンリスト20中のコミット内容項目フィールド24のみを見る。フィールド24がNULLであることを見出して、このトランザクションは論理タプル14Bをスキップする。書込トランザクション38に対するトランザクションId36がオーナーIdフィールド22中の値と一致するため、書込トランザクション38による走査は保留内容
項目フィールド26を見る。書込トランザクション38が一旦コミットすると、バージョンリスト20は破壊され、論理タプル中の標識222は0に設定され、論理タプル14Bは物理タプル18Bを直接示す。この時点で内容項目18Bに対する削除フラグ30は設定されない。割当フラグ32は物理内容項目18Bが作成されたときと同じ値であって、DBMS6(図1)に対してテーブル空間16中の物理アドレス空間が現在内容項目18Bに割当てられていることを示し、参照カウント34はゼロに設定される。
遅延削除
削除動作は前述の挿入動作と非常によく似ている。削除動作の挿入動作との唯一の相違点は、論理タプル14Bの削除に対するバージョンリスト20中のコミット内容項目24がコミット内容項目18Bを示し、保留内容項目26がNULLであることである。挿入動作に対して説明したのと同じ論理を用いて、他のトランザクションは論理タプル14B(すなわちコミット内容項目18B)の前の値を見る。現行のトランザクション38はこの論理タプル14Bをスキップする。
図4は、現存する論理タプル14Bに対して更新動作38が行なわれると何が起こるかを示す。保留内容項目18B′を作成した後も、トランザクションを完了する前は、書込動作38が論理タプル14Bに再アクセスする必要があるかもしれない。論理タプル14Bはバージョンリスト20を示す。オーナーIdフィールド22中のトランザクションId36は書込動作38に対するトランザクションId36と一致するため、この動作はバージョンリスト20中の保留内容項目フィールド26を用いて保留内容項目18B′に達する。よって、書込動作38は保留内容項目18B′のみを見る。書込トランザクションによって行なわれるすべての連続した更新は保留内容項目18B′に適用される。これらの更新動作38は、(たとえば前の挿入動作により)バージョンリスト20が既に存在するときにはそれを変更し、それが存在しないときには新たなものを作成する。このバージョンリストにおいて、コミット内容項目フィールド24はコミット内容項目18Bを示し、保留内容項目フィールド26は保留内容項目18B′を示す。バージョンリスト20中のオーナーIdフィールド22は、書込トランザクション38に対するトランザクションId(XID)36を含む。
あらゆる書込動作38はまず、Xロック302B(図2)などの対応する論理タプル上のXロックを要求することによって論理タプル(データ記録)14Bの排他的ロックを得る。これにより、所与の時間においてただ1つの書込トランザクションのみが論理タプルに書込むことができる。しかし、別のトランザクションId36Bの書込動作39部分などのあらゆる読取動作は、Xロック302Bが設定されている間、自由にコミット内容項目18B(あれば)を読取る。これは米国規格協会(ANSI)のREAD COMMITTED分離レベルに従う。コミットされた読取分離とは、あらゆる読取動作がデータ記録(論理タプル)の最後にコミットされたコピーを読取るべきであることを意味する。
削除または更新動作を行なったそれらのトランザクションに対するコミット時には、旧コミット内容項目を物理テーブル空間から除去する必要がある。しかし、これらの書込動作38の挙動は、コミット内容項目18Bに関連する参照カウント34に基づいて変更される。コミット内容項目18Bに対する参照カウント34は、対応する論理タプル14Bにアクセスする各読取動作39に対して増やされる。読取動作38を行なったトランザクションがコミットし、論理タプル14Bの必要な変更を完了するとき、それはバージョンリスト20を割当解除し、関連する旧コミット物理内容項目18Bを割当解除する。
内容項目18は常にまず生成され、次いで削除される。論理タプルに対する更新および削除動作は常に前のコミット内容項目を削除する。書込動作38を行なったトランザクションが完了するとき、それは旧コミット内容項目18Bの削除を試み、保留内容項目18
B′を物理テーブル16中の新たなコミット内容項目にする。
書込トランザクション38はまず、旧コミット内容項目18Bに対する参照カウント34をチェックする。参照カウント34がゼロのとき、書込トランザクション38は旧コミット内容項目18Bの完全な制御を行ない、割当フラグ32をリセットすることによって旧コミット内容項目18Bを削除する。参照カウント34がゼロでないとき、書込トランザクション38は、削除フラグ30を設定してすべての必要なログ記録45をプッシュすることによって内容項目18Bを削除とマーク付けする。現在内容項目18Bを読取っている読取動作39が完了すると、それは参照カウント34を減らす。参照カウント34がゼロであるとき、読取動作39は内容項目18Bに対する削除フラグ30が設定されているかをチェックする。削除フラグ30が設定されているとき、読取動作39は割当フラグ32をリセットすることによって内容項目18Bを物理テーブル空間16から実際に除去する。これで旧コミット内容項目18BはDBMS6によって別の内容項目を割当てるために利用可能となる。
前述の「遅延削除」方式において、読取動作39は内容情報18Bの所有権を得ていかなるログ記録をプッシュする必要もなく削除を完了する。遅延削除とともに付加的な戦略が働いて回復および取消動作を可能にする。チェックポインタは内容項目の削除が本当に終わったものとみなし、ディスク上のデータベースのコピーは常にこの内容項目を「削除」および「自由」とマーク付けして示す。回復プロセスはまた、使用中でないすべての内容項目が自由とマーク付けされることを確実にする。
「タプル生存期間」という用語は、参照するトランザクションのために物理タプル(内容項目)が存在することが必要な時間を示す。コミットされた読取分離の読取動作に対して、参照タプルに対するタプル生存期間とはタプルをアプリケーションバッファにコピーするために必要な時間である。コミットされた読取分離の書込動作を含むあらゆる書込動作に対して、変更されたタプルに対する生存期間とは変更トランザクションの生存期間である。たとえば、Xロックはタプルの生存期間および保留内容項目が生きている間論理タプル上に保持され、トランザクションの終了まで他のトランザクションによって変更することはできない。簡単なロッキングベースの同時実行制御方式においては、タプル項目上に共有ロックが保持されるため、読取トランザクションがタプル値をバッファにコピーし終えるまでタプルの存続が保証される。現行方式の効果の1つは、いかなる読取専用トランザクションもロックを保持する必要がないことである。
分類
「分類」は、同じデータを一度より多く読取る必要があり得る動作の組の代表である。分類の例は結合、グループ化および明確な属性などである。分類を行なう読取動作は物理テーブルから内容項目の組を読取ってもよい。読取動作は分類動作の実行中に削除されるかもしれないあらゆる内容項目の所有権を得て、分類動作の完了時にこうした内容項目をすべて削除する。
遅延削除は文レベル一貫性を必要とする文にも及ぶ。たとえば分類動作は、分類が実際に終了することを確実にするために文レベル一貫性を必要とする。分類が進行中のときに分類によってアクセスされる内容項目が変更可能である場合には、終了保証がなくなる。我々の方式は、参照カウントがゼロよりも大きいあらゆる内容項目がテーブル空間から削除されないことを保証する。文レベル一貫性を必要とするあらゆるトランザクションは、アクセスされる内容項目すべての参照カウントを増やすことができる。文の最後にすべての内容項目の参照カウントが減らされる。
図5は、アドレス値ID1−ID5を含む論理タプル50の組を示す。論理タプル50
中のアドレス値は、物理テーブル空間T1における対応する物理タプル52を示す。この例において、各物理タプル52はデータ記録の“A”列およびデータ記録の“B”列を有する。
分類動作58の一例は以下のとおりである(T1から*を選択し、Bにより順序付け)。
分類動作58において、テーブルT1中のすべての物理タプル52は列B中の値に従って再順序付けされる。いくつかの他のデータベースシステムにおいて行なわれる分類動作は、高い同時実行性を維持したければ、テーブルT1から要求される物理タプル52を別の一時的なテーブルにコピーする必要があり得る。その一時的なテーブル中の物理タプルのコピーは使用前に動作によって分類される。この方式はタプルの第2の組を保存するための大量のメモリを必要とする。さらに、タプル52の第2のコピーは他のトランザクションと共有できない。代替的には、トランザクションは分類の継続時間全体にわたってロックを保持する必要があるかもしれないためにシステム中の同時実行性を深刻に制限する。ORACLE(R)データベースシステムは複数のバージョンによってこの問題を解決するが、前のバージョンに対する迅速なアクセス経路を維持しないためにデータベースシステムの実行速度を深刻に制限する。
しかし、このデータベースシステムでは、物理タプル52の第2のコピーを作る代わりに論理タプル50の第2のコピー55が作成される。論理タプルの第2のコピー55はID1−ID5しか含まず、典型的には大きさが物理タプル52よりもずっと小さい。分類動作58は物理タプル52のみを読取る。したがって他のトランザクションが同じ物理タプル52にアクセスできる。
分類動作58によって参照された物理タプル52のすべてに対して参照カウント34が増やされる。この場合は、物理テーブル空間T1中のすべての物理タプル52である。これによって分類トランザクション58が完了するまで物理タプル52が削除されないことが確実になる。書込トランザクション56が物理タプル52のいずれかに対する内容を変えるとき、前述の遅延削除方式によって、旧コミット物理タプル52が割当解除されるときに分類動作58の制御が可能になる。
分類動作58の際に、論理タプル55は物理タプル52のデータ列B中の値に従って分類される。論理タプルの最終的に分類された組がテーブル60に示される。書込トランザクション56によって削除されるあらゆる物理タプル52に対して削除フラグ30が設定される。分類動作58は、削除フラグ30が設定された物理タプル52に対する割当フラグ32をリセットする。分類動作58は、書込トランザクション56によって削除されるというフラグを立てられなかった物理タプル52に対する割当フラグ32はリセットしない。
索引付け
図6は、索引走査が索引60中のコミットおよび非コミットエントリを区別する、バージョン制御システムの別の特徴を示す。索引方式は通常、動作を削除するための2つまたはそれ以上の索引照合ならびに動作を更新および挿入するための複数の索引照合を必要とする。前述のバージョン制御システムは、動作を挿入および削除するためのただ1つの索引照合ならびに動作を更新するための3つの索引照合を必要とする。更新動作に対する照合のコストをさらに減少させるために既存の最適化技術を用いることができる。
これを効率的になし遂げるために、バージョンリスト70は前述の3つの構成要素に加えて複数の索引エントリのリストを保存する。影響される索引の各々は重複する索引エン
トリを有する。影響される索引のリストは論理タプル挿入および削除動作に対して保持されない。なぜならこれらの動作はすべての索引に影響するからである。たとえば、論理タプル挿入は下にあるテーブルのすべての索引における挿入動作を必要とする。すなわち、索引当りの論理タプル挿入当り1つの挿入照合動作である。(データ記録に対する削除動作を行なった)トランザクションがそのためにすべての索引エントリをコミットするとき、対応する論理タプルはすべての索引から削除される必要がある。その結果、索引当りの論理タプル削除当り1つの索引照合動作となる。
しかし、各更新動作は、対応するバージョンリスト中の影響される索引のリストを保持する。論理タプルが更新されるとき、非コミットマークを伴う新たなエントリがすべての影響される索引に挿入される。論理タプル更新がコミットされるとき、論理タプルに対するすべての影響される索引に対するコミット索引エントリが削除され、すべての非コミットエントリがコミットとマーク付けされる。
一例において、挿入動作は論理タプル68を作成し、次に内容項目84、バージョンリスト70および索引エントリ64Aを作成する。索引エントリ64Aは論理タプル68を示す。最初、バージョンリスト70中の保留内容項目フィールド74はコミット内容項目84を示し、コミット内容項目フィールド76は無効である。
更新動作80において、索引エントリ64Aおよび論理タプル68は既に存在する。更新トランザクション80はコミット内容項目84から保留物理内容項目86を作成する。バージョンリスト70が作成され、そこではコミット内容項目フィールド74がコミット内容項目84を示し、保留内容項目フィールド76が保留内容項目86を示す。
更新動作80によって、保留内容項目86に対応する新たな索引エントリ66Aが作成される。新たな索引エントリ66Aはフラグ66Bを設定することによってマーク付けされる。マーク付けされた索引エントリは内容項目の新たな保留バージョンを参照し、マーク付けされないエントリは内容項目のコミットされたバージョンを参照する。索引は影響されたとマーク付けされ、これは索引62中に二重のエントリがあることを意味する。バージョンリスト70はまた、二重エントリを有する索引を識別する索引マップ78を含む。この場合、索引マップ78は索引62が二重エントリ64Aおよび66Aを有することを識別する。
索引走査の際に、更新動作80を行なったトランザクション90は索引エントリ64Aを受取ってもよい。索引エントリ64Aは論理タプル68を介してバージョンリスト70を示す。このトランザクション90はバージョンリスト70のオーナーIdフィールド72に含まれるものと同じXIDを有し、索引62は索引マップ78において識別される。したがって、トランザクション90に無効値が戻されて、トランザクション90がコミット内容項目84に関連する索引エントリ64Aを用いることを防ぐ。
それによって索引走査は索引エントリ64Aをスキップし、トランザクション90にマーク付けされた索引エントリ66Aを与える。マーク付けされた索引エントリ66Aは論理タプル68を介してバージョンリスト70を示す。索引エントリ66Aがマーク付けされており、またトランザクションIdがオーナーIdフィールド72中のIdと一致するため、トランザクション90の読取動作(走査とも呼ばれる)には、保留内容項目86を示す保留内容項目フィールド76中の値が与えられる。このプロセスは、更新トランザクションが保留内容項目86にアクセスするために正しい索引エントリ66Aを用いることを確実にする。
図7は、前述の索引付け方式をより詳細に説明する流れ図である。図6に示されるバー
ジョンリスト70は、論理タプル68を更新した動作のトランザクションIdを含むオーナーXIDによって参照される。コミットTupId項は、論理タプルの前のバージョンの物理タプルIdを参照する。非コミットTupId項は、論理タプルの新たなバージョンに対する物理タプルIdを参照する。索引マップ(indexMap)項はすべての影響される索引のビットマップを参照し、実施例の1つにおいては更新トランザクションに対してのみ存在する。しかし、スキャナは挿入、削除、影響された索引および影響されない索引を分析する。
バージョンリストは論理タプルvリスト(logicalTuple.vList)を参照する。「マーク(mark)」項は索引エントリ中のコミットまたは非コミットマークを識別する。索引Id(indexId)は索引エントリが走査されることを表わすビットマップである。挿入に対して、コミットとマーク付けされる索引エントリは1つしかない。
ブロック92において、DBMSは論理タプルがバージョニングされたかどうかを判断する。バージョニングされていない論理タプルはさらに分析されることがなく、ブロック90においてその論理タプルが示す物理タプルはスキャナに戻される。論理タプルがバージョニングされているとき、論理タプルはバージョンリストを示す。スキャナが索引エントリを見るとき、それは次の態様で解決される。索引が影響される索引であるとき、そこには2つの索引エントリがある。第1の索引エントリはコミットに対してマーク付けされておらず、論理タプルの前のバージョンが索引中で位置決めされていた位置を表わす。第2の索引エントリは非コミットコピーに対してマーク付けされ、索引中の論理タプルの新たな位置を表わす。
ブロック96において、索引エントリがコミットとマーク付けされ、かつトランザクションIdがバージョンリスト中のオーナーIdと一致するかまたはトランザクションIdがコミットトランザクションを表わし、かつ索引エントリが影響される索引を表わすとき(これは影響される索引ビットマップ中の索引Idの帰属をチェックすることによって確認される)、ブロック94において無効ID(NULLID)がスキャナに戻され、物理内容項目エントリは存在しないとされる。
索引エントリがブロック100においてコミットとマーク付けされるか、またはブロック104において非コミットとマーク付けされ、かつトランザクションId(XID)がvlistと一致するか、またはXIDがコミットトランザクションを表わすとき、ブロック98またはブロック102において非コミットタプルID(uncommitedTupleId)が戻される。トランザクションおよびバージョンリストの間でXIDの一致がないとき、またはオーナーXIDがコミットトランザクションでないとき、ブロック108においてコミットタプルID(commitedTupleId)が戻される。削除に対しても同じことが当てはまり、影響されない索引に対しても同じ論理が当てはまる。
図7における論理は代替的に次のように表わされる。
Figure 0004603546
上記に示す方式はANSI SQLの基準に従っており、更新トランザクションのみが自身の更新を見て、読取トランザクションはコミットデータのみを見る。この実施はANSI READ COMMITTED分離レベルに従う。
更新トランザクションのすべての影響が1つのステップで読取トランザクションに可視的になる。図7に示すとおり、すべてのトランザクションはコミットフィールドを有し、それはトランザクションに対してコミット判断が実行されるときに真(TRUE)に設定される。コミットフィールドが設定された後、すべてのスキャナは非コミット物理タプルIdに従うことによって論理タプルの更新値を見る。一旦コミットするという判断が実行されると、ラッチまたはロックを保持することなく原子的なコミットが得られる。すると論理タプルのクリーンアップは怠惰になることができる。
ここで言及する方式は、直列可能なトランザクションが2相ロッキング方式に従う直列可能なトランザクションに容易に移植可能である。索引一貫性を確実にするために、直列可能な索引走査の生じるあらゆるエントリに共有ロックを用いることができる。索引エントリによって示される論理タプルに対して読取ロックを得ることができる。一旦ロックが得られて、索引エントリが「更新中(in-update)」であることが見出されると、トランザクションは論理タプルを変更しているはずである。この場合、保留内容項目Idは戻される。索引エントリがマーク付けされていないことが見出されるとき、論理タプルのオーナーId(OwnerId)および現在のトランザクションのトランザクションidが一致すれば索引エントリは無視され、そうでなければコミット内容項目idは戻される。
概要
この発明の異なる局面は、直列可能でないトランザクションのための非ブロッキング読
取を提供する。すなわち、データ記録の読取が遅延されない。データ記録の読取および書込の間に依存性は必要とされず、ライタはそれら自身の間で依存性を有することはできるが、いかなる読取動作との依存性も要求されない。読取動作がデータ記録を読取るときに効率的なバージョン配置が与えられる。遅延される一貫性チェックがないため、トランザクションは、コミット時よりもむしろ書込動作の実行の際に生じるに違いない「書込」動作デッドロック以外の理由でコミット時にロールバックされる必要がない。データ記録のバージョンが必要とされるより長くデータベース中に滞在することのない、ゴミのない実行が提供される。効率的な減少された分離支持は、読取られるバージョンの効率的な場所を含む、減少された分離レベルで走るトランザクションの実行を提供する。
非ブロッキングトランザクション承認はいかなるロッキング競合によってもトランザクションを遅延させることがなく、データの年齢は制限される。同じデータ記録の複数のコピーの存在下で効率的な索引管理が提供され、ゴミのない実行特性を維持しながらスナップショットに対する簡単な拡張性が提供される。さらに、トランザクションは自身が読取専用または読取−書込であることを予め宣言する必要がない。
前述のシステムは、動作のいくつかまたはすべてを行なう専用プロセッサシステム、マイクロコントローラ、プログラム可能論理装置、またはマイクロプロセッサを用いることができる。前述の動作のいくつかはソフトウェアにおいて実現されてもよく、他の動作はハードウェアにおいて実現されてもよい。
利便性のために、さまざまな相互接続された機能ブロックまたは別個のソフトウェアモジュールとして動作を説明した。しかしそうである必要はなく、これらの機能ブロックまたはモジュールが不明瞭な境界を有する単一の論理装置、プログラムまたは動作に同等に集められる場合があってもよい。とにかく、機能ブロックおよびソフトウェアモジュールまたはフレキシブルインターフェイスの特徴は、それら自身によって、またはハードウェアもしくはソフトウェアにおける他の動作との組合せによって実現できる。
この発明の原理をその好ましい実施例において説明および例示したが、そうした原理から逸脱することなくこの発明の配列および詳細を変更してもよいことが明らかなはずである。請求項の趣旨および範囲内にあるすべての変更および修正を主張する。
バージョン制御システムを用いるデータベースシステムのブロック図である。 データベースシステムにおいてバージョン制御システムがどのように動作するかを示すブロック図である。 バージョン制御システムの動作をさらに詳細に示すブロック図である。 バージョン制御システムの動作をさらに詳細に示すブロック図である。 分類動作の際にバージョン制御システムがどのように動作するかを示す図である。 データベースシステムにおいて索引付けがどのように制御されるかを示す図である。 データベースシステムにおいて索引付けがどのように制御されるかを示す図である。

Claims (8)

  1. データを処理する方法であって、
    書込トランザクションによって、第1のデータから第2のデータを作成するステップと、
    第1のデータを示す第1のフィールド、第2のデータを示す第2のフィールド、および書込トランザクションに対するトランザクションIdを保存する第3のフィールドを有するバージョンリストを作成するステップと、
    バージョンリストの第3のフィールドにおけるトランザクションIdと一致するトランザクションにバージョンリスト中の第2のフィールドを供給し、バージョンリストの第3のフィールドにおけるトランザクションIdと一致しないトランザクションに第1のフィールドを与えるステップと、
    書込トランザクションが第2のデータをコミットするときに、削除に対して第1のデータにフラグを立てるステップと、
    読取トランザクションが第1のデータにアクセスするごとに参照カウントを増やすステップと、
    読取トランザクションが第1のデータへのアクセスを終えるごとに参照カウントを減らすステップと、
    完了した読取トランザクションが参照カウントをゼロに減らすときに、フラグを立てられた削除に対して第1のデータをチェックするステップと、
    第1のデータが削除に対してフラグを立てられており、かつゼロ参照カウントを有するときに読取トランザクションによって第1のデータを割当解除するステップとを含む、方法。
  2. 書込トランザクションが第2のデータを作成したときに、バージョンリストを示すポインタを含み、書込トランザクションが完了したときに、第2のデータを示すポインタを含む論理タプルを生成するステップを含む、請求項に記載の方法。
  3. 索引中の索引エントリがコミットであるか非コミットであるをマーク付けするステップと、
    コミットであるとマーク付けされたエントリおよび非コミットであるとマーク付けされたエントリを有する索引を識別するバージョンリスト中の索引マップを与えるステップと、
    引を走査するステップと、
    索引エントリが索引マップに関連しておらず、かつ索引走査を開始するトランザクションに対する識別子(Id)がバージョンリストの第3のフィールドにおけるトランザクションIdと一致するときに、第2のデータにポインタを戻すステップと、
    索引エントリが索引マップに関連しておらず、かつ索引走査を開始するトランザクションに対する識別子(Id)がバージョンリストの第3のフィールドにおけるトランザクションIdと一致しないときに、第1のデータにポインタを戻すステップとを含む、請求項に記載の方法。
  4. 各第1のデータのアドレス値を含む論理タプルを各第1のデータに対して作成するステップと、
    論理タプルの組をコピーするステップと、
    論理タプルのコピーされた組に関連する第1のデータに対する参照カウントを増やすステップと、
    前記動作が完了するときに第1のデータに対する参照カウントを減らすステップと、
    削除フラグを有しかつゼロ参照カウントを有する第1のデータのいずれかを割当解除するステップとを含む、請求項に記載の方法。
  5. 第1のデータを含むデータベースと、
    書込トランザクションによって、第1のデータから第2のデータを作成し、第1のデータを示す第1のフィールドと、第2のデータを示す第2のフィールドと、第2のデータを作成するトランザクションに対するトランザクションIdを保存する第3のフィールドとを有するバージョンリストを作成し、第3のフィールドにおけるトランザクションIdと一致するトランザクションにバージョンリスト中の第2のフィールドを供給し、第3のフィールドにおけるトランザクションIdと一致しないトランザクションに第1のフィールドを与えるプロセッサとを含み、前記プロセッサは、書込トランザクションが第2のデータをコミットするときに、削除に対して第1のデータにフラグを立て、読取トランザクションが第1のデータにアクセスするごとに参照カウントを増やし、読取トランザクションが第1のデータへのアクセスを終えるごとに参照カウントを減らし、前記プロセッサは、第1のデータが以前に削除に対してマーク付けされており、かつ読取トランザクションが参照カウントをゼロに減らすときに第1のデータを割当解除する、データベースシステム。
  6. 前記プロセッサは、書込トランザクションが第2のデータを作成したときに、バージョンリストを示すポインタを含み、書込トランザクションが完了したときに、第2のデータを示すポインタを含む論理タプルを作成する、請求項に記載のデータベースシステム。
  7. 前記プロセッサは、索引中の索引エントリがコミットであるか非コミットであるをマーク付けし、索引中のコミットであるとマーク付けされたエントリおよび非コミットであるとマーク付けされたエントリを識別するバージョンリスト中の索引マップを与え、前記プロセッサは書込トランザクションに対して索引を走査し、索引エントリが索引マップによって参照されず、かつ索引走査を開始するトランザクションに対する識別子(Id)がバージョンリストの第3のフィールドにおけるトランザクションIdと一致するとき、前記プロセッサは第2のデータにポインタを戻し、索引エントリが索引マップにおいて参照されず、かつ索引走査を開始するトランザクションに対する識別子(Id)がバージョンリストの第3のフィールドにおけるトランザクションIdと一致しないとき、前記プロセッサは第1のデータにポインタを戻す、請求項に記載のデータベースシステム。
  8. 前記プロセッサは、各第1のデータのアドレス値を含む論理タプルを各第1のデータに対して作成し、論理タプルの組をコピーし、前記プロセッサは論理タプルのコピーされた組に関連する第1のデータに対する参照カウントを増やし、分類トランザクションが完了するときに第1のデータに対する参照カウントを減らし、削除フラグおよびゼロ参照カウントを有する第1のデータのいずれかを割当解除する、請求項に記載のデータベースシステム。
JP2006522785A 2003-08-06 2004-08-06 効率的なバージョン制御を有するデータベース管理システム Active JP4603546B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/636,361 US7243088B2 (en) 2003-08-06 2003-08-06 Database management system with efficient version control
PCT/US2004/025657 WO2005015401A2 (en) 2003-08-06 2004-08-06 A database management system with efficient version control

Publications (2)

Publication Number Publication Date
JP2007501468A JP2007501468A (ja) 2007-01-25
JP4603546B2 true JP4603546B2 (ja) 2010-12-22

Family

ID=34116412

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006522785A Active JP4603546B2 (ja) 2003-08-06 2004-08-06 効率的なバージョン制御を有するデータベース管理システム

Country Status (7)

Country Link
US (2) US7243088B2 (ja)
EP (1) EP1652084A2 (ja)
JP (1) JP4603546B2 (ja)
CN (1) CN100432939C (ja)
AU (1) AU2004264231B2 (ja)
CA (1) CA2537411C (ja)
WO (1) WO2005015401A2 (ja)

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9208191B2 (en) 2012-07-20 2015-12-08 Sap Se Lock-free, scalable read access to shared data structures
US8024355B2 (en) * 2004-12-29 2011-09-20 Sap Ag Dynamic capacity demand profile construction with a persisted capacity demand profile and a collision buffer
US8086580B2 (en) * 2005-01-11 2011-12-27 International Business Machines Corporation Handling access requests to a page while copying an updated page of data to storage
CA2600504C (en) * 2005-04-18 2013-04-09 Research In Motion Limited Container-level transaction management system and method therefor
US7617180B1 (en) * 2005-06-06 2009-11-10 Infoblox Inc. Efficient lock management
CN100454302C (zh) * 2005-10-24 2009-01-21 中兴通讯股份有限公司 一种文件管理系统及管理方法
US7440957B1 (en) * 2005-11-30 2008-10-21 At&T Intellectual Property Ii, L.P. Updates through views
US7502792B2 (en) * 2006-04-26 2009-03-10 Microsoft Corporation Managing database snapshot storage
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US8181187B2 (en) * 2006-12-01 2012-05-15 Portico Systems Gateways having localized in-memory databases and business logic execution
US7747589B2 (en) * 2007-03-12 2010-06-29 Microsoft Corporation Transaction time indexing with version compression
US20080243966A1 (en) * 2007-04-02 2008-10-02 Croisettier Ramanakumari M System and method for managing temporary storage space of a database management system
US8037112B2 (en) * 2007-04-23 2011-10-11 Microsoft Corporation Efficient access of flash databases
US7870122B2 (en) * 2007-04-23 2011-01-11 Microsoft Corporation Self-tuning index for flash-based databases
US9483525B2 (en) * 2007-04-30 2016-11-01 Microsoft Technology Licensing, Llc Reducing update conflicts when maintaining views
US7941411B2 (en) * 2007-06-29 2011-05-10 Microsoft Corporation Memory transaction grouping
US7991967B2 (en) * 2007-06-29 2011-08-02 Microsoft Corporation Using type stability to facilitate contention management
US9594784B2 (en) * 2007-10-19 2017-03-14 Oracle International Corporation Push-model based index deletion
US9594794B2 (en) * 2007-10-19 2017-03-14 Oracle International Corporation Restoring records using a change transaction log
US9418154B2 (en) * 2007-10-19 2016-08-16 Oracle International Corporation Push-model based index updating
US8682859B2 (en) * 2007-10-19 2014-03-25 Oracle International Corporation Transferring records between tables using a change transaction log
US7904427B2 (en) * 2008-01-11 2011-03-08 Microsoft Corporation Lazier timestamping in a transaction time database
JP5343399B2 (ja) * 2008-05-22 2013-11-13 富士通株式会社 管理プログラム、管理方法、及び管理装置
US8738573B2 (en) * 2008-05-23 2014-05-27 Microsoft Corporation Optimistic versioning concurrency scheme for database streams
JP5467625B2 (ja) * 2008-07-30 2014-04-09 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクションを処理する本番システムと該本番システムのバックアップ・システムである代行システムとを含む本番−代行システム
US8028113B2 (en) * 2008-08-15 2011-09-27 International Business Machines Corporation Methods and systems for deadlock-free allocation of memory
US8117160B1 (en) * 2008-09-30 2012-02-14 Emc Corporation Methods and apparatus for creating point in time copies in a file system using reference counts
US20100088270A1 (en) * 2008-10-03 2010-04-08 Carsten Ziegler Data versioning concept including time dependency and active and inactive states
CA2750279C (en) 2009-02-13 2019-03-26 Ab Initio Technology Llc Managing task execution
US8667329B2 (en) * 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
US8396831B2 (en) * 2009-12-18 2013-03-12 Microsoft Corporation Optimistic serializable snapshot isolation
US8356007B2 (en) 2010-10-20 2013-01-15 Microsoft Corporation Distributed transaction management for database systems with multiversioning
EP3287896B1 (en) 2010-06-15 2023-04-26 Ab Initio Technology LLC Dynamically loading graph-based computations
US8392384B1 (en) * 2010-12-10 2013-03-05 Symantec Corporation Method and system of deduplication-based fingerprint index caching
JP5772458B2 (ja) * 2011-09-29 2015-09-02 富士通株式会社 データ管理プログラム、ノード、および分散データベースシステム
CN102508744A (zh) * 2011-11-10 2012-06-20 浪潮电子信息产业股份有限公司 一种减少系统资源开销的快照实现方法
US8938430B2 (en) * 2012-02-22 2015-01-20 International Business Machines Corporation Intelligent data archiving
US20130226891A1 (en) * 2012-02-29 2013-08-29 Red Hat Inc. Managing versions of transaction data used for multiple transactions in distributed environments
JP5971713B2 (ja) * 2012-09-20 2016-08-17 株式会社東芝 Icカード
US9047333B2 (en) * 2012-09-20 2015-06-02 Cray Inc Dynamic updates to a semantic database using fine-grain locking
CN103714090B (zh) * 2012-10-09 2018-04-10 阿里巴巴集团控股有限公司 多索引数据库事务处理方法及数据库
US10108521B2 (en) 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US9507682B2 (en) 2012-11-16 2016-11-29 Ab Initio Technology Llc Dynamic graph performance monitoring
US9747313B2 (en) * 2012-12-19 2017-08-29 Sap Se Timeline index for managing temporal data
US9009203B2 (en) 2013-02-19 2015-04-14 Sap Se Lock-free, scalable read access to shared data structures using garbage collection
US9633023B2 (en) * 2013-03-15 2017-04-25 Microsoft Technology Licensing, Llc Efficient DVCS storage system
US9659050B2 (en) * 2013-08-06 2017-05-23 Sybase, Inc. Delta store giving row-level versioning semantics to a non-row-level versioning underlying store
US9519664B1 (en) * 2013-09-20 2016-12-13 Amazon Technologies, Inc. Index structure navigation using page versions for read-only nodes
US9684685B2 (en) 2013-10-24 2017-06-20 Sap Se Using message-passing with procedural code in a database kernel
US9600551B2 (en) 2013-10-24 2017-03-21 Sap Se Coexistence of message-passing-like algorithms and procedural coding
US9336258B2 (en) * 2013-10-25 2016-05-10 International Business Machines Corporation Reducing database locking contention using multi-version data record concurrency control
CN103714121B (zh) * 2013-12-03 2017-07-14 华为技术有限公司 一种索引记录的管理方法及装置
CA3128713C (en) 2013-12-05 2022-06-21 Ab Initio Technology Llc Managing interfaces for dataflow graphs composed of sub-graphs
JP6242711B2 (ja) * 2014-02-24 2017-12-06 株式会社東芝 ストレージ装置及びデータ管理方法
US10698723B2 (en) * 2014-03-31 2020-06-30 Oracle International Corporation Dropping an index without blocking locks
JP6402537B2 (ja) 2014-08-22 2018-10-10 富士通株式会社 更新処理プログラム、装置、及び方法
US9953050B2 (en) * 2014-11-25 2018-04-24 Sap Se Garbage collection of versions driving the garbage collection of multi-version concurrency control timestamps
US10108623B2 (en) 2014-12-12 2018-10-23 International Business Machines Corporation Merging database operations for serializable transaction execution
US9430396B2 (en) * 2014-12-22 2016-08-30 Intel Corporation Updating persistent data in persistent memory-based storage
WO2016117032A1 (ja) * 2015-01-20 2016-07-28 株式会社日立製作所 データベースシステム、計算機システム、及び、データベース管理方法
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US10083203B2 (en) 2015-08-11 2018-09-25 International Business Machines Corporation Reducing the cost of update, delete, and append-only insert operations in a database
US10275399B2 (en) * 2015-11-17 2019-04-30 Sap Se Faster main memory scans in unsorted dictionary-encoded vectors
US10114844B2 (en) * 2015-11-30 2018-10-30 International Business Machines Corporation Readiness checker for content object movement
US11226985B2 (en) 2015-12-15 2022-01-18 Microsoft Technology Licensing, Llc Replication of structured data records among partitioned data storage spaces
US10235406B2 (en) 2015-12-15 2019-03-19 Microsoft Technology Licensing, Llc Reminder processing of structured data records among partitioned data storage spaces
US10599676B2 (en) 2015-12-15 2020-03-24 Microsoft Technology Licensing, Llc Replication control among redundant data centers
US10248709B2 (en) 2015-12-15 2019-04-02 Microsoft Technology Licensing, Llc Promoted properties in relational structured data
CA3005263C (en) 2015-12-21 2021-06-15 Ab Initio Technology Llc Sub-graph interface generation
US10545815B2 (en) 2016-08-03 2020-01-28 Futurewei Technologies, Inc. System and method for data redistribution in a database
CN108287835B (zh) * 2017-01-09 2022-06-21 腾讯科技(深圳)有限公司 一种数据清理方法及装置
US10037778B1 (en) * 2017-02-27 2018-07-31 Amazon Technologies, Inc. Indexing zones for storage devices
US10719446B2 (en) 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
EP3627343A1 (en) * 2018-09-19 2020-03-25 censhare AG Efficient in-memory multi-version concurrency control for a trie data structure based database
US20200110819A1 (en) * 2018-10-08 2020-04-09 International Business Machines Corporation Low cost fast recovery index in storage class memory
US11829384B1 (en) * 2019-06-24 2023-11-28 Amazon Technologies, Inc. Amortizing replication log updates for transactions
CN110515705B (zh) * 2019-08-07 2022-03-11 上海交通大学 可扩展的持久性事务内存及其工作方法
US11645241B2 (en) 2019-09-13 2023-05-09 Oracle International Corporation Persistent memory file store for directly mapped persistent memory database
US11455288B2 (en) * 2020-03-20 2022-09-27 Sap Se Version table scheme for fast version space access
WO2021231234A1 (en) * 2020-05-12 2021-11-18 Google Llc Zero copy optimization for select * queries
US11507559B2 (en) 2020-05-25 2022-11-22 Hewlett Packard Enterprise Development Lp Object sharing by entities using a data structure
CN116662764B (zh) * 2023-07-28 2023-09-29 中国电子科技集团公司第十五研究所 误识别纠正的数据识别方法、模型训练方法、装置和设备
CN117828127A (zh) * 2023-10-27 2024-04-05 北京大学 一种基于半结构化存储的树状层级集群用户管理方法

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4627019A (en) * 1982-07-08 1986-12-02 At&T Bell Laboratories Database management system for controlling concurrent access to a database
US4875159A (en) * 1987-12-22 1989-10-17 Amdahl Corporation Version management system using plural control fields for synchronizing two versions of files in a multiprocessor system
US5170480A (en) * 1989-09-25 1992-12-08 International Business Machines Corporation Concurrently applying redo records to backup database in a log sequence using single queue server per queue at a time
US5313629A (en) * 1989-10-23 1994-05-17 International Business Machines Corporation Unit of work for preserving data integrity of a data-base by creating in memory a copy of all objects which are to be processed together
JP2575543B2 (ja) * 1990-04-04 1997-01-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 同時アクセス管理方法
EP0472829A3 (en) * 1990-08-31 1993-01-07 International Business Machines Corporation Multicomputer complex and distributed shared data memory
US5287496A (en) * 1991-02-25 1994-02-15 International Business Machines Corporation Dynamic, finite versioning for concurrent transaction and query processing
US5701480A (en) * 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
US5280612A (en) * 1991-11-26 1994-01-18 International Business Machines Corporation Multiple version database concurrency control system
US5440727A (en) * 1991-12-18 1995-08-08 International Business Machines Corporation Asynchronous replica management in shared nothing architectures
US5555404A (en) * 1992-03-17 1996-09-10 Telenor As Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas
US5423037A (en) * 1992-03-17 1995-06-06 Teleserve Transaction Technology As Continuously available database server having multiple groups of nodes, each group maintaining a database copy with fragments stored on multiple nodes
US5452445A (en) * 1992-04-30 1995-09-19 Oracle Corporation Two-pass multi-version read consistency
US5497483A (en) * 1992-09-23 1996-03-05 International Business Machines Corporation Method and system for track transfer control during concurrent copy operations in a data processing storage subsystem
GB2273183A (en) * 1992-12-04 1994-06-08 Ibm Replicated distributed databases.
US5485607A (en) * 1993-02-05 1996-01-16 Digital Equipment Corporation Concurrency-control method and apparatus in a database management system utilizing key-valued locking
JP3512439B2 (ja) * 1993-07-08 2004-03-29 富士通株式会社 チェックイン・チェックアウトモデルにおける施錠方式
AU7684094A (en) * 1993-09-24 1995-04-10 Oracle Corporation Method and apparatus for data replication
US5642503A (en) * 1993-12-15 1997-06-24 Microsoft Corporation Method and computer system for implementing concurrent accesses of a database record by multiple users
US5410693A (en) * 1994-01-26 1995-04-25 Wall Data Incorporated Method and apparatus for accessing a database
US5796999A (en) * 1994-04-15 1998-08-18 International Business Machines Corporation Method and system for selectable consistency level maintenance in a resilent database system
JP2507235B2 (ja) * 1994-06-24 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション クライアント・サ―バ・コンピュ―タ・システム、及びそのクライアント・コンピュ―タ、サ―バ・コンピュ―タ、並びにオブジェクト更新方法
FR2724513A1 (fr) * 1994-09-13 1996-03-15 Philips Electronique Lab Systeme de transmission numerique synchronisable sur ses sequences d'initialisation
US5577240A (en) * 1994-12-07 1996-11-19 Xerox Corporation Identification of stable writes in weakly consistent replicated databases while providing access to all writes in such a database
US5621795A (en) * 1994-12-27 1997-04-15 Pitney Bowes Inc. System and method for fault tolerant key management
US5708812A (en) * 1996-01-18 1998-01-13 Microsoft Corporation Method and apparatus for Migrating from a source domain network controller to a target domain network controller
US5870758A (en) * 1996-03-11 1999-02-09 Oracle Corporation Method and apparatus for providing isolation levels in a database system
GB2311391A (en) * 1996-03-19 1997-09-24 Ibm Restart and recovery of OMG compliant transaction systems
US5852715A (en) * 1996-03-19 1998-12-22 Emc Corporation System for currently updating database by one host and reading the database by different host for the purpose of implementing decision support functions
US6647510B1 (en) * 1996-03-19 2003-11-11 Oracle International Corporation Method and apparatus for making available data that was locked by a dead transaction before rolling back the entire dead transaction
US5758337A (en) * 1996-08-08 1998-05-26 Microsoft Corporation Database partial replica generation system
US6009425A (en) * 1996-08-21 1999-12-28 International Business Machines Corporation System and method for performing record deletions using index scans
US5781910A (en) * 1996-09-13 1998-07-14 Stratus Computer, Inc. Preforming concurrent transactions in a replicated database environment
JP3341637B2 (ja) * 1997-06-20 2002-11-05 日本電気株式会社 トランザクション処理システムにおける端末状態管理方法及びコンピュータ読み取り可能な記録媒体
US6122645A (en) * 1997-08-25 2000-09-19 Lucent Technologies, Inc. System and method for physically versioning data in a main memory database
US6351753B1 (en) * 1998-02-20 2002-02-26 At&T Corp. Method and apparatus for asynchronous version advancement in a three version database
US6233585B1 (en) * 1998-03-12 2001-05-15 Crossworlds Software, Inc. Isolation levels and compensating transactions in an information system
US5971127A (en) * 1998-04-01 1999-10-26 Chun; Lin Bin Control mechanism for moving a driving shaft of a machine
JP3475783B2 (ja) * 1998-04-17 2003-12-08 日本電気株式会社 データベース定義情報のプロセス間共有制御方式
US6295610B1 (en) * 1998-09-17 2001-09-25 Oracle Corporation Recovering resources in parallel
US6502133B1 (en) * 1999-03-25 2002-12-31 Lucent Technologies Inc. Real-time event processing system with analysis engine using recovery information
US6631478B1 (en) * 1999-06-18 2003-10-07 Cisco Technology, Inc. Technique for implementing high performance stable storage hierarchy in a computer network
JP4237354B2 (ja) * 1999-09-29 2009-03-11 株式会社東芝 トランザクション処理方法及びトランザクション処理システム
US6856993B1 (en) 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
JP2002351715A (ja) * 2001-03-19 2002-12-06 Ricoh Co Ltd 書き込み遅延データベース管理システム
JP2002373082A (ja) * 2001-06-15 2002-12-26 Nec Corp マルチタスク構成のトランザクション処理方法及びトランザクション処理プログラム
US6873995B2 (en) * 2002-04-23 2005-03-29 International Business Machines Corporation Method, system, and program product for transaction management in a distributed content management application
US7685583B2 (en) * 2002-07-16 2010-03-23 Sun Microsystems, Inc. Obstruction-free mechanism for atomic update of multiple non-contiguous locations in shared memory
GB2397401A (en) * 2003-01-15 2004-07-21 Luke Leonard Martin Porter Time in databases and applications of databases
JP4077329B2 (ja) * 2003-01-31 2008-04-16 株式会社東芝 トランザクション処理システム、並行制御方法及びプログラム
CA2425033A1 (en) * 2003-04-08 2004-10-08 Ibm Canada Limited - Ibm Canada Limitee Multi-level locking hierarchy in a database with multi-dimensional clustering
US7496574B2 (en) * 2003-05-01 2009-02-24 International Business Machines Corporation Managing locks and transactions

Also Published As

Publication number Publication date
WO2005015401A3 (en) 2005-03-24
AU2004264231A1 (en) 2005-02-17
WO2005015401A2 (en) 2005-02-17
US20050033720A1 (en) 2005-02-10
US7243088B2 (en) 2007-07-10
CA2537411C (en) 2011-07-05
CN1864137A (zh) 2006-11-15
EP1652084A2 (en) 2006-05-03
CN100432939C (zh) 2008-11-12
JP2007501468A (ja) 2007-01-25
US20070233683A1 (en) 2007-10-04
WO2005015401A9 (en) 2008-10-02
US8010497B2 (en) 2011-08-30
CA2537411A1 (en) 2005-02-17
AU2004264231B2 (en) 2010-09-02

Similar Documents

Publication Publication Date Title
JP4603546B2 (ja) 効率的なバージョン制御を有するデータベース管理システム
US11914568B2 (en) High-performance database engine implementing a positional delta tree update system
US11314716B2 (en) Atomic processing of compound database transactions that modify a metadata entity
US6792432B1 (en) Database system with methods providing high-concurrency access in B-Tree structures
EP1540533B1 (en) Controlling visibility in multi-version database systems
Kornacker et al. High-concurrency locking in R-trees
US7376674B2 (en) Storage of multiple pre-modification short duration copies of database information in short term memory
US5430869A (en) System and method for restructuring a B-Tree
US11023453B2 (en) Hash index
US5758356A (en) High concurrency and recoverable B-tree index management method and system
US10846279B2 (en) Transactional key-value store
US5355477A (en) Method for updating a block using record-level locks by committing the update if the block has not been updated by another process otherwise spinning
JPH04337850A (ja) データベース・トランザクション及び照会処理システム
KR20080044480A (ko) 지연된 로깅 방법 및 그 장치
US6694340B1 (en) Technique for determining the age of the oldest reading transaction with a database object
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
Zou et al. Safely and efficiently updating references during on-line reorganization
Hu et al. Online schema evolution is (almost) free for snapshot databases
US7209919B2 (en) Library server locks DB2 resources in short time for CM implicit transaction
CN116860768A (zh) 数据库事务处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070627

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100420

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100716

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100726

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100818

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100907

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101001

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

Free format text: PAYMENT UNTIL: 20131008

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4603546

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250