[go: up one dir, main page]

JP2001101045A - トランザクション処理方法及びトランザクション処理システム - Google Patents

トランザクション処理方法及びトランザクション処理システム

Info

Publication number
JP2001101045A
JP2001101045A JP27626499A JP27626499A JP2001101045A JP 2001101045 A JP2001101045 A JP 2001101045A JP 27626499 A JP27626499 A JP 27626499A JP 27626499 A JP27626499 A JP 27626499A JP 2001101045 A JP2001101045 A JP 2001101045A
Authority
JP
Japan
Prior art keywords
file
transaction
update
information
files
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP27626499A
Other languages
English (en)
Other versions
JP4237354B2 (ja
Inventor
Tatsunori Kanai
達徳 金井
Osamu Torii
修 鳥井
Toshiki Kitsu
俊樹 岐津
Seiji Maeda
誠司 前田
Hiroshi Yao
浩 矢尾
Hirokuni Yano
浩邦 矢野
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP27626499A priority Critical patent/JP4237354B2/ja
Priority to US09/660,461 priority patent/US6519614B1/en
Priority to EP00307894.6A priority patent/EP1089177B1/en
Priority to TW089118907A priority patent/TW550474B/zh
Priority to KR10-2000-0056689A priority patent/KR100398753B1/ko
Publication of JP2001101045A publication Critical patent/JP2001101045A/ja
Priority to US10/307,974 priority patent/US6834275B2/en
Application granted granted Critical
Publication of JP4237354B2 publication Critical patent/JP4237354B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1865Transactional file systems
    • 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
    • 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
    • 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/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • 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/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure 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/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)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【課題】 並行に動作する複数のトランザクションによ
