JP2003530646A - トランザクショナルファイルシステム - Google Patents
トランザクショナルファイルシステムInfo
- Publication number
- JP2003530646A JP2003530646A JP2001575287A JP2001575287A JP2003530646A JP 2003530646 A JP2003530646 A JP 2003530646A JP 2001575287 A JP2001575287 A JP 2001575287A JP 2001575287 A JP2001575287 A JP 2001575287A JP 2003530646 A JP2003530646 A JP 2003530646A
- Authority
- JP
- Japan
- Prior art keywords
- file
- transaction
- request
- version
- computer
- 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
Links
- 238000000034 method Methods 0.000 claims description 98
- 230000008859 change Effects 0.000 claims description 41
- 230000004044 response Effects 0.000 claims description 8
- 238000011084 recovery Methods 0.000 abstract description 32
- 238000002955 isolation Methods 0.000 abstract description 24
- 230000000694 effects Effects 0.000 abstract description 9
- 230000008569 process Effects 0.000 description 40
- 238000010586 diagram Methods 0.000 description 23
- 238000012217 deletion Methods 0.000 description 21
- 230000037430 deletion Effects 0.000 description 21
- 238000000926 separation method Methods 0.000 description 18
- 230000009471 action Effects 0.000 description 16
- 230000007246 mechanism Effects 0.000 description 16
- 230000003111 delayed effect Effects 0.000 description 14
- 230000006399 behavior Effects 0.000 description 13
- 230000008901 benefit Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 10
- 238000013507 mapping Methods 0.000 description 9
- 238000011010 flushing procedure Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 7
- 230000036961 partial effect Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000002085 persistent effect Effects 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000007667 floating Methods 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 206010000210 abortion Diseases 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000004043 responsiveness Effects 0.000 description 2
- 244000118350 Andrographis paniculata Species 0.000 description 1
- 102100036070 Fibrous sheath CABYR-binding protein Human genes 0.000 description 1
- 101001021962 Homo sapiens Fibrous sheath CABYR-binding protein Proteins 0.000 description 1
- 238000003619 Marshal aromatic alkylation reaction Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1865—Transactional file systems
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/953—Organization of data
- Y10S707/959—Network
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99937—Sorting
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99938—Concurrency, e.g. lock management in shared database
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
る。
ルまたはディレクトリの削除または名前の変更、およびファイル内容の操作を含
む、ファイル階層を操作する機構を提供する。特定のファイルシステムは、単一
の下位動作すなわちプリミティブの完了に関するある保証を提供する。たとえば
、ファイルを新規作成するプリミティブは、成功裡に完了するか、またはそのフ
ァイル作成動作の何らかの部分的な効果がシステムによって元に戻される(アン
ドゥされる)かのいずれかになる。
内で一緒に結びつけられない可能性がある。たとえば、現在、ファイルシステム
が、4つのファイルを作成し、3つの他のファイルを削除し、もう1つのファイ
ルの名前を変更するが、これらの動作のどれかが失敗した場合に、他の動作のい
ずれかを元に戻す方法はない。その結果、アプリケーションなどの上位(ユーザ
レベル)処理が、そのような複数の動作の管理すなわち、どのアクションをどの
ファイルおよび/またはディレクトリに適用するかをファイルシステムに指定す
るのに使用される。
ックアンドフィールをサイトに与える形で互いにリンクされた20個のウェブペ
ージを有する例を検討する。サイトの更新中に、システムに障害が発生し、一貫
性のない状態が引き起こされる可能性がある。たとえば、更新を実行するアプリ
ケーションが、障害の時点で、一部のファイルを削除し終えたが、これらのファ
イルをポイントしていた他のファイルからのリンクを削除していない場合がある
。このサイトを見るユーザは、ウェブページの一部を見るが、削除されたページ
へのリンクをクリックした時にエラーメッセージを受け取る。
ァイル階層全体を、階層内のファイルを変更する前に普通にコピーする。障害の
場合に、保存された階層をコピーバックする。しかし、このファイルのコピーは
低速であり、コピープログラムが、システムのどの部分が更新されるかを事前に
知る必要があり、ファイルのどれかが偶然にコピーされない場合に回復不能にな
るので、エラーになりやすいという点で比較的ぎこちない。
時に、進行中のどんな変更も、サイトを見るユーザに可視になる。たとえば、上
で説明したウェブサイトでは、どんな変更も、ファイル(および名前階層)がア
プリケーションによって変更されている間に、システムの既存のユーザに可視に
なる。システム状態は、通常、すべての変更が行われるまでは一貫性がないので
、ユーザは、その一貫性のなさを見る可能性がある。たとえば、既存のユーザが
、ウェブページ内のリンク(URL)を見、それをクリックし、削除されたペー
ジで終わる場合があり、これは、アプリケーションがページを削除したが、その
ページをポイントするリンクをまだ除去していない時に発生するイベントである
。
する能力を同様に制限される。たとえば、通常のワードプロセッサアプリケーシ
ョンまたはスプレッドシートアプリケーションは、システム障害の後に発生する
可能性がある一貫性のない状態を回避するために、一時ファイルを使用して、名
前の変更動作および削除動作によって完全な保存を実行する。そのようなアプリ
ケーションが、異なるデータソースにまたがって情報を分配しようとする場合も
ある。たとえば、アプリケーションが、表データをSQL Serverに保管
し、ファイルをファイルサーバおよび/またはインターネットサーバに保管しよ
うとする場合があり、たとえば、そのようなファイルに、ワードプロセッサ文書
、プレゼンテーションチャート、および/またはウェブページが含まれる場合が
ある。しかし、調整され統一された形でのそのような情報の保存をサポートする
機構は、現在存在しない。たとえば、そのような情報の保存中にシステムが障害
を発生する場合に、情報の一部が保存されるが、それ以外は保存されず、やはり
一貫性のない状態につながる。
ユーザレベルトランザクションの一部として実行することができる、システムお
よび方法を提供する。本発明のトランザクショナルファイルシステムは、ユーザ
が、ファイルシステム内のトランザクションのスコープおよび期間を選択的に制
御できるようにする。
ープンのインスタンスに対する動作がトランザクションの一部として扱われなけ
ればならないかどうかを指定する。さらに、このシステムは、トランザクショナ
ルに操作することだけができるファイルを永続的にマークする能力を提供し、ア
プリケーションは、オープン/作成時にグローバル一意id(GUID)を介し
てトランザクションを指定する。新規ファイル作成に関して、親ディレクトリが
、被トランザクションとしてマークされ、アプリケーションは、トランザクショ
ンをスレッド/プロセスに関連付けることができ、これによって、そのようなス
レッド/プロセスによるファイル操作が、指定されたトランザクションのコンテ
キスト内でトランザクション処理される。さらに、アプリケーションは、子スレ
ッド/プロセスがトランザクションコンテキストを継承することをシステムに指
示する(たとえばAPIを介して)ことを選択することができ、アプリケーショ
ンが、アプリケーションソースコードに対する大きい変更なしで、トランザクシ
ョンを利用できるようになる。
イルのハンドルに対する読取、書込、削除、または名前の変更などの動作を、ト
ランザクションの一部として自動的に含める。その結果、アプリケーションは、
既存のファイルシステムAPIを呼び出し、既存の動作単位のセマンティクスを
見続け、なおかつトランザクションの一部として動作を含めることができる。ア
プリケーションは、使いたいだけいくつでもトランザクションを使用することが
でき、他のアプリケーションとトランザクションを共有することができ、望みの
数のスレッド/プロセスにトランザクションを共有させることなどができる。ト
ランザクションは、異なるコンピュータに常駐するファイルに関して行われるフ
ァイルオープンの際に指定することができる。
用可能にするためのログ記録を対象とする。トランザクションの下で、システム
によって行われる変更は、システム障害およびアプリケーション障害を含むなん
らかの理由でトランザクションに障害が発生した場合に元に戻され、そのトラン
ザクションに関してシステムによって行われる変更は、システムがアプリケーシ
ョンの代わりにトランザクションを成功裡にコミットする場合に、システム障害
(たとえば停電)に耐えることが保証される。これは、複数レベルログ記録機構
と、より下位のログ記録される動作が成功裡にコミットされたかどうかを判定し
、これによって、より上位のログ記録される動作が実際に発生したかどうかを判
定する機構とを介して達成される。
のデータ書込の詳細を別のログ、たとえばページストリームに分離することによ
ってもログ記録される。ある機構がログ記録された署名を書き込み、後でログ記
録されたレコードおよびデータの両方と比較して、ログ記録されたレコードがそ
れに対応するデータページと同期化されているかどうかを判定し、ログがデータ
に関して特定の順序でディスクに書き込まれるという要件をなくす。
間での名前空間およびファイルデータの分離の提供が含まれる。名前空間分離は
、どの名前がどのトランザクションに属するかを追跡する分離ディレクトリの使
用によって達成される。その結果、変更するトランザクションがまだアクティブ
である間、所与のトランザクションについてシステムによって行われる変更のど
れもが他のトランザクションにとって不可視になり、変更するトランザクション
が成功裡にコミットした後に限って可視になる。トランザクション非対応ファイ
ルハンドルは、変更が起きた時にその変更を見る。したがって、第1トランザク
ション中に削除されるファイルは、もはやその第1トランザクションまたは非ト
ランザクションによって見られなくなるが、第1トランザクションが完了するま
では、他のトランザクションから可視のままになる。
クされた分離ディレクトリが作成され、通常のNTFS親ディレクトリではなく
、分離ディレクトリに適当なファイル名が追加される。たとえば、削除動作に関
して、削除されるファイルの名前が、そのファイルがNTFS親ディレクトリか
ら除去されるのと同時に、分離ディレクトリに追加される。コミットの前には、
異なるトランザクションによるこのファイルへの後続アクセスが、分離ディレク
トリを使用してサービスされ、これによって、そのファイルが見つかり、削除さ
れていないとみなされる。同様に、トランザクションがファイルを作成する場合
に、その名前が、NTFSディレクトリならびに親NTFSディレクトリにリン
クされた分離ディレクトリに追加される。そのファイルを作成したトランザクシ
ョンは、そのファイルを見るが、他のトランザクションにとって、その名前は、
ファイルのオープンまたは親NTFSディレクトリのリスティングに関してフィ
ルタアウトされる。分離ディレクトリエントリは、トランザクションがコミット
するか中断する時に、分離ディレクトリから除去される。
、アプリケーションが1つまたは複数のファイルに対して複数のトランザクショ
ナル動作を簡単に実行できるようにし、外部トランザクション機構に関連する問
題を克服する。このようにして、複数のファイルシステム動作を、ファイルシス
テム内でトランザクション的な形で一緒に結び付け、動作が一緒にコミットされ
るか、部分的なアクションのいずれもが元に戻されるかのどちらかになるように
する。さらに、1つのトランザクションの動作およびデータ変更が、別のトラン
ザクションの動作およびデータから分離される。
ィング環境の短い一般的な説明を提供することを意図されたものである。必要で
はないが、本発明を、プログラムモジュールなどのパーソナルコンピュータによ
って実行されるコンピュータ実行可能命令の一般的な文脈で説明する。一般に、
プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネ
ント、データ構造体、および、特定のタスクを実行するかまたは特定の抽象デー
タ型を実施する類似物が含まれる。
クロプロセッサベースまたはプログラマブルな消費者電子製品、ネットワークP
C、ミニコンピュータ、メインフレームコンピュータ、および類似物を含む、他
のコンピュータシステム構成を用いて本発明を実践できることを諒解するであろ
う。本発明は、通信ネットワークを介してリンクされたリモート処理装置によっ
てタスクが実行される分散コンピューティング環境でも実践することができる。
分散コンピューティング環境では、プログラムモジュールを、ローカルとリモー
トの両方のメモリストレージデバイスに配置することができる。
ンピュータ20または類似物の形の汎用コンピューティングデバイスが含まれ、
このパーソナルコンピュータ20には、処理ユニット21、システムメモリ22
、および、システムメモリを含むさまざまなシステム構成要素を処理ユニット2
1に結合するシステムバス23が含まれる。システムバス23は、メモリバスま
たはメモリコントローラ、周辺バス、およびさまざまなバスアーキテクチャのい
ずれかを使用するローカルバスを含む、複数のタイプのバス構造のいずれかとす
ることができる。システムメモリには、読取専用メモリ(ROM)24およびラ
ンダムアクセスメモリ(RAM)25が含まれる。起動中などにパーソナルコン
ピュータ20内の要素の間の情報の転送を助ける基本ルーチンを含む基本入出力
システム26(BIOS)が、ROM24に保管される。パーソナルコンピュー
タ20には、さらに、図示されないハードディスクから読み取り、これに書き込
むハードディスクドライブ27、取外し可能磁気ディスク29から読み取り、こ
れに書き込む磁気ディスクドライブ28、およびCD−ROMまたは他の光学媒
体などの取外し可能光ディスク31から読み取り、これに書き込む光ディスクド
ライブ30が含まれる。ハードディスクドライブ27、磁気ディスクドライブ2
8、および光ディスクドライブ30は、それぞれハードディスクドライブインタ
ーフェース32、磁気ディスクドライブインターフェース33、および光学ドラ
イブインターフェース34によってシステムバス23に接続される。ドライブお
よびそれに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構
造体、プログラムモジュール、およびパーソナルコンピュータ20の他のデータ
の不揮発性ストレージを提供する。本明細書で説明する例示的実施形態ではハー
ドディスク、取外し可能磁気ディスク29、および取外し可能光ディスク31が
使用されるが、磁気カセット、フラッシュメモリカード、ディジタルビデオディ
スク、ベルヌーイカートリッジ、ランダムアクセスメモリ(RAM)、読取専用
メモリ(ROM)、および類似物などの、コンピュータによってアクセス可能な
データを保管することができる他のタイプのコンピュータ可読媒体を、例示的動
作環境で使用できることを、当業者は諒解するであろう。
oration社のWindows(登録商標)2000、旧称Windows
(登録商標)NT)を含む複数のプログラムモジュールを、ハードディスク、磁
気ディスク29、光ディスク31、ROM24、またはRAM25に保管するこ
とができる。コンピュータ20には、Windows NT(登録商標)ファイ
ルシステム(NTFS)などの、オペレーティングシステム35に関連するか含
まれるファイルシステム36、1つまたは複数のアプリケーションプログラム3
7、他のプログラムモジュール38、およびプログラムデータ39が含まれる。
ユーザは、キーボード40およびポインティングデバイス42などの入力デバイ
スを介してパーソナルコンピュータ20にコマンドおよび情報を入力することが
できる。他の入力デバイス(図示せず)に、マイクロホン、ジョイスティック、
ゲームパッド、衛星放送用パラボラアンテナ、スキャナ、または類似物を含める
ことができる。これらおよび他の入力デバイスは、しばしば、システムバスに結
合されるシリアルポートインターフェース46を介して処理ユニット21に接続
されるが、パラレルポート、ゲームポート、またはuniversal ser
ial bus(USB)などの他のインターフェースによって接続することが
できる。モニタ47または他のタイプのディスプレイデバイスも、ビデオアダプ
タ48などのインターフェースを介してシステムバス23に接続される。モニタ
47のほかに、パーソナルコンピュータには、通常は、スピーカおよびプリンタ
などの他の周辺出力デバイス(図示せず)が含まれる。
複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環
境で動作することができる。リモートコンピュータ49は、もう1つのパーソナ
ルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他
の一般的なネットワークノードとすることができ、メモリストレージデバイス5
0だけが図1に示されているが、通常は、パーソナルコンピュータ20に関して
上で説明した要素の多数またはすべてが含まれる。図1に示された論理接続には
、ローカルエリアネットワーク(LAN)51および広域ネットワーク(WAN
)52が含まれる。そのようなネットワーキング環境は、オフィス、企業全体の
コンピュータネットワーク、イントラネット、およびインターネットでありふれ
たものである。
0は、ネットワークインターフェースまたはネットワークアダプタ53を介して
ローカルネットワーク51に接続される。WANネットワーキング環境で使用さ
れる時には、パーソナルコンピュータ20に、通常はモデム54または、インタ
ーネットなどの広域ネットワーク52を介する通信を確立する他の手段が含まれ
る。モデム54は、内蔵または外付けとすることができるが、シリアルポートイ
ンターフェース46を介してシステムバス23に接続される。ネットワーク化さ
れた環境では、パーソナルコンピュータ20に関して図示されたプログラムモジ
ュール、またはその一部を、リモートメモリストレージデバイスに保管すること
ができる。図示のネットワーク接続が、例示的であり、コンピュータの間で通信
リンクを確立する他の手段を使用することができることを諒解されたい。
よびMicrosoft Windows NT(登録商標)ファイルシステム
(NTFS)に関して説明するが、当業者は、他のオペレーティングシステムお
よび/またはファイルシステムを実施でき、本発明から利益を得ることができる
ことを諒解するであろう。
ナル」などは、本発明で複数のファイルシステム動作に適用される、ある共通の
プロパティを有する動作を指す。トランザクショナルプロパティを、通常は「A
CID」プロパティと称し、これは、atomicity(原子性)、cons
istency(一貫性)、isolation(分離)、およびdurabi
lity(耐久性)を表す。以下で理解されるように、本発明は、ファイルシス
テムと共同してこれらのプロパティを達成し、アプリケーションおよびコンピュ
ーティング一般に多数の利益をもたらす。
Microsoft Windows NT(登録商標)ファイルシステム(N
TFS)36(図1)などのトランザクション対応ファイルシステム62(本発
明に関して本明細書で説明される)に向けられたファイルシステム要求58が、
ディスパッチ機構66を介してNTFSコンポーネント64に達する。従来のフ
ァイルシステムに関して既知のように、たとえばI/O要求パケット(IRP)
がI/Oマネージャによってファイルシステムに送られることをもたらす可能性
があるこれらの要求を生成するために、アプリケーション60が、アプリケーシ
ョンプログラミングインターフェース(API)呼出しを行うことができる。本
発明によれば、以下で説明するように、ファイルシステム要求58のいくつかが
、トランザクションに関連し、それ以外はそうでない可能性がある。
明の前と同一の形で、NTFSコンポーネント64によって直接にディスパッチ
され、処理される。同様に、以下で説明するように、トランザクションによって
開始されるか、オープントランザクションによって変更されたファイルまたはデ
ィレクトリに向けられた要求58は、普通にNTFSコンポーネント64に、お
よびNTFSコンポーネント64からディスパッチされ続ける。しかし、そのよ
うなトランザクショナル要求は、それ以外は通常の処理中の戦略的なポイントで
、ファイルシステム62の内部で実装されるものなどのTxFコンポーネント7
0へのコールアウト(コールバック)をもたらす。
部トランザクションサービス72およびログ記録サービス74へのインターフェ
ースが含まれ、TxFコンポーネント70は、NTFSコンポーネント64と共
に働いて、トランザクショナル要求を処理する。外部トランザクションサービス
72には、クライアント(たとえばアプリケーション60)が、トランザクショ
ンを開始するために呼び出し、後に、動作をコミットまたは中断するために呼び
出す、Microsoft Corporationの分散トランザクションコ
ーディネータ(MS DTC、または単にMTCまたはDTC)を含めることが
できる。DTCは、明確に文書化され、短い要約およびTxF70に関してそれ
が機能する範囲までを除いて、本明細書では詳細に説明しない。
して、アプリケーション60などのアプリケーションが、トランザクションコー
ディネータ76(図3)のメソッドすなわち、BeginTransactio
nメソッドを呼び出すことによって、トランザクションを開始する。トランザク
ションコーディネータ76は、ネットワーク内のトランザクションサーバまたは
そのローカルプロキシとすることができる。この呼び出しによって、トランザク
ションを表すトランザクションオブジェクト/コンテキスト78が作成される。
その後、アプリケーション60は、1つまたは複数のリソースマネージャを呼び
出して、トランザクションの作業を行う。本発明では、TxFコンポーネント7
0が、トランザクショナルファイルシステム動作に関するリソースマネージャと
して働く。やはり図3に示され、以下で説明されるように、ファイルシステム6
2へのAPI呼出し(たとえば、CreateFileEx 80および他のフ
ァイルシステム動作)によって、TxFコンポーネント70へのコールアウトが
生成される。
ィレクトリ、またはアプリケーションの現在のスレッド/プロセスが識別され、
これにトランザクションコンテキスト78を関連付けることができる。トランザ
クションコンテキストが関連付けられる場合に、ファイルシステム62は、Tx
F70をコールアウトする。TxF70は、トランザクションの代わりの作業を
初めて実行する時に、トランザクションコーディネータ76を呼び出し、これに
よって、TxF70がこのトランザクションに用いられるリソースマネージャで
あることをトランザクションコーディネータ76に知らせることによって、トラ
ンザクションに参加する。他のリソースマネージャ84(たとえばデータベース
コンポーネントの)が、トランザクションに同様に参加することができ、それに
よって、データベースの動作およびファイルシステムの動作を、同一のトランザ
クション内で一緒にコミット(または中断)できることに留意されたい。
nオブジェクト78と共に来るトランザクション識別子(ID)を使用して、ト
ランザクションに関する参加を必要とする時を判定するために、TxFコンポー
ネント70のトランザクションマネージャ82レイヤが、トランザクションID
のトランザクションテーブル86内で維持される既知の参加しているトランザク
ションに対してIDを検査する。既にリストされている場合に、トランザクショ
ンIDおよびトランザクション参照が、I/O要求パケット(IRP)で記録さ
れ、IRPが継続する。NTFSでのIRPの使用は、明確に文書化され、説明
を簡単にするために本明細書では詳細に説明しない。しかし、トランザクション
がテーブル86にリストされていない場合には、TxFは、TxF70が、この
トランザクションに関連付けられる必要があるリソースマネージャであることを
トランザクションコーディネータ76に通知し、参加したトランザクションのテ
ーブル86にトランザクション識別子を保管する。
規トランザクションである時に、トランザクションコーディネータ76への参加
が必要である。このために、TxFマネージャ82は、プロキシ88を使用して
、OLEトランザクションまたは別のプロトコルを使用してトランザクションコ
ーディネータ76と通信する。本発明と共に使用するのに適する代替プロトコル
および類似物には、XA(X/Openの)、TIP(Transaction
Internet Protocol)、および/またはオペレーティングシ
ステム内の固有のトランザクションコントロールが含まれる。CreateFi
leEx 80要求は、ITransactionオブジェクト78を(たとえ
ばDTCのItransactionTransmitterメソッドを介して
)バイトのフラットコレクションにマーシャリングする。参加が必要な場合には
、これらのバイトが、プロキシ88に送られ、プロキシ88は、DTCのITr
ansactionReceiverメソッドを呼び出して、参加に必要なIT
ransactionオブジェクト78を取り戻す。プロキシ88は、DTCオ
ブジェクトITransactionResourceAsyncおよびITr
ansactionEnlistmentAsyncを維持する。ITrans
actionResourceAsyncは、トランザクションコーディネータ
76が2フェーズコミットを駆動するために呼び出すTxFコールバックルーチ
ンを実装し、参加呼出しと共に供給される。ItransactionEnli
stmentAsyncは、IResourceManager::enlis
t()によって返され、これには、2フェーズコミットコントロールの確認のた
めにTxF70が呼び出すメソッドが含まれる。プロキシ88は、Itrans
actionResourceAsyncおよびItransactionEn
listmentAsyncのメソッドと、TxFコンポーネント82とプロキ
シ88との間の通信に関するファイルシステムコントロール(FSCTL)ベー
スのリモートプロシージャコール(RPC)との間の仲介物として働く。
ロセスで動作させることが実行可能であり、トランザクションマネージャをカー
ネル内に移動し、これによってプロセス切換えのオーバーヘッドを除去すること
も実行可能であることに留意されたい。DTCプロキシスタブをカーネル内に移
動して、ユーザモードプロキシを作成する際のTxF作業の必要をなくし、これ
と同時に、TxFプロキシからトランザクションマネージャへの余分なプロセス
切換えを除去することもできる。TxFプロキシは、TxFプロキシによる作業
を必要とするDTCコーディネータと同一プロセス内で動作することができるが
、これは、前の解決策と同数のプロセス切換えを有することになる。
ータ76は、トランザクションに参加したTxF70(および、おそらくは、他
のTxFまたはデータベースリソースマネージャなど、他のリソースマネージャ
84)を含むリソースマネージャのそれぞれを記憶する。これによって、ファイ
ルシステム情報もコミットするトランザクションの一部として、他の情報(たと
えばデータベース情報)をコミットできるようになり、また、複数のトランザク
ション対応ファイルシステム(たとえばリモートマシン上の)ファイルを、同一
のトランザクションの一部としてコミットできるようになることに留意されたい
。
ンザクションコーディネータ76のCommitトランザクションメソッドを(
COMを介して)呼び出すことによって、トランザクションを完了する。トラン
ザクションコーディネータ76は、2フェーズコミットプロトコルをすべて実行
して、参加したリソースマネージャのそれぞれにコミットさせる。2フェーズコ
ミットプロトコルによって、すべてのリソースマネージャがトランザクションを
コミットするか、または中断することが保証される。第1フェーズで、トランザ
クションコーディネータ76が、TxFコンポーネント70を含むリソースマネ
ージャのそれぞれに、コミットの準備ができているかどうかを尋ねる。リソース
マネージャが肯定的に応答する場合に、第2フェーズで、トランザクションコー
ディネータ76が、リソースマネージャにコミットメッセージをブロードキャス
トする。リソースマネージャのどれかが否定的に応答するか、または準備要求に
応答できない場合、および/またはトランザクションの一部で障害が発生する場
合に、トランザクションコーディネータ76は、トランザクションが中断するこ
とをリソースマネージャに通知する。また、アプリケーションが完了できない場
合に、アプリケーション60が、Abortトランザクションメソッドを呼び出
す。アプリケーションに障害が発生した場合には、トランザクションコーディネ
ータ76が、アプリケーションの代わりにトランザクションを中断する。その後
、TxF70を含むさまざまなリソースマネージャが、以下で説明するように、
部分的なアクションを元に戻す。
DTCなど)に関してリソースマネージャとして働き、これによって、真のユー
ザ定義トランザクションサポートが、ファイルシステムに拡張される。NTFS
を用いると、以下で説明するように、TxFが、過渡的なファイルごとおよびス
トリームごとのトランザクション状態を普通のNTFS構造体にリンクできるよ
うになることに留意されたい。
イルシステム動作を含めることを選択することができる。これは、ファイルが被
トランザクションとしてマークされ、それに対する動作がトランザクショナルに
実行されるようにファイルごとに、または、スレッド/プロセスが被トランザク
ションとしてマークされ、そのスレッド/プロセスによって行われる動作がトラ
ンザクショナルに実行されるスレッド/プロセスごとに、達成することができる
。
32 APIの変形であるCreateFileExアプリケーションプログラ
ミングインターフェース(API)呼出し(以下で説明する)と共に使用するこ
とができる被トランザクションモードフラグ(たとえばビット)を定義する。こ
のフラグがセットされている時に、本発明のシステムは、このファイルを自動的
にトランザクションコンテキストに含める。この目的のために、図3に一般的に
示されているように、作成要求80がI/O要求パケット(IRP)を介してフ
ァイルシステム(NTFS)62に来る時に、既存のトランザクションコンテキ
スト78を、そのコンテキスト78にポインタを渡すことによって要求にアタッ
チすることができ、これによって、ファイルを、既存のトランザクションコンテ
キスト78の一部として作成/オープンできるようになる。その代わりに、Cr
eateFileEx API呼出しのItransactionポインタへの
ポインタがNULLである場合に、Microsoft(登録商標)Trans
action Server(MTS)/コンポーネントオブジェクトモデル(
COM)のように、コンテキストがスレッドから自動的に選択される。成功裡の
作成/オープン要求80に応答して返されるファイルハンドル90に、トランザ
クションコンテキスト78へのポインタが含まれる。その後、そのハンドル90
を用いて行われる呼出しは、ポインタを介して、トランザクションコンテキスト
を関連付けられているものとして認識され、そのトランザクションコンテキスト
から関連するトランザクションが識別され、そのハンドルを使用するファイルシ
ステム動作が、トランザクションが終了されるまでトランザクションの代わりに
実行される。
32 APIの適当なスーパーセットであり、トランザクションモードをセット
するためのフラグ「FILE_FLAG_TRANSACTED」をとる「dw
AdditionalFlags」DWORDパラメータが追加されている。ま
た、トランザクションコンテキストオブジェクトをポイントすることができるパ
ラメータ、LPUNKNOWN punkTransactionも定義され、
これがNULLの場合には、上で説明したように、オブジェクトが現在のMTS
/COMコンテキストから選択される。
ransactedFiles APIが設けられ、このAPIでは、Crea
teFile/CreateFileEx呼出しの組を、効果的にそれらが被ト
ランザクションモードフラグをセットされているかのように扱う。特定のCre
ateFileExが、ヌルでないITransactionオブジェクトポイ
ンタを指定する場合には、そのオブジェクトが、トランザクションコンテキスト
78に使用され、そうでない場合には、MTSトランザクションオブジェクトが
、スレッドから選択される。
トランザクションとしてマークし、これによって、そのスレッド/プロセスを介
するすべてのファイルシステムアクセスをトランザクション処理するのに使用さ
れる。3つの異なるフラグをセットすることができる、すなわち、セットされた
時に、現在のスレッドからのすべてのファイルシステムアクセスをトランザクシ
ョン処理されるようにするフラグと、セットされた時に、現在のプロセス内のス
レッドのそれぞれからのすべてのファイルシステムアクセスをトランザクション
処理されるようにするフラグと、セットされた時に、現在のプロセスから作成さ
れた子プロセスがこれらのフラグのうちの第2および第3をセットされるように
するフラグである。したがって、スレッド/プロセスを、作成されるプロセスが
このモードを継承する形でマークすることが可能であり、これは、既存のアプリ
ケーションがトランザクション処理されるNTFSを利用できるようになるので
、非常に強力な機構である。さらに、これによって、アプリケーションが、被ト
ランザクションモードビットを有しない、deleteFileおよびcopy
Fileなどのファイルシステム動作を行えるようになる。この特徴は、トラン
ザクション処理されるコマンドラインバッチスクリプトを可能にするに使用する
こともできる。以下で、SetTransactedFiles APIを説明
する。
プリケーション60は、たとえばファイル読取動作を要求するAPI呼出し92
を介して、ハンドル90をファイルシステムに供給し、これによって、その中の
トランザクションコンテキストポインタを介して、ファイルシステムが、トラン
ザクションコンテキストを突き止めることができる。上で説明したように、Tx
F70がトランザクションに参加しなければならない場合があることに留意され
たい。ファイルハンドル90内でポイントされるトランザクションコンテキスト
のゆえに、ファイルシステムは、この動作がトランザクションに含まれることな
らびに特定の関連するトランザクションの識別子を知る。トランザクションコン
テキストにファイルを含めることは、読取、書込、ファイル作成、および削除を
含むファイルに対する動作がトランザクション処理されることを意味する。任意
の数のファイルシステム要求を、単一のトランザクション内でグループ化し、原
子的で耐久性がある形でコミットまたは中断することができる。さらに、どの瞬
間でも、任意の数のトランザクションを進行中にすることができ、各トランザク
ションはお互いから分離される。
をオープンまたは作成することができる。現在、率直で安全で予測可能な挙動を
もたらすために、このシステムでは、システム内のアップデータ(ライタ)トラ
ンザクションの数を、すべての所与の時刻に1つに制限する、すなわち、複数の
トランザクションが読取/書込(RW)アクセスのためにファイルを同時にオー
プンすることを試みる場合に、ファイルオープンの時にエラーが返される。した
がって、これらの制約は、(ストリームレベルではなく)ファイルレベルに置か
れる。この制約は、ファイルのコミットまたは中断まで、ファイルと共にとどま
る。
行可能であり、たとえば、ファイルを複数のライタがオープンすることができる
が、どのライタも、ファイル内の別のライタが書き込んだ(ダーティ)ページを
上書きできない、すなわち、ページがダーティになった後に、そのページがロッ
クされる。また、「last−writer−wins(最後のライタが有効)
」タイプのアクセスを、ここで実施することができる。これらのタイプのファイ
ル「書込」アクセスが、所与のシステムで相互排他的でないことに留意されたい
。というのは、あるAPIで、ファイル全体をロックする書込アクセス用にファ
イルをオープンし、もう1つのAPIで、ページ(または他のファイルセクショ
ン)ごとのロックを有する書き込みアクセス用にファイル(その時点でロックさ
れたファイルではない)をオープンし、かつ/またはもう1つのAPIで、la
st−writer−wins書込アクセスを用いることが可能だからである。
しかし、本明細書では、説明を単純にするために、ファイル全体を、トランザク
ションによる読取/書込アクセスのために所与の時に1回だけオープンできる(
すなわち、他のアクセスがシリアライズされる)ものとして本発明を説明する。
ファイルの非トランザクショナルアップデータも、書込用のトランザクショナル
オープンを用いてシリアライズされる。これによって、同一のトランザクション
に属する複数のスレッドが書込のために同時にファイルをオープンできなくなる
のではないことに留意されたい。ファイルをオープンできるリーダーすなわち読
取専用アクセスを用いるリーダーの数に対する重要な制限はない。
ンされるファイルは、ライタがリーダーの前と後のどちらにファイルをオープン
したかに無関係に、別のトランザクションによってファイルに対して行われる同
時変更から分離される。さらに、ファイルを変更したトランザクションがそのト
ランザクションをコミットするかどうかに無関係に、分離は、読取専用トランザ
クションのアクセスが終了するまで継続される。たとえば、図5に示されている
ように、図5でタイムラインの先頭のX/ROによって表される、読取専用アク
セスのためにページのファイルV0をオープンするトランザクショナルリーダー
Xを検討されたい。ファイル内の各ページの大文字の「O」は、オープンの時の
元のデータを表すことに留意されたい。ライタYが、後に、別のトランザクショ
ンで読取/書込アクセスのためにファイルV1をオープンし(Y/RW)、それ
に対する変更を行う(Y/書込)場合に、トランザクショナルリーダーXは、ラ
イタYのV1での変更ではなく、ファイルV0の元のデータを見続ける。非トラ
ンザクションが、変更の際にファイル変更を見ることに留意されたい。
ジョン」V0が、(少なくとも)リーダーXがそのファイルをオープンしている
時間、リーダーXのために保持される。これは、トランザクショナルライタYが
コミットした場合であってもそのままである。ライタYが、ファイル自体に変更
を加え、リーダーXによって見られるバージョンが、以下で詳細に説明するよう
に、変更が書き込まれる前に作られた元のデータのページごとのコピーであるが
、その逆すなわち、リーダーXのために元のファイルを未変更のままに保ち、ラ
イタYのために変更されたページのバージョンを保持することが実現可能である
ことに留意されたい。また、本明細書で使用される用語「バージョン」、「バー
ジョン管理される」、「バージョン管理」および類似物が、タイムスナップショ
ットの1点を指す(ソースコード管理システムなどの永続的バージョン管理と混
同してはならない)ことに留意されたい。さらに、トランザクショナルリーダー
を、非トランザクショナルライタとシリアライズして、実装を容易にすることが
できることに留意されたい。その代わりに、非トランザクショナルライタを、分
離だけの目的で「システム所有」トランザクションに含めることができる。した
がって、予測可能なトランザクショナル読取セマンティクスがもたらされ、これ
によって、被トランザクションリーダーが、所与の時点のファイルの「凍結され
た」イメージに頼ることができる。
後に、トランザクショナルライタZが、図9に示されているように、読取−書込
アクセスのためにファイルV2(V1から変更されていない)をオープンする(
Z/RW)ことができる。ライタZは、ライタYのコミットした変更を見、さら
にそれを変更することができる(Z 書込)。しかし、この時に、リーダーXが
、このファイルがXによって最初にオープンされた時にXが見た元のファイルペ
ージを見続け、Yがコミットした変更を一切見ないことに留意されたい。リーダ
ーXがファイルをクローズし、再オープンする場合に限って、リーダーXが、お
そらくYの変更を見る。リーダーXは、図5に示されているように、リーダーX
がファイルをクローズし、Zがコミットした後にファイルV2を再オープンする
ならば、ライタZのコミットした変更も見ることができる。言い換えると、リー
ダーXは、Zがコミットする前にクローズし、再オープンする場合には、バージ
ョンV1を見るが、リーダーXが、Zがコミットした後でクローズし、再オープ
ンする場合には、ファイルバージョンV2を見る。以下で説明するように、その
代わりに、オープンの時に最新のコミットされたバージョンより古いバージョン
を維持し、そのオープンを可能にすることが実現可能である。
はないことに留意されたい。本明細書に記載のトランザクション分離セマンティ
クスでは、ハンドルをお互いに分離するファイル共有モードと異なって、トラン
ザクションの効果をお互いに分離する。既存のファイル共有モードは、変更され
ず、追加のシリアライゼーションに使用することができる。たとえば、「書込拒
否」ファイル共有モードを指定する、同一のトランザクションの2つの異なるス
レッドによるトランザクショナル更新のためのオープンの場合に、第2のオープ
ンが、共有違反によって拒否される。これによって、分散アプリケーションが、
複数のスレッド、プロセス、またはコンピュータにトランザクション作業負荷を
割り当てられるようになると同時に、トランザクションによって行われる変更が
、他のトランザクションまたは非トランザクションワーカーから保護される。さ
らに、これらのセマンティクスでは、各リーダーが、オープンされながら安定し
た状態を保つためにファイルの内容に頼ることができる予測可能なバージョン管
理された読取が保証される。
ナル制約に関する互換性を有することを意味する。
バージョンを見るが、被トランザクション読取では、ファイルのコミットされた
バージョンが得られる。1つの代替案(上で一般的に説明したもの)が、オープ
ンの時点でファイルの最新のコミットされたバージョンを提供し、トランザクシ
ョナル読取のためにオープンされている間は、さらに変更が行われ、コミットさ
れる際に、バージョンの変更を許可しないことである。これの長所は、リーダー
が、オープンの期間中に、データのトランザクショナルに一貫性のあるビューを
見るようになることである。
クセス時または他のより早い時(すなわち、TxFログでのより早い点)でのバ
ージョンとすることができる。これによって、このリーダーが開始された時の最
も最近にコミットされたバージョンを提供することができる。この開始の時は、
トランザクションが最初にシステム内のNTFSオブジェクトにアクセスした時
とすることができ、あるいは、その代わりに、この時を、統合されたシナリオで
他のAPIを使用して定義することができる(たとえば、ログシーケンス番号ま
たはLSNを使用する)。この特徴の長所は、トランザクションが、複数のファ
イルにまたがってある時点のスナップショットを得ることであり、これは、複数
のファイル依存性およびリンクがある時(たとえばHTMLファイルまたはXM
Lファイル)に有用になる可能性がある。この代替案では、同一トランザクショ
ン内の1つのファイルの複数のオープンが、そのトランザクション内の最初のオ
ープン時に選択されたバージョンを得ることができることに留意されたい。しか
し、諒解できるように、システムによって維持される必要があるバージョンヒス
トリの量は、この第2の代替案で増加する。
をサポートするために、前にコミットされたバージョンの組が維持される時間隔
を指す。上で説明した第1の代替案では、バージョンウィンドウが、各ファイル
によって変化し、まだアクティブであるファイルの最も古いオープンから現在の
時刻までの間の時間である。第2の方式では、ウィンドウは、システム内の最も
古いトランザクションの開始LSNから現在の時刻までの時間として定義される
。これらの方式の一方または両方をサポートすることができ、バージョンを維持
するためにTxF70によって行われる作業は、本質的に同一である。説明を単
純にするために、本発明を、本明細書では主に第1の方式に関して説明するが、
この場合、リーダーが見るバージョンは、トランザクションでの最初のオープン
の時点でのファイルの最も最近にコミットされたバージョンである。したがって
、この第1の方式では、ストリームバージョンがオープン時に決定されるので、
アプリケーションは、最新のコミットされたデータを望む場合に、ハンドルをク
ローズし、再オープンする必要がある。これは、ウェブサーバのシナリオに特に
関係する可能性が高く、この場合には、ウェブサイトを、トランザクショナルに
オンラインで更新することができ、したがって、リーダーは、新たにコミットさ
れた状態を見るために、ハンドルをクローズし、再オープンする必要がある。
ので、ファイルへの書込が、実際のファイルに対する書込である。コミットされ
ない場合には、すべての変更が、以下で説明するように、ログに取り込まれたア
ンドゥ情報を介してロールバックされる。したがって、バージョン分離をもたら
すために、ページに向けられた各書込は、まず、古いページがトランザクショナ
ルリーダーのために保存されることをもたらす。しかし、これを逆に行うこと、
すなわち、変更がコミットされるまで元のファイルを手付かずで残し、これによ
って、リーダーではなくライタが、それのために新しいページを作成されるよう
にすることが可能である。
録商標))オペレーティングシステムを使用する好ましい実施形態では、古いバ
ージョンのためにディスクに別のファイルを作成するのではなく、キャッシュマ
ネージャおよび仮想メモリマネージャまたはVMMの観点から、別のインメモリ
ストリームを提示する。キャッシュマネージャ、VMM、および非トランザクシ
ョナルNTFSに対するこれらの関係は、参照によって本明細書に組み込まれる
参考文献、「Inside Windows NT(登録商標)」、by He
len Custer、Microsoft Press(1993)、「In
side the Windows NT(登録商標)File System
」、Helen Custer Microsoft Press(1994)
、および「Inside Windows NT(登録商標)、Second
Edition」、by David A.Solomon、Microsof
t Press(1998)に記載されている。
ージャおよびキャッシュマネージャの展望からは、ファイルのより古いバージョ
ンの読取が、異なるファイルの読取のように管理される。これによって、アプリ
ケーションが、より古いバージョンを自分のアドレス空間に単純にマッピングで
きるようになり、メモリ記述子リストを使用してデータにアクセスするクライア
ント(たとえばリダイレクタ)が、透過的に動作できるようにもなる。これが可
能であるのは、Windows(登録商標)2000オペレーティングシステム
で、VMMおよびキャッシュマネージャが、ファイルシステム入出力(I/O)
に参加するからである。ファイルシステム(キャッシングされないアクセスのた
めにオープンされたファイルを除く)では、キャッシュマネージャを使用して、
データをシステムメモリにマッピングし、キャッシュマネージャは、VMMを使
用してI/Oを開始する。ダーティページ書込は、通常は、バックグラウンドス
レッドで、遅延モードで発生する。このアーキテクチャの結果として、アプリケ
ーションアドレス空間に直接にマッピングされるファイルは、キャッシュマネー
ジャとページを共有し、キャッシュマネージャは、それを得るのにどのシステム
サービスが使用されるかに無関係に、データの一貫性のあるビューを提供する。
その結果、ネットワークリダイレクタ(以下で説明する)が、データをローカル
にキャッシングすると同時に、他のクライアントとの一貫性がある形でサーバの
データを得ることに留意されたい。
始めて最後に更新されたバージョンまで、複数のバージョンが維持される。各バ
ージョンは、最新バージョンに対する変更を追跡する、バージョンに関連するデ
ータ構造体を有する。未変更のページが読み取られる場合に、そのページは、フ
ァイル(キャッシュ内にあるかディスクに書き込まれた可能性がある)から読み
取られ、変更されたページが読み取られる場合には、そのページは、変更された
ページデータ(やはりキャッシュ内にある可能性がある)から読み取られる。い
くつかのバージョンが、それを読み取るトランザクションを有しない場合がある
が、それらがバージョンウィンドウ内にあり、将来にオープン要求を受ける可能
性があるので、それらバージョンのインメモリ構造体を維持することができるこ
とに留意されたい。一度もオープンされたことがないバージョンは、データペー
ジを保管するためにメモリを占有しない。最新バージョンは、ベースファイルス
トリームに対応し、更新される可能性がある。
制御ブロック」(TxFVSCB)によって記述される。ファイルのバージョン
ストリーム制御ブロックは、時間の順でリスト内でリンクされ、最新以外の各バ
ージョンが、コミット/中断され、読取専用である。最新のバージョンは、コミ
ットされる場合とされない場合がある。
ションのコミットLSNが保管されるバージョンログシーケンス番号96(バー
ジョンLSN)が含まれる。(最も最近の)コミットされていないバージョンに
ついて、一実施形態で、このLSNが、たとえば現在の時点未満の最高のLSN
を見つけるのを容易にする、TxF定義の「MAX_LSN」である。このバー
ジョンより早いコミットされたデータの読取を望むリーダーは、変更テーブル(
たとえば981)内のエントリを使用することによって、それにアクセスするこ
とができ、変更テーブルは、TxFVSCBによってポイントされるバージョン
によって変更されたページ番号を記録するインメモリテーブル98である。Tx
FVSCB94などの各TxFVSCBには、このバージョンに対応するセクシ
ョンオブジェクトポインタ(SOP)構造体100も含まれ、これは、キャッシ
ュマネージャおよび仮想メモリマネージャによって使用され、インメモリストリ
ームを表す。状態フラグ102も設けられ、そのうちの1つが、バージョンがコ
ミットされたか否かを示す。最も新しいバージョンだけが、未コミットになりえ
ることに留意されたい。やはり含まれるのが、VersionLength10
4データフィールドと変更テーブルポインタフィールド106であり、後者には
、このバージョンによって変更されたページ番号を記録する変更テーブル98へ
のポインタが含まれる。
アドレスをページ番号に関連して保管して、ディスク上のページの前のバージョ
ンを見つけることができる(このバージョンでページが少なくとも1回書き込ま
れているものとして)。図6からわかるように、主にメモリを節約するために、
ページがディスク上で連続的に保管される場合に、ページ範囲を1エントリに保
管することができる。図7に、ファイルの複数のバージョンに関する変更テーブ
ル940〜943を示す。木構造などの効率的な検索構造を使用して、変更テー
ブルを編成することができる。
場合に、適当なコミットされたバージョンが選択される。バージョン番号は、「
readLSN」によって識別される。readLSNは、上で説明したように
、どのタイプのバージョン管理が使用されるかに応じて、現在のLSNまたは古
いLSNのいずれかになる。選択されたバージョンは、readLSNの前の最
後にコミットされたバージョンである。たとえばバージョンが古すぎるなど、そ
のようなバージョンが存在しない場合には、オープンが失敗する。ファイルが、
TxFVSCBを関連付けられていない場合には、新しいTxFVSCBが、空
の変更テーブルと共に作成され、未コミットとマークされる。デフォルトのイン
メモリストリームが使用され、その結果、既存のキャッシュデータを読取に使用
することができるようになる。書込アクセスの場合、最新のバージョンがコミッ
トされていない場合には、それがそのまま使用されるが、そうではなく、未コミ
ットとマークされていない場合には、新しいVSCBが作成され、未コミットと
してマークされる。
、ユーザレベルバッファ108)がトランザクションによって変更されるたびに
、そのページが、本質的にその場で、すなわちキャッシュ110(図8)内で編
集される。その後、キャッシュ110が、キャッシュマネージャおよび/または
VMM112によって、適当な時にディスク(または他の適当な不揮発性ストレ
ージメディア)114に書き込まれる。上で一般的に説明したように、データは
、ファイルをメモリ内でマッピングすることまたは書込APIを使用することの
いずれかによって、変更することができる。書込APIを使用する時には、通常
は、キャッシュマネージャ112が、変更をメモリ常駐ページ116にコピーす
るのに使用される。キャッシュマネージャ112が、ファイルをシステムメモリ
内にマッピングするのに使用されることに留意されたい。メモリマッピングが使
用される時には、変更は、アプリケーションによってシステムメモリページ(た
とえばページ116)に対して直接に行われ、このページは、キャッシュマネー
ジャ112がマッピングしたページと同一である。変更は、「ダーティ」ビット
を介して記録され、このビットは、メモリマッピングされたI/Oの場合にプロ
セスプライベートなページテーブルエントリ(PTE)118に変更が存在する
ことを示す。通常、これらのビットは、メモリマネージャがプロセスのワーキン
グセットからページをトリミングする時に、共有(ページフレーム番号)PFN
構造体120に伝搬される。これらのビットは、アプリケーション60によって
、システムAPIを使用してマッピングされたセクションをフラッシュすること
によって、明示的に伝搬することもできる。ダーティページが、バックグラウン
ドで周期的に書き出される可能性もあることに留意されたい。
めに、システムは、各アプリケーションがマッピングしたセクションの仮想アド
レス範囲をコミット時にフラッシュする。このフラッシュは、それをマッピング
したアプリケーションのコンテキスト内から開始される。アプリケーションによ
って明示的にフラッシュされたページだけがトランザクションに含まれるように
するトランザクショナルセマンティクスを定義することができる(たとえば、ユ
ーザセクション内のバイトへの個々の修正ではなく、フラッシュをトランザクシ
ョナルにする)。その代わりに、セクションをマッピングし、フラッシュを行う
プロセスにアタッチ(KeAttachProcess)されるシステムスレッ
ドを介してこれを達成することができる。セクションのリストは、対応するトラ
ンザクションテーブルエントリ内で維持される。ファイルAPIによって行われ
た変更も、コミット時にディスクにフラッシュされる必要があることに留意され
たい。これは、ページング書込の時に、前のトランザクションから残っているダ
ーティページ書込と、現在のトランザクションでメモリマッピングによって行わ
れた変更とを区別することが不可能だからである。
両方のファイルオープンをサポートする。トランザクションが、現在他のトラン
ザクションによってオープンされていないファイルを、読取専用アクセスを用い
てオープンする時に、そのファイルに関するセマンティクスは、非トランザクシ
ョナルオープンと同一である。トランザクションが、読取/書込のためにファイ
ルをオープンする場合には、TxFが、図9に示されているように、トランザク
ションごとのコンテキストを保管するために、ファイルに関して1つ、ストリー
ムごとに1つ、ストリームバージョンごとに1つの構造体を必要とする。このオ
ープンに関するデータ構造体を、図9に示すが、図9では、「ファイルオブジェ
クト」が、ユーザのファイルハンドルによってマッピングされたオブジェクトで
あり、「FCB」が、NTFSファイル制御ブロックであり、「SCB」が、オ
ープンされた指定されたストリームのNTFSストリーム制御ブロックであり、
「NP SCB」が、主にファイルマッピング用のセクションオブジェクトポイ
ンタを保持するのに使用される非ページングストリーム制御ブロックであり、「
CCB」が、FileObjectごとのコンテキスト構造体である。TxFF
O内のフラグが、ファイルがトランザクションによって読取についてオープンさ
れた時を示すことに留意されたい。
更のアンドゥデータのアンカであり、TxFCB構造体に、トランザクションへ
の参照も含まれる。TxFSCBは、ストリームバージョンのアンカであり、T
xFVSCBは、ストリームの特定のバージョンのアンドゥデータのアンカであ
る。TxFO構造体は、ストリームのバージョンへの特定のトランザクションの
アクセスを記述し、そのバージョンの関係する共有TxF構造体へのポインタを
取り込む。
トランザクションが終了する前に読取/書込のためにファイルをオープンする場
合に、ファイルの古いバージョンが、本質的にシフト(図10では右に)されて
、新しいバージョンを表す構造体の余地が作られる。したがって、図10は、フ
ァイルの現在のバージョンを変更するトランザクションt3による1つの読取/
書込オープンと、ファイルの最も最近にコミットされたバージョンにアクセスす
るトランザクションt2による読取専用オープンと、前にコミットされたバージ
ョンにアクセスするトランザクションt1によるもう1つの読取専用オープンを
表す。単純にするために、各FileObjectが同一のSCBをポイントし
、これによって、NTFSがファイルバージョンを意識しないことに留意された
い。また、各FileObjectが、一意のページングされないSCB内にセ
クションオブジェクトポインタのそれ自体の組を有する。普通は、ユーザが実際
にストリームをマッピングしない限り、読取専用トランザクションのセクション
オブジェクトポインタが使用されないことに留意されたい。キャッシングされる
アクセスは、未変更のページの現在のストリームと、変更されたページのログフ
ァイルからサービスされる。各ファイルオブジェクトのTxFOは、効果的に、
トランザクションがアクセスしているファイルのバージョンを取り込む。
ので、TxF構造体は、NTFS構造体と独立の寿命を有する。両方が存在する
時には、これらが、図9〜10に示されているように一緒にリンクされ、ここで
は、単一方向のリンクが、両側での明確に定義されたインターフェースを使用し
てセットアップされる。たとえば、ファイルへの被トランザクションアクセスが
発生する時に、TxFCBへのFCBリンクが検査される。NULLの場合には
、TxFルーチンを使用してTxFCBがセットアップされる。しかし、TxF
CBが既に存在する場合には、TxFファイルテーブルからTxFによってファ
イルIdを使用してルックアップされ、そうでない場合には新しいTxFCBが
割り振られる。同様に、FCBが割振り解除され、TxFCBリンクがNULL
でない時には、単一方向(NTFSからTxFへの)リンク削除のためにTxF
ルーチンが呼び出される。
オープンしていない時、または将来にそのファイルのそのバージョンをオープン
できない時に、割振り解除される。ディレクトリは、NTFSディレクトリがデ
ィレクトリ自体の削除に起因してなくなる(再帰的削除で発生する)場合であっ
ても、TxFSCB構造体に名前空間分離情報がある限り、維持される。TxF
構造体の寿命は、参照カウントを介して管理される。
態のログ記録および回復のために、TxF70は、ログ記録サービス74(図2
)を使用し、ログ記録サービス74は、長時間動作するトランザクションをサポ
ートするために、普通のNTFSログだけに頼るのではなく、複数レベルのログ
記録を可能にする。以下で明白になるように、これによって、多数の利益がもた
らされる。たとえば、通常のNTFSログは、サイズにおいて4メガバイト程度
であり、これは、現在は短期間のメタデータログ記録に適当であるが、通常のユ
ーザ定義トランザクションは、そのようなログを素早く使い果たす。また、ログ
記録されるTxFトランザクショナル動作の数に対して相対的に多数のログ記録
されるNTFS動作がある可能性が高い。さらに、NTFSメタデータコミット
動作は、ディレクトリをロックアップし、これによって、長時間を要するTxF
トランザクションが、ファイルシステムの性能に悪影響を及ぼす(単一レベルロ
グ記録方式を仮定した場合)。
本発明のトランザクショナルファイルシステムと共に使用される範囲を除いて、
本明細書では詳細に説明しない。NTFSは、NTFSが変更を行う前に、NT
FSに対するファイルシステム動作のアンドゥレコードおよび/またはやり直す
レコードを書き込むことによって、ファイルシステム動作の中断/クラッシュ回
復を提供する。NTFSログは、ファイル作成コマンド、名前の変更など、NT
FSデータ構造を変更する動作を含む、NTFSボリュームに影響する動作を記
録する、ボリュームごとのファイルである。たとえば書き込まれたバイトなどの
ユーザファイルデータではなく、メタデータがログ記録されることに留意された
い。ログは、ファイルとして維持され、システム障害からの回復のためにアクセ
スされる、すなわち、システムがクラッシュした場合に、部分的に完了した動作
を、周知の技法を使用して元に戻すかやり直すことができる。NTFSは、耐久
性を提供しない、すなわち、NTFSは、コミット時にそのログを強制しない。
ベル回復機構内で、NTFSの上に階層化される。上で説明したように、TxF
は、NTFS動作を下位コンポーネントとして扱って、ユーザレベルトランザク
ションを構築する。回復に関して、TxFは、より上位のログを維持し、ログ記
録されたNTFS動作を、TxFが「データ」の前のそれ自体のTxFログを強
制するという意味で、より上位のログに関する「データ」として扱う。この場合
の「データ」は、NTFSログであり、回復可能ストア自体である。
、より下位のNTFSログ126の前へのより上位のTxFログ124の強制は
、既に使用可能なNTFS64の回復可能性を利用する形での各ログのLSN(
本明細書ではTxF LSNおよびNTFS LSNと称する)の調整を介して
達成される。NTFSトランザクションによって管理されないデータ(すなわち
、ストリームバイト自体)について、TxF70は、本質的に、以下で説明する
ように、回復可能性を完全に管理する。
のレコードの前に強制される(TxFログをすべてのNTFS動作の前に非効率
的に強制せずに)ことを保証するために、NTFS64がそのログ126にデー
タを強制しようとするたびにNTFS64が呼び出すTxFコールバックが提供
される。この呼出しでは、NTFS64が、フラッシュされようとしている最高
のNTFS LSNを示す。それと同時に、TxF70は、NTFSコミットL
SNを各々のTxF LSNにマッピングするために、TxFが使用した最近の
NTFSトランザクションのマップ128を維持する。TxFがNTFSコミッ
トLSNの知識を有するように、名前空間変更動作が設計されることに留意され
たい。NTFSログは、比較的低い頻度でディスクにフラッシュされるという点
で、耐久性がない。その結果、適度な数のTxFレコードが、ログバッファ内に
存在し、単一のI/O動作で一緒にディスクにフラッシュされる可能性が高い。
のNTFSコミット−LSNに対応するTxFレコードまで、TxFログ124
を強制する。しかし、この最高のレコードまでのTxFログ124のフラッシュ
が、より最適であるに過ぎないことに留意されたい。というのは、より上位のロ
グが先にフラッシュされることを保証する他の方法(たとえば、NTFSがその
ログをフラッシュしようとしている時に、いつでも新しいTxFレコードのすべ
てをフラッシュする)で十分であるからである。回復中に、TxFがその回復を
開始できるようになる前に、NTFSが、その回復を完了する。
るようになるが、TxFログの末尾付近の一部のログレコードが、NTFSによ
ってコミットされないNTFS動作を実行した場合があり、そのようなレコード
が、コミットされたレコードに混ざっている可能性がある。対応するNTFS動
作がコミットされたTxFログレコードを、コミットされていないものと区別す
ることが重要である。というのは、これによって、TxFログレコードが回復中
に適用されるか否かが決定されるからである。
も、実際には行われなかった動作を元に戻すことも正しくないからである。例と
して、TxFログにログ記録される可能性がある下記の情況を検討されたい。
ことができない。毎回逆転を単純に実行することは正しくない。というのは、名
前の変更が、NTFS内で実際に発生していない場合に、YがXに名前を変更さ
れ、Xを置き換えるからである。その後、システムリンクをオープンしようとす
る試みの際に、NTFS動作が行われなかったのでリンクが存在しないので、そ
のオープンが失敗する。ファイルXが失われ、YがXに名前を変更された。しか
し、TxF70が、名前変更が行われたか否かを確認できる場合には、アンドゥ
動作を適用するか否かを正確に判定することができる。
うかを判定するために、動作を要求する前に、TxFが、対応するレコードをそ
のログ124に書き込む。その後、TxFは、TxF LSNを受け取り、これ
を、所与のファイルについて要求された動作と共にNTFS66に供給する。N
TFS66に、コミットに続いて対応する(1つまたは複数の)NTFSログレ
コードにTxF LSNを置かせることが可能ではあるが、これは非効率的であ
る。その代わりに、NTFSが動作をコミットする時に、コミットの一部として
、NTFSが、TxF LSNを、そのファイルのNTFSボリューム上で維持
されるレコードに書き込む。NTFSでは、マスタファイルテーブル130とし
て知られる構造体内で、ボリューム上の各ファイル(およびディレクトリ)に関
するレコードが、既に維持されている。したがって、TxF LSNは、図11
に一般的に示されているように、このファイル(たとえばファイル3)のレコー
ドのフィールド(たとえば1323)に書き込まれる。その代わりに別のデータ
構造体を使用することができるが、ファイルごとのレコードが、各NTFSボリ
ューム上で既に使用可能であることに留意されたい。
に実行させた後に、TxFは、まず、TxFログにログ記録された動作がクラッ
シュの前にディスクに対して行われたか否かを判定するために検査する(Ntf
sTxFGetTxFLSN(file−id、*TxFLsn)呼出しを介し
てNTFSを呼び出すことによって)。ファイルに関するNTFS動作が、クラ
ッシュの前にコミットされ、ディスクに存在した場合には、TxFログ124の
レコードのTxF LSNが、ファイルレコードフィールド内のTxF LSN
以下である。というのは、NTFS回復によって、ファイルレコードが復元され
ることが保証されるからである。ファイルレコード内のTxF LSNが、Tx
Fログレコード内のLSN未満である(またはそのファイルのファイルレコード
内にない)場合には、NTFS動作がコミットされなかったこと、対応するTx
Fログレコードを元に戻すために適用してはならないことがわかる。
除される場合に、TxFは、削除ログレコードがログ内で忘れられるまで、ファ
イルレコードの削除を遅延する(したがって、file−idを保存する)。こ
れは、ファイルへのシステムリンクを作成することによって行われる。さらに、
新しいファイルが作成される場合に、TxFログレコードは、NTFSが、作成
に使用しようとしているfile−idを決定する後まで、書き込まれない。こ
れによって、TxFログ内にfile−idが正確に記録される。非トランザク
ショナル作成についても、NTFSは、ファイルレコード内に現在のTxF L
SNを書き込み、これによって、file−id(シーケンス番号を含む)が回
復ウィンドウ中に再利用される場合を処理し、TxFに、この作成の前のログレ
コードをスキップさせることが期待されることに留意されたい。
時に存在しないことがわかった場合には、トランザクションがコミットされた後
だがクラッシュの前に非トランザクショナルにファイルが削除されたか、作成動
作のすぐ後にクラッシュが起きたかのいずれかである。第1の場合に、TxFが
、かかわっておらず、ファイルレコードが、回復ウィンドウ中に削除されたこと
に留意されたい。第2の場合には、TxF作成ログレコードが、TxFログディ
スクに送られたが、それに関するNTFSコミットが、持続しなかった。この第
2の場合は、作成ログレコードを処理する時に限って検出される。
ile−idが存在しないことがNtfsTxFGetTxFLSNによって見
られるレコードを、単純に無視することができる。
動されるやり直しアクションおよびアンドゥアクションが、NTFSフィルタド
ライバモデルのフィルタドライバスタックの最上部で開始され、中間のフィルタ
ドライバがそのアクションを見ることができるようになることに留意されたい。
やり直しアクションおよびアンドゥアクションに対応するIRPは、特別にマー
クされ、その結果、フィルタドライバが、それらを無視することを選択できるよ
うになる。これらのIRPには、通常のトランザクション状態が含まれ、ファイ
ルオブジェクトは、普通にトランザクションオブジェクトをポイントする。しか
し、トランザクションが、特別な状態であるから、TxFは、それらを特別に扱
う必要があることを知る。たとえば、TxFは、これらのアクションをトランザ
クションに含めることを試みず、また、それらを非トランザクショナルとして扱
わない。
の中でも、ページ変更を記録するためにログ記録サービス74と共に働く。上で
述べたように、バージョンを保存し、中断の場合のアンドゥ動作もサポートする
ために、変更がAPIを介してメモリ内のページに対して実際に行われる前に、
対応するアンドゥレコードが、TxFログ126に書き込まれる(強制されない
)。図12に示されているように、その後、ページ全体が書き込まれ(通常は、
以下で説明するTOPSストリーム134と称する、ページのインメモリおよび
オンディスクのストリームに)、これによって、バージョン管理されるリーダー
が、単一のI/O動作でページを読み取ることが可能になる。ログ書込の後に、
このファイルの変更テーブル98が、ログシーケンス番号(TxF LSNおよ
びTOPSストリーム134内のオフセット)を用いてマークされ、その後、変
更がページに適用される。
したセクションによって変更されたページおよび/または現在書き込まれつつあ
るAPIの前の呼出しによって変更されたページから生じるものなどについて、
ページング書込が実行される。このページング書込は、バックグラウンドスレッ
ド内とすることができ、あるいは、コミット時のフラッシュの一部とすることが
できる。どの場合でも、TxF70は、まず、変更テーブル98(図6)を検査
して、アンドゥがTxFログ126に取り込まれているかどうかを調べる。そう
である場合には、システムは、テーブル98内でマークされたTxF LSNま
でTxFログ126を強制し、これは、ほとんどの場合に、I/Oなしでリター
ンする。変更テーブル98がマークされていない場合には、ページのアンドゥバ
ージョンが、獲得され、TOPSストリーム134およびTxFログ126に書
き込まれる。複数ページI/Oが、一般的である。というのは、バックグラウン
ドスレッドが、ファイル−オフセットの順でページを一緒にグループ化すること
を試みるからである。これらの場合には、複数のアンドゥが、単一の大きいI/
Oで書き込まれる。そのような場合のアンドゥは、単一の大きいI/Oで読み取
られる。
スク上でTxFログ126およびTOPSストリーム134にあり、変更された
ファイルページが、ファイル内のそれぞれの位置にある。その結果、コミットが
、コミットレコードをログ126に書き込むという単純なことになる。中断は、
アンドゥレコードを逆の順序で進み、それをベースファイルに適用し、その後に
ファイルをフラッシュし、その後に中断レコードを強制的に書き込むことによっ
て達成される。これらのアンドゥレコードは、中断レコードがログ126に存在
する場合には回復時に無視される。頻繁でない動作(中断)中にファイルをフラ
ッシュすることによって、大きい(ページサイズの)補正ログレコード(CLR
)をやり直しレコードとして書き込む必要がなくなり、スペースが大幅に節約さ
れることに留意されたい。
と同一すなわち、ファイルのアンドゥイメージは、まず、ファイルの前のバージ
ョン内で検索される。イメージがメモリ内に常駐する場合には、アンドゥイメー
ジが、メモリから検索される。そうでない場合には、イメージは、キャッシング
されないI/O動作によってディスクから読み取られる。というのは、ダーティ
ビットが、プロセスプライベートであり、必ずしも既知ではないので、現在常駐
しているメモリイメージがダーティであるかどうかを判定する方法がないからで
ある。
ってページが変更されるたびに、そのページが、その場ですなわちキャッシュ内
で編集される。キャッシュは、その後、さまざまな時にディスクに書き込まれる
(図8)。しかし、ページデータを変更する前に、古いページデータを保存する
必要があり、その結果、トランザクションが中断されるかシステムが障害を発生
した場合に、古いページデータを復元できるようにする。この目的のために、古
いページが、TOPSストリーム134にコピーされ、その変更が、TxFログ
126にログ記録される。図12に示されているように、ログレコード(たとえ
ばX2)に、このページ内のオフセットが含まれ、これによって、ログ126が
データを維持する必要がなくなり、それに対応するレコードだけが維持される。
したがって、ページの復元をイネーブルするために、TxFは、経時的な変更を
シーケンシャルに記録する変更ログを使用する。バージョン管理のために、Tx
Fログ126にアクセスするのではなく、効率のために、変更テーブル98内の
TOPSストリーム134へのオフセットが使用されることに留意されたい。し
かし、システム障害の場合には、インメモリ構造体であるバージョンストリーム
制御ブロックが、回復時に存在しない。さらに、インメモリだけのファイルのす
べてのバージョンが、回復不能である。したがって、回復のために、ログ内のレ
コードを、障害中のトランザクションを中断し、障害の前にコミットされたトラ
ンザクションを耐久性のある形で完了するのに使用することができる。ログエン
トリ(またはログレコード)のシーケンシャルな性質によって、変更の順序が保
存される。
つの部分に分割される。メインログとインラインの部分では、他のログに関する
順序が保存され、他方の部分には、動作の詳細を提供する(かなり多数の)バイ
トすなわち変更されたページデータが含まれる。したがって、本発明の一態様に
よれば、図12に示されているように、ページがトランザクションを介して変更
されるたびに、古いページデータが、(隣接する)TOPSストリーム134に
コピーされ、変更がTxFログ126にログ記録される。上で説明したように、
トランザクショナルリーダーをコピーされたページにマッピングするためにテー
ブルを調整した後に、そのページを変更することができる。図12に示されてい
るように、ログレコード(たとえばX2)に、コピーされたページのストリーム
内のこのページへのオフセットが含まれ、これによって、メインログでデータを
維持する必要がなくなり、それに対応するオフセットを有するレコードを維持す
るだけでよい。
される。その結果、ページもログ126も、所与の時点で持続していない場合が
あり、たとえば、ログ126がディスクにフラッシュされ、かつ/またはページ
がディスクにフラッシュされる前にシステムに障害が発生する場合がある。ペー
ジデータが失われないことを保証する単純な方法が、この2つの間の順序付けを
強制する、すなわち、ログレコードをディスクにフラッシュする前に必ずページ
をディスクにフラッシュすることである。その後、回復時にログを使用する時に
、ログレコードが存在する場合に、そのレコードに対応する正しいページバージ
ョンが、持続していることも既知になる。しかし、この順序依存性は、ログフラ
ッシュ動作が、多数の関連しない要因に依存して異なるログに対してより効率的
に動作するという点で、システム性能を大きく低下させることがわかった。たと
えば、性能を改善するために、ページは、通常は、遅延書込を使用して、たとえ
ば1時に16ページなど、複数のセットでフラッシュされるが、ログは、満杯の
時またはバックグラウンドプロセスで異なる時にフラッシュされる可能性がある
。
順序で、なおかつ障害の場合に正しいページが復元されることを保証する形で、
永続ストレージにフラッシュできるようにするシステムおよび方法が提供される
。これは、ログ126およびページデータに、事実上、この2つの情報を互いに
一貫性のある状態で、たとえば時間的にリンクする情報を追加することによって
達成される。具体的に言うと、ページの現在の状態を表すサイクルカウント13
6(たとえば、1バイトだが、任意選択として1ワードまたはさらに長い単位を
使用することができる)が維持され、たとえば、サイクルカウントは、TOPS
ストリーム134へのポインタが先頭にラップアラウンドするたびに増分され、
そのサイクルカウントが、ログレコードと同期化される。
134にコピーされたページに関連するログレコード内でサイクルカウント値を
維持することによって、同期化が達成される。これは、図12では、一般的に、
レコードのデータフィールドの一部の展開された表現を提供する、符号138の
箱によって表される。やはり図示されているように、各セクタの最後の部分(た
とえばバイト)が、それを保存するためにログレコードにコピーされる。ページ
が、本明細書に記載のようにそれぞれ512バイトの8つのセクタを含むが、諒
解されるように、他のページサイズおよび/またはセクタサイズが可能であるこ
とに留意されたい。また、ストリームデータ内の各セクタの最後の部分は、図1
2で、各セクタの最後の部分で置換されたサイクルカウントを有するページデー
タの展開された表現を提供する符号140の箱によって一般的に示されるように
、サイクルカウントに置換される。図12で表されているように、ページとログ
レコードの両方がフラッシュされる場合に、各セクタの末尾のサイクルカウント
値が、レコード内のサイクルカウント値と一致する、すなわち、両方が、一致す
る署名を有する。
は、システムは、インライン(ログ)レコードを見つけず、したがって、そのペ
ージは、見つからず、復元されるものはない。この状態は、一貫性があることが
わかっている。
の前にフラッシュされた場合とそうでない場合がある。図13は、一般的に、ロ
ールバック中にレコードに達した時に、ページおよびそのログレコードの両方が
ディスクにフラッシュされたかどうかを判定する論理を表す。まず、ステップ1
300で、レコードにアクセスして、ストリーム134への保管されたオフセッ
トを介してページを見つける。次に、ステップ1302で、ページを読み取り、
それから抽出された各セクタの最後の部分を読み取り、ステップ1304で、ロ
グレコードに保管されたサイクルカウントと比較する。インライン(ログ)レコ
ードだけがディスクに書き込まれた場合には、クラッシュの後に、インラインで
ない部分(ページデータ)の各セクタに保管された一意の署名(各サイクルカウ
ント)が、インラインレコードデータに保管されたサイクルカウントと一致しな
い。この場合には、ステップ1306に示されているように、システムは、古い
ページがディスクに書き込まれなかったので、新しいページも書き込まれなかっ
た(これは、2つのログがフラッシュされる場合に限ってフラッシュされる)と
結論する。したがって、このページは、すでに、その前の、古い状態であること
がわかる。
セクタの最後の部分のサイクルカウントと一致する場合には、ログとページの両
方が、成功裡にフラッシュされたことがわかる。したがって、コピーされたペー
ジは、持続したことがわかり、これによって、ステップ1308で、ログレコー
ドに保管された各セクタの最後の部分が、コピーされたページに復元される。
なバージョンを提供することができる。現在のページに対して行われたログ記録
された変更のすべてを、新しいリーダーおよび/またはライタが見るのに使用す
ることができる(ステップ1310)。この場合に、古いデータが正しく取り込
まれ、中断の一部としてファイルページに復元されなければならないことがわか
る。中断にもかかわらず、既存のトランザクショナルリーダーが、TOPSスト
リーム134から古いデータを読み取り続けることに留意されたい。
く一部がコピーされた、引き裂かれた(部分的な)書込が検出されることに留意
されたい。ディスクハードウェアは、セクタが完全に書き込まれることを保証す
るが、データのページ(たとえば8セクタ)が一単位として書き込まれることは
保証しないことに留意されたい。その場合には、サイクルカウントが、「n」と
(おそらくは)「n−1」の値の何らかの混合物になり、署名が、ログ記録され
た署名情報と一致しなくなる。そのような情況は、ページ全体が持続しなかった
かのように扱われる。
比較的長い時間にわたってメモリ内にあったページ)の署名を構成するカウント
と一致し、したがって、部分的な書込が検出不能になる可能性があることに留意
されたい。たとえば、ラップしたサイクルカウントが使用され、かつ、それがペ
ージに保管された既存のサイクルカウントと一致する場合に、署名は、ページの
すべてまたはページの一部のどちらがコピーされる場合でも同一になる。理解さ
れるように、この場合の署名検査は、実際にはそうでない時にページデータ全体
が持続したことを示すはずである。
、各サイクルラップアラウンドイベントの後で一度ページを読み取って、一致が
ないことを検証することである。一致がある場合には、2つのサイクルカウント
の一方を調整して、一致を回避することができる。これがサイクルラップアラウ
ンドごとに1回だけ(すなわち、サイクルカウントが0にラップするたびに)発
生することを保証するために、別の検証ビットマップ141を使用して、各ペー
ジの「検証」状態を維持することができる。すなわち、各ビットが、ラップの後
にある状態になり、サイクルカウント一致についてページが初めて検査される時
にトグルされる。フリースペースビットマップを使用して、ページが空いている
か使用中かを追跡し、効率のために、上の解決策で、追加のビットマップを追加
して検証状態を追跡することに留意されたい。
態を追跡することであるが、「検証」状態がページ使用の時にセットされる時に
、サイクルカウントを、上で説明したようにページに書き込み、書込を強制する
ことである。書込に成功する場合には、その書込は部分的でない。大きいTOP
Sストリームの場合に、この代替案は、サイクルカウントがページと一致するこ
とが比較的まれである可能性が高いので、少数の入出力I/O動作に起因してよ
くスケーリングされる。
せることである。すなわち、ページが高速メモリに常駐する場合に、実際のディ
スク読取が不要なので第1(読取)代替案を実行し、そうでない場合に第2(書
込)代替案を実行する。
に書き込み、これによって、トランザクションにまたがるページ書込のバッチ化
が妨げられる。トランザクションにまたがるページ書込のバッチ化を達成するた
めに、回復に関してその逆を実行する、代替の「遅延やり直し」方式を提供する
ことができる。この方式では、やり直しレコードをログに書き込み、ベースファ
イルを読み取っているリーダーがない時に、古いコミットされたトランザクショ
ンをベースファイルに適用する。古いコミットされたバージョンの読取をサポー
トするために、変更を、インプレース(その場)で行うのではなく、ページの既
存のインプレースバージョンがもはや不要である時に限ってインプレースでファ
イルに適用することができる。
共有し、たとえば、非常に似た形のバージョン管理を、バージョン制御ブロック
および複数のインメモリストリームを用いてサポートする。しかし、変更テーブ
ルは、アンドゥではなく、やり直しページのLSNを保持する。図14に一般的
に示されているように、最も古いディスクバージョンが、必ずベースファイルに
なり、より新しいバージョンは、その上での増分変更を構築する。より古いバー
ジョンは、リーダーがいなくなる時に、ベースファイルにマージされる。この方
式の主な長所を活用するために、複数のバージョンを、同一時にベースファイル
にマージすることができ、したがって、I/O効率が得られる。複数のバージョ
ンを同一時にマージすることのもう1つの利益は、ログを長い読取で効率的に読
み取ることができることである。
バッキングするページが書き込まれる可能性があり、本質的に、シーケンシャル
ログが、回復ログの二役にもなるランダムページファイルになり、これがシステ
ムのボトルネックになる可能性がある。
バージョンに関連するバージョン制御ブロック(TxFVSCB)があり、各T
xFVSCBは、バージョンによって変更されたページ番号を記録するインメモ
リテーブルである変更テーブルをポイントする。各ページ番号と共に、少なくと
も1回書き込まれている(やり直しイメージ)場合に、ディスク上のページを見
つけるためにディスクアドレスを保管することができる。ディスクアドレスがな
いことは、ページが一度もディスクに書き込まれていないことを意味する。メモ
リを節約するために、ページがディスクに連続的に保管されている場合に、ペー
ジ範囲を1エントリに保管することができる。
ットレコードのLSNである。現在更新可能なバージョンについては、そのよう
なLSNはない。SOPポインタは、このバージョンに対応するセクションオブ
ジェクトポインタ構造体へのポインタである。このポインタを使用して、インメ
モリページを見つけることができる。バージョン長も、同様に提供される。
ジョンが、ベースストリームであり、変更テーブルには、このバージョンのエン
トリが一切含まれない。
イルハンドルに与えられる。最新バージョンのインメモリストリームは、ログに
よって部分的にバッキングされる(完全にベースファイルによるのではない)。
したがって、ストリームに対する変更は、ログに書き込まれる。読取は、ページ
がバージョンウィンドウ内のどのバージョンでも変更されていない場合にはベー
スファイルから行われ、そうでない場合には、ログから行われる。
がそのバージョンで変更されているかどうかを判定する。そうである場合には、
I/Oを、ログ内の適当な場所に向けて、ページを取り込んで、フォールトを満
足する。そうでない場合には、ページについて、次に前のバージョンに問い合わ
せる。この処理は、ページの最も最近にコミットされたコピーが見つかるまで継
続される。複数のバージョンに、ページのコピーが含まれる場合には、VMM呼
出しによってそれらのメモリ常駐性(residency)を検査する。メモリ
常駐ページが見つかった場合には、それをコピーし、そうでない場合には、最も
最近のバージョンのLSNを使用してログから読み取る。ページが、常駐性が検
査された時とコピーが行われた時の間にシステムメモリからトリミングされたか
どうかが重要でないことに留意されたい。というのは、再帰的なフォールトが生
成され、その後にページがコピーされるからである。これらのページをコピーす
る先のシステムアドレスを得るために、キャッシュマネージャを使用して、それ
らをシステムアドレス空間にマッピングする。
可能であるが)、「X」を用いてマークされたページが、バージョン内の変更を
表す。変更テーブル1420〜1423に、書き込まれたページのLSNが示さ
れている。最も最近の(更新可能な)バージョンの一部のページは、まだ書き込
まれていない。このシナリオでは、FileObjectBがページ50にアク
セスする例を検討されたい。ファイルバージョンV1の変更テーブル1421に
、このページがそのバージョンで変更されていないことが示されている。したが
って、フォールトは、そのページのファイルバージョンV0の常駐性を検査し、
常駐する場合に(フォールトをとりあげないで)それをコピーすることによって
処理される。ファイルバージョンV0が、ページ常駐を有しない場合には、ディ
スクから読み取る(この場合には、ベースファイルから)。
、そのページが、メモリ内にある場合に、アクセスは単純に機能する。しかし、
そうでない場合には、ページフォールトが生成され、読取は、ログのLSN25
00から読み取ることによって満足される。
検討されたい。 このページは、バージョンV2で変更されていないので、バー
ジョンV1が検査され、読取は、メモリイメージ(常駐する場合)から、または
ログのLSN2000を読み取ることのいずれかによって満足される。
トおよびストリーム名も記述するやり直しレコードの形でログに書き込まれる。
この時に、LSNが、そのバージョンの変更テーブルのページスロット内でマー
クされる。ページ書込は、システムスレッドの1つによってバックグラウンドで
行われ、通常は、シーケンシャルページ順で書き込まれる。コミットの時に、そ
のバージョン内のダーティページが、ログに書き込まれ、それにコミットレコー
ドが続く。ページが、トランザクション中に複数回書き出される場合には、複数
のログ書込が行われる。これらの書込は、ログの末尾に行き、変更テーブルエン
トリが、新しい位置をポイントするように変更される。間に入る読取トランザク
ションなしでコミットの後に新しい書込トランザクションがスタートする場合に
は、メインメモリストリームが、新しいトランザクションによって再利用される
。そうでない場合には、メインメモリストリームが、リーダーによって請求され
、ライタトランザクションは、新しいストリームを作成し、これを処理する。遅
延やり直し方式では、変更されたページが、TOPSストリームに書き込まれて
(まさにインプレース更新方式と同様に)、関連する利益が達成されることに留
意されたい。
トランザクションのやり直し情報が、ログにあり、メインデータストリームに簡
単に適用できるからである。バージョン制御ブロックが、インメモリ構造体であ
り、したがって、回復時に存在しないことに留意されたい。
保存する必要がない。そのような時に、バージョンが、最も古いものから始めて
、1時に1バージョンずつメインストリームにマージされる。バージョンは、マ
ージされる時に、バージョンのリンクリストから除去される。マージは、そのバ
ージョンの変更されたページ(ページ番号は変更テーブル内でルックアップされ
る)をベースストリームにコピーし、ディスクに強制することによって、1時に
1ページずつ行われる。このコピー動作では、現在常駐していないページについ
て、ログを読み取る。可能な場合には、ログからページ範囲を取り込むために、
大量のI/Oが行われる。たとえば、図14では、バージョン管理をサポートす
るためにバージョンV0がこれ以上必要でない場合に、バージョンV1をバージ
ョンV0にマージすることができる。このマージは、バージョンV1をロックせ
ずに行うことができる。というのは、マージが進行中である間は、各ページのコ
ピーが、バージョンV1およびバージョンV0に存在し、バージョンV1の変更
テーブルが、この処理を介して変更されないからである。
には、V1のバージョン制御ブロックを、単純にバージョンのリストから除去す
る。一般に、マージは、複数のバージョンがリーダーから解放されるまで遅延さ
れる。この例では、V0、V1、およびV2を、これらがバージョンウィンドウ
から出た時に、一緒にベースファイルにマージすることができる。複数バージョ
ンマージについて、変更テーブルが、まず、同一エントリが複数のテーブル内で
変更される時に、最高のバージョン番号からのLSNが選択される形でマージさ
れる。これは、本質的に、トランザクションにまたがる書込をバッチ化し、この
方式の長所の1つである。バージョンをマージした後に、そのログレコードは、
アクティブログからの除去の資格がある。
バージョンウィンドウが前方に移動する。その時に、いくつかのバージョンを、
マージの資格があるものとしてマークすることができる。複数のバージョンがマ
ークされた時に、作業アイテムが、マージを行うためにシステムスレッドの1つ
に置かれる。
実行する。インプレース更新方式は、アンドゥを同期式に読み取る(並列リーダ
ーが最近読み取った場合など、アンドゥが時々メモリ内で見つかる場合があるの
で)。インプレース更新方式は、ページをベースファイルに書き出し、アンドゥ
をログにシーケンシャルに書き込む。対照的に、遅延やり直し方式は、やり直し
を多数のランダムI/Oで書き込む必要があり、ログをランダムに読み取ってバ
ージョンをマージする必要がある。さらに、遅延やり直し方式は、バージョンに
またがる書き込みを最小にするが、ファイルページをディスクに書き込む必要が
ある。これらのログページがメモリ内で見つかる可能性は、したがって、マージ
が遅延される長さに関して、非常に低い。
、最も最近のメモリストリームが、ベースファイルではなく、ログによってバッ
キングされる。これは、最も一般的に使用されるストリームになる可能性が非常
に高い。というのは、これが、更新された作業を処理し、比較的にログに重荷を
課すからである。バージョン管理されるリーダーについて、両方の方式が、ログ
をページングデバイスとして使用する。
されるので、コミット処理と同期して行う作業がより少ないが、書込APIまた
はメモリ更新がキャッシュに対して実行されるので、書込APIまたはメモリ更
新のそれぞれについて、ライタにとってより高速には見えない。その代わりに、
コミット時のフラッシュに、コミットの応答性の差が現れる。より大きい更新ト
ランザクションについて、バックグラウンドシステムスレッドが、非同期書込を
スケジューリングする可能性が高く、これによって、多少は応答性の差が減る。
同様に、インプレース更新方式は、ファイルAPIに関するアンドゥ作業をバッ
クグラウンドで行うことによって、多少はコミット時の重荷を減らすことができ
るが、ユーザがマッピングしたセクションで行われた変更について実現可能では
ない。
ンプレース更新方式が、非同期マージ動作のスケジューリングの問題を扱う必要
がないからである。また、インプレース更新方式は、フォアグラウンドアクティ
ビティとバックグラウンドアクティビティの間の速度不一致の問題を扱う必要が
ない。この速度不一致は、時々、ログスペースをブロックし、リソース獲得問題
を生じる。
る場合に、やり直しレコードがログ内で使用可能なので、通常のランタイムログ
記録アルゴリズムを変更せずに可能である。しかし、アンドゥレコードがないの
で、トランザクションに関してやり直しを適用する前に、トランザクションのコ
ミット状況を見つけるために、ログの多少の前方スキャンを行う必要がある。
カーネル「リダイレクタ」プロトコル(たとえば、SMBプロトコル)を介して
アクセスされる。このプロトコルは、クライアントコンピュータ146で実行さ
れるファイルシステム動作を、リモートコンピュータ148、たとえばサーバ上
で反映する。もちろん、他のプロトコルおよび機構(たとえば、Wev DAV
、NFSなど)によって、同等の結果を達成することができる。この目的のため
に、非トランザクショナルファイルシステムアクセスと同様に、リモートファイ
ルが、識別され、IRPが、クライアントコンピュータ146上のリダイレクタ
ファイルシステムドライバ150に向けられる。既知のように、このドライバ1
50は、クライアントコンピュータのキャッシュと対話して、データを読み取り
、書き込む。リモートコンピュータのファイルシステム154に向けられたアプ
リケーション152からのファイルシステム要求などの要求(たとえば、リモー
トディスク156上のファイルG:\Fnameへのアクセス)は、リダイレク
タドライバ150によってインターセプトされ、リモートコンピュータ148に
送信され、ここで、エージェント158(デーモン)スレッドが、それらをドラ
イバスタックの最上のファイルシステム動作に変換する。
プンするために、クライアントリダイレクタが、たとえば、COM/OLEを使
用して、DTCトランザクションオブジェクト160Cを、サーバ148にオー
プン要求と共に供給されるフラットバイトストリームにマーシャリングする。諒
解できるように、他の機構が、同等の機能および/または結果を達成することが
でき、COM/OLE動作を本明細書で説明するが、本発明のこの態様は、CO
M/OLEに制限されない。COM/OLEの例では、トランザクションオブジ
ェクト160Cが、オープンを要求するクライアントスレッドにアタッチされる
。サーバコンピュータ148は、そのカーネル空間内にDTCトランザクション
オブジェクト160Sのコピーを保持できる限り、トランザクションがどこから
発するかに関係しないことに留意されたい。同様に、サーバ148は、トランザ
クションの代わりにどのスレッドまたはプロセスが働くかに関心を持たない。そ
うではなく、サーバ148のエージェント158が、フラットバイトストリーム
を使用可能なオブジェクトに変換し、このオブジェクトが、カーネル内で使用可
能になる。この時に、サーバは、要求をローカルトランザクション160Sと同
様に扱い、それをサーバ上の対応するDTCプロキシ162Sに参加させ、本質
的に、DTCに、後続のトランザクション作業についてサーバ148(および、
リソースマネージャとしてその中のTxFコンポーネント164)に連絡するよ
うに指示する。サーバが、このトランザクションオブジェクト160Sを所有す
るので、これが適当であることに留意されたい。トランザクションIDは、分散
名前空間にあるので、トランザクションは、どこからでも発することができるが
、トランザクションidに基づく正しいファイル同期化は、サーバ148で行わ
れる。
であるかのように扱い、これによって、ローカルTxFコンポーネント164が
、トランザクショナルファイルシステム要求を処理する。しかし、サーバ148
は、対応するファイルオブジェクトが、クライアント146によってオープンさ
れたファイルに関するものであることを記憶し、クライアントがページをキャッ
シングしたことを記憶する。したがって、コミット時に、サーバ148は、クラ
イアント146に(リダイレクタプロトコルを介して)そのキャッシュをサーバ
にフラッシュし、クライアント側でオープンされた可能性があるマッピングされ
たセクションのすべてをフラッシュする(クライアントが、マッピングされたセ
クションについて追跡する)ように通知する。データは、普通に、多少遅れた形
で、すなわち、クライアントのキャッシュ/メモリからページアウトされる時に
必ず、サーバ148に到達する。データが到達する時に、そのデータによって、
サーバのキャッシングされたコピーが上書きされる。これが、複数のオープンハ
ンドルまたはマッピングされたセクションがお互いを上書きする、従来のファイ
ルシステムモデルに類似することに留意されたい。
eFileExがITransactionオブジェクトを(たとえばDTCの
ItransactionTransmitterメソッドを介して)バイトの
フラットコレクションにマーシャリングするという、上で説明した概念が、ネッ
トワークを介するITransactionのマーシャリングにも使用される。
ITransactionTransmitter呼出しではトランザクション
マネージャとの通信が不要なので、これは比較的安価であり、したがって、作成
ごとに行うことができる。しかし、Receive呼出し(上で説明した)は、
トランザクションコーディネータ(またはそのプロキシ)との通信を必要とし、
このトランザクションコーディネータは、リダイレクタベースの場合に、リモー
トコンピュータ148上にある。それにもかかわらず、ITransactio
nReceiverが、ネットワーク全体で(サーバ148上で)トランザクシ
ョンごとに1回だけ行われるので、このトランザクションコーディネータ162S との通信のコストは、大きくない。
が、透過的にサポートされる。すなわち、アプリケーションが、本質的に、リモ
ートファイルアクセスを使用して、ならびに複数のコンピュータでアプリケーシ
ョンプロキシを作成することによって直接に、ネットワーク上のどこにあるファ
イルでもアクセスすることができる。その結果として、同一のトランザクション
に、1つまたは複数のローカルプロセスとリモートプロセスを同時に含めること
ができる。
ートアクセス用にオープンさせた場合について最適化される。その場合に、ファ
イルのローカルディスクキャッシュを保持することによって、多数のネットワー
クトラフィックが、回避される。変更は、必要な時だけすなわち、ファイルのク
ローズの時だけフラッシュされる。しかし、この配置は、別のクライアントが同
一のファイルを同時にオープンした時に、必ずディスエーブルされる。便宜的ロ
ック(opportunistic lock)(Oplock、本質的に所有
権を示すトークン)によってこれがイネーブルされ、これによって、上の「クロ
ーズ時にフラッシュ」方式に対する変更が最小になる。具体的に言うと、コミッ
ト時に、クライアントが、通常のように、サーバに変更をフラッシュするように
求められる。中断の時には、クライアントが、クライアントハンドルを「運が尽
きた」としてマークするように求められ、ハンドルがクローズされた後に、変更
が単純に捨てられるようになる。リダイレクタプロトコルを強化して、サーバが
、ローカルの場合と同様に、いくつかの情況でクライアントがマッピングしたセ
クションを無効化できるようにすることができることに留意されたい。
ザクションの重要なプロパティである。トランザクショナルファイルシステムで
は、分離が、ファイルに保管されるデータ(上で説明した)だけではなく、ファ
イルおよびファイルがその下で編成されるディレクトリの名前階層にも適用され
る。本発明のもう1つの態様によれば、ファイル/ディレクトリ名前階層内で名
前空間分離を実施する技法が提供される。この技法は、トランザクションの期間
にわたる名前またはディレクトリのロックを必要とせず、トランザクションに使
用されているファイルに対して試みられる非トランザクショナル動作と共に動作
する。
イルを検討されたい。ファイルの代わりに、ディレクトリを作成することができ
るが、説明を単純にするために、本発明を、主にファイルに関して説明すること
に留意されたい。しかし、ファイルおよびディレクトリが、以下で説明する名前
空間動作に関して一般的に同等に扱われることを理解されたい。トランザクショ
ンによって作成されたファイル(またはディレクトリ)は、それを作成するトラ
ンザクションからは制約なしでアクセス可能でなければならないが、他のトラン
ザクション、たとえばそれをオープンしようとする別のトランザクションまたは
その親ディレクトリをリストしようとする別のトランザクションに可視になって
はならない。作成するトランザクションがコミットする時に限って、そのファイ
ルを他のトランザクションに可視にしなければならず、そのかわりに中断された
場合には、ファイルが他のトランザクションに可視になってはならない。非トラ
ンザクション(たとえば、親ディレクトリの列挙を要求するもの)は、そのよう
なファイルを見るが、しかし、そのようなファイルを、コミットされるまで非ト
ランザクションに不可視にすることが、代替的に可能である。
ザクションによって削除される場合に、削除されるファイルは、コミットの時ま
で、削除が全く発生しなかったかのように、他のトランザクションからアクセス
可能であり続ける必要がある。しかし、削除するトランザクションは、削除の影
響を見、その場所で同一の名前を持つ異なるファイルを作成することができる。
コミット時に、削除されたファイルが、除去される。非トランザクションは、削
除の影響を見る。すなわち、削除されたファイルを見ないが、非トランザクショ
ンは、そのファイル/ディレクトリを削除したトランザクションが中断し、削除
が元に戻される場合の衝突を避けるために、コミットしていないトランザクショ
ンによって削除されたものと同一の名前の新しいファイルを作成することができ
ない。やはり、その代わりに、非トランザクションを、異なるトランザクション
であるかのように扱い、したがって、トランザクションによって削除されたファ
イルを見続けるようにすることが、実現可能ではあるが、これは好ましくない。
を変更される場合に、そのファイルは、他のトランザクションに関して元のディ
レクトリ内で元の名前で使用可能であり続け、新しい名前は、他のトランザクシ
ョンに可視にならない。名前を変更するトランザクションは、名前変更の影響を
見、古い名前を使用して異なるファイルを作成することができる。名前変更が、
本質的に、新しいリンクの作成と古いリンクの削除の組合せであることに留意さ
れたい。
明は、トランザクションの期間について、他のトランザクションによる使用のた
めに名前空間の状態を保存する。この目的のために、図16〜18に示されてい
るように、分離ディレクトリ1701〜1704と称する別のディレクトリが、
作成され、名前空間動作を実行するトランザクションによって変更される各々の
NTFSディレクトリにリンクされる。具体的に言うと、各分離ディレクトリ(
たとえば1701)には、親ディレクトリ(たとえばディレクトリD3)のTx
FSCB構造体に関連する検索構造体(たとえば、2進検索木)が含まれる。さ
らに、分離ディレクトリ検索構造体および関連する操作ルーチンに、エントリの
追加、名前を用いるエントリの高速ルックアップをサポートし、ディレクトリ列
挙アルゴリズムもサポートする一般インターフェースが含まれる。
って影響される個々の名前が含まれ、これらの分離ディレクトリは、メインメモ
リ構造体だけである。この構造体の各エントリには、名前に関連するトランザク
ションID(Tid)と、トランザクションTidに可視と他者に可視の2つの
フラグを有する可視性ディスポジション(visibility dispos
ition)も含まれる。これらの可視性フラグの一方または両方を、独立にセ
ットすることができる。分離ディレクトリ構造には、ShortName/Lo
ngNameフラグも含まれ、ここで、ペアリングが使用可能である場合に、構
造体に、ペアリングされた名前に対応する構造体へのポインタが含まれる。名前
がTidによって予約され、他者がそれを請求できないことを示すフラグ、Fi
d(削除された名前および変更された名前に関してcreate()をリダイレ
クトするのに使用される)、および他の情報すなわち、ディレクトリ列挙に使用
される、タイムスタンプおよび類似物などのNTFSによって複製される情報も
提供される。スペース効率のために、構造体を、Name、情報へのポインタ、
他の名前へのポインタ、および他の情報に分離することができる。これによって
、2つの名前によって共有される他の情報の単一の組がもたらされる。
、ファイルF3が、トランザクションT1によって削除される場合に、ファイル
F3の名前およびさまざまな情報が、その名前がNTFSディレクトリD3から
除去されるのと(本質的に)同時に、分離ディレクトリ1701に追加される。
NTFSでファイルを削除するためには、オープンファイルが削除についてマー
クされ、ファイルシステムが、オープンハンドルのカウントを維持しながらその
ファイルをクローズし、オープンされたままのハンドルがなくなった時に削除を
実行することに留意されたい。さらに、分離ディレクトリ1701は、このトラ
ンザクションT1または別のトランザクション(たとえばT2)による以前の動
作から既に存在する可能性があり、あるいは、この削除動作をサポートするのに
必要な場合に作成される可能性があることに留意されたい。削除動作を、さらに
、以下で図19の流れ図に関して説明する。
のアクセスは、分離ディレクトリ1701を使用してサービスされ、これによっ
て、トランザクションT2が、ファイルF3を見続ける。しかし、ファイルF3
を削除したのと同一のトランザクションT1(または非トランザクション)が、
ファイルF3を探す場合には、このファイルが見つからない。この情況を処理す
るために、上で説明したように、ファイルの名前、その可視性ディスポジション
、ファイルを削除したトランザクションのID、リダイレクトファイルID、$
TxFファイル識別子(たとえば、単調増加するシーケンス番号)、および複製
情報(日付スタンプ、サイズ、属性)が、ファイルについて維持される。
の表現を示す。図19および類似する流れ図が、分離ディレクトリが使用される
方法の理解を提供するために単純化されており、基礎となるコードの正確な表現
とみなされてはならず、たとえば、特殊な場合、エラー処理などが含まれないこ
とに留意されたい。どの場合でも、ステップ1900で開始されて、被トランザ
クション要求元エンティティと非被トランザクション要求元エンティティの間の
区別を行う。というのは、被トランザクションユーザが、非被トランザクション
ユーザの削除動作と異なる動作をもたらすからである。非トランザクションがフ
ァイルの削除を要求している(そのハンドルによって識別される)場合には、削
除が、それ以外は通常の形で実行される。すなわち、ステップ1902で、指定
されたファイルがディスクから削除される。削除は、最後のハンドルがクローズ
された時に始まる。
ている場合に、ステップ1904が実行され、ここで、本質的にファイルの名前
が変更される。たとえば、図16に一般的に示されているように、任意の名前(
たとえば「0」)が、隠されたディレクトリ168($TxF)に追加され、こ
の名前が、マスタファイルテーブル130(図11)のファイルのレコードにリ
ンクされる。それと同時に、削除されたファイルF3からのリンクが、親ディレ
クトリD3から除去される。
しいリンク情報が、ステップ1906で削除レコードにログ記録される。ファイ
ルを削除しつつあるトランザクションがコミットする前にシステムがクラッシュ
する場合には、トランザクションが中断され、ログから、上で説明したようにフ
ァイルの名前を単純に変更することによって、すなわち、前のリンクを復元する
ことによって($TxFディレクトリは、インメモリ構造体なのでなくなる)フ
ァイルが正しく復元される。
離ディレクトリ1701に追加される。分離ディレクトリ1701は、通常のデ
ィレクトリに関連して既に存在する場合があるが、そうでない場合には作成され
る。ステップ1910を実行して、トランザクションTid1がこのファイルの
削除を要求したことを示すように可視性ディスポジションフラグを適用に調整し
、その結果、このファイルが、他のトランザクションにはまだ可視であるが、T
id1には不可視になるようにする。ステップ1912で、任意の名前を付けら
れたリンクを、後に(すなわちトランザクションがコミットした後に)ディスク
から削除されるファイルのリストに追加する。
る時に分離ディレクトリから除去され、分離ディレクトリは、そこに残っている
エントリがなくなった時に、削除することができる。システムがクラッシュする
場合に、インメモリ構造体である分離ディレクトリが、失われることに留意され
たい。しかし、クラッシュによって、コミットされていないトランザクションが
中断されるので、分離ディレクトリは、もはや分離のために必要ではなくなり、
ログファイルのアンローリングによって、ファイルの状態が適当にリセットされ
る。
てディレクトリ内で作成される時に、名前が、(親)NTFSディレクトリにリ
ンクされた分離ディレクトリに実際に追加されるという点で、削除に多少似てい
る。他のトランザクションに関して、名前は、トランザクションがコミットする
まで、ファイルをオープンする目的に関するまたは親NTFSディレクトリをリ
ストする時の可視性フラグの設定によってフィルタアウトされる。Tid2およ
び非トランザクションに関して、作成されたファイルは、コミットされる前に可
視である。
更することができる。たとえば、ファイルが削除され、同一の名前を使用して別
のファイルが作成される場合に、作成によって、エントリの状態が変更され、他
のトランザクションが、削除の前に存在したファイルを見続けるが、このトラン
ザクションが、作成されたばかりの新しいファイルを見るようになる。NTFS
ディレクトリまたは分離ディレクトリに対して、トランザクションレベルのロッ
クが保持されないことに留意されたい。これによって、システムが、ベースファ
イルシステムより並列性が低くならないようにすることができる。
よって作成される(作成は、普通の親ディレクトリD4内で要求される)場合に
、F6が、ディレクトリD4内に作成され、それのためのエントリが、親ディレ
クトリD4に関連する分離ディレクトリ1702に追加される。分離ディレクト
リ1702は、必要であれば作成される。フラグが、Tid2の作成状況を反映
するように適当に調整される。すなわち、Tid2に可視であるが、他のトラン
ザクションには不可視になり、名前がTid2用に予約される。トランザクショ
ンTid2が、Tid2がコミットする前に、新たに作成されたファイルF6を
削除することもできるが、この場合に、ファイルF6は、Tid2にも他者にも
可視にならないことに留意されたい。そのような作成−削除動作を処理する方法
の1つが、ディレクトリD4からエントリを除去し、分離ディレクトリ1702 からエントリを除去することである。もう1つの方法は、分離ディレクトリ17
02にエントリを残し、ディスポジションフラグを、作成するTid2と他者の
両方に対して不可視にセットし、これによって、Tid2がコミットまたは中断
するまでファイル名が他者によって使用されなくすることである。
の情況に戻ると、トランザクションTid2がコミットまたは中断する時に(そ
の場合に)、分離エントリが、分離ディレクトリ1702から除去され、したが
って、作成されたファイルF6が、コミットの場合にどのトランザクションにも
可視にされる。トランザクションT2が中断する場合には、ファイルが、通常の
NTFSディレクトリD4から削除される。各分離エントリは、それに関連する
トランザクションの終了まで残され、コミットまたは中断の時に除去される。除
去を容易にするために、各トランザクションは、そのトランザクションが少なく
とも1つのエントリを有するTxFSCBポインタのリストを維持する。トラン
ザクションはまた、TxFSCBのそれぞれの参照カウンタを適当に増分または
減分し、その結果、TxFSCBが、それを使用するトランザクションによって
存在を維持されるようにする。
ル名を有するファイルが既に存在する場合に作成が許可されないタイプの)であ
る場合の、ファイルの作成に関する要求を処理する一般的な論理の表現を示す。
ステップ2000で開始して、テストを実行して、ファイル名(たとえば図17
のF6)が、普通の親ディレクトリ、たとえば親ディレクトリD4に既に存在す
るかどうかを判定する。そうである場合には、ファイルを作成することができず
、ステップ2000は、ステップ2002に分岐し、ここでエラーを返す。ファ
イルF6が、親ディレクトリD4で見つからない場合に、ファイル名が既にトラ
ンザクションによって使用されている可能性がある。これをテストするために、
ステップ2000は、ステップ2004に分岐し、ここで、D4に関連する分離
ディレクトリ1702を、このファイル名について検索する。このファイルF6
(または分離ディレクトリ)のエントリが存在しない場合には、ステップ200
4は、ステップ2006に分岐し、ここで、トランザクションまたは非トランザ
クションのどちらが作成を要求しているのかに関する判定を行う。非トランザク
ションが要求している場合には、ステップ2006は、ステップ2018に分岐
し、ここで、普通のディレクトリD4にファイルを作成する。そうでない場合に
は、トランザクション(たとえばTid2)が作成を要求しており、ステップ2
010が実行されて、そのファイルのエントリが分離ディレクトリ1702に追
加される(親ディレクトリD4についてまだ存在していない場合には分離ディレ
クトリ1702を作成した後に)。その後のステップ2014は、適当なフラグ
を設定すること、このエントリに関する他の情報を得ることなどを表す。ステッ
プ2014は、ステップ2018に継続し、ここで、ファイルF6が、実際に普
通のディレクトリD4に作成される。NTFSでは、作成時に、ファイルが割り
振られ、ファイルレコードがそのファイルのマスタファイルテーブル内で作成さ
れ、作成レコードがログに追加されることに留意されたい。
、指定されたファイルが、現在作成を要求しているものと同一のTid(たとえ
ばTid2)によって削除されない限り、作成は許可されない。このようにして
、トランザクションは、それが削除したファイルを作成することができるが、他
のトランザクションまたは非トランザクションは、ファイルを作成し、かつ/ま
たは削除したトランザクションがコミットするか中断するまで、そのファイル名
を使用することができない。見つかった場合には、ステップ2012を実行して
、フラグ状況をテストして、同一のトランザクションが現在作成を要求している
かどうかを判定する。そうである場合には、ステップ2012は、ステップ20
14に分岐して、このエントリのフラグの状況を変更し、本質的に「Tid2に
よって削除」(Tid2に不可視、おそらく他者に可視)ではなく、「Tid2
によって作成」(Tid2に可視、他者に不可視)を表すようにする。別のトラ
ンザクションまたは非トランザクションが作成を要求している場合には、ステッ
プ2012が、ステップ2016に分岐して、エラーを返し、トランザクション
がこのファイル名を予約していることを示す。
る、トランザクショナルファイル名前変更動作を表す。したがって、トランザク
ションT1が、ファイルの名前「\D2\D3\F2」を「\D2\D3\D4
\F7」に変更する場合に、リンクF2が、ディレクトリD3から削除され、リ
ンクF7が、ディレクトリD4に作成される。しかし、トランザクションが名前
の変更にかかわっているので、この動作は、適当な分離ディレクトリ1703お
よび1704で反映される。ファイルが、同一の親ディレクトリ内で名前を変更
される場合があり、あるいは、ファイルが同一のファイル名を有するが、異なる
ディレクトリにあるように名前を変更される場合があることに留意されたい。
に用いられる各親ディレクトリの分離ディレクトリ、たとえば、トランザクショ
ンの削除動作を示す分離ディレクトリ、およびトランザクションの作成動作を示
す分離ディレクトリが提供される。同一の親ディレクトリ内での名前変更が、古
いファイルの削除に関する1エントリと、新しいファイルの作成に関する1エン
トリとを有する1つの分離ディレクトリだけを必要とすることに留意されたい。
上で説明した図19(削除)および20(作成)から理解できるように、他のト
ランザクションは、トランザクションがコミットするまで、名前が変更されなか
ったかのようにファイルを見、名前を変更されたファイルを見ない。トランザク
ションが中断する場合には、他のトランザクションは、使用中のファイル名がト
ランザクションの寿命の間に一時的に予約されることを潜在的に見ることを除い
て、名前変更が行われたことを示すものを一切見ない。
(たとえば列挙の一部として)ことを試みる時などに、ファイルの状態に応じて
、トランザクションが指定されたファイルを見るか否かを表す。ステップ210
0は、ファイルが普通の親ディレクトリにあるかどうかのテストを表す。そうで
ある場合には、分離ディレクトリが存在する場合に、このファイルのエントリに
ついて分離ディレクトリを検索して、ファイルが要求元に可視であるかどうかを
判定する必要がある(ステップ2102)。普通のディレクトリにない場合には
、ファイルが、進行中のトランザクションによって普通のディレクトリから削除
された可能性があり、これは、下の図22で処理される。
2でファイルのエントリが分離ディレクトリにない場合には、そのファイルは、
普通にアクセス可能なファイルすなわち、まだコミットしていないトランザクシ
ョンによって作成されたものではないファイルである。そうである場合には、フ
ァイルシステムは、トランザクションの前と同様に動作する(ステップ2104
によって表される)。すなわち、ファイルハンドルを返すことができ(たとえば
、ファイルオープン要求の場合に)、あるいは、マスタファイルテーブル内の情
報からファイル情報を返すことができる(たとえば、列挙要求の場合に)。
ルは、進行中のトランザクションによって作成されたものである必要があり、ス
テップ2102は、ステップ2106に分岐し、テストを実行して、ファイルを
作成したトランザクションが、現在アクセスまたはその情報を要求しているトラ
ンザクションと同一であるかどうかを判定する。そうである場合には、ステップ
2106は、ステップ2108に分岐し、可視性ディスポジションフラグ(この
Tidに可視であるかどうか)をテストすることができる。可視の場合には、フ
ァイルハンドル(またはファイル情報)を、要求しているトランザクションに返
す(ステップ2110)。本実施形態では、ファイルが普通のディレクトリにあ
り、そのエントリが分離ディレクトリにある(トランザクションによる作成のゆ
えに)が、ファイルを作成したトランザクションにファイルを可視にしてはなら
ないことをフラグが示す情況があってはならないことに留意されたい。したがっ
て、本実施形態では、ステップ2108のテストが、普通のディレクトリおよび
/または分離ディレクトリの破損または類似物を検出するのに使用されるのでな
い限り、本質的に不要である。
離ディレクトリツリーにある(ステップ2102)が、ステップ2106で、同
一のトランザクションが要求を行っているのではないと判定される場合には、本
実施形態では、ファイルが、ステップ2114で、他者に可視である場合もそう
でない場合もある。可視でない場合には、ステップ2116で、要求の一部とし
て、他のトランザクションがそのファイル名を使用することを要求している場合
に、ファイルが別のトランザクションによって使用中であることを示すエラーが
返されることを除いて、見つからなかったものとしてファイルを扱う。たとえば
、指定されたファイルが見つからない場合に新規ファイルの作成を試みるタイプ
のファイルオープン要求は、名前が使用中なのでエラーになる。ステップ211
4で他者に可視である(ファイルが、削除された後に作成された)場合には、リ
ダイレクトFidを使用して、$TxFディレクトリから削除されたファイルを
オープンする(ステップ2118)。
ットも中断もしていないトランザクションがファイルを削除した場合には、その
ファイルのエントリが、分離ディレクトリにあり、これによって、そのトランザ
クションはこのファイルを見ることができないが、他者は見ることができる。ス
テップ2200で、ファイルのエントリが分離ディレクトリにない(かつ、図2
1のステップ2100を介して普通のディレクトリにない)かどうかをテストし
、ない場合には、ステップ2202で、ファイルが見つからず、それに応じて扱
われる。
には、あるトランザクションがそれを削除している。ステップ2204で、ファ
イルを削除したのと同一のトランザクションがそのファイルへのアクセス(また
はそれに関する情報)を要求しているかどうかをテストする。そうである場合に
は、ステップ2206で、ファイルが、それを削除したトランザクションに可視
ではなく、したがって、見つからない状態(ステップ2206)が存在する。な
んらかの理由でファイルがトランザクションに可視である場合には、エラーが存
在することに留意されたい。
そのファイルへのアクセス(またはそれに関する情報)を要求している場合。ス
テップ2212によるテストで、ファイルが他者に可視である場合には、ステッ
プ2214で、そのファイルのハンドルまたはファイル情報(以下で説明するよ
うに、保存されたファイルIDまたはFidからの、複製された情報を含む)を
返す。
後、削除し、これによって、そのファイルが普通のディレクトリにないことであ
る。上で説明したように、ファイル名は、他者に使用可能として扱われるか、ト
ランザクションのコミットまたは中断のいずれかが発生するまで進行中のトラン
ザクションに予約されるかのいずれかになることができる。前者は、ファイルを
作成したトランザクションがそのファイルを削除する時に、普通のディレクトリ
および分離ディレクトリの両方からファイルのエントリを単純に除去することに
よって達成することができるが、そのようなファイルエントリが分離ディレクト
リから除去される場合に、ステップ2212に到達しないことに留意されたい。
後者は、削除の際にファイルを普通のディレクトリから除去するが、分離ディレ
クトリ内のファイルのエントリを残し、どのトランザクションにも不可視である
ことを示すようにフラグをセットすることによって、達成することができる。諒
解されるように、これが可能であるのは、可視性ディスポジションフラグが独立
にセットされる(すなわち、相互排他的ではない)からである。しかし、ファイ
ルが分離ディレクトリに残され、他者に(ならびに、それを作成したトランザク
ションに)不可視とマークされる場合に、ステップ2216で、ファイルが見つ
からない状態が存在するが、ファイル名は進行中のトランザクションに予約され
る。
用して、たとえば照合された順序で次の名前を見つける、照合検索を容易にする
。本発明は、スペース効率がよく、並列読取/書込アクセスを可能にする。
ディレクトリにあるものを見ることに留意されたい。しかし、既存ファイル名の
使用において、非トランザクションは、トランザクションに予約された名前を使
用することができない。この目的のために、非トランザクションが普通のディレ
クトリに存在しない名前を有するファイルの作成を試みる時に、上で説明したよ
うに、分離ディレクトリが検査される。
トリ内のエントリをどのように使用し、変更するかを示す。まず、ディレクトリ
XでYisAVeryLongNameという名前の新しいファイルを作成する
、すなわち、X\YisAVeryLongNameを作成するトランザクショ
ンTid10を検討されたい。分離ディレクトリに、下記の2つのエントリが追
加される。Name: YisAVeryLongName;Tid: 10; (Visible to Tid:TRUE, Visible to others:FALSE);LongName: TRUE;pairedNamePtr: 短い名前のエントリへのポインタ;Reserved : TRUE;Fid: INVALID_ID; 他の複製された情報。Name: YisAVery;LongName: FALSE;pairedNamePtr: 長い名前のエントリへのポインタ.
ンザクションによって行われる場合にこれらの名前のどれもが返されないが、非
トランザクションが2つの名前を見ることが保証される。さらに、別のトランザ
クションTid20が、この2つの名前のいずれかの作成またはオープンを試み
る場合に、そのトランザクションが、上の分離構造体から検出される、「ファイ
ルが既に存在するが共有違反」エラーを受け取る。
そのスレッドは、書込、削除、または他の種類の変更のためにオープンする場合
に、共有違反を受け取る。そのような非トランザクションは、読取専用でオープ
ンすることができる。これは、上で説明したように別に実施される、TxFのフ
ァイルロッキングセマンティクスに起因する。
ngNameの被トランザクション削除を検討されたい。この例では、この名前
に関する短い名前のリンクもディレクトリXにある(リンク削除の場合ではなく
、名前対の場合)。やはり、トランザクションは、識別子Tid10を有し、こ
れによって、分離ディレクトリに、下記の2つのエントリが追加される。Name: YisAVeryLongName;Tid: 10; (Visible to Tid:FALSE, Visible to others:TRUE);LongName: TRUE;pairedNamePtr: 短い名前のエントリへのポインタ;Reserved : TRUE;Fid: ファイルId; 他の複製された情報。Name: YisAVery;LongName: FALSE;pairedNamePtr: 長い名前のエントリへのポインタ.
さしあたり、ファイルが物理的に除去されないことをTxFが保証すると仮定す
る。というのは、TxFが、削除の前にファイルにシステム所有のリンクを追加
するからである。その結果、2つの名前のどちらもが、Tid10以外のものが
新しいファイルの作成またはリンクに使用することができなくなる。これは、T
id10が、中断し、名前を再請求することを決定できるからである。また、こ
れらの名前は、ディレクトリ列挙またはCreateでTid10に可視でない
が、このCreateによって、Tid10が、2つの名前のいずれかを用いて
新しいリンク/ファイルを作成することができるようになる。これらの名前は、
他のトランザクションに可視であり、これは、他のトランザクションが、ファイ
ルID(Fid)を使用してそれらをオープンできることを意味する。非被トラ
ンザクションユーザは、これらのファイルを見ることができないが、これらの名
前を新規作成に使用することもできない。
考慮されたい。その後、名前がトランザクションTid10に可視なので、Ti
d10は、自由にこのファイルをオープンでき、Tid10と同様に削除するこ
とができる。したがって、Tid10が、書込のためにファイルをオープンし、
後にこれを削除した場合に、削除の後の分離エントリは、次のようになる。Name: YisAVeryLongName;Tid: 10; (Visible to Tid:FALSE, Visible to others:FALSE);LongName: TRUE;pairedNamePtr: 短い名前のエントリへのポインタ;Reserved : TRUE;Fid: INVALID_ID; 複製された情報なし。Name: YisAVery;LongName: FALSE;pairedNamePtr: 長い名前のエントリへのポインタ。
てに不可視にされる。予約が、ロールバックを動作可能にするために実行される
ことに留意されたい。
プンされた1つまたは複数のファイルに対するメモリマッピングを実行しており
、アプリケーションがその一部であるトランザクションが中断した(またはコミ
ットした)ことを意識しない場合の問題の解決を対象とする。これは、たとえば
、分散トランザクションが、もう1つのノードネットワークノード上で中断した
時に発生する可能性がある。アプリケーションは、そのような時に、不適当にま
たは不当に振る舞う場合もある。
メモリマッピングを実行しており、それに関連するトランザクションが中断(ま
たはコミット)したことを意識せず、かつ/または、不適当にまたは不当に振る
舞っている時に、もう1つのライタが、書込アクセスのためにまだメモリマッピ
ングされているファイルをオープンすることができる。その結果、複数の同時ラ
イタ(simultaneous writers)が存在する可能性があるの
で、ファイルデータに関する衝突が発生する可能性がある。具体的に言うと、ア
プリケーションによって実行される時に、メモリマッピングは、セクションオブ
ジェクト(共有メモリのブロック)を使用して、ファイルをプロセスアドレス空
間にマッピングすることを指す。アプリケーションがページを修正する場合に、
メモリマネージャが、通常のページング動作中に変更をディスクのファイルに書
き戻すことができ、あるいは、アプリケーションが直接にフラッシュを引き起こ
すことができる。トランザクショナル環境では望ましくないが、アプリケーショ
ンは、メモリマッピングを実行することを許可され、したがって、別のトランザ
クショナルアプリケーションによって書込アクセスのためにオープンされている
ファイルへの書込を引き起こす可能性を有する。
おり、たとえば、そのトランザクションによって影響されたデータ構造体をクリ
ーンアップするが、メモリマネージャに照会して、トランザクションのアプリケ
ーションプロセス(の1つまたは複数)がメモリマッピングを行っているか、す
なわち、セクションハンドルを作成したかどうかを判定する。そのようなアプリ
ケーションが存在する場合には、ファイルシステムは、そのアプリケーションの
動作状態を知らず、直接にアプリケーションをシャットダウンすることも、また
はアプリケーションがマッピングされたセクションに書き込み続けないことを保
証することもできない。
込アクセスのためにオープンされるマッピングされたファイルにアプリケーショ
ン180(もはやトランザクションの一部ではない)が書き込まないようにする
方法の1つを示す。この目的のために、ファイルシステムは、セクション制御ブ
ロック(SCB)188を調整し、その結果、各々のアプリケーション180お
よび182のファイルオブジェクト184および186が、別個のセクションオ
ブジェクトポインタ190および192をポイントするようにする。無効なトラ
ンザクショナルアプリケーション1(180)のセクションオブジェクトポイン
タ190は、空であるが、有効なトランザクショナルアプリケーション2(18
2)のセクションオブジェクトポインタ192は、そのアプリケーション182
のメモリ196へのポインタを有する。これによって、メモリセクション194
が、浮動化される。
クション194から読み取るか、それに書き込むことを継続することができるが
、このメモリセクションは、もはやファイルに対応しない。それと同時に、ペー
ジが、有効なアプリケーション182の代わりにファイルシステム62を介して
キャッシュ/メモリマネージャ114によってページがフォールトされる時に、
必ず、適当な仮想メモリページ198が(したがって、アプリケーション182
によって使用されるメモリ196も)、トランザクショナルに正しいファイル、
たとえば、TOPSストリームバージョンで維持される正しいページから、また
はディスクのファイルから、適宜データを書き込まれる。ファイルシステム62
は、同様に、有効なアプリケーションによって変更されたページを、メモリマネ
ージャ114による指示に従ってディスク112に書き込む。
ージについて、メモリセクション194に対応するファイルシステム62に達す
るメモリマネージャ114からのすべての書込要求が、ファイルシステム62に
よって受け入れられるが、実際にはディスクに書き込まれない。その結果、マッ
ピングされたメモリが、浮動化されたセクションになり、メモリ内での書込が許
可されるが、その変更は、絶対にディスクにフラッシュされない。メモリマネー
ジャ114によるディスク112からのページのフォールトインの要求は、0が
そこに返されることをもたらす。その結果、セクション194のこのバージョン
は、もはやディスク上のファイルによってバッキングされない。このようにして
、有効なトランザクショナルアプリケーションのファイルデータが、無効なアプ
リケーションによってマッピングされたファイルに対して行われるデータ変更か
ら分離される。
ンに対してアクセスなしまたは読取専用に変更し、これによって、無効なアプリ
ケーションによるそれへの書込がアクセス違反を引き起こすようにすることが可
能である。読取が許容される場合には、無効なアプリケーションは、有効なアプ
リケーションによって行われた変更がセクション194にフォールトされる時に
、必ず、そのような変更を見ることができる。
こす可能性があるが、有効なアプリケーション182のデータが、正しく分離さ
れることに留意されたい。無効なアプリケーション180のクラッシュを避ける
ために、それによって行われた変更を、ディスクの別のファイルに書き込むこと
ができるが、現在、そのようなポストトランザクションバージョンのサポートは
、そのようなアプリケーションに関して無用にコストが高いと見なされている。
ァイルに対して複数のトランザクショナル動作を簡単に実行できるようにするト
ランザクショナルファイルシステムおよび方法が提供される。複数のファイルシ
ステム動作が、ファイルシステム内でトランザクショナルな形で一緒に結び付け
られ、動作が、一緒にコミットされるか、すべての部分的なアクションが元に戻
されるかのいずれかになる。さらに、あるトランザクションの動作およびデータ
変更が、別のトランザクションの動作およびデータから分離される。したがって
、たとえば、本発明は、素早く効率的で安全な形で、ファイルシステムコンポー
ネントによって処理される単一のトランザクションとしてウェブサイトを更新す
ることができる。それと同時に、進行中の変更が、トランザクションがコミット
するまで他者から分離される。
施形態が、図面に示され、上で詳細に説明された。しかし、開示された特定の形
態に本発明を制限する意図はなく、逆に、本発明は、本発明の趣旨および範囲に
含まれるすべての修正構成、代替構成、および均等物を含むことを理解されたい
。
。
なアーキテクチャを表すブロック図である。
ンに関する要求を表すブロック図である。
に対してファイルシステム動作を実行する要求を表すブロック図である。
ファイルの分離を表すブロック図である。
ロック図である。
ブロック図である。
ジを表すブロック図である。
スのためにオープンされたファイルの分離をサポートするデータ構造体の間の関
係を表すブロック図である。
スのためにオープンされたファイルの分離をサポートするデータ構造体の間の関
係を表すブロック図である。
かどうかを検証する機構を表すブロック図である。
と同期化されているかどうかを検証する機構を表すブロック図である。
ているかどうかに基づいて行われるアクションを表す流れ図である。
ファイルバージョンを表すブロック図である。
ステム動作を表すブロック図である。
ディレクトリの使用を表すブロック図である。
ディレクトリの使用を表すブロック図である。
ディレクトリの使用を表すブロック図である。
する一般的なルールを示す流れ図である。
する一般的なルールを示す流れ図である。
する一般的なルールを示す流れ図である。
する一般的なルールを示す流れ図である。
ロック図である。
Claims (40)
- 【請求項1】 コンピュータ実行可能命令を有するコンピュータ可読媒体で
あって、 ファイルが第1トランザクションに関連することを示す情報をファイルシステ
ムで受け取り、 ファイルに対する名前空間関連動作を実行する第1要求をファイルシステムで
受け取り、 前記ファイルに関する情報を分離ディレクトリに保管し、 前記ファイルに向けられた第2要求を受け取り、 前記ファイルが前記第2要求に関して存在するかどうかを判定するために前記
分離ディレクトリにアクセスするコンピュータ実行可能命令を備えることを特徴
とするコンピュータ可読媒体。 - 【請求項2】 前記第1トランザクションが完了したことの情報を受け取り
、前記分離ディレクトリに保管された前記ファイル情報を除去するコンピュータ
実行可能命令をさらに含むことを特徴とする請求項1に記載のコンピュータ可読
媒体。 - 【請求項3】 前記第1要求は、前記第1トランザクションからの、前記フ
ァイルを削除する要求を含み、前記ファイルが親ディレクトリを有し、前記分離
ディレクトリは、前記親ディレクトリに関連することを特徴とする請求項1に記
載のコンピュータ可読媒体。 - 【請求項4】 前記第1トランザクションがコミットしたことの情報を受け
取り、前記分離ディレクトリ内に保管された前記ファイル情報を除去するコンピ
ュータ実行可能命令をさらに含むことを特徴とする請求項3に記載のコンピュー
タ可読媒体。 - 【請求項5】 前記第1トランザクションが中断したことの情報を受け取り
、前記分離ディレクトリ内に保管された前記ファイル情報を除去し、前記ファイ
ルの前記親ディレクトリにファイル情報を保管するコンピュータ実行可能命令を
さらに含むことを特徴とする請求項3に記載のコンピュータ可読媒体。 - 【請求項6】 前記第2要求は、前記第1トランザクションからのファイル
情報に関する要求を備え、前記分離ディレクトリへのアクセスは、前記ファイル
が前記第1トランザクションに関して存在しないことを判定することを特徴とす
る請求項1に記載のコンピュータ可読媒体。 - 【請求項7】 前記第2要求は、第2トランザクションからの、前記ファイ
ルへのアクセスの要求を備え、前記分離ディレクトリへのアクセスは、前記ファ
イルが前記第2トランザクションに関して存在することを判定することを特徴と
する請求項1に記載のコンピュータ可読媒体。 - 【請求項8】 ファイルハンドルを前記第2トランザクションに返すコンピ
ュータ実行可能命令をさらに有することを特徴とする請求項7に記載のコンピュ
ータ可読媒体。 - 【請求項9】 ファイルメタデータ情報を前記第2トランザクションに返す
コンピュータ実行可能命令をさらに含むことを特徴とする請求項7に記載のコン
ピュータ可読媒体。 - 【請求項10】 前記ファイルは、親ディレクトリに関連し、前記分離ディ
レクトリを作成し、前記分離ディレクトリを前記親ディレクトリに関連付けるコ
ンピュータ実行可能命令をさらに含むことを特徴とする請求項1に記載のコンピ
ュータ可読媒体。 - 【請求項11】 前記第1要求は、前記第1トランザクションからの、親デ
ィレクトリ内で前記ファイルを作成する要求を備えることを特徴とする請求項1
に記載のコンピュータ可読媒体。 - 【請求項12】 前記第1トランザクションがコミットされたことを示す情
報を受け取り、前記分離ディレクトリ内に保管された前記ファイル情報を除去し
、ファイル情報を前記ファイルの前記親ディレクトリに保管するコンピュータ実
行可能命令をさらに含むことを特徴とする請求項11に記載のコンピュータ可読
媒体。 - 【請求項13】 前記第1トランザクションが中断したことを示す情報を受
け取り、前記分離ディレクトリに保管された前記ファイル情報を除去するコンピ
ュータ実行可能命令をさらに含むことを特徴とする請求項11に記載のコンピュ
ータ可読媒体。 - 【請求項14】 前記第2要求は、第2トランザクションからのファイル情
報に関する要求を備え、前記分離ディレクトリへのアクセスは、前記ファイルが
前記第2トランザクションに関して存在しないことを判定することを特徴とする
請求項11に記載のコンピュータ可読媒体。 - 【請求項15】 前記第2要求は、前記第1トランザクションからの前記フ
ァイルにアクセスする要求を備え、前記分離ディレクトリへのアクセスは、前記
ファイルが前記第1トランザクションに関して存在することを判定することを特
徴とする請求項11に記載のコンピュータ可読媒体。 - 【請求項16】 前記第2要求は、前記第1トランザクションからのファイ
ル情報に関する要求を備え、前記分離ディレクトリへのアクセスは、前記ファイ
ルが前記第1トランザクションに関して存在することを判定することを特徴とす
る請求項11に記載のコンピュータ可読媒体。 - 【請求項17】 前記第2要求に応答して、前記第1トランザクションにフ
ァイルメタデータ情報を返すコンピュータ実行可能命令をさらに含むことを特徴
とする請求項16に記載のコンピュータ可読媒体。 - 【請求項18】 ファイルを維持する方法であって、 ファイルシステム上で第1ファイルシステム動作を実行する第1要求を、前記
ファイルシステムで受け取り、前記第1要求はトランザクションに関連すること
、 前記第1ファイルシステム動作を実行すること、 前記第1ファイルシステム動作が前記トランザクションに関連することを示す
、前記ファイルシステムからアクセス可能な情報を維持すること、および、 前記トランザクションがコミットする場合に、前記第1ファイルシステム動作
をコミットすること を備えることを特徴とする方法。 - 【請求項19】 前記ファイルシステムで、前記トランザクションがコミッ
トしたことを示す情報を受け取ることをさらに備えることを特徴とする請求項1
8に記載の方法。 - 【請求項20】 前記トランザクションがコミットしない場合に、前記第1
ファイルシステム動作を元に戻すことを特徴とする請求項18に記載の方法。 - 【請求項21】 前記第1ファイルシステム動作は、ファイルを作成するこ
とを備えることを特徴とする請求項18に記載の方法。 - 【請求項22】 前記第1ファイルシステム動作は、ファイルを削除するこ
とを備えることを特徴とする請求項18に記載の方法。 - 【請求項23】 前記第1ファイルシステム動作は、ファイルの名前を変更
することを備えることを特徴とする請求項18に記載の方法。 - 【請求項24】 前記第1ファイルシステム動作に対応する情報を少なくと
も1つのログにログ記録することをさらに備えることを特徴とする請求項18に
記載の方法。 - 【請求項25】 前記トランザクションがコミットしない場合に、前記少な
くとも1つのログにアクセスすること、および、前記少なくとも1つのログ内の
前記情報に基づいて前記第1ファイルシステム動作を元に戻すことを特徴とする
請求項24に記載の方法。 - 【請求項26】 前記トランザクションが中断したことを示す情報を前記フ
ァイルシステムで受け取ること、および、それに応答して、前記第1ファイルシ
ステム動作を元に戻すことをさらに備えることを特徴とする請求項18に記載の
方法。 - 【請求項27】 前記第1ファイルシステム動作をコミットすることは、前
記第1ファイルシステム動作が前記トランザクションに関連することを示す情報
を変更することを含むことを特徴とする請求項18に記載の方法。 - 【請求項28】 前記ファイルシステム上で第2ファイルシステム動作を実
行する第2要求を前記ファイルシステムで受け取り、前記第2要求は前記トラン
ザクションに関連すること、前記第2ファイルシステム動作を実行すること、前
記第2ファイルシステム動作が前記トランザクションに関連することを示す、前
記ファイルシステムからアクセス可能な情報を維持すること、および、前記トラ
ンザクションがコミットする場合に、前記第2ファイルシステム動作をコミット
することをさらに備えることを特徴とする請求項18に記載の方法。 - 【請求項29】 前記第1ファイルシステム動作は、ファイルをオープンす
ることを備えることを特徴とする請求項18に記載の方法。 - 【請求項30】 前記トランザクションに関連するファイルのバージョンを
維持することをさらに含むことを特徴とする請求項29に記載の方法。 - 【請求項31】 ファイルへのアクセスを提供する方法であって、 ファイルをオープンする第1要求を受け取り、前記要求が第1トランザクショ
ンに関連すること、 前記ファイルの第1インスタンスをオープンし、前記ファイルの前記第1イン
スタンスは前記第1トランザクションに関連することを示す情報を維持すること
、 前記ファイルをオープンする第2要求を受け取ること、 前記ファイルの第2インスタンスをオープンすること、 前記ファイルの前記第2インスタンスのデータに対する変更を受け取ること、 前記第1インスタンスに対応する前記ファイルの第1バージョンを、前記第2
インスタンスに関連する前記ファイルの第2バージョンから分離するためにデー
タを維持すること、 前記ファイルを読み取る読取要求を受け取り、前記読取要求は前記第1トラン
ザクションに関連すること、 前記ファイルの前記第1バージョンが第1トランザクションに関連することを
判定すること、および、 前記読取要求に応答して、前記ファイルの前記第1バージョンに対応するデー
タを読み取ること を備えることを特徴とする方法。 - 【請求項32】 前記ファイルの前記第1バージョンを前記ファイルの前記
第2バージョンから分離するためにデータを維持することは、前記ファイルの前
記第1バージョンのデータから別個の前記ファイルの前記第2バージョンの前記
データに対する前記変更を維持することを含むことを特徴とする請求項31に記
載の方法。 - 【請求項33】 データに対する前記変更を受け取ることに応答して前記フ
ァイルに変更を書き込むことをさらに備え、前記ファイルの前記第1バージョン
のデータから別個の前記ファイルの前記第2バージョンの前記データに対する前
記変更を維持することは、前記変更を前記ファイルに書き込む前に、前記ファイ
ルの前記第1バージョンの部分のコピーを第1データ構造体に保存することを含
むことを特徴とする請求項32に記載の方法。 - 【請求項34】 前記ファイルの第1バージョンを前記ファイルの第2バー
ジョンから分離するためにデータを維持することは、前記部分の前記コピーの位
置をマッピングするために第2データ構造体を維持することを含むことを特徴と
する請求項33に記載の方法。 - 【請求項35】 前記部分は、少なくとも1つのページに対応し、前記第2
データ構造体は、変更に対応する各ページ番号を記録することを特徴とする請求
項34に記載の方法。 - 【請求項36】 前記読取要求に応答して前記ファイルの前記第1バージョ
ンに対応するデータを読み取ることは、前記読取要求に対応する前記第1データ
構造体内の前記ファイルデータの少なくとも1つの位置を判定するために前記第
2データ構造体にアクセスすることを含むことを特徴とする請求項34に記載の
方法。 - 【請求項37】 前記データに対する前記変更に対応する情報をログ内のレ
コードにログ記録することをさらに備え、前記第2データ構造体は前記レコード
を識別する情報をさらに含むことを特徴とする請求項34に記載の方法。 - 【請求項38】 前記第2要求は、第2トランザクションに関連することを
特徴とする請求項31に記載の方法。 - 【請求項39】 前記ファイルをオープンする前記第1要求は、読取専用要
求に対応することを特徴とする請求項31に記載の方法。 - 【請求項40】 前記ファイルをクローズするクローズ要求を受け取り、前
記クローズ要求は前記第1トランザクションに関連すること、前記第1トランザ
クションに関して前記ファイルをクローズすること、前記ファイルをオープンす
る第3要求を受け取り、前記第3要求は前記第1トランザクションに関連するこ
と、前記第1トランザクションから、前記ファイル内のデータにアクセスする要
求を受け取ること、および、データにアクセスする前記要求に応答して、前記第
2バージョンに対応する前記ファイル内のデータにアクセスすることをさらに備
えることを特徴とする請求項31に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/539,233 US6856993B1 (en) | 2000-03-30 | 2000-03-30 | Transactional file system |
US09/539,233 | 2000-03-30 | ||
PCT/US2001/008486 WO2001077908A2 (en) | 2000-03-30 | 2001-03-16 | Transactional file system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003530646A true JP2003530646A (ja) | 2003-10-14 |
JP4219589B2 JP4219589B2 (ja) | 2009-02-04 |
Family
ID=24150363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001575287A Expired - Fee Related JP4219589B2 (ja) | 2000-03-30 | 2001-03-16 | トランザクショナルファイルシステム |
Country Status (6)
Country | Link |
---|---|
US (8) | US6856993B1 (ja) |
EP (1) | EP1269353A2 (ja) |
JP (1) | JP4219589B2 (ja) |
CN (3) | CN100445998C (ja) |
AU (1) | AU2001245806A1 (ja) |
WO (1) | WO2001077908A2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004280826A (ja) * | 2003-03-12 | 2004-10-07 | Microsoft Corp | プロトコル独立型クライアント側キャッシュ(protocol−independentclient−sidecaching)システムおよび方法 |
JP2005243013A (ja) * | 2004-02-12 | 2005-09-08 | Irdeto Access Bv | 外部データの記憶方法及びシステム |
JP2007509409A (ja) * | 2003-10-24 | 2007-04-12 | マイクロソフト コーポレーション | ネットワーク上のトランザクション処理ファイルオペレーションのための方法およびシステム |
JP2010532530A (ja) * | 2007-06-29 | 2010-10-07 | マイクロソフト コーポレーション | メモリトランザクションのグループ化 |
JP2012515393A (ja) * | 2009-01-14 | 2012-07-05 | マイクロソフト コーポレーション | トランザクションメモリにおけるトランザクション処理 |
Families Citing this family (297)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6856993B1 (en) | 2000-03-30 | 2005-02-15 | Microsoft Corporation | Transactional file system |
US10235368B2 (en) * | 2000-06-08 | 2019-03-19 | International Business Machines Corporation | System and method for updating external file referenced by database with transactional consistency using SQL |
US7246123B2 (en) * | 2000-08-04 | 2007-07-17 | Carr Scott Software Incorporated | Automatic transaction management |
US6751635B1 (en) * | 2000-08-18 | 2004-06-15 | Network Appliance, Inc. | File deletion and truncation using a zombie file space |
US7222132B2 (en) * | 2001-03-20 | 2007-05-22 | Swsoft Holdings, Ltd. | Common template file system tree for virtual environments and virtual servers |
US7711771B2 (en) * | 2001-05-25 | 2010-05-04 | Oracle International Corporation | Management and synchronization application for network file system |
US7016920B2 (en) * | 2001-05-25 | 2006-03-21 | International Business Machines Corporation | Method for tracking relationships between specified file name and particular program used for subsequent access in a database |
US7257610B2 (en) * | 2001-10-17 | 2007-08-14 | Microsoft Corporation | Systems and methods for sending coordinated notifications |
US6957219B1 (en) * | 2001-11-15 | 2005-10-18 | Microsoft Corporation | System and method of pipeline data access to remote data |
KR100450400B1 (ko) * | 2001-12-26 | 2004-09-30 | 한국전자통신연구원 | 안전 기억 장치가 없는 환경을 위한 이중화 구조의 주 메모리 상주 데이터베이스 관리시스템 및 그 데이터 일치성 제어방법 |
US7823060B2 (en) * | 2002-06-07 | 2010-10-26 | Microsoft Corporation | Undo/redo architecture across multiple files |
US20040003007A1 (en) * | 2002-06-28 | 2004-01-01 | Prall John M. | Windows management instrument synchronized repository provider |
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 |
US6976038B2 (en) * | 2002-10-17 | 2005-12-13 | International Business Machines Corporation | Method and apparatus for real time creation and modification of a change log for multi-server synchronization |
US7174420B2 (en) * | 2002-10-22 | 2007-02-06 | Microsoft Corporation | Transaction-safe FAT file system |
US7363540B2 (en) | 2002-10-22 | 2008-04-22 | Microsoft Corporation | Transaction-safe FAT file system improvements |
US7181473B1 (en) * | 2002-11-12 | 2007-02-20 | Microsoft Corporation | Identifying files within a namespace |
US7234109B2 (en) * | 2002-11-19 | 2007-06-19 | Microsoft Corp. | Equality of extensible markup language structures |
US7003532B2 (en) * | 2002-11-27 | 2006-02-21 | Microsoft Corporation | System and method for scaleable multiplexed transactional log recovery |
US7739240B2 (en) * | 2002-12-09 | 2010-06-15 | Hewlett-Packard Development Company, L.P. | Replication and replica management in a wide area file system |
JP4077329B2 (ja) * | 2003-01-31 | 2008-04-16 | 株式会社東芝 | トランザクション処理システム、並行制御方法及びプログラム |
US7240172B2 (en) * | 2003-02-07 | 2007-07-03 | Sun Microsystems, Inc. | Snapshot by deferred propagation |
US7353495B2 (en) * | 2003-02-28 | 2008-04-01 | Bea Systems, Inc. | Method for protection against interleaving transactions using a transaction manager |
US7849464B2 (en) * | 2003-02-28 | 2010-12-07 | Oracle International Corporation | Protection against interleaving transactions using a transaction manager |
CA2422161C (en) * | 2003-03-14 | 2009-10-06 | Ibm Canada Limited - Ibm Canada Limitee | Decoupled object identification for object switching in database systems |
US7139781B2 (en) * | 2003-04-29 | 2006-11-21 | International Business Machines Corporation | Managing filesystem versions |
DE10323033A1 (de) * | 2003-05-20 | 2004-12-23 | Giesecke & Devrient Gmbh | Laden eines ausführbaren Programms in einen tragbaren Datenträger |
US7243088B2 (en) | 2003-08-06 | 2007-07-10 | Oracle International Corporation | Database management system with efficient version control |
GB2405228B8 (en) * | 2003-08-19 | 2007-09-13 | Ibm | A method, apparatus and computer program for verifying the order of a queue of work items |
US7269588B1 (en) | 2003-09-24 | 2007-09-11 | Oracle International Corporation | Neighborhood locking technique for increasing concurrency among transactions |
US20050108186A1 (en) * | 2003-10-31 | 2005-05-19 | Eric Anderson | Textual filesystem interface method and apparatus |
US7328217B2 (en) * | 2003-11-26 | 2008-02-05 | Symantec Operating Corporation | System and method for detecting and storing file identity change information within a file system |
US20050144299A1 (en) * | 2003-12-04 | 2005-06-30 | Blevins Delmar E. | System and method for supporting XA 2-phase commit protocols with a loosely coupled clustered database server |
US8171426B2 (en) | 2003-12-29 | 2012-05-01 | International Business Machines Corporation | Method for secondary selection highlighting |
JP4181061B2 (ja) * | 2004-01-30 | 2008-11-12 | 株式会社東芝 | コンテンツ管理装置、コンテンツ管理方法及びコンテンツ管理プログラム |
US20050172046A1 (en) * | 2004-01-30 | 2005-08-04 | Goodwin Kevin M. | Switching I/O states for volume without completely tearing down stack |
US20050172094A1 (en) * | 2004-01-30 | 2005-08-04 | Goodwin Kevin M. | Selectively establishing read-only access to volume |
US7346620B2 (en) * | 2004-02-12 | 2008-03-18 | International Business Machines Corporation | Adjusting log size in a static logical volume |
US7486672B2 (en) * | 2004-04-20 | 2009-02-03 | Samsung Electronics Co., Ltd. | Apparatus and method for searching trie trees using masks with non-symbol boundaries and flooding default routes in a massively parallel router |
US7779086B1 (en) * | 2004-05-04 | 2010-08-17 | Oracle America, Inc. | Methods and apparatus for performing a remote procedure call |
US20050256859A1 (en) * | 2004-05-13 | 2005-11-17 | Internation Business Machines Corporation | System, application and method of providing application programs continued access to frozen file systems |
US7567571B2 (en) * | 2004-05-26 | 2009-07-28 | Samsung Electronics Co., Ltd. | Apparatus and method using vector table indirection to maintain forwarding tables in a router |
US7519628B1 (en) * | 2004-06-01 | 2009-04-14 | Network Appliance, Inc. | Technique for accelerating log replay with partial cache flush |
US8949395B2 (en) | 2004-06-01 | 2015-02-03 | Inmage Systems, Inc. | Systems and methods of event driven recovery management |
US7617256B2 (en) * | 2004-07-19 | 2009-11-10 | Microsoft Corporation | Remote file updates through remote protocol |
US7593916B2 (en) * | 2004-08-19 | 2009-09-22 | Sap Ag | Managing data administration |
US7653665B1 (en) * | 2004-09-13 | 2010-01-26 | Microsoft Corporation | Systems and methods for avoiding database anomalies when maintaining constraints and indexes in presence of snapshot isolation |
JP4104586B2 (ja) * | 2004-09-30 | 2008-06-18 | 株式会社東芝 | ファイル管理機能を備えたファイルシステム及びファイル管理方法 |
US7680758B2 (en) * | 2004-09-30 | 2010-03-16 | Citrix Systems, Inc. | Method and apparatus for isolating execution of software applications |
US20060069662A1 (en) * | 2004-09-30 | 2006-03-30 | Citrix Systems, Inc. | Method and apparatus for remapping accesses to virtual system resources |
US7571164B2 (en) * | 2004-10-01 | 2009-08-04 | Sap Ag | System and method for deferred database connection configuration |
US7330955B2 (en) * | 2004-10-18 | 2008-02-12 | Seagate Technology Llc | Recovery record for updating a system configuration |
GB0424442D0 (en) * | 2004-11-05 | 2004-12-08 | Ibm | A method, apparatus, computer program and computer program product for managing the durability of a plurality of transactions |
US7496565B2 (en) * | 2004-11-30 | 2009-02-24 | Microsoft Corporation | Method and system for maintaining namespace consistency with a file system |
US7610307B2 (en) | 2004-11-30 | 2009-10-27 | Microsoft Corporation | Method and system of detecting file system namespace changes and restoring consistency |
US7912973B2 (en) * | 2004-12-03 | 2011-03-22 | Microsoft Corporation | Message exchange protocol extension negotiation |
US7877543B2 (en) * | 2004-12-03 | 2011-01-25 | Hewlett-Packard Development Company, L.P. | System and method for writing data and a time value to an addressable unit of a removable storage medium |
US7716260B2 (en) * | 2004-12-16 | 2010-05-11 | Oracle International Corporation | Techniques for transaction semantics for a database server performing file operations |
WO2006064498A2 (en) * | 2004-12-16 | 2006-06-22 | Ramot At Tel-Aviv University Ltd. | Transactional flash file system for microcontrollers and embedded systems |
US20060136508A1 (en) * | 2004-12-16 | 2006-06-22 | Sam Idicula | Techniques for providing locks for file operations in a database management system |
US8321439B2 (en) | 2004-12-17 | 2012-11-27 | Microsoft Corporation | Quick filename lookup using name hash |
US9639554B2 (en) | 2004-12-17 | 2017-05-02 | Microsoft Technology Licensing, Llc | Extensible file system |
US7873596B2 (en) * | 2006-05-23 | 2011-01-18 | Microsoft Corporation | Extending cluster allocations in an extensible file system |
US8606830B2 (en) | 2004-12-17 | 2013-12-10 | Microsoft Corporation | Contiguous file allocation in an extensible file system |
US20060168098A1 (en) * | 2004-12-27 | 2006-07-27 | International Business Machines Corporation | Service offering for the delivery of partial information with a restore capability |
US20060161601A1 (en) * | 2005-01-18 | 2006-07-20 | Barrs John W | Heap manager and application programming interface support for managing versions of objects |
US20060161602A1 (en) * | 2005-01-18 | 2006-07-20 | Barrs John W | Object based access application programming interface for data versioning |
US20060161576A1 (en) * | 2005-01-18 | 2006-07-20 | Barrs John W | Method and apparatus for dimensional data versioning and recovery management |
US7395386B2 (en) * | 2005-01-18 | 2008-07-01 | Lenovo (Singapore) Pte. Ltd. | Method and apparatus for data versioning and recovery using delta content save and restore management |
US20060161603A1 (en) * | 2005-01-18 | 2006-07-20 | Barrs John W | Platform infrastructure to provide an operating system based application programming interface undo service |
US20060161751A1 (en) * | 2005-01-18 | 2006-07-20 | Barrs John W | Virtual memory management infrastructure for monitoring deltas and supporting undo versioning in a paged memory system |
US20060161912A1 (en) * | 2005-01-18 | 2006-07-20 | Barrs John W | Infrastructure for device driver to monitor and trigger versioning for resources |
US7565645B2 (en) * | 2005-01-18 | 2009-07-21 | Lenovo (Singapore) Pte Ltd. | Method and apparatus for marking code for data versioning |
US20060161911A1 (en) * | 2005-01-18 | 2006-07-20 | Barrs John W | Method and apparatus for managing versioning data in a network data processing system |
US9367579B1 (en) * | 2005-02-23 | 2016-06-14 | Veritas Technologies Llc | System and method for maintaining a file change log within a distributed file system |
US8005795B2 (en) * | 2005-03-04 | 2011-08-23 | Emc Corporation | Techniques for recording file operations and consistency points for producing a consistent copy |
US7949551B2 (en) * | 2005-04-06 | 2011-05-24 | International Business Machines Corporation | Processing of compensation scopes in workflow management systems |
CA2504070C (en) * | 2005-04-14 | 2006-11-14 | Computer Training Canada Ltd. | Method for preserving access to deleted and overwritten documents |
US20060242270A1 (en) * | 2005-04-21 | 2006-10-26 | Microsoft Corporation | Isolation of user-mode device drivers |
US20060253503A1 (en) * | 2005-05-05 | 2006-11-09 | International Business Machines Corporation | Method and apparatus for aging a versioned heap system |
US7660797B2 (en) * | 2005-05-27 | 2010-02-09 | Microsoft Corporation | Scanning data in an access restricted file for malware |
US8521752B2 (en) * | 2005-06-03 | 2013-08-27 | Osr Open Systems Resources, Inc. | Systems and methods for arbitrary data transformations |
US7613743B1 (en) * | 2005-06-10 | 2009-11-03 | Apple Inc. | Methods and apparatuses for data protection |
TW200700982A (en) * | 2005-06-21 | 2007-01-01 | Farstone Tech Inc | Computer protection system and method thereof |
US7809675B2 (en) * | 2005-06-29 | 2010-10-05 | Oracle International Corporation | Sharing state information among a plurality of file operation servers |
US8224837B2 (en) * | 2005-06-29 | 2012-07-17 | Oracle International Corporation | Method and mechanism for supporting virtual content in performing file operations at a RDBMS |
US7707480B2 (en) * | 2005-07-01 | 2010-04-27 | Qnx Software Systems Gmbh & Co. Kg | System employing data verification operations of differing computational costs |
US7809777B2 (en) | 2005-07-01 | 2010-10-05 | Qnx Software Systems Gmbh & Co. Kg | File system having deferred verification of data integrity |
US8959125B2 (en) * | 2005-07-01 | 2015-02-17 | 226008 Ontario Inc. | File system having inverted hierarchical structure |
US20070005874A1 (en) * | 2005-07-01 | 2007-01-04 | Dan Dodge | File system storing transaction records in flash-like media |
US7873683B2 (en) * | 2005-07-01 | 2011-01-18 | Qnx Software Systems Gmbh & Co. Kg | File system having transaction record coalescing |
US7698495B2 (en) * | 2005-07-01 | 2010-04-13 | QNZ Software Systems GmbH & Co. KG | Computer system having logically ordered cache management |
US7970803B2 (en) | 2005-07-01 | 2011-06-28 | Qnx Software Systems Gmbh & Co. Kg | Optimized startup verification of file system integrity |
JP4659537B2 (ja) * | 2005-07-05 | 2011-03-30 | 株式会社日立製作所 | ファイル提供方法、ストレージ装置及びファイル提供プログラム |
US20070022091A1 (en) * | 2005-07-20 | 2007-01-25 | Scriptlogic Corporation | Access based file system directory enumeration |
US8984636B2 (en) | 2005-07-29 | 2015-03-17 | Bit9, Inc. | Content extractor and analysis system |
US7536517B2 (en) * | 2005-07-29 | 2009-05-19 | Microsoft Corporation | Direct-update software transactional memory |
US8250030B2 (en) * | 2005-09-21 | 2012-08-21 | Infoblox Inc. | Provisional authority in a distributed database |
US8290910B2 (en) * | 2005-09-21 | 2012-10-16 | Infoblox Inc. | Semantic replication |
US8533169B1 (en) * | 2005-09-21 | 2013-09-10 | Infoblox Inc. | Transactional replication |
US20070073792A1 (en) * | 2005-09-28 | 2007-03-29 | Tony Nichols | System and method for removing residual data from memory |
US7693873B2 (en) * | 2005-10-13 | 2010-04-06 | International Business Machines Corporation | System, method and program to synchronize files in distributed computer system |
US7630991B2 (en) * | 2005-10-27 | 2009-12-08 | Microsoft Corporation | Compiling join patterns using software transactional memories |
US7490096B2 (en) * | 2005-11-04 | 2009-02-10 | Sun Microsystems, Inc. | Automatic intent log testing |
US20070118559A1 (en) * | 2005-11-18 | 2007-05-24 | Microsoft Corporation | File system filters and transactions |
US7610304B2 (en) * | 2005-12-05 | 2009-10-27 | Oracle International Corporation | Techniques for performing file operations involving a link at a database management system |
US7552148B2 (en) | 2006-02-28 | 2009-06-23 | Microsoft Corporation | Shutdown recovery |
US7809778B2 (en) * | 2006-03-08 | 2010-10-05 | Omneon Video Networks | Idempotent journal mechanism for file system |
US8285817B1 (en) * | 2006-03-20 | 2012-10-09 | Netapp, Inc. | Migration engine for use in a logical namespace of a storage system environment |
US7676811B2 (en) | 2006-03-23 | 2010-03-09 | Microsoft Corporation | Ensuring thread affinity for interprocess communication in a managed code environment |
JP5057546B2 (ja) * | 2006-03-24 | 2012-10-24 | キヤノン株式会社 | 文書検索装置および文書検索方法 |
US7797273B2 (en) * | 2006-03-27 | 2010-09-14 | Emoze Ltd. | System and a method for reliable symmetric data synchronization |
US7801846B2 (en) * | 2006-04-04 | 2010-09-21 | Computer Associates Think, Inc. | Generating log sequence identifiers to apply a transaction to a storage system |
US8146101B2 (en) * | 2006-04-28 | 2012-03-27 | Research In Motion Limited | Method of processing notifications provided by a routine, and associated handheld electronic device |
US7925681B2 (en) * | 2006-04-28 | 2011-04-12 | Microsoft Corporation | Bypass of the namespace hierarchy to open files |
EP1855201A1 (en) * | 2006-04-28 | 2007-11-14 | Research In Motion Limited | Method of processing notifications provided by a routine, and associated handheld electronic device |
US8527721B2 (en) * | 2008-12-26 | 2013-09-03 | Rajeev Atluri | Generating a recovery snapshot and creating a virtual view of the recovery snapshot |
US8280908B2 (en) * | 2006-06-30 | 2012-10-02 | Microsoft Corporation | Merging file system directories |
US8296268B2 (en) * | 2006-07-21 | 2012-10-23 | Samsung Electronics Co., Ltd. | System and method for change logging in a firmware over the air development environment |
US20080033906A1 (en) * | 2006-08-03 | 2008-02-07 | Michael Bender | Improved performance and availability of a database |
US8601456B2 (en) * | 2006-08-04 | 2013-12-03 | Microsoft Corporation | Software transactional protection of managed pointers |
US8190868B2 (en) | 2006-08-07 | 2012-05-29 | Webroot Inc. | Malware management through kernel detection |
US7512748B1 (en) | 2006-08-17 | 2009-03-31 | Osr Open Systems Resources, Inc. | Managing lock rankings |
US8015215B2 (en) * | 2006-08-24 | 2011-09-06 | Oracle America, Inc. | Delegation in a file system with distributed components |
US8539228B1 (en) | 2006-08-24 | 2013-09-17 | Osr Open Systems Resources, Inc. | Managing access to a resource |
US7599972B2 (en) * | 2006-08-25 | 2009-10-06 | Qnx Software Systems Gmbh & Co. Kg | File system having variable logical storage block size |
US20080059510A1 (en) * | 2006-08-31 | 2008-03-06 | Daniel Cardamore | Multimedia system framework having layer consolidating access to multiple media devices |
US7908276B2 (en) | 2006-08-25 | 2011-03-15 | Qnx Software Systems Gmbh & Co. Kg | Filesystem having a filename cache |
US8566503B2 (en) * | 2006-08-25 | 2013-10-22 | Qnx Software Systems Limited | Multimedia filesystem having unified representation of content on diverse multimedia devices |
US7818801B2 (en) | 2006-09-26 | 2010-10-19 | ScriptLogic Corportation | File system event tracking |
US7756831B1 (en) * | 2006-09-28 | 2010-07-13 | Emc Corporation | Cooperative locking between multiple independent owners of data space |
US8533158B1 (en) | 2006-09-28 | 2013-09-10 | Emc Corporation | Reclaiming data space by rewriting metadata |
US9454536B1 (en) | 2006-09-28 | 2016-09-27 | Emc Corporation | Space compaction and defragmentation mechanisms in data space |
US7526623B1 (en) * | 2006-09-28 | 2009-04-28 | Emc Corporation | Optimizing reclamation of data space |
US8862639B1 (en) | 2006-09-28 | 2014-10-14 | Emc Corporation | Locking allocated data space |
US7647466B1 (en) * | 2006-09-28 | 2010-01-12 | Emc Corporation | Linear space allocation mechanisms in data space |
US7542983B1 (en) * | 2006-11-16 | 2009-06-02 | Bruso Kelsey L | Delaying automated data page merging in a B+tree until after committing the transaction |
US8185564B1 (en) | 2006-11-21 | 2012-05-22 | Google Inc. | Redirection of embedded content |
US7886270B2 (en) | 2006-11-28 | 2011-02-08 | International Business Machines Corporation | Methods, systems, and computer program products for file version control management |
US8156507B2 (en) * | 2006-12-08 | 2012-04-10 | Microsoft Corporation | User mode file system serialization and reliability |
US20080147747A1 (en) * | 2006-12-14 | 2008-06-19 | Dan Cardamore | Media system having synchronization with preemptive prioritization of synchronization order |
US7650371B2 (en) * | 2006-12-14 | 2010-01-19 | Microsoft Corporation | Finalizable object usage in software transactions |
US9367553B2 (en) * | 2006-12-30 | 2016-06-14 | Sap Se | Computer file system traversal |
US7660956B1 (en) * | 2007-01-08 | 2010-02-09 | Emc Corporation | Save set bundling for staging |
US7747664B2 (en) * | 2007-01-16 | 2010-06-29 | Microsoft Corporation | Storage system format for transaction safe file system |
US7613738B2 (en) | 2007-01-16 | 2009-11-03 | Microsoft Corporation | FAT directory structure for use in transaction safe file system |
US8352448B2 (en) * | 2007-01-23 | 2013-01-08 | International Business Machines Corporation | Securely deleting data in a transactionally consistent manner |
US7747634B2 (en) * | 2007-03-08 | 2010-06-29 | Microsoft Corporation | Rich data tunneling |
US7783677B2 (en) * | 2007-03-30 | 2010-08-24 | Microsoft Corporation | Tracking file system namespace changes during transactions |
US8024433B2 (en) | 2007-04-24 | 2011-09-20 | Osr Open Systems Resources, Inc. | Managing application resources |
US20080294492A1 (en) * | 2007-05-24 | 2008-11-27 | Irina Simpson | Proactively determining potential evidence issues for custodial systems in active litigation |
US8171003B2 (en) * | 2007-06-06 | 2012-05-01 | Kunio Kamimura | Method and apparatus for changing reference of database |
US8196123B2 (en) * | 2007-06-26 | 2012-06-05 | Microsoft Corporation | Object model for transactional memory |
US20090037386A1 (en) | 2007-08-03 | 2009-02-05 | Dietmar Theobald | Computer file processing |
US8910192B2 (en) * | 2007-08-08 | 2014-12-09 | Microsoft Corporation | Application programming interfaces for transacted file and registry operations |
US7949693B1 (en) | 2007-08-23 | 2011-05-24 | Osr Open Systems Resources, Inc. | Log-structured host data storage |
US9621649B2 (en) | 2007-09-28 | 2017-04-11 | Xcerion Aktiebolag | Network operating system |
US9418154B2 (en) * | 2007-10-19 | 2016-08-16 | Oracle International Corporation | Push-model based index updating |
US9594784B2 (en) | 2007-10-19 | 2017-03-14 | Oracle International Corporation | Push-model based index deletion |
US8682859B2 (en) * | 2007-10-19 | 2014-03-25 | Oracle International Corporation | Transferring records between tables using a change transaction log |
US9594794B2 (en) | 2007-10-19 | 2017-03-14 | Oracle International Corporation | Restoring records using a change transaction log |
CN101187930B (zh) * | 2007-12-04 | 2010-06-09 | 浙江大学 | 分布式文件系统虚拟目录及命名空间的实现方法 |
US8572043B2 (en) | 2007-12-20 | 2013-10-29 | International Business Machines Corporation | Method and system for storage of unstructured data for electronic discovery in external data stores |
US8112406B2 (en) | 2007-12-21 | 2012-02-07 | International Business Machines Corporation | Method and apparatus for electronic data discovery |
US8108356B2 (en) * | 2007-12-24 | 2012-01-31 | Korea Advanced Institute Of Science And Technology | Method for recovering data in a storage system |
US8447938B2 (en) * | 2008-01-04 | 2013-05-21 | International Business Machines Corporation | Backing up a deduplicated filesystem to disjoint media |
US8140494B2 (en) | 2008-01-21 | 2012-03-20 | International Business Machines Corporation | Providing collection transparency information to an end user to achieve a guaranteed quality document search and production in electronic data discovery |
US20130046741A1 (en) * | 2008-02-13 | 2013-02-21 | Gregory Bentley | Methods and systems for creating and saving multiple versions of a computer file |
US7895172B2 (en) * | 2008-02-19 | 2011-02-22 | Yahoo! Inc. | System and method for writing data dependent upon multiple reads in a distributed database |
US7895372B2 (en) * | 2008-03-20 | 2011-02-22 | Fluke Corporation | Universal serial bus mass storage device asynchronous file and file system update while connected to a PC or other device |
US8856088B2 (en) * | 2008-04-01 | 2014-10-07 | Microsoft Corporation | Application-managed file versioning |
FR2930090A1 (fr) * | 2008-04-14 | 2009-10-16 | Thomson Licensing Sas | Procede de generation d'un signal analogique genere par un signal pwm et systeme generant un tel signal. |
US8621154B1 (en) | 2008-04-18 | 2013-12-31 | Netapp, Inc. | Flow based reply cache |
US8161236B1 (en) | 2008-04-23 | 2012-04-17 | Netapp, Inc. | Persistent reply cache integrated with file system |
US8606947B2 (en) | 2008-05-27 | 2013-12-10 | International Business Machines Corporation | Heuristics processing |
US8275720B2 (en) | 2008-06-12 | 2012-09-25 | International Business Machines Corporation | External scoping sources to determine affected people, systems, and classes of information in legal matters |
US9830563B2 (en) | 2008-06-27 | 2017-11-28 | International Business Machines Corporation | System and method for managing legal obligations for data |
US8327384B2 (en) | 2008-06-30 | 2012-12-04 | International Business Machines Corporation | Event driven disposition |
US8484069B2 (en) | 2008-06-30 | 2013-07-09 | International Business Machines Corporation | Forecasting discovery costs based on complex and incomplete facts |
US8489439B2 (en) | 2008-06-30 | 2013-07-16 | International Business Machines Corporation | Forecasting discovery costs based on complex and incomplete facts |
US8515924B2 (en) | 2008-06-30 | 2013-08-20 | International Business Machines Corporation | Method and apparatus for handling edge-cases of event-driven disposition |
US7792945B2 (en) * | 2008-06-30 | 2010-09-07 | Pss Systems, Inc. | Method and apparatus for managing the disposition of data in systems when data is on legal hold |
US8073729B2 (en) | 2008-09-30 | 2011-12-06 | International Business Machines Corporation | Forecasting discovery costs based on interpolation of historic event patterns |
JP5467625B2 (ja) * | 2008-07-30 | 2014-04-09 | インターナショナル・ビジネス・マシーンズ・コーポレーション | トランザクションを処理する本番システムと該本番システムのバックアップ・システムである代行システムとを含む本番−代行システム |
CN101667178B (zh) * | 2008-09-01 | 2012-08-22 | 北京数码大方科技有限公司 | 用于c/s架构文件管理系统的事务处理方法 |
US8762347B1 (en) * | 2008-09-22 | 2014-06-24 | Symantec Corporation | Method and apparatus for processing transactional file system operations to enable point in time consistent file data recreation |
US8037033B2 (en) * | 2008-09-22 | 2011-10-11 | Microsoft Corporation | Log manager for aggregating data |
US8250035B1 (en) * | 2008-09-30 | 2012-08-21 | Emc Corporation | Methods and apparatus for creating a branch file in a file system |
US8204869B2 (en) * | 2008-09-30 | 2012-06-19 | International Business Machines Corporation | Method and apparatus to define and justify policy requirements using a legal reference library |
WO2010045262A1 (en) | 2008-10-14 | 2010-04-22 | Wanova Technologies, Ltd. | Storage-network de-duplication |
US9542431B2 (en) | 2008-10-24 | 2017-01-10 | Microsoft Technology Licensing, Llc | Cyclic commit transaction protocol |
US8612929B2 (en) * | 2008-12-10 | 2013-12-17 | Oracle America, Inc. | Compiler implementation of lock/unlock using hardware transactional memory |
US8171227B1 (en) | 2009-03-11 | 2012-05-01 | Netapp, Inc. | System and method for managing a flow based reply cache |
US11489857B2 (en) | 2009-04-21 | 2022-11-01 | Webroot Inc. | System and method for developing a risk profile for an internet resource |
US8429606B2 (en) * | 2009-05-29 | 2013-04-23 | Red Hat, Inc. | Transactional object container |
US8495103B2 (en) * | 2009-05-29 | 2013-07-23 | Red Hat, Inc. | Method and apparatus for determining how to transform applications into transactional applications |
US10013277B2 (en) * | 2009-05-29 | 2018-07-03 | Red Hat, Inc. | Rolling back state changes in distributed transactions |
US8161247B2 (en) | 2009-06-26 | 2012-04-17 | Microsoft Corporation | Wait loss synchronization |
US8812796B2 (en) * | 2009-06-26 | 2014-08-19 | Microsoft Corporation | Private memory regions and coherence optimizations |
US8370577B2 (en) | 2009-06-26 | 2013-02-05 | Microsoft Corporation | Metaphysically addressed cache metadata |
US8356166B2 (en) * | 2009-06-26 | 2013-01-15 | Microsoft Corporation | Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers |
US8250331B2 (en) | 2009-06-26 | 2012-08-21 | Microsoft Corporation | Operating system virtual memory management for hardware transactional memory |
US8489864B2 (en) * | 2009-06-26 | 2013-07-16 | Microsoft Corporation | Performing escape actions in transactions |
US8229907B2 (en) * | 2009-06-30 | 2012-07-24 | Microsoft Corporation | Hardware accelerated transactional memory system with open nested transactions |
US20110040600A1 (en) * | 2009-08-17 | 2011-02-17 | Deidre Paknad | E-discovery decision support |
US8868601B2 (en) * | 2009-08-17 | 2014-10-21 | International Business Machines Corporation | Distributed file system logging |
US8112505B1 (en) | 2009-10-20 | 2012-02-07 | Wanova Technologies, Ltd. | On-demand block-level file system streaming to remote desktops |
KR101043238B1 (ko) * | 2009-11-25 | 2011-06-30 | 주식회사 바우압텍 | 고전압용 정전기 방전 보호 소자 |
JP5471365B2 (ja) * | 2009-11-27 | 2014-04-16 | 富士通株式会社 | 情報処理装置及びコンピュータプログラム |
US9229970B2 (en) * | 2009-12-07 | 2016-01-05 | International Business Machines Corporation | Methods to minimize communication in a cluster database system |
US9165025B2 (en) * | 2009-12-11 | 2015-10-20 | International Business Machines Corporation | Transaction recovery in a transaction processing computer system employing multiple transaction managers |
US9092253B2 (en) * | 2009-12-15 | 2015-07-28 | Microsoft Technology Licensing, Llc | Instrumentation of hardware assisted transactional memory system |
US8402218B2 (en) | 2009-12-15 | 2013-03-19 | Microsoft Corporation | Efficient garbage collection and exception handling in a hardware accelerated transactional memory system |
US8539465B2 (en) | 2009-12-15 | 2013-09-17 | Microsoft Corporation | Accelerating unbounded memory transactions using nested cache resident transactions |
US8533440B2 (en) * | 2009-12-15 | 2013-09-10 | Microsoft Corporation | Accelerating parallel transactions using cache resident transactions |
US8655856B2 (en) | 2009-12-22 | 2014-02-18 | International Business Machines Corporation | Method and apparatus for policy distribution |
US8250041B2 (en) | 2009-12-22 | 2012-08-21 | International Business Machines Corporation | Method and apparatus for propagation of file plans from enterprise retention management applications to records management systems |
US8473700B2 (en) * | 2010-03-29 | 2013-06-25 | International Business Machines Corporation | Providing versioning in a storage device |
US9367356B2 (en) * | 2010-06-17 | 2016-06-14 | Microsoft Technology Licensing, Llc | Resource access control |
US8566903B2 (en) | 2010-06-29 | 2013-10-22 | International Business Machines Corporation | Enterprise evidence repository providing access control to collected artifacts |
US8832148B2 (en) | 2010-06-29 | 2014-09-09 | International Business Machines Corporation | Enterprise evidence repository |
US8402359B1 (en) | 2010-06-30 | 2013-03-19 | International Business Machines Corporation | Method and apparatus for managing recent activity navigation in web applications |
US8918550B2 (en) | 2010-08-27 | 2014-12-23 | Total Phase, Inc. | Real-time USB class level decoding |
US8762425B2 (en) * | 2010-10-18 | 2014-06-24 | Hewlett-Packard Development Company, L.P. | Managing a data structure |
US10430298B2 (en) * | 2010-10-28 | 2019-10-01 | Microsoft Technology Licensing, Llc | Versatile in-memory database recovery using logical log records |
US8819056B2 (en) * | 2010-11-19 | 2014-08-26 | International Business Machines Corporation | Facilitation of search, list, and retrieval operations on persistent data set using distributed shared memory |
US8396832B2 (en) | 2010-12-08 | 2013-03-12 | International Business Machines Corporation | Independent fileset generations in a clustered redirect-on-write filesystem |
US8626713B2 (en) * | 2010-12-08 | 2014-01-07 | International Business Machines Corporation | Multiple contexts in a redirect on write file system |
US8688635B2 (en) * | 2011-07-01 | 2014-04-01 | International Business Machines Corporation | Data set connection manager having a plurality of data sets to represent one data set |
US9009428B2 (en) | 2011-07-08 | 2015-04-14 | Hewlett-Packard Development Company, L.P. | Data store page recovery |
US8433697B2 (en) * | 2011-09-10 | 2013-04-30 | Microsoft Corporation | Flexible metadata composition |
US8484166B2 (en) | 2011-11-03 | 2013-07-09 | Oracle International Corporation | Oracle rewind: metadata-driven undo |
US8903874B2 (en) | 2011-11-03 | 2014-12-02 | Osr Open Systems Resources, Inc. | File system directory attribute correction |
US8812447B1 (en) | 2011-11-09 | 2014-08-19 | Access Sciences Corporation | Computer implemented system for accelerating electronic file migration from multiple sources to multiple destinations |
JP5861445B2 (ja) * | 2011-12-21 | 2016-02-16 | 富士ゼロックス株式会社 | 情報処理装置及び情報処理プログラム |
EP2798486B1 (en) | 2011-12-29 | 2019-11-06 | VMware, Inc. | N-way synchronization of desktop images |
JP5907419B2 (ja) * | 2012-03-26 | 2016-04-26 | 日本電気株式会社 | 分散処理システム、分散処理方法および分散処理プログラム |
US8768891B2 (en) * | 2012-04-27 | 2014-07-01 | Sap Ag | Ensuring database log recovery consistency |
US9922089B2 (en) | 2012-07-18 | 2018-03-20 | Software Ag Usa, Inc. | Systems and/or methods for caching XML information sets with delayed node instantiation |
US10515141B2 (en) | 2012-07-18 | 2019-12-24 | Software Ag Usa, Inc. | Systems and/or methods for delayed encoding of XML information sets |
US9760549B2 (en) * | 2012-07-18 | 2017-09-12 | Software Ag Usa, Inc. | Systems and/or methods for performing atomic updates on large XML information sets |
JP5971713B2 (ja) * | 2012-09-20 | 2016-08-17 | 株式会社東芝 | Icカード |
US8819587B1 (en) | 2012-10-30 | 2014-08-26 | Google Inc. | Methods of managing items in a shared workspace |
US9384229B2 (en) | 2012-11-29 | 2016-07-05 | International Business Machines Corporation | Data readiness using initiator region last commit selection |
US20140258347A1 (en) * | 2013-03-11 | 2014-09-11 | Microsoft Corporation | Grouping files for optimized file operations |
US9483451B2 (en) * | 2013-03-14 | 2016-11-01 | Scribestar Ltd. | System and method for handling user editing history based on spawning, merging data structures of directed acyclic graph |
US9672237B2 (en) * | 2013-03-15 | 2017-06-06 | Amazon Technologies, Inc. | System-wide checkpoint avoidance for distributed database systems |
US9514007B2 (en) | 2013-03-15 | 2016-12-06 | Amazon Technologies, Inc. | Database system with database engine and separate distributed storage service |
US9477557B2 (en) | 2013-03-28 | 2016-10-25 | Microsoft Technology Licensing, Llc | Transaction processing using torn write detection |
US10303564B1 (en) * | 2013-05-23 | 2019-05-28 | Amazon Technologies, Inc. | Reduced transaction I/O for log-structured storage systems |
US9256629B1 (en) * | 2013-06-28 | 2016-02-09 | Emc Corporation | File system snapshots over thinly provisioned volume file in mapped mode |
US9256614B1 (en) * | 2013-06-28 | 2016-02-09 | Emc Corporation | File system snapshots over fully provisioned volume file in direct mode |
US9519664B1 (en) * | 2013-09-20 | 2016-12-13 | Amazon Technologies, Inc. | Index structure navigation using page versions for read-only nodes |
WO2015047271A1 (en) * | 2013-09-26 | 2015-04-02 | Hewlett-Packard Development Company, L.P. | Undoing changes made by threads |
US9053484B1 (en) | 2013-11-18 | 2015-06-09 | Access Sciences Corporation | Computer implemented system for forming an accelerated compliance plan with a graphic visualization |
US9058606B1 (en) | 2013-11-18 | 2015-06-16 | Access Sciences Corporation | Computer implemented method for forming an accelerated compliance plan with a graphic visualization |
US9830329B2 (en) | 2014-01-15 | 2017-11-28 | W. Anthony Mason | Methods and systems for data storage |
WO2015116078A1 (en) * | 2014-01-30 | 2015-08-06 | Hewlett-Packard Development Company, L.P. | Memory data versioning |
US20150242282A1 (en) * | 2014-02-24 | 2015-08-27 | Red Hat, Inc. | Mechanism to update software packages |
US11016941B2 (en) | 2014-02-28 | 2021-05-25 | Red Hat, Inc. | Delayed asynchronous file replication in a distributed file system |
US10296371B2 (en) * | 2014-03-17 | 2019-05-21 | International Business Machines Corporation | Passive two-phase commit system for high-performance distributed transaction execution |
US9986029B2 (en) | 2014-03-19 | 2018-05-29 | Red Hat, Inc. | File replication using file content location identifiers |
US9965505B2 (en) * | 2014-03-19 | 2018-05-08 | Red Hat, Inc. | Identifying files in change logs using file content location identifiers |
US10025808B2 (en) | 2014-03-19 | 2018-07-17 | Red Hat, Inc. | Compacting change logs using file content location identifiers |
US9858312B2 (en) * | 2014-10-14 | 2018-01-02 | Red Hat, Inc. | Transaction compensation for single phase resources |
US9558078B2 (en) | 2014-10-28 | 2017-01-31 | Microsoft Technology Licensing, Llc | Point in time database restore from storage snapshots |
US10296259B2 (en) * | 2014-12-22 | 2019-05-21 | Hand Held Products, Inc. | Delayed trim of managed NAND flash memory in computing devices |
US9736628B2 (en) * | 2015-01-09 | 2017-08-15 | Twych Innovation, Inc. | Object location tracking using mobile communication device |
US10706041B1 (en) * | 2015-02-11 | 2020-07-07 | Gravic, Inc. | Systems and methods to profile transactions for end-state determination and latency reduction |
US11144504B1 (en) | 2015-03-31 | 2021-10-12 | EMC IP Holding Company LLC | Eliminating redundant file system operations |
US11294862B1 (en) * | 2015-03-31 | 2022-04-05 | EMC IP Holding Company LLC | Compounding file system metadata operations via buffering |
US11151082B1 (en) | 2015-03-31 | 2021-10-19 | EMC IP Holding Company LLC | File system operation cancellation |
WO2017011219A1 (en) * | 2015-07-10 | 2017-01-19 | Ab Initio Technology Llc | Method and architecture for providing database access control in a network with a distributed database system |
CN105069617B (zh) * | 2015-07-27 | 2018-10-12 | 飞天诚信科技股份有限公司 | 一种恢复不完整交易的方法和装置 |
US10083203B2 (en) * | 2015-08-11 | 2018-09-25 | International Business Machines Corporation | Reducing the cost of update, delete, and append-only insert operations in a database |
RS61196B1 (sr) * | 2015-08-28 | 2021-01-29 | Swirlds Inc | Postupci i uređaj za distribuiranu bazu podataka unutar mreže |
WO2017074451A1 (en) * | 2015-10-30 | 2017-05-04 | Hewlett Packard Enterprise Development Lp | Resuming execution in response to a failure |
US10599672B2 (en) | 2015-11-24 | 2020-03-24 | Cisco Technology, Inc. | Cursor-based state-collapse scheme for shared databases |
US9965538B2 (en) * | 2016-01-19 | 2018-05-08 | Microsoft Technology Licensing, Llc | Early thread return with secondary event writes |
US11379416B1 (en) * | 2016-03-17 | 2022-07-05 | Jpmorgan Chase Bank, N.A. | Systems and methods for common data ingestion |
KR101797482B1 (ko) * | 2016-04-22 | 2017-11-14 | 주식회사 티맥스데이터 | 데이터베이스 시스템에서 블록 복구 방법, 장치 및 컴퓨터 판독가능 매체에 저장된 컴퓨터-프로그램 |
KR102666489B1 (ko) * | 2016-09-09 | 2024-05-20 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN114677145A (zh) * | 2016-12-09 | 2022-06-28 | 创新先进技术有限公司 | 客户系统、信息处理方法和读写方法及装置 |
US11016932B2 (en) * | 2017-09-21 | 2021-05-25 | Alibaba Group Holding Limited | Systems, methods, and apparatuses for simplifying filesystem operations utilizing a key-value storage system |
US10114857B1 (en) | 2017-11-13 | 2018-10-30 | Lendingclub Corporation | Techniques for performing multi-system computer operations |
US11354301B2 (en) | 2017-11-13 | 2022-06-07 | LendingClub Bank, National Association | Multi-system operation audit log |
CN108153804B (zh) * | 2017-11-17 | 2021-03-16 | 极道科技(北京)有限公司 | 一种对称分布式文件系统的元数据日志更新方法 |
US10866925B2 (en) | 2018-03-20 | 2020-12-15 | Optum, Inc. | Apparatus and method for improved network data security enforcement and verification |
US11170029B2 (en) | 2019-05-31 | 2021-11-09 | Lendingclub Corporation | Multi-user cross-device tracking |
US11144560B2 (en) * | 2019-08-23 | 2021-10-12 | International Business Machines Corporation | Utilizing unsumbitted user input data for improved task performance |
US11016849B2 (en) | 2019-09-04 | 2021-05-25 | Red Hat, Inc. | Kernel software raid support for direct-access file systems |
US12001408B2 (en) * | 2020-04-29 | 2024-06-04 | Oracle International Corporation | Techniques for efficient migration of key-value data |
US11487703B2 (en) | 2020-06-10 | 2022-11-01 | Wandisco Inc. | Methods, devices and systems for migrating an active filesystem |
KR20220074806A (ko) * | 2020-11-27 | 2022-06-03 | 한국과학기술원 | 다중파일 트랜잭션의 파일 관리 기법 및 장치 |
CN112486924A (zh) * | 2020-12-17 | 2021-03-12 | 深圳软牛科技有限公司 | 一种ntfs中查找文件删除时间的方法、装置及电子设备 |
US11501027B2 (en) * | 2021-02-08 | 2022-11-15 | Micron Technology, Inc. | Mechanism to support writing files into a file system mounted in a secure memory device |
CN114691625B (zh) * | 2022-04-21 | 2023-05-16 | 成都理工大学 | 一种面向海量动态文件的数据管理方法 |
Family Cites Families (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL7411989A (nl) | 1974-09-10 | 1976-03-12 | Philips Nv | Computersysteem met busstruktuur. |
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 |
US5369757A (en) * | 1991-06-18 | 1994-11-29 | Digital Equipment Corporation | Recovery logging in the presence of snapshot files by ordering of buffer pool flushing |
US6026452A (en) | 1997-02-26 | 2000-02-15 | Pitts; William Michael | Network distributed site cache RAM claimed as up/down stream request/reply channel for storing anticipated data and meta data |
US5506983A (en) * | 1992-07-06 | 1996-04-09 | Microsoft Corporation | Method and system for transactioning of modifications to a tree structured file |
JP3516362B2 (ja) | 1995-03-01 | 2004-04-05 | 富士通株式会社 | 共有データ処理装置及び共有データ処理システム |
US6029160A (en) | 1995-05-24 | 2000-02-22 | International Business Machines Corporation | Method and means for linking a database system with a system for filing data |
US6453325B1 (en) | 1995-05-24 | 2002-09-17 | International Business Machines Corporation | Method and means for backup and restoration of a database system linked to a system for filing data |
US6192365B1 (en) | 1995-07-20 | 2001-02-20 | Novell, Inc. | Transaction log management in a disconnectable computer and network |
WO1997004389A1 (en) * | 1995-07-20 | 1997-02-06 | Novell, Inc. | Transaction synchronization in a disconnectable computer and network |
US5870757A (en) | 1995-09-11 | 1999-02-09 | Sun Microsystems, Inc. | Single transaction technique for a journaling file system of a computer operating system |
US5960194A (en) | 1995-09-11 | 1999-09-28 | International Business Machines Corporation | Method for generating a multi-tiered index for partitioned data |
US5819020A (en) * | 1995-10-16 | 1998-10-06 | Network Specialists, Inc. | Real time backup system |
EP0770964A1 (en) * | 1995-10-26 | 1997-05-02 | Matsushita Electric Industrial Co., Ltd. | File system |
US5774667A (en) | 1996-03-27 | 1998-06-30 | Bay Networks, Inc. | Method and apparatus for managing parameter settings for multiple network devices |
US5857204A (en) | 1996-07-02 | 1999-01-05 | Ab Initio Software Corporation | Restoring the state of a set of files |
US5878434A (en) | 1996-07-18 | 1999-03-02 | Novell, Inc | Transaction clash management in a disconnectable computer and network |
DE69719269T2 (de) * | 1996-08-01 | 2003-10-30 | International Business Machines Corp., Armonk | Absicherung der Unteilbarkeit für eine Ansammlung von transaktionellen Arbeitsschritten in einem Arbeitsflussverwaltungssystem |
US5832508A (en) | 1996-09-18 | 1998-11-03 | Sybase, Inc. | Method for deallocating a log in database systems |
US6321234B1 (en) | 1996-09-18 | 2001-11-20 | Sybase, Inc. | Database server system with improved methods for logging transactions |
US6014674A (en) | 1996-11-14 | 2000-01-11 | Sybase, Inc. | Method for maintaining log compatibility in database systems |
US5909540A (en) * | 1996-11-22 | 1999-06-01 | Mangosoft Corporation | System and method for providing highly available data storage using globally addressable memory |
US5864849A (en) | 1996-12-16 | 1999-01-26 | Lucent Technologies Inc. | System and method for restoring a multiple checkpointed database in view of loss of volatile memory |
US6035379A (en) * | 1997-01-09 | 2000-03-07 | Microsoft Corporation | Transaction processing for user data employing both logging and shadow copying |
US6710786B1 (en) | 1997-02-03 | 2004-03-23 | Oracle International Corporation | Method and apparatus for incorporating state information into a URL |
US5907848A (en) * | 1997-03-14 | 1999-05-25 | Lakeview Technology, Inc. | Method and system for defining transactions from a database log |
US5956731A (en) | 1997-04-23 | 1999-09-21 | Oracle Corporation | Sharing snapshots for consistent reads |
US5897638A (en) | 1997-06-16 | 1999-04-27 | Ab Initio Software Corporation | Parallel virtual file system |
US6453334B1 (en) * | 1997-06-16 | 2002-09-17 | Streamtheory, Inc. | Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching |
US5960436A (en) * | 1997-08-29 | 1999-09-28 | International Business Machines Corp. | Transaction compaction for replay of transactions from client to server |
US6199068B1 (en) | 1997-09-11 | 2001-03-06 | Abb Power T&D Company Inc. | Mapping interface for a distributed server to translate between dissimilar file formats |
US6275953B1 (en) | 1997-09-26 | 2001-08-14 | Emc Corporation | Recovery from failure of a data processor in a network server |
US6192408B1 (en) * | 1997-09-26 | 2001-02-20 | Emc Corporation | Network file server sharing local caches of file access information in data processors assigned to respective file systems |
JPH11119987A (ja) * | 1997-10-20 | 1999-04-30 | Fujitsu Ltd | 業務オブジェクトの自動生成装置及び方法並びに業務オブジェクト生成プログラムを記録したコンピュータ読み取り可能な記録媒体 |
US6219693B1 (en) | 1997-11-04 | 2001-04-17 | Adaptec, Inc. | File array storage architecture having file system distributed across a data processing platform |
US6205449B1 (en) | 1998-03-20 | 2001-03-20 | Lucent Technologies, Inc. | System and method for providing hot spare redundancy and recovery for a very large database management system |
US6374268B1 (en) | 1998-04-14 | 2002-04-16 | Hewlett-Packard Company | Methods and systems for an incremental file system |
US6446109B2 (en) * | 1998-06-29 | 2002-09-03 | Sun Microsystems, Inc. | Application computing environment |
US6189100B1 (en) | 1998-06-30 | 2001-02-13 | Microsoft Corporation | Ensuring the integrity of remote boot client data |
CA2244626A1 (en) | 1998-07-31 | 2000-01-31 | Kom Inc. | A hardware and software system |
US6178519B1 (en) * | 1998-12-10 | 2001-01-23 | Mci Worldcom, Inc. | Cluster-wide database system |
US6922708B1 (en) * | 1999-02-18 | 2005-07-26 | Oracle International Corporation | File system that supports transactions |
US6523027B1 (en) | 1999-07-30 | 2003-02-18 | Accenture Llp | Interfacing servers in a Java based e-commerce architecture |
US6549916B1 (en) | 1999-08-05 | 2003-04-15 | Oracle Corporation | Event notification system tied to a file system |
JP2001101044A (ja) * | 1999-09-29 | 2001-04-13 | Toshiba Corp | トランザクショナルファイル管理方法、トランザクショナルファイルシステム及び複合トランザクショナルファイルシステム |
EP1119178B1 (en) | 1999-12-28 | 2010-04-14 | Sony Corporation | Image commercial transactions system and method |
US7412462B2 (en) * | 2000-02-18 | 2008-08-12 | Burnside Acquisition, Llc | Data repository and method for promoting network storage of data |
US6856993B1 (en) * | 2000-03-30 | 2005-02-15 | Microsoft Corporation | Transactional file system |
US7020665B2 (en) * | 2002-03-07 | 2006-03-28 | Microsoft Corporation | File availability in distributed file storage systems |
US8145686B2 (en) | 2005-05-06 | 2012-03-27 | Microsoft Corporation | Maintenance of link level consistency between database and file system |
US7730487B2 (en) | 2005-08-15 | 2010-06-01 | Microsoft Corporation | Synchronizing transaction ambient state among multiple transaction managers |
-
2000
- 2000-03-30 US US09/539,233 patent/US6856993B1/en not_active Expired - Lifetime
-
2001
- 2001-03-16 CN CNB2005101036976A patent/CN100445998C/zh not_active Expired - Fee Related
- 2001-03-16 WO PCT/US2001/008486 patent/WO2001077908A2/en active Application Filing
- 2001-03-16 CN CN2005101036995A patent/CN1746893B/zh not_active Expired - Fee Related
- 2001-03-16 CN CNB018080634A patent/CN100337233C/zh not_active Expired - Fee Related
- 2001-03-16 JP JP2001575287A patent/JP4219589B2/ja not_active Expired - Fee Related
- 2001-03-16 AU AU2001245806A patent/AU2001245806A1/en not_active Abandoned
- 2001-03-16 EP EP01918767A patent/EP1269353A2/en not_active Ceased
-
2004
- 2004-12-10 US US11/009,662 patent/US7257595B2/en not_active Expired - Fee Related
- 2004-12-10 US US11/009,228 patent/US7512636B2/en not_active Expired - Fee Related
- 2004-12-13 US US11/010,820 patent/US7418463B2/en not_active Expired - Fee Related
-
2005
- 2005-02-14 US US11/057,935 patent/US7613698B2/en not_active Expired - Lifetime
-
2009
- 2009-10-22 US US12/604,209 patent/US8010559B2/en not_active Expired - Fee Related
-
2011
- 2011-07-13 US US13/181,703 patent/US8510336B2/en not_active Expired - Fee Related
-
2013
- 2013-08-09 US US13/963,675 patent/US20130325830A1/en not_active Abandoned
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004280826A (ja) * | 2003-03-12 | 2004-10-07 | Microsoft Corp | プロトコル独立型クライアント側キャッシュ(protocol−independentclient−sidecaching)システムおよび方法 |
JP4613023B2 (ja) * | 2003-03-12 | 2011-01-12 | マイクロソフト コーポレーション | プロトコル独立型クライアント側キャッシュ(protocol−independentclient−sidecaching)システムおよび方法 |
JP2007509409A (ja) * | 2003-10-24 | 2007-04-12 | マイクロソフト コーポレーション | ネットワーク上のトランザクション処理ファイルオペレーションのための方法およびシステム |
JP2011134351A (ja) * | 2003-10-24 | 2011-07-07 | Microsoft Corp | ネットワーク上のトランザクション処理ファイルオペレーションのための方法およびシステム |
JP4769191B2 (ja) * | 2003-10-24 | 2011-09-07 | マイクロソフト コーポレーション | ネットワーク上のトランザクション処理ファイルオペレーションのための方法およびシステム |
JP2005243013A (ja) * | 2004-02-12 | 2005-09-08 | Irdeto Access Bv | 外部データの記憶方法及びシステム |
JP2010532530A (ja) * | 2007-06-29 | 2010-10-07 | マイクロソフト コーポレーション | メモリトランザクションのグループ化 |
JP2012515393A (ja) * | 2009-01-14 | 2012-07-05 | マイクロソフト コーポレーション | トランザクションメモリにおけるトランザクション処理 |
Also Published As
Publication number | Publication date |
---|---|
CN100445998C (zh) | 2008-12-24 |
CN1746893B (zh) | 2010-10-06 |
CN1449530A (zh) | 2003-10-15 |
US20130325830A1 (en) | 2013-12-05 |
CN1746892A (zh) | 2006-03-15 |
WO2001077908A2 (en) | 2001-10-18 |
US20100042626A1 (en) | 2010-02-18 |
JP4219589B2 (ja) | 2009-02-04 |
CN1746893A (zh) | 2006-03-15 |
US20050120059A1 (en) | 2005-06-02 |
US8510336B2 (en) | 2013-08-13 |
WO2001077908A3 (en) | 2002-07-18 |
US7613698B2 (en) | 2009-11-03 |
US7418463B2 (en) | 2008-08-26 |
US6856993B1 (en) | 2005-02-15 |
US20050120036A1 (en) | 2005-06-02 |
CN100337233C (zh) | 2007-09-12 |
EP1269353A2 (en) | 2003-01-02 |
US20110276611A1 (en) | 2011-11-10 |
US20050149525A1 (en) | 2005-07-07 |
US7512636B2 (en) | 2009-03-31 |
US20050138085A1 (en) | 2005-06-23 |
US7257595B2 (en) | 2007-08-14 |
US8010559B2 (en) | 2011-08-30 |
AU2001245806A1 (en) | 2001-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4219589B2 (ja) | トランザクショナルファイルシステム | |
US7865485B2 (en) | Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server | |
McKusick et al. | Soft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast Filesystem. | |
US7555504B2 (en) | Maintenance of a file version set including read-only and read-write snapshot copies of a production file | |
US5878434A (en) | Transaction clash management in a disconnectable computer and network | |
CA2227431C (en) | Transaction log management in a disconnectable computer and network | |
EP2646923B1 (en) | File system backup using change journal | |
US5991771A (en) | Transaction synchronization in a disconnectable computer and network | |
AU2009307842B2 (en) | Atomic multiple modification of data in a distributed storage system | |
US20090006500A1 (en) | Namespace replication program, namespace replication device, and namespace replication method | |
EP2983094A1 (en) | Apparatus and method for a hardware-based file system | |
US20050289414A1 (en) | Lossless recovery for computer systems with remotely dependent data recovery | |
US20080172423A1 (en) | Hsm control program, hsm control apparatus, and hsm control method | |
US20020174103A1 (en) | System and method for updating external file referenced by database with transactional consistency using SQL | |
JP2004062759A (ja) | データベースログの管理方法、その装置およびそのプログラム | |
CA2227430C (en) | Transaction clash management in a disconnectable computer and network | |
Berkeley | Oracle Berkeley DB |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061010 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070110 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20070110 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070126 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070410 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070727 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20071029 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20071105 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080328 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080626 |
|
RD13 | Notification of appointment of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7433 Effective date: 20080627 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20080627 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20080806 |
|
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: 20081017 |
|
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: 20081112 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111121 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4219589 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111121 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121121 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131121 Year of fee payment: 5 |
|
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 |
|
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 |