JPWO2004109518A1 - ファイル切替装置及び切替方法 - Google Patents
ファイル切替装置及び切替方法 Download PDFInfo
- Publication number
- JPWO2004109518A1 JPWO2004109518A1 JP2005500573A JP2005500573A JPWO2004109518A1 JP WO2004109518 A1 JPWO2004109518 A1 JP WO2004109518A1 JP 2005500573 A JP2005500573 A JP 2005500573A JP 2005500573 A JP2005500573 A JP 2005500573A JP WO2004109518 A1 JPWO2004109518 A1 JP WO2004109518A1
- Authority
- JP
- Japan
- Prior art keywords
- file
- switching
- catalog
- contents
- stored
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/131—Fragmentation of text files, e.g. creating reusable text-blocks; Linking to fragments, e.g. using XInclude; Namespaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Human Resources & Organizations (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Quality & Reliability (AREA)
- General Health & Medical Sciences (AREA)
- Strategic Management (AREA)
- Health & Medical Sciences (AREA)
- Entrepreneurship & Innovation (AREA)
- Data Mining & Analysis (AREA)
- Library & Information Science (AREA)
- Economics (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
ファイル内のデータ変更時に、ファイル全体を新しいファイルに切り替えるべきファイルであって、参照時には参照ロックをかけないアクセスを許すファイルの切替の信頼性を向上させる。切替装置1は、切替時点まで使用されていたファイルの名称の記憶部2と、現時点まで使用されているファイルの内容がコピーされている一方の記憶部と、切替時点で新たなファイルの内容がコピーされるべき他方の記憶部とで構成される2つのファイル内容記憶部3、4と、切替時に記憶部2に切替時点まで使用されていたファイルの名称を記憶させ、前記他方の記憶部に新たなファイルの内容をコピーし、前記一方の記憶部の記憶内容を消去する切替部5とを備える。
Description
本発明はファイルの切替方式に関する。すなわちファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるべきファイルを対象として、ファイル参照時には参照ロックをかけることなくアクセスすることができる、ファイルの切替を行うファイル切替装置及び切替方法に関する。
一般にファイルの更新を行う場合には、更新中にファイルが参照されることを防止するために更新ロック、すなわち排他制御を行って更新を行うことになる。
このような排他制御を行うことなくファイル更新を行うための従来技術として、次のような文献がある。
特開平7−182213号「ファイル共用システム」 特開平7−281934号「システムファイルの更新及び復元方法」 特開平8−328933号「並列処理システムのファイルアクセス制御方式」
このような排他制御を行うことなくファイル更新を行うための従来技術として、次のような文献がある。
特許文献1には、ファイル更新期間中にも更新前のファイルを他の利用者が利用可能とするために、実メモリ上のファイルを利用者それぞれの論理空間に割付け、ファイル更新時には例外処理の中で実メモリ上のファイルのコピーをおこない、コピーされたファイルを更新するため、利用者間での排他制御が不要となる技術が開示されている。
特許文献2には、OSによってアクセスが拒否されているファイルの更新などをソフトウェアによって実現する方法が開示されており、その方法では二つの記憶領域に同一のOSを格納しておき、ファイル更新時には稼動中の第一のOSを終了させて第2のOSを起動させ、第二のOSの機能を用いてファイルの更新(入替)が行われる。
特許文献3では、ページ参照用の参照バッファとページ更新用の更新バッファを設け、ページ更新の場合には新しいバージョンのページを更新バッファ上に作成し、ファイルの排他制御によるオーバヘッドを削減するファイルアクセス制御方式が開示されている。
しかしながらこれらの従来技術は、いずれも基本的にはファイルの更新、すなわちファイル内の一部のデータの変更を含むファイルの更新を対象としており、本発明におけるカタログ切替とは対象が異なるものである。
データの一部の変更ではなく、切替を行うべきファイルとして後述するカタログファイルがある。カタログファイルは、例えばXML文書のフォーマット変換内の処理として外部実体の参照処理がある時、URI(ユニフォーム・リソース・アイデンティファイア)によって指定されるリソースの場所と外部にある実体との関係を記述するものである。このカタログファイルは一般にクライアント側のパソコンで作成され、フォーマット変換を行うサーバに一括してファイル転送されるものであり、便宜上1つのファイルとして扱われ、例えばサーバ側にはバージョンアップに対応する旧版、現版、及び新版の三つのバージョンのカタログファイルが保持され、必要に応じて例えば現版を新版に切り替えるファイル切替処理が行われることとなる。
前述の特許文献1ではファイルがコピーされて更新されるだけであり、本発明が対象とするようなファイルの切替処理は行われていない。
また、特許文献3では同様にファイルの切替を対象としておらず、また更新バッファ上に作成された新しいバージョンのページは一時的に格納されているだけのものであり、その後参照用のページに格納されなければならないという問題点がある。
特許文献2は、例えばWebにおけるアプリケーションのアップデート時に適用されるべき技術であり、アップデートした時にかえって問題があり、元に戻したい時に使うことができる技術である。参照や更新時のロック等の排他制御とは無関係であり、本発明が対象とするファイル切替時には適用できないという問題点があった。
本発明が対象とするファイルの切替処理について図1及び図2を用いて更に説明する。
図1はカタログファイルに対する参照方式の従来例の説明図である。前述のようにクライアント側で作成され、サーバ側に転送、すなわち登録されるカタログファイルは一般にバージョンアップに対応して複数存在する。ただしその中で参照されて実際に用いられるファイル、すなわち現版(選択中)のファイルは1つだけである。そして例えばカタログファイルが三つ存在する場合、その状態は現版(選択中)と、旧版(旧選択)、及びそれ以外である。それ以外には、例えばテスト用や、新たにクライアント側から送られた切替(更新)用、すなわち新たに選択中に切り替えるべきファイルが含まれる。この中で現版(選択中)は必ず1つ必要であるが、例えばファイル切替(更新)時のエラー回復のために、旧選択のものも必要となる。
図1において参照アプリケーション10は、カタログファイルの参照にあたって排他制御のために参照ロックをかける。そして選択中ファイル名格納部12に格納されているファイル名を参照し、カタログファイル群14、15、16のいずれかのうちで選択中(現版)のファイルの参照を行うことになる。図1では旧選択のファイル名を格納する格納部13も存在し、選択中のファイルはAカタログ14であり、旧選択のファイルはBカタログ15であり、それ以外のファイルはCカタログ16である。
図2はカタログ切替(更新)処理方式の従来例の説明図である。図1におけると同様に、選択中ファイル名格納部12にはAカタログのファイル名が、旧選択ファイル名格納部13にはBカタログのファイル名が格納されている。この状態で更新処理11は更新ロックをかけて更新処理を開始する。この更新処理の間は参照アプリケーション10側はファイルの参照を行うことができない。
更新処理11は選択中ファイル、すなわちAカタログ14を旧選択ファイルに切り替え、例えばCカタログ16を選択中ファイルとするために、選択中ファイル名格納部12の格納内容をCカタログに、また旧選択ファイル名格納部13の格納内容をAカタログに変更して、選択中ファイルをAカタログからCカタログに切り替えることになる。
このようなカタログファイルの切替(更新)処理においては、基本的にはファイルサービスを停止することなく、カタログファイルの切替を安全に行うことができることが望ましい。まず、カタログファイルの新規追加または更新を反映するために、現版(選択中)から新版への切替を行ったり、新規追加または更新を反映した結果、不具合が検出され、新版を現版に戻すように切り替えたり、あるいは時間帯で業務内容(本番/テスト)を変更するために本番用とテスト用とを切り替えたりする処理を、エラーが発生してもそのエラーを回復して、例えば直前に使われていた選択中ファイルを正しく認識して、そのファイルを参照できる状態に復帰するための処理が必要となる。
例えば図2において選択中ファイル名格納部12の格納内容を変更するときにエラー、例えばI/OエラーでCカタログのファイル名の代わりに全く異なる文字列が格納されてしまったり、旧選択ファイル名格納部13の格納内容を変更する場合にI/Oエラーが生じたりすると、更新処理11側でリカバリー処理をしなければならないが、どのような原因でエラーになったかを判別することは必ずしも容易ではなく、リカバリー処理が困難となってしまう場合があるという問題点があった。
特許文献2には、OSによってアクセスが拒否されているファイルの更新などをソフトウェアによって実現する方法が開示されており、その方法では二つの記憶領域に同一のOSを格納しておき、ファイル更新時には稼動中の第一のOSを終了させて第2のOSを起動させ、第二のOSの機能を用いてファイルの更新(入替)が行われる。
特許文献3では、ページ参照用の参照バッファとページ更新用の更新バッファを設け、ページ更新の場合には新しいバージョンのページを更新バッファ上に作成し、ファイルの排他制御によるオーバヘッドを削減するファイルアクセス制御方式が開示されている。
しかしながらこれらの従来技術は、いずれも基本的にはファイルの更新、すなわちファイル内の一部のデータの変更を含むファイルの更新を対象としており、本発明におけるカタログ切替とは対象が異なるものである。
データの一部の変更ではなく、切替を行うべきファイルとして後述するカタログファイルがある。カタログファイルは、例えばXML文書のフォーマット変換内の処理として外部実体の参照処理がある時、URI(ユニフォーム・リソース・アイデンティファイア)によって指定されるリソースの場所と外部にある実体との関係を記述するものである。このカタログファイルは一般にクライアント側のパソコンで作成され、フォーマット変換を行うサーバに一括してファイル転送されるものであり、便宜上1つのファイルとして扱われ、例えばサーバ側にはバージョンアップに対応する旧版、現版、及び新版の三つのバージョンのカタログファイルが保持され、必要に応じて例えば現版を新版に切り替えるファイル切替処理が行われることとなる。
前述の特許文献1ではファイルがコピーされて更新されるだけであり、本発明が対象とするようなファイルの切替処理は行われていない。
また、特許文献3では同様にファイルの切替を対象としておらず、また更新バッファ上に作成された新しいバージョンのページは一時的に格納されているだけのものであり、その後参照用のページに格納されなければならないという問題点がある。
特許文献2は、例えばWebにおけるアプリケーションのアップデート時に適用されるべき技術であり、アップデートした時にかえって問題があり、元に戻したい時に使うことができる技術である。参照や更新時のロック等の排他制御とは無関係であり、本発明が対象とするファイル切替時には適用できないという問題点があった。
本発明が対象とするファイルの切替処理について図1及び図2を用いて更に説明する。
図1はカタログファイルに対する参照方式の従来例の説明図である。前述のようにクライアント側で作成され、サーバ側に転送、すなわち登録されるカタログファイルは一般にバージョンアップに対応して複数存在する。ただしその中で参照されて実際に用いられるファイル、すなわち現版(選択中)のファイルは1つだけである。そして例えばカタログファイルが三つ存在する場合、その状態は現版(選択中)と、旧版(旧選択)、及びそれ以外である。それ以外には、例えばテスト用や、新たにクライアント側から送られた切替(更新)用、すなわち新たに選択中に切り替えるべきファイルが含まれる。この中で現版(選択中)は必ず1つ必要であるが、例えばファイル切替(更新)時のエラー回復のために、旧選択のものも必要となる。
図1において参照アプリケーション10は、カタログファイルの参照にあたって排他制御のために参照ロックをかける。そして選択中ファイル名格納部12に格納されているファイル名を参照し、カタログファイル群14、15、16のいずれかのうちで選択中(現版)のファイルの参照を行うことになる。図1では旧選択のファイル名を格納する格納部13も存在し、選択中のファイルはAカタログ14であり、旧選択のファイルはBカタログ15であり、それ以外のファイルはCカタログ16である。
図2はカタログ切替(更新)処理方式の従来例の説明図である。図1におけると同様に、選択中ファイル名格納部12にはAカタログのファイル名が、旧選択ファイル名格納部13にはBカタログのファイル名が格納されている。この状態で更新処理11は更新ロックをかけて更新処理を開始する。この更新処理の間は参照アプリケーション10側はファイルの参照を行うことができない。
更新処理11は選択中ファイル、すなわちAカタログ14を旧選択ファイルに切り替え、例えばCカタログ16を選択中ファイルとするために、選択中ファイル名格納部12の格納内容をCカタログに、また旧選択ファイル名格納部13の格納内容をAカタログに変更して、選択中ファイルをAカタログからCカタログに切り替えることになる。
このようなカタログファイルの切替(更新)処理においては、基本的にはファイルサービスを停止することなく、カタログファイルの切替を安全に行うことができることが望ましい。まず、カタログファイルの新規追加または更新を反映するために、現版(選択中)から新版への切替を行ったり、新規追加または更新を反映した結果、不具合が検出され、新版を現版に戻すように切り替えたり、あるいは時間帯で業務内容(本番/テスト)を変更するために本番用とテスト用とを切り替えたりする処理を、エラーが発生してもそのエラーを回復して、例えば直前に使われていた選択中ファイルを正しく認識して、そのファイルを参照できる状態に復帰するための処理が必要となる。
例えば図2において選択中ファイル名格納部12の格納内容を変更するときにエラー、例えばI/OエラーでCカタログのファイル名の代わりに全く異なる文字列が格納されてしまったり、旧選択ファイル名格納部13の格納内容を変更する場合にI/Oエラーが生じたりすると、更新処理11側でリカバリー処理をしなければならないが、どのような原因でエラーになったかを判別することは必ずしも容易ではなく、リカバリー処理が困難となってしまう場合があるという問題点があった。
本発明の目的は、ファイル切替時における対象ファイルのロックに起因する処理時間の増加を防ぐ方法を提供することである。また、ファイル切替(更新)時にエラーになった場合にも、その直前に現版(選択中)として使用されていたファイルのファイル名を正しく検出し、リカバリー処理を確実に実行できるファイル切替装置及び切替方法を提供することである。
本発明のファイル切替装置は、ファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるものであり、ファイル名称記憶手段、2つのファイル内容記憶手段、及びファイル切替手段を備える。
ファイル名称記憶手段は、ファイルの切替時点まで利用されていたファイルの名称を記憶するためのものであり、2つのファイル内容記憶手段のうち、一方は現時点まで使用されているファイルの内容がコピーされているものであり、他方のファイル内容記憶手段はファイルの切替時に新たなファイルの内容をコピーすべきものである。
ファイル切替手段は、ファイルの切替時に前記ファイル名称記憶手段に現版(選択中)ファイルの名称を記憶させ、前述の他方のファイル内容記憶手段に新たなファイルの内容をコピーし、前述の一方のファイル内容記憶手段の記憶内容を消去させる切替処理を行うものである。
また本発明のファイル切替方法においては、ファイル切替時点まで現版(選択中)として使用されていたファイルの名称をログバッファに記憶させ、新たなファイルの内容のコピーを記憶装置の定められた領域に格納し、記憶装置の異なる領域にコピーされていた、切替時点までの現版ファイルのコピーの内容を消去する方法が用いられる。また、この方法を実現するためのプログラム及び計算機読出し可能記憶媒体が用いられる。
以上のように本発明によれば、ファイル切替時点まで現版として使用されていたファイルの名称を記憶した後に、定められた二つの記憶領域のうち、空いている領域に新たなファイルの内容をコピーし、もう1つの領域にコピーされていた、切替時点までの現版ファイルのコピーの内容を消去することになる。
本発明のファイル切替装置は、ファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるものであり、ファイル名称記憶手段、2つのファイル内容記憶手段、及びファイル切替手段を備える。
ファイル名称記憶手段は、ファイルの切替時点まで利用されていたファイルの名称を記憶するためのものであり、2つのファイル内容記憶手段のうち、一方は現時点まで使用されているファイルの内容がコピーされているものであり、他方のファイル内容記憶手段はファイルの切替時に新たなファイルの内容をコピーすべきものである。
ファイル切替手段は、ファイルの切替時に前記ファイル名称記憶手段に現版(選択中)ファイルの名称を記憶させ、前述の他方のファイル内容記憶手段に新たなファイルの内容をコピーし、前述の一方のファイル内容記憶手段の記憶内容を消去させる切替処理を行うものである。
また本発明のファイル切替方法においては、ファイル切替時点まで現版(選択中)として使用されていたファイルの名称をログバッファに記憶させ、新たなファイルの内容のコピーを記憶装置の定められた領域に格納し、記憶装置の異なる領域にコピーされていた、切替時点までの現版ファイルのコピーの内容を消去する方法が用いられる。また、この方法を実現するためのプログラム及び計算機読出し可能記憶媒体が用いられる。
以上のように本発明によれば、ファイル切替時点まで現版として使用されていたファイルの名称を記憶した後に、定められた二つの記憶領域のうち、空いている領域に新たなファイルの内容をコピーし、もう1つの領域にコピーされていた、切替時点までの現版ファイルのコピーの内容を消去することになる。
図1は、従来のカタログ参照方式を説明する図である。
図2は、従来のカタログファイル切替処理の動作を説明する図である。
図3は、本発明のファイル切替装置の原理構成ブロック図である。
図4は、本発明のカタログファイル切替方式が適用されるシステムの全体構成ブロック図である。
図5は、図4におけるカタログファイルの構成例を示す図である。
図6は、カタログ情報ファイルとカタログエントリーファイルの具体例を示す図である。
図7は、図4のシステムにおけるファイル変換処理の説明図である。
図8は、図4のシステムにおけるカタログファイル切替処理の説明図である。
図9は、本実施形態におけるカタログファイル参照処理における動作の説明図である。
図10は、カタログファイル切替処理における動作の説明図である。
図11は、カタログファイル切替処理が正常に終了したときの状態を説明する図である。
図12は、カタログファイル切替処理中にエラーが発生した場合の回復動作の説明図である。
図13は、カタログ参照処理の詳細フローチャートである。
図14は、有効カタログ獲得処理の詳細フローチャートである。
図15は、カタログ切替処理の詳細フローチャートである。
図16は、本発明を実現するためのプログラムのコンピュータへのローディングを説明する図である。
図2は、従来のカタログファイル切替処理の動作を説明する図である。
図3は、本発明のファイル切替装置の原理構成ブロック図である。
図4は、本発明のカタログファイル切替方式が適用されるシステムの全体構成ブロック図である。
図5は、図4におけるカタログファイルの構成例を示す図である。
図6は、カタログ情報ファイルとカタログエントリーファイルの具体例を示す図である。
図7は、図4のシステムにおけるファイル変換処理の説明図である。
図8は、図4のシステムにおけるカタログファイル切替処理の説明図である。
図9は、本実施形態におけるカタログファイル参照処理における動作の説明図である。
図10は、カタログファイル切替処理における動作の説明図である。
図11は、カタログファイル切替処理が正常に終了したときの状態を説明する図である。
図12は、カタログファイル切替処理中にエラーが発生した場合の回復動作の説明図である。
図13は、カタログ参照処理の詳細フローチャートである。
図14は、有効カタログ獲得処理の詳細フローチャートである。
図15は、カタログ切替処理の詳細フローチャートである。
図16は、本発明を実現するためのプログラムのコンピュータへのローディングを説明する図である。
図3は本発明のファイル切替装置の原理構成ブロック図である。同図においてファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるファイル切替装置1は、ファイル名称記憶部2、2つのファイル内容記憶部3、4、ファイル切替部5を備える。
ファイル名称記憶部2は、ファイルの切替時点まで現版(選択中)として使用されていたファイルの名称を記憶するためのものであり、2つのファイル内容記憶部3、4のうち、一方のファイル内容記憶部は切替時点まで使用されている現版ファイルの内容がコピーされているものであり、他方のファイル内容記憶部はファイルの切替時に新たなファイルの内容がコピーされるものである。
ファイル切替部5は、ファイルの切替時にファイル名称記憶部2に現版ファイルの名称を記憶させ、前述の他方のファイル内容記憶部に新たなファイルの内容をコピーし、前述の一方のファイル内容記憶部の記憶内容を消去させる切替処理を行うものである。
ファイル切替装置1は、ファイル参照アプリケーションが現版ファイルの内容を参照しようとする時、参照ロックをかけることなく、データが記憶されているファイル内容記憶部、例えば前記一方のファイル内容記憶部に対してアクセスを行わせるアクセス制御部を更に備えることもでき、またこの時、前記ファイル切替部5がファイルの切替処理を行っているクリティカルリージョン状態の場合には、ファイル参照アプリケーションにクリティカルリージョンの状態の解消を待たせ、更新ロックを獲得させた後にファイル参照を行わせる参照制御部を更に備えることもできる。
またファイル参照アプリケーションが現版ファイルの内容を参照しようとした時、前述の一方のファイル内容記憶部と他方のファイル内容記憶部との両方にファイルの内容が記憶されているエラーが検出された場合、ファイル名称記憶部2の記憶内容を用いて、ファイル切替以前に現版として使用されていたファイルにファイル参照アプリケーションのアクセスを行わせ、他方のファイル内容記憶部の記憶内容を消去するエラー処理部を備えることもできる。
本発明の実施形態について、図4以降を用いて更に詳細に説明する。図4は本発明のファイル切替方式が用いられるXLM文書フォーマット変換サービスシステムの全体構成ブロック図である。このシステムを例として、本発明の実施形態におけるファイル切替方式、すなわちカタログファイルの切替方式について説明する。
図4においてクライアント側のパソコン(PC)20とサーバ21とが接続され、さらにこれらはイントラネット、またはインターネット22に接続されているものとする。このシステムにおいてXML(エクステンシブル・マークアップ・ランゲージ)文書を、文書スタイル変換機能XSLT(エクステンシブル・スタイル・ランゲージ・トランスフォーメーション)スタイルシートを用いて、フォーマット変換するサービスが実行される。このサービスを行うためには、情報資源の場所を示すURI(ユニフォーム・リソース・アイデンティファイア)によって指定されるスタイルシートが必要となる。
XML文書を読み込むためには、XMLファイル等を読み込んでデータをメモリに展開するXMLパーサが使用されるが、文書中に外部実体の参照処理があると、XMLパーサはそのリソースを獲得しようとするが、その外部実体はURIで指定されている。そこでURIに対応するリソースを取得し、供給するURIリゾルバ機構が必要となる。
一般にこのURIリゾルバ機構は、URIがURL(ユニバーサル・リソース・ロケータ)であれば、インターネットを参照するか、あるいはイントラネット内のデータベースを参照してリソースを獲得する。この場合にはネットワークに接続されていることが前提となっており、オフラインではリソースの獲得ができない。そこで図4のシステムではカタログ方式が採用されている。
カタログ方式では、URIリゾルバ機構に対して、外部実体とリソースの場所との関係が記述されたカタログブックを一まとめにしたカタログファイルを供給し、URIリゾルバ機構はリソースが要求されたらこのカタログファイルを利用して、リソースの獲得を行うことになる。これによってURIリゾルバ機構をオフラインでも機能させることができる。しかし一方でカタログ保守のために、カタログファイルを、例えば現版から新版に随時全体として更新、すなわち切替を行うことが必要となる。そこでカタログファイルとして、複数のバージョンを異なる用途に対応して複数用意し、その選択すなわち切替を行うことが必要となる。
図4においてサーバ21の内部には全体を管理する管理プロセス28、XML文書のフォーマット変換等を行うための変換プロセス23、カタログブックを一まとめにしたXMLカタログファイル24、及びカタログファイルの切替を行うための切替インターフェイス25が備えられ、例えばクライアント側から指定される変換前ファイル26が変換プロセス23によって変換され、変換後ファイル27が得られることになる。
図5はカタログファイル24の構成例の説明図である。同図においてXMLカタログファイル24は、外部識別子/URIとリソースファイルの場所との関係を記述するカタログエントリーファイル30、XMLカタログファイルに関する情報、例えばファイル名、関数、コメント等を記述するカタログ情報ファイル31、外部識別子/URIによって参照されるファイル群としてのリソースファイル32から構成され、またリソースファイル32はスタイルシート33、スキーマ34及びXMLファイル35を備えている。
図6はカタログファイル24内でのカタログエントリーファイル30、及びカタログ情報ファイル31の具体例である。ここでリソースファイルは(1)から(3)の3つのファイルから構成されているものとする。カタログエントリーファイル30は、外部識別子/URIとリソースファイルの場所との関係を記述したXMLファイルであり、XML等の規格の標準化を行うOASIS(オルガニゼーション・フォー・ザ・アドバンスメント・オブ・ストラクチャード・インフォメーション・スタンダーズ)によって作成された「XMLカタログ−コミッティ・スペシフィケーション06Aug2001」に準拠している必要がある。
図7は図4のシステムにおけるファイル変換処理の説明図である。同図においてクライアント20側からファイルの変換指示が変換プロセス23に与えられると、▲1▼で変換前ファイル26が読み込まれ、▲2▼で切替インタフェース25のもっている情報から、変換処理において使用すべきカタログファイル、すなわち現版のカタログファイルについての情報が取得され、▲3▼でその現版のカタログファイル、ここではファイルBが参照され、そのカタログファイルの内容を用いて▲4▼で変換後ファイル27が作成される。
ファイル変換処理において、現版のカタログファイルとしてのファイルBが直接参照されるものとしたが、これは説明の便宜上であり、本実施形態では図9以下で説明するように現版ファイルのコピーを参照することを基本とする。
図8は図4のシステムにおけるカタログ切替処理の説明図である。同図において、▲1▼でクライアント20側から管理プロセス28に対して、カタログ切替処理の指示が行われる。▲2▼で切替インタフェース25により現版ファイル、すなわち選択中ファイルがAカタログとされ、図7で選択中、すなわち現版ファイルとされていたBカタログが旧選択ファイルとされる切替処理が実行される。
図9は本実施形態におけるカタログ参照処理の説明図である。本実施形態においては実際にはカタログの切替は非常に珍しく、切替がほとんど発生しないという実情に着目して、参照アプリケーションによる参照処理のコストを最小にするため、参照アプリケーションに対しては参照ロックを獲得させずに参照を許すことにする。
図9を従来技術における図1と比較すると、選択中ファイル名格納部12、旧選択ファイル名格納部13にかわって2つのカタログファイル複写領域(スイッチ)51、52、及びカタログの切替時にその時点まで選択中であったファイルの名称を旧選択ファイル名として格納するログファイル50が設けられる。
図9では、選択中のファイルはAカタログ14であり、最後にファイルの切替が行われた以前に選択中であったファイル、すなわち旧選択のカタログファイルはBカタログ15であるとする。そして直前に行われた切替時にログファイル50にはBカタログのファイル名が格納され、それが消去されずにそのまま格納されているものとする。2つのファイル格納領域51と52の一方、ここでは51に選択中のファイルとしてのAカタログの内容がそのまま複写されており、もう一方の格納領域52にはデータが格納されていない状態(あるいは空であることを示す所定の値)となっている。直前のカタログ切替時には格納領域52に現在は旧選択のBカタログの内容が複写されていたが、カタログ切替処理が正確に行われた結果、52には何らのデータも格納されていない状態となっている。
ここでデータ格納領域51をスイッチ1、格納領域52をスイッチ2と呼ぶことにする。この名称は、これらの2つの格納領域にはカタログの参照が可能な正常の状態ではどちらか一方にカタログデータが格納されており、一方には全くデータが格納されていない状態となり、ファイルの切替が行われるたびにカタログファイルの複写されている領域が領域51と52の間で交互に切替られることに関連しており、またソフトウェアで行われる処理をハードウェア的に表現する名称である。
図10はカタログ更新(切替)処理の説明図である。図9の状態で選択中であったAカタログを旧選択ファイルとし、例えばクライアント側から新たに送られ、Cカタログ16とされたカタログファイルを、選択中に切り替えるカタログ更新処理が行われるものとする。
更新処理11は、まずログファイル50に今まで選択中であったファイルの名称、すなわち“Aカタログ”を格納した後に、図9ではデータが格納されていなかった領域52に新たに選択中とすべきカタログファイル、すなわちCカタログの内容を複写し、もう一方の領域51、すなわちスイッチ1に格納されていたカタログファイル、すなわちAカタログの消去を行うことになる。
この切替処理が行われている間は、2つの格納領域51、52、すなわちスイッチ1とスイッチ2の両方にデータが格納されているクリティカルリージョンの状態となり、この切替中に参照アプリケーション10が選択中ファイルの参照を行おうとすると、クリティカルリージョンの状態が検出され、参照アプリケーション10側は、後述するようにこのクリティカルリージョンの状態が解消された後に、再トライを行うことになる。
図11はカタログ切替処理正常終了時の状態を説明する図である。図10で説明したようにAカタログ14は旧選択ファイルとなり、Cカタログ16が選択中ファイルとなる。格納領域51、すなわちスイッチ1に格納されていたAカタログの内容は消去され、ログファイル52には旧選択のファイル名、すなわちAカタログのファイル名が格納されている。このログファイルの格納内容は次のファイル切替時点までそのまま保たれ、次のファイル格納時点で上書きされるものとする。
図12は更新、すなわち切替処理の間にエラーが発生した場合の動作説明図である。更新処理11側での処理の間にエラーが発生すると、更新処理11はエラー回復を行わないまま処理を終了するものとする。このようにエラーが発生した場合には、2つの記憶領域51、52、すなわちスイッチ1とスイッチ2の両方に複写されたカタログのデータが残っており、またログファイル50には更新処理を行う前に選択中であったファイル名、ここではAカタログのファイル名が格納されている。
参照アプリケーション10側がこの状態で選択中ファイルの参照を行おうとすると、2つの格納領域51、52の両方にファイルのデータが存在することが検出され、エラー状態であることがわかり、参照アプリケーション10はログファイル50の内容を参照することによって、更新処理の前の選択中ファイルがAカタログであったことを検出し、ここではスイッチ1側のAカタログの内容を残し、スイッチ2側のCカタログの内容を消去して、カタログファイル群のうちでAカタログ14を再び選択中に戻して、そのファイルの内容を参照し、処理を終了する。これによって、カタログ切替時にエラーが起こった場合にも、切替の前に使用されていたファイルに確実にアクセスすることが可能となる。
図13は本実施形態におけるカタログ参照処理のフローチャートである。同図においてカタログ参照処理が開始されると、まずステップS1で参照ロックなしに有効カタログの獲得処理が行われる。この処理については図14で説明する。そしてステップS2で正常にカタログが獲得できたか否かが判定され、正常に獲得できた場合にはそのまま処理を終了する。
正常に獲得できないと判定される場合は、図14で説明するようにファイルの切替処理中で、2つの格納領域51、52、すなわちスイッチ1とスイッチ2の両方にファイルデータが格納されているクリティカルリージョンの状態であることになり、ステップS3でクリティカルリージョンを抜けるのを待つためロックの獲得トライが行われ、ステップS4でクリティカルリージョンの状態を抜けるのを待ち、カタログ切替が完了して待ち状態が解除されるとロックが実際に獲得され、ステップS5でステップS1と同様の有効カタログの獲得処理が行われ、ここで有効カタログが獲得されると、ステップS6でロックが解除されて処理を終了する。
ここでステップS3で獲得がトライされるロックとは更新ロックであり、参照アプリケーション側があたかも更新処理であるかのように更新ロックを獲得しようとするものである。更新ロックを獲得しようとすることで、カタログの切替処理が完了し、ロックが獲得できた時点で待ち状態を解除することができ、これによって有効カタログ獲得処理を開始するタイミングを参照アプリケーション側で検出することが可能となる。
図14は図13のステップS1、またはS5における有効カタログ獲得処理の詳細フローチャートである。同図において処理が開始されるとまずステップS10で参照元がロック済で、かつスイッチの両方にデータが格納されているか否かが判定される。参照元がロック済であるということは、図13のステップS4で待ち状態が解除され、参照アプリケーション側で更新ロックが獲得された状態を意味し、この状態でスイッチの両方にデータが格納されているということは、クリティカルリージョンを抜けたにもかかわらず、両方のスイッチにデータが格納されているエラー状態を意味することになる。そこでステップS11でログファイルの内容がチェックされ、切替エラーの発生前に選択されていたカタログファイルを選択中に戻すため、すなわちエラー状態のリカバリーを行うために、図12で説明したようにログファイル50に格納されている名称のファイルの内容を格納しているスイッチ側のデータだけが残され、もう一方のスイッチ側のデータは消去される。
ステップS11の処理が行われた後、またはステップS10で参照元がロック済でないか、あるいはスイッチの両方にデータが格納されている状態でない場合には、ステップS12でスイッチ1側のみにデータがあるか否かが判定され、その結果がYesであるときには、ステップS13でスイッチ1の内容が獲得(通知)されて、図13の処理に戻る。
ステップS12でスイッチ1側のみにデータがある状態でない場合には、ステップS14でスイッチ2側のみにデータが格納されているか否かが判定され、結果がYesである場合にはステップS15でスイッチ2の内容が獲得されて、図13の処理に戻る。
ステップS14の判定がNoである場合には、ステップS16で2つのスイッチの両方にデータがないか否かが判定される。この判定結果がNoである場合には、両方にデータがある、すなわちステップS10で2つのスイッチにデータが格納されているにもかかわらず、参照元がロック済でない状態、すなわちクリティカルリージョンの状態であることになり、ステップS17でクリティカルリージョンの状態であることが通知されて、図13の処理に戻る。
ステップS16で両方にデータが無いと判定された場合には、例えばシステムの保守中に2つのスイッチのデータをいずれも消去したメンテナンス状態であることになり、このようなメンテナンス状態の時には、それ以上処理を続けることができないので、ステップS18で対応するエラー処理に移行する。
図15はカタログ切替処理のフローチャートである。同図において処理が開始されると、まずステップS20でロック、すなわち更新ロックの獲得が行われ、ステップS21でエラーがあるか否か、すなわち両方のスイッチにデータが格納されているか否かが判定され、判定結果がYesである場合には、ステップS22でログファイルの内容がチェックされ、エラー発生前に選択中であったファイルの内容を示すスイッチ側が選択中ファイルとされ、ステップS23の処理に移行する。ステップS21の判定結果がNoの時には直ちにステップS23に移行する。
ステップS23では選択中カタログファイルの名称がログファイルに記録されるが、ステップS21で何らかの理由でエラーがあった場合にも、図10及び図11のように正常にカタログ切替が行われている場合にも、ステップS23ではAカタログの名称がログファイルに記録されることになる。
続いてステップS24で新しいカタログ、すなわち新たに選択中とされるべきカタログファイルの内容が空いているスイッチ側の記憶領域に複写され、ステップS25でファイルの切替処理、すなわち図11ではCカタログを選択中、Aカタログを旧選択とする切替処理が行われ、ステップS26で旧選択側のスイッチに格納されているデータが消去されたか否かが判定され、Yesの場合には処理を終了し、さらに何らかのエラーが発生した場合にはステップS27でエラー処理が実行される。
以上において本発明のファイル切替装置、及び切替方法についてその詳細を説明したが、このファイル切替装置は当然一般的なコンピュータシステムとして構成することが可能である。図16はそのようなコンピュータシステム、すなわちハードウェア環境の構成ブロック図である。
図16においてコンピュータシステムは中央処理装置(CPU)70、リードオンリーメモリ(ROM)71、ランダムアクセスメモリ(RAM)72、通信インタフェース23、記憶装置74、入出力装置75、可搬型記憶媒体の読取り装置76、及びこれらの全てが接続されたバス77によって構成されている。
記憶装置74としてはハードディスク、磁気ディスクなど様々な形式の記憶装置を使用することができ、このような記憶装置74、またはROM71に図13〜図15のフローチャートに示されたプログラムや、本発明の特許請求の範囲の請求項7のプログラムなどが格納され、そのようなプログラムがCPU70によって実行されることにより、本実施形態におけるカタログファイルの参照、ファイルの切替、切替時のエラーに対するリカバリー処理などが可能となる。
このようなプログラムは、プログラム提供者78側からネットワーク79、及び通信インタフェース73を介して、例えば記憶装置74に格納されることも、また市販され、流通している可搬型記憶媒体80に格納され、読取り装置76にセットされて、CPU70によって実行されることも可能である。可搬型記憶媒体80としてはCD−ROM、フレキシブルディスク、光ディスク、光磁気ディスク、DVD等様々な形式の記憶媒体を使用することができ、このような記憶媒体に格納されたプログラムが読取装置76によって読取られることにより、本実施形態におけるカタログファイルの切替等が可能となる。
以上詳細に説明したように、本発明によれば、ファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるファイル切替方式において、ファイル切替処理との衝突が起こっても、またファイル切替時にエラーが起こっても、ファイル参照側で正しく動作していた現版のファイルを認識してファイル参照処理を行うことができる。またこのようなエラー発生時のリカバリー処理も参照側で安全、かつ確実に行うことが可能となる。これによってカタログ切替の信頼性が向上し、このようなファイル、特にカタログファイルの実用性の向上に寄与するところが大きい。
ファイル名称記憶部2は、ファイルの切替時点まで現版(選択中)として使用されていたファイルの名称を記憶するためのものであり、2つのファイル内容記憶部3、4のうち、一方のファイル内容記憶部は切替時点まで使用されている現版ファイルの内容がコピーされているものであり、他方のファイル内容記憶部はファイルの切替時に新たなファイルの内容がコピーされるものである。
ファイル切替部5は、ファイルの切替時にファイル名称記憶部2に現版ファイルの名称を記憶させ、前述の他方のファイル内容記憶部に新たなファイルの内容をコピーし、前述の一方のファイル内容記憶部の記憶内容を消去させる切替処理を行うものである。
ファイル切替装置1は、ファイル参照アプリケーションが現版ファイルの内容を参照しようとする時、参照ロックをかけることなく、データが記憶されているファイル内容記憶部、例えば前記一方のファイル内容記憶部に対してアクセスを行わせるアクセス制御部を更に備えることもでき、またこの時、前記ファイル切替部5がファイルの切替処理を行っているクリティカルリージョン状態の場合には、ファイル参照アプリケーションにクリティカルリージョンの状態の解消を待たせ、更新ロックを獲得させた後にファイル参照を行わせる参照制御部を更に備えることもできる。
またファイル参照アプリケーションが現版ファイルの内容を参照しようとした時、前述の一方のファイル内容記憶部と他方のファイル内容記憶部との両方にファイルの内容が記憶されているエラーが検出された場合、ファイル名称記憶部2の記憶内容を用いて、ファイル切替以前に現版として使用されていたファイルにファイル参照アプリケーションのアクセスを行わせ、他方のファイル内容記憶部の記憶内容を消去するエラー処理部を備えることもできる。
本発明の実施形態について、図4以降を用いて更に詳細に説明する。図4は本発明のファイル切替方式が用いられるXLM文書フォーマット変換サービスシステムの全体構成ブロック図である。このシステムを例として、本発明の実施形態におけるファイル切替方式、すなわちカタログファイルの切替方式について説明する。
図4においてクライアント側のパソコン(PC)20とサーバ21とが接続され、さらにこれらはイントラネット、またはインターネット22に接続されているものとする。このシステムにおいてXML(エクステンシブル・マークアップ・ランゲージ)文書を、文書スタイル変換機能XSLT(エクステンシブル・スタイル・ランゲージ・トランスフォーメーション)スタイルシートを用いて、フォーマット変換するサービスが実行される。このサービスを行うためには、情報資源の場所を示すURI(ユニフォーム・リソース・アイデンティファイア)によって指定されるスタイルシートが必要となる。
XML文書を読み込むためには、XMLファイル等を読み込んでデータをメモリに展開するXMLパーサが使用されるが、文書中に外部実体の参照処理があると、XMLパーサはそのリソースを獲得しようとするが、その外部実体はURIで指定されている。そこでURIに対応するリソースを取得し、供給するURIリゾルバ機構が必要となる。
一般にこのURIリゾルバ機構は、URIがURL(ユニバーサル・リソース・ロケータ)であれば、インターネットを参照するか、あるいはイントラネット内のデータベースを参照してリソースを獲得する。この場合にはネットワークに接続されていることが前提となっており、オフラインではリソースの獲得ができない。そこで図4のシステムではカタログ方式が採用されている。
カタログ方式では、URIリゾルバ機構に対して、外部実体とリソースの場所との関係が記述されたカタログブックを一まとめにしたカタログファイルを供給し、URIリゾルバ機構はリソースが要求されたらこのカタログファイルを利用して、リソースの獲得を行うことになる。これによってURIリゾルバ機構をオフラインでも機能させることができる。しかし一方でカタログ保守のために、カタログファイルを、例えば現版から新版に随時全体として更新、すなわち切替を行うことが必要となる。そこでカタログファイルとして、複数のバージョンを異なる用途に対応して複数用意し、その選択すなわち切替を行うことが必要となる。
図4においてサーバ21の内部には全体を管理する管理プロセス28、XML文書のフォーマット変換等を行うための変換プロセス23、カタログブックを一まとめにしたXMLカタログファイル24、及びカタログファイルの切替を行うための切替インターフェイス25が備えられ、例えばクライアント側から指定される変換前ファイル26が変換プロセス23によって変換され、変換後ファイル27が得られることになる。
図5はカタログファイル24の構成例の説明図である。同図においてXMLカタログファイル24は、外部識別子/URIとリソースファイルの場所との関係を記述するカタログエントリーファイル30、XMLカタログファイルに関する情報、例えばファイル名、関数、コメント等を記述するカタログ情報ファイル31、外部識別子/URIによって参照されるファイル群としてのリソースファイル32から構成され、またリソースファイル32はスタイルシート33、スキーマ34及びXMLファイル35を備えている。
図6はカタログファイル24内でのカタログエントリーファイル30、及びカタログ情報ファイル31の具体例である。ここでリソースファイルは(1)から(3)の3つのファイルから構成されているものとする。カタログエントリーファイル30は、外部識別子/URIとリソースファイルの場所との関係を記述したXMLファイルであり、XML等の規格の標準化を行うOASIS(オルガニゼーション・フォー・ザ・アドバンスメント・オブ・ストラクチャード・インフォメーション・スタンダーズ)によって作成された「XMLカタログ−コミッティ・スペシフィケーション06Aug2001」に準拠している必要がある。
図7は図4のシステムにおけるファイル変換処理の説明図である。同図においてクライアント20側からファイルの変換指示が変換プロセス23に与えられると、▲1▼で変換前ファイル26が読み込まれ、▲2▼で切替インタフェース25のもっている情報から、変換処理において使用すべきカタログファイル、すなわち現版のカタログファイルについての情報が取得され、▲3▼でその現版のカタログファイル、ここではファイルBが参照され、そのカタログファイルの内容を用いて▲4▼で変換後ファイル27が作成される。
ファイル変換処理において、現版のカタログファイルとしてのファイルBが直接参照されるものとしたが、これは説明の便宜上であり、本実施形態では図9以下で説明するように現版ファイルのコピーを参照することを基本とする。
図8は図4のシステムにおけるカタログ切替処理の説明図である。同図において、▲1▼でクライアント20側から管理プロセス28に対して、カタログ切替処理の指示が行われる。▲2▼で切替インタフェース25により現版ファイル、すなわち選択中ファイルがAカタログとされ、図7で選択中、すなわち現版ファイルとされていたBカタログが旧選択ファイルとされる切替処理が実行される。
図9は本実施形態におけるカタログ参照処理の説明図である。本実施形態においては実際にはカタログの切替は非常に珍しく、切替がほとんど発生しないという実情に着目して、参照アプリケーションによる参照処理のコストを最小にするため、参照アプリケーションに対しては参照ロックを獲得させずに参照を許すことにする。
図9を従来技術における図1と比較すると、選択中ファイル名格納部12、旧選択ファイル名格納部13にかわって2つのカタログファイル複写領域(スイッチ)51、52、及びカタログの切替時にその時点まで選択中であったファイルの名称を旧選択ファイル名として格納するログファイル50が設けられる。
図9では、選択中のファイルはAカタログ14であり、最後にファイルの切替が行われた以前に選択中であったファイル、すなわち旧選択のカタログファイルはBカタログ15であるとする。そして直前に行われた切替時にログファイル50にはBカタログのファイル名が格納され、それが消去されずにそのまま格納されているものとする。2つのファイル格納領域51と52の一方、ここでは51に選択中のファイルとしてのAカタログの内容がそのまま複写されており、もう一方の格納領域52にはデータが格納されていない状態(あるいは空であることを示す所定の値)となっている。直前のカタログ切替時には格納領域52に現在は旧選択のBカタログの内容が複写されていたが、カタログ切替処理が正確に行われた結果、52には何らのデータも格納されていない状態となっている。
ここでデータ格納領域51をスイッチ1、格納領域52をスイッチ2と呼ぶことにする。この名称は、これらの2つの格納領域にはカタログの参照が可能な正常の状態ではどちらか一方にカタログデータが格納されており、一方には全くデータが格納されていない状態となり、ファイルの切替が行われるたびにカタログファイルの複写されている領域が領域51と52の間で交互に切替られることに関連しており、またソフトウェアで行われる処理をハードウェア的に表現する名称である。
図10はカタログ更新(切替)処理の説明図である。図9の状態で選択中であったAカタログを旧選択ファイルとし、例えばクライアント側から新たに送られ、Cカタログ16とされたカタログファイルを、選択中に切り替えるカタログ更新処理が行われるものとする。
更新処理11は、まずログファイル50に今まで選択中であったファイルの名称、すなわち“Aカタログ”を格納した後に、図9ではデータが格納されていなかった領域52に新たに選択中とすべきカタログファイル、すなわちCカタログの内容を複写し、もう一方の領域51、すなわちスイッチ1に格納されていたカタログファイル、すなわちAカタログの消去を行うことになる。
この切替処理が行われている間は、2つの格納領域51、52、すなわちスイッチ1とスイッチ2の両方にデータが格納されているクリティカルリージョンの状態となり、この切替中に参照アプリケーション10が選択中ファイルの参照を行おうとすると、クリティカルリージョンの状態が検出され、参照アプリケーション10側は、後述するようにこのクリティカルリージョンの状態が解消された後に、再トライを行うことになる。
図11はカタログ切替処理正常終了時の状態を説明する図である。図10で説明したようにAカタログ14は旧選択ファイルとなり、Cカタログ16が選択中ファイルとなる。格納領域51、すなわちスイッチ1に格納されていたAカタログの内容は消去され、ログファイル52には旧選択のファイル名、すなわちAカタログのファイル名が格納されている。このログファイルの格納内容は次のファイル切替時点までそのまま保たれ、次のファイル格納時点で上書きされるものとする。
図12は更新、すなわち切替処理の間にエラーが発生した場合の動作説明図である。更新処理11側での処理の間にエラーが発生すると、更新処理11はエラー回復を行わないまま処理を終了するものとする。このようにエラーが発生した場合には、2つの記憶領域51、52、すなわちスイッチ1とスイッチ2の両方に複写されたカタログのデータが残っており、またログファイル50には更新処理を行う前に選択中であったファイル名、ここではAカタログのファイル名が格納されている。
参照アプリケーション10側がこの状態で選択中ファイルの参照を行おうとすると、2つの格納領域51、52の両方にファイルのデータが存在することが検出され、エラー状態であることがわかり、参照アプリケーション10はログファイル50の内容を参照することによって、更新処理の前の選択中ファイルがAカタログであったことを検出し、ここではスイッチ1側のAカタログの内容を残し、スイッチ2側のCカタログの内容を消去して、カタログファイル群のうちでAカタログ14を再び選択中に戻して、そのファイルの内容を参照し、処理を終了する。これによって、カタログ切替時にエラーが起こった場合にも、切替の前に使用されていたファイルに確実にアクセスすることが可能となる。
図13は本実施形態におけるカタログ参照処理のフローチャートである。同図においてカタログ参照処理が開始されると、まずステップS1で参照ロックなしに有効カタログの獲得処理が行われる。この処理については図14で説明する。そしてステップS2で正常にカタログが獲得できたか否かが判定され、正常に獲得できた場合にはそのまま処理を終了する。
正常に獲得できないと判定される場合は、図14で説明するようにファイルの切替処理中で、2つの格納領域51、52、すなわちスイッチ1とスイッチ2の両方にファイルデータが格納されているクリティカルリージョンの状態であることになり、ステップS3でクリティカルリージョンを抜けるのを待つためロックの獲得トライが行われ、ステップS4でクリティカルリージョンの状態を抜けるのを待ち、カタログ切替が完了して待ち状態が解除されるとロックが実際に獲得され、ステップS5でステップS1と同様の有効カタログの獲得処理が行われ、ここで有効カタログが獲得されると、ステップS6でロックが解除されて処理を終了する。
ここでステップS3で獲得がトライされるロックとは更新ロックであり、参照アプリケーション側があたかも更新処理であるかのように更新ロックを獲得しようとするものである。更新ロックを獲得しようとすることで、カタログの切替処理が完了し、ロックが獲得できた時点で待ち状態を解除することができ、これによって有効カタログ獲得処理を開始するタイミングを参照アプリケーション側で検出することが可能となる。
図14は図13のステップS1、またはS5における有効カタログ獲得処理の詳細フローチャートである。同図において処理が開始されるとまずステップS10で参照元がロック済で、かつスイッチの両方にデータが格納されているか否かが判定される。参照元がロック済であるということは、図13のステップS4で待ち状態が解除され、参照アプリケーション側で更新ロックが獲得された状態を意味し、この状態でスイッチの両方にデータが格納されているということは、クリティカルリージョンを抜けたにもかかわらず、両方のスイッチにデータが格納されているエラー状態を意味することになる。そこでステップS11でログファイルの内容がチェックされ、切替エラーの発生前に選択されていたカタログファイルを選択中に戻すため、すなわちエラー状態のリカバリーを行うために、図12で説明したようにログファイル50に格納されている名称のファイルの内容を格納しているスイッチ側のデータだけが残され、もう一方のスイッチ側のデータは消去される。
ステップS11の処理が行われた後、またはステップS10で参照元がロック済でないか、あるいはスイッチの両方にデータが格納されている状態でない場合には、ステップS12でスイッチ1側のみにデータがあるか否かが判定され、その結果がYesであるときには、ステップS13でスイッチ1の内容が獲得(通知)されて、図13の処理に戻る。
ステップS12でスイッチ1側のみにデータがある状態でない場合には、ステップS14でスイッチ2側のみにデータが格納されているか否かが判定され、結果がYesである場合にはステップS15でスイッチ2の内容が獲得されて、図13の処理に戻る。
ステップS14の判定がNoである場合には、ステップS16で2つのスイッチの両方にデータがないか否かが判定される。この判定結果がNoである場合には、両方にデータがある、すなわちステップS10で2つのスイッチにデータが格納されているにもかかわらず、参照元がロック済でない状態、すなわちクリティカルリージョンの状態であることになり、ステップS17でクリティカルリージョンの状態であることが通知されて、図13の処理に戻る。
ステップS16で両方にデータが無いと判定された場合には、例えばシステムの保守中に2つのスイッチのデータをいずれも消去したメンテナンス状態であることになり、このようなメンテナンス状態の時には、それ以上処理を続けることができないので、ステップS18で対応するエラー処理に移行する。
図15はカタログ切替処理のフローチャートである。同図において処理が開始されると、まずステップS20でロック、すなわち更新ロックの獲得が行われ、ステップS21でエラーがあるか否か、すなわち両方のスイッチにデータが格納されているか否かが判定され、判定結果がYesである場合には、ステップS22でログファイルの内容がチェックされ、エラー発生前に選択中であったファイルの内容を示すスイッチ側が選択中ファイルとされ、ステップS23の処理に移行する。ステップS21の判定結果がNoの時には直ちにステップS23に移行する。
ステップS23では選択中カタログファイルの名称がログファイルに記録されるが、ステップS21で何らかの理由でエラーがあった場合にも、図10及び図11のように正常にカタログ切替が行われている場合にも、ステップS23ではAカタログの名称がログファイルに記録されることになる。
続いてステップS24で新しいカタログ、すなわち新たに選択中とされるべきカタログファイルの内容が空いているスイッチ側の記憶領域に複写され、ステップS25でファイルの切替処理、すなわち図11ではCカタログを選択中、Aカタログを旧選択とする切替処理が行われ、ステップS26で旧選択側のスイッチに格納されているデータが消去されたか否かが判定され、Yesの場合には処理を終了し、さらに何らかのエラーが発生した場合にはステップS27でエラー処理が実行される。
以上において本発明のファイル切替装置、及び切替方法についてその詳細を説明したが、このファイル切替装置は当然一般的なコンピュータシステムとして構成することが可能である。図16はそのようなコンピュータシステム、すなわちハードウェア環境の構成ブロック図である。
図16においてコンピュータシステムは中央処理装置(CPU)70、リードオンリーメモリ(ROM)71、ランダムアクセスメモリ(RAM)72、通信インタフェース23、記憶装置74、入出力装置75、可搬型記憶媒体の読取り装置76、及びこれらの全てが接続されたバス77によって構成されている。
記憶装置74としてはハードディスク、磁気ディスクなど様々な形式の記憶装置を使用することができ、このような記憶装置74、またはROM71に図13〜図15のフローチャートに示されたプログラムや、本発明の特許請求の範囲の請求項7のプログラムなどが格納され、そのようなプログラムがCPU70によって実行されることにより、本実施形態におけるカタログファイルの参照、ファイルの切替、切替時のエラーに対するリカバリー処理などが可能となる。
このようなプログラムは、プログラム提供者78側からネットワーク79、及び通信インタフェース73を介して、例えば記憶装置74に格納されることも、また市販され、流通している可搬型記憶媒体80に格納され、読取り装置76にセットされて、CPU70によって実行されることも可能である。可搬型記憶媒体80としてはCD−ROM、フレキシブルディスク、光ディスク、光磁気ディスク、DVD等様々な形式の記憶媒体を使用することができ、このような記憶媒体に格納されたプログラムが読取装置76によって読取られることにより、本実施形態におけるカタログファイルの切替等が可能となる。
以上詳細に説明したように、本発明によれば、ファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるファイル切替方式において、ファイル切替処理との衝突が起こっても、またファイル切替時にエラーが起こっても、ファイル参照側で正しく動作していた現版のファイルを認識してファイル参照処理を行うことができる。またこのようなエラー発生時のリカバリー処理も参照側で安全、かつ確実に行うことが可能となる。これによってカタログ切替の信頼性が向上し、このようなファイル、特にカタログファイルの実用性の向上に寄与するところが大きい。
本発明は、ファイル内のデータを変更すべき時、全体を新しいファイルに切り替える形式のファイルを利用するすべての産業において利用可能である。特に実際にはファイルの切替が行われることが少なく、頻繁に参照されるファイルを使って、製品製造やビジネス等を行うすべての産業に利用可能である。
本発明はファイルの切替方式に関する。すなわちファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるべきファイルを対象として、ファイル参照時には参照ロックをかけることなくアクセスすることができる、ファイルの切替を行うファイル切替装置及び切替方法に関する。
一般にファイルの更新を行う場合には、更新中にファイルが参照されることを防止するために更新ロック、すなわち排他制御を行って更新を行うことになる。
このような排他制御を行うことなくファイル更新を行うための従来技術として、次のような文献がある。
特開平7−182213号「ファイル共用システム」
特開平7−281934号「システムファイルの更新及び復元方法」
特開平8−328933号「並列処理システムのファイルアクセス制御方式」
このような排他制御を行うことなくファイル更新を行うための従来技術として、次のような文献がある。
特許文献1には、ファイル更新期間中にも更新前のファイルを他の利用者が利用可能とするために、実メモリ上のファイルを利用者それぞれの論理空間に割付け、ファイル更新時には例外処理の中で実メモリ上のファイルのコピーをおこない、コピーされたファイルを更新するため、利用者間での排他制御が不要となる技術が開示されている。
特許文献2には、OSによってアクセスが拒否されているファイルの更新などをソフトウェアによって実現する方法が開示されており、その方法では二つの記憶領域に同一のOSを格納しておき、ファイル更新時には稼動中の第一のOSを終了させて第2のOSを起動させ、第二のOSの機能を用いてファイルの更新(入替)が行われる。
特許文献3では、ページ参照用の参照バッファとページ更新用の更新バッファを設け、ページ更新の場合には新しいバージョンのページを更新バッファ上に作成し、ファイルの排他制御によるオーバヘッドを削減するファイルアクセス制御方式が開示されている。
しかしながらこれらの従来技術は、いずれも基本的にはファイルの更新、すなわちファイル内の一部のデータの変更を含むファイルの更新を対象としており、本発明におけるカタログ切替とは対象が異なるものである。
データの一部の変更ではなく、切替を行うべきファイルとして後述するカタログファイルがある。カタログファイルは、例えばXML文書のフォーマット変換内の処理として外部実体の参照処理がある時、URI(ユニフォーム・リソース・アイデンティファイア)によって指定されるリソースの場所と外部にある実体との関係を記述するものである。このカタログファイルは一般にクライアント側のパソコンで作成され、フォーマット変換を行うサーバに一括してファイル転送されるものであり、便宜上1つのファイルとして扱われ、例えばサーバ側にはバージョンアップに対応する旧版、現版、及び新版の三つのバージョンのカタログファイルが保持され、必要に応じて例えば現版を新版に切り替えるファイル切替処理が行われることとなる。
前述の特許文献1ではファイルがコピーされて更新されるだけであり、本発明が対象とするようなファイルの切替処理は行われていない。
また、特許文献3では同様にファイルの切替を対象としておらず、また更新バッファ上に作成された新しいバージョンのページは一時的に格納されているだけのものであり、その後参照用のページに格納されなければならないという問題点がある。
また、特許文献3では同様にファイルの切替を対象としておらず、また更新バッファ上に作成された新しいバージョンのページは一時的に格納されているだけのものであり、その後参照用のページに格納されなければならないという問題点がある。
特許文献2は、例えばWebにおけるアプリケーションのアップデート時に適用されるべき技術であり、アップデートした時にかえって問題があり、元に戻したい時に使うことができる技術である。参照や更新時のロック等の排他制御とは無関係であり、本発明が対象とするファイル切替時には適用できないという問題点があった。
本発明が対象とするファイルの切替処理について図1及び図2を用いて更に説明する。
図1はカタログファイルに対する参照方式の従来例の説明図である。前述のようにクライアント側で作成され、サーバ側に転送、すなわち登録されるカタログファイルは一般にバージョンアップに対応して複数存在する。ただしその中で参照されて実際に用いられるファイル、すなわち現版(選択中)のファイルは1つだけである。そして例えばカタログファイルが三つ存在する場合、その状態は現版(選択中)と、旧版(旧選択)、及びそれ以外である。それ以外には、例えばテスト用や、新たにクライアント側から送られた切替(更新)用、すなわち新たに選択中に切り替えるべきファイルが含まれる。この中で現版(選択中)は必ず1つ必要であるが、例えばファイル切替(更新)時のエラー回復のために、旧選択のものも必要となる。
図1はカタログファイルに対する参照方式の従来例の説明図である。前述のようにクライアント側で作成され、サーバ側に転送、すなわち登録されるカタログファイルは一般にバージョンアップに対応して複数存在する。ただしその中で参照されて実際に用いられるファイル、すなわち現版(選択中)のファイルは1つだけである。そして例えばカタログファイルが三つ存在する場合、その状態は現版(選択中)と、旧版(旧選択)、及びそれ以外である。それ以外には、例えばテスト用や、新たにクライアント側から送られた切替(更新)用、すなわち新たに選択中に切り替えるべきファイルが含まれる。この中で現版(選択中)は必ず1つ必要であるが、例えばファイル切替(更新)時のエラー回復のために、旧選択のものも必要となる。
図1において参照アプリケーション10は、カタログファイルの参照にあたって排他制御のために参照ロックをかける。そして選択中ファイル名格納部12に格納されているファイル名を参照し、カタログファイル群14、15、16のいずれかのうちで選択中(現版)のファイルの参照を行うことになる。図1では旧選択のファイル名を格納する格納部13も存在し、選択中のファイルはAカタログ14であり、旧選択のファイルはBカタログ15であり、それ以外のファイルはCカタログ16である。
図2はカタログ切替(更新)処理方式の従来例の説明図である。図1におけると同様に、選択中ファイル名格納部12にはAカタログのファイル名が、旧選択ファイル名格納部13にはBカタログのファイル名が格納されている。この状態で更新処理11は更新ロックをかけて更新処理を開始する。この更新処理の間は参照アプリケーション10側はファイルの参照を行うことができない。
更新処理11は選択中ファイル、すなわちAカタログ14を旧選択ファイルに切り替え、例えばCカタログ16を選択中ファイルとするために、選択中ファイル名格納部12の格納内容をCカタログに、また旧選択ファイル名格納部13の格納内容をAカタログに変更して、選択中ファイルをAカタログからCカタログに切り替えることになる。
このようなカタログファイルの切替(更新)処理においては、基本的にはファイルサービスを停止することなく、カタログファイルの切替を安全に行うことができることが望ましい。まず、カタログファイルの新規追加または更新を反映するために、現版(選択中)から新版への切替を行ったり、新規追加または更新を反映した結果、不具合が検出され、新版を現版に戻すように切り替えたり、あるいは時間帯で業務内容(本番/テスト)を変更するために本番用とテスト用とを切り替えたりする処理を、エラーが発生してもそのエラーを回復して、例えば直前に使われていた選択中ファイルを正しく認識して、そのファイルを参照できる状態に復帰するための処理が必要となる。
例えば図2において選択中ファイル名格納部12の格納内容を変更するとき にエラー、例えばI/0エラーでCカタログのファイル名の代わりに全く異なる文字列が格納されてしまったり、旧選択ファイル名格納部13の格納内容を変更する場合にI/0エラーが生じたりすると、更新処理11側でリカバリー処理をしなければならないが、どのような原因でエラーになったかを判別することは必ずしも容易ではなく、リカバリー処理が困難となってしまう場合があるという問題点があった。
本発明の目的は、ファイル切替時における対象ファイルのロックに起因する処理時間の増加を防ぐ方法を提供することである。また、ファイル切替(更新)時にエラーになった場合にも、その直前に現版(選択中)として使用されていたファイルのファイル名を正しく検出し、リカバリー処理を確実に実行でき るファイル切替装置及び切替方法を提供することである。
本発明のファイル切替装置は、ファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるものであり、ファイル名称記憶手段、2つのファイル内容記憶手段、及びファイル切替手段を備える。
ファイル名称記憶手段は、ファイルの切替時点まで利用されていたファイルの名称を記憶するためのものであり、2つのファイル内容記憶手段のうち、一方は現時点まで使用されているファイルの内容がコピーされているものであり、他方のファイル内容記憶手段はファイルの切替時に新たなファイルの内容をコピーすべきものである。
ファイル切替手段は、ファイルの切替時に前記ファイル名称記憶手段に現版(選択中)ファイルの名称を記憶させ、前述の他方のファイル内容記憶手段に新たなファイルの内容をコピーし、前述の一方のファイル内容記憶手段の記憶内容を消去させる切替処理を行うものである。
また本発明のファイル切替方法においては、ファイル切替時点まで現版(選択中)として使用されていたファイルの名称をログバッファに記憶させ、新たなファイルの内容のコピーを記憶装置の定められた領域に格納し、記憶装置の異なる領域にコピーされていた、切替時点までの現版ファイルのコピーの内容を消去する方法が用いられる。また、この方法を実現するためのプログラム及び計算機読出し可能記憶媒体が用いられる。
以上のように本発明によれば、ファイル切替時点まで現版として使用されていたファイルの名称を記憶した後に、定められた二つの記憶領域のうち、空いている領域に新たなファイルの内容をコピーし、もう1つの領域にコピーされていた、切替時点までの現版ファイルのコピーの内容を消去することになる。
図3は本発明のファイル切替装置の原理構成ブロック図である。同図においてファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるファイル切替装置1は、ファイル名称記憶部2、2つのファイル内容記憶部3、4、ファイル切替部5を備える。
ファイル名称記憶部2は、ファイルの切替時点まで現版(選択中)として使用されていたファイルの名称を記憶するためのものであり、2つのファイル内容記憶部3、4のうち、一方のファイル内容記憶部は切替時点まで使用されている現版ファイルの内容がコピーされているものであり、他方のファイル内容記憶部はファイルの切替時に新たなファイルの内容がコピーされるものである。
ファイル切替部5は、ファイルの切替時にファイル名称記憶部2に現版ファイルの名称を記憶させ、前述の他方のファイル内容記憶部に新たなファイルの内容をコピーし、前述の一方のファイル内容記憶部の記憶内容を消去させる切替処理を行うものである。
ファイル切替装置1は、ファイル参照アプリケーションが現版ファイルの内容を参照しようとする時、参照ロックをかけることなく、データが記憶されているファイル内容記憶部、例えば前記一方のファイル内容記憶部に対してアクセスを行わせるアクセス制御部を更に備えることもでき、またこの時、前記ファイル切替部5がファイルの切替処理を行っているクリティカルリージョン状態の場合には、ファイル参照アプリケーションにクリティカルリージョンの状態の解消を待たせ、更新ロックを獲得させた後にファイル参照を行わせる参照制御部を更に備えることもできる。
またファイル参照アプリケーションが現版ファイルの内容を参照しようとした時、前述の一方のファイル内容記憶部と他方のファイル内容記憶部との両方にファイルの内容が記憶されているエラーが検出された場合、ファイル名称記憶部2の記憶内容を用いて、ファイル切替以前に現版として使用されていたファイルにファイル参照アプリケーションのアクセスを行わせ、他方のファイル内容記憶部の記憶内容を消去するエラー処理部を備えることもできる。
本発明の実施形態について、図4以降を用いて更に詳細に説明する。図4は本発明のファイル切替方式が用いられるXLM文書フォーマット変換サービスシステムの全体構成ブロック図である。このシステムを例として、本発明の実施形態におけるファイル切替方式、すなわちカタログファイルの切替方式について説明する。
図4においてクライアント側のパソコン(PC)20とサーバ21とが接続され、さらにこれらはイントラネット、またはインターネット22に接続されているものとする。このシステムにおいてXML(エクステンシブル・マークアップ・ランゲージ)文書を、文書スタイル変換機能XSLT(エクステンシブル・スタイル・ランゲージ・トランスフォーメーション)スタイルシートを用いて、フォーマット変換するサービスが実行される。このサービスを行うためには、情報資源の場所を示すURI(ユニフォーム・リソース・アイデンティファイア)によって指定されるスタイルシートが必要となる。
XML文書を読み込むためには、XMLファイル等を読み込んでデータをメモリに展開するXMLパーサが使用されるが、文書中に外部実体の参照処理があると、XMLパーサはそのリソースを獲得しようとするが、その外部実体はURIで指定されている。そこでURIに対応するリソースを取得し、供給するURIリゾルバ機構が必要となる。
一般にこのURIリゾルバ機構は、URIがURL(ユニバーサル・リソース・ロケータ)であれば、インターネットを参照するか、あるいはイントラネット内のデータベースを参照してリソースを獲得する。この場合にはネットワークに接続されていることが前提となっており、オフラインではリソースの獲得ができない。そこで図4のシステムではカタログ方式が採用されている。
カタログ方式では、URIリゾルバ機構に対して、外部実体とリソースの場所との関係が記述されたカタログブックを一まとめにしたカタログファイルを供給し、URIリゾルバ機構はリソースが要求されたらこのカタログファイルを利用して、リソースの獲得を行うことになる。これによってURIリゾルバ機構をオフラインでも機能させることができる。しかし一方でカタログ保守のために、カタログファイルを、例えば現版から新版に随時全体として更新、すなわち切替を行うことが必要となる。そこでカタログファイルとして、複数のバージョンを異なる用途に対応して複数用意し、その選択すなわち切替を行うことが必要となる。
図4においてサーバ21の内部には全体を管理する管理プロセス28、XML文書のフォーマット変換等を行うための変換プロセス23、カタログブックを一まとめにしたXMLカタログファイル24、及びカタログファイルの切替を行うための切替インターフェイス25が備えられ、例えばクライアント側から指定される変換前ファイル26が変換プロセス23によって変換され、変換後ファイル27が得られることになる。
図5はカタログファイル24の構成例の説明図である。同図においてXMLカタログファイル24は、外部識別子/URIとリソースファイルの場所との関係を記述するカタログエントリーファイル30、XMLカタログファイルに関する情報、例えばファイル名、関数、コメント等を記述するカタログ情報ファイル31、外部識別子/URIによって参照されるファイル群としてのリソースファイル32から構成され、またリソースファイル32はスタイルシート33、スキーマ34及びXMLファイル35を備えている。
図6はカタログファイル24内でのカタログエントリーファイル30、及びカタログ情報ファイル31の具体例である。ここでリソースファイルは(1)から(3)の3つのファイルから構成されているものとする。カタログエントリーファイル30は、外部識別子/URIとリソースファイルの場所との関係を記述したXMLファイルであり、XML等の規格の標準化を行うOASIS(オルガニゼーション・フォー・ザ・アドバンスメント・オブ・ストラクチャード・インフォメーション・スタンダーズ)によって作成された「XMLカタログ−コミッティ・スペシフィケーション06Aug2001」に準拠している必要がある。
図7は図4のシステムにおけるファイル変換処理の説明図である。同図においてクライアント20側からファイルの変換指示が変換プロセス23に与えられると、1)で変換前ファイル26が読み込まれ、2)で切替インタフェース25のもっている情報から、変換処理において使用すべきカタログファイル、すなわち現版のカタログファイルについての情報が取得され、3)でその現版のカタログファイル、ここではファイルBが参照され、そのカタログファイルの内容を用いて4)で変換後ファイル27が作成される。
ファイル変換処理において、現版のカタログファイルとしてのファイルBが直接参照されるものとしたが、これは説明の便宜上であり、本実施形態では図9以下で説明するように現版ファイルのコピーを参照することを基本とする。
図8は図4のシステムにおけるカタログ切替処理の説明図である。同図において、1)でクライアント20側から管理プロセス28に対して、カタログ切替処理の指示が行われる。2)で切替インタフェース25により現版ファイル、すなわち選択中ファイルがAカタログとされ、図7で選択中、すなわち現版ファイルとされていたBカタログが旧選択ファイルとされる切替処理が実行される。
図9は本実施形態におけるカタログ参照処理の説明図である。本実施形態においては実際にはカタログの切替は非常に珍しく、切替がほとんど発生しないという実情に着目して、参照アプリケーションによる参照処理のコストを最小にするため、参照アプリケーションに対しては参照ロックを獲得させずに参照を許すことにする。
図9を従来技術における図1と比較すると、選択中ファイル名格納部12、旧選択ファイル名格納部13にかわって2つのカタログファイル複写領域(スイッチ)51、52、及びカタログの切替時にその時点まで選択中であったファイルの名称を旧選択ファイル名として格納するログファイル50が設けられる。
図9では、選択中のファイルはAカタログ14であり、最後にファイルの切替が行われた以前に選択中であったファイル、すなわち旧選択のカタログファイルはBカタログ15であるとする。そして直前に行われた切替時にログファイル50にはBカタログのファイル名が格納され、それが消去されずにそのまま格納されているものとする。2つのファイル格納領域51と52の一方、ここでは51に選択中のファイルとしてのAカタログの内容がそのまま複写されており、もう一方の格納領域52にはデータが格納されていない状態(あるいは空であることを示す所定の値)となっている。直前のカタログ切替時には格納領域52に現在は旧選択のBカタログの内容が複写されていたが、カタログ切替処理が正確に行われた結果、52には何らのデータも格納されていない状態となっている。
ここでデータ格納領域51をスイッチ1、格納領域52をスイッチ2と呼ぶことにする。この名称は、これらの2つの格納領域にはカタログの参照が可能な正常の状態ではどちらか一方にカタログデータが格納されており、一方には全くデータが格納されていない状態となり、ファイルの切替が行われるたびにカタログファイルの複写されている領域が領域51と52の間で交互に切替られることに関連しており、またソフトウェアで行われる処理をハードウェア的に表現する名称である。
図10はカタログ更新(切替)処理の説明図である。図9の状態で選択中であったAカタログを旧選択ファイルとし、例えばクライアント側から新たに送られ、Cカタログ16とされたカタログファイルを、選択中に切り替えるカタログ更新処理が行われるものとする。
更新処理11は、まずログファイル50に今まで選択中であったファイルの名称、すなわち“Aカタログ”を格納した後に、図9ではデータが格納されていなかった領域52に新たに選択中とすべきカタログファイル、すなわちCカタログの内容を複写し、もう一方の領域51、すなわちスイッチ1に格納されていたカタログファイル、すなわちAカタログの消去を行うことになる。
この切替処理が行われている間は、2つの格納領域51、52、すなわちスイッチ1とスイッチ2の両方にデータが格納されているクリティカルリージョンの状態となり、この切替中に参照アプリケーション10が選択中ファイルの参照を行おうとすると、クリティカルリージョンの状態が検出され、参照アプリケーション10側は、後述するようにこのクリティカルリージョンの状態が解消された後に、再トライを行うことになる。
図11はカタログ切替処理正常終了時の状態を説明する図である。図10で説明したようにAカタログ14は旧選択ファイルとなり、Cカタログ16が選択中ファイルとなる。格納領域51、すなわちスイッチ1に格納されていたAカタログの内容は消去され、ログファイル52には旧選択のファイル名、すなわちAカタログのファイル名が格納されている。このログファイルの格納内容は次のファイル切替時点までそのまま保たれ、次のファイル格納時点で上書きされるものとする。
図12は更新、すなわち切替処理の間にエラーが発生した場合の動作説明図である。更新処理11側での処理の間にエラーが発生すると、更新処理11はエラー回復を行わないまま処理を終了するものとする。このようにエラーが発生した場合には、2つの記憶領域51、52、すなわちスイッチ1とスイッチ2の両方に複写されたカタログのデータが残っており、またログファイル50には更新処理を行う前に選択中であったファイル名、ここではAカタログのファイル名が格納されている。
参照アプリケーション10側がこの状態で選択中ファイルの参照を行おうとすると、2つの格納領域51、52の両方にファイルのデータが存在することが検出され、エラー状態であることがわかり、参照アプリケーション10はログファイル50の内容を参照することによって、更新処理の前の選択中ファイルがAカタログであったことを検出し、ここではスイッチ1側のAカタログの内容を残し、スイッチ2側のCカタログの内容を消去して、カタログファイル群のうちでAカタログ14を再び選択中に戻して、そのファイルの内容を参照し、処理を終了する。これによって、カタログ切替時にエラーが起こった場合にも、切替の前に使用されていたファイルに確実にアクセスすることが可能となる。
図13は本実施形態におけるカタログ参照処理のフローチャートである。同図においてカタログ参照処理が開始されると、まずステップS1で参照ロックなしに有効カタログの獲得処理が行われる。この処理については図14で説明する。そしてステップS2で正常にカタログが獲得できたか否かが判定され、正常に獲得できた場合にはそのまま処理を終了する。
正常に獲得できないと判定される場合は、図14で説明するようにファイルの切替処理中で、2つの格納領域51、52、すなわちスイッチ1とスイッチ2の両方にファイルデータが格納されているクリティカルリージョンの状態であることになり、ステップS3でクリティカルリージョンを抜けるのを待つためロックの獲得トライが行われ、ステップS4でクリティカルリージョンの状態を抜けるのを待ち、カタログ切替が完了して待ち状態が解除されるとロックが実際に獲得され、ステップS5でステップS1と同様の有効カタログの獲得処理が行われ、ここで有効カタログが獲得されると、ステップS6でロックが解除されて処理を終了する。
ここでステップS3で獲得がトライされるロックとは更新ロックであり、参照アプリケーション側があたかも更新処理であるかのように更新ロックを獲得しようとするものである。更新ロックを獲得しようとすることで、カタログの切替処理が完了し、ロックが獲得できた時点で待ち状態を解除することができ、これによって有効カタログ獲得処理を開始するタイミングを参照アプリケーション側で検出することが可能となる。
図14は図13のステップS1、またはS5における有効カタログ獲得処理の詳細フローチャートである。同図において処理が開始されるとまずステップS10で参照元がロック済で、かつスイッチの両方にデータが格納されているか否かが判定される。参照元がロック済であるということは、図13のステップS4で待ち状態が解除され、参照アプリケーション側で更新ロックが獲得された状態を意味し、この状態でスイッチの両方にデータが格納されているということは、クリティカルリージョンを抜けたにもかかわらず、両方のスイッチにデータが格納されているエラー状態を意味することになる。そこでステップS11でログファイルの内容がチェックされ、切替エラーの発生前に選択されていたカタログファイルを選択中に戻すため、すなわちエラー状態のリカバリーを行うために、図12で説明したようにログファイル50に格納されている名称のファイルの内容を格納しているスイッチ側のデータだけが残され、もう一方のスイッチ側のデータは消去される。
ステップS11の処理が行われた後、またはステップS10で参照元がロック済でないか、あるいはスイッチの両方にデータが格納されている状態でない場合には、ステップS12でスイッチ1側のみにデータがあるか否かが判定され、その結果がYesであるときには、ステップS13でスイッチ1の内容が獲得(通知)されて、図13の処理に戻る。
ステップS12でスイッチ1側のみにデータがある状態でない場合には、ステップS14でスイッチ2側のみにデータが格納されているか否かが判定され、結果がYesである場合にはステップS15でスイッチ2の内容が獲得されて、図13の処理に戻る。
ステップS14の判定がNoである場合には、ステップS16で2つのスイッチの両方にデータがないか否かが判定される。この判定結果がNoである場合には、両方にデータがある、すなわちステップS10で2つのスイッチにデータが格納されているにもかかわらず、参照元がロック済でない状態、すなわちクリティカルリージョンの状態であることになり、ステップS17でクリティカルリージョンの状態であることが通知されて、図13の処理に戻る。
ステップS16で両方にデータが無いと判定された場合には、例えばシステムの保守中に2つのスイッチのデータをいずれも消去したメンテナンス状態であることになり、このようなメンテナンス状態の時には、それ以上処理を続けることができないので、ステップS18で対応するエラー処理に移行する。
図15はカタログ切替処理のフローチャートである。同図において処理が開始されると、まずステップS20でロック、すなわち更新ロックの獲得が行われ、ステップS21でエラーがあるか否か、すなわち両方のスイッチにデータが格納されているか否かが判定され、判定結果がYesである場合には、ステップS22でログファイルの内容がチェックされ、エラー発生前に選択中であったファイルの内容を示すスイッチ側が選択中ファイルとされ、ステップS23の処理に移行する。ステップS21の判定結果がNoの時には直ちにステップS23に移行する。
ステップS23では選択中カタログファイルの名称がログファイルに記録されるが、ステップS21で何らかの理由でエラーがあった場合にも、図10及び図11のように正常にカタログ切替が行われている場合にも、ステップS23ではAカタログの名称がログファイルに記録されることになる。
続いてステップS24で新しいカタログ、すなわち新たに選択中とされるべきカタログファイルの内容が空いているスイッチ側の記憶領域に複写され、ステップS25でファイルの切替処理、すなわち図11ではCカタログを選択中、Aカタログを旧選択とする切替処理が行われ、ステップS26で旧選択側のスイッチに格納されているデータが消去されたか否かが判定され、Yesの場合には処理を終了し、さらに何らかのエラーが発生した場合にはステップS27でエラー処理が実行される。
以上において本発明のファイル切替装置、及び切替方法についてその詳細を説明したが、このファイル切替装置は当然一般的なコンピュータシステムとして構成することが可能である。図16はそのようなコンピュータシステム、すなわちハードウェア環境の構成ブロック図である。
図16においてコンピュータシステムは中央処理装置(CPU)70、リードオンリーメモリ(ROM)71、ランダムアクセスメモリ(RAM)72、通信インタフェース23、記憶装置74、入出力装置75、可搬型記憶媒体の読取り装置76、及びこれらの全てが接続されたバス77によって構成されている。
記憶装置74としてはハードディスク、磁気ディスクなど様々な形式の記憶装置を使用することができ、このような記憶装置74、またはROM71に図13〜図15のフローチャートに示されたプログラムや、本発明の特許請求の範囲の請求項7のプログラムなどが格納され、そのようなプログラムがCPU70によって実行されることにより、本実施形態におけるカタログファイルの参照、ファイルの切替、切替時のエラーに対するリカバリー処理などが可能となる。
このようなプログラムは、プログラム提供者78側からネットワーク79、及び通信インタフェース73を介して、例えば記憶装置74に格納されることも、また市販され、流通している可搬型記憶媒体80に格納され、読取り装置76にセットされて、CPU70によって実行されることも可能である。可搬型記憶媒体80としてはCD−ROM、フレキシブルディスク、光ディスク、光磁気ディスク、DVD等様々な形式の記憶媒体を使用することができ、このような記憶媒体に格納されたプログラムが読取装置76によって読取られることにより、本実施形態におけるカタログファイルの切替等が可能となる。
以上詳細に説明したように、本発明によれば、ファイル内のデータを変更すべき時、ファイル全体を新しいファイルに切り替えるファイル切替方式において、ファイル切替処理との衝突が起こっても、またファイル切替時にエラーが起こっても、ファイル参照側で正しく動作していた現版のファイルを認識してファイル参照処理を行うことができる。またこのようなエラー発生時のリカバリー処理も参照側で安全、かつ確実に行うことが可能となる。これによってカタログ切替の信頼性が向上し、このようなファイル、特にカタログファイルの実用性の向上に寄与するところが大きい。
本発明は、ファイル内のデータを変更すべき時、全体を新しいファイルに切り替える形式のファイルを利用するすべての産業において利用可能である。特に実際にはファイルの切替が行われることが少なく、頻繁に参照されるファイルを使って、製品製造やビジネス等を行うすべての産業に利用可能である。
Claims (12)
- ファイルを切り替えるファイル切替装置において、
ファイルの切替時点まで使用されていたファイルの名称を記憶するためのファイル名称記憶手段と、
2つのファイル内容記憶手段であって、現時点まで使用されているファイルの内容が複写されている第1の記憶手段と、ファイルの切替時点で新たなファイルの内容が複写されるべき第2の記憶手段とで構成される2つの記憶手段と、
ファイルの切替時に、前記ファイル名称記憶手段に該切替時点まで使用されていたファイルの名称を記憶させ、前記第2の記憶手段に新たなファイルの内容を複写し、前記第1の記憶手段の記憶内容をデータ未格納状態とするファイル切替手段とを備えることを特徴とするファイル切替装置。 - 前記ファイル切替装置において、
ファイルを参照するアプリケーションが現時点で使用されるべき現版ファイルの内容を参照しようとする時、前記2つのファイル内容記憶手段のうちで、ファイルの内容が記憶されている記憶手段に対してロックをかけることなく、該ファイル参照アプリケーションにアクセスを許可するアクセス制御手段を更に備えることを特徴とする請求項1記載のファイル切替装置。 - 前記ファイル切替装置において、
ファイルを参照するアプリケーションが現時点で使用されるべき現版ファイルの内容を参照しようとする時、前記ファイル切替手段がファイルの切替処理を行っているクリティカルリージョンの状態の場合には、該ファイル参照アプリケーションに該クリティカルリージョンの状態の解消を待たせた後に、ファイル参照を行わせる参照制御手段を更に備えることを特徴とする請求項1記載のファイル切替装置。 - 前記ファイル切替装置において、
ファイルを参照するアプリケーションが現時点で使用されるべき現版ファイルの内容を参照しようとする時、前記2つのファイル内容記憶手段の両方にファイルのデータが記憶されているエラー状態が検出された場合には、該ファイル参照アプリケーションに、前記ファイル名称記憶手段の記憶内容に従って該エラーの発生以前に現版として使用されていたファイルにアクセスさせ、前記第2のファイル内容記憶手段に複写された内容を消去するエラー処理手段を備えることを特徴とする請求項1記載のファイル切替装置。 - 前記ファイルが、一覧形式で情報が羅列されているカタログファイルであることを特徴とする請求項1記載のファイル切替装置。
- ファイルを切り替えるファイル切替方法において、
ファイル切替時点まで使用されていたファイルの名称をログバッファに記憶させ、
新たなファイルの内容の複写を記憶装置の定められた領域に格納し、
記憶装置の異なる定められた領域であって、切替時点まで使用されていたファイルの複写の内容が格納されていた領域をデータ未格納状態とすることを特徴とするファイル切替方法。 - ファイルを切り替える計算機によって使用されるプログラムにおいて、
ファイル切替時点まで使用されていたファイルの名称をログバッファに記憶させる手順と、
新たなファイルの内容の複写を記憶装置の定められた領域に格納する手順と、
記憶装置の異なる定められた領域であって、切替時点まで使用されていたファイルの複写の内容が格納されていた領域をデータ未格納状態とする手順とを計算機に実行させるためのプログラム。 - 前記プログラムにおいて、
ファイルを参照するアプリケーションが現時点で使用されるべき現版ファイルの内容を参照しようとする時、前記2つの定められた領域のうちで、ファイルの内容が記憶されている領域に対してロックをかけることなく、該ファイル参照アプリケーションにアクセスを許可する手順を計算機に更に実行させることを特徴とする請求項7記載のプログラム。 - 前記プログラムにおいて、
ファイルを参照するアプリケーションが現時点で使用されるべき現版ファイルの内容を参照しようとする時にファイルの切替処理が行われているクリティカルリージョンの状態の場合には、該ファイル参照アプリケーションに該クリティカルリージョンの状態の解消を待たせた後に,ファイル参照を行わせる手順を更に計算機に実行させることを特徴とする請求項7記載のプログラム。 - 前記プログラムにおいて、
ファイルを参照するアプリケーションが現時点で使用されるべき現版ファイルの内容を参照しようとする時、前記2つの定められた領域の両方にファイルのデータが記憶されているエラー状態が検出された場合には、該ファイル参照アプリケーションに、前記ログバッファの記憶内容に従って該エラーの発生以前に現版として使用されていたファイルにアクセスさせ、前記新たなファイルの内容の複写が格納された、前記定められた領域をデータ未格納の状態とする手順を更に計算機に実行させることを特徴とする請求項7記載のプログラム。 - 前記ファイルが、一覧形式で情報が羅列されているカタログファイルであることを特徴とする請求項7記載のプログラム。
- ファイルを切り替える計算機によって使用される記憶媒体において、
ファイル切替時点まで使用されていたファイルの名称をログバッファに記憶させるステップと、
新たなファイルの内容の複写を記憶装置の定められた領域に格納するステップと、
記憶装置の異なる定められた領域であって、切替時点まで使用されていたファイルの複写の内容が格納されていた領域をデータ未格納状態とするステップとを計算機に実行させるためのプログラムを格納した計算機読出し可能可搬型記憶媒体。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2003/007275 WO2004109518A1 (ja) | 2003-06-09 | 2003-06-09 | ファイル切替装置及び切替方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2004109518A1 true JPWO2004109518A1 (ja) | 2006-07-20 |
Family
ID=33495955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005500573A Pending JPWO2004109518A1 (ja) | 2003-06-09 | 2003-06-09 | ファイル切替装置及び切替方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20060044984A1 (ja) |
JP (1) | JPWO2004109518A1 (ja) |
WO (1) | WO2004109518A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060155670A1 (en) | 2005-01-13 | 2006-07-13 | Forlenza Randolph M | Method for queuing files to be sent to an application |
JP4888742B2 (ja) * | 2009-02-25 | 2012-02-29 | ソニー株式会社 | 情報処理装置および方法、並びにプログラム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0290244A (ja) * | 1988-09-27 | 1990-03-29 | Pfu Ltd | ファイルの置き換え方式 |
JPH05120232A (ja) * | 1991-10-30 | 1993-05-18 | Nec Corp | コンピユータ装置 |
JPH0667959A (ja) * | 1992-08-14 | 1994-03-11 | Nec Corp | データベース更新後ジャーナル自動退避方式 |
JP3140906B2 (ja) * | 1994-04-12 | 2001-03-05 | 株式会社エヌ・ティ・ティ・データ | システムファイルの更新及び復元方法 |
US5857188A (en) * | 1996-04-29 | 1999-01-05 | Ncr Corporation | Management of client requests in a client-server environment |
-
2003
- 2003-06-09 WO PCT/JP2003/007275 patent/WO2004109518A1/ja active Application Filing
- 2003-06-09 JP JP2005500573A patent/JPWO2004109518A1/ja active Pending
-
2005
- 2005-08-18 US US11/206,091 patent/US20060044984A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20060044984A1 (en) | 2006-03-02 |
WO2004109518A1 (ja) | 2004-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7299450B2 (en) | Undoing changes in a software configuration management system | |
US8245217B2 (en) | Management of software and operating system updates required for the process of creating a virtual machine facsimile of an existing physical or virtual machine | |
US10936547B2 (en) | Filesystem replication using a minimal filesystem metadata changelog | |
US8078577B2 (en) | Method of bi-directional synchronization of user data | |
US10067835B2 (en) | System reset | |
JP5466459B2 (ja) | 階層ストレージ管理(hsm)制御ストレージ環境で双方向オーファン照合を行う方法、システムおよぶコンピュータ・プログラム | |
US9864736B2 (en) | Information processing apparatus, control method, and recording medium | |
JP2009515264A (ja) | 文書およびソースコードの制御のための方法およびシステム | |
US7974949B2 (en) | Computer system and automatic data backup method | |
US7433902B2 (en) | Non-disruptive backup copy in a database online reorganization environment | |
JP2008033519A (ja) | 情報資源の重複を省いたバックアップ制御装置及び方法 | |
JP2003288191A (ja) | プリンタドライバを動的にアップデートするシステムおよび方法 | |
CN111538719B (zh) | 数据迁移方法、装置、设备及计算机存储介质 | |
US20150142764A1 (en) | Language tag management on international data storage | |
KR20080081276A (ko) | 디스크 기반 캐시 | |
JP3919303B2 (ja) | データベースシステム及びその制御方法及び情報処理装置 | |
JP2008033527A (ja) | ストレージ装置、ディスク装置及びデータ復元方法 | |
JPWO2007099636A1 (ja) | ファイルシステム移行方法、ファイルシステム移行プログラム及びファイルシステム移行装置 | |
JP2016081189A (ja) | 情報処理装置とデータ同期方法、データ同期システムおよびプログラム | |
JP2006031608A (ja) | 計算機、ストレージシステム、計算機が行うファイル管理方法、およびプログラム | |
JP4952119B2 (ja) | ファイルサーバを用いたコンテンツ管理システムと方法およびプログラム | |
JPWO2004109518A1 (ja) | ファイル切替装置及び切替方法 | |
CN115586872A (zh) | 一种容器镜像管理方法、装置、设备及存储介质 | |
US10275127B2 (en) | Client apparatus, information processing system, information processing method, and non-transitory computer readable medium | |
JPH11282687A (ja) | プログラム自動改版方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081014 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090224 |