JP4583087B2 - トランザクションの整合性を保つ書き込み時コピーのデータベース - Google Patents

トランザクションの整合性を保つ書き込み時コピーのデータベース Download PDF

Info

Publication number
JP4583087B2
JP4583087B2 JP2004190397A JP2004190397A JP4583087B2 JP 4583087 B2 JP4583087 B2 JP 4583087B2 JP 2004190397 A JP2004190397 A JP 2004190397A JP 2004190397 A JP2004190397 A JP 2004190397A JP 4583087 B2 JP4583087 B2 JP 4583087B2
Authority
JP
Japan
Prior art keywords
data
stored
differential storage
page
database
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
JP2004190397A
Other languages
English (en)
Other versions
JP2005025750A (ja
JP2005025750A5 (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 JP2005025750A publication Critical patent/JP2005025750A/ja
Publication of JP2005025750A5 publication Critical patent/JP2005025750A5/ja
Application granted granted Critical
Publication of JP4583087B2 publication Critical patent/JP4583087B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24557Efficient disk access during query execution
    • 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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2477Temporal data queries
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Fuzzy Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、一般的に、データベースシステムの分野に関する。より詳細には、本発明はトランザクションの整合性を保つデータベースのコピーの作成に関する。
データベースおよびデータベース製品は、今日よく使用されている。データベースは、レコード、テーブル、インデックスなどのオブジェクトに情報を格納する。データベースに格納されている現在のバージョンの情報に加えて、前バージョンの情報もユーザにとって有用となり得る。
前バージョンのデータに関する情報を提供する1つの方法は、ユーザが関心を持つある時点のデータベースの完全なコピーを作成することである。これが行なわれるときは、データベースに関連するすべてのファイルが格納される。しかし、ある量の記憶スペースに格納されているデータベースでは、各コピーもその量の記憶スペースを必要とするため、この技術ではスペースを使いすぎる。またこの手法では、コピー自体が大量のデータの移動に関与するため、時間もかかりすぎる。
変更されたデータのコピーのみを格納する書き込み時コピー(copy-on-write)機構を使用して、ディスクボリュームスナップショット(disk volume shapshot)を提供することができる。元のデータベースに変更が加えられるたびに、前に格納されていたデータが変更されたデータのコピーに書き込まれる。しかし、このボリュームスナップショットでは、トランザクションの整合性が保たれない。つまり、格納された変更は、進行中のトランザクションの一部である可能性があり、したがってボリュームスナップショットは、あるトランザクションに関する中途半端な情報を含んでいる可能性がある。こうしたトランザクションの不整合の可能性があるため、アプリケーションがボリュームスナップショットを使用するには特殊なフックが必要である。このように作成されたボリュームスナップショットは、格納されているインデックスおよびテーブルの構造上の修正が不完全であるため、構造的にも整合性のないものとなり得る。さらに、ボリュームスナップショットでは、コピーの粒度はボリュームレベルである。非データベースデータもコピーすることがあるが、これは不要であり、時間およびリソースの無駄につながる。
また、特定のトランザクションによってアクセスされたデータを使用可能にすることによってデータベースのバージョニング(versioning)が提供されている。所与のトランザクションについてこのデータのみが格納され、したがって所与のトランザクションによってアクセスされたものに関するデータが必要な場合、(トランザクションによって任意の変更が加えられる前に)アクセスされたデータをそのトランザクションを開始したユーザに提供することはできる。しかしこのデータは、複数のトランザクションまたはユーザからはアクセスできない。複数のトランザクションまたはユーザが同じデータにアクセスを試みた場合、これらの異なるアクセスごとにデータが異なり得る。さらに、こうしたバージョニングは、データベースサーバの再起動後は永続的ではない。
したがって、迅速に作成することができ、トランザクションの整合性を保ち、整合性のある情報を複数のトランザクションまたはユーザに提供し、データベースサーバの再起動後も永続性のあるデータベースを表示する方法が必要となる。
データベースの完全なコピーを作成することなく、前のある時点(データベースビューが作成されたとき)の既存のデータベースのトランザクションの整合性が保たれたビューを提供するデータベースのデータベースビューを作成する。1次データベースとは使用中のデータベースであり、1または複数のデータベースビューが作成される。
各データベースビューは、1次データベースとともに、前のある時点の1次データベースの内容を決定するのに必要なすべての情報を含む。データベースビューは、1次データベース内の各データファイルに対応するサイドファイルから成る。サイドファイルは、データベースビューが作成されてから変更された対応するデータファイルからのすべてのデータのコピーを含む。
一実装形態では、データベースのデータベースビューが実装される。データベースは、データ要素を含み、トランザクションログに関連付けられる。トランザクションログは、アクティブトランザクションおよび非アクティブトランザクションの両方を含む。データベースビューは、現在のバージョンのデータベースと前のバージョンのものとの差のストレージ(「差分ストレージ(difference storage)」)を含む。これは、サイドファイルとして知られているファイルに格納される。
新しいデータがデータベースに書き込まれた場合は必ず、前バージョンのデータのコピーが差分ストレージに格納される。別の変更が加えられた場合、差分ストレージはすでに前バージョンのデータのコピーを含んでいるため、新しいデータは格納されない。
一実施形態で、トランザクションログが分析され、前記トランザクションログにおける分割点(split point)が識別される。修正を行う、ログ内の分割点より前の各トランザクションが見つけられ、修正の結果が差分ストレージに書き込まれる。次いでアクティブトランザクションによってもたらされるトランザクションログに対する修正は、データベースビューを更新してトランザクションを元に戻すことによって、データベースビュー内で元に戻される。このように、分割点の時点でのデータベースのトランザクションの整合性を保つビューが提供される。
本発明の他の特徴については後述する。
上記の概略および以下の好ましい実施形態の詳細な説明は、添付の図面と併せ読めば、よりよく理解できる。本発明を説明するために本発明の構造例を図面に示しているが、本発明は、開示されている特定の方法および手段に限定されるものではない。
(コンピューティング環境の例)
図1は、本発明の態様を実施できるコンピューティング環境の例を示している。コンピューティングシステム環境100は、適したコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関する限定を示唆するものではない。また、コンピューティング環境100を、動作環境100の例に示した構成要素のいずれか1つ、またはその組合せに関連する依存性または必要条件を有しているものと解釈すべきではない。
本発明は、他の多くの汎用または専用コンピューティングシステム環境または構成で動作可能である。本発明との使用に適したよく知られているコンピューティングシステム、環境、および/または構成の例には、それだけには限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、組み込みシステム、上記の任意のシステムまたは装置を含む分散コンピューティング環境などがある。
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することができる。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また、本発明は、タスクが通信ネットワークまたは他のデータ通信媒体によってリンクされているリモート処理装置によって実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールおよび他のデータを、メモリ記憶装置を含むローカルおよびリモートのコンピュータ記憶媒体に置くことができる。
図1を参照すると、本発明を実施するシステムの例は、汎用コンピューティング装置をコンピュータ110の形で含んでいる。コンピュータ110の構成要素は、それだけには限定されないが、処理ユニット120、システムメモリ130、およびシステムメモリを含む様々なシステム構成要素を処理ユニット120に結合するシステムバス121を含む。処理ユニット120は、マルチスレッドプロセッサ上でサポートされるものなど、複数の論理処理ユニットを表し得る。システムバス121は、様々なバスアーキテクチャのうちの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちどんなものでもよい。こうしたアーキテクチャには、それだけには限定されないが一例として、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、および(メザニンバスとしても知られている)PCI(Peripheral Component Interconnect)バスなどがある。システムバス121は、通信装置間のポイントツーポイント接続、スイッチングファブリックなどとして実装することもできる。
コンピュータ110は、一般に様々なコンピュータ読取り可能媒体を含む。コンピュータ読取り可能媒体は、コンピュータ110からアクセスできる使用可能な任意の媒体とすることができ、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体を含む。コンピュータ読取り可能媒体は、それだけには限定されないが一例として、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性および不揮発性のリムーバブルおよび非リムーバブル媒体がある。コンピュータ記憶媒体には、それだけには限定されないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または所望の情報の格納に使用でき、コンピュータ110からアクセスできる他の任意の媒体などがある。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の移送機構などの変調されたデータ信号に組み込む。これには任意の情報配送媒体がある。「変調されたデータ信号」という用語は、信号内の情報を符号化するように設定または変更された1または複数のその特徴を有する信号を意味する。通信媒体には、それだけには限定されないが一例として、有線ネットワーク、直接配線された接続などの有線媒体、および音響、RF、赤外線、その他の無線媒体などの無線媒体がある。また、上記のどんな組合せでもコンピュータ読取り可能媒体の範囲内に含まれるものとする。
システムメモリ130は、読取り専用メモリ(ROM)131やランダムアクセスメモリ(RAM)132など、揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。基本入出力システム133(BIOS)は、例えば起動中など、コンピュータ110内の要素間での情報の転送を助ける基本ルーチンを含み、一般にROM131に格納されている。RAM132は一般に、処理ユニット120から直接アクセス可能な、かつ/または処理ユニット120が現在処理しているデータおよび/またはプログラムモジュールを含む。図1は、それだけには限定されないが一例として、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示している。
コンピュータ110は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体を含むこともできる。一例にすぎないが、図1は、非リムーバブル不揮発性磁気媒体から読み取り、あるいはそこに書き込むハードディスクドライブ140、リムーバブル不揮発性磁気ディスク152から読み取り、あるいはそこに書き込む磁気ディスクドライブ151、およびCD−ROMや他の光媒体など、リムーバブル不揮発性光ディスク156から読み取り、あるいはそこに書き込む光ディスクドライブ155を示している。動作環境の例で使用できる他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体には、それだけには限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体RAM、半導体ROMなどがある。ハードディスクドライブ141は一般に、インタフェース140などの非リムーバブルメモリインタフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は一般に、インタフェース150などのリムーバブルメモリインタフェースによってシステムバス121に接続される。
上述し、図1に示したドライブおよびその関連のコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ110の他のデータの記憶を提供する。図1では例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を格納するものとして示されている。これらの構成要素は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じであっても、異なっていてもよいことに注意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147は少なくとも異なるコピーであることを示すために、ここではそれらに異なる番号を付している。ユーザは、キーボード162、および一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティング装置161などの入力装置を介してコマンドおよび情報をコンピュータ110に入力することができる。他の入力装置(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどがある。これらおよび他の入力装置は、しばしばシステムバスに結合されているユーザ入力インタフェース160を介して処理ユニット120に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)など他のインタフェースおよびバス構造で接続してもよい。モニタ191または他のタイプの表示装置もまた、ビデオインタフェース190などのインタフェースを介してシステムバス121に接続される。モニタに加えて、コンピュータは、出力周辺インタフェース195を介して接続できるスピーカー197、プリンタ196などの他の周辺出力装置を含むこともできる。
コンピュータ110は、リモートコンピュータ180など1または複数のリモートコンピュータへの論理接続を使用してネットワーク環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、または他の一般のネットワークノードでよく、一般にコンピュータ110に関連して上述した多くまたはすべての要素を含むが、図1にはメモリ記憶装置181のみを示している。図1に示した論理接続は、ローカルエリアネットワーク(LAN)171および広域エリアネットワーク(WAN)173を含むが、他のネットワークを含んでいてもよい。こうしたネットワーキング環境は、オフィス、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。
LANネットワーキング環境で使用する場合、コンピュータ110は、ネットワークインタフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用する場合、コンピュータ110は一般に、モデム172、またはインターネットなどWAN173を介して通信を確立する他の手段を含む。モデム172は、内蔵のものでも外付けのものでもよく、ユーザ入力インタフェース160または他の適切な機構を介してシステムバス121に接続することができる。ネットワーク環境では、コンピュータ110に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。図1は、それだけには限定されないが一例として、リモートアプリケーションプログラム185をメモリ装置181上に存在するものとして示している。図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。
(データベースおよびデータベースビュー)
一般にデータベースは、データベースファイルおよびログファイルの2つの種類のファイルから成る。ログファイルは、ある期間にわたってデータベースファイルに追加された変更を記載する一連のログレコードを含む。ログレコードは、ログシーケンス番号(LSN)で識別することができる。図2に示すように、一実施形態では、1次データベース200は、1組のデータベースファイル205およびログファイル210から成る。データファイルは、ページと呼ばれる複数のストレージの塊に分割される。
データベースの完全なコピーを作成することなく、前のある時点の既存のデータベースのトランザクションの整合性が保たれたビューを提供するデータベースのデータベースビューが作成される。データベースビューは、データベースとともに、前のある時点のデータベースのコピーを生成するのに必要なすべての情報を含む。しかしデータベースビューは、それ自体情報のすべてを含んでいるわけではなく、したがって全コピーより小さいサイズになり得る。さらに、修正がデータベースに加えられると、その場でビューが作成され、それによってコスト(時間および処理)を時間にわたって分散することができる。前の時点でデータベースビューからコピーを作成した場合、時間および処理のコストは、一時に集中することになる。さらに、データベースに対する更新アクティビティが続行している間にデータベースビューを作成することができる。1次データベースとは使用中のデータベースであり、1または複数のデータベースビューが作成される。
上述したように、データベースビューは、1次データベースとともに、前のある時点の1次データベースの内容を決定するのに必要なすべての情報を含む。データベースビューは、1次データベース内の各データファイルに対応するサイドファイルから成る。サイドファイルは、データベースビューが作成されてから変更された対応するデータファイルからのすべてのデータのコピーを含む。一実施形態では、サイドファイル内のページから1次ファイル内のページにテーブルをマッピングする必要を回避するために、サイドファイルがスパースファイル(sparse file)に格納される。スパースファイル内の実際に書き込まれるファイルの部分のみが記憶スペースを必要とする。ファイルの他のすべての領域は割り振りされていない。他の実施形態では、サイドファイルのストレージは、スパースファイル内にはない。
一実施形態では、スパースファイル機構は、標準領域サイズで動作する。1つの領域内のデータがスパースファイルに書き込まれると、たとえデータが領域全体を埋めなくても、領域全体のためのスペースが割り振られる。このスペースが割り振られ、そこからの読み取りが可能であるため、有効な値で埋められた領域のエリアと、その領域内の任意のストレージが必要な場合にスパースファイルの粒度によってあるサイズの領域が割り振られることが求められるために存在する領域のエリアとの間に区別をつける必要がある。
データベースビューは、データベースビューが作成されてから1次データベースで変更されたすべてのデータの元の値を含んでいるため、データベースビューの作成時点のデータベースのデータは、データベースビューから読み取ることができる。データベースビューからのデータの要求に応答するため、サイドファイルが要求のデータを含んでいる場合、データは、データベースビューのサイドファイルから読み取られる。読み取るべきデータであってサイドファイルに存在しないものは、データベースビューが作成されてから変更されておらず、1次データベースから読み取られる。
一実施形態で、サイドファイルは、1次データベースからのデータのページを含む。1次データベースの任意のページの任意のデータが変更されると、そのデータのページがサイドファイルに格納される。本発明では、1次データベース内のデータの単位としてページについて説明しているが、1次データベースのデータの他の単位を使用することもできることを企図している。
どのデータがサイドファイルに書き込まれたか、またどのデータを1次データベースから読み取るべきかを決定するために、サイドファイル内の有効なデータの存在を確認する必要がある。一実施形態では、有効なデータが存在するかどうかを確認するためにサイドファイルを直接読み取る。別の実施形態では、サイドページテーブルが作成され、所与のページが存在するかどうか、また有効かどうかに関するデータが格納される。
一実施形態では、1次データベース内のページごとに、サイドページテーブルは、ページは変更されておらず、それを1次データベースから読み取るべきか、またはページが変更されているのでそれをサイドファイルから読み取るべきかに関する情報を格納する。サイドページテーブルによって、所与のページがサイドファイルに存在するかどうかの迅速な決定が可能になる。
(1ビットおよび2ビットのページテーブル)
一実施形態では、サイドファイルおよびスパースファイル機構は、いずれも同じページ/領域サイズを使用する。つまり、サイドファイルが1次データベースから格納したページは、任意のメモリがスパースファイルに書き込まれたときにスパースファイルが格納した領域と同じサイズである。例えば、スパースファイル領域が8KBであり、1次データベースから格納されたページも8KBである場合、ページサイズおよび領域サイズは等しい。この場合、埋められる任意の領域は、1次データベースから読み取られたページによって完全に埋められ、無効なデータがその領域に格納される可能性はない。
別の実施形態では、いくつかのサイドファイル領域が各ページに正確に対応する。スパースファイル領域は8KB(キロバイト)であり、1次データベースから格納されたページは16KBである場合、サイドファイルに格納される各ページによって2つの領域が埋められる。この場合も、埋められる任意の領域は、1次データベースから読み取られたページからの内容によって完全に埋められる。この場合もまた、無効なデータがその領域に格納される可能性はない。
これらの実施形態の場合、サイドページテーブルは、サイドファイル内のページごとに1ビットの情報を保持するメモリ内ビットマップを含む。サイドファイル内のページごとに、対応するビットは、ページがサイドファイル内にあるかどうかを示す。
別の実施形態では、サイドファイル領域の粒度は、1次データベースから格納されたページの粒度より大きい。例えば、サイドファイルの各領域は64KBであり、ページのサイズは8KBである場合、サイドファイル内の領域の存在は、必ずしもその領域内のすべての情報が1次データベースからの有効なデータであることを示すとは限らない。1つのページのみがサイドファイルにコピーされる場合、この例では、割り振られた領域内の64KBのうちの8KBのみが有効なデータを含む。別の実施形態では、一部のサイドファイルページが領域にわたって分散される。
これらの実施形態では、サイドページテーブルは、サイドファイル内のページごとに2ビットの情報を保持する2つのメモリ内ビットマップを含む。これらをビット1およびビット2と呼ぶ。サイドファイル内のページごとに、対応するビットは、(ビット1)ページが確かにサイドファイル内にあるかどうか、(ビット2)ページがサイドファイル内にある可能性があるかどうかを示す。ビット2は、ページがサイドファイル内に格納される領域が割り振られていることを示すものとも考えられる。しかし、後述するように、一実施形態では、このビット2は、サイドページテーブルが再構築されたときにのみ設定される。
ビットマップは、メモリ内で維持され、したがって永続的ではない可能性がある。ビットマップは、消去されると、スパースファイル情報から再構築される。スパースファイルを調べ、ページごとに、サイドファイルでページが配置される領域にメモリが割り振られている場合、ビット2は、そのページがサイドファイル内にある可能性があることを示すように設定される。ページごとに、ビット1は、ページがサイドファイル内にあることを確定しないことを示すように設定される。
サイドページテーブルが永続的となるように維持されると、領域およびページの粒度を無視することができ、1ビットのサイドページテーブルを使用することができる。しかし一実施形態では、データベースサーバの再起動後、永続的なデータベースビューをサポートするために、2ビットのページテーブルを使用する。
一実施形態では、サイドファイルのためのページテーブルは作成されない。この場合、コピーがデータベースビュー内のページから作成されているかどうかを決定することが必要なときはいつでも、データベースビューを調べる。本発明では、1ビットまたは2ビットのページテーブルが存在する実施形態に関して後述するが、ページテーブルがなく、データベースビューを検査して、1次データベースからコピーされたページが含まれているかどうかを決定する必要がある実施形態についても検討する。
図3に示すように、1次データベース200のデータベースビュー220は、サイドファイル225から成る。1次データベース200内のデータファイル205のそれぞれは、データベースビュー220内に対応するサイドファイル225を有する。さらに、サイドページテーブルデータ230は、データベースビュー220のメモリ内に格納される。一実施形態では、サイドページテーブルデータ230は、サイドファイル225のすべてをカバーする1つのサイドページテーブルである。別の実施形態では、個別のサイドページテーブルがサイドファイル225ごとに存在する。
(トランザクションログ)
データベースでは、トランザクションログとは、トランザクションログを最後にバックアップしてからデータベースに対して実行されたすべてのトランザクションのシリアルレコードである。トランザクションログを使用して、障害時にデータベースを回復する。一実施形態では、トランザクションログは循環キューとしてモデル化される。トランザクションログは、ログの非アクティブな部分を削除することによって切り捨てることができる。この非アクティブ部分は、回復する必要のない完了したトランザクションを含む。逆に、トランザクションログのアクティブ部分は、完了したトランザクション、および依然として稼動しており、まだ完了していないトランザクション(アクティブトランザクション)を含む。切り捨ては、トランザクションログが拡大し続け、より多くのスペースを使用できるようにする代わりに、トランザクションログ内の非アクティブなスペースを最小限に抑えるために行われる。
アクティブトランザクションは、トランザクションの不整合を引き起こす可能性がある。アクティブトランザクションでは、データファイルの一部の修正がバッファキャッシュからデータファイルに書き込まれなかった可能性があり、データファイル内に未完了のトランザクションからの一部の修正がある可能性がある。ログファイルを使用して、データベースの回復によって確実にトランザクションの整合性が保たれるようにする。これは、ARIES(Algorithms for Recovery and Isolation Exploiting Semantics)型の回復を使用して行われる。データファイルに書き込まれていない可能性のある、ログに記録されているすべての修正は、データベースへの修正を行うことによってロールフォーワードされる。データベースの保全性を確保するために、トランザクションログ内にある未完了のすべてのトランザクションは、データベースに対する修正を元に戻すことによってロールバックされる。
(データベースビューの作成)
データベースビューを作成するために、データベースビューの物理的構造(サイドファイルおよびページテーブル)を初期化する必要がある。まず、サイドファイル225が1次データベース200内のデータファイル205ごとに作成される。上述したように、サイドファイルはスパースファイルでよい。あるいは別の実施形態では、データファイル205と同じサイズの非スパースファイルとすることができる。サイドファイル225は、1次データベース200内のデータファイル205に関連付けられる。
トランザクションは継続的に行われており、データベースビューではトランザクションの整合性が保たれるため、データベースビューの作成中、トランザクションログを使用する必要がある。データベースビューに使用すべきトランザクションに関する情報が確実に破棄されないようにするために、1次データベース200において、(存在する場合は)ログの切り捨てを使用不可にする。
一実施形態では、サイドページテーブル230は、データベースビューのために初期化される。最初に、サイドページテーブルは、サイドファイル225内にページが存在しないことを示すように設定され、2ビットのサイドページテーブルの場合、サイドファイル225にページが潜在的に、または確実に存在しないことを示すように設定される。
初期化が完了すると、データベースビューは、「オンライン」になる用意ができている。データベースビューは、この時点で1次データベース200と平行して稼動しており、修正が行われると、修正されたページの元の値のコピー(すなわち更新が行われる前のページの内容)がデータベースビューに格納される。図5は、本発明の一実施形態によるデータベースのトランザクションの整合性を保つビューを実装する方法のフロー図を示している。図5のステップ500に示すように、トランザクションログにおいて分割点が決定される。この分割点は、データベースビューが表す時点に対応する。データベースビューが作成されると、1次データベース200上のログの端部のLSNが取得される。このLSNが、1次データベース200およびデータベースビュー220が分岐を開始する「分割点」である。次いで1次データベース200は、データベースビュー処理が要求されるようにマーク付けされる。後述するように、1次データベース200内のデータベースビューサポートが開始する。
データベースビューが整合性を保つようにするために、分割点より前の1次データベース200のログを分析して、分割点の時点でどのトランザクションがアクティブであったかを決定する必要がある。ログ内で(分割点の時点で)最も古いアクティブトランザクションが識別される。その最も古いアクティブトランザクションの前にログの切り捨てが使用可能となる。
ARIES型回復と同じように、分割点より前の最も古いアクティブトランザクションからの1次データベース200のログ内のすべての操作がデータベースビューに対して行われる。図4は、本発明の好ましい実施形態によるトランザクションログの例、ログファイル210を示すブロック図である。ログファイル210内のログエントリは、ログエントリ400、410、420、430、440、450、460、480、490、および499を含む。分割点475が決定される。トランザクションは、引き続きログに書き込まれ、しかし切り捨ては使用不可である。ログファイル210を検査し、最も古いアクティブトランザクションから分割点まで(図4の例ではログエントリn400からログエントリn+7まで)のトランザクションの結果、データベースに対する任意の修正がサイドファイル225に対して行われる。これらの各トランザクションにおける修正の結果がサイドファイル225に格納される。次いでこれらのトランザクションを検査する。ログ内の任意のアクティブトランザクションによってログファイルに書き込まれた修正、例えばログエントリn400、ログエントリn+2 420、ログエントリn+6がサイドファイル225において元に戻される。
図5のステップ500からわかるように、トランザクションログにおいて分割点を選択する。次にステップ510で、データベースに対して修正を行う各トランザクションを見つける。一実施形態では、トランザクションを分析し、トランザクションの結果としてある値がデータベースのある場所に書き込まれる場合、ステップ520からわかるように、以下で詳述するデータベースビューを修正する方法を使用して、その値がサイドファイル内の対応する場所に保存される。このように、データベースに書き込む必要のあるすべての変更(「ダーティページ」の変更など)がデータベースビューのために格納される。
しかし、一部のトランザクションは、依然としてコミットされていない。したがって、ログ内の分割点までのこれらのアクティブトランザクションを探し出し(ステップ530)、元に戻す(ステップ540)必要がある。一実施形態で、未完了のトランザクションがデータベース内のある場所の値を変更する場合、上記でサイドファイルに追加された変更は、サイドファイルから削除される。代替実施形態では、後述するように、データベースビューを修正し、サイドファイル内のデータを分割点の時点でのデータベース内のデータと一致するように設定することによって、トランザクションが元に戻される。
このように、ログからの完了したトランザクションのみがデータベースビューに反映される。ログ上のトランザクションがデータベースビューにおいて反映されると、元に戻された、分割点が生じたときにアクティブであったトランザクションを除いて、1次データベース200上でログの切り捨てが使用可能になる。データベースビュー処理は使用可能であったため、1次データベース200に変更が加えられると、データベースビューが更新されるので、データベースビューを使用して分割点の時点での1次データベース200の内容を決定することができる。
(データベースビューの回復)
データベースサーバが(正常または異常に)シャットダウンした後で再起動すると、データベースビューを再度初期化する必要がある。そのために、メモリ内に格納されているサイドページテーブルを再度初期化する必要がある。
サイドページテーブルを再初期化するには、2ビットのサイドページテーブルの実装では、割り振られたサイドページテーブル内の領域ごとに、割り振られた領域内のページごとのサイドページテーブル内のデータ(ビット2)は、ページがサイドファイル225に書き込まれた可能性があることを示すように設定される。他のすべてのページのサイドページテーブル内のデータは、ページがサイドファイル225に書き込まれた可能性がないことを示すように設定される。ただし、ページがサイドファイル225に書き込まれたことを確定するものではなく、したがって、ビット1は、最初は設定されない。
あるいは、2ビットのサイドページテーブルの実装、または1ビットのサイドページテーブルの実装では、上述したように、サイドファイル225を検査して、ページごとに、サイドファイル225内のページが有効であるかどうかを決定することができる。ページテーブルは、存在しているページごとに、ページが実際にサイドファイル225に存在することを示すように設定される。すべての他のページは、ページがサイドファイル225に存在しないことを示すように設定される。
(1次データベース内のデータベースビューサポート)
データが上書きされる前にデータベースビューが1次データベース200から情報を格納するようにするために、1次データベース200は、データベースビューの作成をサポートする必要がある。1次データベース200が修正するページごとに、ページがデータベースビュー内にあるかどうかに関して決定を行う必要がある。データベースビュー内にページが存在する場合、それは正しいバージョンのページである。例えばこれは、前の修正が1次データベース200内のそのページに加えられたときであり得る。ページが1次200内で再度変更されると、データベースビューのバージョンを変更する必要がある。
ページが変更されているという情報を1次データベース200から受信したとき、ページがサイドファイル225にある場合は何もする必要がない。ページがサイドファイル225内にない場合、ページをサイドファイル225に書き込む必要があり、サイドページテーブルで適切なビットを設定する必要がある。2ビットのページテーブルがある場合、次の表1で示すように、そのページでのビット1およびビット2の場合で3つの可能性がある。
Figure 0004583087
一実施形態では、ページがサイドファイル225内に確実にあることを、ビット1が示すとき、ビット2は無視される。したがって表1に示すように、ページがサイドファイル225内に確実にあることを、ビット1が示す場合には、ビット2がどのように示していても、ページはサイドファイル225内にあるものとみなされる。代替実施形態では、ページがサイドファイル225に確実に存在することを、ビット1が示すように設定されると、ビット2は、ページがサイドファイル225内にある可能性があることを示すように設定される。またこの代替実施形態では、ページはサイドファイル225に確実にあることを、ビット1が示しているが、ビット2はサイドファイル225に絶対にないことを示しているとき、このケースは無効であり、エラーが生じる。
1次データベース200は、2ビットのページテーブルの場合にページが変更されていることを示しているとき、上述の場合にとるべき動作は次の通りである。
ケース1:何も行わない
ケース2:ページがサイドファイル225内にあるかどうかを決定し、ない場合はページをサイドファイル225に書き込む
ケース3:ページをサイドファイル225に書き込む。
ページがサイドファイル225に書き込まれるとき、ケース1またはケース2のいずれかで、1次データベース200内の古いバージョン(現在1次データベース200によって修正されているバージョン)のページがサイドファイル225に書き込まれる。さらに、ページテーブルは、ページが現在サイドファイル225内にあることを示すように設定され、その後のページへのすべての書き込みはケース1に従って処理され、データベースビューに適切なページは、サイドファイル225に格納されたままである。
ケース2において、ページがサイドファイル225内にあるかどうかを決定するために、ページに対応するデータがサイドファイル225から読み取られる。データが有効であり、前のバージョンのページがサイドファイル225内にある場合、それを上書きする必要はない。一実施形態では、ページに対応するページテーブルのビット1は、ページがサイドファイル225に確実に存在することを示すように設定されるため、ページへの将来の書き込みはケース1に基づいて処理される。
有効なデータはまだその領域に書き込まれていないことを示すために、新しく割り振られた領域に配置されたデータによってデータの無効を示すことができる。例えば、すべてゼロしかないデータベースのページがないことがわかっている場合、新しく割り振られた領域にすべてゼロを書き込むことができる。そうである場合、サイドファイル225内のページの存在は、割り振られた領域の一部であり、ゼロ以外の何らかのデータを含むサイドファイル225内の対応するページによって示される。
(データベースビューの読み取り)
表1に詳しく示したケースは、データベースビューに格納されているデータの読み取りを行うのにも有用である。ページ内のデータをデータベースビューから読み取るとき、ページがサイドファイル225内に存在している場合は、そこから読み取る必要がある。そこにない場合、ページは1次データベース200から読み取る必要がある。2ビットのページテーブルシステムでは、3つのケースの場合にとるべきアクションは、次の通りである。
ケース1:サイドファイル225からページを読み取る
ケース2:ページがサイドファイル225内にあるかどうかを決定し、そこにある場合はサイドファイル225からページを読み取り、そこにない場合は1次データベース200からページを読み取る
ケース3:1次データベース200からページを読み取る。
(データベースビューの修正)
データベースビューは、前のある時点でのデータベースの状態を表す。ユーザは、そのデータベースビューをデータベースとして使用することを選択することができる。例えばユーザは、前の時点のデータベースビューに対してそのアクションが行われたかのように、データベースビューに対してアクションを行い、データベースのデータベースビューを作成することができる。さらに、初期化中、上記で詳述したように、データベースビューに対してトランザクションを実行し、元に戻すこともできる。
データベースビューを修正するには、修正は、データベースビュー内のデータに基づく必要があり、その結果得られたページをデータベースビューに格納する必要がある。ページのデータベースビューにデータが存在しない場合、修正は、1次データベース200内のデータに基づく必要があり、その結果得られたページをデータベースビューに格納する必要がある。
2ビットのページテーブルシステムでは、3つのケースの場合にとるべきアクションは、以下の通りである。
ケース1:サイドファイル225からページを読み取り、修正を行い、ページをサイドファイル225に書き込む
ケース2:ページがサイドファイル225内に存在するかどうかを決定し、存在する場合はケース1と同様に処理し、存在しない場合はケース3と同様に処理する
ケース3:1次データベース200からページを読み取り、サイドファイル225にページを書き込み、ページがサイドファイル225にあることを示すようにページテーブルを設定する。ページへの修正を行い、適切な場合はサイドファイル225に修正されたページを書き込む。
上記の例は、単に説明の目的で提供したものであり、決して本発明を限定するものと解釈されるものではないことに注意されたい。本発明を様々な実施形態に関連して説明してきたが、本明細書で使用した単語は、限定するものではなく説明および例示のためのものであることを理解されたい。さらに、本明細書において本発明を特定の手段、材料、および実施形態に関連して説明してきたが、本発明は、本明細書に開示した詳細に限定されるものではなく、添付の特許請求の範囲内に含まれるものなど機能的に等価なすべての構造、方法、用途にまで拡張される。本明細書の教示の恩恵を受ける当分野の技術者は、それに様々な修正を行うことができ、本発明の態様の範囲および意図から逸脱することなく変更を加えることができる。
本発明の態様を実施できるコンピューティング環境の例を示すブロック図である。 本発明の一実施形態によるデータベースを示すブロック図である。 本発明の一実施形態によるデータベースビューおよびデータベースを示すブロック図である。 本発明の一実施形態によるトランザクションログの例を示すブロック図である。 本発明の一実施形態によるトランザクションの整合性を保つデータベースビューを実装する方法を示すフロー図である。
符号の説明
200 1次データベース
205 データファイル
210 ログファイル
220 データベースビュー
225 サイドファイル
230 サイドページテーブルデータ

Claims (44)

  1. 特定の時点のデータベースの内容を反映するトランザクションの整合性を保つデータを含むデータベースビューを提供する方法であって、前記データベースは、データ要素を含み、トランザクションログに関連付けられ、前記トランザクションログは、アクティブトランザクションおよび非アクティブトランザクションを含み、前記データベースビューは、前記データベースからの前記データ要素のうちの少なくとも1つの前のバージョンを格納する差分ストレージを含み、前記方法は、実行されたときに、各ステップをコンピュータに実行させ、前記方法は、
    前記時点に対応する前記トランザクションログにおける分割点を、前記データベースの最後の記録を識別することにより、決定するステップと、
    前記データベースに対する修正を行う前記分割点より前の最も古いアクティブトランザクションから分割点までの各トランザクションを前記トランザクションログ上で識別するステップと、
    前記差分ストレージ内に前記分割点より前の最も古いアクティブトランザクションから分割点までの各トランザクションの結果としての前記修正のデータのそれぞれを記憶するステップと、
    各データ要素が前記差分ストレージ内に格納されているか、および各データ要素が前記差分ストレージ内に割り振られているかに関する情報を含むサイドページテーブルを、前記修正の情報のそれぞれを記憶するときに、格納するステップと、
    前記分割点より前の最も古いアクティブトランザクションから分割点までの各アクティブトランザクションを前記トランザクションログ上で識別するステップと、
    前記差分ストレージ内の前記分割点より前の最も古いアクティブトランザクションから分割点までの各アクティブトランザクションの結果としての前記修正のデータを元に戻し、前記差分ストレージに前記元に戻した修正のデータを格納するステップと
    を備えたことを特徴とする方法。
  2. 前記差分ストレージを初期化するステップをさらに備えたことを特徴とする請求項1に記載の方法。
  3. 前記時点に対応する前記トランザクションログにおける分割点を決定する前記ステップは、ログの切り捨てを使用不可にするステップをさらに含むことを特徴とする請求項1に記載の方法。
  4. 前記方法は、前記サイドページテーブルを初期化するステップをさらに備えたことを特徴とする請求項1に記載の方法。
  5. 前記差分ストレージ内の前記分割点より前の最も古いアクティブトランザクションから分割点までの各アクティブトランザクションの結果としての前記修正のデータを元に戻す前記ステップは、前記対応する修正のデータを削除するステップを含むことを特徴とする請求項1に記載の方法。
  6. 前記差分ストレージ内の前記分割点より前の最も古いアクティブトランザクションから分割点までの各アクティブトランザクションの結果としての前記修正のデータを元に戻す前記ステップは、
    前記データベース内の対応する修正されていないデータを読み取るステップと、
    前記対応する修正されていないデータを前記差分ストレージに書き込むステップと
    を含むことを特徴とする請求項1に記載の方法。
  7. 前記データ要素のそれぞれは、1ページのデータを含むことを特徴とする請求項1に記載の方法。
  8. 前記差分ストレージは、少なくとも1つのスパースファイルを含むことを特徴とする請求項7に記載の方法。
  9. 前記差分ストレージ内に前記修正のデータのそれぞれを格納する前記ステップは、前記スパースファイルのうちの1つにおいてメモリの領域を割り振るステップを含むことを特徴とする請求項8に記載の方法。
  10. 前記データ要素のそれぞれは、1ページのデータを含み、前記サイドページテーブルは、ページごとに、
    前記ページが前記差分ストレージに格納されているかどうかを示す第1の格納データと、
    前記差分ストレージにおいて前記領域が割り振られているかどうかを示す第2の格納データと
    を含むことを特徴とする請求項9に記載の方法。
  11. 前記方法は、
    前記サイドページテーブルが無効であることを検出するステップと、
    前記スパースファイル内の領域ごとに、前記領域が割り振られているかどうかを決定するステップと、
    前記スパースファイル内の領域ごとに、前記領域が割り振られているかどうかに基づいて前記第2の格納データを設定するステップと
    をさらに備えたことを特徴とする請求項10に記載の方法。
  12. 前記差分ストレージ内の特定のページにデータが格納されているかどうかの決定は、
    前記第1の格納データをチェックし、前記特定のページが前記差分ストレージに格納されていることを、前記第1の格納データが示す場合、前記データは、前記差分ストレージ内の前記特定のページに格納されていることを決定するステップと、
    前記第2の格納データをチェックし、前記領域が前記差分ストレージにおいて割り振られていないことを、前記第2の格納データが示す場合、前記データは、前記差分ストレージ内の前記特定のページに格納されていないことを決定するステップと、
    前記ページが前記差分ストレージ内に格納されていることを、前記第1の格納データが示さず、前記領域が前記差分ストレージにおいて割り振られてないことを、前記第2の格納データが示さない場合、前記特定のページについての前記差分ストレージの対応するエリアからページデータを読み取り、前記対応するエリアからの前記ページデータが有効であるかどうかを決定するステップと
    を含むことを特徴とする請求項10に記載の方法。
  13. 前記サイドページテーブルは、ページごとに、
    前記ページが前記差分ストレージ内に格納されているかどうかを示す第1の格納データを含むことを特徴とする請求項7に記載の方法。
  14. データが前記差分ストレージ内の特定のページ内に格納されているかどうかの決定は、
    前記第1の格納データをチェックし、前記特定のページが前記差分ストレージに格納されていることを、前記第1の格納データが示す場合、前記データは、前記差分ストレージ内の前記特定のページに格納されていることを決定するステップと、
    前記特定のページが前記差分ストレージ内に格納されていることを、前記第1の格納データが示さない場合、前記特定のページについての前記差分ストレージの対応するエリアからページデータを読み取り、前記対応するエリアからの前記ページデータが有効であるかどうかを決定するステップと
    を含むことを特徴とする請求項13に記載の方法。
  15. 前記データベースビュー内の特定のデータ要素の要求を受け付けるステップと、
    データが前記差分ストレージ内の前記特定のデータ要素に対応する場所に格納されているかどうかを決定するステップと、
    データが前記差分ストレージ内の前記特定のデータ要素に対応する場所に格納されている場合、前記差分ストレージを読み取ることによって前記要求に応答するステップと、
    データが前記差分ストレージ内の前記特定のデータ要素に対応する場所に格納されている場合、前記データベースを読み取ることによって前記要求に応答するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  16. データが前記差分ストレージ内の前記特定のデータ要素に対応する場所に格納されているかどうかを決定する前記ステップは、前記差分ストレージが前記場所に有効なデータを含んでいるかどうかを決定するステップを含むことを特徴とする請求項15に記載の方法。
  17. データが前記差分ストレージ内の前記特定のデータ要素に対応する場所に格納されているかどうかを決定する前記ステップは、前記サイドページテーブルを調べるステップを含むことを特徴とする請求項15に記載の方法。
  18. 前記方法は、
    第2の特定のデータ要素の代わりに前記データベース内のある場所に第1の特定の値を格納する前記データベースに加えられた修正を検出するステップと、
    前記データベースビュー内の対応する場所が有効なデータを含んでいるかどうかを決定するステップと、
    前記データベースビュー内の前記対応する場所が有効なデータを含んでいない場合、前記第2の特定のデータ要素を前記対応する場所に書き込むステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  19. 請求項1に記載の方法を、コンピューティング装置に実行させる、複数のコンピュータ実行可能命令を格納するコンピュータ読取り可能記録媒体。
  20. 特定の時点のデータベースの内容を反映するトランザクションの整合性を保つデータを含むデータベースビューを提供するシステムであって、前記データベースは、データ要素を含み、トランザクションログに関連付けられ、前記トランザクションログは、アクティブトランザクションおよび非アクティブトランザクションを含み、前記システムは、
    前記時点に対応する前記トランザクションログにおける分割点を、前記データベースの最後の記録を識別することにより、決定する第1の手段と、
    前記データベースに対する修正を行う前記分割点より前の最も古いアクティブトランザクションから分割点までの各トランザクションを前記トランザクションログ上で識別する第2の手段と、
    前記分割点より前の最も古いアクティブトランザクションから分割点までの各トランザクションの結果としての前記修正のデータのそれぞれを記憶する差分ストレージと、
    各データ要素が前記差分ストレージ内に格納されているか、および各データ要素が前記差分ストレージ内に割り振られているかに関する情報を含むサイドページテーブルを、前記修正の情報のそれぞれを記憶するときに、格納する第3の手段と、
    前記分割点より前の最も古いアクティブトランザクションから分割点までの各アクティブトランザクションを前記トランザクションログ上で識別する第4の手段と、
    前記差分ストレージ内の前記分割点より前の最も古いアクティブトランザクションから分割点までの各アクティブトランザクションの結果としての前記修正のデータを元に戻す第5の手段と
    を備えたことを特徴とするシステム。
  21. 前記第1の手段は、ログの切り捨てを使用不可にする第11の手段をさらに含むことを特徴とする請求項20に記載のシステム。
  22. 前記修正のそれぞれを前記差分ストレージに格納し、スパースファイルの1つのメモリ領域を割り振る第6の手段をさらに備え、前記データ要素の各々は、1ページのデータを含み、前記差分ストレージは、少なくとも1つのスパースファイルを含むことを特徴とする請求項20に記載のシステム。
  23. 前記サイドページテーブルは、前記特定のデータ要素が前記差分ストレージに格納されているかどうかを示す第1の格納データを含むことを特徴とする請求項22に記載のシステム。
  24. 前記差分ストレージは、スパースファイルを含み、
    前記サイドページテーブルは、前記差分ストレージおいて前記特定のデータ要素に対応する領域が割り振られているかどうかを示す第2の格納データをさらに含むことを特徴とする請求項23に記載のシステム。
  25. 前記第3の手段は、
    前記スパースファイル内の領域ごとに、前記領域が割り振られているかどうかを決定する第31の手段と、
    前記スパースファイル内の領域ごとに、前記領域が割り振られているか否かの関数として前記第2の格納データを変更する第32の手段と
    をさらに備えたことを特徴とする請求項24に記載のシステム。
  26. 前記データベースビュー内の特定のデータ要素の要求を受け付け、データが前記差分ストレージ内の前記特定のデータ要素に対応する場所に格納されているかどうかを決定し、データが前記差分ストレージ内の前記特定のデータ要素に対応する場所に格納されている場合、前記差分ストレージを読み取ることによって前記要求に応答し、データが前記差分ストレージ内の前記特定のデータ要素に対応する場所に格納されている場合、前記データベースを読み取ることによって前記要求に応答する第7の手段をさらに含むことを特徴とする請求項20に記載のシステム。
  27. 特定の時点のデータベースの内容を反映するトランザクションの整合性を保つデータを含むデータベースビューを提供するコンピュータ読取り可能記録媒体であって、前記データベースは、データ要素を含み、トランザクションログに関連付けられ、前記トランザクションログは、アクティブトランザクションおよび非アクティブトランザクションを含み、前記データベースビューは、前記データベースからの前記データベース要素のうちの少なくとも1つの前のバージョンを格納する差分ストレージを含み、前記コンピュータ読取り可能記録媒体は、
    前記時点に対応する前記トランザクションログにおける分割点を、前記データベースの最後の記録を識別することにより、決定するステップと、
    前記データベースに対する修正を行う前記分割点より前の最も古いアクティブトランザクションから分割点までの各トランザクションを前記トランザクションログ上で識別するステップと、
    前記差分ストレージ内に前記分割点より前の最も古いアクティブトランザクションから分割点までの各トランザクションの結果としての前記修正のデータのそれぞれを記憶するステップと、
    各データ要素が前記差分ストレージ内に格納されているか、および各データ要素が前記差分ストレージ内に割り振られているかに関する情報を含むサイドページテーブルを、前記修正の情報のそれぞれを記憶するときに、格納するステップと、
    前記分割点より前の最も古いアクティブトランザクションから分割点までの各アクティブトランザクションを前記トランザクションログ上で識別するステップと、
    前記差分ストレージ内の前記分割点より前の最も古いアクティブトランザクションから分割点までの各アクティブトランザクションの結果としての前記修正のデータを元に戻し、前記差分ストレージ格納するステップと
    を含む動作を実行する命令を備えたことを特徴とするコンピュータ読取り可能記録媒体。
  28. 前記動作は、前記差分ストレージを初期化するステップをさらに含むことを特徴とする請求項27に記載のコンピュータ読取り可能記録媒体。
  29. 前記時点に対応する前記トランザクションログにおける分割点を決定する前記ステップは、ログの切り捨てを使用不可にするステップをさらに含むことを特徴とする請求項27に記載のコンピュータ読取り可能記録媒体。
  30. 前記動作は、前記サイドページテーブルを初期化するステップをさらに含むことを特徴とする請求項27に記載のコンピュータ読取り可能記録媒体。
  31. 前記差分ストレージ内の前記分割点より前の最も古いアクティブトランザクションから分割点までの各アクティブトランザクションの結果としての前記修正のデータを元に戻す前記ステップは、前記対応する修正のデータを削除するステップを含むことを特徴とする請求項27に記載のコンピュータ読取り可能記録媒体。
  32. 前記差分ストレージ内の前記分割点より前の最も古いアクティブトランザクションから分割点までの各アクティブトランザクションの結果としての前記修正のデータを元に戻す前記ステップは、
    前記データベース内の対応する修正されていないデータを読み取るステップと、
    前記対応する修正されていないデータを前記差分ストレージに書き込むステップと
    を含むことを特徴とする請求項27に記載のコンピュータ読取り可能記録媒体。
  33. 前記データ要素のそれぞれは、1ページのデータを含むことを特徴とする請求項27に記載のコンピュータ読取り可能記録媒体。
  34. 前記差分ストレージは、少なくとも1つのスパースファイルを含むことを特徴とする請求項33に記載のコンピュータ読取り可能記録媒体。
  35. 前記差分ストレージ内に前記修正のデータのそれぞれを格納する前記動作は、前記スパースファイルのうちの1つにおいてメモリの領域を割り振るステップを含むことを特徴とする請求項34に記載のコンピュータ読取り可能記録媒体。
  36. 前記データ要素のそれぞれは、1ページのデータを含み、前記サイドページテーブルは、ページごとに、
    前記ページが前記差分ストレージに格納されているかどうかを示す第1の格納データと、
    前記差分ストレージにおいて前記領域が割り振られているかどうかを示す第2の格納データと
    を含むことを特徴とする請求項35に記載のコンピュータ読取り可能記録媒体。
  37. 前記動作は、
    前記サイドページテーブルが無効であることを検出するステップと、
    前記スパースファイル内の領域ごとに、前記領域が割り振られているかどうかを決定するステップと、
    前記スパースファイル内の領域ごとに、前記領域が割り振られているかどうかに基づいて前記第2の格納データを設定するステップと
    をさらに備えたことを特徴とする請求項36に記載のコンピュータ読取り可能記録媒体。
  38. 前記差分ストレージ内の特定のページにデータが格納されているかどうかの決定は、
    前記第1の格納データをチェックし、前記特定のページが前記差分ストレージに格納されていることを、前記第1の格納データが示す場合、前記データは、前記差分ストレージ内の前記特定のページに格納されていることを決定するステップと、
    前記第2の格納データをチェックし、前記領域が前記差分ストレージにおいて割り振られていないことを、前記第2の格納データが示す場合、前記データは、前記差分ストレージ内の前記特定のページに格納されていないことを決定するステップと、
    前記ページが前記差分ストレージ内に格納されていることを、前記第1の格納データが示さず、前記領域が前記差分ストレージにおいて割り振られてないことを、前記第2の格納データが示さない場合、前記特定のページについての前記差分ストレージの対応するエリアからページデータを読み取り、前記対応するエリアからの前記ページデータが有効であるかどうかを決定するステップと
    を含むことを特徴とする請求項36に記載のコンピュータ読取り可能記録媒体。
  39. 前記サイドページテーブルは、ページごとに、
    前記ページが前記差分ストレージ内に格納されているかどうかを示す第1の格納データを含むことを特徴とする請求項33に記載のコンピュータ読取り可能記録媒体。
  40. データが前記差分ストレージ内の特定のページ内に格納されているかどうかの決定は、
    前記第1の格納データをチェックし、前記特定のページが前記差分ストレージに格納されていることを、前記第1の格納データが示す場合、前記データは、前記差分ストレージ内の前記特定のページに格納されることを決定するステップと、
    前記特定のページが前記差分ストレージ内に格納されていることを、前記第1の格納データが示さない場合、前記特定のページについての前記差分ストレージの対応するエリアからページデータを読み取り、前記対応するエリアからの前記ページデータが有効であるかどうかを決定するステップと
    を含むことを特徴とする請求項39に記載のコンピュータ読取り可能記録媒体。
  41. 前記動作は、
    前記データベースビュー内の特定のデータ要素の要求を受け付けるステップと、
    データが前記差分ストレージ内の前記特定のデータ要素に対応する場所に格納されているかどうかを決定するステップと、
    データが前記差分ストレージ内の前記特定のデータ要素に対応する場所に格納されている場合、前記差分ストレージを読み取ることによって前記要求に応答するステップと、
    データが前記差分ストレージ内の前記特定のデータ要素に対応する場所に格納されている場合、前記データベースを読み取ることによって前記要求に応答するステップと
    をさらに含むことを特徴とする請求項27に記載のコンピュータ読取り可能記録媒体。
  42. データが前記差分ストレージ内の前記特定のデータ要素に対応する場所に格納されているかどうかを決定する前記ステップは、前記差分ストレージが前記場所に有効なデータを含んでいるかどうかを決定するステップを含むことを特徴とする請求項41に記載のコンピュータ読取り可能記録媒体。
  43. データが前記差分ストレージ内の前記特定のデータ要素に対応する場所に格納されているかどうかを決定する前記動作は、前記サイドページテーブルを調べるステップを含むことを特徴とする請求項41に記載のコンピュータ読取り可能記録媒体。
  44. 前記コンピュータ読取り可能記録媒体は、
    第2の特定のデータ要素の代わりに前記データベース内のある場所に第1の特定の値を格納する前記データベースに加えられた修正を検出するステップと、
    前記データベースビュー内の対応する場所が有効なデータを含んでいるかどうかを決定するステップと、
    前記データベースビュー内の前記対応する場所が有効なデータを含んでいない場合、前記第2の特定のデータ要素を前記対応する場所に書き込むステップと
    をさらに含むことを特徴とする請求項27に記載のコンピュータ読取り可能記録媒体。
JP2004190397A 2003-06-30 2004-06-28 トランザクションの整合性を保つ書き込み時コピーのデータベース Expired - Fee Related JP4583087B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/611,774 US7395278B2 (en) 2003-06-30 2003-06-30 Transaction consistent copy-on-write database

Publications (3)

Publication Number Publication Date
JP2005025750A JP2005025750A (ja) 2005-01-27
JP2005025750A5 JP2005025750A5 (ja) 2007-08-16
JP4583087B2 true JP4583087B2 (ja) 2010-11-17

Family

ID=33541375

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004190397A Expired - Fee Related JP4583087B2 (ja) 2003-06-30 2004-06-28 トランザクションの整合性を保つ書き込み時コピーのデータベース

Country Status (5)

Country Link
US (1) US7395278B2 (ja)
EP (1) EP1503290B1 (ja)
JP (1) JP4583087B2 (ja)
KR (1) KR101085767B1 (ja)
CN (1) CN100437568C (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7448048B1 (en) 2003-05-27 2008-11-04 International Business Machines Corporation Method for performing real-time analytics using a business rules engine on real-time heterogeneous materialized data views
US7523462B1 (en) * 2003-05-27 2009-04-21 International Business Machines Corporation Method for providing a real time view of heterogeneous enterprise data
US8095511B2 (en) * 2003-06-30 2012-01-10 Microsoft Corporation Database data recovery system and method
US7672964B1 (en) * 2003-12-31 2010-03-02 International Business Machines Corporation Method and system for dynamically initializing a view for a streaming data base system
US7831639B1 (en) * 2004-12-22 2010-11-09 Symantec Operating Corporation System and method for providing data protection by using sparse files to represent images of data stored in block devices
CN100369038C (zh) * 2005-02-24 2008-02-13 中兴通讯股份有限公司 一种实时数据库事务操作的实现方法
US20060218204A1 (en) * 2005-03-25 2006-09-28 International Business Machines Corporation Log stream validation in log shipping data replication systems
US7487386B2 (en) * 2005-03-30 2009-02-03 International Business Machines Corporation Method for increasing file system availability via block replication
US7440979B2 (en) * 2005-03-30 2008-10-21 Sap Ag Snapshots for instant backup in a database management system
EP1952283A4 (en) * 2005-10-28 2010-01-06 Goldengate Software Inc DEVICE AND METHOD FOR GENERATING A REAL-TIME DATABASE DUPLICATE
US8095750B2 (en) * 2007-05-14 2012-01-10 International Business Machines Corporation Transactional memory system with fast processing of common conflicts
US8095741B2 (en) * 2007-05-14 2012-01-10 International Business Machines Corporation Transactional memory computing system with support for chained transactions
US8688920B2 (en) * 2007-05-14 2014-04-01 International Business Machines Corporation Computing system with guest code support of transactional memory
US8321637B2 (en) * 2007-05-14 2012-11-27 International Business Machines Corporation Computing system with optimized support for transactional memory
US9009452B2 (en) * 2007-05-14 2015-04-14 International Business Machines Corporation Computing system with transactional memory using millicode assists
US8117403B2 (en) * 2007-05-14 2012-02-14 International Business Machines Corporation Transactional memory system which employs thread assists using address history tables
US7792784B2 (en) * 2007-05-31 2010-09-07 International Business Machines Corporation Streaming multidimensional data by bypassing multidimensional query processor
US8196123B2 (en) * 2007-06-26 2012-06-05 Microsoft Corporation Object model for transactional memory
US7962703B1 (en) * 2007-08-08 2011-06-14 Symantec Corporation Techniques for improving dirty page logging
JP4810548B2 (ja) * 2008-02-07 2011-11-09 株式会社東芝 サーバ装置、更新画像検出方法およびプログラム
US8566524B2 (en) * 2009-08-31 2013-10-22 International Business Machines Corporation Transactional memory system with efficient cache support
US20110082832A1 (en) * 2009-10-05 2011-04-07 Ramkumar Vadali Parallelized backup and restore process and system
US8793288B2 (en) * 2009-12-16 2014-07-29 Sap Ag Online access to database snapshots
CN102024052B (zh) * 2010-12-17 2013-03-13 北京握奇数据系统有限公司 一种数据存储系统事务的实现方法和装置
US9110847B2 (en) 2013-06-24 2015-08-18 Sap Se N to M host system copy
CN103744936B (zh) 2013-12-31 2017-02-08 华为技术有限公司 一种数据库中的多版本并发控制方法及数据库系统
KR101805561B1 (ko) 2014-01-02 2017-12-07 후아웨이 테크놀러지 컴퍼니 리미티드 데이터베이스 시스템에서 온라인 분석 처리를 위한 데이터를 유지하는 방법 및 장치
US20150234841A1 (en) * 2014-02-20 2015-08-20 Futurewei Technologies, Inc. System and Method for an Efficient Database Storage Model Based on Sparse Files
US9613078B2 (en) 2014-06-26 2017-04-04 Amazon Technologies, Inc. Multi-database log with multi-item transaction support
US9558078B2 (en) 2014-10-28 2017-01-31 Microsoft Technology Licensing, Llc Point in time database restore from storage snapshots
WO2018118040A1 (en) 2016-12-21 2018-06-28 Hewlett-Packard Development Company, L.P. Persistent memory updating

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043871A (en) * 1986-03-26 1991-08-27 Hitachi, Ltd. Method and apparatus for database update/recovery
US4914569A (en) * 1987-10-30 1990-04-03 International Business Machines Corporation Method for concurrent record access, insertion, deletion and alteration using an index tree
JP2858795B2 (ja) * 1989-07-14 1999-02-17 株式会社日立製作所 実記憶割り当て方法
US5247672A (en) * 1990-02-15 1993-09-21 International Business Machines Corporation Transaction processing system and method with reduced locking
US5893117A (en) * 1990-08-17 1999-04-06 Texas Instruments Incorporated Time-stamped database transaction and version management system
US5317731A (en) * 1991-02-25 1994-05-31 International Business Machines Corporation Intelligent page store for concurrent and consistent access to a database by a transaction processor and a query processor
US5613113A (en) * 1993-10-08 1997-03-18 International Business Machines Corporation Consistent recreation of events from activity logs
JP2894676B2 (ja) * 1994-03-21 1999-05-24 インターナショナル・ビジネス・マシーンズ・コーポレイション 非同期式遠隔コピー・システム及び非同期式遠隔コピー方法
US5806078A (en) * 1994-06-09 1998-09-08 Softool Corporation Version management system
US5832508A (en) * 1996-09-18 1998-11-03 Sybase, Inc. Method for deallocating a log in database systems
US6041423A (en) * 1996-11-08 2000-03-21 Oracle Corporation Method and apparatus for using undo/redo logging to perform asynchronous updates of parity and data pages in a redundant array data storage environment
SE510050C2 (sv) * 1997-07-21 1999-04-12 Ericsson Telefon Ab L M Metod för insamlande av logginformation vid förändring av databas
US6804766B1 (en) * 1997-11-12 2004-10-12 Hewlett-Packard Development Company, L.P. Method for managing pages of a designated memory object according to selected memory management policies
US6792432B1 (en) * 1998-03-31 2004-09-14 Sybase, Inc. Database system with methods providing high-concurrency access in B-Tree structures
US6243702B1 (en) * 1998-06-22 2001-06-05 Oracle Corporation Method and apparatus for propagating commit times between a plurality of database servers
SE521433C2 (sv) * 1998-07-22 2003-11-04 Ericsson Telefon Ab L M En metod för hantering av risken för en total låsning mellan samtidiga transaktioner i en databas
US6449623B1 (en) * 1998-09-04 2002-09-10 Lucent Technologies Inc, Method and apparatus for detecting and recovering from data corruption of a database via read logging
US6363387B1 (en) * 1998-10-20 2002-03-26 Sybase, Inc. Database system providing methodology for enhancing concurrency using row update bit and deferred locking
US6581205B1 (en) * 1998-12-17 2003-06-17 International Business Machines Corporation Intelligent compilation of materialized view maintenance for query processing systems
US6477544B1 (en) * 1999-07-16 2002-11-05 Microsoft Corporation Single instance store for file systems
CA2281287C (en) * 1999-09-01 2003-03-11 Ibm Canada Limited-Ibm Canada Limitee Method and system for efficiently searching for free space in a table of a relational database having a clustering index
US6473775B1 (en) * 2000-02-16 2002-10-29 Microsoft Corporation System and method for growing differential file on a base volume of a snapshot
US7072916B1 (en) * 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US6631374B1 (en) * 2000-09-29 2003-10-07 Oracle Corp. System and method for providing fine-grained temporal database access
US6668262B1 (en) * 2000-11-09 2003-12-23 Cisco Technology, Inc. Methods and apparatus for modifying a database
US20040199549A1 (en) * 2001-06-25 2004-10-07 Kenneth Oksanen Method and system for performing concurrency control in a relational database
US6898608B2 (en) * 2002-04-26 2005-05-24 Oracle International Corporation Techniques for managing what-if analysis of data managed by a relational database system
US6957362B2 (en) * 2002-08-06 2005-10-18 Emc Corporation Instantaneous restoration of a production copy from a snapshot copy in a data storage system
US6792518B2 (en) * 2002-08-06 2004-09-14 Emc Corporation Data storage system having mata bit maps for indicating whether data blocks are invalid in snapshot copies
US6934822B2 (en) * 2002-08-06 2005-08-23 Emc Corporation Organization of multiple snapshot copies in a data storage system
US7191304B1 (en) * 2002-09-06 2007-03-13 3Pardata, Inc. Efficient and reliable virtual volume mapping
US6976022B2 (en) * 2002-09-16 2005-12-13 Oracle International Corporation Method and mechanism for batch processing transaction logging records
JP4292882B2 (ja) * 2003-03-18 2009-07-08 株式会社日立製作所 複数のスナップショット維持方法及びサーバ装置及びストレージ装置
US7035881B2 (en) * 2003-09-23 2006-04-25 Emc Corporation Organization of read-write snapshot copies in a data storage system

Also Published As

Publication number Publication date
CN100437568C (zh) 2008-11-26
EP1503290B1 (en) 2018-08-29
KR101085767B1 (ko) 2011-11-21
US7395278B2 (en) 2008-07-01
JP2005025750A (ja) 2005-01-27
US20040267828A1 (en) 2004-12-30
KR20050002616A (ko) 2005-01-07
EP1503290A3 (en) 2011-01-19
EP1503290A2 (en) 2005-02-02
CN1577334A (zh) 2005-02-09

Similar Documents

Publication Publication Date Title
JP4583087B2 (ja) トランザクションの整合性を保つ書き込み時コピーのデータベース
US7440966B2 (en) Method and apparatus for file system snapshot persistence
US10936441B2 (en) Write-ahead style logging in a persistent memory device
US8768890B2 (en) Delaying database writes for database consistency
JP4638905B2 (ja) データベースのデータ復旧システムおよびその方法
US8533189B2 (en) Method and system for synthetic backup and restore
US8117410B2 (en) Tracking block-level changes using snapshots
KR101014089B1 (ko) 데이터베이스 백업의 일관성 검사를 위한 시스템 및 방법
US7472129B2 (en) Lossless recovery for computer systems with map assisted state transfer
JP4960963B2 (ja) データベースミラーからのオンラインページリストア
US7360111B2 (en) Lossless recovery for computer systems with remotely dependent data recovery
US6678809B1 (en) Write-ahead log in directory management for concurrent I/O access for block storage
WO2017190604A1 (zh) 数据库系统中事务恢复的方法与数据库管理系统
JP4419884B2 (ja) データ複製装置、方法及びプログラム並びに記憶システム
US8250035B1 (en) Methods and apparatus for creating a branch file in a file system
US20180203606A1 (en) Method and device for writing data and acquiring data in a distributed storage system
US20060123211A1 (en) Method for optimizing a snapshot operation on a file basis
US20150193463A1 (en) Systems and methods for durable database operations in a memory-mapped environment
US8117160B1 (en) Methods and apparatus for creating point in time copies in a file system using reference counts
US9804926B1 (en) Cataloging file system-level changes to a source storage between image backups of the source storage

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070628

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070628

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100420

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100720

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4583087

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130910

Year of fee payment: 3

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