るファイルの更新処理と障害時のリカバリ処理を簡単に
効率良く実現することのできるトランザクション処理シ
ステムを提供すること。 【解決手段】 並行に動作する複数のトランザクション
(TXID=1〜3)によってUPDATEやREMO
VEなどの更新をされたファイルに対して、それを更新
した1つのトランザクション(TXID=1)のコミッ
ト時に、そのトランザクションによる更新だけでなく、
他のトランザクション(TXID=2,3)による更新
とそれを取り消すのに必要な情報(<entry>にお
けるTXID=2とTXSTATE=UPDATE、<
oldvalue>200円</oldvalue>
等)を、同じファイルにまとめて書き込む。障害発生後
のリカバリ処理は次にそのファイルを使う時点で行えば
よい。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、複数のトランザク
ションが並行して同じファイルにアクセスするトランザ
クション処理方法及びトランザクション処理システムに
関する。
【0002】
【従来の技術】一般に、トランザクション処理システム
においては、トランザクションと呼ぶ処理の流れを単位
として処理の実行を管理する。例えば、端末装置やネッ
トワークなどから受け取った処理要求に対して、必要な
処理を実行し、その結果を返すような、何らかの手段で
起動された処理を実行する流れをトランザクションと呼
ぶ。個々のトランザクションは、実行過程で、1または
複数のファイル(あるいはデータベース)に記録管理す
るデータの更新を行う。トランザクション処理システム
は、このような1または複数のデータの更新を、アトミ
ックにコミットするかアボートするかのいずれかの状態
にすることを保証する。すなわち、すべての更新を同時
に有効にするのがコミットである。逆に、すべての更新
を捨ててトランザクションを実行しなかったのと同じ状
態に戻すのがアボートである。また、トランザクション
処理システムは、一度トランザクションをコミットした
ら、そのトランザクションによる更新が取り消されるこ
とがないことも保証する。
【0003】このようなトランザクション処理システム
を実現する方式は広く知られており、例えば“TRAN
SACTION PROCESSING: CONCE
PTS AND TECHNIQUES”(Jim G
ray,Andreas Reuter著、Morga
n Kaufmann)にはさまざまな方式が開示され
ている。
【0004】トランザクション処理システムにおいて扱
いが難しいのは、1つのファイル上のデータを、同時に
複数のトランザクションが更新する場合である。1つの
ファイルには同時に1つのトランザクションしか更新す
ることを許さなければ問題は生じない。しかし、同時に
複数のトランザクションを並行に処理して性能を向上さ
せるためには、同時に1つのファイルの中の異なる部分
に記録管理するデータを更新できるようにすることが必
要になる。この問題は、ファイルではなくデータベース
を用いる場合も同様である。以下、ファイルを例に説明
するが、データベースにおいても同様である。
【0005】このような並行に更新処理を行うトランザ
クション処理システムを実現するために従来から広く用
いられているのは、WAL(Write Ahead
Logging)と呼ばれる方式である。この方式は、
メモリ上のバッファに読み込んだファイルに対し、複数
のトランザクションが更新を行った場合、ログファイル
にはどのトランザクションがどのファイルのどの部分を
どう書き換えたかを記録する。さらに、ログに記録した
更新情報が安定記憶装置(例えばハードディスク)上に
書かれて消えないことが保証されるまで、バッファ上で
行った更新はハードディスクなどの記憶媒体上の元のフ
ァイルには書き戻さないようにタイミングを制御する。
【0006】WAL方式ではすべての更新履歴はログに
記録されており、システムの障害が発生した場合には、
そのログを使ってファイルを正しい状態に戻すことがで
きる。すなわち、障害が発生してシステムを再起動した
場合、トランザクション処理システムはログを見て、コ
ミットしたトランザクションが行った更新で、それがフ
ァイルに反映されていないものは正しく反映させる。ま
た、アボートしたトランザクションによる更新がファイ
ルに書きこまれていたらそれを取り消す処理を行う。こ
のようなリカバリ処理により、障害発生に対してもトラ
ンザクションの原子性(Atomicity)や耐久性
(Durability)や分離性(Isolatio
n)や一貫性(Consistency)を保証するこ
とができる。
【0007】トランザクション処理システムを実現する
もう1つの方式は、シャドウページ方式である。この方
式でファイルを更新する場合には、ハードディスク上
に、更新前のファイルが書き込まれているページと、更
新後のファイルが書き込まれているページの両方を用意
し、トランザクションのコミット時にファイルの管理デ
ータをアトミックに入れ替える。そのため、常にハード
ディスク上には正しいファイルが存在することが保証で
きる。
【0008】
【発明が解決しようとする課題】従来のWAL方式によ
るトランザクション処理方式では、トランザクションが
ファイルを更新する場合、まず更新内容をログに書いて
からファイル本体を更新するため、複数のトランザクシ
ョンによるファイルの共有を管理するためには複雑な処
理手順を必要とする。また、1回の更新に対して、ログ
とファイル本体への2回の書き込み処理が必要になる。
また、リカバリに必要な更新情報をログに記録し、リカ
バリ時にそのログを使ってファイルを一貫性のある状態
に戻す処理は、複雑な処理手順を必要とする。さらに、
リカバリ処理は障害発生後の再起動時に集中して行わな
ければならず、再起動に時間がかかるという問題点があ
る。
【0009】一方、シャドウページ方式では、ハードデ
ィスク上には常に正しい状態のファイルが存在するの
で、障害発生時のリカバリ処理のオーバヘッドが小さい
という特徴を持つ。しかし、シャドウページ方式は、1
つのトランザクションのコミット前とコミット後の2つ
のファイルのデータが記録されたページを、アトミック
に交換することを基本操作としている。そのため、複数
のトランザクションが同じファイルを更新したい場合に
は、それらのトランザクションをシリアライズして順に
更新して行くようにしなければならない。WAL方式の
ように同じファイルの異なる部分を複数のトランザクシ
ョンが並行して更新できるようにするためにはシャドウ
ページ方式だけでは無理で、その上にWAL方式と同じ
ようにログを使ったデータの管理をするなどの工夫が必
要になる。そのため、シャドウページ方式は簡単に実装
できても、その上に複雑なデータの管理を実装すること
が必要になるという問題点がある。
【0010】本発明は、上記事情を考慮してなされたも
ので、並行に動作する複数のトランザクションによるフ
ァイルの更新処理と障害時のリカバリ処理を簡単に効率
良く実現することのできるトランザクション処理方法及
びトランザクション処理システムを提供することを目的
とする。
【0011】
【課題を解決するための手段】本発明(請求項1)に係
るトランザクション処理方法は、バッファ領域上に読み
出した同一のファイルを更新対象として複数のトランザ
クションが処理を行い、前記複数のトランザクションの
うちの一つのトランザクションのコミット時に、該一つ
のコミットするトランザクションによる確定した更新内
容と、他のコミットしていないトランザクションによる
未確定の更新内容と、該未確定の更新を取り消すための
情報とをファイル内容として含む前記ファイルを、安定
記憶装置に書き込むことを特徴とする。
【0012】安定記憶装置とは、例えば、ハードディス
ク等の、電源を切っても記憶した内容が消えない記憶装
置を指す。
【0013】本発明では、上記のように、あるトランザ
クションのコミット時に、そのトランザクションが更新
したファイルを別のトランザクションも更新している場
合には、その別のトランザクションによる更新内容とそ
れを取り消すための情報も一緒にファイルの中身に書き
込んで、そのファイルを安定記憶装置(例えばハードデ
ィスク)に書き出すことにより、ファイルとは別にログ
を用意して複雑な管理を行うようなことをしなくとも、
トランザクションの原子性(トランザクション単位で、
行った更新の全てが安定記憶装置上で有効になる(コミ
ット)か全て無効になる(アボート)かいずれかの状態
にしかならないことを、システムに障害が起きた場合で
も保証できること)を担保しつつ、一つのファイルのデ
ータを複数のトランザクションが並行して更新すること
を実現できる。
【0014】好ましくは、前記他のコミットしていない
トランザクションをコミットする時には、該他のこれか
らコミットするトランザクションによる新たに確定した
更新内容と、以前にコミットしたトランザクションによ
る既に確定している更新内容のうち該他のこれからコミ
ットするトランザクションによる新たに確定した更新内
容とは競合しないものとをファイル内容として含むファ
イルを、前記安定記憶装置に格納された前記ファイルに
上書きするようにしてもよい。
【0015】あるトランザクションがコミットした後、
同じファイルを更新している別のトランザクションをコ
ミットする場合には、後にコミットするトランザクショ
ンの更新内容と、先にコミットしたトランザクションの
更新内容のうち後にコミットするトランザクションによ
って書き換えられてはいないものとを書き込んだファイ
ルで、先に安定記憶装置に書き出されたファイル(後に
コミットすることになるトランザクションの更新内容と
それを取り消すための情報が入っている)を上書きすれ
ば、トランザクションの原子性を担保できる。なお、あ
るトランザクションがコミットした後、同じファイルを
更新している別のトランザクションをアボートする場合
には、アボートするトランザクションによる更新がなか
った状態に戻したファイルで、先に安定記憶装置に書き
出されたファイル(後にアボートすることになるトラン
ザクションの更新内容とそれを取り消すための情報が入
っている)を上書きしても良いし、アボート時には何も
しなくとも、下記のように次にファイルを読み出す時に
リカバリ処理を行えば、トランザクションの原子性は担
保できる。
【0016】好ましくは、新しくファイルを前記安定記
憶装置から読み出した時に、このファイルに、コミット
していないトランザクションによる未確定の更新内容お
よび該未確定の更新を取り消すための情報が含まれてい
るか否かを調べ、含まれている場合には、読み出した前
記ファイルを前記情報を用いて前記コミットしていない
トランザクションによる更新がなかった状態に戻すよう
にしてもよい。
【0017】あるトランザクションがコミットした後、
同じファイルを更新している別のトランザクションのコ
ミット/アボートが行われる前に、システムに障害が起
きた場合でも、コミットしたトランザクションによる更
新は既に安定記憶装置上でファイルに正しく反映されて
いる。これに加えて上記のようなリカバリ処理を行え
ば、未確定の(別の)トランザクションによる更新はア
ボートしたものとしてそれを取り消すことができるの
で、トランザクションの一貫性が保たれる。しかも、こ
のリカバリ処理は、障害回復時に行う必要はなく、次に
そのファイルを読み出した時に行えば良い。
【0018】好ましくは、前記一つのコミットするトラ
ンザクションが前記ファイルとは別のファイルをも更新
対象として前記バッファ領域上で処理を行っていた場合
には、前記ファイルの前記安定記憶装置への書き込みと
同期させて、該一つのコミットするトランザクションに
よる前記別のファイルに対する確定した更新内容をファ
イル内容として含む前記別のファイルを前記安定記憶装
置に書き込むようにしてもよい。
【0019】上記のように複数のファイルの書き込みを
同期させれば、一つのトランザクションがその処理開始
時からコミット時までに複数のファイルに対して行った
更新の全てが安定記憶装置上で有効になる(コミット)
か、全てが無効になる(アボート)か、いずれかの状態
にしかならない(システムに障害が起きた場合でも、一
つのトランザクションが行った更新のうち一部分だけが
有効になり残りが無効になるということはあり得ない)
ことを保証するような、アトミックな書き込みが実現で
きる。
【0020】好ましくは、前記ファイルは、一纏まりの
情報を分割して記録した複数個のファイルの集合の中の
一つのファイルであるようにしてもよい。
【0021】好ましくは、一纏まりの情報を分割して記
録した複数個のファイルの集合に対して二つ以上のトラ
ンザクションが前記バッファ領域上で更新を行い、この
二つ以上のトランザクションによる更新内容に基づい
て、前記バッファ領域上で、新しいファイルの追加、フ
ァイル間の情報の移動および不要ファイルの削除のうち
少なくとも一つを行うことにより、前記複数個のファイ
ルそれぞれの大きさが予め定められた基準に従うように
調整し、前記一つのコミットするトランザクションが更
新したファイル、および該トランザクションによる更新
に伴う前記調整の結果更新あるいは新規に作成されたフ
ァイルのうち、少なくとも一つのファイルに対して他の
トランザクションが更新を行っている場合には、該少な
くとも一つのファイルを更新対象(すなわち前記ファイ
ル)として複数のトランザクションが処理を行ったもの
として、前記ファイルの前記安定記憶装置への書き込み
を行うようにしてもよい。
【0022】また、本発明(請求項7)に係るトランザ
クション処理システムは、トランザクションの処理対象
となるファイルを安定記憶装置からバッファ領域上に読
み出す手段と、前記ファイルに対して複数のトランザク
ションのそれぞれが行った更新の内容と該更新を取り消
すための情報とを前記バッファ領域上で該ファイル内に
書き込む手段と、前記複数のトランザクションのうちの
一つのトランザクションのコミット時に、前記ファイル
内に書き込まれた該一つのコミットするトランザクショ
ンによる更新の内容については該更新を取り消すための
情報を削除することにより確定させ、前記ファイル内に
書き込まれた他のコミットしていないトランザクション
による更新の内容および該更新を取り消すための情報に
ついてはそのままとし、確定させた内容とそのままとし
た情報とをファイル内容として含む前記ファイルを、前
記安定記憶装置に書き出す手段とを備えたことを特徴と
する。
【0023】また、本発明(請求項8)に係るトランザ
クション処理システムは、トランザクションの処理対象
となる一纏まりの情報を分割して記録した複数個のファ
イルの集合を安定記憶装置からバッファ領域上に読み出
す手段と、前記ファイルの集合に対して複数のトランザ
クションのそれぞれが行った更新の内容に基づいて、前
記バッファ領域上で、該更新の内容と該更新を取り消す
ための情報とをファイル内に書き込むとともに、新しい
ファイルの追加、ファイル間の情報の移動および不要フ
ァイルの削除のうち少なくとも一つを行うことにより、
前記複数個のファイルそれぞれの大きさが予め定められ
た基準に従うように調整する手段と、前記複数のトラン
ザクションのうちの一つのトランザクションのコミット
時に、前記ファイル内に書き込まれた該一つのコミット
するトランザクションによる更新の内容については該更
新を取り消すための情報を削除することにより確定さ
せ、前記ファイルおよび前記調整の結果更新あるいは新
規に作成されたファイルのうちの少なくとも一つのファ
イルに対して更新を行った他のコミットしていないトラ
ンザクションによる、該少なくとも一つのファイル内に
書き込まれた更新の内容および該更新を取り消すための
情報についてはそのままとし、確定させた内容をファイ
ル内容として含む前記ファイルとそのままとした情報を
ファイル内容として含む前記少なくとも一つのファイル
とを、前記安定記憶装置に書き出す手段とを備えたこと
を特徴とする。
【0024】なお、装置に係る本発明は方法に係る発明
としても成立し、方法に係る本発明は装置に係る発明と
しても成立する。
【0025】また、装置または方法に係る本発明は、コ
ンピュータに当該発明に相当する手順を実行させるため
の(あるいはコンピュータを当該発明に相当する手段と
して機能させるための、あるいはコンピュータに当該発
明に相当する機能を実現させるための)プログラムを記
録したコンピュータ読取り可能な記録媒体としても成立
する。
【0026】本発明によれば、並行に動作する複数のト
ランザクションによるファイルの更新を、簡単な処理手
順で実現することができる。本発明によれば、従来のW
AL方式や、シャドウページ方式の上に特殊なログ管理
を実装するときのように、データの更新時やコミット処
理時あるいはリカバリ時に複雑な処理を必要としない。
【0027】また、本発明では、障害発生後のリカバリ
処理を、再起動時に集中して行う必要は無く、障害で更
新途中の状態は次にそのファイルを使う時点で行われる
ため、リカバリ処理のオーバヘッドが小さい。
【0028】さらに、本発明では、1つのデータを複数
のファイルに分けて管理することで、ファイルの更新の
コミット時にディスクに書き戻すデータの量を減らすこ
とができる。
【0029】
【発明の実施の形態】以下、図面を参照しながら発明の
実施の形態を説明する。
【0030】最初に従来のファイルシステムについて簡
単に説明する。図43に、従来のトランザクション処理
システムの例を示す。従来のトランザクション処理シス
テムでは、トランザクションを処理するアプリケーショ
ンプログラム101は、データベース管理システム10
2を介してデータの操作を行う。ファイルシステム10
3はハードディスク104などの安定記憶装置に記録し
たファイルの操作や管理を行う。データベース管理シス
テム102は、ファイルシステム103の管理するファ
イルを使って、アプリケーションプログラム101が必
要とするデータを管理する。複数のアプリケーションプ
ログラム101が共有しているデータに対する操作の間
の並行制御もデータベース管理システム102が行う。
【0031】図1に、本発明の一実施形態に係るトラン
ザクション処理システムの構成例を示す。
【0032】なお、本実施形態では、安定記憶装置とし
てハードディスクを用いるものとして説明するが、もち
ろん安定記憶装置として他の装置を使用することも可能
である。また、本実施形態では、ユーザプログラムによ
りトランザクションが発生するものとして説明するが、
もちろんユーザプログラム以外のものがトランザクショ
ンを発生させる場合も同様である。
【0033】本実施形態のトランザクション処理システ
ムでは、図1に示されるように、トランザクションを実
行する複数のアプリケーションプログラム2間で共有す
るファイルの操作は、共有データ管理部4を介して行
い、共有しないファイルの操作は、アプリケーションプ
ログラム2がファイルシステム6を直接指示して行う。
【0034】トランザクションマネージャ8は、各アプ
リケーションプログラム2が処理するトランザクション
の管理を行う。アプリケーションプログラム2は、トラ
ンザクションの処理を開始する時点で、トランザクショ
ンマネージャ8からトランザクション識別子を割り付け
てもらう。以降、トランザクションの処理を進めて行く
過程で、共有データ管理部4やファイルシステム6に操
作を指示するときには、トランザクション識別子を提示
してどのトランザクションによるファイルの更新である
かを知らせる。アプリケーションプログラム2がトラン
ザクションの処理の終了をトランザクションマネージャ
8に伝えると、トランザクションマネージャ8は共有デ
ータ管理部4やファイルシステム6に対して、トランザ
クション識別子で指定したトランザクションによるファ
イルの更新結果をハードディスク10に書き込んでコミ
ットするか、あるいは更新結果を廃棄してアボートする
かを指示する。
【0035】なお、トランザクションマネージャ8を用
いず、ユーザプログラム2が自分でトランザクション識
別子に相当する情報を生成したり、コミット(COMM
IT)やアボート(ABORT)を指示するように実施
することもできる(本実施形態では、トランザクション
マネージャ8を用いる場合について説明する)。
【0036】共有データ管理部4は、複数のトランザク
ションによる同一ファイルの異なる部分の更新を実現す
る。共有データ管理部4は、(当該共有データ管理部4
を介して)どのファイルがどのトランザクションによっ
て更新されているかを、更新管理表41を用いて管理し
ている。図2に、更新管理表41の例を示す。更新管理
表41には、ファイル名と、そのファイルを更新中のト
ランザクションのトランザクション識別子のリストの対
応が記録されている。図2では、例えば、F0102と
いうファイルはトランザクション識別子が36,21,
5の3つのトランザクションによって更新中であること
を示している。
【0037】ファイルシステム6は、トランザクション
によるファイルの操作を実現する部分である。ファイル
システム6は、バッファ領域62を管理するバッファ管
理部(図示せず)とトランザクション管理表61を持っ
ている。ハードディスク10に記録しているファイルを
読んだり更新したりする場合には、そのファイルをバッ
ファ領域62に読み出してきて、バッファ領域62上で
読んだり更新したりする。新しくファイルを作成する場
合には、まずバッファ領域62にファイルを作成する。
バッファ領域62上で更新や作成されたファイルは、ト
ランザクションのコミット時にハードディスク10に書
き込む。トランザクション管理表61は、どのトランザ
クションがどのファイルを更新しているかを管理してい
る。
【0038】図3に、トランザクション管理表61の例
を示す。トランザクション管理表61には、トランザク
ション識別子と、そのトランザクションが更新中のファ
イルのリストの対応が記録されている。図3の例では、
トランザクション識別子“3”のトランザクションはフ
ァイルF9268のみを更新しており、トランザクショ
ン識別子“5”のトランザクションはファイルF010
0とF9264の2つのファイルを更新していることを
示している。トランザクション管理表61の最後のエン
トリは、どのトランザクションにも属していないファイ
ルの更新を管理している。
【0039】図3に例示したトランザクション管理表6
1では、最後の行のトランザクション“NOTX”のエ
ントリがこれに当たる。この例では、ファイルF010
2,F2156,F3624,F5497,F7531
は特定のトランザクションの一部として更新されている
のではなく、どのトランザクションとも関連せずに更新
されていることを示す。以下で説明するように、共有デ
ータ管理部4を介して更新中のファイルは、どのトラン
ザクションとも関連しない状態で更新するので、このエ
ントリに記録される。なお、このエントリに記録される
ファイルがどのトランザクションによって更新されてい
るかは、共有データ管理部4の更新管理表41を参照す
れば知ることができる。
【0040】以下は、データの一例としてXMLドキュ
メントの形式での情報を例にとり、共有データ管理部4
を介して、このXMLドキュメントの形式で情報が記録
されているファイルを更新するトランザクション処理シ
ステムに本発明を適応した場合についてより具体的に説
明する。
【0041】なお、XMLに関しては、“Extens
ible Markup Language (XM
L) 1.0”(W3C Recommendatio
n 10−Feb−98)に開示されている。
【0042】この場合、トランザクション処理システム
では、「キー」とそれに対する「値」のペアの集合を、
XMLのドキュメントの形式でファイルに記録して管理
している。このドキュメントは、キーを指定してその値
を検索するという、一般的なデータベースとして使用す
ることができる。
【0043】図4に、そのようなドキュメントの一例を
示す。この例のXMLドキュメントでは、<key>と
</key>のタグで囲まれた部分に「キー」を保持
し、<value>と</value>のタグで囲まれ
た部分に「値」を保持し、そのペアを<entry>と
</entry>のタグで囲んだエントリを作り、それ
らが複数集まったものを、最も外の<KVtable>
と</KVtable>のタグが囲んでいる。実際に
は、XMLドキュメントは先頭部分に<?xml>で始
まるプロローグ部を持つが、ここでは省略する。なお、
XMLの用語として、<key>のような開始タグと、
</key>のようなそれに対応する終了タグで囲まれ
た部分を、エレメントと呼ぶ。
【0044】図4に例示したXMLドキュメントでは、
キー「APPLE」に対応する値は「400円」であ
り、キー「BISCUIT」に対応する値は「250
円」であり、キー「CHOCOLATE」に対応する値
は「200円」であり、キー「GRAPE」に対応する
値は「600円」になっている。
【0045】このXMLドキュメントのファイルに対し
て、トランザクションを実行するアプリケーションプロ
グラム2およびトランザクションマネージャ8は、共有
データ管理部4を介して、READ(txid,ke
y)とUPDATE(txid,key,value)
とREMOVE(txid,key)とCOMMIT
(txid)とABORT(txid)の5種類の操作
ができるものとする。本実施形態では、READ、UP
DATE、REMOVEはアプリケーションプログラム
2が指示し、COMMITとABORTはトランザクシ
ョンマネージャ8が指示するものとする。なお、前述し
たように、トランザクションマネージャ8が存在せず、
アプリケーションプログラム2がCOMMITやABO
RTも指示するように実施することもできる。
【0046】READ(txid,key)は、txi
dで指定したトランザクション識別子を持つトランザク
ションが、keyで指定したエントリの値を読み出す操
作である。
【0047】UPDATE(txid,key,val
ue)は、txidで指定したトランザクション識別子
を持つトランザクションが、keyで指定したエントリ
の値をvalueで指定した値に更新する操作である。
keyで指定したエントリが無い場合には、新しくエン
トリを作成する。
【0048】REMOVE(txid,key)は、t
xidで指定したトランザクション識別子を持つトラン
ザクションが、keyで指定したエントリを削除する操
作である。
【0049】COMMIT(txid)は、txidで
指定したトランザクション識別子を持つトランザクショ
ンが行ったファイルの内容の変更を、ディスク上のファ
イルに書き戻して、変更を永久的なものにする。
【0050】ABORT(txid)は、txidで指
定したトランザクション識別子を持つトランザクション
が行ったファイルの内容の変更を、すべて取り消して無
かったものにする。
【0051】これらの5つの操作のうち、READはフ
ァイルの内容を変更しない操作であるのに対し、UPD
ATEとREMOVEはファイルの内容を変更する操作
である。COMMITとABORTは、トランザクショ
ンの処理結果をコミットすなわち正しく完了した状態に
するか、アボートすなわち処理結果をキャンセルして処
理開始前の状態にする操作である。
【0052】図4のXMLドキュメントに対して、3つ
のトランザクション(txid=1のトランザクション
(1)、txid=2のトランザクション(2)、tx
id=3のトランザクション(3)とする)が、以下に
示すように並行にアクセスする場合の動作を例に、本実
施形態のトランザクション処理システムの動作を説明す
る。 [1] UPDATE(1,ICECREAM,450円) [2] UPDATE(3,APPLE,500円) [3] REMOVE(2,BISCUIT) [4] UPDATE(2,CHOCOLATE,300円) [5] REMOVE(1,GRAPE) [6] UPDATE(2,KIWIFRUIT,300円) [7] COMMIT(3) [8] COMMIT(1) [9] ABORT(2) 本トランザクション処理システムが図4のファイルを更
新する場合、まず、共有データ管理部4から指示された
ファイルシステム6が、ハードディスク10にあるファ
イルの内容をバッファ領域62に読み出す。トランザク
ションがコミットするまでは、ファイルの更新はバッフ
ァ領域62にあるコピーに対してのみ行い、ハードディ
スク10には書き戻さない。
【0053】[1]最初に、UPDATE(1,ICE
CREAM,450円)で、トランザクション(1)が
キー「ICECREAM」を追加してその値を「450
円」にする。このとき、ファイルがまだバッファ領域6
2に無ければ読み込む。その後、バッファ上のデータに
対して、図5に示すようにバッファ領域62のデータを
変更する。ここでは、新しい「ICECREAM」をキ
ーにするエントリを追加し、その値を「450円」にす
る。さらに、このエントリがトランザクション(1)に
よって更新中であることを示すために、<entry>
タグの属性としてTXIDとTXSTATEの2つを記
録しておく。属性TXIDの値には変更を行ったトラン
ザクションのトランザクション識別子を、属性TXST
ATEには変更の種類を記録しておき、COMMITあ
るいはABORTの処理時にこの情報を使用する。ここ
では、TXID属性の値としてトランザクション識別子
「1」と、TXSTATE属性の値として更新中を示す
「UPDATE」を持たせる。
【0054】[2]続いて、UPDATE(3,APP
LE,500円)で、トランザクション(3)がキー
「APPLE」の値を「500円」に変更する。このと
きは、バッファ領域62のデータを図6に示すように変
更する。ここでは、「APPLE」をキーにするエント
リの<value>タグを<oldvalue>タグに
変更して残しておき、新しい値「500円」を<val
ue>タグで囲ったエレメントを作成してエントリに追
加する。さらに、エントリのには、TXID属性の値と
してトランザクション識別子「3」と、TXSTATE
属性の値として更新中を示す「UPDATE」を持たせ
る。
【0055】[3]次に、REMOVE(2,BISC
UIT)で、トランザクション(2)がキー「BISC
UIT」のエントリを削除する。このときは、バッファ
領域62のデータを図7に示すように変更する。ここで
は、「BISCUIT」をキーにするエントリの、TX
ID属性の値にトランザクション識別子「2」を、TX
STATE属性の値に削除されたことを示す「REMO
VE」を持たせる。
【0056】[4]次に、UPDATE(2,CHOC
OLATE,300円)でトランザクション(2)がキ
ー「CHOCOLATE」の値を300円に変更した後
のバッファ領域62のデータは、これまでと同様の処理
を行って図8のようになる。
【0057】[5]次に、REMOVE(1,GRAP
E)でトランザクション(1)がキー「GRAPE」の
エントリを削除した後のバッファ領域62のデータは、
これまでと同様の処理を行って図9のようになる。
【0058】[6]次に、UPDATE(2,KIWI
FRUIT,300円)でトランザクション(2)がキ
ー「KIWIFRUIT」に対応するエントリを追加し
てその値を「300円」にした後のバッファ領域62の
データは、これまでと同様の処理を行って図10のよう
になる。
【0059】[7]続いて、COMMIT(3)でトラ
ンザクション(3)のコミット処理が起動される。
【0060】このように複数のトランザクションが同じ
ファイルを更新している場合のコミット処理の方式につ
いて説明する。
【0061】図10のようにファイルのデータがバッフ
ァ領域62上で変更されている状態で、COMMIT
(3)でトランザクション(3)のコミット処理が起動
されたとする。このとき、図11に示すように、トラン
ザクション(3)による変更を、エレメントにTXID
やTXSTATEがついたり<oldvalue>タグ
を持っている一時的な状態から、それらを削除してハー
ドディスク10に書き戻しても良い正しく更新された状
態に変更する。こうしてトランザクション(3)の変更
を反映したファイルのデータができると、それを書き戻
してハードディスク10にある元のファイルを置き換え
る。このとき、本実施形態では、トランザクション
(1)やトランザクション(2)による変更途中の状態
のデータは、その変更途中のままハードディスク10に
書き戻すことができる(後述するように、変更途中の状
態のデータにはその更新を取り消すのに必要な情報を付
加しているので、次に読み出したときに更新を取り消す
ための処理を行うことができる)。
【0062】[8]次に、COMMIT(1)でトラン
ザクション(1)のコミット処理が起動されたとする。
このとき、図12に示すように、トランザクション
(1)による変更を反映させ、それをハードディスク1
0に書き戻す。
【0063】[9]次に、ABORT(2)でトランザ
クション(2)がアボートしたとする。このとき図13
に示すように、バッファ領域62にあるファイルのデー
タからトランザクション(2)による変更を取り消す。
【0064】以下では、これまでの例で説明した各々の
操作の処理手順を説明する。
【0065】まず、READの処理手順について説明す
る。
【0066】READの操作は指定されたキーに対応す
るエントリの値を読み出すだけなので簡単である。ただ
し、READの実装には、そのシステムの使い方に応じ
て2通りの場合がある。他のトランザクションが更新中
でなければ値を読み出せるという点に関しては共通であ
るが、あるトランザクションが読み出したエントリを、
そのトランザクションが終了する前に他のトランザクシ
ョンが更新できるか否かで2通りの方式に分かれる。つ
まり、1つの方式は、更新できるという解釈で、REA
Dに関しては何の排他制御もしないという方式である。
もう1つの方式は、更新できないと言う解釈で、広く知
られたREAD/WRITEロックのセマンティクスに
従って排他制御する方式である。すなわち、同じトラン
ザクションによるREADと更新は両立するが、異なる
トランザクションによるREADと更新は両立せず、ま
た、異なるトランザクションのREADどうしは両立す
るというものである。排他制御をする後者の方式は、排
他制御をしない前者の方式を包含するので、ここでは後
者の方式の場合の処理手順を説明する。排他制御しない
前者の方式は、後者の方式においてREADについては
何も制御しないのと等価である。
【0067】図14にREAD(txid,key)の
処理手順の一例を示す。
【0068】まず、キーの値がkeyに指定されたもの
と同じエントリを探す(ステップS11)。
【0069】エントリが見つかったならば(ステップS
12)、そのエントリにTXSTATE属性が付いてい
るか否か、またTXSTATE属性が付いているならば
そのTXSTATE属性が「READ」「UPDAT
E」「REMOVE」のいずれであるかを調べる(ステ
ップS13)。
【0070】TXSTATE属性が付いていない場合
は、誰もアクセスしていないので、そのエントリにTX
ID属性とTXSTATE属性を付け、TXID属性の
値は「txid」に、TXSTATE属性の値は「RE
AD」にし(ステップS14)、<value>部の値
を結果として返す(ステップS15)。
【0071】TXSTATE属性の値が「READ」の
場合は、そのTXID属性にまだ「txid」が入って
いなければ追加し(ステップS16,S17)、<va
lue>部の値を結果として返す(ステップS18)。
【0072】TXSTATE属性の値が「UPDAT
E」の場合は、同じトランザクションが変更した値であ
れば読めるので(ステップS19)、<value>部
の値を結果として返す(ステップS20)。そうでない
場合には、他のトランザクションが使用中で読めないこ
とを知らせる。
【0073】TXSTATE属性の値が「REMOV
E」ならば(ステップS13)、無いものを読もうとし
ているのでエラーになる。
【0074】なお、エントリが見つからなかったならば
(ステップS12)、エラーとなる。
【0075】図15に、図4の状態のファイルのデータ
に対して、READ(4,CHOCOLATE)でトラ
ンザクション4がキー「CHOCOLATE」の値を読
み出した直後のバッファ領域62上のデータの状態を示
す。
【0076】通常、TXIDの値はトランザクション識
別子を1つ持っているが、TXSTATE属性の値が
「READ」の場合のTXID属性にはトランザクショ
ン識別子のリストを持つことが出来る。これは、複数の
トランザクションが同時に読み出すことが出来るためで
ある。例えば、トランザクション識別子が1と4と5の
トランザクションがREADしている場合、そのTXI
D属性の値は「1 45」のようなリストになってい
る。
【0077】次に、UPDATEの処理手順について説
明する。
【0078】図16に、UPDATE(txid,ke
y,value)の処理手順の一例を示す。
【0079】まず、キーの値がkeyに指定されたもの
と同じエントリを探す(ステップS21)。
【0080】エントリが見つかったならば(ステップS
22)、そのエントリにTXSTATE属性が付いてい
るか否か、またTXSTATE属性が付いているならば
そのTXSTATE属性が「READ」「UPDAT
E」「REMOVE」のいずれであるかを調べる(ステ
ップS23)。
【0081】TXSTATE属性が付いていない場合
は、誰もアクセスしていないので、そのエントリにTX
ID属性とTXSTATE属性を付け、TXID属性の
値は「txid」に、TXSTATE属性の値は「UP
DATE」にし、現在の<value>部のタグ名を<
oldvalue>に変更して退避し、新しく<val
ue>部を作ってその値をUPDATEの第3引数のv
alueに指定されたものにする(ステップS24)。
【0082】TXSTATE属性の値が「READ」の
場合は、同じトランザクションだけがREADしている
場合に限って更新できる。この場合は(ステップS2
5)、TXSTATE属性の値を「UPDATE」に変
更し、現在の<value>部のタグ名を<oldva
lue>に変更して退避し、新しく<value>部を
作ってその値をUPDATEの第3引数のvalueに
指定されたものにする(ステップS26)。他のトラン
ザクションがREAD中であれば、UPDATEするこ
とができないので、使用中であることを知らせる。
【0083】TXSTATE属性の値が「UPDAT
E」の場合は、同じトランザクションが更新したエント
リであれば(ステップS27)、その<value>部
の値をUPDATEの第3引数のvalueに指定され
たものに変更する(ステップS28)。他のトランザク
ションがUPDATE中であればUPDATEすること
ができないので、使用中であることを知らせる。
【0084】TXSTATE属性の値が「REMOV
E」の場合は(ステップS23)、無いものを更新しよ
うとしているのでエラーになる。
【0085】なお、キーの値がkeyに指定されたもの
と同じエントリが見つからない場合は(ステップS2
2)、新しくエントリを作成し、<key>部の値と<
value>部の値を、それぞれUPDATEの第2引
数と第3引数に指定されたものにしたエントリを作成
し、そのTXID属性の値を「txid」に、TXST
ATE属性の値を「UPDATE」にする(ステップS
29)。
【0086】次に、REMOVEの処理手順について説
明する。
【0087】図17に、REMOVE(txid,ke
y)の処理手順の一例を示す。
【0088】まず、キーの値がkeyに指定されたもの
と同じエントリを探す(ステップS31)。
【0089】エントリが見つかったならば(ステップS
32)、そのエントリにTXSTATE属性が付いてい
るか否か、またTXSTATE属性が付いているならば
そのTXSTATE属性が「READ」「UPDAT
E」「REMOVE」のいずれであるかを調べる(ステ
ップS33)。
【0090】TXSTATE属性が付いていない場合
は、誰もアクセスしていないので、TXID属性の値を
「txid」に、TXSTATE属性の値を「REMO
VE」にする(ステップS34)。
【0091】TXSTATE属性の値が「READ」の
場合には、同じトランザクションだけがREADしてい
る場合に限ってREMOVEできる。この場合は(ステ
ップS35)、TXSTATE属性の値を「REMOV
E」に変更する(ステップS36)。他のトランザクシ
ョンがREAD中であればREMOVEすることができ
ないので、使用中であることを知らせる。
【0092】TXSTATE属性の値が「UPDAT
E」の場合は、同じトランザクションが更新したエント
リであれば(ステップS37)、REMOVEできる。
このとき、<oldvalue>部があるかどうかで、
そのエントリがこのトランザクションで新しく作られた
ものか、以前から存在していたものかがわかる。<ol
dvalue>部が無い場合には(ステップS38)、
このトランザクションが作成したエントリなので、即座
にエントリを削除してしまって良い(ステップS4
0)。そうでない場合には(ステップS38)、TXS
TATE属性の値を「REMOVE」に変更する(ステ
ップS39)。他のトランザクションがUPDATE中
であれば(ステップS37)、REMOVEすることが
できないので、使用中であることを知らせる。
【0093】TXSTATE属性の値が「REMOV
E」の場合は(ステップS33)、無いものを削除しよ
うとしているのでエラーになる。
【0094】なお、エントリが見つからなかったならば
(ステップS32)、エラーとなる。
【0095】次に、COMMITの処理手順について説
明する。
【0096】図18に、COMMIT(txid)の処
理手順の一例を示す。
【0097】COMMITの処理時には、ファイル中の
すべてのエントリに対して図18の手順で処理を行う。
【0098】まず、そのエントリのTXSTATE属性
の値を調べる(ステップS101)。
【0099】TXSTATE属性を持たない場合は、ど
のトランザクションもアクセスしていないので何もしな
くて良い。
【0100】TXSTATE属性が「READ」の場合
は、そのTXID属性の中にtxidが含まれていて
(ステップS102)、txid以外のトランザクショ
ン識別子も含まれていれば(ステップS103)、tx
idを抜く(ステップS104)。TXID属性がtx
idのみをもっている場合には(ステップS103)、
TXID属性とTXSTATE属性を削除する(ステッ
プS105)。
【0101】次に、TXSTATE属性の値が「UPD
ATE」の場合は、そのTXID属性の値がtxidと
同じであれば(ステップS106)、<oldvalu
e>部とTXID属性とTXSTATE属性を削除して
その更新を有効にする(ステップS107)。
【0102】TXSTATE属性がREMOVEの場合
は(ステップS101)、そのTXID属性の値がtx
idと同じであれば(ステップS108)、そのエント
リを削除する(ステップS109)。
【0103】すべてのエントリに関して以上の処理が終
了すれば、その時点のバッファ領域62上のデータをハ
ードディスク10上に書き戻して、ファイルを更新す
る。
【0104】ところで、COMMIT処理の最後に、共
有データ管理部4は、バッファ領域62上で更新したフ
ァイルをハードディスク10に書き込むように、ファイ
ルシステム6に指示する。このとき、このファイルの書
き込みは、コミットするトランザクションが更新した他
のファイルと同期してアトミックに書き込む必要があ
る。すなわち、トランザクションを実行するアプリケー
ションプログラム2は、共有データ管理部4を介さずに
ファイルシステム6に直接指示して複数のファイルの更
新を行っている可能性があり、また、共有データ管理部
4を介しても複数のファイルを更新している可能性があ
る(図2および図3参照)。トランザクションとしてア
トミックにコミットするためには、これらの複数のファ
イルへの更新がすべて完全に行われるなければならな
い。本実施形態のトランザクション処理システムでは、
ファイルシステム6は、トランザクション管理表61に
よって、アプリケーションプログラム2から直接指示さ
れて更新したファイルのリストをトランザクション毎に
管理しており、その情報を用いて、同じトランザクショ
ンが更新したファイルを一括してアトミックにハードデ
ィスク10に書き戻すことができる。
【0105】しかし、共有データ管理部4を介して操作
しているファイルに関しては、ファイルシステム6内で
はどのトランザクションとも関連しないファイルとして
管理されている。それらのファイルをどのトランザクシ
ョンのコミット時に書き戻せば良いかは、共有データ管
理部4がCOMMITの処理時に判断する。
【0106】そこで、共有データ管理部4がどのトラン
ザクションとも関連せずにオープンして更新したファイ
ルに対して、特定のトランザクションのコミット時に同
期してアトミックにハードディスク10に書き戻すこと
を指示する機能を、ファイルシステム6に持たせる。C
OMMITの処理を行う共有データ管理部4は、指定さ
れたトランザクション識別子のトランザクションによる
更新をファイルに反映させた後、そのファイルを指定さ
れたトランザクション識別子のトランザクションと同期
してハードディスク10に書き戻すように、ファイルシ
ステム6に指示する。ファイルシステム6は、このよう
にして指定されたファイルを、指定されたトランザクシ
ョン識別子のトランザクションのコミット時に、トラン
ザクション管理表61にあるそのトランザクションが更
新したファイルと同時に、アトミックにハードディスク
10に書き戻す。
【0107】ただし、ファイルシステム6のコミット処
理が終了後は、トランザクションを実行するアプリケー
ションプログラム2が直接ファイルシステム6に指示し
て更新したファイルの情報(トランザクション管理表6
1のエントリやバッファ領域62にあるファイルのイメ
ージ)は不要になる。一方、共有データ管理部4が特定
のトランザクションに関連せずに更新しているファイル
は、その後も他のトランザクションによって更新が続け
られるため、どのトランザクションとも関連しない状態
のまま共有データ管理部4によって使い続けられる。そ
のため、ファイルシステム6はそれらのファイルに関す
る情報は維持しつづける。
【0108】次に、ABORTの処理手順について説明
する。
【0109】図19に、ABORT(txid)の処理
手順の一例を示す。
【0110】ABORTの処理時には、すべてのエント
リに対して図19の手順で処理を行う。
【0111】まず、そのエントリのTXSTATE属性
の値を調べる(ステップS111)。
【0112】TXSTATE属性を持たない場合は、ど
のトランザクションもアクセスしていないので何もしな
くて良い。
【0113】TXSTATE属性が「READ」の場合
は、そのTXID属性の中にtxidが含まれていて
(ステップS112)、txid以外のトランザクショ
ン識別子も含まれていれば(ステップS113)、tx
idを抜く(ステップS104)。TXID属性がtx
idのみをもっている場合には(ステップS113)、
TXID属性とTXSTATE属性を削除する(ステッ
プS115)。
【0114】TXSTATE属性の値が「UPDAT
E」の場合は、そのTXID属性の値がtxidと同じ
であれば(ステップS116)、そのエントリのUPD
ATEを取り消す操作を行う。このとき、そのエントリ
に<oldvalue>部があれば(ステップS11
7)、現在の<value>部を削除して<oldva
lue>部のタグ名を<value>に戻すことで更新
前の値に戻すとともに、TXID属性とTXSTATE
属性を削除する(ステップS118)。そのエントリに
<oldvalue>部が無い場合は(ステップS11
7)、このトランザクションで新しく作成したエントリ
であるので、エントリを削除する(ステップS11
9)。
【0115】TXSTATE属性がREMOVEの場合
は(ステップS111)、そのTXID属性の値がtx
idと同じであれば(ステップS120)、TXID属
性とTXSTATE属性を削除して、REMOVEを取
り消す(ステップS121)。
【0116】ところで、ABORTの場合、アボートす
るトランザクションによるファイルの更新を、バッファ
領域62上で取り消す。このとき、同じファイルを更新
していて既にコミットした他のトランザクションがあっ
た場合には、アボートするトランザクションによる更新
中の状態もファイルに書きこまれてしまっている可能性
がある。しかし、ABORT処理時にバッファ領域62
上で取り消した結果のファイルをハードディスク10に
書き込むことは、必ずしも必要無い。なぜなら、次に同
じファイルを他のトランザクションが更新してコミット
すれば、アボートしたトランザクションによる更新の取
り消しはハードディスク10上に正しく反映される。ま
た、たとえ次にどのトランザクションも更新せずに、そ
のまま計算機の障害等で忘れ去られてしまった場合で
も、後で述べるリカバリ処理によって、次にそのファイ
ルをオープンする時に、ハードディスク10上のファイ
ルに残っているコミットしていないトランザクションに
よる更新途中の状態は取り消される。
【0117】次に、リカバリの処理手順について説明す
る。
【0118】本実施形態のトランザクション処理システ
ムでは、コミットしていないトランザクションによって
更新途中のファイルの状態がハードディスク10に書き
戻される。そのため、障害で計算機がダウンした場合に
は、更新途中の状態が残るので、リカバリ処理を行って
更新途中で残された変更を取り消さなくてはいけない。
従来のトランザクション処理方式では、このようなリカ
バリ処理は障害が起こって再起動した直後にまとめて行
わなければならない。そのため、障害直後の再起動のオ
ーバヘッドは大きい。しかし、本実施形態のトランザク
ション処理方式では、リカバリ処理は、次にそのファイ
ルをハードディスク10から読み出す時点で良い。
【0119】図20に、リカバリの処理手順の一例を示
す。
【0120】共有データ管理部4がまだバッファ領域6
2にないファイルを参照するためにオープン処理をファ
イルシステム6に指示すると、ファイルシステム6はそ
のファイルをハードディスク10から読み出してバッフ
ァ領域62にコピーする。その時点で共有データ管理部
4は、すべてのエントリに対して図20に示す手順でリ
カバリ処理を実行する。
【0121】まず、そのエントリのTXSTATE属性
を調べる(ステップS201)。
【0122】TXSTATE属性を持たない場合は、ど
のトランザクションもアクセスしていないので何もしな
くて良い。
【0123】TXSTATE属性の値が「READ」の
場合は、TXID属性とTXSTATE属性を削除する
だけで良い(ステップS202)。
【0124】TXSTATE属性の値が「UPDAT
E」の場合は、いずれかのトランザクションが更新して
いる途中で障害が発生したことを示しているので、それ
らをアボートする。このときの動作は、そのエントリに
<oldvalue>部があるかどうかで異なる。<o
ldvalue>部があれば(ステップS203)、そ
のトランザクションの開始以前から存在していたエント
リであるので、まず現在の<value>部を削除し、
<oldvalue>部のタグ名を<value>に変
更して値を元に戻し、さらにTXID属性とTXSTA
TE属性を削除する(ステップS204)。<oldv
alue>部が無い場合は(ステップS203)、この
トランザクションが作成したエントリであるので、エン
トリ全体を削除する(ステップS205)。
【0125】TXSTATE属性の値が「REMOV
E」の場合は(ステップS201)、TXID属性とT
XSTATE属性を削除するだけでREMOVEをキャ
ンセルすることが出来る(ステップS206)。
【0126】ところで、ファイルをディスクから読み出
す度にこのようなリカバリ処理を行うのでは、非常にオ
ーバーヘッドが大きい。そこで、ファイルを書き出すと
きにそのファイルが更新途中の状態を含んでいるかどう
かを簡単に識別できる情報を付けておくことで、このオ
ーバヘッドを無くすことが出来る。その方式は、例えば
図21に示すように、ドキュメントのルートのエレメン
トの属性として、現在いくつのトランザクションがファ
イルを更新中かを示す情報を持たせる。図21の例で
は、ルートである<KVtable>のTXNUMとい
う属性がそれを示しており、現在、トランザクション
(1)とトランザクション(2)の2つのトランザクシ
ョンが更新中であることを示している。こうしておく
と、最初にファイルをディスクから読みだして来た時
に、そのルートエレメントがTXNUMという属性を持
っていたら、そのファイル内のすべてのエントリに対し
て図20のリカバリ処理を実行する。もしTXNUMと
いう属性が無ければ、リカバリ処理は必要無い。
【0127】さて、これまでの説明では、エントリはル
ートエレントである<KVtable>の下にフラット
に記録していたが、例えば良く知られた二分木のような
構造を使って、検索を高速化するように実施することが
できる。図22は、そのように実施した場合のファイル
のデータの例である。この例では、エントリには<ke
y>と<value>以外に、<less>と<gre
ater>というエレメントを持つ。そのエレメントの
キーより小さなキーを持つエントリは<less>の下
に、大きなキーを持つエントリは<greater>の
下にくるように、二分木を構成している。この場合も、
トランザクションによるUPDATEやREMOVEな
どの更新はフラットな場合と同様に扱うことが出来る。
ただし、エントリの追加や削除によって木の構成を組み
換える処理が必要になる。この処理は通常の木構造のノ
ードの追加/削除とまったく同じ処理である。木構造の
組み換え時には、AVL木のような手法を使ってうまく
木がバランスするように組み換えたり、アクセス頻度の
多いエントリが木のルートに近い場所に来るように組み
換えたりするように実施することもできる。
【0128】また、本発明は、良く知られたB−TRE
Eのような管理構造を使って、ファイルを分割して管理
するように実施することも出来る。図23/図24/図
25/図26にその例を示す。ここでは、一つのファイ
ルには最大6個のエントリを収容し、それ以上にエント
リが増えるとファイルを分割するというような、B−T
REEと同じアルゴリズムでエントリの追加/削除の処
理を行うものとする。図23/図24/図25/図26
の例では、FILE001がルートになるファイル、F
ILE002,FILE003,FILE004がその
下にあるファイルである。
【0129】図27に、このように一纏まりの情報を複
数のファイルに分割して記録・管理するようにしたトラ
ンザクション処理システムの構成例を示す。
【0130】図27の構成は、図1の構成と比べて、共
有データ管理部4が更新グループ表42を持つ点が異な
る。後に説明するように、複数のファイル間で情報を移
動してファイル間の構造を変更した場合に、それらのフ
ァイルをコミット時に同時にハードディスク10に書き
戻さなければならない。更新グループ表42は、そのよ
うなコミット時に同時にハードディスク10に書き戻し
たりあるいは削除したりする必要のあるファイルのグル
ープを管理するための表である。
【0131】図28に更新グループ表42の例を示す。
この更新グループ表には、コミット時に同時に書き戻し
たり削除したりすべきファイルのグループ毎に、そのメ
ンバが記録されている。図28では、例えば、FILE
001とFILE002とFILE005がグループに
なっている。
【0132】さて、図23/図24/図25/図26の
FILE001から始めて「SESAME」をキーとす
るエントリを探す手順は、FILE001のルートから
始める。まずキーを「KIWIFRUIT」と比べると
それよりも大きい。次にキーを<greater>側の
「ROSEMARY」と比べるとそれよりも大きい。次
に<greater>側を見るとFILE004へのリ
ンクになっている。そこでFILE004に移って、キ
ーを「THYME」と比べるとそれよりも小さい。そこ
で<less>側を見ると、キーが「SESAME」の
エントリが見つかる。こうしてエントリが見つかれば、
あとはそれへの操作はこれまでの実施形態と同様に、T
XID属性とTXSTATE属性をつけて更新の途中状
態を回復可能な形式で保存して行く。
【0133】例えば、図23/図24/図25/図26
の状態のデータに対して、トランザクション(1)がキ
ー「ORANGE」のエントリの値を「250円」に更
新し、さらにキー「SESAME」のエントリの値を
「150円」に更新し、それと並行に動いているトラン
ザクション(2)がキー「VODKA」のエントリを削
除したとする。この状態で図23/図24/図25/図
26のデータは図29/図30のような状態になる。U
PDATEやREMOVEなどの更新途中の状態の持ち
方は、一つのファイルにすべてのエントリを入れる場合
と同じであり、更新したエントリにはTXIDとTXS
TATEの2つの属性をつけて管理する。
【0134】図29/図30の状態で、トランザクショ
ン(1)と(2)が順にコミットおよびアボートする場
合の動作例を説明する。
【0135】まず、トランザクション(1)のコミット
時には、トランザクション(1)によって更新されたエ
ントリはファイルFILE003とFILE004にの
み存在している。そこで、FILE003とFILE0
04に対してコミット処理を行った図31/図32の状
態のデータを作成し、これをトランザクション(1)に
よる他のファイルの更新と同時にハードディスク10に
書き戻す。このとき、FILE004にはトランザクシ
ョン(2)による更新途中の状態が含まれたまま書き戻
すのは、これまでの実施形態と同じである。
【0136】次に、トランザクション(2)のアボート
時には、トランザクション(2)によって更新されたエ
ントリはFILE004にのみ存在している。そこでF
ILE004に対してアボート処理を行った図33の状
態を作成して、アボート処理は終了する。アボート処理
時にはファイルのハードディスク10への書き戻しは必
要無いのは、これまでの実施形態と同じである。
【0137】さて、この状態で、新しくトランザクショ
ン(3)がキー「DODO」とキー「HOOPOE」の
エントリを追加し、それぞれの値を「5000000
円」と「980000円」にした後のデータの状態を、
図34/図35/図36に示す。ここでは、一つのファ
イルに入れることの出来るエントリの数は決まっている
ので、この更新例のように一つのファイルにその容量以
上のエントリを追加しようとした場合には、ファイル間
で組み換えが発生してエントリが移動する。図34/図
35/図36の例では、キー「DODO」とキー「HO
OPOE」の二つのエントリを追加しようとしたとこ
ろ、それらはどちらもFILE002への追加となる。
その結果FILE002の分割が行われて、新たにFI
LE005が作られてエントリが移動している。
【0138】このようにファイル間でエントリ情報の移
動が発生したり、新しいファイルが追加されたり、ある
いは逆にファイルが削除されたりすると、それらのファ
イルの更新は同時にハードディスク10へ反映させなけ
ればならない。そのために、本実施形態のトランザクシ
ョン処理システムの共有データ管理部4は、更新グルー
プ表42を管理している。図34/図35/図36の例
のように、FILE002へのエントリの追加によって
FILE002の分割が発生し、FILE001の更新
とFILE005の作成が発生した場合、共有データ管
理部4は更新グループ表42にFILE001とFIL
E002とFILE005をひとつのグループとして登
録する。
【0139】トランザクション(3)のコミットを行う
場合、トランザクション(3)が更新したエントリはF
ILE001とFILE005のみに存在するが、更新
グループ表42を参照することで、FILE002も同
時に書き戻さなければならないことがわかる。そこで、
図37/図38に示すようにコミット処理を行ったFI
LE001とFILE005に加えてFILE002の
3つのファイルをハードディスク10に書き戻す。
【0140】このように複数のファイルに分割してデー
タを持つように本発明を実施する場合には、様々な基準
で一つのファイルに入れられるエントリの数を制限する
ことが出来る。そのような基準としては、図34/図3
5/図36の例のように一つのファイル内のエントリの
数で制限する方式、ファイルの物理的なサイズで制限す
る方式、追加削除の頻度等の情報によって最大のエント
リ数を変更する方式、それらの組み合わせなど、様々な
方式が考えられる。
【0141】本実施形態のように複数のファイルに分割
してデータを記憶する方式は、エントリの数が大きくな
ったときでも、その一部分しか更新していないなら、コ
ミット時にディスクに書き出すデータ量を減らせるとい
う効果がある。すべてのエントリを一つのファイルに入
れる方式では、大きなファイルの一部しか変更していな
い場合でも、コミット時にファイル全体をディスクに書
き戻す必要がある。
【0142】さて、これまでは、キーと値とのペアとい
うデータベース的な構造を持つデータに対して本発明を
適用する場合を例とって説明してきた。以下では、他の
例として、より一般的なXMLドキュメントに対して本
発明を適用する場合について説明する。
【0143】図39は、一般的なXMLのドキュメント
の例である。このドキュメントに対して、トランザクシ
ョン(1)が「<title>名古屋</title
>」の<chapter>の<author>を「味噌
かつ」に変更し、トランザクション(2)が「<cha
pter><title>博多</title><au
thor>からし明太子</author></cha
pter>」を追加した状態のデータが図40である。
【0144】この後、トランザクション(1)のコミッ
ト時にデータを図41の状態に更新し、これをディスク
に書き戻す。
【0145】さらに、トランザクション(2)のコミッ
ト時にはデータを図42の状態に更新し、これをディス
クに書き戻す。
【0146】この一般的なXMLドキュメントを対象に
した実施形態でも、障害発生によって更新途中で残され
たファイルは、次にディスクから読み出した時にチェッ
クし、TXSTATEがADDのエレメントは削除して
TXSTATEがREMOVEのエレメントは残すよう
なリカバリ処理を行うことで、コミットしていないトラ
ンザクションによる一時的な更新を取り消すことが出来
る。
【0147】本実施形態によれば、並行に動作する複数
のトランザクションによるファイルの更新を、簡単な処
理手順で実現することができる。本実施形態によれば、
従来のWAL方式や、シャドウページ方式の上に特殊な
ログ管理を実装するときのように、データの更新時やコ
ミット処理時あるいはリカバリ時に複雑な処理を必要と
しない。
【0148】また、本実施形態では、障害発生後のリカ
バリ処理を、再起動時に集中して行う必要は無く、障害
で更新途中の状態は次にそのファイルを使う時点で行わ
れるため、リカバリ処理のオーバヘッドが小さい。
【0149】さらに、本実施形態では、1つのデータを
複数のファイルに分けて管理することで、ファイルの更
新のコミット時にディスクに書き戻すデータの量を減ら
すことができる。
【0150】なお、以上の各機能は、ソフトウェアとし
ても実現可能である。
【0151】また、本実施形態は、コンピュータに所定
の手段を実行させるための(あるいはコンピュータを所
定の手段として機能させるための、あるいはコンピュー
タに所定の機能を実現させるための)プログラムを記録
したコンピュータ読取り可能な記録媒体としても実施す
ることもできる。
【0152】本発明は、上述した実施の形態に限定され
るものではなく、その技術的範囲において種々変形して
実施することができる。
【0153】
【発明の効果】本発明によれば、並行に動作する複数の
トランザクションによるファイルの更新処理と障害時の
リカバリ処理を簡単に効率良く実現することができる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るトランザクション処
理システムの構成例を示す図
【図2】更新管理表の一例を示す図
【図3】トランザクション管理表の一例を示す図
【図4】XMLドキュメント(データファイル)の一例
を示す図
【図5】UPDATE(1,ICECREAM,450
円)の処理直後のデータの一例を示す図
【図6】UPDATE(3,APPLE,500円)の
処理直後のデータの一例を示す図
【図7】REMOVE(2,BISCUIT)の処理直
後のデータの一例を示す図
【図8】UPDATE(2,CHOCOLATE,30
0円)の処理直後のデータの一例を示す図
【図9】REMOVE(1,GRAPE)の処理直後の
データの一例を示す図
【図10】UPDATE(2,KIWIFRUIT,3
00円)の処理直後のデータの一例を示す図
【図11】COMMIT(3)の処理直後のデータの一
例を示す図
【図12】COMMIT(1)の処理直後のデータの一
例を示す図
【図13】ABORT(2)の処理直後のデータの一例
を示す図
【図14】READ(txid,key)の処理手順の
一例を示すフローチャート
【図15】READ(4,CHOCOLATE)の処理
直後のデータの一例を示す図
【図16】UPDATE(txid,key,valu
e)の処理手順の一例を示すフローチャート
【図17】REMOVE(txid,key)の処理手
順の一例を示すフローチャート
【図18】COMMIT(txid)の処理手順の一例
を示すフローチャート
【図19】ABORT(txid)の処理手順の一例を
示すフローチャート
【図20】リカバリの処理手順の一例を示すフローチャ
ート
【図21】トランザクションによる更新中情報を持つデ
ータの一例を示す図
【図22】二分木構造により検索を高速化するデータの
一例を示す図
【図23】複数ファイルに分割したデータ管理方式の一
例を示す図
【図24】複数ファイルに分割したデータ管理方式の一
例を示す図
【図25】複数ファイルに分割したデータ管理方式の一
例を示す図
【図26】複数ファイルに分割したデータ管理方式の一
例を示す図
【図27】本発明の一実施形態に係るトランザクション
処理システムの他の構成例を示す図
【図28】更新グループ表の一例を示す図
【図29】トランザクション(1)と(2)による更新
の例を示す図
【図30】トランザクション(1)と(2)による更新
の例を示す図
【図31】トランザクション(1)のコミット処理の例
を示す図
【図32】トランザクション(1)のコミット処理の例
を示す図
【図33】トランザクション(2)のアボート処理の例
を示す図
【図34】トランザクション(3)による更新の例を示
す図
【図35】トランザクション(3)による更新の例を示
す図
【図36】トランザクション(3)による更新の例を示
す図
【図37】トランザクション(3)のコミット処理の例
を示す図
【図38】トランザクション(3)のコミット処理の例
を示す図
【図39】一般的なXMLドキュメントの例を示す図
【図40】トランザクション(1)と(2)によるデー
タの更新例を示す図
【図41】トランザクション(1)コミット後のデータ
の一例を示す図
【図42】トランザクション(2)コミット後のデータ
の一例を示す図
【図43】従来のトランザクション処理システムの例を
示す図
【符号の説明】
2…アプリケーションプログラム 4…共有データ管理部 41…更新管理表 42…更新グループ表 6…ファイルシステム 61…トランザクション管理表 62…バッファ領域 8…トランザクションマネージャ 10…ハードディスク
フロントページの続き (72)発明者 岐津 俊樹 神奈川県川崎市幸区小向東芝町1番地 株 式会社東芝研究開発センター内 (72)発明者 前田 誠司 神奈川県川崎市幸区小向東芝町1番地 株 式会社東芝研究開発センター内 (72)発明者 矢尾 浩 神奈川県川崎市幸区小向東芝町1番地 株 式会社東芝研究開発センター内 (72)発明者 矢野 浩邦 神奈川県川崎市幸区小向東芝町1番地 株 式会社東芝研究開発センター内 Fターム(参考) 5B082 GB04

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】バッファ領域上に読み出した同一のファイ
    ルを更新対象として複数のトランザクションが処理を行
    い、 前記複数のトランザクションのうちの一つのトランザク
    ションのコミット時に、該一つのコミットするトランザ
    クションによる確定した更新内容と、他のコミットして
    いないトランザクションによる未確定の更新内容と、該
    未確定の更新を取り消すための情報とをファイル内容と
    して含む前記ファイルを、安定記憶装置に書き込むこと
    を特徴とするトランザクション処理方法。
  2. 【請求項2】前記他のコミットしていないトランザクシ
    ョンをコミットする時には、該他のこれからコミットす
    るトランザクションによる新たに確定した更新内容と、
    以前にコミットしたトランザクションによる既に確定し
    ている更新内容のうち該他のこれからコミットするトラ
    ンザクションによる新たに確定した更新内容とは競合し
    ないものとをファイル内容として含むファイルを、前記
    安定記憶装置に格納された前記ファイルに上書きするこ
    とを特徴とする請求項1に記載のトランザクション処理
    方法。
  3. 【請求項3】新しくファイルを前記安定記憶装置から読
    み出した時に、このファイルに、コミットしていないト
    ランザクションによる未確定の更新内容および該未確定
    の更新を取り消すための情報が含まれているか否かを調
    べ、 含まれている場合には、読み出した前記ファイルを前記
    情報を用いて前記コミットしていないトランザクション
    による更新がなかった状態に戻すことを特徴とする請求
    項1または2に記載のトランザクション処理方法。
  4. 【請求項4】前記一つのコミットするトランザクション
    が前記ファイルとは別のファイルをも更新対象として前
    記バッファ領域上で処理を行っていた場合には、前記フ
    ァイルの前記安定記憶装置への書き込みと同期させて、
    該一つのコミットするトランザクションによる前記別の
    ファイルに対する確定した更新内容をファイル内容とし
    て含む前記別のファイルを前記安定記憶装置に書き込む
    ことを特徴とする請求項1ないし3のいずれか1項に記
    載のトランザクション処理方法。
  5. 【請求項5】前記ファイルは、一纏まりの情報を分割し
    て記録した複数個のファイルの集合の中の一つのファイ
    ルであることを特徴とする請求項1ないし4のいずれか
    1項に記載のトランザクション処理方法。
  6. 【請求項6】一纏まりの情報を分割して記録した複数個
    のファイルの集合に対して二つ以上のトランザクション
    が前記バッファ領域上で更新を行い、 この二つ以上のトランザクションによる更新内容に基づ
    いて、前記バッファ領域上で、新しいファイルの追加、
    ファイル間の情報の移動および不要ファイルの削除のう
    ち少なくとも一つを行うことにより、前記複数個のファ
    イルそれぞれの大きさが予め定められた基準に従うよう
    に調整し、 前記一つのコミットするトランザクションが更新したフ
    ァイル、および該トランザクションによる更新に伴う前
    記調整の結果更新あるいは新規に作成されたファイルの
    うち、少なくとも一つのファイルに対して他のトランザ
    クションが更新を行っている場合には、該少なくとも一
    つのファイルを更新対象として複数のトランザクション
    が処理を行ったものとして、前記ファイルの前記安定記
    憶装置への書き込みを行うことを特徴とする請求項1な
    いし4のいずれか1項に記載のトランザクション処理方
    法。
  7. 【請求項7】トランザクションの処理対象となるファイ
    ルを安定記憶装置からバッファ領域上に読み出す手段
    と、 前記ファイルに対して複数のトランザクションのそれぞ
    れが行った更新の内容と該更新を取り消すための情報と
    を前記バッファ領域上で該ファイル内に書き込む手段
    と、 前記複数のトランザクションのうちの一つのトランザク
    ションのコミット時に、前記ファイル内に書き込まれた
    該一つのコミットするトランザクションによる更新の内
    容については該更新を取り消すための情報を削除するこ
    とにより確定させ、前記ファイル内に書き込まれた他の
    コミットしていないトランザクションによる更新の内容
    および該更新を取り消すための情報についてはそのまま
    とし、確定させた内容とそのままとした情報とをファイ
    ル内容として含む前記ファイルを、前記安定記憶装置に
    書き出す手段とを備えたことを特徴とするトランザクシ
    ョン処理システム。
  8. 【請求項8】トランザクションの処理対象となる一纏ま
    りの情報を分割して記録した複数個のファイルの集合を
    安定記憶装置からバッファ領域上に読み出す手段と、 前記ファイルの集合に対して複数のトランザクションの
    それぞれが行った更新の内容に基づいて、前記バッファ
    領域上で、該更新の内容と該更新を取り消すための情報
    とをファイル内に書き込むとともに、新しいファイルの
    追加、ファイル間の情報の移動および不要ファイルの削
    除のうち少なくとも一つを行うことにより、前記複数個
    のファイルそれぞれの大きさが予め定められた基準に従
    うように調整する手段と、 前記複数のトランザクションのうちの一つのトランザク
    ションのコミット時に、前記ファイル内に書き込まれた
    該一つのコミットするトランザクションによる更新の内
    容については該更新を取り消すための情報を削除するこ
    とにより確定させ、前記ファイルおよび前記調整の結果
    更新あるいは新規に作成されたファイルのうちの少なく
    とも一つのファイルに対して更新を行った他のコミット
    していないトランザクションによる、該少なくとも一つ
    のファイル内に書き込まれた更新の内容および該更新を
    取り消すための情報についてはそのままとし、確定させ
    た内容をファイル内容として含む前記ファイルとそのま
    まとした情報をファイル内容として含む前記少なくとも
    一つのファイルとを、前記安定記憶装置に書き出す手段
    とを備えたことを特徴とするトランザクション処理シス
    テム。
