JP4647653B2 - バージョニングをベースとするトリガのためのシステムおよび方法 - Google Patents

バージョニングをベースとするトリガのためのシステムおよび方法 Download PDF

Info

Publication number
JP4647653B2
JP4647653B2 JP2007506121A JP2007506121A JP4647653B2 JP 4647653 B2 JP4647653 B2 JP 4647653B2 JP 2007506121 A JP2007506121 A JP 2007506121A JP 2007506121 A JP2007506121 A JP 2007506121A JP 4647653 B2 JP4647653 B2 JP 4647653B2
Authority
JP
Japan
Prior art keywords
data
record
version
row
records
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.)
Expired - Fee Related
Application number
JP2007506121A
Other languages
English (en)
Other versions
JP2007531152A (ja
Inventor
ガン へ
ジェイ.ズウィリング マイケル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2007531152A publication Critical patent/JP2007531152A/ja
Application granted granted Critical
Publication of JP4647653B2 publication Critical patent/JP4647653B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • 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/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24565Triggers; Constraints
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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
    • 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/99954Version management
    • 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/99955Archiving or backup

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、一般にコンピュータシステムに関し、より詳細には、データベース管理システム(DBMS)におけるトリガのバージョン・ベースのリンクおよび実装に関連するシステムおよび/または方法に関する。
本願は、2004年3月29日に出願された「Systems and Methods for Versioning Based Triggers」という名称の米国特許仮出願第60/557,286号明細書、ならびに2004年7月12日に出願された米国特許本出願第(不明)号明細書の利益を主張する。これらの出願の全体を参照により本明細書に組み込む。
データベース管理システム(DBMS)の技術的な進展につれて、性能効率を高めることが進行中であり、性能効率を高めるニーズが増大している。具体的には、トリガに関連してデータベース性能を高めることが引き続き、また、ますます求められている。
一般に、DBMSでは、データの現行バージョンが「ベース」テーブル内に格納される。ベース・テーブル内の各行(row)は、削除オペレーション、挿入オペレーション、または更新オペレーションの結果として変更される可能性がある。行が変更されたとき、その変更は、1組の一時「遷移」テーブル内に格納することができる。そのような1組の遷移テーブルは、DBMSによって自動的に作成および管理することができる。その1組の遷移テーブルは、ベース・テーブルから削除された行を格納する「削除」テーブルと、ベース・テーブル内に挿入された行を格納する「挿入」テーブルとを含むことができる。行が更新された場合、その行の前バージョンは削除テーブル内に格納され、その行の現行バージョンが挿入テーブル内に格納される。
遷移テーブルは、DBMSが変更の影響を試験すること、また、トリガ・アクションのための条件を設定することを可能とする。具体的には、遷移テーブルは、テーブル間で参照保全(referential integrity)を延長し、特定のビューの基礎となるベース・テーブル内のデータを変更し、エラーがあるかどうか検査し検出されたエラーに基づいて行動を起こし、変更の前後のテーブルの状態間の差を見出し、およびその差に基づいて行動を起こす。
トリガは、挿入ステートメント、更新ステートメント、または削除ステートメントによってテーブル内の1つまたは複数の行が修正されたとき実行される特別なタイプのストアド・プロシージャ(stored procedure)である。DBMS(たとえば、SQL Server)は、特定のテーブル上で指定されたオペレーションごとにトリガを呼び出すことができるため、トリガを使用し、DBMSの内蔵の保全機能およびデータ操作機能を拡張することができる。従来、afterトリガとも呼ばれるトリガ実装は、レコードの旧イメージと新イメージを取り出すためにトランザクション・ログの走査を行うことによって実行されていた。しかし、従来のログをベースとするafterトリガの実装は、いくつかの問題を提示した。たとえば、ログは、本質的に処理ボトルネックを生み出した。ログ手法は、いくつかの順次書込み応用例において十分とすることができるが、ランダムな読取り応用例において特に有用なものではない。このボトルネック特性は、少なくとも一部には、ログ走査afterトリガ実装がスケーラビリティを欠いていることに起因すると考えられる。
従来のログ走査手法の別の落とし穴は、ログがバッファ・プールでバックアップされないことである。わかるように、挿入済み/削除済みテーブルからの読取りは、大量の入出力(I/O)プロセスを必要とする可能性が高い。最後に、ラージ・オブジェクト(LOB)データベース・フィールド・アクセスは、afterトリガにおいて、従来のログをベースとする実装を介してサポートされない。従来のログ走査手法のこれらの制限により、最近の努力と開発は、バージョニングをベースとする実装に向けられている。既存のバージョニングをベースとするafterトリガ実装は、バージョニングに依拠し、デルタ・ワーク・テーブル(delta worktable)内でレコードの旧イメージと新イメージを提供する。したがって、挿入、削除、または更新されたレコードのキー値を格納するデルタ・ワーク・テーブルが、挿入済み/削除済みテーブル内でレコードを識別するために維持される。
これらの新しい実装形態は、従来のログをベースとする手法の問題の多くを解決したが、ログをベースとする手法よりはるかに遅いものである。この欠点は、データ操作言語(DML)イベント中にデルタ・ワーク・テーブルを占有することに関連するコスト、ならびに、デルタ・ワーク・テーブルとベース・テーブルを接合することによって、トリガ本体実行中に挿入済み/削除済みテーブルを構築するためのコストに由来する。さらに、これにより、デルタ・ワーク・テーブル内で走査される行当たり1回のブックマーク・ルックアップとベース・テーブル内でのバージョニング・ストア訪問が行われる。
バージョンをベースとする実装を介して前述の問題を低減および/または緩和しようとする、また、トリガ効率を高めようとする試みが行われているが、依然として、バージョニングをベースとする実装を使用し、よりコスト効果的かつ効率的なバージョニング・ベースのafterトリガ実装を生み出すためのシステムおよび/または方法の必要性が実質的に満たされていない。
以下は、本発明のいくつかの態様を基本的に理解するために、本発明の簡単な概要を提供する。この概要は、本発明の広範な全体像ではない。本発明の鍵となる/クリティカルな要素を識別すること、あるいは本発明の範囲を述べることは意図されていない。後で提供されるより詳しい説明に対する序文として、本発明のいくつかの概念を簡単な形態で提供することだけが目的である。
本明細書で開示され特許請求されている本発明は、その一態様において、削除プロシージャ、挿入プロシージャ、または更新プロシージャに応答してデータベース・アプリケーション・データを追跡および編成するためのシステムおよび/または方法を含む。より具体的には、本システムの一態様は、トリガ実装に関連してバージョンをベースとする保持およびリンク手法を使用する。本発明の様々な態様は、データベース・システムのユーザが、データベーステーブル内の行の更新、削除、および/または挿入のアクションに応じて実行すべきオペレーションを指定するための方法を提供するafterトリガ(たとえば、データベース・システム内の一般に提供されている機能)の性能を改善することができる。afterトリガ機構は、ベース・テーブル上の、あるオペレーションによって挿入、削除、または更新された行を示す「挿入済み」および「削除済み」擬似テーブルを提供する。この擬似テーブルは、バージョン・ストア・コンポーネント内に格納することができる。
さらに、本発明の特定の諸態様は、挿入済み擬似テーブルおよび削除済み擬似テーブルに適用可能な行をインスタンス化するための走査機構(たとえば、EVS(extended version scan))に関する。本発明は、2つの他の従来型手法、すなわち、デルタテーブルとトランザクション・ログ走査に優る有意な性能上の利点を提供することを理解されたい。バージョン・ストア・コンポーネントは、ベース・テーブル内に含まれるレコードの前バージョンを保持するために使用される。レコードの旧バージョンを維持するバージョン・ストアと、同じキー値の異なるバージョンのためのリンクに加えて、同じデータ修正ステートメント内で生成された異なるキー値を有するバージョン付きレコード同士をリンクし、旧イメージ・チェーンを形成するために、追加のリンクを維持することができる。旧イメージを削除済みテーブルから取り出すために、走査を実装し、このチェーン内のバージョン・レコードすべてを取り出すことができる。
この諸概念を「挿入済み」テーブル・プロシージャに延長するために、データ修正されたとき、レコードの新イメージをバージョン・ストア内に転送することができる。新イメージがバージョン・ストア内に入った後で、同じデータ修正ステートメント下で異なるキー値の新イメージ同士をリンクし、挿入済みテーブル用の新イメージ・チェーンを形成するために、同様なリンクを維持することができる。
本発明の他の態様によれば、各挿入ステートメント、削除ステートメント、更新ステートメントは、新イメージ・チェーンおよび旧イメージ・チェーンの現在のテール(tail)を含むことができる内部構造を有する。ステートメントの間、この内部構造内のテールは、各データ修正オペレーションによって維持することができ、挿入済みテーブルおよび削除済みテーブルから行を取り出すとき、内部構造内のテールを使用し、トリガする際に助けとするために走査を開始することができる。
前述の、また関連の目的を達成するために、以下の説明および添付の図面と関連して、本発明のある例示的な諸態様が本明細書に述べられている。しかし、これらの態様は、本発明の原理を使用することができる様々な方法のいくつかを示すものにすぎず、本発明は、そのような態様とその均等物すべてを含むものとする。本発明の他の利点および新規の特徴は、図面と共に考察したとき、以下の本発明の詳細な説明から明らかになる。
次に、本発明について図面を参照しながら述べる。図面では、全体を通して同じ要素を参照するために同じ符号が使用される。以下の説明では、説明する目的で、本発明を十分理解するために、多数の特定の詳細が述べられている。しかし、これらの特定の詳細なしに本発明を実施することができることは自明とすることができる。場合によっては、本発明について述べることを容易にするために、周知の構造およびデバイスがブロック図の形態で示される。
本願では、「コンポーネント」および「システム」という用語は、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または、実行中のソフトウェアであるコンピュータ関連のエンティティを指すものとする。たとえば、コンポーネントは、それだけには限らないが、プロセッサ上で動作するプロセス、プロセッサ、オブジェクト、実行可能物、実行のスレッド、プログラム、および/またはコンピュータとすることができる。例示のために、サーバ上で動作するアプリケーションもサーバも共にコンポーネントとすることができる。プロセスおよび/または実行のスレッド内に1つまたは複数のコンポーネントが常駐することができ、コンポーネントは、1つのコンピュータに局所化する、かつ/または2つ以上のコンピュータ間で分散することができる。
本発明は、その一態様において、データベース管理システム(DBMS)内で、トリガに関してバージョンをベースとする実装を使用するためのシステムおよび/または方法を対象とする。例として、本発明の一態様は、SQL Serverベースのアプリケーションに関連して、バージョニングをベースとするトリガ機構を使用することを対象とする。本発明の諸態様について、本明細書ではSQL Server DBMSに関して述べられているが、本発明の概念と革新は、当技術分野で知られているどの周知のDBMSにも適用することができることを理解されたい。
具体的には、従来のafterトリガ実装に関連する性能問題に対処するために、本発明の諸態様は、EVS(extended version scan)手法を対象とする。このEVS手法は、システムが逆リンク走査(reverse-linkage scan)を介して行の諸バージョンにアクセスすることが可能になる、対応するバージョン・レコード・リンクと共に、バージョン・ストアを使用することを含む。EVS手法を容易にするために使用されるシステムおよび方法について、以下でさらに詳しく論じる。
最初に図1を参照すると、本発明の一態様によるDBMS100の全体的なブロック図が示されている。図1に示されているように、概してDBMS100は、ベース・テーブル・コンポーネント102と、バージョン・ストア・コンポーネント104と、トリガ機構コンポーネント106とを含むことができる。上記で論じたように、ベース・テーブル・コンポーネント102には、データ・レコードの現行バージョンを容れることができる。一方、ベース・テーブル・コンポーネント102内に含まれるデータの各行の前バージョンは、バージョン・ストア・コンポーネント104内に格納することができる。
例示的なバージョン・ストア・コンポーネント104は、レコード・バージョン履歴を含むレコード・ストア・コンポーネント108と、複数のレコード・リンク・コンポーネント110、112とを含むことができる。図には2つのリンク・コンポーネント110、112だけが示されているが、リンク・コンポーネントは、本発明の代替の諸態様に従って生成および/または記憶することができることを、当業者なら理解するであろう。たとえば、複数のデータ操作言語(DML)ステートメントが実行され、それによって、異なるキー値を有する複数のバージョンのレコードを作成する場合、対応するリンク・チェーンを記憶し、異なるキー値を有する関連レコード同士をリンクすることができることを理解されたい。
バージョン履歴のレコード・ストア・コンポーネント108と、(たとえば、同じDMLステートメントから生成された、)ベース・テーブル・コンポーネント102内のレコードと同じキー値を有する異なるレコード・バージョンに対応するリンク・コンポーネント110とを維持するバージョン・ストア・コンポーネント104に加えて、異なるキー値を有するバージョン付きレコードのリンクをベース・テーブル・コンポーネント102に関連して表す追加のリンク・コンポーネント112を維持することができる。換言すれば、リンク112によってリンクされたレコードは、そのレコードを導出するために使用される特定のDMLステートメントに対応する異なるキー値を有する。異なるキー値を有するレコードは、同じDMLステートメント内で生成し、旧イメージ・チェーンを形成することができることを、当業者なら理解するであろう。したがって、削除済みテーブルに対応する旧イメージを取り出すために、このチェーン112内でリンクされたバージョン・レコードすべてについてEVSを実行することができる。
本発明の一態様によれば、図2は、DMLイベントが実行されたときバージョンをベースとするリンクを確立する方法を示す簡易流れ図を示す。説明を簡単にするために、たとえば流れ図の形態で本明細書に示されている1つまたは複数の方法は、一連の動作として示され、述べられているが、本発明によるいくつかの動作は、本明細書に示され述べられているものと異なる順序で、かつ/または他の動作と同時に行われる可能性があるため、本発明は動作の順序によって制限されないことを理解されたい。たとえば、方法は、別法として、状態図内でなど、一連の相互に関係のある状態または事象として表すことができることを、当業者なら理解するであろう。さらに、本発明による方法を実装するために図の動作すべてを必要とするには及ばない。
202に進むと、DMLステートメントの結果として削除、挿入、または更新された各レコードについて、対応するバージョン・チェーン内の先の行のレコード識別子が、バージョン・ストア内への格納と連動してバージョン・レコードに追加される。この識別子は、レコード同士をリンクし、新/旧イメージ・チェーンを形成する際に役立つ可能性がある。レコード識別子は、バージョン・ストア内の行の位置を識別することが可能な、当技術分野で周知の任意の識別子とすることができることをも理解されたい。たとえば、レコード識別子は、バージョン・ストア内の特定のレコードを識別するために、ページおよびスロット識別を表すことができる。
次に、204で、レコードがバージョン・ストア内に格納される。先に論じたように、同じ、または異なるキー値を有する複数のバージョンのレコードをバージョン・ストア内に格納することができる。206で、同じキー値を有するバージョン同士がリンクされる。
本発明の一態様によれば、トリガに関連するレコードだけがチェーン内にリンクされる。例として、2次インデックスに対応するバージョン・レコードは挿入済み/削除済みテーブル内に参加しないため、これらはチェーン内にリンクされない。また、あるテーブルに関連してトリガが存在しない場合、そのテーブルのバージョン・レコードは、チェーン内にリンクされない。
208で、トリガが、DMLステートメントによって操作されるレコードを含むテーブル(たとえば、削除済み、挿入済み)に関連付けられているかどうか、システムが判定する。208で、トリガが存在しないとシステムが決定した場合、システムは202に戻り、追加のレコードをバージョン・ストア内に格納する。208で、レコードを含む適用可能なテーブルにトリガが関連付けられているとシステムが決定した場合、210で、システムは、特定のレコードがそのトリガに関連するかどうか判定する。
210で、レコードがトリガと関連しないとシステムが決定した場合、システムは202に戻り、追加のレコードをバージョン・ストア内に格納する。210で、レコードがトリガと関連するとシステムが決定した場合、システムが進み、212でレコード・リンクを確立する。例として、関連するトリガが「削除済み」テーブルに適用可能であり、「挿入」DMLステートメントが実施される場合、システムは、210から202に戻ることになる。同様に、関連するトリガが「挿入済み」テーブルに対応し、「削除」操作ステートメントが実行される場合、システムは、特定の行がトリガに関連しないと決定し、202に戻ることになる。
インターフェースを使用し、DMLイベント中にチェーンを維持すべきかどうかシステムに通知することができることを理解されたい。たとえば、テーブル上にトリガがない場合、システムは、チェーンを維持しないと決定することになる。そうでない場合には、トリガ本体解析に基づいて、システムは、新イメージ・チェーンまたは旧イメージ・チェーン、あるいは両方を維持すると決定することができる。
次に、212で、システムは、異なるキー値を有するイメージの異なるバージョン同士を、ベース・テーブル内のものとしてリンクする。最後に、214で、特定のバージョンとリンクを識別するために、個々のリンクのテールの識別子が、走査および/または後続のトリガの実行に従って後で取り出すために格納される。図2の方法によって示されているように、本発明のこの態様によれば、「削除済み」テーブルおよび/または「挿入済み」テーブルに適用可能な、異なるキー値を有する行に対応するリンクのテール識別子だけ記憶されることになる。任意のデータストア機構またはメモリ・デバイスを使用し、リンクテール識別子の記憶を実施することができることを、当業者なら理解するであろう。
前述のように、行が「更新」された場合、更新ステートメントは、旧イメージの削除オペレーションと、それに続く新イメージの挿入オペレーションとを含む。したがって、その行の前バージョンは、「削除」テーブル内に格納され、その行の現行または新バージョンが「挿入」テーブル内に格納される。図3および図4は、これらの2つのオペレーション、すなわち「削除」および「挿入」をそれぞれ示す。
例を続けると、図3では、本発明の一態様による、ベース・テーブル・コンポーネント102とバージョン・ストア・コンポーネント104を含むデータベース・システム100の全体的なブロック図が示されている。この例示的なデータベース・システム100は、行「削除」プロシージャに関連して、ベース・テーブル・コンポーネント102とバージョン・ストア・コンポーネント104を表すものである。
ベース・テーブル・コンポーネント102は、A1、B1、C1(302、304、306)として示されているレコードを含むことができる。本発明の一態様によれば、行A1、B1、C1(302、304、306)のミラー・イメージもまた、バージョン・ストア・コンポーネント104内に格納することができる。リンク308を確立し、図のようにバージョン・ストア・コンポーネント104内のレコード同士をリンクすることができる。先に論じたように、リンク308は、ベース・テーブル・コンポーネント102内のものと合致するレコード(302、304、306)のチェーンを作成する。
本発明の他の態様は、「挿入」プロシージャに従ってレコードを編成および追跡することを対象とする。例を続けて、図4を参照すると、DMLイベントの結果として、レコードA1、B1、C1(302、304、306)の新バージョンがベース・テーブル・コンポーネント102内に挿入される。新しく挿入されたバージョンは、図4でA2、B2、C2(402、404、406)として示されている。上記で指摘したように、元のバージョンA1、B1、C1(302、304、306)は、バージョン・ストア内でリンク308によってリンクされたままとなる。しかし、新レコードA2、B2、C2(402、404、406)は、挿入オペレーションの結果として、図のように、ベース・テーブル・コンポーネント102内の元のレコードに取って代わる。
挿入プロシージャによれば、本発明は、挿入イベントに応じて、新イメージ・レコードA2、B2、C2(402、404、406)のコピーを、ベース・テーブル・コンポーネント102からバージョン・ストア・コンポーネント104内に「転送する(push)」ように構成することができる。新イメージA2、B2、C2(402、404、406)がバージョン・ストア内に入った後で、図3を参照して述べられているものと同様なリンク・コンポーネント408を確立し、挿入イベントを介して作成された新イメージA2、B2、C2(402、404、406)同士をリンクすることができる。
したがって、この新しいリンク408は、その挿入済みテーブルについて新イメージ・チェーンを形成する。新レコードA2、B2、C2(402、404、406)をバージョン・ストア・コンポーネント104内に挿入することは、レコードを従来のワークテーブル内に挿入することより測定可能に速くなる可能性があることを理解されたい。したがって、データベース・システム100の効率を高めることができる。
afterトリガ機構の実装に関連して、DMLステートメントが1対の旧(たとえば削除)および新(たとえば挿入)イメージ・チェーン(308、408)を維持する場合、従来の実装の場合のようにデルタ・ワーク・テーブルが必要とされないことを、当業者なら理解するであろう。したがって、本システムおよび方法は、デルタ・ワーク・テーブルを占有することのコスト、ならびに、デルタ・ワーク・テーブルとベース・テーブルを接合することに関連するコストを完全に回避する。図4の例は2つのイメージ・チェーン(308、408)を示すが、本明細書で論じられているように、更新ステートメントだけについて、最大で2つのイメージ・チェーンを維持することができることを理解されたい。一方、挿入ステートメントおよび削除ステートメントについては、多くとも1つのイメージ・チェーンが維持されることになる。
図2を参照して先に指摘したように、本発明の一態様によれば、トリガに関連するレコードだけチェーン内にリンクされる。例として、2次インデックスに対応するバージョン・レコードは挿入済み/削除済みテーブル内に参加しないため、これらはチェーン内にリンクされない。また、あるテーブルに関連してトリガが存在しない場合、そのテーブルのバージョン・レコードは、チェーン内にリンクされない。
本発明の他の態様は、複数のテーブル内に位置する行を容れることができるリンク・チェーンを提供する。縦続更新により、複数のテーブルを単一のDMLステートメント内で更新することができることを、当業者なら理解するであろう。したがって、更新された2つ以上のテーブルが、あるトリガを有する場合、新/旧イメージ・チェーン(たとえば、308、408)は、異なるテーブル内に含まれるレコード同士をリンクすることができる。
本発明によれば、ラージ・オブジェクト(LOB)データに対する変更は、チェーン内にリンクされない。というのは、LOBデータは、ベース行を介してアクセスを受けることができるからである。ネストされたトリガ機構に関して、各ネスト・レベルにおけるDMLステートメントは、それ自体の1対の新旧イメージ・チェーンを維持することができる。複数の対の、読取りオペレーションについて活動状態のチェーンが存在することができるが、最後のDMLステートメントに属するチェーンの対だけ構築オペレーションについて活動状態とすることができることを理解されたい。
次に図5を参照すると、元のバージョン・レコードA1、B1、C1(302、304、306)と、新たに挿入されたバージョン・レコードA2、B2、C2(402、404、406)とを含むバージョン・ストア・コンポーネント104が示されている。また、例を続けると、旧レコード・チェーンと新レコード・チェーンを表すリンク308および408は、上述のように確立することができる。共通バージョンのレコード同士がリンクされた後で、後続の走査(たとえば、EVS)オペレーションに従ってレコードを識別するために、新(408)イメージ・チェーンおよび旧(308)イメージ・チェーンの識別子を記憶することができる。
例示的な識別方式が、破線で示すブロック502内に示されている。図のように、テール識別子504を使用し、行の元のバージョンA1、B1、C1(302、304、306)を含む旧イメージ・チェーン308のテールを識別することができる。同様に、テール識別子506を使用し、行の挿入後バージョンA2、B2、C2(402、404、406)を含む新イメージ・チェーン408のテールを識別することができる。システムは、構築のために現在活動状態の新(408)リンク・チェーンおよび旧(308)リンク・チェーンのテール(504、506)を記録および追跡することができる。当技術分野で知られている識別および/または追跡の任意の周知の方法を使用することができることを理解されたい。例として、チェーンのテールは、USM(Update Sequence Marker)内に格納することができる。
インターフェースを使用し、DMLイベント中にチェーンを維持すべきかどうかシステムに通知することができることを、当業者なら理解するであろう。たとえば、テーブル上にトリガがない場合、システムにチェーンを維持しないことを通知することができる。そうでない場合には、トリガ本体解析に基づいて、それに応じてシステムに新イメージ・チェーンまたは旧イメージ・チェーン、あるいは両方を維持することを通知することができる。走査インターフェースを使用し、新イメージ・チェーンおよび旧イメージ・チェーン内のリンクに従うことによって、システムが挿入済み/削除済みテーブル内の行を走査することを可能にすることができる。
次にDML実行シーケンスに転じると、本発明の一態様は、各DMLステートメントに従ってUSMを利用する。この態様に鑑みた方法が図6に示されている。602に進むと、リンクが整い、DMLステートメントが開始される。604で、USMがトリガされ、構築のために新旧イメージ・チェーンのそのテールを登録する。テールは、どのような方法でも、また、当技術分野で周知のどの記憶デバイスでも登録することができることを理解されたい。
次に、606で、システムは、DMLイベントに従ってどの特定のチェーンを維持すべきか識別することができる。608で、システムは、現在の動作が「挿入」オペレーションであるかどうか判定する。そうである場合、システムは、610で、レコードの新イメージをバージョン・ストアに「転送する」。バージョン・ストア内に入った後、612で、新レコードを、新イメージ・チェーンの現在のテールにリンクすることができる。614で、新イメージ・チェーンのテールを、挿入された新レコードを指すように更新することができる。
608で、現在のオペレーションが「挿入」オペレーションでない(たとえば、削除オペレーション)とシステムが決定した場合、システムは、616で、旧レコードをバージョン・ストア内に「転送する」。バージョン・ストア内に入った後、618で、旧レコードを、旧イメージ・チェーンの現在のテールにリンクすることができる。620で、旧イメージ・チェーンのテールを、旧レコード・バージョンを指すように更新することができる。最後に、必要とされる場合、622で、ベース・テーブル内の削除された行からバージョン・ストア内の旧イメージに同じキー値の適切なリンクが維持される。
例示されているように、定期的なバージョニング・オペレーションに従って、ベース行からバージョン・ストア内のバージョン付きレコードにかけてリンクを維持することができる。また、バージョニング・オペレーションでは、バージョン・ストアに転送された新イメージに対するリンクを維持することが必要とされない可能性がある。旧イメージについても、リンクは、DMLステートメントによって識別されて必要とされるときだけ維持される。したがって、たとえば、データベースがバージョン付けられていない、また、オンラインインデックスが動作していないなど、新バージョンが純粋にトリガの目的のために生成される場合には、リンクが維持されない。この性能最適化は、インデックス/ヒープ削除オペレーションにとって特に有用である。
次に、トリガ本体実行に転じると、図7は、本発明の一態様による方法を示す。702に進むと、データを挿入済み/削除済みテーブルから取り出すとき、システムは走査(たとえば、EVS)を開始する。一実施形態では、システムは、識別子(たとえば、USM)を走査インターフェースに渡す。次に、704で、システムは、チェーン内のリンクに従い、テーブル識別に基づいてレコードをフィルタして除去する。LOBデータの場合、走査インターフェースは、バージョン付きレコード内に格納されたキー値および行内LOB(in−row LOB)に基づいて、識別子を構築することができる。システムは、この識別子をUSMと共に使用し、LOB列の旧/新イメージを得ることができる。
次に、図8を参照すると、開示されているアーキテクチャを実行するように動作可能なコンピュータのブロック図が示されている。本発明の様々な態様に対する追加のコンテキストを提供するために、図8と以下の考察は、本発明の様々な態様を実装することができる好適なコンピューティング環境800について簡潔に一般的に述べることが意図されている。本発明について、上記で1つまたは複数のコンピュータシステム上で動作することができるコンピュータ実行可能命令の一般的な状況で述べられているが、本発明はまた、他のプログラム・モジュールと組み合わせて、かつ/またはハードウェアとソフトウェアの組合せとして実装することができることを、当業者なら理解するであろう。
一般に、プログラム・モジュールは、特定のタスクを実行する、あるいは特定の抽象データタイプを実装するルーチン、プログラム、コンポーネント、データ構造などを含む。さらに、本発明の方法は、それぞれ1つまたは複数の関連デバイスに動作可能に結合することができる、シングル・プロセッサまたはマルチ・プロセッサ・コンピュータ・システム、ミニ・コンピュータ、メインフレーム・コンピュータ、ならびにパーソナル・コンピュータ、ハンドヘルド・コンピューティング・デバイス、マイクロ・プロセッサをベースとする、またはプログラム可能な家電などに実装することができる。
本発明の図の諸態様はまた、通信ネットワークを介してリンクされる遠隔処理デバイスによってある種のタスクが実行される分散コンピューティング環境内で実施することができる。分散コンピューティング環境内では、プログラム・モジュールは、ローカル、遠隔共にメモリ記憶デバイス内に位置することができる。
コンピュータは、一般に、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータによってアクセスすることができる任意の入手可能な媒体とすることができ、揮発性媒体と不揮発性媒体、取外し式媒体と非取外し式媒体を共に含む。限定ではなく例を挙げると、コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体を含むことができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータなど、情報を記憶するための任意の方法または技術で実装される揮発性と不揮発性、取外し式と非取外し式の媒体が共に含まれる。コンピュータ記憶媒体には、それだけには限らないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル・ビデオ・ディスク(DVD)もしくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、所望の情報を記憶するために使用することができる、またコンピュータによってアクセスすることができる任意の他の媒体が含まれる。
通信媒体は、一般に、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータを、搬送波または他の移送機構など変調データ信号に統合し、任意の情報送達媒体を含む。「変調データ信号」という用語は、情報を信号に符号化するようにその特性の1つまたは複数が設定された、または変化した信号を意味する。限定ではなく例を挙げると、通信媒体には、有線ネットワークまたは直接配線接続など有線媒体と、音響、RF、赤外線および他の無線媒体など無線媒体とが含まれる。上記のいずれかの組合せもまた、コンピュータ可読媒体の範囲内に含むべきである。
図8を参照すると、コンピュータ802を含む、本発明の様々な態様を実装するための例示的な環境800が示されており、コンピュータ802は、処理装置804、システム・メモリ806、システム・バス808を含む。システム・バス808は、それだけには限らないが、システム・メモリ806を含むシステム・コンポーネントを処理装置804に結合する。処理装置804は、任意の様々な市販のプロセッサとすることができる。デュアル・マイクロ・プロセッサおよび他のマルチ・プロセッサ・アーキテクチャもまた、処理装置804として使用することができる。
システム・バス808は、(メモリ・コントローラ付き、または無しの)メモリ・バス、周辺機器バス、および様々な市販のバス・アーキテクチャのいずれかを使用するローカル・バスにさらに相互接続することができる、いくつかのタイプのバス構造のいずれかとすることができる。システム・メモリ806は、読出し専用メモリ(ROM)810およびランダム・アクセス・メモリ(RAM)812を含む。基本入出力システム(BIOS)は、ROM、EPROM、EEPROMなど不揮発性メモリ810内に記憶されており、BIOSは、起動中などにコンピュータ802内の要素間で情報を転送するのを助ける基本ルーチンを含む。また、RAM812には、データをキャッシュするためのスタティックRAMなど高速RAMが含まれる可能性がある。
コンピュータ802は、適切なシャーシ(図示せず)内で外部使用のために構成することもできる内部ハードディスク・ドライブ(HDD)814(たとえば、EIDE、SATA)と、(たとえば、取外し式ディスク818との間で読出しまたは書込みをするための)磁気フロッピー(登録商標)ディスク・ドライブ(FDD)816と、(たとえば、CD−ROMディスク822を読み取る、または、DVDなど他の大容量光媒体との間で読出しまたは書込みをするための)光ディスク・ドライブ820とをさらに含む。ハードディスク・ドライブ814、磁気ディスク・ドライブ816、光ディスク・ドライブ820は、それぞれハードディスク・ドライブ・インターフェース824、磁気ディスク・ドライブ・インターフェース826、光ドライブ・インターフェース828によってシステム・バス808に接続することができる。外部ドライブ実装用のインターフェース824は、ユニバーサル・シリアル・バス(USB)とIEEE1394インターフェース技術のうち少なくとも1つまたは両方を含む。
ドライブとそれらの関連コンピュータ可読媒体は、データ、データ構造、コンピュータ実行可能命令などの不揮発性記憶を実現する。コンピュータ802の場合、ドライブおよび媒体は、適切なデジタルフォーマットで任意のデータの記憶に対処する。上記のコンピュータ可読媒体の説明は、HDD、取外し式磁気ディスク、CDまたはDVDなど取外し式光媒体を参照しているが、zipドライブ、磁気カセット、フラッシュ・メモリ・カード、カートリッジなど、コンピュータによって可読である他のタイプの媒体もまた、例示的な動作環境内で使用することができること、さらに、任意のそのような媒体は、本発明の方法を実行するためのコンピュータ実行可能命令を含むことができることを、当業者なら理解されたい。
オペレーティング・システム830、1つまたは複数のアプリケーション・プログラム832、他のプログラム・モジュール834、プログラムデータ836を含めて、いくつかのプログラム・モジュールは、ドライブおよびRAM812に記憶することができる。オペレーティング・システム、アプリケーション、モジュール、および/またはデータの全部または一部分もまた、RAM812内でキャッシュすることができる。
本発明は、様々な市販のオペレーティング・システム、またはオペレーティング・システムの組合せで実装することができることを理解されたい。
ユーザは、1つまたは複数の有線/無線入力デバイス、たとえばキーボード838や、マウス840などポインティングデバイスを介してコンピュータ802にコマンドや情報を入力することができる。他の入力デバイス(図示せず)には、マイクロフォン、IRリモート・コントロール、ジョイスティック、ゲームパッド、スタイラス・ペン、タッチスクリーンなどが含まれる可能性がある。これらの、また他の入力デバイスは、しばしば、システム・バス808に結合される入力デバイス・インターフェース842を介して処理装置804に接続されるが、パラレル・ポート、IEEE1394シリアル・ポート、ゲームポート、USBポート、IRインターフェースなど、他のインターフェースによって接続することができる。
モニタ844または他のタイプのディスプレイ・デバイスもまた、ビデオ・アダプタ846など、あるインターフェースを介してシステム・バス808に接続される。コンピュータは、モニタ844に加えて、一般にスピーカ、プリンタなど他の周辺出力デバイス(図示せず)をも含む。
コンピュータ802は、遠隔コンピュータ848など1つまたは複数の遠隔コンピュータに対する、有線および/または無線通信を介した論理接続を使用してネットワーク環境内で動作することができる。遠隔コンピュータ848は、ワークステーション、サーバ・コンピュータ、ルータ、パーソナル・コンピュータ、可搬型コンピュータ、マイクロ・プロセッサをベースとする娯楽用家電、ピア・デバイスまたは他の共通ネットワーク・ノードとすることができ、簡潔にするために、メモリ記憶デバイス850だけが示されているが、一般に、コンピュータ802に関して上述した要素の多数または全部を含む。図の論理接続は、ローカル・エリア・ネットワーク(LAN)852、および/またはより大きなネットワーク、たとえば広域ネットワーク(WAN)854を含む。そのようなLANおよびWANネットワーク環境は、事務所内で、また会社内で普通であり、イントラネットなど全社コンピュータ・ネットワークを円滑化し、それらのすべてが、グローバル通信ネットワーク、たとえばインターネットに接続することができる。
コンピュータ802は、LANネットワーク環境内で使用されるとき、有線および/または無線通信ネットワーク・インターフェースまたはアダプタ856を介してローカル・ネットワーク852に接続される。アダプタ856は、LAN852に対する有線または無線通信を容易にすることができ、LAN852はまた、無線アダプタ856と通信するために配置された無線アクセス・ポイントを含むことができる。コンピュータ802は、WANネットワーク環境内で使用されるとき、モデム858を含むことができ、あるいは、LAN上の通信サーバに接続され、あるいは、インターネットによってなど、WAN854を介して通信を確立するための他の手段を有する。モデム858は、内部にあっても外部にあっても、また有線デバイスであっても無線デバイスであってもよく、シリアル・ポート・インターフェース842を介してシステム・バス808に接続される。ネットワーク環境では、コンピュータ802に関して示されたプログラム・モジュール、またはその一部分を、遠隔メモリ/記憶デバイス850に記憶することができる。図のネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立する他の手段を使用することができることを理解されたい。
コンピュータ802は、無線通信において動作可能に配置された任意の無線デバイスまたはエンティティ、たとえば、プリンタ、スキャナ、デスクトップおよび/または可搬型コンピュータ、可搬型データアシスタント、通信衛星、無線で検出可能なタグに関連付けられた任意の機器または場所(たとえば、キオスク、新聞雑誌売り場、休憩室)、ならびに電話と通信するように動作可能である。これは、少なくともWi−FiおよびBluetooth(商標)無線技術を含む。したがって、通信は、従来のネットワークの場合のように予め定義された構造とすることも、単に少なくとも2つのデバイス間のアドホック通信とすることもできる。
Wi−Fi、またはWireless Fidelityは、家庭で長椅子から、またはホテル客室内のベッドから、または仕事中に会議室からワイヤ無しでインターネットに接続することを可能にする。Wi−Fiは、そのようなデバイス、たとえばコンピュータが室内と外、すなわち基地局の範囲内のどこでもデータを送受信することが可能になる携帯電話のような無線技術である。Wi−Fiネットワークは、IEEE802.11(a、b、gなど)と呼ばれる無線技術を使用し、安全な、信頼性の高い高速無線接続を実現する。Wi−Fiネットワークは、コンピュータを互いに、またインターネットに、また(IEEE802.3またはイーサネット(登録商標)を使用する)有線ネットワークに接続するために使用することができる。Wi−Fiネットワークは、免許不要の2.4GHz無線帯域および5GHz無線帯域内で、11Mbps(802.11b)または54Mbps(802.11a)データ転送速度を用いて、または両方の帯域を含む製品(デュアルバンド)を用いて動作し、それにより、そのネットワークは、多数の事務所内で使用されている基本的な10BaseT有線イーサネット(登録商標)ネットワークに似た実世界性能を提供することができる。
次に、図9を参照すると、本発明による例示的なコンピューティング環境の概略ブロック図が示されている。システム900は、1つまたは複数のクライアント902を含む。クライアント902は、ハードウェアおよび/またはソフトウェア(たとえば、スレッド、プロセス、コンピューティング・デバイス)とすることができる。クライアント902は、たとえば、本発明を使用することによってクッキーおよび/または関連の文脈情報を収容することができる。システム900はまた、1つまたは複数のサーバ904を含む。サーバ904もまた、ハードウェアおよび/またはソフトウェア(たとえば、スレッド、プロセス、コンピューティング・デバイス)とすることができる。サーバ904は、たとえば、本発明を使用することによって変換を実行するためのスレッドを収容することができる。クライアント902とサーバ904の間の1つの可能な通信は、2つ以上のコンピュータ・プロセス間で伝送されるように適合されたデータ・パケットの形態にあるものとすることができる。データ・パケットは、たとえば、クッキーおよび/または関連のコンテキスト情報を含むことができる。システム900は、クライアント902とサーバ904の間の通信を容易にするために使用することができる通信フレームワーク906(たとえば、インターネットなどグローバル通信ネットワーク)を含む。
通信は、(光ファイバを含む)有線および/または無線技術を介してうまく進めることができる。クライアント902は、クライアント902にとってローカルな情報(たとえば、クッキーおよび/または関連のコンテキスト情報)を記憶するために使用することができる1つまたは複数のクライアント・データ・ストア908に動作可能に接続される。同様に、サーバ904は、サーバ904にとってローカルな情報を記憶するために使用することができる1つまたは複数のサーバ・データ・ストア910に動作可能に接続される。
上述したものには、本発明の諸例が含まれる。当然ながら、本発明について述べるためにコンポーネントまたは方法の考えられるあらゆる組合せについて述べることは可能でなく、本発明の多数の他の組合せおよび変形が可能であることを、当業者なら理解することができる。したがって、本発明は、添付の特許請求の範囲の精神および範囲内に入るそのような変更、修正、および変形形態をすべて包含するものとする。さらに「includes(含む)」という用語が詳細な説明または特許請求の範囲で使用されている限り、そのような用語は、「comprising(備える)」が特許請求の範囲内で転換句として使用されたとき解釈されるように「comprising」という用語と同様に包括的であるものとする。
本発明の一態様によるデータベース管理システム(DBMS)の全体的なコンポーネントブロック図である。 本発明の一態様による、データ操作言語(DML)イベントが実行されたときバージョンをベースとするリンクを確立するための一方法を示す図である。 本発明の一態様による、「削除」オペレーションに関連するDBMSシステムの全体的なコンポーネントブロック図である。 本発明の一態様による、「挿入」オペレーションに関連するDBMSシステムの全体的なコンポーネントブロック図である。 本発明の一態様による、バージョン・ストアと関連リンクの全体的なコンポーネントブロック図である。 本発明の一態様による、リンクを確立するための一方法を示す図である。 本発明の一態様による、トリガ機構を実行するための一方法を示す図である。 開示されているアーキテクチャを実行するように動作可能なコンピュータのブロック図である。 本発明による例示的なコンピューティング環境の概略ブロック図である。

Claims (12)

  1. 修正されたデータを識別するためのデータベース管理システムであって、
    データの各行の現行バージョンのレコードを格納するベースデータ記憶部と、
    データの各行の前バージョンのレコードを格納するバージョンデータ記憶部と、
    ここで、前記前バージョンのレコードは、前記現行バージョンのレコードのコピーであり、
    データ操作言語(DML)イベントによって前記ベースデータ記憶部内の所定の行におけるデータが修正されたとき、該修正されたデータを処理するデータ処理部と
    を具え、前記データ処理部は、
    各レコードについて前記データが修正されたとき、前記バージョンデータ記憶部内の行の位置を識別するレコード識別子を有するレコードを前記バージョンデータ記憶部に格納する手段と、
    同じレコード識別子としてのキー値を有するレコード同士をリンクさせ、前記バージョンデータ記憶部内にリンク部を生成する手段と、
    トリガが、前記データ操作言語(DML)イベントによって処理されるレコードを含む前記ベースデータ記憶部に関連付けられ、かつ、特定のレコードが該トリガに関連するものかを判定する手段と、
    異なるレコード識別子としてのキー値を有する関連するレコード同士をリンクさせ、前記バージョンデータ記憶部内にチェーン部を生成する手段とを含み、
    前記チェーン部を生成する手段は、
    同じデータ操作言語(DML)イベントによって生成された前記異なるキー値を有するバージョン付きレコード同士をリンクして、旧イメージチェーンを作成する手段と、
    同じデータ操作言語(DML)イベントによって生成された前記異なるキー値を有する新レコード同士をリンクして、新イメージチェーンを作成する手段と
    を具えたことを特徴とするデータベース管理システム。
  2. 前記データ処理部は、
    前記旧イメージチェーンおよび前記新イメージチェーンのテール識別子を記憶する手段をさらに具えたことを特徴とする請求項1記載のデータベース管理システム。
  3. 前記データ処理部は、
    前記テール識別子を用いて、前記リンクされたレコードの中の特定のレコードを識別するための走査を開始する手段と
    をさらに具えたことを特徴とする請求項2記載のデータベース管理システム。
  4. 前記コピーとしての前記データの各行に対応した前バージョンのレコードは、前記データの各行に対応した現行バージョンのレコードと共通のキー値を共用することを特徴とする請求項1記載のデータベース管理システム。
  5. 削除プロシージャ、挿入プロシージャ、更新プロシージャ、のうちの少なくとも1つを実行することによって、データ操作言語(DML)イベント開始される手段をさらに具えたことを特徴とする請求項1記載のデータベース管理システム
  6. データベース管理システムにおいて修正されたデータを識別する方法であって、
    データベース管理システムは、データの各行の現行バージョンのレコードを格納するベースデータ記憶部と、データの各行の前バージョンのレコードを格納するバージョンデータ記憶部とを有し、前記前バージョンのレコードは、前記現行バージョンのレコードのコピーであり、
    データ操作言語(DML)イベントによって前記ベースデータ記憶部内の所定の行におけるデータが修正されたとき、該修正されたデータを処理するステップ
    を具え、前記データを処理するステップは、
    各レコードについて前記データが修正されたとき、前記バージョンデータ記憶部内の行の位置を識別するレコード識別子を有するレコードを前記バージョンデータ記憶部に格納するステップと、
    同じレコード識別子としてのキー値を有するレコード同士をリンクさせ、前記バージョンデータ記憶部内にリンク部を生成するステップと、
    トリガが、前記データ操作言語(DML)イベントによって処理されるレコードを含む前記ベースデータ記憶部に関連付けられ、かつ、特定のレコードが該トリガに関連するものかを判定するステップと、
    異なるレコード識別子としてのキー値を有する関連するレコード同士をリンクさせ、前記バージョンデータ記憶部内にチェーン部を生成するステップとを含み、
    前記チェーン部を生成するステップは、
    同じデータ操作言語(DML)イベントによって生成された前記異なるキー値を有するバージョン付きレコード同士をリンクして、旧イメージチェーンを作成するステップと、
    同じデータ操作言語(DML)イベントによって生成された前記異なるキー値を有する新レコード同士をリンクして、新イメージチェーンを作成するステップと
    を具えたことを特徴とする方法。
  7. 前記データを処理するステップは、
    前記旧イメージチェーンおよび前記新イメージチェーンのテール識別子を記憶するステップをさらに具えたことを特徴とする請求項6記載の方法。
  8. 前記データを処理するステップは、
    前記テール識別子を用いて、前記リンクされたレコードの中の特定のレコードを識別するための走査を開始するステップと
    をさらに具えたことを特徴とする請求項7記載の方法。
  9. 前記コピーとしての前記データの各行に対応した前バージョンのレコードは、前記データの各行に対応した現行バージョンのレコードと共通のキー値を共用することを特徴とする請求項6記載の方法。
  10. 削除プロシージャ、挿入プロシージャ、更新プロシージャ、のうちの少なくとも1つを実行することによって、データ操作言語(DML)イベントが開始されるステップをさらに具えたことを特徴とする請求項6記載の方法。
  11. コンピュータに、請求項6ないし10記載の方法を実行させることが可能な命令を有するコンピュータプログラム。
  12. コンピュータに、請求項6ないし10記載の方法を実行させることが可能な命令を有するコンピュータプログラムを有するコンピュータ読取り可能な記録媒体。
JP2007506121A 2004-03-29 2004-07-12 バージョニングをベースとするトリガのためのシステムおよび方法 Expired - Fee Related JP4647653B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US55728604P 2004-03-29 2004-03-29
PCT/US2004/022119 WO2005103696A2 (en) 2004-03-29 2004-07-12 Systems and methods for versioning based triggers

Publications (2)

Publication Number Publication Date
JP2007531152A JP2007531152A (ja) 2007-11-01
JP4647653B2 true JP4647653B2 (ja) 2011-03-09

Family

ID=35197587

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007506121A Expired - Fee Related JP4647653B2 (ja) 2004-03-29 2004-07-12 バージョニングをベースとするトリガのためのシステムおよび方法

Country Status (6)

Country Link
US (2) US7200624B2 (ja)
EP (1) EP1618378A4 (ja)
JP (1) JP4647653B2 (ja)
KR (1) KR101084816B1 (ja)
CN (1) CN100461164C (ja)
WO (1) WO2005103696A2 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7640229B1 (en) * 2003-12-15 2009-12-29 Teradata Us, Inc. Row triggers
US20060161751A1 (en) * 2005-01-18 2006-07-20 Barrs John W Virtual memory management infrastructure for monitoring deltas and supporting undo versioning in a paged memory system
US20060161603A1 (en) * 2005-01-18 2006-07-20 Barrs John W Platform infrastructure to provide an operating system based application programming interface undo service
US9286346B2 (en) * 2005-02-18 2016-03-15 International Business Machines Corporation Replication-only triggers
US8037056B2 (en) * 2005-02-18 2011-10-11 International Business Machines Corporation Online repair of a replicated table
US7376675B2 (en) * 2005-02-18 2008-05-20 International Business Machines Corporation Simulating multi-user activity while maintaining original linear request order for asynchronous transactional events
US8214353B2 (en) * 2005-02-18 2012-07-03 International Business Machines Corporation Support for schema evolution in a multi-node peer-to-peer replication environment
CA2504070C (en) * 2005-04-14 2006-11-14 Computer Training Canada Ltd. Method for preserving access to deleted and overwritten documents
CA2506756C (en) * 2005-04-14 2008-08-12 Rajesh Kapur Method for preserving access to deleted and overwritten documents by means of a system recycle bin
US20060235903A1 (en) * 2005-04-14 2006-10-19 Rajesh Kapur Method and system for retrieving deleted and overwritten documents
US20060253503A1 (en) * 2005-05-05 2006-11-09 International Business Machines Corporation Method and apparatus for aging a versioned heap system
WO2007049289A2 (en) * 2005-10-28 2007-05-03 Vaakya Technologies Private Limited Method and system for re-population of data in a database
US7617226B1 (en) * 2006-02-10 2009-11-10 Google Inc. Document treadmilling system and method for updating documents in a document repository and recovering storage space from invalidated documents
US9009115B2 (en) 2006-08-04 2015-04-14 Apple Inc. Restoring electronic information
US8311988B2 (en) 2006-08-04 2012-11-13 Apple Inc. Consistent back up of electronic information
US20080034017A1 (en) * 2006-08-04 2008-02-07 Dominic Giampaolo Links to a common item in a data structure
US20080059469A1 (en) * 2006-08-31 2008-03-06 International Business Machines Corporation Replication Token Based Synchronization
US8352450B1 (en) 2007-04-19 2013-01-08 Owl Computing Technologies, Inc. Database update through a one-way data link
US8010900B2 (en) 2007-06-08 2011-08-30 Apple Inc. User interface for electronic backup
US20080307017A1 (en) 2007-06-08 2008-12-11 Apple Inc. Searching and Restoring of Backups
US8307004B2 (en) 2007-06-08 2012-11-06 Apple Inc. Manipulating electronic backups
US20110016089A1 (en) * 2009-07-16 2011-01-20 Apple Inc. Restoring data to a mobile device
CN102110121B (zh) * 2009-12-24 2015-09-23 阿里巴巴集团控股有限公司 一种数据处理方法及其系统
JP5521649B2 (ja) 2010-03-05 2014-06-18 株式会社リコー 撮像装置及び車載カメラ
US8370303B1 (en) * 2010-06-30 2013-02-05 Amazon Technologies, Inc. Generating snapshots of data tables
US8984029B2 (en) 2011-01-14 2015-03-17 Apple Inc. File system management
US8943026B2 (en) 2011-01-14 2015-01-27 Apple Inc. Visual representation of a local backup
US20120323971A1 (en) * 2011-06-14 2012-12-20 Sybase, Inc. Optimizing data storage and access of an in-memory database
US8589363B2 (en) * 2011-07-19 2013-11-19 Exagrid Systems, Inc. Systems and methods for managing delta version chains
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
US10055440B2 (en) * 2014-02-24 2018-08-21 Sap Se Database table re-partitioning using trigger-based capture and replay
US9575987B2 (en) 2014-06-23 2017-02-21 Owl Computing Technologies, Inc. System and method for providing assured database updates via a one-way data link
US10216774B2 (en) 2016-06-24 2019-02-26 International Business Machines Corporation Multiple versions of triggers in a database system
US10901855B2 (en) 2018-06-21 2021-01-26 International Business Machines Corporation On-demand multitenant data backup and restore
CN108984744B (zh) * 2018-07-16 2022-02-18 夸克链科技(深圳)有限公司 一种非主链区块自增长方法
US11704305B1 (en) * 2022-02-02 2023-07-18 Snowflake Inc. Optimizations for long-lived statements in a database system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1063676A (ja) * 1996-08-21 1998-03-06 Meidensha Corp ドキュメント管理システム
JP2002229821A (ja) * 2000-11-21 2002-08-16 Gawne Cain Research Ltd データベース管理システム

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4425618A (en) 1981-11-23 1984-01-10 Bell Telephone Laboratories, Incorporated Method and apparatus for introducing program changes in program-controlled systems
WO1995008809A2 (en) * 1993-09-24 1995-03-30 Oracle Corporation Method and apparatus for data replication
US5729744A (en) 1996-06-10 1998-03-17 International Business Machine Corp. Method and system of enhanced versioning control of objects in a data processing system using change control information which includes reasons for changes
SE521056C2 (sv) * 1997-07-21 2003-09-23 Ericsson Telefon Ab L M Metod för genomförande av schemaförändringar i en databas
US6182086B1 (en) 1998-03-02 2001-01-30 Microsoft Corporation Client-server computer system with application recovery of server applications and client applications
US6275832B1 (en) 1998-09-21 2001-08-14 International Business Machines Corporation Providing transaction undo without logging
US6339772B1 (en) 1999-07-06 2002-01-15 Compaq Computer Corporation System and method for performing database operations on a continuous stream of tuples
US6453313B1 (en) 1999-07-06 2002-09-17 Compaq Information Technologies Group, L.P. Database management system and method for dequeuing rows published to a database table
US6397227B1 (en) 1999-07-06 2002-05-28 Compaq Computer Corporation Database management system and method for updating specified tuple fields upon transaction rollback
US6463439B1 (en) * 1999-07-15 2002-10-08 American Management Systems, Incorporated System for accessing database tables mapped into memory for high performance data retrieval
US6460052B1 (en) * 1999-08-20 2002-10-01 Oracle Corporation Method and system for performing fine grain versioning
US6542883B1 (en) 2000-03-09 2003-04-01 International Business Machines Corporation Ordering relational database operations according to referential integrity constraints
US6584476B1 (en) * 2000-04-22 2003-06-24 Oracle Corp. System and method for enforcing referential constraints between versioned database tables
US6636846B1 (en) 2000-04-28 2003-10-21 International Business Machines Corporation Method for providing a system maintained materialized functionally dependent column for a database management system
US6779002B1 (en) * 2000-06-13 2004-08-17 Sprint Communications Company L.P. Computer software framework and method for synchronizing data across multiple databases
US6631374B1 (en) 2000-09-29 2003-10-07 Oracle Corp. System and method for providing fine-grained temporal database access
US6829616B2 (en) * 2001-03-26 2004-12-07 International Business Machines Corporation Method, system, and program for implementing a database trigger
US7111023B2 (en) 2001-05-24 2006-09-19 Oracle International Corporation Synchronous change data capture in a relational database
US6874001B2 (en) 2001-10-05 2005-03-29 International Business Machines Corporation Method of maintaining data consistency in a loose transaction model
US6882993B1 (en) 2002-01-28 2005-04-19 Oracle International Corporation Incremental refresh of materialized views with joins and aggregates after arbitrary DML operations to multiple tables
US7076508B2 (en) 2002-08-12 2006-07-11 International Business Machines Corporation Method, system, and program for merging log entries from multiple recovery log files
CN1477546A (zh) * 2002-08-19 2004-02-25 万达信息股份有限公司 一种在两个数据库间进行相同数据表数据复制的方法
US7281024B1 (en) * 2002-11-12 2007-10-09 Cisco Technology, Inc. Approach for propagating changes from a database to a client
US7333992B2 (en) * 2003-05-22 2008-02-19 Microsoft Corporation System and method for identifying and storing changes made to a table
US7281023B2 (en) * 2003-12-15 2007-10-09 At&T Knowledge Ventures, L.P. Architecture of database application with robust online recoverability
US7809763B2 (en) * 2004-10-15 2010-10-05 Oracle International Corporation Method(s) for updating database object metadata
JP2006127088A (ja) * 2004-10-28 2006-05-18 Toppan Printing Co Ltd データ変更履歴記録システム及び方法
US20060235905A1 (en) * 2005-04-14 2006-10-19 Rajesh Kapur Method and system for preserving real-time access to a system in case of a disaster
US20060259461A1 (en) * 2005-05-16 2006-11-16 Rajesh Kapur Method and system for preserving access to deleted and overwritten documents by means of a system recycle bin

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1063676A (ja) * 1996-08-21 1998-03-06 Meidensha Corp ドキュメント管理システム
JP2002229821A (ja) * 2000-11-21 2002-08-16 Gawne Cain Research Ltd データベース管理システム

Also Published As

Publication number Publication date
CN100461164C (zh) 2009-02-11
WO2005103696A2 (en) 2005-11-03
KR101084816B1 (ko) 2011-11-21
KR20070034916A (ko) 2007-03-29
US20050216520A1 (en) 2005-09-29
WO2005103696A3 (en) 2006-06-15
EP1618378A2 (en) 2006-01-25
CN1856785A (zh) 2006-11-01
US7912819B2 (en) 2011-03-22
US20070174358A1 (en) 2007-07-26
JP2007531152A (ja) 2007-11-01
US7200624B2 (en) 2007-04-03
EP1618378A4 (en) 2008-10-08

Similar Documents

Publication Publication Date Title
JP4647653B2 (ja) バージョニングをベースとするトリガのためのシステムおよび方法
KR101956236B1 (ko) 데이터베이스 관리 시스템에서의 데이터 복제 기법
US9135268B2 (en) Locating the latest version of replicated data files
US11232071B2 (en) Regressable differential data structures
JP4786954B2 (ja) リモートプロトコルによるリモートのファイル更新
CN110249321A (zh) 用于从分布式数据源中捕获变更数据以供异构目标使用的系统和方法
US20130124470A1 (en) Asynchronous distributed garbage collection for replicated storage clusters
US20060168154A1 (en) System and method for a distributed object store
US7739244B2 (en) Operating logging for online recovery in shared memory information systems
US8069141B2 (en) Interfaces for high availability systems and log shipping
JP2019519025A (ja) 分散システムにおける範囲の分割および移動
JP2013511104A (ja) ブロブとしての仮想ハードドライブ管理
US8380663B2 (en) Data integrity in a database environment through background synchronization
KR101690824B1 (ko) 순서 의존성 없는 일관성
KR20080005501A (ko) 데이터베이스와 파일 시스템 사이의 링크 레벨 일관성의유지관리
WO2012045245A1 (zh) 一种保持数据一致性的方法及系统
WO2016192496A1 (zh) 数据迁移处理方法及装置
WO2016143095A1 (ja) 計算機システム及びトランザクション処理の管理方法
US20060156030A1 (en) Data processing system and method
US10430341B2 (en) Log-structured storage method and server
KR20190022600A (ko) 데이터베이스 관리 시스템에서의 데이터 복제 기법
Dong et al. Disaggregating rocksdb: A production experience
US20190095479A1 (en) Information processing apparatus and information processing system
Parthasarathy Learning Cassandra for Administrators
US20110087636A1 (en) Modeling distribution and failover database connectivity behavior

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100525

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100817

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

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

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

Free format text: PAYMENT UNTIL: 20131217

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4647653

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

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

LAPS Cancellation because of no payment of annual fees