JP27626499A 1999-09-29 1999-09-29 トランザクション処理方法及びトランザクション処理システム Expired - Lifetime JP4237354B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP27626499A JP4237354B2 (ja) 1999-09-29 1999-09-29 トランザクション処理方法及びトランザクション処理システム
US09/660,461 US6519614B1 (en) 1999-09-29 2000-09-12 Transaction processing system using efficient file update processing and recovery processing
EP00307894.6A EP1089177B1 (en) 1999-09-29 2000-09-13 Transaction processing system using efficient file update processing and recovery processing
TW089118907A TW550474B (en) 1999-09-29 2000-09-15 Transaction processing system applying with efficient file updating and recovery processes
KR10-2000-0056689A KR100398753B1 (ko) 1999-09-29 2000-09-27 효과적인 파일 갱신 처리 및 복구 처리를 이용하는트랜잭션 처리 시스템
US10/307,974 US6834275B2 (en) 1999-09-29 2002-12-03 Transaction processing system using efficient file update processing and recovery processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP27626499A JP4237354B2 (ja) 1999-09-29 1999-09-29 トランザクション処理方法及びトランザクション処理システム

Publications (2)

Publication Number Publication Date
JP2001101045A true JP2001101045A (ja) 2001-04-13
JP4237354B2 JP4237354B2 (ja) 2009-03-11

Family

ID=17567023

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27626499A Expired - Lifetime JP4237354B2 (ja) 1999-09-29 1999-09-29 トランザクション処理方法及びトランザクション処理システム

Country Status (5)

Country Link
US (2) US6519614B1 (ja)
EP (1) EP1089177B1 (ja)
JP (1) JP4237354B2 (ja)
KR (1) KR100398753B1 (ja)
TW (1) TW550474B (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007265043A (ja) * 2006-03-28 2007-10-11 Nomura Research Institute Ltd スケジューラプログラム、サーバシステム、スケジューラ装置
JP2008225979A (ja) * 2007-03-14 2008-09-25 Hitachi Ltd 情報処理装置、プログラム及び情報処理方法
JP2011134143A (ja) * 2009-12-25 2011-07-07 Fujitsu Frontech Ltd 情報処理装置、情報処理方法、および情報処理プログラム
WO2014068820A1 (ja) * 2012-10-29 2014-05-08 日本電気株式会社 トランザクションシステム

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4237354B2 (ja) * 1999-09-29 2009-03-11 株式会社東芝 トランザクション処理方法及びトランザクション処理システム
US7512635B1 (en) * 2000-12-18 2009-03-31 Bmc Software, Inc. System and method for updating information on a computer system using a limited amount of space
US7555500B2 (en) * 2001-02-15 2009-06-30 Teradata Us, Inc. Optimized end transaction processing
KR100625595B1 (ko) * 2001-05-28 2006-09-20 한국전자통신연구원 트랜잭션 처리 시스템의 병렬 로깅 방법 및 트랜잭션 로그 처리 시스템
US6857053B2 (en) * 2002-04-10 2005-02-15 International Business Machines Corporation Method, system, and program for backing up objects by creating groups of objects
US7430740B1 (en) * 2002-04-12 2008-09-30 724 Solutions Software, Inc Process group resource manager
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
US20040230893A1 (en) * 2003-05-16 2004-11-18 Dethe Elza Method and system for enabling collaborative authoring of hierarchical documents with node privileges
US7243088B2 (en) * 2003-08-06 2007-07-10 Oracle International Corporation Database management system with efficient version control
US7490113B2 (en) * 2003-08-27 2009-02-10 International Business Machines Corporation Database log capture that publishes transactions to multiple targets to handle unavailable targets by separating the publishing of subscriptions and subsequently recombining the publishing
US7269588B1 (en) 2003-09-24 2007-09-11 Oracle International Corporation Neighborhood locking technique for increasing concurrency among transactions
US7555481B1 (en) 2003-10-28 2009-06-30 Oracle Corporation Method and apparatus for increasing transaction concurrency by early release of locks in groups
US7730489B1 (en) * 2003-12-10 2010-06-01 Oracle America, Inc. Horizontally scalable and reliable distributed transaction management in a clustered application server environment
US7739244B2 (en) * 2004-10-14 2010-06-15 Oracle International Corporation Operating logging for online recovery in shared memory information systems
JP2006163596A (ja) * 2004-12-03 2006-06-22 Internatl Business Mach Corp <Ibm> 情報処理システム、制御方法、及びプログラム
US7539694B1 (en) 2005-02-04 2009-05-26 Marvell International Ltd. Concurrently searching and manipulating binary trees
GB0506059D0 (en) * 2005-03-24 2005-05-04 Ibm Methods and apparatus for switching between data streams
US20060265485A1 (en) * 2005-05-17 2006-11-23 Chai Sek M Method and apparatus for controlling data transfer in a processing system
US8112396B2 (en) * 2006-06-07 2012-02-07 Emc Corporation Backup and recovery of integrated linked databases
US7860847B2 (en) * 2006-11-17 2010-12-28 Microsoft Corporation Exception ordering in contention management to support speculative sequential semantics
US8024714B2 (en) * 2006-11-17 2011-09-20 Microsoft Corporation Parallelizing sequential frameworks using transactions
US8010550B2 (en) * 2006-11-17 2011-08-30 Microsoft Corporation Parallelizing sequential frameworks using transactions
US20080319878A1 (en) * 2007-06-22 2008-12-25 Thorsten Glebe Dynamic Time Series Update Method
BRPI0817473A2 (pt) 2007-09-28 2017-05-16 Xcerion Ab plataforma de aplicativo para executar aplicativos
KR101583716B1 (ko) 2009-01-30 2016-01-08 삼성전자주식회사 비트 로깅을 이용한 데이터 복구 방법 및 그 장치
US9325802B2 (en) * 2009-07-16 2016-04-26 Microsoft Technology Licensing, Llc Hierarchical scale unit values for storing instances of data among nodes of a distributed store
KR101587995B1 (ko) * 2009-10-28 2016-01-22 삼성전자주식회사 적응적 로깅 장치 및 방법
US20120222051A1 (en) * 2011-02-25 2012-08-30 Microsoft Corporation Shared resource access verification
CN102131002B (zh) * 2011-03-29 2016-10-05 华为终端有限公司 一种手机数据处理方法和装置
US20160275089A1 (en) * 2015-03-17 2016-09-22 Netapp, Inc. Methods for implementing nosql database snapshots and devices thereof
KR102779712B1 (ko) * 2018-09-18 2025-03-12 한국전자통신연구원 컨트롤러기반 복구기술을 위한 장애 (fault) 이벤트 처리 방법
US20200092160A1 (en) * 2018-09-18 2020-03-19 Electronics And Telecommunications Research Institute Fault event management method for controller-based restoration
EP4133379B1 (en) * 2020-04-08 2023-12-27 nCipher Security Limited A device, a method of performing a file transaction, and a method of performing an access operation
KR102472878B1 (ko) * 2020-11-27 2022-12-01 이화여자대학교 산학협력단 가상 머신 환경에서의 블록 커밋 방법 및 그 방법을 수행하는 가상화 시스템
KR102644923B1 (ko) 2020-12-01 2024-03-08 김동현 롤타입 방충망이 구비된 창틀
JP7621915B2 (ja) * 2021-09-06 2025-01-27 キオクシア株式会社 情報処理装置

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4791556A (en) * 1984-08-29 1988-12-13 Vilkaitis John V Method for operating a computer which searches for operational symbols and executes functions corresponding to the operational symbols in response to user inputted signal
US4945474A (en) * 1988-04-08 1990-07-31 Internatinal Business Machines Corporation Method for restoring a database after I/O error employing write-ahead logging protocols
ATE148241T1 (de) * 1989-06-13 1997-02-15 Ibm Verfahren zum entfernen unbestätigter änderungen an gespeicherten daten durch ein datenbankverwaltungssystem
US5247672A (en) * 1990-02-15 1993-09-21 International Business Machines Corporation Transaction processing system and method with reduced locking
US5201044A (en) * 1990-04-16 1993-04-06 International Business Machines Corporation Data processing method for file status recovery includes providing a log file of atomic transactions that may span both volatile and non volatile memory
US5319773A (en) * 1990-05-16 1994-06-07 International Business Machines Corporation Asynchronous resynchronization of a commit procedure
EP0516900B1 (en) * 1991-06-04 1996-05-01 International Business Machines Corporation Data backup and recovery in a data processing system
US5504899A (en) * 1991-10-17 1996-04-02 Digital Equipment Corporation Guaranteeing global serializability by applying commitment ordering selectively to global transactions
JPH05233570A (ja) * 1991-12-26 1993-09-10 Internatl Business Mach Corp <Ibm> 異オペレーティング・システム間分散データ処理システム
US5522066A (en) * 1992-04-16 1996-05-28 Industrial Technology Research Institute Interface for accessing multiple records stored in different file system formats
US5452445A (en) * 1992-04-30 1995-09-19 Oracle Corporation Two-pass multi-version read consistency
US5530848A (en) * 1992-10-15 1996-06-25 The Dow Chemical Company System and method for implementing an interface between an external process and transaction processing system
GB2273180A (en) * 1992-12-02 1994-06-08 Ibm Database backup and recovery.
US5504883A (en) * 1993-02-01 1996-04-02 Lsc, Inc. Method and apparatus for insuring recovery of file control information for secondary storage systems
JPH06266597A (ja) * 1993-03-11 1994-09-22 Fujitsu Ltd ログ取得方式
JP2557192B2 (ja) * 1993-03-15 1996-11-27 インターナショナル・ビジネス・マシーンズ・コーポレイション トランザクション処理の同期方法、トランザクション処理のモニタ方法及びトランザクションのコミット処理方法
US5455944A (en) * 1993-03-16 1995-10-03 International Business Machines Corporation Method for managing logging and locking of page free space information in a transaction processing system
GB2281644A (en) * 1993-09-02 1995-03-08 Ibm Fault tolerant transaction-oriented data processing.
US5553279A (en) * 1993-10-08 1996-09-03 International Business Machines Corporation Lossless distribution of time series data in a relational data base network
US5561795A (en) * 1994-05-13 1996-10-01 Unisys Corporation Method and apparatus for audit trail logging and data base recovery
US5586312A (en) * 1994-10-11 1996-12-17 Unisys Corporation Method and apparatus for using an independent transaction processing application as a service routine
US5680610A (en) * 1995-01-19 1997-10-21 Unisys Corporation Method and apparatus for testing recovery scenarios in global transaction processing systems
US6052695A (en) * 1995-02-28 2000-04-18 Ntt Data Communications Systems Corporation Accurate completion of transaction in cooperative type distributed system and recovery procedure for same
US5712971A (en) * 1995-12-11 1998-01-27 Ab Initio Software Corporation Methods and systems for reconstructing the state of a computation
US5850507A (en) * 1996-03-19 1998-12-15 Oracle Corporation Method and apparatus for improved transaction recovery
US5857204A (en) * 1996-07-02 1999-01-05 Ab Initio Software Corporation Restoring the state of a set of files
US5781910A (en) * 1996-09-13 1998-07-14 Stratus Computer, Inc. Preforming concurrent transactions in a replicated database environment
US6035379A (en) * 1997-01-09 2000-03-07 Microsoft Corporation Transaction processing for user data employing both logging and shadow copying
US6275863B1 (en) * 1999-01-25 2001-08-14 International Business Machines Corp. System and method for programming and executing long running transactions
JP4237354B2 (ja) * 1999-09-29 2009-03-11 株式会社東芝 トランザクション処理方法及びトランザクション処理システム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007265043A (ja) * 2006-03-28 2007-10-11 Nomura Research Institute Ltd スケジューラプログラム、サーバシステム、スケジューラ装置
JP4571090B2 (ja) * 2006-03-28 2010-10-27 株式会社野村総合研究所 スケジューラプログラム、サーバシステム、スケジューラ装置
JP2008225979A (ja) * 2007-03-14 2008-09-25 Hitachi Ltd 情報処理装置、プログラム及び情報処理方法
JP2011134143A (ja) * 2009-12-25 2011-07-07 Fujitsu Frontech Ltd 情報処理装置、情報処理方法、および情報処理プログラム
WO2014068820A1 (ja) * 2012-10-29 2014-05-08 日本電気株式会社 トランザクションシステム
JP5949937B2 (ja) * 2012-10-29 2016-07-13 日本電気株式会社 トランザクションシステム

Also Published As

Publication number Publication date
US6519614B1 (en) 2003-02-11
JP4237354B2 (ja) 2009-03-11
EP1089177B1 (en) 2014-04-30
KR100398753B1 (ko) 2003-09-19
EP1089177A2 (en) 2001-04-04
KR20010050667A (ko) 2001-06-15
EP1089177A3 (en) 2003-05-02
US20030078910A1 (en) 2003-04-24
US6834275B2 (en) 2004-12-21
TW550474B (en) 2003-09-01

Similar Documents

Publication Publication Date Title
JP2001101045A (ja) トランザクション処理方法及びトランザクション処理システム
US9058351B2 (en) Apparatus and method for read optimized bulk data storage
JP5259404B2 (ja) データベースフラグメントのクローン化および管理
AU2002212843B2 (en) Method and apparatus for data processing
US6012094A (en) Method of stratified transaction processing
US11132350B2 (en) Replicable differential store data structure
JP4219589B2 (ja) トランザクショナルファイルシステム
US20050125458A1 (en) Chronological data record access
WO2006127402A1 (en) Version-controlled cached data store
JPH103416A (ja) 情報処理装置およびその方法
US20060236049A1 (en) Remote copy system and remote copy method
JPH08328933A (ja) 並列処理システムのファイルアクセス制御方式
JP3785004B2 (ja) トランザクション管理方法及びトランザクション管理装置
JP4289834B2 (ja) データベース管理システム、データベース管理プログラムおよび記録媒体
US7209919B2 (en) Library server locks DB2 resources in short time for CM implicit transaction
US20240330111A1 (en) Database node soft restart
JP2523499B2 (ja) アクセス制御方法
AU2007231648B2 (en) Method and apparatus for data processing
JP4245282B2 (ja) 書き込み遅延データベース管理方法、装置、プログラム、及び記録媒体
JPH04191934A (ja) 機能別プログラム管理方法および装置
JP2002268930A (ja) データベース構成変更装置、方法及び記録媒体
NZ537170A (en) Method and apparatus for data processing
KR20010057884A (ko) 데이터 저장시스템에서 데이터 버퍼 제어 블록을 이용한로그 우선 출력 프로토콜 수행 방법
NZ546247A (en) Method and apparatus for replicating a database
NZ546248A (en) Method and apparatus for replicating a database

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080325

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080819

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081020

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

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

R151 Written notification of patent or utility model registration

Ref document number: 4237354

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

Free format text: PAYMENT UNTIL: 20111226

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121226

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121226

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20131226

Year of fee payment: 5

EXPY Cancellation because of completion of term