JP2003527659A - Internet file system - Google Patents
Internet file systemInfo
- Publication number
- JP2003527659A JP2003527659A JP2001516067A JP2001516067A JP2003527659A JP 2003527659 A JP2003527659 A JP 2003527659A JP 2001516067 A JP2001516067 A JP 2001516067A JP 2001516067 A JP2001516067 A JP 2001516067A JP 2003527659 A JP2003527659 A JP 2003527659A
- Authority
- JP
- Japan
- Prior art keywords
- file
- version
- directory
- database
- 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
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
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
(57)【要約】 データベースに記憶されたデータにアクセスするための技術を提供する。一技術に従えば、アプリケーションはオペレーティングシステムに対して1または複数のコールを行なってファイルにアクセスする。オペレーティングシステムはオペレーティングシステムファイルシステムを実現するルーチンを含む。1または複数のコールは、オペレーティングシステムファイルシステムを実現するそれらルーチンに対して行なわれる。1または複数のコールに応答して、1または複数のデータベースコマンドがデータベースを管理するデータベースサーバに対して発行される。データベースサーバはそれらデータベースコマンドを実行して、データベースのデータを検索する。該データからファイルが生成され、アプリケーションに与えられる。 (57) [Summary] The present invention provides a technique for accessing data stored in a database. According to one technique, an application makes one or more calls to an operating system to access a file. The operating system includes routines that implement an operating system file system. One or more calls are made to those routines that implement the operating system file system. In response to one or more calls, one or more database commands are issued to a database server that manages the database. The database server executes the database commands to search for data in the database. A file is generated from the data and provided to the application.
Description
【0001】[0001]
本願は、その全文が本明細書中に完全に述べられているかのように引用により
援用される、Eric Sedlarによる「インターネットファイルシステム("Internet
File System")」と題された1999年8月5日出願の先行米国仮特許出願連
続番号第60/147,538号に関し、米国特許法第119条(e)によりそ
の国内優先権を主張する。This application is referred to by Eric Sedlar in "Internet File System (" Internet File System ", which is incorporated by reference as if fully set forth herein).
Claims its domestic priority under 35 USC 119 (e) regarding prior US provisional patent application serial no. 60 / 147,538 filed August 5, 1999 entitled "File System") " .
【0002】
本願は、その全文が本明細書中に完全に述べられているかのように引用により
援用される、Eric Sedlarによる「関係システム内に階層状に構成された情報に
アクセスするための階層索引付け("Hierarchical Indexing for Accessing Hie
rarchically Organized Information in a Relational System")」と題された
1999年2月18日出願の米国特許出願連続番号第09/251,757号に
関連する。[0002] The present application is entitled "Hierarchy for Accessing Information Hierarchically Organized in Relational Systems," by Eric Sedlar, the entire text of which is incorporated by reference as if fully set forth herein. Indexing ("Hierarchical Indexing for Accessing Hie
"Rarchically Organized Information in a Relational System"). "
【0003】
本願は、その全文が本明細書中に完全に述べられているかのように引用により
援用される、Eric Sedlarによる「トランザクションをサポートするファイルシ
ステム("File System that Supports Transactions")」と題された2000年
5月15日出願の米国特許出願連続番号第09/571,496号に関連する。This application is referred to as "File System that Supports Transactions" by Eric Sedlar, the entire text of which is incorporated by reference as if fully set forth herein. Related to U.S. Patent Application Serial No. 09 / 571,496, filed May 15, 2000.
【0004】
本願は、その全文が本明細書中に完全に述べられているかのように引用により
援用される、Eric Sedlarによる「記憶されたクエリディレクトリ("Stored Que
ry Directories")」と題された2000年5月15日出願の米国特許出願連続
番号第09/571,060号に関連する。The present application is described by Eric Sedlar in "Stored Queries Directory", which is incorporated by reference in its entirety as if fully set forth herein.
No. 09 / 571,060, filed May 15, 2000, entitled "ry Directories") ".
【0005】
本願は、その全文が本明細書中に完全に述べられているかのように引用により
援用される、Eric Sedlarによる「ファイルシステムに結合されたイベント通知
システム("Event Notification System Tied to a File System")」と題され
た2000年5月15日出願の米国特許出願連続番号第09/571,036号
に関連する。This application is described by Eric Sedlar in “Event Notification System Tied to a File System” by Eric Sedlar, which is incorporated by reference in its entirety as if fully set forth herein. US Patent Application Serial No. 09 / 571,036, filed May 15, 2000, entitled "File System") ".
【0006】
本願は、その全文が本明細書中に完全に述べられているかのように引用により
援用される、Eric Sedlarによる「ファイルがタイプ付けされたオブジェクトフ
ァイルシステム("Object File System with Typed Files")」と題された20
00年5月15日出願の米国特許出願連続番号第09/571,492号に関連
する。This application is referred to by Eric Sedlar in "Object File System with Typed Files," which is incorporated by reference in its entirety as if fully set forth herein. 20) entitled ")"
Related to U.S. Patent Application Serial No. 09 / 571,492, filed May 15, 2000.
【0007】
本願は、その全文が本明細書中に完全に述べられているかのように引用により
援用される、Eric Sedlarによる「オンザフライ・フォーマット変換("On-the-f
ly Format Conversion")」と題された2000年5月15日出願の米国特許出
願連続番号第09/571,568号に関連する。The present application is referred to by Eric Sedlar in “On-the-fry Format Conversion”, which is incorporated by reference in its entirety as if fully set forth herein.
US Patent Application Serial No. 09 / 571,568, filed May 15, 2000, entitled "Ly Format Conversion") ".
【0008】
本願は、その全文が本明細書中に完全に述べられているかのように引用により
援用される、Eric SedlarおよびMichael J. Robertsによる「インターネットフ
ァイルシステムにおけるバージョニング("Versioning in Internet File Syste
m")」と題された2000年5月15日出願の米国特許出願連続番号第09/5
71,696号に関連する。This application is described by Eric Sedlar and Michael J. Roberts in “Versioning in Internet File System”, the entire text of which is incorporated by reference as if fully set forth herein.
US Patent Application Serial No. 09/5 filed May 15, 2000 entitled "m") "
71,696.
【0009】
本願は、その全文が本明細書中に完全に述べられているかのように引用により
援用される、Eric Sedlarによる「データへのマルチモデルアクセス("Multi-Mo
del Access to Data")」と題された2000年5月15日出願の米国特許出願
連続番号第09/571,508号に関連する。The present application is entitled “Multi-Model Access to Data (“ Multi-Mo ”by Eric Sedlar, which is incorporated by reference in its entirety as if fully set forth herein.
"Access to Data") "filed May 15, 2000 and is related to U.S. Patent Application Serial No. 09 / 571,508.
【0010】[0010]
本発明は一般に電子ファイルシステムに関し、特定的には、データベースシス
テムを用いてオペレーティングシステムファイルシステムを実現するシステムに
関する。The present invention relates generally to electronic file systems, and more particularly to systems that implement operating system file systems using database systems.
【0011】[0011]
ヒトは情報をカテゴリに分類する傾向にあり、情報が分類されるそれらカテゴ
リ自体は典型的に、何らかの階層状に互いに関連付けて構成される。たとえば、
個々の動物は種に属し、種は属に属し、属は科に属し、科は目に属し、目は綱に
属する。Humans tend to classify information into categories, and the categories into which information is classified are typically configured in some hierarchical relationship with each other. For example,
Individual animals belong to species, species belong to genus, genus belongs to family, family belongs to eye, eye belongs to class.
【0012】
コンピュータシステムの出現に伴ない、このような階層構成(hierarchical o
rganization)を望むヒトの欲求を大いに反映する電子情報の記憶技術が開発さ
れてきた。従来のオペレーティングシステムは、たとえば、階層ベースの構成原
理を使用するファイルシステムを提供する。具体的には、典型的なオペレーティ
ングシステムファイルシステム(「OSファイルシステム」)においては、ディ
レクトリは階層に配され、文書(ドキュメント)はそれらディレクトリに記憶さ
れる。理想的には、ディレクトリ間の階層的関係は、それらディレクトリに割当
てられた意味間の何らかの直観的な関係を反映する。同様に、各ドキュメントが
ディレクトリに記憶される場合、そのドキュメントの内容と、そのドキュメント
が記憶されるディレクトリに割当てられた意味との間の何らかの直観的関係に基
づいて、記憶されると理想的である。With the advent of computer systems, such a hierarchical structure (hierarchical o
The storage technology of electronic information that largely reflects the human desire for rganization has been developed. Conventional operating systems provide, for example, file systems that use a hierarchy-based composition principle. Specifically, in a typical operating system file system (“OS file system”), directories are arranged in a hierarchy and documents are stored in those directories. Ideally, the hierarchical relationship between directories reflects some intuitive relationship between the meanings assigned to those directories. Similarly, if each document is stored in a directory, it should ideally be stored based on some intuitive relationship between the content of that document and the meaning assigned to the directory in which the document is stored. is there.
【0013】
図1は、(ワードプロセッサ等の)ファイルを作成して使用するソフトウェア
アプリケーションがそのファイルを階層的ファイルシステム内に記憶する際に用
いられる、典型的な機構を示す。図1を参照して、オペレーティングシステム1
04は、アプリケーション102に対してアプリケーションプログラミングイン
ターフェイス(API)を開く(expose)。そうして開かれたAPIにより、ア
プリケーション102はそのオペレーティングシステムによって提供されるルー
チンをコールすることができる。以後、OS APIの、OSファイルシステム
を実現するルーチンに関連する部分を、OSファイルAPIと称する。アプリケ
ーション102は、OSファイルAPIを介してファイルシステムルーチンをコ
ールして、データを検索してディスク108に記憶する。オペレーティングシス
テム104の方は、ディスク108へのアクセスを制御するデバイスドライバ1
06に対してコールを行なって、ディスク106からファイルを検索させたりデ
ィスク106にファイルを記憶させたりする。FIG. 1 illustrates a typical mechanism used by software applications that create and use files (such as word processors) to store the files in a hierarchical file system. Referring to FIG. 1, operating system 1
04 exposes an application programming interface (API) to the application 102. The API so opened allows the application 102 to call routines provided by its operating system. Hereinafter, the part of the OS API related to the routine that realizes the OS file system will be referred to as the OS file API. The application 102 calls a file system routine via the OS file API to retrieve data and store it on the disk 108. The operating system 104 is a device driver 1 that controls access to the disk 108.
06 is called to retrieve the file from the disk 106 or store the file in the disk 106.
【0014】
OSファイルシステムルーチンは、ファイルシステムの階層的構成を実現する
。たとえば、OSファイルシステムルーチンは、ファイル間の階層的関係に関す
る情報を維持し、アプリケーション102にファイルへのアクセスを、階層内に
おける当該ファイルの場所に基づいて与える。The OS file system routine realizes a hierarchical structure of the file system. For example, OS file system routines maintain information about hierarchical relationships between files and give application 102 access to files based on their location in the hierarchy.
【0015】
電子情報を階層的に構成するのに対して、関係データベース(relational dat
abase)は、情報を行列からなるテーブルに記憶する。各行は独自のRowIDによっ
て識別される。各列は記録の属性を表わし、各行は特定の記録を表わす。データ
ベースからのデータの検索は、データベースを管理するデータベース管理システ
ム(DBMS)にクエリを提示することによって行なわれる。In contrast to the hierarchical structure of electronic information, a relational database (relational dat)
abase) stores information in a table of matrices. Each row is identified by a unique RowID. Each column represents a record's attributes, and each row represents a particular record. Retrieval of data from a database is done by submitting a query to a database management system (DBMS) that manages the database.
【0016】
図2は、データベースアプリケーションがデータベース内の情報にアクセスす
る際に用いられる典型的な機構を示す。図2を参照して、データベースアプリケ
ーション202は、データベースサーバ204によって提供されるAPI(「デ
ータベースAPI」)を通じてデータベースサーバ204と対話する。このよう
に開かれたAPIにより、データベースアプリケーション202は、データベー
スサーバ204によってサポートされたデータベース言語により構築されたクエ
リを用いて、データにアクセスすることができる。多くのデータベースサーバに
よってサポートされる言語の1つに、構造化クエリ言語(Structured Query Lan
guage, SQL)がある。データベースサーバ204は、データベースアプリケーシ
ョン202に対して、すべてのデータがテーブルの行に記憶されているように見
せる。しかし、データベースアプリケーション202にトランスペアレントなこ
とに、データベースサーバ204は実際にはオペレーティングシステム104と
対話して、データをファイルとしてOSファイルシステム内に記憶する。オペレ
ーティングシステム104の方では、デバイスドライバ106に対してコールを
行なって、ファイルをディスク108から検索させたりファイルをディスク10
8に記憶させたりする。FIG. 2 illustrates a typical mechanism used by database applications to access information in a database. Referring to FIG. 2, the database application 202 interacts with the database server 204 through an API (“database API”) provided by the database server 204. The API thus opened allows the database application 202 to access the data using queries constructed in the database language supported by the database server 204. Structured Query Language is one of the languages supported by many database servers.
guage, SQL). The database server 204 presents to the database application 202 all the data as if it were stored in a row in the table. However, transparent to the database application 202, the database server 204 actually interacts with the operating system 104 to store the data as files in the OS file system. The operating system 104 makes a call to the device driver 106 to retrieve the file from the disk 108 or retrieve the file from the disk 10.
It is memorized in 8.
【0017】
各種記憶システムにはそれぞれ、利点および限界がある。階層的に構成された
記憶システムは、簡単、直観的、かつ実現が容易であって、大半のアプリケーシ
ョンプログラムによって使用される標準的なモデルである。しかし、残念ながら
、この階層的構成の簡易性は、複雑なデータ検索オペレーションに求められるサ
ポートを提供することができない。たとえば、特定日に作成された特定的なファ
イル名を有するすべてのドキュメントを検索するのに、すべてのディレクトリの
内容を検査せねばならないことがあり得る。すべてのディレクトリをサーチせね
ばならないので、階層的構成は検索プロセスを容易にすることはできない。Each storage system has its advantages and limitations. The hierarchically organized storage system is simple, intuitive, easy to implement, and is the standard model used by most application programs. Unfortunately, however, the simplicity of this hierarchical organization cannot provide the support required for complex data retrieval operations. For example, it may be necessary to inspect the contents of all directories to find all documents created on a particular day with a particular filename. Hierarchical organization cannot facilitate the search process because all directories must be searched.
【0018】
関係データベースシステムは、大量の情報を記憶したり、非常に柔軟にデータ
にアクセスするのに、好適である。階層的に構成されたシステムに対して、複雑
なサーチ基準に合致するデータでさえも、関係データベースシステムからは容易
にかつ効率的に検索することが可能である。しかし、クエリを公式化(formulat
e)してデータベースサーバに提示するプロセスは、ディレクトリの階層を単に
通り抜けるのに比して直観的ではなく、多くのコンピュータユーザにとっての技
術的快適度を越えるものである。Relational database systems are well suited for storing large amounts of information and accessing data very flexibly. For hierarchically organized systems, even data that meets complex search criteria can be easily and efficiently retrieved from relational database systems. However, the query is formulated (formulat
The process of e) presenting to the database server is less intuitive than simply going through the hierarchy of directories, and is beyond the technical comfort of many computer users.
【0019】
現時点において、アプリケーションの開発者は、それらのアプリケーションに
よって作成されるデータを、オペレーティングシステムによって提供される階層
的ファイルシステムを通じてアクセス可能としたいか、それともデータベースシ
ステムによって提供されるより複雑なクエリインターフェイスを通じてアクセス
可能としたいか、どちらかを選択するよう求められる。一般に、データベースシ
ステムの複雑なサーチ能力を要求しないアプリケーションについては、オペレー
ティングシステムによって提供されるより一般的かつより簡単な階層的ファイル
システムを使用して、それらのデータを記憶するように設計される。この場合、
アプリケーションの設計およびアプリケーションの使用がどちらも簡素化される
ものの、それらデータにアクセスすることのできる柔軟性およびパワーの面で制
限が課されてしまう。At this time, application developers want the data created by those applications to be accessible through the hierarchical file system provided by the operating system, or more complex queries provided by the database system. You will be asked to choose whether you want it to be accessible through the interface. In general, for applications that do not require the complex search capabilities of database systems, they are designed to store their data using the more general and simpler hierarchical file system provided by the operating system. in this case,
While both designing and using the application are simplified, they limit the flexibility and power with which they can access that data.
【0020】
これに対し、複雑なサーチ能力が求められる場合には、アプリケーションは、
データベースシステムによって提供されるクエリ機構を使用してそれらのデータ
にアクセスするように設計される。この場合、データにアクセスすることのでき
る柔軟性およびパワーは増すが、それと同時に、アプリケーションの複雑性が、
設計者の観点からもユーザの観点からも増す。さらに、データベースシステムの
存在も求められ、アプリケーションユーザに対して付加的な費用がかかることに
なる。On the other hand, when complicated search capability is required, the application
It is designed to access those data using the query mechanism provided by the database system. This gives you more flexibility and power to access your data, but at the same time increases the complexity of your application.
It increases from both the designer's perspective and the user's perspective. In addition, the existence of a database system is required, which adds additional cost to application users.
【0021】
以上に鑑みて、アプリケーションが比較的簡単なOSファイルAPIを使用し
てデータにアクセスすることができることが明らかに望ましい。また、より強力
なデータベースAPIを使用して同じデータにアクセスすることができることが
さらに望ましい。In view of the above, it is clearly desirable for an application to be able to access data using a relatively simple OS file API. It is further desirable to be able to access the same data using a more powerful database API.
【0022】[0022]
データベースに記憶されたデータにアクセスするための技術が提供される。一
技術に従えば、アプリケーションはオペレーティングシステムに対して1または
複数のコールを行なってファイルにアクセスする。該オペレーティングシステム
は、オペレーティングシステムファイルシステムを実現するルーチンを含む。該
1または複数のコールは、該オペレーティングシステムファイルシステムを実現
するルーチンに対して行なわれる。該1または複数のコールに応答して、1また
は複数のデータベースコマンドがデータベースを管理するデータベースサーバに
対して発行される。該データベースサーバはそのデータベースコマンドを実行し
て、データベースからデータを検索する。該データからファイルが生成されて、
該アプリケーションに与えられる。Techniques are provided for accessing the data stored in the database. According to one technique, an application makes one or more calls to an operating system to access a file. The operating system includes routines that implement the operating system file system. The one or more calls are made to a routine that implements the operating system file system. In response to the one or more calls, one or more database commands are issued to the database server managing the database. The database server executes the database command to retrieve data from the database. A file is created from the data,
Given to the application.
【0023】
本発明を以下に限定のためではなく例示の目的で、添付の図面を参照して説明
する。図中、同一の参照符号は同一の要素を表わす。The present invention is described below for purposes of illustration and not limitation with reference to the accompanying drawings. In the drawings, the same reference numerals represent the same elements.
【0024】[0024]
同じデータの組に対して、データベースAPIおよびOSファイルシステムA
PIを含む種々のインターフェイスを介してアクセスすることを可能にする、方
法およびシステムが提供される。以下に、説明の目的で、本発明が完全に理解さ
れるように多数の具体的な詳細が述べられるが、当業者には、本発明がそれらの
具体的な詳細を伴なわずに実施され得ることは明らかであろう。他の例において
は、本発明を不必要にあいまいにすることのないように、周知の構造および装置
はブロック図により示される。Database API and OS file system A for the same data set
Methods and systems are provided that allow access through a variety of interfaces including PIs. For the purposes of explanation, numerous specific details are set forth below for the purpose of a thorough understanding of the present invention, but those skilled in the art will appreciate that the present invention may be practiced without these specific details. It will be clear to get. In other instances, well-known structures and devices are shown in block diagrams in order not to unnecessarily obscure the present invention.
【0025】
アーキテクチャ的な概観
図3は、本発明の一実施例に従って実現されるシステム300のアーキテクチ
ャを表わすブロック図である。図2に示すシステムと同様、システム300は、
データベースAPIを提供するデータベースサーバ204を含み、このデータベ
ースAPIを通じて、データベースアプリケーション312が、データベースサ
ーバ204により管理されるデータにアクセスし得る。データベースAPIを通
じてデータベースサーバ204により管理されるデータにアクセスするすべての
エンティティの観点から、データベースサーバ204により管理されるデータは
データベースサーバ204(たとえばSQL)によりサポートされるデータベー
ス言語を用いて照会され得る関係テーブルにストアされる。これらのエンティテ
ィに対してトランスペアレントに、データベースサーバ204はこのデータをデ
ィスク108にストアする。一実施例によれば、データベースサーバ204は、
データを直接ディスクにストア可能にすることによってオペレーティングシステ
ム104のOSファイルシステムに伴うオーバヘッドを回避できるようにする、
ディスク管理論理を実現する。したがって、データベースサーバ204は、(1
)オペレーティングシステム104により提供されたOSファイルシステムをコ
ールするか、または(2)データを直接ディスクにストアすることでオペレーテ
ィングシステム104を迂回するかのいずれかによって、データがディスクにス
トアされるようにし得る。Architectural Overview FIG. 3 is a block diagram representing the architecture of a system 300 implemented in accordance with one embodiment of the present invention. Similar to the system shown in FIG.
It includes a database server 204 that provides a database API through which the database application 312 can access data managed by the database server 204. From the perspective of all entities accessing data managed by the database server 204 through the database API, the data managed by the database server 204 may be queried using a database language supported by the database server 204 (eg, SQL). Stored in a table. Transparent to these entities, database server 204 stores this data on disk 108. According to one embodiment, the database server 204 is
Allowing data to be stored directly to disk avoids the overhead associated with the OS file system of operating system 104,
Implement disk management logic. Therefore, the database server 204 uses (1
Data is stored on disk either by calling the OS file system provided by operating system 104 or (2) bypassing operating system 104 by storing the data directly on disk. obtain.
【0026】
図2のシステムとは異なって、システム300はトランスレーションエンジン
308を提供し、これはオペレーティングシステム304aおよび304bから
受けたI/Oコマンドを、トランスレーションエンジン308がデータベースサ
ーバ204へ発するデータベースコマンドへ変換する。I/Oコマンドがデータ
のストレージを求める場合、トランスレーションエンジン308はデータベース
コマンドをデータベースサーバ204へ発し、データベースサーバ204により
管理される関係テーブルにデータがストアされるようにする。I/Oコマンドが
データの検索を求める場合、トランスレーションエンジン308はデータベース
コマンドをデータベースサーバ204に発し、データベースサーバにより管理さ
れる関係テーブルからデータを検索する。その後トランスレーションエンジン3
08は、こうして検索されたデータを、I/Oコマンドを発したオペレーティン
グシステムに与える。Unlike the system of FIG. 2, system 300 provides a translation engine 308, which is a database that translation engine 308 issues to I / O commands received from operating systems 304a and 304b to database server 204. Convert to command. When an I / O command requests storage of data, translation engine 308 issues a database command to database server 204, causing the data to be stored in a relational table managed by database server 204. When an I / O command requests retrieval of data, translation engine 308 issues a database command to database server 204 to retrieve the data from a relational table managed by the database server. Then translation engine 3
08 provides the data thus retrieved to the operating system which issued the I / O command.
【0027】
オペレーティングシステム304aおよび304bに対しては、トランスレー
ションエンジン308に伝達されたデータがデータベースサーバ204により管
理される関係テーブルに最終的にストアされるという事実はトランスペアレント
である。これは、オペレーティングシステム304aおよび304bにトランス
ペアレントであるので、それらのオペレーティングシステムを含むプラットホー
ム上で実行されているアプリケーション302aおよび302bに対してもトラ
ンスペアレントである。To the operating systems 304a and 304b, the fact that the data communicated to the translation engine 308 is ultimately stored in relational tables managed by the database server 204 is transparent. Because it is transparent to operating systems 304a and 304b, it is also transparent to applications 302a and 302b running on the platform containing those operating systems.
【0028】
たとえば、アプリケーション302aのユーザがアプリケーション302aに
より与えられる「ファイルの保存」という選択肢を選択する場合を想定する。ア
プリケーション302aはOSファイルAPIを通じてコールを行ない、オペレ
ーティングシステム304aにファイルを保存させる。オペレーティングシステ
ム304aはトランスレーションエンジン308にI/Oコマンドを発し、ファ
イルをストアさせる。トランスレーションエンジン308はこれに応答して、デ
ータベースサーバ204に1つ以上のデータベースコマンドを発し、データベー
スサーバ204に、ファイル内に含まれるデータをデータベースサーバ204が
保持する関係テーブルにストアさせる。データベースサーバ204は、このデー
タを直接ディスクにストアしてもよく、またはオペレーティングシステム104
をコールしてオペレーティングシステム104により提供されるOSファイルシ
ステムにデータをストアさせてもよい。データベースサーバ204がオペレーテ
ィングシステム104をコールすると、オペレーティングシステム104はこれ
に応答して、デバイスドライバ106にコマンドを送ることによりデータをディ
スク108にストアさせる。For example, assume that the user of application 302a selects the "save file" option provided by application 302a. The application 302a makes a call through the OS file API to cause the operating system 304a to save the file. The operating system 304a issues an I / O command to the translation engine 308 to store the file. In response, translation engine 308 issues one or more database commands to database server 204, causing database server 204 to store the data contained in the file in a relational table maintained by database server 204. The database server 204 may store this data directly on disk or the operating system 104.
To store the data in the OS file system provided by the operating system 104. When the database server 204 calls the operating system 104, the operating system 104 responds by sending a command to the device driver 106 to store the data on the disk 108.
【0029】
別の例として、アプリケーション302aのユーザがアプリケーション302
aにより与えられる「ファイルのロード」という選択肢を選択する場合を想定す
る。アプリケーション302aはOS File APIを通じてコールを行ない、オペレ
ーティングシステム304aにファイルをロードさせる。オペレーティングシス
テム304aはI/Oコマンドをトランスレーションエンジン308に発し、フ
ァイルのロードを行なわせる。トランスレーションエンジン308は、1つ以上
のデータベースコマンドをデータベースサーバ204に発し、データベースサー
バ204に、検索すべきファイルを備えるデータをデータベースサーバ204が
保持する関係テーブルから検索させる。データの検索中、データベースサーバ2
04はデータディレクトリを検索してもよく、またはオペレーティングシステム
104をコールしてディスク108上のOSファイルからデータを検索させても
よい。一旦データが検索されると、この検索されたデータから所望のファイルが
「構築される」。具体的には、この検索されたデータはファイルをリクエストし
たアプリケーション302aにより予測されたフォーマットにされる。こうして
構築されたファイルは、トランスレーションエンジン308およびオペレーティ
ングシステム304aを通じて、アプリケーション302aまで伝達される。As another example, the user of the application 302 a may use the application 302
Let us assume that the option "load file" given by a is selected. The application 302a makes a call through the OS File API to cause the operating system 304a to load the file. The operating system 304a issues an I / O command to the translation engine 308 to load the file. The translation engine 308 issues one or more database commands to the database server 204, causing the database server 204 to retrieve the data that comprises the file to be retrieved from the relational tables held by the database server 204. Database server 2 while searching for data
04 may search the data directory or may call the operating system 104 to retrieve the data from the OS files on the disk 108. Once the data is retrieved, the desired file is "built" from the retrieved data. Specifically, the retrieved data is in the format predicted by the application 302a that requested the file. The file thus constructed is transmitted to the application 302a through the translation engine 308 and the operating system 304a.
【0030】
システム300には数多くの新規な特徴が組入れられる。以下のセクションで
は、これらの特徴をより詳細に説明する。しかしながら、当然、特定の実施例は
これらの特徴を説明するために用いられるのであり、本発明がこれらの特定の実
施例に限定されることはない。Many new features are incorporated into system 300. The following sections describe these features in more detail. However, it should be understood that the particular embodiments are used to illustrate these features and the invention is not limited to these particular embodiments.
【0031】
関係づけてストアされたデータへのOSファイルシステムアクセス
本発明のある局面によれば、システム300により、アプリケーションが従来
のOSファイルAPIを通じて、データベースにストアされたデータにアクセス
できるようになる。すなわち、オペレーティングシステムにより提供される標準
OSファイルAPIをコールすることによりファイルをロードするように設計さ
れている従来のアプリケーションが、関係テーブルにストアされたデータからオ
ンザフライで構築されたファイルをロードできるようになる。さらに、関係テー
ブルからデータが発生するという事実は、アプリケーションに対しては完全にト
ランスペアレントである。OS File System Access to Associatively Stored Data According to one aspect of the invention, system 300 enables applications to access data stored in a database through a conventional OS file API. . That is, conventional applications designed to load files by calling the standard OS file API provided by the operating system can load files built on the fly from data stored in relational tables. become. Moreover, the fact that the data originates from the relational table is completely transparent to the application.
【0032】
たとえば、データベースアプリケーション312が、データベースサーバ20
4により保持されるデータベース中のテーブルに1行のデータを挿入するという
データベースコマンドを発すると想定する。一旦その行が挿入されると、オペレ
ーティングシステム304aにより提供される比較的単純なOSファイルAPI
を用いてデータにアクセスするようにしか設計されていないアプリケーション3
02aは、「ファイルを開く」というコマンドをオペレーティングシステム30
4aに発する。これに応答して、オペレーティングシステム304aはI/Oコ
マンドをトランスレーションエンジン308に発し、トランスレーションエンジ
ン308は、1つ以上のデータベースコマンドをデータベースサーバ204に発
することにより応答する。データベースサーバ204は、データベースコマンド
(典型的にはデータベースクエリの形式)を実行することにより、データベース
サーバ204に、データベースアプリケーション312により挿入された行を検
索させる。アプリケーション302aにより予測されるファイルタイプのファイ
ルがその行に含まれるデータから構築され、こうして構築されたファイルが、ト
ランスレーションエンジン308およびオペレーティングシステム304aを通
じて再びアプリケーション302aへ戻される。For example, if the database application 312 is the database server 20
Suppose you issue a database command that inserts a row of data into a table in the database held by 4. Once that line is inserted, a relatively simple OS file API provided by operating system 304a.
Applications that are designed only to access data using
02a sends a command "open file" to the operating system 30.
Depart at 4a. In response, operating system 304a issues an I / O command to translation engine 308, which in turn responds by issuing one or more database commands to database server 204. The database server 204 causes the database server 204 to retrieve the row inserted by the database application 312 by executing a database command (typically in the form of a database query). A file of the file type predicted by the application 302a is constructed from the data contained in the row, and the file thus constructed is returned to the application 302a through the translation engine 308 and the operating system 304a.
【0033】
システム300により、従来のOSファイルシステムアクセスしかサポートし
ていないアプリケーションが、関係づけてストアされたデータをロードできるよ
うになるだけでなく、従来のOSファイルシステムアクセスしかサポートしない
アプリケーションによりストアされた情報に、データベースアプリケーションが
従来の照会技術を用いてアクセスできるようになる。たとえば、アプリケーショ
ン302aがOSのコールを行ない、作成されたファイルを保存させるとする。
その「ファイルの保存」コマンドはオペレーティングシステム304aおよびト
ランスレーションエンジン308を通じてデータベースサーバ204へ伝達され
る。データベースサーバ204は「ファイルの保存」コマンドをトランスレーシ
ョンエンジン308により発せられたデータベースコマンドの形で受け、そのフ
ァイルに含まれるデータを、データベースサーバ204により管理されるデータ
ベース中に含まれる1つ以上のテーブルの1行以上の行中にストアする。データ
が一旦その態様でデータベース内にストアされると、データベースアプリケーシ
ョン312はデータベースサーバ204にデータベースクエリを発し、データベ
ースからデータを検索することができる。The system 300 not only allows an application that only supports conventional OS file system access to load data that has been associated and stored, but that an application that supports only conventional OS file system access does not. The information provided can be accessed by database applications using conventional query techniques. For example, it is assumed that the application 302a calls the OS to save the created file.
The "save file" command is communicated to database server 204 through operating system 304a and translation engine 308. The database server 204 receives a "save file" command in the form of a database command issued by the translation engine 308, and the data contained in the file is stored in one or more databases contained in the database managed by the database server 204. Store in one or more rows of the table. Once the data is stored in the database in that manner, the database application 312 can issue a database query to the database server 204 to retrieve the data from the database.
【0034】
データベースにおけるOSファイルシステム構成のエミュレート
上記で説明したように、オペレーティングシステム304aおよび304bの
ファイルシステムルーチンに対するコールは、最終的に、トランスレーションエ
ンジン308がデータベースサーバ204に対して発するデータベースコマンド
に変換される。本発明の一実施例によれば、これらの変換を行なう処理は、オペ
レーティングシステム304aおよび304bにより実現されたファイルシステ
ムの特徴をデータベースサーバ204内でエミュレートすることにより単純化さ
れる。Emulating the OS File System Configuration in the Database As described above, the calls to the file system routines of operating systems 304a and 304b ultimately result in database commands issued by translation engine 308 to database server 204. Is converted to. According to one embodiment of the invention, the process of performing these conversions is simplified by emulating within the database server 204 the characteristics of the file system implemented by the operating systems 304a and 304b.
【0035】
この構成モデルに関して、ほとんどのオペレーティングシステムは、ファイル
階層構造でファイルを構成するファイルシステムを実現する。したがって、アプ
リケーション302aおよび302bが行なったこのOSファイルシステムのコ
ールは、典型的には、OSファイル階層構造内のその場所という観点からあるフ
ァイルを特定するだろう。このようなコールから対応するデータベースのコール
への変換を単純化するために、関係のあるデータベースシステム内の階層ファイ
ルシステムをエミュレートするための機構が設けられる。このような機構の1つ
が、1999年2月18日にエリック・セドラー(Eric Sedlar)により出願さ
れ「関係のあるシステムおいて階層的に構成された情報にアクセスするための階
層的インデクシング(HIERARCHICAL INDEXING FOR ACCESSING HIERARCHICALLY O
RGANIZED INFORMATION IN A RELATIONAL SYSREM)」と題された米国特許出願番
号09/251,757号に詳細に記載されており、この全内容をここに引用に
より援用する。With respect to this configuration model, most operating systems implement a file system that organizes files in a file hierarchy. Thus, the OS file system calls made by applications 302a and 302b will typically identify a file in terms of its location within the OS file hierarchy. To simplify the conversion of such calls into the corresponding database calls, a mechanism is provided to emulate a hierarchical file system within the database system concerned. One such mechanism was filed by Eric Sedlar on February 18, 1999, entitled "HIERARCHICAL INDEXING for accessing hierarchically structured information in systems of interest. FOR ACCESSING HIERARCHICALLY O
RGANIZED INFORMATION IN A RELATIONAL SYSREM) ", which is fully described in US patent application Ser. No. 09 / 251,757, the entire contents of which are incorporated herein by reference.
【0036】
具体的には、「HIERARCHICAL INDEXING」の出願には、階層インデックスを作
成、保持、および使用して、パス名に基づいて関係のあるシステム内の情報に効
率的にアクセスすることにより、階層的に構成されたシステムをエミュレートす
るための技術が記載される。エミュレートされた階層システムに何らかの子を有
する各アイテムは、そのインデックスにインデックスエントリを有する。インデ
ックス中のインデックスエントリは、これらのインデックスエントリに関連付け
られたアイテム中の階層的な関係を反映するような方法で互いにリンクされる。
具体的には、2つのインデックスエントリに関連付けられたアイテム間に親子関
係が存在すれば、親アイテムに関連付けられたインデックスエントリはその子ア
イテムに関連付けられたインデックスエントリへの直接のリンクを有する。Specifically, the “HIERARCHICAL INDEXING” application includes creating, maintaining, and using hierarchical indexes to efficiently access information in relevant systems based on pathnames, Techniques for emulating a hierarchically configured system are described. Each item that has some children in the emulated hierarchical system has an index entry in its index. The index entries in the index are linked together in a manner that reflects the hierarchical relationships among the items associated with these index entries.
Specifically, if a parent-child relationship exists between items associated with two index entries, the index entry associated with the parent item has a direct link to the index entry associated with that child item.
【0037】
結果的に、パス名中のファイル名のシーケンスに従って、そのパス名における
アイテムに関連付けられたインデックスエントリ間の直接のリンクに沿って進む
ことにより、パス名の導出(resolution)が行なわれる。インデックスエントリ
がこの態様でリンクされるインデックスを用いることにより、それらのパス名に
基づいてアイテムにアクセスする処理は著しく加速され、また、その処理中に行
われるディスクアクセスの数は著しく減少する。Consequently, resolution of the pathname is performed by following a direct link between index entries associated with items in the pathname according to a sequence of filenames in the pathname. . By using an index whose index entries are linked in this manner, the process of accessing items based on their pathnames is significantly accelerated, and the number of disk accesses made during that process is significantly reduced.
【0038】
階層インデックス
本発明と整合性のある階層インデックスは、パス名により特定されるように、
親アイテムからそれらの子へ移動するという、階層システムのパス名に基づいた
アクセス法をサポートする。一実施例によれば、本発明の原理に合う階層インデ
ックスは、次の3つのフィールドを含むインデックスエントリを採用する。RowI
D、FileID、およびDir_entry_list(アレイとしてストアされる)。Hierarchical Index A hierarchical index consistent with the present invention, as specified by a pathname,
Supports hierarchical system pathname-based access methods, moving from parent items to their children. According to one embodiment, a hierarchical index consistent with the principles of the present invention employs an index entry that includes the following three fields. RowI
D, FileID, and Dir_entry_list (stored as an array).
【0039】
図5は、データベース内の階層ストレージシステムをエミュレートするのに用
いられ得る階層インデックス510を示す。図6は、階層インデックス510が
エミュレートしている特定のファイル階層構造を示す。図7は、図6に示すファ
イルを関係データベース内にストアするのに用いられるファイルテーブル710
を示す。FIG. 5 shows a tier index 510 that can be used to emulate a tiered storage system in a database. FIG. 6 shows the particular file hierarchy structure that the hierarchy index 510 emulates. FIG. 7 shows a file table 710 used to store the files shown in FIG. 6 in a relational database.
Indicates.
【0040】
階層インデックス510はテーブルである。RowID欄はシステムにより生成さ
れるIDを含み、データベースサーバ204がディスク上でその行の場所を突き
とめ得るようにするディスクアドレスを特定する。この関係データベースシステ
ムによると、RowIDは、ディスクドライブにストアされたデータの場所を突きと
めるためにDBMSが用いる暗示的に規定されたフィールドであり得る。インデ
ックスエントリのFileIDフィールドは、このインデックスエントリに関連付けら
れたファイルのFileIDをストアする。The hierarchical index 510 is a table. The RowID field contains a system-generated ID that identifies the disk address that allows the database server 204 to locate the row on disk. According to this relational database system, the RowID can be an implicitly defined field used by the DBMS to locate the data stored on the disk drive. The FileID field of the index entry stores the FileID of the file associated with this index entry.
【0041】
本発明の一実施例によれば、階層インデックス510は、子を有するアイテム
に対するインデックスエントリのみストアする。したがって、エミュレートされ
た階層ファイルシステムという面において、階層インデックス510にインデッ
クスエントリを有するアイテムは、他のディレクトリに対して親であるディレク
トリおよび/または現在ドキュメントをストアしているディレクトリのみである
。子を有さないそれらのアイテム(たとえば、図6のExample.doc、Access、App
l、App2、App3)は含まれないのが好ましい。所与のファイルに対するインデッ
クスエントリのDir_entry_listフィールドは、あるアレイ中に、所与のファイ
ルの子ファイルの各々に対する「アレイエントリ」をストアする。According to one embodiment of the invention, the hierarchical index 510 stores only index entries for items that have children. Thus, in terms of an emulated hierarchical file system, the only items that have index entries in the hierarchical index 510 are directories that are parents to other directories and / or directories that are currently storing documents. Those items that have no children (eg Example.doc, Access, App in Figure 6
l, App2, App3) are preferably not included. The Dir_entry_list field of the index entry for a given file stores an "array entry" for each of the child files of the given file in an array.
【0042】
たとえば、インデックスエントリ512はWindows(R)ディレクトリ614
に対するものである。Wordディレクトリ616およびAccessディレクトリ620
はWindows(R)ディレクトリ614の子である。よって、Windows(R)ディレ
クトリ614に対するインデックスエントリ512のDir_entry_listフィール
ドは、Wordディレクトリ616に対するアレイエントリと、Accessディレクトリ
620に対するアレイエントリとを含む。For example, index entry 512 is a Windows® directory 614.
Against. Word directory 616 and Access directory 620
Is a child of the Windows® directory 614. Therefore, the Dir_entry_list field of the index entry 512 for the Windows® directory 614 includes an array entry for the Word directory 616 and an array entry for the Access directory 620.
【0043】
一実施例によれば、Dir_entry_listフィールドが各子に対してストアする特
定の情報は、その子のファイル名およびその子のFileIDを含む。階層インデック
ス510にそれら自体のエントリを有する子に対して、Dir_entry_listフィー
ルドは子のインデックスエントリのRowIDもストアする。たとえば、Wordディレ
クトリ616は階層インデックス510にそれ自体のエントリを有する(エント
リ514)。したがって、インデックスエントリ512のDir_entry_listフィ
ールドは、ディレクトリ616の名称(“Word”)、階層インデックス510に
おけるディレクトリ616に対するインデックスエントリのRowID(“Y3”)
、およびディレクトリ616のFileID(“X3”)を含む。より詳細に説明する
ように、Dir_entry_listフィールドに含まれる情報により、パス名に基づいた
情報へのアクセスがより速くより容易になる。According to one embodiment, the specific information that the Dir_entry_list field stores for each child includes the child's file name and the child's FileID. For children that have their own entry in the hierarchical index 510, the Dir_entry_list field also stores the RowID of the child index entry. For example, the Word directory 616 has its own entry in the hierarchical index 510 (entry 514). Therefore, the Dir_entry_list field of the index entry 512 is the name (“Word”) of the directory 616, and the RowID (“Y3”) of the index entry for the directory 616 in the hierarchical index 510.
, And the FileID (“X3”) of the directory 616. As will be explained in more detail, the information contained in the Dir_entry_list field makes access to information based on pathnames faster and easier.
【0044】
階層インデックスのいくつかの主要な原理は以下のとおりである。
・所与のディレクトリに対するインデックスエントリのDir_entry_list情報
はできるだけ少数のディスクブロックとしてまとめて保たれる。これは、最も頻
繁に用いられるファイルシステムオペレーション(パス名の導出、ディレクトリ
のリスティング(listing))は、あるディレクトリが参照されると常にそのデ
ィレクトリ内の多数のエントリを見る必要が生じることになるからである。言換
えれば、特定のディレクトリエントリが参照されると同じディレクトリ内の他の
エントリもまた参照されることが多いので、ディレクトリエントリは参照に対し
て高い局所性を有するべきである。Some major principles of hierarchical indexes are: The Dir_entry_list information of index entries for a given directory is kept together as few disk blocks as possible. This is because the most frequently used file system operations (path name derivation, directory listing) will have to look at many entries in a directory whenever it is referenced. Is. In other words, a directory entry should have a high degree of locality to reference, since when a particular directory entry is referenced, other entries in the same directory are also often referenced.
【0045】
・階層インデックスのインデックスエントリにストアされる情報は、特定のデ
ィスクブロック中のエントリの最大数に適合するように、最小に保たれなければ
ならない。ディレクトリエントリを、それらが含まれるディレクトリを特定する
キーを反復する必要のないアレイ手段にまとめてグループ分けすると、ディレク
トリ内のすべてのエントリが同じキーを共有することになる。The information stored in the index entries of the hierarchical index must be kept to a minimum to fit the maximum number of entries in a particular disk block. Grouping directory entries together into array means that do not require repeating keys that identify the directories in which they are included will result in all entries in the directory sharing the same key.
【0046】
・パス名の導出に要する時間は、ファイルシステム内のファイルの総数ではな
く、パス内のディレクトリの数に比例すべきである。これにより、ユーザは、頻
繁にアクセスされるファイルをアクセス時間の少ないファイルシステムツリーの
頂上の方に保つことが可能になる。The time required to derive the path name should be proportional to the number of directories in the path, not the total number of files in the file system. This allows the user to keep frequently accessed files at the top of the file system tree where access times are low.
【0047】
これらの要素はすべて、iノードおよびディレクトリのUNIX(R)システムなど
の典型的なファイルシステムディレクトリ構造において存在する。ここに記載の
ような階層インデックスを用いることにより、それらの目的と、関係のデータベ
ースが理解しかつ照会し得る構造とが一致し、データベースサーバが、パス名の
導出に用いられたものとは別の態様でファイルのアドホックサーチを行なうこと
が可能になる。これを行なうためには、あるインデックスのデータベース概念を
用いなければならない。すなわち、ある特定の方法(この場合、階層ツリーにお
けるパス名の導出)を介したアクセスを最適化するよう設計された別の態様で別
個のデータ構造に配置された下位情報(この場合ファイルデータ)の部分の複製
である。All of these elements reside in a typical file system directory structure, such as the UNIX system of inodes and directories. By using a hierarchical index as described here, their purpose and structure that the relational database understands and can query are matched, and the database server is different from the one used to derive the pathname. It becomes possible to perform an ad hoc search of a file in this mode. To do this, one has to use the database concept of an index. That is, subordinate information (file data in this case) placed in a separate data structure in another manner designed to optimize access through a particular method (in this case, derivation of pathnames in a hierarchical tree). Is a duplicate of the part.
【0048】
階層インデックスの使用
ファイルのパス名に基づいてファイルにアクセスするために階層インデックス
510がいかに用いられ得るかについて、ここで図8のフローチャートを参照し
て述べることにする。説明の目的で、ドキュメント618がそのパス名を介して
アクセスされると仮定する。このファイルのパス名は/Windows(R)/Word/Exam
ple.docであり、これは以下「入力パス名」と称する。このパス名が与えられる
と、パス名導出処理は、この入力パス名中の第1の名称に対するインデックスエ
ントリの場所を階層インデックス510において突きとめることにより開始する
。あるファイルシステムの場合、パス名における第1の名称はルートディレクト
リである。したがって、エミュレートされたファイルシステム内のファイルの場
所を突きとめるためのパス名導出処理は、ルートディレクトリ610のインデッ
クスエントリ508の場所を突きとめることにより始まる(ステップ800)。
すべてのパス名導出オペレーションがルートディレクトリのインデックスエント
リ508にアクセスすることにより始まるので、ルートディレクトリ610(イ
ンデックスエントリ508)に対するインデックスエントリの場所を示すデータ
は、あらゆるサーチの開始時においてルートディレクトリのインデックスエント
リ508の場所を素早く突きとめるために、階層インデックス510外部の都合
よい場所に保持され得る。Using Hierarchical Index How the hierarchical index 510 can be used to access a file based on the pathname of the file will now be described with reference to the flowchart of FIG. For purposes of explanation, assume that document 618 is accessed via its pathname. The path name of this file is / Windows (R) / Word / Exam
ple.doc, which will be referred to as "input path name" hereinafter. Given this pathname, the pathname derivation process begins by locating in the hierarchical index 510 the location of the index entry for the first name in this input pathname. For some file systems, the first name in the pathname is the root directory. Therefore, the pathname derivation process for locating a file in the emulated file system begins by locating the index entry 508 of the root directory 610 (step 800).
Since all pathname derivation operations begin by accessing the root directory's index entry 508, the data indicating the location of the index entry for the root directory 610 (index entry 508) is the root directory's index entry at the beginning of every search. It may be kept at a convenient location outside the hierarchical index 510 to quickly locate 508.
【0049】
ルートディレクトリ610に対するインデックスエントリ508の場所が一旦
突きとめられると、DBMSは、入力パス名中にまだ何らかのファイル名がある
かを判定する(ステップ802)。入力パス名中にもうファイルがなければ、制
御はステップ820へと進み、インデックスエントリ508にストアされたFile
IDが用いられてファイルテーブル710中のルートディレクトリエントリを捜す
。Once the location of the index entry 508 for the root directory 610 is located, the DBMS determines if there are any filenames in the input pathname (step 802). If there are no more files in the input pathname, control proceeds to step 820 and the File stored in index entry 508.
The ID is used to look up the root directory entry in the file table 710.
【0050】
この例では、ファイル名「Windows(R)」は、入力パス名においてルートデ
ィレクトリの記号「/」の後に続く。したがって、制御はステップ804へと進
む。ステップ804で、次のファイル名(たとえば「Windows(R)」が入力パ
ス名から選択される。ステップ806でDBMSはインデックスエントリ508
のDir_entry_list欄を見て、選択されたファイル名に関するアレイエントリの
場所を突きとめる。In this example, the file name “Windows (R)” follows the root directory symbol “/” in the input path name. Therefore, control proceeds to step 804. In step 804, the next file name (eg, "Windows (R)" is selected from the input pathnames. In step 806, the DBMS causes index entry 508.
Look at the Dir_entry_list column of to locate the array entry for the selected file name.
【0051】
この例では、入力パス名においてルートディレクトリの後に続くファイル名は
「Windows(R)」である。したがって、ステップ806は、ファイル名「Windo
ws(R)」のアレイエントリに対するインデックスエントリ508のDir_entry
_listをサーチすることを伴う。Dir_entry_listが選択されたファイル名のア
レイエントリを含まなければ、制御はステップ808からステップ810へと進
み、ここで入力パス名が無効であることを示すエラーが生成される。この例では
、インデックスエントリ508のDir_entry_listは「Windows(R)」のアレ
イエントリを含んでいる。したがって、制御はステップ808からステップ82
2へと移る。In this example, the file name following the root directory in the input path name is “Windows (R)”. Therefore, in step 806, the file name "Windo
Dir_entry of index entry 508 for the ws (R) ”array entry
It involves searching _list. If the Dir_entry_list does not contain an array entry for the selected filename, control proceeds from step 808 to step 810 where an error is generated indicating that the input pathname is invalid. In this example, the Dir_entry_list of index entry 508 contains a "Windows (R)" array entry. Therefore, control proceeds from step 808 to step 82.
Move on to 2.
【0052】
インデックスエントリ508のDir_entry_list中の情報は、ルートディレク
トリ610の子の1つが実際「Windows(R)」という名称のファイルであるこ
とを示す。さらに、Dir_entry_listアレイエントリはこの子についての次の情
報を含む。すなわち、これはRowIDY2に一致するインデックスエントリであり
、このFileIDはX2である。The information in Dir_entry_list of index entry 508 indicates that one of the children of root directory 610 is actually a file named “Windows (R)”. In addition, the Dir_entry_list array entry contains the following information for this child: That is, this is an index entry that matches RowIDY2, and this FileID is X2.
【0053】
ステップ822において、入力パス名にまだ何らかのファイル名があるか否か
が判定される。もうファイル名がなければ、制御はステップ822からステップ
820へと移る。この例では、「Windows(R)」は最後のファイル名ではない
ので、制御は代わりにステップ824へ移る。At step 822, it is determined whether the input path name still has any file name. If there are no more filenames, control transfers from step 822 to step 820. In this example, "Windows (R)" is not the last file name, so control transfers to step 824 instead.
【0054】
「Windows(R)」は入力パス中の最後のファイル名ではないので、Dir_entr
y_listに含まれるFileID情報は、このパス導出オペレーション中には用いられ
ない。むしろ、Windows(R)ディレクトリ614は特定されたパスの部分にす
ぎず、ターゲットではないので、ファイルテーブル710はこの時点では調べら
れない。代わりに、ステップ824で、インデックスエントリ508のDir_ent
ry_list中に見つけられる「Windows(R)」に対するRowID(Y2)が用いられ
て、Windows(R)ディレクトリ614に対するインデックスエントリの場所が
突きとめられる(インデックスエントリ512)。Since “Windows (R)” is not the last file name in the input path, Dir_entr
The FileID information contained in y_list is not used during this path derivation operation. Rather, the Windows (R) directory 614 is only part of the identified path and not the target, so the file table 710 is not examined at this point. Instead, in step 824, index entry 508 Dir_ent
The RowID (Y2) for "Windows (R)" found in ry_list is used to locate the index entry for the Windows (R) directory 614 (index entry 512).
【0055】
インデックスエントリ512のDir_entry_listを調べて、このシステムは、
入力パス名中の次のファイル名をサーチする(ステップ804および806)。
この例では、ファイル名「Word」が入力パス中でファイル名「Windows(R)」
の後に続く。したがって、このシステムは「Word」のアレイエントリに対するイ
ンデックスエントリ512のDir_entry_listをサーチする。このようなエント
リはインデックスエントリ512のDir_entry_list中に存在し、「Windows(
R)」が実際「Word」という名称の子を有していることを示す(ステップ808
)。ステップ822において、入力パス中にまだファイル名があると判定され、
よって制御はステップ824へと進む。Looking at the Dir_entry_list of index entry 512, the system
The next file name in the input path name is searched (steps 804 and 806).
In this example, the file name "Word" is in the input path and the file name is "Windows (R)".
Followed by. Therefore, the system searches the Dir_entry_list of index entry 512 for the "Word" array entry. Such an entry exists in the Dir_entry_list of the index entry 512, and the "Windows (
R) ”actually has a child named“ Word ”(step 808).
). In step 822, it is determined that there is still a file name in the input path,
Therefore, control proceeds to step 824.
【0056】
「Word」に対するアレイエントリを見つけると、このシステムは、そのアレイ
エントリ中の情報を読出し、Wordディレクトリ616に対するインデックスエン
トリが階層インデックス510中のRowIDY3で見つかるということと、Wordデ
ィレクトリ616に属する特定の情報がファイルテーブル710中の行X3で見
つかるということとを決定する。ワードディレクトリ616は単に特定されたパ
スの部分でありターゲットではないので、ファイルテーブル710は調べられな
い。その代わり、このシステムはRowID(Y3)を用いてWordディレクトリ61
6に対するインデックスエントリ514の場所を突きとめる(ステップ824)
。Upon finding an array entry for “Word”, the system reads the information in that array entry and finds that an index entry for Word directory 616 is found at RowIDY3 in hierarchical index 510 and belongs to Word directory 616. It is determined that the particular information is found at row X3 in file table 710. The file table 710 is not consulted because the word directory 616 is only part of the specified path and not the target. Instead, the system uses the RowID (Y3) to create the Word directory 61.
Locate index entry 514 for 6 (step 824)
.
【0057】
階層インデックス510のRowIDY3で、このシステムはインデックスエント
リ514を見つける。ステップ804において、入力パス名から次のファイル名
「Example.doc」が選択される。ステップ806において、インデックスエント
リ514のDir_entry_listがサーチされて、「Example.doc」に対するアレイ
エントリがあることを見つけ(ステップ808)、これは「Example.doc」がWor
dディレクトリ616の子であることを示す。このシステムはまた、Example.doc
が階層インデックス510においてインデックス付けの情報を全く有さないこと
と、Example.docに関する特定の情報をFileIDX4を用いてファイルテーブル7
10中に見つけることができるということも見つける。Example.docはアクセス
されるターゲットファイル(すなわち入力パス中の最後のファイル名)であるの
で、制御はステップ820へ移り、ここでシステムはFileIDX4を用いてファイ
ルテーブル710中の適切な行にアクセスし、かつその行の本体欄にストアされ
たファイル本体(BLOB)を抽出する。こうして、Example.docファイルがア
クセスされる。At RowIDY3 of hierarchy index 510, the system finds index entry 514. In step 804, the next file name "Example.doc" is selected from the input path names. In step 806, the Dir_entry_list of index entry 514 is searched to find an array entry for "Example.doc" (step 808), which is "Example.doc" Wor.
d Indicates that the directory 616 is a child. This system also uses Example.doc
Does not have any indexing information in the hierarchical index 510, and uses the FileIDX4 to provide specific information about Example.doc in the file table 7
I also find that I can find it in 10. Since Example.doc is the target file to be accessed (ie the last filename in the input path), control transfers to step 820, where the system uses FileIDX4 to access the appropriate row in file table 710. , And the file body (BLOB) stored in the body column of that row is extracted. In this way, the Example.doc file is accessed.
【0058】
このファイルのアクセスには、階層インデックス510のみが用いられた。テ
ーブルのスキャンは必要なかった。ブロックのサイズおよびファイル名の長さが
典型的なものであれば、少なくとも600のディレクトリエントリが1つのディ
スクブロックに適合することになり、典型的なディレクトリは600エントリ未
満を有する。つまり、所与のディレクトリ中のディレクトリエントリのリストは
、典型的には単一のブロックに適合することになる。言換えれば、インデックス
エントリのDir_entry_listアレイ全体を含む階層インデックス510の各イン
デックスエントリは、典型的には単一のブロックに適合することになり、したが
って単一のI/Oオペレーションにおいて読出され得る。Only the hierarchical index 510 was used to access this file. No table scan required. If the size of the block and the length of the file name are typical, then at least 600 directory entries will fit in one disk block, a typical directory has less than 600 entries. That is, the list of directory entries in a given directory will typically fit in a single block. In other words, each index entry of hierarchical index 510, which includes the entire Dir_entry_list array of index entries, will typically fit into a single block and thus can be read in a single I / O operation.
【0059】
階層インデックス510中のインデックスエントリからインデックスエントリ
への移動において、インデックス中のさまざまなインデックスエントリが種々の
異なるディスクブロックに存在する場合、ディスクアクセスをいくらか行なう必
要があるという可能性もある。しかしながら、各インデックスエントリが単一の
ブロックに完全に適合すれば、ディスクアクセスの数は、そのパス中のディレク
トリの数以下となる。平均のインデックスエントリのサイズが単一のディスクブ
ロックに適合しなくとも、ディレクトリごとのディスクアクセスの数は一定の項
(term)となり、ファイルシステム中のファイルの総数に伴って増加することは
ない。In moving from an index entry in the hierarchical index 510 to an index entry, it may be necessary to do some disk access if the various index entries in the index reside in different disk blocks. However, if each index entry fits perfectly into a single block, the number of disk accesses will be less than or equal to the number of directories in the path. Even if the average index entry size does not fit into a single disk block, the number of disk accesses per directory is a term and does not increase with the total number of files in the file system.
【0060】
いくつかのファイルシステムが所有する階層的特徴をエミュレートするための
技術についての以上の記述は単に例示的なものである。いくつかのファイルシス
テムおよびプロトコルの階層的な特徴をエミュレートするために他の技術も用い
られ得る。さらに、階層的特徴を所有することさえないプロトコルもあり得る。
このように、本発明は、いくつかのプロトコルの階層的特徴をエミュレートする
ための何らかの特定の技術に限定されることはない。さらに、本発明は、本質的
に階層的であるプロトコルに限定されることもない。The above description of the techniques for emulating the hierarchical features owned by some file systems is merely exemplary. Other techniques may also be used to emulate the hierarchical characteristics of some file systems and protocols. Furthermore, some protocols may not even possess hierarchical features.
As such, the present invention is not limited to any particular technique for emulating the hierarchical characteristics of some protocols. Furthermore, the invention is not limited to protocols that are hierarchical in nature.
【0061】
データベースにおける他のOSファイルシステム特徴のエミュレート
OSファイルシステムの階層的な構成以外に、ほとんどのOSファイルシステ
ムの別の特徴は、それらがストアするファイルについて特定のシステム情報を保
持していることである。一実施例によれば、このOSファイルシステム特徴もま
た、データベースシステム内でエミュレートされる。具体的には、トランスレー
ションエンジン308が、あるファイルの「システム」データをデータベースサ
ーバ204により管理されるファイルテーブル(たとえばファイルテーブル71
0)のある行にストアさせるコマンドを発する。一実施例によれば、ファイル内
容のすべてまたは大部分が、その行のある欄に大規模バイナリオブジェクト(B
LOB)としてストアされる。このBLOBの欄に加えて、このファイルテーブ
ルはさらに、OSファイルシステムで実現されるものに対応する属性値をストア
するための欄を含む。このような属性値は、たとえば、ファイルの所有者または
作成者、ファイルの作成日、ファイルの最終変更データ、ファイルへのハードリ
ンク、ファイル名、ファイルサイズ、およびファイルタイプを含む。Emulating Other OS File System Features in Databases Besides the hierarchical organization of OS file systems, another feature of most OS file systems is that they hold specific system information about the files they store. It is that you are. According to one embodiment, this OS file system feature is also emulated within the database system. Specifically, the translation engine 308 stores the “system” data of a file in a file table (eg, the file table 71) managed by the database server 204.
0) Issue a command to store in a certain line. According to one embodiment, all or most of the contents of the file are stored in a large binary object (B
LOB). In addition to the BLOB column, the file table further includes a column for storing attribute values corresponding to those implemented in the OS file system. Such attribute values include, for example, the owner or creator of the file, the creation date of the file, the last modified data of the file, the hard link to the file, the file name, the file size, and the file type.
【0062】
トランスレーションエンジン308がデータベースサーバ204に対して何ら
かのファイルオペレーションを行なわせるようにデータベースコマンドを発する
場合、それらのデータベースコマンドは、そのオペレーションに伴うファイルに
関連付けられた属性を適切に変更させるステートメントを含む。たとえば、新た
に作成されたファイルに対するファイルテーブル中に新たな行を挿入することに
応答して、トランスレーションエンジン308はデータベースコマンドを発し、
(1)誰がそのファイルを作成しているかをユーザに示す値をその行の「所有者
」欄にストアし、(2)現在の日付を示す値をその行の「作成日」欄にストアし
、(3)現在の日付および時刻を示す値を「最終変更」欄にストアし、(4)B
LOBのサイズを示す値を「サイズ」欄にストアする。このファイルにおける後
続のオペレーションに応答して、これらの欄中の値はこれらのオペレーションに
より要求されたとおり変更される。たとえば、トランスレーションエンジン30
8が特定の行にストアされたファイルの内容を変更するデータベースコマンドを
発すると、同じオペレーションの部分として、トランスレーションエンジン30
8は、その特定の行の「最終変更」値を更新するデータベースコマンドを発する
。さらに、この変更がファイルサイズを変えるものであれば、トランスレーショ
ンエンジン308は、その特定の行の「サイズ」値を更新するデータベースコマ
ンドも発する。When the translation engine 308 issues database commands to cause the database server 204 to perform some file operation, those database commands are statements that cause the attributes associated with the file associated with that operation to be appropriately modified. including. For example, in response to inserting a new row in the file table for the newly created file, translation engine 308 issues a database command,
(1) Store a value that indicates to the user who created the file in the "owner" column of the row, and (2) store a value that indicates the current date in the "creation date" column of the row. , (3) Store the value indicating the current date and time in the “Last changed” column, and (4) B
A value indicating the size of the LOB is stored in the "size" column. In response to subsequent operations in this file, the values in these fields are changed as required by those operations. For example, the translation engine 30
8 issues a database command that modifies the contents of a file stored on a particular line, the translation engine 30
8 issues a database command that updates the "last modified" value for that particular row. In addition, if the change changes the file size, translation engine 308 also issues a database command to update the "size" value for that particular row.
【0063】
ほとんどのOSファイルシステムの別の特徴は、各ファイルごとにセキュリテ
ィを提供する能力である。たとえば、Windows(R)NT、VMSおよびUNI
X(R)のいくつかのバージョンは、各ファイルに関してさまざまなエンティテ
ィが有する権利を示すアクセス制御リストを保持する。本発明の一実施例によれ
ば、このOSファイルシステム特徴は、「セキュリティテーブル」を保持するこ
とによりデータベースシステム内でエミュレートされ、このセキュリティテーブ
ルの各行は、アクセス制御リストのあるエントリと同様の内容を含む。たとえば
、このセキュリティテーブル中の行がファイルを特定する値をストアするための
ある欄と、許可タイプ(たとえば読出、更新、挿入、実行、変更の許可)を表わ
す値をストアするための別の欄と、その許可が与えられたか否かを示すフラグを
ストアする別の欄と、そのファイルに対する許可の所有者を表わす値をストアす
る所有者欄とを含む。この所有者とは、ユーザID(userid)で特定される単一
のユーザでも、グループID(groupid)で特定されるグループでもよい。グル
ープの場合は、1つ以上の追加テーブルを用いてそのグループIDをそのグルー
プのメンバーのユーザIDにマッピングする。Another feature of most OS file systems is the ability to provide security on a per file basis. For example, Windows (R) NT, VMS and UNI
Some versions of X (R) maintain an access control list that indicates the rights that various entities have for each file. According to one embodiment of the invention, this OS file system feature is emulated in the database system by maintaining a "security table", each row of which is similar to an entry in the access control list. Including content. For example, a row in this security table has one column for storing values that identify files and another column for storing values that represent permission types (eg, read, update, insert, execute, change permission). And another field that stores a flag that indicates whether the permission was granted or not, and an owner field that stores a value that represents the owner of the permission for the file. The owner may be a single user identified by a user ID (userid) or a group identified by a group ID (groupid). For groups, one or more additional tables are used to map the group ID to the user IDs of members of the group.
【0064】
データベースサーバ204により管理されるファイルテーブルにストアされた
あるファイルにアクセスするデータベースコマンドを発する前に、トランスレー
ションエンジン308は、アクセスを要求しているユーザが特定されたファイル
に対して要求されたアクセスのタイプを実行する許可を有することを検証するデ
ータベースコマンドを発する。このようなプリアクセスデータベースコマンドに
より、セキュリティテーブルからデータが検索され、アクセスを要求しているユ
ーザにそのアクセスの実行が許可されているか否かが判定される。このように検
索されたデータが、ユーザが要求された許可を有していないと示せば、トランス
レーションエンジン308は要求されたオペレーションを実行するコマンドを発
しない。その代わりに、トランスレーションエンジン308は要求の発生元のオ
ペレーティングシステムへエラーメッセージを返す。このエラーメッセージに応
答して、オペレーティングシステムは、アクセスを要求したアプリケーションに
、そのアプリケーションがそのオペレーティングシステムのOSファイルシステ
ムに保持されるあるファイルに許可なしにアクセスしようと試みた場合に送るで
あろうものと同じOSエラーメッセージを送る。このように、エラー状況下でも
、データがOSファイルシステムではなく関係データベース中にストアされると
いう事実は、アプリケーションにはトランスペアレントである。Before issuing a database command to access a file stored in a file table managed by the database server 204, the translation engine 308 requests the file for which the user requesting access is identified. Issue a database command that verifies that you have permission to perform the type of access made. Such a pre-access database command retrieves data from the security table and determines whether the user requesting the access is permitted to execute the access. If the data so retrieved indicates that the user does not have the required permission, translation engine 308 does not issue a command to perform the requested operation. Instead, translation engine 308 returns an error message to the operating system from which the request originated. In response to this error message, the operating system will send to the application requesting access if the application attempts to access a file held in the operating system's OS file system without permission. Send the same OS error message as the one. Thus, the fact that data is stored in a relational database rather than the OS file system, even under error conditions, is transparent to the application.
【0065】
異なるオペレーティングシステムにはファイルについての異なるタイプのシス
テム情報がストアされる。たとえば、あるオペレーティングシステムは「アーカ
イブ」フラグをストアするがアイコン情報はストアしない場合もあり、また別の
ものはアイコン情報をストアしアーカイブフラグをストアしない場合もある。こ
こに記載の技術を実現するデータベースシステムにより保持されるシステムデー
タの特定のセットは、各実現例ごとに変化し得る。たとえば、データベース20
4はオペレーティングシステム304aのOSファイルシステムによりサポート
されるシステムデータのすべてをストアし得るが、オペレーティングシステム3
04bのOSファイルシステムによりサポートされるシステムデータはいくつか
しかストアし得ない。これに代えて、データベースサーバはオペレーティングシ
ステム304aおよび304bの両者によりサポートされるシステムデータの全
部をストアしてもよく、またはオペレーティングシステム304aおよび304
bのいずれか1つによりサポートされるシステムデータの一部をストアしてもよ
い。Different operating systems store different types of system information about files. For example, one operating system may store the "archive" flag but not the icon information, and another may store the icon information and not the archive flag. The particular set of system data maintained by a database system implementing the techniques described herein may vary for each implementation. For example, database 20
4 may store all of the system data supported by the OS file system of operating system 304a.
Only some of the system data supported by the 04b OS file system can be stored. Alternatively, the database server may store all of the system data supported by both operating systems 304a and 304b, or operating systems 304a and 304.
Some of the system data supported by any one of b may be stored.
【0066】
図3に示すように、データベースサーバ204は多数の別々のOSファイルシ
ステムから発生したファイルをストアする。たとえば、オペレーティングシステ
ム304aはオペレーティングシステム304bとは異なっていてもよく、また
、オペレーティングシステム304aおよび304bの両者がオペレーティング
システム104とは異なっていてもよい。OSファイルシステム304aおよび
304bは対比する特徴を有し得る。たとえば、OSファイルシステム304a
はファイル名に文字「/」を含むことを可能にし得るのに対し、OSファイルシ
ステム304bは可能にし得ない。一実施例によれば、このような状況において
、トランスレーションエンジン308はOSファイルシステム特有の規則を実現
するよう構成される。このように、アプリケーション302aがファイル名に文
字「/」を含むファイルをストアしようと試みると、トランスレーションエンジ
ン308はデータベースサーバ204にそのオペレーションを実行させるデータ
ベースコマンドを発する。一方、アプリケーション302bがファイル名に文字
「/」を含むファイルをストアしようと試みると、トランスレーションエンジン
308はエラーを生じさせる。As shown in FIG. 3, the database server 204 stores files originating from a number of separate OS file systems. For example, operating system 304a may be different than operating system 304b, and both operating systems 304a and 304b may be different from operating system 104. The OS file systems 304a and 304b may have contrasting features. For example, OS file system 304a
May allow the file name to include the character "/", whereas OS file system 304b may not. According to one embodiment, in such a situation, translation engine 308 is configured to implement OS file system specific rules. Thus, when application 302a attempts to store a file that contains the character "/" in the filename, translation engine 308 issues a database command that causes database server 204 to perform that operation. On the other hand, when the application 302b attempts to store a file that contains the character "/" in the filename, translation engine 308 raises an error.
【0067】
これに代えて、トランスレーションエンジン308は、すべてのオペレーティ
ングシステムに対する規則の単一のセットを実現するよう構成され得る。たとえ
ば、トランスレーションエンジン308は、ファイル名がトランスレーションエ
ンジン308によりサポートされる1つのオペレーティングシステムにおいてさ
えも無効な場合には、たとえそのファイル名がそのファイル名を特定したコマン
ドを発したオペレーティングシステムにおいて有効であっても、エラーを生じさ
せることになる、という規則を実現し得る。Alternatively, translation engine 308 may be configured to implement a single set of rules for all operating systems. For example, the translation engine 308 may find that the filename is invalid even in one operating system supported by the translation engine 308, even if the filename issued the command that specified the filename. A rule can be implemented that, even if valid, will cause an error.
【0068】
OSファイルシステムコールのデータベースクエリへの変換
OSファイルシステム特徴をデータベースシステム内でエミュレートするため
の機構を構築することにより、OSファイルシステムのコールが、OSファイル
システムのコールを行なっているアプリケーションにより予期される機能性を失
うことなく、トランスレーションエンジン308によってデータベースクエリへ
変換され得る。それらのアプリケーションによりなされたこのOSファイルシス
テムコールは、それらが実行されているオペレーティングシステムにより提供さ
れるOSファイルAPIを通じて行なわれる。たとえば、「C」プログラミング
言語で書かれたプログラムに対しては、あるオペレーティングシステムのOSフ
ァイルAPIのインターフェイスを特定するために「stdio.h」と題されたソー
スコードファイルが用いられる。このstdio.hファイルはアプリケーションに含
まれるので、これらのアプリケーションはOSファイルAPIを実現するルーチ
ンをいかに呼出すかを知ることになる。Conversion of OS File System Calls to Database Queries OS file system calls make OS file system calls by constructing a mechanism for emulating OS file system features within the database system. It can be translated by the translation engine 308 into a database query without losing the functionality expected by the application. This OS file system call made by those applications is done through the OS file API provided by the operating system on which they are executing. For example, for a program written in the "C" programming language, a source code file entitled "stdio.h" is used to specify the interface of the OS file API of an operating system. Since this stdio.h file is included in the applications, these applications will know how to call the routine that implements the OS file API.
【0069】
OSファイルAPIを実現する特定のルーチンはオペレーティングシステムご
とに変化し得るが、典型的には次のオペレーションを行なうためのルーチンを含
む。ファイルを開く、ファイルから読出す、ファイルへ書込む、ファイル内をシ
ークする、ファイルをロックする、およびファイルを閉じる。一般に、これらの
I/Oコマンドから関係データベースコマンドへのマッピングは、
ファイルを開く=トランザクションを開始する、パスネームを導出しファイル
を含む行の場所を突きとめる
ファイルへ書込む=更新する
ファイルから読出す=選択する
ファイルをロックする=ファイルに関連付けられた行をロックする
ファイル内へシークする=カウンタを更新する
ファイルを閉じる=トランザクションを完遂させる(Windows(R)OSファ
イルシステムプロトコルは、ファイルデータが書込まれる直前にディレクトリエ
ントリが完遂するよう要求する。他のプロトコルは要求しない。)
以下により詳細に説明するように、ファイルの内容を受ける前であってもファ
イルの名称を可視にすることを予期するファイルシステムもある。これらのファ
イルシステムの関連で、「ファイルを開く」I/Oコマンドは、名称を書込むた
めのトランザクションの開始、名称を書込むためのトランザクションの完遂、お
よび内容を書込むためのトランザクションの開始に対応する。The particular routines that implement the OS file API may vary from operating system to operating system, but typically include routines for performing the following operations: Open file, read from file, write to file, seek in file, lock file, and close file. In general, the mapping of these I / O commands to relational database commands is: open file = start transaction, derive pathname and locate line containing file Write to file = read from file to update = Lock the selected file = Lock the row associated with the file = Seek into the file = Update the counter = Close the file = Complete the transaction (Windows (R) OS file system protocol writes the file data Expects the directory entry to be completed just before it is populated (other protocols do not). Expect to make the name of the file visible even before receiving the contents of the file, as described in more detail below. Some file systems do. In the context of these file systems, the "Open File" I / O command is used to start a transaction to write a name, complete a transaction to write a name, and start a transaction to write content. Correspond.
【0070】
一実施例によれば、カウンタを用いてファイル内の「現在場所」が追跡される
。ファイルがBLOBとしてストアされる実施例において、カウンタはBLOB
の始めからオフセットの形態をとり得る。「ファイルを開く」コマンドが実行さ
れると、カウンタが作成され、問題のBLOBの実行開始アドレスを示す値に設
定される。BLOBのカウンタはこの後データがBLOBから読出されるかまた
はBLOBに書込まれることに応答して増分される。シークオペレーションは、
このシークオペレーションのパラメータにより指示されたBLOB内の場所を指
すようにカウンタを更新させる。一実施例によれば、これらのオペレーションは
、ノリ(Nori)他により1997年10月31日に出願され「LOBロケータ(
LOB LOCATORS)」と題された米国特許出願番号08/962,482号に記載さ
れるようなLOBロケータを用いることにより容易になり、この出願の全内容を
ここに引用により援用する。According to one embodiment, a counter is used to track the “current location” in the file. In the embodiment where the file is stored as BLOB, the counter is BLOB.
Can take the form of an offset from the beginning. When the "Open File" command is executed, a counter is created and set to a value indicating the execution start address of the BLOB in question. The BLOB counter is then incremented in response to data being read from or written to the BLOB. Seek operation
Update the counter to point to the location in the BLOB pointed to by the parameters of this seek operation. According to one embodiment, these operations were filed on October 31, 1997 by Nori et al. In "LOB Locator (
This is facilitated by the use of LOB locators as described in US patent application Ser. No. 08 / 962,482 entitled "LOB LOCATORS)", the entire contents of which are incorporated herein by reference.
【0071】
いくつかのオペレーティングシステムにおいて、OSのロックはファイルを閉
じても続く場合がある。この特徴をエミュレートするためには、ロックファイル
コマンドが、セッションロックのリクエストに変換される。この結果、「トラン
ザクションの完遂」がこのファイルを閉じるコマンドに応答して実行される場合
、そのファイルに関連付けられた行におけるロックは自動的に解除されない。こ
のように確立されたロックは、ファイルのロックを解除するコマンドに応答して
明示的に、またはロックが得られたデータベースセッションの終了に応答して自
動的に、のいずれかで解除される。In some operating systems, OS locks may continue even after closing a file. To emulate this feature, lockfile commands are translated into session lock requests. As a result, when "commit transaction" is performed in response to a command that closes this file, the lock on the row associated with that file is not automatically released. The lock thus established is released either explicitly in response to a command to unlock the file or automatically in response to the end of the database session in which the lock was acquired.
【0072】
進行中のI/Oオペレーション
あるファイルが作成されると、そのファイルが作成されるディレクトリはその
ファイルの存在を示すように更新される。いくつかのOSファイルシステムにお
いて、新たなファイルを示すようにディレクトリを変更することは、新たなファ
イルが完全に生成される前に完遂される。それらのOSファイルシステム用に設
計されたアプリケーションには、その特徴をうまく利用するものもある。たとえ
ば、あるアプリケーションは第1のファイルハンドルで新たなファイルを開き、
そのファイル中へのデータの書込みへと進み得る。データが書込まれている間、
同じアプリケーションが第2のファイルハンドルでそのファイルを開くことがで
きる。I / O Operation in Progress When a file is created, the directory in which the file is created is updated to indicate the existence of the file. In some OS file systems, changing the directory to point to a new file is accomplished before the new file is completely created. Some applications designed for those OS file systems make good use of that feature. For example, one application opens a new file with the first file handle,
You can proceed to write the data into the file. While the data is being written
The same application can open the file with a second file handle.
【0073】
この特徴をデータベース内でエミュレートすることには特殊な問題が伴う。と
いうのは、一般に、データベーストランザクションが完遂するまで、別のトラン
ザクションはそのトランザクションによりなされた変更を見ることができないか
らである。たとえば、第1のデータベーストランザクションが第1の「開く」コ
マンドに応答して開始されたとする。第1のトランザクションは特定のディレク
トリ中にファイルが存在することを示すようにディレクトリテーブルを更新し、
その後、ファイルを含む行を挿入するようにファイルテーブルを更新する。同じ
アプリケーションが発した第2の「開く」コマンドに応答して第2のデータベー
ストランザクションが開始されると、第2のデータベーストランザクションには
、ディレクトリテーブルに対する変更も、ファイルテーブル中の新たな行も、第
1のトランザクションが完遂するまで見えない。Emulating this feature in a database entails a special problem. This is because, in general, another transaction cannot see the changes made by that transaction until the database transaction completes. For example, assume that a first database transaction was initiated in response to a first "open" command. The first transaction updates the directory table to indicate that the file exists in a particular directory,
Then update the file table to insert the row containing the file. When a second database transaction is initiated in response to a second "open" command issued by the same application, the second database transaction will include changes to the directory table, new lines in the file table, Not visible until the first transaction completes.
【0074】
本発明の一実施例によれば、作成進行中のファイルのディレクトリエントリを
見る能力は、そのファイルに対する行をファイルテーブル中に挿入するのに用い
るトランザクションとは別のトランザクションとしてディレクトリテーブルの更
新を行なわせることにより、データベースシステム内でエミュレートされる。こ
のように、第1の開くコマンドに応答して、トランスレーションエンジン308
はデータベースコマンドを発し、(1)第1のトランザクションを開始させ、(
2)新たなファイルの存在を示すようにディレクトリテーブルを変更し、(3)
第1のトランザクションを完遂させ、(4)第2のトランザクションを開始させ
、(5)このファイルのある行をファイルテーブル中に挿入し、(6)第2のト
ランザクションを完遂させる。ディレクトリテーブルに対する変更をファイルテ
ーブルに対する変更とは別に完遂させることにより、第2の開くコマンドに応答
して開始される第3のトランザクションは、ファイルテーブル中への挿入がまだ
進行している間にディレクトリテーブル内のエントリを見ることができる。第2
のトランザクションに失敗すれば、このディレクトリは内容を持たずにファイル
のエントリとともに残されることになる。According to one embodiment of the present invention, the ability to see a directory entry for a file that is in the process of being created is a transaction in the directory table that is separate from the transaction used to insert a row for that file into the file table. It is emulated in the database system by causing the updates to occur. Thus, in response to the first open command, translation engine 308
Issues a database command to (1) start the first transaction,
2) Change the directory table to indicate the existence of the new file, (3)
Complete the first transaction, (4) start the second transaction, (5) insert a row of this file into the file table, and (6) complete the second transaction. By committing the changes to the directory table separately from the changes to the file table, a third transaction initiated in response to the second open command is a directory transaction while an insert into the file table is still in progress. You can see the entries in the table. Second
If the transaction fails, then this directory will be left with no file contents, along with an entry for the file.
【0075】
トランスレーションエンジン
本発明の一実施例によれば、トランスレーションエンジン308は2つの層で
設計される。これらの層は図4に示される。図4を参照して、トランスレーショ
ンエンジン308は、プロトコルサーバ層およびDBファイルサーバ408層を
含む。DBファイルサーバ408は、アプリケーションが代替的なAPI(ここ
ではDBファイルAPIと称す)を通じて、データベースサーバ204により管
理されるデータベースにストアされたデータにアクセスできるようにする。DB
ファイルAPIは、OSファイルAPIとデータベースAPIとの両方の局面を
組合せる。具体的には、DBファイルAPIは、従来のOSファイルAPIによ
りサポートされたものと同様のファイルオペレーションをサポートする。Translation Engine According to one embodiment of the invention, translation engine 308 is designed in two layers. These layers are shown in FIG. Referring to FIG. 4, translation engine 308 includes a protocol server layer and a DB file server 408 layer. The DB file server 408 allows applications to access data stored in the database managed by the database server 204 through an alternative API (referred to herein as the DB file API). DB
The file API combines aspects of both the OS file API and the database API. Specifically, the DB file API supports file operations similar to those supported by conventional OS file APIs.
【0076】
しかしながら、OSファイルAPIとは異なり、DBファイルAPIはトラン
ザクションのデータベースAPIの概念を組入れる。すなわち、DBファイルA
PIにより、アプリケーションが、ファイルオペレーションのセットが原子単位
で実行されることを特定できるようになる。トランザクションが行なわれたファ
イルシステムを有することの利点について、以下により詳細に述べる。However, unlike the OS file API, the DB file API incorporates the concept of a database API for transactions. That is, the DB file A
PIs allow applications to specify that a set of file operations is performed atomically. The advantages of having a transacted file system are described in more detail below.
【0077】
DBファイルサーバ
DBファイルサーバ408は、DBファイルAPIコマンドをデータベースコ
マンドに変換するという役割を担う。DBファイルサーバ408が受けたDBフ
ァイルAPIコマンドは、トランスレーションエンジン308のプロトコルサー
バ層から来るものであってもよく、または、DBファイルAPIを通じてコール
を発することによりファイルオペレーションを行なうよう特に設計されたアプリ
ケーション(たとえばアプリケーション410)から直接のものであってもよい
。DB File Server The DB file server 408 plays a role of converting a DB file API command into a database command. The DB file API commands received by the DB file server 408 may come from the protocol server layer of the translation engine 308, or are specifically designed to perform file operations by making calls through the DB file API. It may be directly from the application (eg application 410).
【0078】
一実施例によれば、DBファイルサーバ408はオブジェクト指向である。こ
のように、DBファイルサーバ408により供給されるルーチンがあるオブジェ
クトのインスタンス生成により、またそのオブジェクトに関連付けられた方法を
コールすることにより呼出される。ある実現例において、DBファイルサーバ4
08は次の方法を含む「トランザクション」オブジェクトクラスを規定する。挿
入、保存、更新、削除、完遂およびロールバック。DBファイルAPIは、外部
エンティティがこのトランザクションオブジェクトクラスのインスタンス生成を
行ない使用できるようにする、インターフェイスを提供する。According to one embodiment, the DB file server 408 is object oriented. Thus, the routines provided by the DB file server 408 are invoked by the instantiation of an object and by calling the method associated with that object. In a certain implementation, the DB file server 4
08 defines a "transaction" object class that includes the following methods: Insert, save, update, delete, commit and rollback. The DB file API provides an interface that allows external entities to instantiate and use this transaction object class.
【0079】
具体的には、外部エンティティ(たとえばアプリケーション410またはプロ
トコルサーバ)がDBファイルサーバ408のコールを行ないトランザクション
オブジェクトのインスタンスを生成すると、DBファイルサーバ408はデータ
ベースサーバ204に新たなトランザクションを始めさせるデータベースコマン
ドを送る。この外部エンティティはこの後トランザクションオブジェクトの方法
を呼出す。ある方法を呼出すことは、結果としてDBファイルサーバ408に対
するコールとなる。DBファイルサーバ408はこのコールに応答して、データ
ベースサーバ204に対応のデータベースコマンドを発する。所与のトランザク
ションオブジェクトの方法の呼出に応答して行なわれるデータベースオペレーシ
ョンはすべて、この所与のトランザクションオブジェクトに関連付けられたデー
タベーストランザクションの部分として行なわれる。Specifically, when an external entity (eg, application 410 or protocol server) makes a call to the DB file server 408 and creates an instance of a transaction object, the DB file server 408 causes the database server 204 to start a new transaction. Send a database command. This external entity then calls the method of the transaction object. Calling a method results in a call to the DB file server 408. In response to this call, the DB file server 408 issues a corresponding database command to the database server 204. All database operations performed in response to a method invocation of a given transaction object are performed as part of the database transaction associated with this given transaction object.
【0080】
重要なことには、ある単一のトランザクションオブジェクトに対して呼出され
た方法は複数のファイルオペレーションを伴う場合がある。たとえば、アプリケ
ーション410は以下のようにDBファイルサーバ408と対話し得る。アプリ
ケーション410は、DBファイルAPIを通じてコールすることによりトラン
ザクションオブジェクトTXO1のインスタンス生成を行なう。これに応答して
、DBファイルサーバ408は、データベースサーバ204内でトランザクショ
ンTX1を開始するデータベースコマンドを発する。アプリケーション410は
TXO1の更新方法を呼出し、データベースサーバ204により管理されるデー
タベース中にストアされたファイルF1を更新する。これに応答して、DBファ
イルサーバ408はデータベースサーバ204に、要求された更新をトランザク
ションTX1の部分として行なわせるデータベースコマンドを発する。アプリケ
ーション410はTXO1の更新方法を呼出し、データベースサーバ204によ
り管理されるデータベース中にストアされた第2のファイルF2を更新する。こ
れに応答して、DBファイルサーバ408は、データベースサーバ204に、要
求された更新をトランザクションTX1の部分として行なわせるデータベースコ
マンドを発する。この後アプリケーション410は、TXO1の完遂方法を呼出
す。これに応答して、DBファイルサーバ408は、データベースサーバ204
にTX1を完遂させるデータベースコマンドを発する。ファイルF2への更新に
失敗した場合、TXO1のロールバック方法が呼出され、ファイルF1の更新を
含む、TX1によりなされたすべての変更がロールバックされる。Importantly, the method invoked for a single transaction object may involve multiple file operations. For example, the application 410 may interact with the DB file server 408 as follows. The application 410 creates an instance of the transaction object TXO1 by calling it through the DB file API. In response, the DB file server 408 issues a database command that initiates transaction TX1 within the database server 204. The application 410 calls the TXO1 update method to update the file F1 stored in the database managed by the database server 204. In response, DB file server 408 issues a database command that causes database server 204 to perform the requested update as part of transaction TX1. The application 410 calls the update method of TXO1 to update the second file F2 stored in the database managed by the database server 204. In response, DB file server 408 issues a database command that causes database server 204 to perform the requested update as part of transaction TX1. After this, the application 410 calls the TXO1 completion method. In response to this, the DB file server 408 changes the database server 204
Issue a database command to complete TX1. If the update to file F2 fails, the rollback method of TXO1 is called to roll back all the changes made by TX1, including the update of file F1.
【0081】
ここではトランザクションオブジェクトを用いるDBファイルサーバを参照し
て技術が述べられてきたが、他の実現例も可能である。たとえば、DBファイル
サーバ内で、トランザクションではなくファイルを表わすのにオブジェクトを用
いることもできる。このような実現例において、ファイルオブジェクトの方法を
呼出すことにより、またオペレーションが実行されようとするトランザクション
を特定するデータをそれへ渡すことにより、ファイルオペレーションが行なわれ
得る。したがって、本発明は、オブジェクトクラスの何らかの特定のセットを実
現するDBファイルサーバに限定されない。Although the technique has been described herein with reference to a DB file server using transaction objects, other implementations are possible. For example, in the DB file server, objects can be used to represent files rather than transactions. In such an implementation, a file operation may be performed by invoking the method of the file object and passing to it data specifying the transaction in which the operation is to be performed. Therefore, the present invention is not limited to DB file servers that implement any particular set of object classes.
【0082】
説明の目的で、図4に表わす実施例は、データベースAPIを通じてデータベ
ースサーバ204と通信する処理実行外部データベースサーバ204としてDB
ファイルサーバ408を示す。しかしながら、代替的実施例によれば、DBファ
イルサーバ408の機能性はデータベースサーバ204に組込まれている。DB
ファイルサーバ408をデータベースサーバ204に組込むことにより、DBフ
ァイルシステムの使用中に生成される処理間通信の量が減じられる。DBファイ
ルサーバ408をデータベースサーバ204に組込むことにより作り出されるデ
ータベースサーバは、したがって、データベースサーバ204により管理される
データにアクセスするための2つの代替的なAPIを、すなわちDBファイルA
PIおよびデータベースAPI(SQL)を提供する。For purposes of illustration, the embodiment depicted in FIG. 4 uses a DB as the process executing external database server 204 that communicates with the database server 204 through the database API.
A file server 408 is shown. However, according to an alternative embodiment, the functionality of the DB file server 408 is incorporated into the database server 204. DB
Incorporating the file server 408 into the database server 204 reduces the amount of inter-process communication generated during use of the DB file system. The database server created by incorporating the DB file server 408 into the database server 204 thus provides two alternative APIs for accessing the data managed by the database server 204, namely DB file A.
Provides PI and database API (SQL).
【0083】
プロトコルサーバ
トランスレーションエンジン308のプロトコルサーバ層は、特定のプロトコ
ルとDBファイルAPIコマンド間での変換を行なうという役割を担う。たとえ
ば、プロトコルサーバ406aは、オペレーティングシステム304aから受け
たI/Oコマンドを、それがDBファイルサーバ408に送るDBファイルAP
Iコマンドに変換する。プロトコルサーバ406aはまた、DBファイルサーバ
408から受けたDBファイルAPIコマンドを、それがオペレーティングシス
テム304aに送るI/Oコマンドに変換する。Protocol Server The protocol server layer of the translation engine 308 is responsible for converting between specific protocols and DB file API commands. For example, the protocol server 406a sends the I / O command received from the operating system 304a to the DB file server 408 that sends the DB file AP.
Convert to I command. The protocol server 406a also translates DB file API commands received from the DB file server 408 into I / O commands that it sends to the operating system 304a.
【0084】
実際には、プロトコルとオペレーティングシステムとは1対1対応になってい
ない。むしろ、オペレーティングシステムの多くは1より多い数のプロトコルを
サポートし、またプロトコルの多くは、1より多い数のオペレーティングシステ
ムによりサポートされる。たとえば、単一のオペレーティングシステムが1つ以
上のネットワークファイルプロトコル(SMB、FTP、NFS)、Eメールプ
ロトコル(SMTP、IMAP4)、およびウェブプロトコル(HTTP)に対
して固有のサポートをもたらす場合もある。さらに、異なるオペレーティングシ
ステムがサポートするプロトコルのセット間にはオーバーラップがよく起こる。
しかしながら、例示の目的で、オペレーティングシステム304aがあるプロト
コルをサポートし、オペレーティングシステム304bが別のプロトコルをサポ
ートするという、単純化された環境が示される。In reality, there is no one-to-one correspondence between protocols and operating systems. Rather, many operating systems support more than one protocol, and many protocols are supported by more than one operating system. For example, a single operating system may provide unique support for one or more network file protocols (SMB, FTP, NFS), email protocols (SMTP, IMAP4), and web protocols (HTTP). Moreover, overlaps often occur between sets of protocols supported by different operating systems.
However, for purposes of illustration, a simplified environment is shown in which operating system 304a supports one protocol and operating system 304b supports another protocol.
【0085】
I/O API
上述したように、I/OコマンドをDBファイルコマンドに変換するためにプ
ロトコルサーバが用いられる。プロトコルサーバとそれらの通信相手のOSファ
イルシステムとの間のインターフェイスは、包括的にラベル付けされたI/O
APIである。しかしながら、あるプロトコルサーバにより与えられた特定のI
/O APIは、(1)プロトコルサーバの通信相手のエンティティおよび(2
)プロトコルサーバがいかにそのエンティティに現れるようにするか、にともに
依存する。たとえば、オペレーティングシステム304aはMicrosoft Windows
(R)NTであってもよく、プロトコルサーバ406aはMicrosoft Windows(
R)NTに対するデバイスドライバとして出現するよう設計されてもよい。この
状況下で、プロトコルサーバ406aによってオペレーティングシステム304
aに提示されたI/O APIは、Windows(R)NTにより理解されるデバイ
スインターフェイスのタイプとなるであろう。Windows(R)NTは、何らかの
ストレージ装置と通信するのと同じように、プロトコルサーバ406aと通信す
るとされる。プロトコルサーバ406aにストアされたファイルおよびそこから
検索されたファイルが実際にはデータベースサーバ204により保持されるデー
タベースにストアされまたそこから検索されているという事実は、Windows(R
)NTには完全にトランスペアレントである。I / O API As mentioned above, a protocol server is used to convert I / O commands into DB file commands. The interfaces between the protocol servers and their OS file system counterparts are comprehensively labeled I / O.
It is an API. However, the specific I provided by some protocol server
The / O API includes (1) the entity with which the protocol server communicates and (2
Both depend on how the protocol server is exposed to that entity. For example, operating system 304a is Microsoft Windows
(R) NT, and the protocol server 406a is Microsoft Windows (
R) may be designed to appear as a device driver for NT. Under this circumstance, the protocol server 406a causes the operating system 304 to
The I / O API presented in a will be the type of device interface understood by Windows (R) NT. Windows (R) NT is said to communicate with the protocol server 406a in the same way as it communicates with any storage device. The fact that the files stored in and retrieved from the protocol server 406a are actually stored in and retrieved from the database maintained by the database server 204 is due to the fact that Windows (R)
) Fully transparent to NT.
【0086】
トランスレーションエンジン308により用いられるいくつかのプロトコルサ
ーバがそれらのそれぞれのオペレーティングシステムにデバイスドライバインタ
ーフェイスを提示し得るのに対し、他のプロトコルサーバは他のタイプのエンテ
ィティとして出現し得る。たとえば、オペレーティングシステム304aはMicr
osoft Windows(R)NTオペレーティングシステムであってもよく、プロトコ
ルサーバ406aはそれ自身をデバイスドライバとして提示するのに対し、オペ
レーティングシステム304bはMicrosoft Windows(R)95オペレーティン
グシステムであって、プロトコルサーバ406bがそれ自身をシステムメッセー
ジブロック(SMB)サーバとして提示することもある。後者の場合、プロトコ
ルサーバ406bは、典型的にはオペレーティングシステム304bとは別のマ
シン上で実行していることになり、オペレーティングシステム304bとプロト
コルサーバ406bとの間の通信はネットワーク接続を介して起こることになる
。Some protocol servers used by translation engine 308 may expose device driver interfaces to their respective operating systems, while other protocol servers may appear as other types of entities. For example, operating system 304a is Micr
It may be the osoft Windows (R) NT operating system, where the protocol server 406a presents itself as a device driver, while the operating system 304b is the Microsoft Windows (R) 95 operating system and the protocol server 406b is It may also present itself as a system message block (SMB) server. In the latter case, protocol server 406b will typically be running on a machine separate from operating system 304b, and communication between operating system 304b and protocol server 406b will occur over a network connection. It will be.
【0087】
上記の例において、プロトコルサーバにより扱われるI/Oコマンドのソース
はOSファイルシステムである。しかしながら、トランスレーションエンジン3
08はOSファイルシステムのコマンドとともに用いることに限定されない。む
しろ、DBファイルコマンドと何らかのタイプのI/Oプロトコルとの間で変換
を行なうために、プロトコルサーバが設けられ得る。OSファイルシステムによ
り用いられるI/Oプロトコル以外にも、プロトコルサーバがそれに対して設け
られ得る他のプロトコルとしては、たとえば、ファイル転送プロトコル(FTP
:File Transfer Protocol)や、電子メールシステム(POP3またはIMAP
4)により用いられるプロトコルが挙げられる。In the above example, the source of the I / O command handled by the protocol server is the OS file system. However, translation engine 3
08 is not limited to use with the command of the OS file system. Rather, a protocol server may be provided to translate between DB file commands and some type of I / O protocol. Besides the I / O protocol used by the OS file system, other protocols with which a protocol server may be provided include, for example, the File Transfer Protocol (FTP).
: File Transfer Protocol, e-mail system (POP3 or IMAP)
The protocol used by 4) is mentioned.
【0088】
OSファイルシステムとともに働くプロトコルサーバにより提供されるインタ
ーフェイスが特殊なOSにより指示されるのと同様、非OSファイルシステムと
ともに働くプロトコルサーバにより提供されるインターフェイスは、I/Oコマ
ンドを発するであろうエンティティに基づいて変化することになる。たとえば、
FTPプロトコルに従ってI/Oコマンドを受けるように構成されたプロトコル
サーバは、FTPサーバのAPIを提供するであろう。同様に、HTTPプロト
コル、POP3プロトコルおよびIMAP4プロトコルに従ってI/Oコマンド
を受けるように構成されたプロトコルサーバは、それぞれ、HTTPサーバ、P
OP3サーバおよびIMAP4サーバのAPIを提供するであろう。An interface provided by a protocol server working with a non-OS file system will issue I / O commands, as well as an interface provided by a protocol server working with an OS file system being directed by a special OS. It will change based on the Deaf entity. For example,
A protocol server configured to receive I / O commands according to the FTP protocol will provide the FTP server's API. Similarly, protocol servers configured to receive I / O commands according to the HTTP, POP3 and IMAP4 protocols are respectively HTTP server, P
It will provide APIs for OP3 and IMAP4 servers.
【0089】
OSファイルシステムと同様、非OSファイルプロトコルの各々は、そのファ
イルに対して保持される特定の属性を予測する。たとえば、ほとんどのOSファ
イルシステムが、あるファイルの最終変更日を示すデータをストアするのに対し
、電子メールシステムは各Eメールメッセージに対して、そのEメールメッセー
ジが読まれたか否かを示すデータをストアする。特定のプロトコルの各々に対す
るプロトコルサーバは、そのプロトコルのセマンティクスが確実にデータベース
ファイルシステム中でエミュレートされるために要求される論理を実現する。Like the OS file system, each non-OS file protocol predicts the particular attributes held for that file. For example, most OS file systems store data indicating the last modified date of a file, while email systems indicate for each email message whether the email message was read or not. To store. The protocol server for each particular protocol implements the logic required to ensure that the semantics of that protocol are emulated in the database file system.
【0090】
トランザクション処理されたファイルシステム
データベースシステム内で、オペレーションは一般にトランザクションの部分
として行なわれる。データベースシステムは、あるトランザクションの部分であ
るオペレーションのすべてを単一の原子操作(atomic operation)として行なう
。すなわち、オペレーションのすべてがうまく完了するか、またはオペレーショ
ンのいずれも実行されないか、のいずれかである。トランザクションの実行中、
あるオペレーションが実行され得なければ、そのトランザクションの以前実行さ
れたオペレーションがすべて取消されるか、または「ロールバックされる」。Transacted File System Within a database system, operations are generally performed as part of a transaction. Database systems perform all of the operations that are part of a transaction as a single atomic operation. That is, either all of the operations complete successfully, or none of the operations execute. During the execution of a transaction,
If an operation cannot be executed, then all previously executed operations of the transaction are canceled or "rolled back".
【0091】
データベースシステムとは対照的に、OSファイルシステムはトランザクショ
ンに基づくものではない。したがって、大規模なファイルオペレーションに失敗
すれば、そのオペレーションのうちその失敗以前に実行された部分は残る。不完
全なファイルオペレーションを取消すことに失敗すると、ディレクトリ構造およ
びファイルの破損につながるおそれがある。In contrast to database systems, OS file systems are not transaction based. Therefore, if a large file operation fails, the portion of the operation that was executed before the failure remains. Failure to undo incomplete file operations can lead to directory structure and file corruption.
【0092】
本発明の一局面によれば、トランザクション処理されたファイルシステムが設
けられる。上述したように、トランスレーションエンジン308はI/Oコマン
ドをデータベースサーバ204に送られるデータベースステートメントへとコン
バートする。特定されたI/Oオペレーションを実行するためにトランスレーシ
ョンエンジン308によって送られた一連のステートメントは、トランザクショ
ン開始(begin transaction)ステートメントにより先行され、トランザクショ
ン終了(close transaction)ステートメントで終わる。結果として、データベ
ースサーバ204によるそれらのステートメントの実行中に何らかの失敗が起こ
れば、そのトランザクションの部分としてデータベースサーバ204によりなさ
れる変更はすべてその失敗の時点までロールバックされることになる。According to one aspect of the present invention, a transaction processed file system is provided. As described above, translation engine 308 converts I / O commands into database statements sent to database server 204. The series of statements sent by translation engine 308 to perform the identified I / O operation is preceded by a begin transaction statement and ends with a close transaction statement. As a result, if any failure occurs during execution of those statements by database server 204, all changes made by database server 204 as part of that transaction will be rolled back to the time of the failure.
【0093】
トランザクションの失敗を引起す事態は、I/Oコマンドの発生元のシステム
に基づいて変化し得る。たとえば、OSファイルシステムは署名の概念をサポー
トすることができ、ここであるファイルのソースを特定するデジタル「署名」は
そのファイルに付加される。署名されたファイルをストアするために開始された
トランザクションは、たとえば、そのストアされているファイルの署名が予測ど
おりの署名でない場合、失敗するおそれがある。The circumstances that cause a transaction to fail can vary based on the system from which the I / O command originated. For example, the OS file system may support the concept of signatures, where a digital "signature" identifying the source of a file is attached to the file. A transaction initiated to store a signed file may fail, for example, if the stored file signature is not as expected.
【0094】
オンザフライ・インテリジェントファイルのコンバート
本発明の一実施例によれば、ファイルは、関係データベースに挿入される前に
処理され、それらがその関係データベースから検索されると再び処理される。図
9はインバウンドおよびアウトバウンドのファイル処理を行なうのに用いられる
DBファイルサーバ308の機能的構成要素を示すブロック図である。On-the-Fly Intelligent File Conversion According to one embodiment of the present invention, files are processed before being inserted into a relational database and again when they are retrieved from that relational database. FIG. 9 is a block diagram showing the functional components of the DB file server 308 used to perform inbound and outbound file processing.
【0095】
図9を参照して、トランスレーションエンジン308は、レンダリングユニッ
ト904およびパーシングユニット902を含む。一般に、パーシングユニット
902は、ファイルのインバウンド処理を行なう役割を担い、レンダリングユニ
ット904はファイルのアウトバウンド処理を行なう役割を担う。これらの機能
的ユニットの各々について、ここでより詳細に述べることにする。Referring to FIG. 9, the translation engine 308 includes a rendering unit 904 and a parsing unit 902. In general, the parsing unit 902 is responsible for inbound processing of files and the rendering unit 904 is responsible for outbound processing of files. Each of these functional units will now be described in more detail.
【0096】
インバウンドのファイル処理
インバウンドのファイルは、DBファイルAPIを介してDBファイルサーバ
408に渡される。インバウンドのファイルを受取ると、パーシングユニット9
02はそのファイルのファイルタイプを特定し、その後、そのファイルタイプに
基づいてそのファイルをパーシングする。パーシング処理中、パーシングユニッ
ト902はパーシングされているファイルから構造化された情報を抽出する。こ
の構造化された情報とは、たとえば、パーシングされているファイルについての
情報、またはこのファイルの論理的に別個の構成要素もしくはフィールドを表わ
すデータを含み得る。この構造化情報は、構造化情報の発生元のファイルととと
もにデータベース中にストアされる。その後、データベースサーバに対してクエ
リが出され、このように抽出された構造化情報が特定のサーチ条件を満たすか否
かに基づいてファイルを選択かつ検索し得る。Inbound File Processing The inbound file is passed to the DB file server 408 via the DB file API. When you receive an inbound file, the parsing unit 9
02 identifies the file type of the file and then parses the file based on the file type. During the parsing process, parsing unit 902 extracts structured information from the file being parsed. This structured information may include, for example, information about the file being parsed, or data representing logically distinct components or fields of this file. This structured information is stored in the database along with the file from which the structured information originated. The database server may then be queried to select and retrieve files based on whether the structured information thus extracted meets certain search conditions.
【0097】
ある文書のパーシングを行なうためにパーシングユニット902により用いら
れる特定の技術、およびそれにより生成される構造化されたデータは、パーシン
グユニット902に渡された文書のタイプに基づいて変化することになる。した
がって、何らかのパーシングオペレーションを行なう前に、パーシングユニット
902はこの文書のファイルタイプを特定する。あるファイルのファイルタイプ
を決定するには、さまざまな要因が考慮され得る。たとえば、DOSまたはWind
ows(R)のオペレーティングシステムでは、あるファイルのファイルタイプは
、そのファイルのファイル名中の拡張子により示されることが多い。すなわち、
ファイル名が「.txt」で終わる場合、パーサユニット902はそのファイル
をテキストファイルであると分類し、テキストファイル特有のパーシング技術を
そのファイルに与える。同様に、ファイル名が「.doc」で終わる場合は、パ
ーサユニット902はそのファイルをMicrosoft Word文書であると分類し、Micr
osoft Word特有のパーシング技術をそのファイルに与える。これに対して、Maci
ntoshオペレーティングシステム(Macintosh Operating System)は、あるファ
イルに対するファイルタイプ情報をそのファイルとは別に保持される属性として
ストアする。The particular technique used by parsing unit 902 to perform parsing of a document, and the structured data it produces, may vary based on the type of document passed to parsing unit 902. become. Therefore, before performing any parsing operation, parsing unit 902 identifies the file type of this document. Various factors may be considered in determining the file type of a file. For example, DOS or Wind
In the ows (R) operating system, the file type of a file is often indicated by the extension in the file name of the file. That is,
If the file name ends in ".txt", the parser unit 902 classifies the file as a text file and gives the file a parsing technique specific to the text file. Similarly, if the file name ends in ".doc", the parser unit 902 classifies the file as a Microsoft Word document, and Micr
Gives the file a parsing technique specific to osoft Word. On the other hand, Maci
The ntosh operating system stores file type information for a file as an attribute held separately from the file.
【0098】
あるファイルのファイルタイプを決定するためにパーシングユニット902が
考慮し得る他の因子として、たとえば、そのファイルが位置付けられるディレク
トリが挙げられる。したがって、パーサユニット902は、WordPerfect文書と
して\WordPerfect\文書ディレクトリにストアされるすべてのファイルを、そ
れらのファイルのファイル名にかかわらず、分類およびパーシングするよう構成
され得る。Another factor that parsing unit 902 may consider to determine the file type of a file is, for example, the directory in which the file is located. Accordingly, parser unit 902 may be configured to classify and parse all files stored in the \ WordPerfect \ Documents directory as WordPerfect documents, regardless of their file names.
【0099】
これに代えて、インバウンドのファイルのファイルタイプとリクエスト元のエ
ンティティが要求するファイルタイプとの両者が、DBファイルサーバ408に
対して提供される情報によって特定されるかまたはそれを通じて推定される場合
もある。たとえば、あるウェブブラウザがメッセージを送る場合、そのメッセー
ジは典型的にはそのブラウザについての情報(たとえばブラウザのタイプ、バー
ジョンなど)を含む。あるウェブブラウザがHTTPプロトコルサーバを通じて
あるファイルをリクエストする場合、この情報はDBファイルサーバ408に伝
達される。この情報に基づいて、レンダリングユニット904はそのブラウザの
能力(capability)についての情報を調べ、またそれらの能力から最良のファイ
ルタイプを推定してブラウザへ運ぶこともできる。Alternatively, both the file type of the inbound file and the file type requested by the requesting entity are identified by or inferred from the information provided to the DB file server 408. There are also cases. For example, when a web browser sends a message, the message typically includes information about the browser (eg, browser type, version, etc.). When a web browser requests a file through the HTTP protocol server, this information is communicated to the DB file server 408. Based on this information, the rendering unit 904 can look up information about the capabilities of the browser and also infer the best file type from those capabilities and deliver it to the browser.
【0100】
上述したように、パーシングユニット902により用いられる特定のパーシン
グ技術、およびこのように生成された構造化データのタイプは、パーシングされ
ているファイルのタイプに基づいて変化することになる。たとえば、パーシング
ユニット902により生成された構造化データは、埋込メタデータ、導出(deri
ved)メタデータおよびシステムメタデータを含み得る。埋込メタデータはファ
イル自体に埋込まれた情報である。導出メタデータは、ファイル内に含まれてお
らずそのファイルを解析することにより導出され得る情報である。システムメタ
データは、ファイルの発生元のシステムにより提供されたファイルについてのデ
ータである。As mentioned above, the particular parsing technique used by parsing unit 902, and the type of structured data thus generated, will vary based on the type of file being parsed. For example, the structured data generated by parsing unit 902 may be embedded metadata, derivation (deri
ved) metadata and system metadata. Embedded metadata is information embedded in the file itself. Derived metadata is information that is not included in a file and can be derived by parsing the file. System metadata is data about a file provided by the system from which the file originated.
【0101】
たとえば、アプリケーション410がMicrosoft Word文書をパーシングユニッ
ト902に渡すとする。パーシングユニット902はその文書をパーシングして
そのファイル内に埋込まれているファイルについての情報を抽出する。Microsof
t Word文書に埋込まれる情報としては、たとえば、文書の作者、文書が割当てら
れるカテゴリ、および文書についてのコメントを示すデータが挙げられる。For example, assume that application 410 passes a Microsoft Word document to parsing unit 902. Parsing unit 902 parses the document to extract information about files embedded within the file. Microsof
Information embedded in a tWord document includes, for example, the author of the document, the category to which the document is assigned, and data indicating comments about the document.
【0102】
Word文書についての埋込情報の場所を突きとめ抽出するのに加えて、パーサ9
02はその文書についての情報の導出もし得る。たとえば、パーサ902はこの
Word文書をスキャンしてこの文書に含まれるページ数、段落数および語数を決定
し得る。最後に、この文書が発生したシステムは、この文書のサイズ、作成日、
最終変更日、およびファイルタイプを示すデータをパーシングユニット902に
供給し得る。In addition to locating and extracting embedded information for Word documents, parser 9
02 may also derive information about the document. For example, parser 902
A Word document may be scanned to determine the number of pages, paragraphs and words contained in this document. Finally, the system on which this document originated is
Data indicating the last modified date and file type may be provided to the parsing unit 902.
【0103】
ある文書のファイルタイプがより構造化されるほど、この文書から構造化され
たデータの特定のアイテムを抽出しやすくなる。たとえば、HTML文書は典型
的には、特定のフィールド(タイトル、ヘッディング1、ヘッディング2など)
の初めと終わりとを特定するデリミタまたは「タグ」を有する。これらのデリミ
タはパーシングユニット902により用いられ、HTML文書をパーシングする
ことによって、区切られたフィールドのいくつかまたはすべてに対してメタデー
タのアイテムをもたらし得る。同様に、XMLファイルは高度に構造化されてお
り、XMLパーサはXML文書中に含まれるフィールドのいくつかまたはすべて
に対するメタデータの別のアイテムを抽出することができるであろう。The more structured the file type of a document, the easier it is to extract a particular item of structured data from this document. For example, HTML documents typically have specific fields (title, heading 1, heading 2, etc.).
It has a delimiter or "tag" that identifies the beginning and end of the. These delimiters may be used by parsing unit 902 to parse an HTML document, resulting in an item of metadata for some or all of the delimited fields. Similarly, XML files are highly structured, and an XML parser could extract another item of metadata for some or all of the fields contained in the XML document.
【0104】
一旦あるファイルに対してパーシングユニット902が構造化データを生成し
ていれば、DBファイルサーバ408はデータベースサーバ204にデータベー
スコマンドを発し、そのファイルをファイルテーブル(たとえばファイルテーブ
ル710)のある行に挿入させる。一実施例によれば、このように発せられたデ
ータベースコマンドはこのファイルをその行のある欄におけるBLOBとしてス
トアし、そのファイルについて生成された構造化データのさまざまなアイテムを
同じ行の他の欄にストアする。Once the parsing unit 902 has created structured data for a file, the DB file server 408 issues a database command to the database server 204 to place the file in the file table (eg file table 710). Insert into a line. According to one embodiment, a database command issued in this manner stores this file as a BLOB in one column of that row and stores various items of structured data generated for that file in other columns of the same row. Store at.
【0105】
これに代えて、あるファイルに対する構造化データアイテムのいくつかまたは
すべてをファイルテーブルの外部にストアすることもできる。このような状況下
で、あるファイルに関連付けられた構造化データをストアする行は、そのファイ
ルを特定するデータを典型的に含むことになる。たとえば、Word文書がファイル
テーブルの行R20にストアされ、そのWord文書に対するシステムメタデータ(
たとえば作成日、変更日など)がシステム属性テーブルの行R34にストアされ
ると想定する。このような状況において、ファイルテーブルのR20およびシス
テム属性テーブルのR34の両者が典型的にはWord文書に対する固有の識別子を
ストアするFileID欄を含むことになる。それから、クエリにより、ファイルテー
ブル中の行とシステム属性テーブル中の行とをFileID値に基づいて結合する結合
ステートメントを発することで、そのファイルとそのファイルについてのシステ
ムメタデータとの両方を検索することができる。ファイル「クラス」に関連付け
られたテーブル中のファイル属性をストアするための技術について以下により詳
細に説明する。Alternatively, some or all of the structured data items for a file may be stored outside the file table. Under these circumstances, a row that stores structured data associated with a file will typically include data that identifies the file. For example, a Word document is stored in row R20 of the file table, and the system metadata (
Assume that the creation date, modification date, etc.) is stored in row R34 of the system attribute table. In such a situation, both R20 of the file table and R34 of the system attribute table will typically include a FileID field that stores a unique identifier for the Word document. Then, the query retrieves both the file and the system metadata about the file by issuing a join statement that joins the row in the file table and the row in the system attribute table based on the FileID value. You can Techniques for storing file attributes in a table associated with a file "class" are described in more detail below.
【0106】
アウトバウンドのファイル処理
アウトバウンドのファイルは、データベースサーバ204に送られたデータベ
ースコマンドに応答して検索される情報に基づいてレンダリングユニット904
により構築される。一旦構築されると、アウトバウンドのファイルはDBファイ
ルAPIを通じてそれをリクエストしたエンティティへと運ばれる。Outbound File Processing Outbound files are rendered by the rendering unit 904 based on information retrieved in response to database commands sent to the database server 204.
Is built by. Once constructed, the outbound file is delivered to the entity requesting it through the DB file API.
【0107】
重要なことには、レンダリングユニット904により生じたアウトバウンドフ
ァイルのファイルタイプ(ターゲットファイルタイプ)は、必ずしもそのアウト
バウンドファイルを構築するのに用いられたデータを生じたファイルと同じファ
イルタイプ(ソースファイルタイプ)でなくてもよい。たとえば、レンダリング
ユニット904はもともとデータベース内にWordファイルとしてストアされてい
たデータに基づいてテキストファイルを構築し得る。Importantly, the file type (target file type) of the outbound file produced by the rendering unit 904 is not necessarily the same file type (source file) that produced the data used to build the outbound file. File type). For example, rendering unit 904 may build a text file based on the data originally stored as a Word file in the database.
【0108】
さらに、アウトバウンドファイルを要求するエンティティは、そのアウトバウ
ンドファイルが構築されるもとのファイルを生じたエンティティとは全く別のプ
ロトコルを用いて全く別のプラットフォーム上にあってもよい。たとえば、プロ
トコルサーバ406bがIMAP4サーバインターフェイスを実現し、プロトコ
ルサーバ406aがHTTPサーバインターフェイスを実現する場合を想定する
。これらの状況下で、Eメールアプリケーションから発生するEメール文書はプ
ロトコルサーバ406bを通じてデータベース内にストアされ、プロトコルサー
バ406aを通じてWebブラウザによりデータベースから検索され得る。この筋
書きでは、パーシングユニット902がこのEメールのファイルタイプ(たとえ
ばRFC822)に関連付けられたパーシング技術を呼出し、レンダリングユニ
ットがデータベースから検索されたEメールデータからHTML文書を構築する
レンダリングルーチンを呼出すであろう。Further, the entity requesting the outbound file may be on a completely different platform using a completely different protocol than the entity that originated the file from which the outbound file was constructed. For example, assume that the protocol server 406b implements the IMAP4 server interface and the protocol server 406a implements the HTTP server interface. Under these circumstances, email documents originating from the email application may be stored in the database through protocol server 406b and retrieved from the database by a web browser through protocol server 406a. In this scenario, parsing unit 902 calls the parsing technique associated with this email file type (eg, RFC 822), and the rendering unit calls a rendering routine that builds an HTML document from the email data retrieved from the database. Let's do it.
【0109】
パーサおよびレンダラの登録
上述したように、あるファイルに施されるパーシング技術はそのファイルのタ
イプにより指示される。同様に、あるファイルに施されるレンダリング技術はそ
のファイルのソースタイプとそのファイルのターゲットタイプとの両者により指
示される。すべてのコンピュータプラットホームにわたって存在するファイルタ
イプの数は莫大である。したがって、すべての公知のファイルタイプを扱うパー
シングユニット902を築くのも、ファイルタイプからファイルタイプへのすべ
ての可能なコンバートを扱うレンダリングユニット904を築くのも実用的でな
い。Registering Parsers and Renderers As mentioned above, the parsing technique applied to a file is dictated by the type of the file. Similarly, the rendering technique applied to a file is dictated by both the source type of the file and the target type of the file. The number of file types that exist across all computer platforms is huge. Therefore, it is not practical to build a parsing unit 902 that handles all known file types or a rendering unit 904 that handles all possible file type-to-file type conversions.
【0110】
本発明の一実施例によれば、ファイルタイプの急増により引き起こされる問題
は、タイプ特有のパーシングモジュールをパーシングユニット902に登録可能
にすることにより、またタイプ特有のレンダリングモジュールをレンダリングユ
ニット904に登録可能にすることにより、対処される。タイプ特有のパーシン
グモジュールとは、ある特定のファイルタイプに対してパーシング技術を実現す
るモジュールのことである。たとえば、Word文書は、Word文書パーシングモジュ
ールを用いてパーシングされるのに対し、POP3のEメール文書はPOP3
Eメールパーシングモジュールを用いてパーシングされる。According to one embodiment of the present invention, the problem caused by the proliferation of file types is that the type-specific parsing module can be registered in the parsing unit 902, and the type-specific rendering module can also be rendered in the rendering unit 904. It will be dealt with by allowing registration in. A type-specific parsing module is a module that implements parsing technology for a particular file type. For example, Word documents are parsed using the Word document parsing module, while POP3 email documents are POP3.
It is parsed using the email parsing module.
【0111】
タイプ特有のパーシングモジュールと同様、タイプ特有のレンダリングモジュ
ールとは、1つ以上のソースファイルタイプに関連付けられたデータを1つ以上
のターゲットファイルタイプにコンバートするための技術を実現するモジュール
のことである。たとえば、タイプ特有のレンダリングモジュールは、Word文書を
テキスト文書にコンバートするために設けられ得る。Similar to the type-specific parsing module, the type-specific rendering module is a module that implements techniques for converting data associated with one or more source file types into one or more target file types. That is. For example, a type-specific rendering module can be provided to convert a Word document into a text document.
【0112】
ソースファイルタイプとターゲットファイルタイプとが同じであってもコンバ
ートが必要となる場合もある。たとえば、パーシングされデータベース内に挿入
されると、XML文書の内容は単一のBLOBには保持されず、多数のテーブル
の多数の欄にわたって広がり得る。その場合は、たとえそのデータがもはやXM
Lファイルとしてストアされていなくとも、XMLがそのデータのソースファイ
ルタイプである。タイプ特有のレンダリングモジュールは、そのデータからXM
L文書を構築するために設けられ得る。Conversion may be necessary even if the source file type and the target file type are the same. For example, when parsed and inserted into the database, the content of the XML document is not kept in a single BLOB but can span multiple columns in multiple tables. In that case, even if the data is XM
XML is the source file type for that data, even if it is not stored as an L file. The type-specific rendering module uses the data to generate XM
It can be provided to build an L document.
【0113】
パーシングユニット902がインバウンドのファイルを受けると、パーシング
ユニット902はそのファイルのファイルタイプを決定し、タイプ特有のパーシ
ングモジュールがそのファイルタイプに対して登録されているか否かを判定する
。タイプ特有のパーシングモジュールがそのファイルタイプに登録されていれば
、パーシングユニット902はそのタイプ特有のパーシングモジュールにより与
えられたパーシングルーチンをコールする。それらのパーシングルーチンはイン
バウンドファイルをパーシングしてメタデータを生成し、このメタデータはこの
後そのファイルとともにデータベース内にストアされる。タイプ特有のパーシン
グモジュールがそのファイルタイプに対して登録されていなければ、パーシング
ユニット902はエラーを生じるか、あるいは汎用のパーシング技術をそのファ
イルに施し得る。この汎用のパーシング技術にはファイルの内容についての知識
が何もないので、そのファイルに対して生成できる有用なメタデータに関してこ
の汎用のパーシング技術が制限されることになる。When parsing unit 902 receives an inbound file, parsing unit 902 determines the file type of the file and determines whether a type-specific parsing module is registered for that file type. If a type-specific parsing module is registered for the file type, parsing unit 902 calls the parsing routine provided by the type-specific parsing module. The parsing routines parse the inbound file to generate metadata, which is then stored with the file in the database. If a type-specific parsing module is not registered for that file type, parsing unit 902 will either generate an error or can apply general-purpose parsing techniques to the file. This general purpose parsing technique has no knowledge of the contents of the file, which limits the general purpose parsing technique as to the useful metadata that can be generated for the file.
【0114】
レンダリングユニット904がファイルリクエストを受けると、レンダリング
ユニット904はデータベースコマンドを発し、そのファイルに関連付けられる
データを検索する。そのデータは、ファイルのソースファイルタイプを示すメタ
データを含む。レンダリングユニット904はこの後、タイプ特有のレンダリン
グモジュールがそのソースファイルタイプに対して登録されているか否かを判定
する。タイプ特有のレンダリングモジュールがそのソースファイルタイプに対し
て登録されていれば、そのタイプ特有のレンダリングモジュールにより与えられ
たレンダリングルーチンを呼出してファイルを構築し、こうして構築されたファ
イルを、そのファイルをリクエストしているエンティティへ与える。When rendering unit 904 receives a file request, rendering unit 904 issues a database command to retrieve the data associated with that file. The data includes metadata that indicates the source file type of the file. Rendering unit 904 then determines whether a type-specific rendering module is registered for that source file type. If a type-specific rendering module is registered for that source file type, call the rendering routine provided by that type-specific rendering module to build the file and request the file thus constructed. Give to the entity that is doing.
【0115】
タイプ特有のレンダリングモジュールによってどのターゲットファイルタイプ
を選択すべきかを決定するためにさまざまな因子が用いられ得る。ファイルをリ
クエストしているエンティティが、それが要求するファイルのタイプを明示的に
示す場合もある。たとえばテキスト編集者はテキストファイルのみ扱うことがで
きる。テキスト編集者はソースファイルタイプがWord文書であるファイルをリク
エストできる。このリクエストに応答して、Word特有のレンダリングモジュール
が呼出され、これが、要求されたターゲットファイルタイプに基づいて、このWo
rd文書をテキストファイルにコンバートする。このテキストファイルはその後テ
キスト編集者へ運ばれる。Various factors may be used to determine which target file type should be selected by the type-specific rendering module. The entity requesting the file may also explicitly indicate the type of file it requires. For example, text editors can only work with text files. A text editor can request a file whose source file type is a Word document. In response to this request, a Word-specific rendering module is called which, based on the requested target file type, this Wo
Convert the rd document to a text file. This text file is then transported to the text editor.
【0116】
他には、ファイルをリクエストしているエンティティが多数のファイルタイプ
をサポートし得る場合もある。一実施例によれば、タイプ特有のレンダリングモ
ジュールは、(1)リクエスト元のエンティティとタイプ特有のレンダリングモ
ジュールとの両者によりサポートされるファイルタイプのセットを特定し、(2
)そのセットにおいて最良のターゲットファイルタイプを選択する、という論理
を組込む。この最良のターゲットファイルの選択には、問題のファイル特有の特
徴を含む、さまざまな因子を考慮に入れることができる。In other cases, the entity requesting the file may support multiple file types. According to one embodiment, the type-specific rendering module identifies (1) a set of file types supported by both the requesting entity and the type-specific rendering module;
) Incorporate the logic of choosing the best target file type in the set. This selection of the best target file can take into account various factors, including the file-specific characteristics of the file in question.
【0117】
たとえば、(1)DBファイルサーバ408があるファイルに対するリクエス
トを受け、(2)そのファイルのソースファイルタイプがそのファイルは「BM
P」イメージであると示し、(3)このリクエストが「GIF」、「TIF」お
よび「JPG」イメージをサポートするエンティティにより開始されており、(
4)BMPソースタイプ特有のレンダリングモジュールが「GIF」、「JPG
」および「PCX」のターゲットファイルタイプをサポートする、と仮定する。
このような状況下で、BMPソースタイプ特有のレンダリングモジュールは、「
GIF」および「JPG」の両者が可能性のあるターゲットファイルタイプであ
ると決定する。これら2つの可能性のあるターゲットファイルタイプから選択す
るために、BMPソースタイプ特有のレンダリングモジュールは、そのファイル
についての情報(その解像度および色の深みを含む)を考慮に入れ得る。この情
報に基づいて、BMPソースタイプ特有のレンダリングモジュールはJPGが最
良のターゲットファイルタイプであると決定でき、このBMPファイルをJPG
ファイルにコンバートするよう進むことができる。その結果生じるJPGファイ
ルはこの後、リクエスト元のエンティティに運ばれる。For example, (1) the DB file server 408 receives a request for a file, and (2) the source file type of the file is “BM
(3) this request is initiated by an entity that supports "GIF", "TIF" and "JPG" images, and (3)
4) Rendering modules specific to BMP source type are "GIF", "JPG"
, And "PCX" target file types.
Under these circumstances, the BMP source type specific rendering module
Both GIF "and" JPG "are possible target file types. To select from these two possible target file types, the BMP source type specific rendering module may take into account information about the file, including its resolution and color depth. Based on this information, the BMP source type specific rendering module can determine that JPG is the best target file type, and this BMP file is
You can proceed to convert to a file. The resulting JPG file is then carried to the requesting entity.
【0118】
一実施例によれば、タイプ特有のパーシングおよびレンダリングモジュールは
、データベーステーブルにモジュールの能力を示す情報をストアすることにより
登録される。たとえば、タイプ特有のレンダリングモジュールに対するエントリ
は、ソースファイルタイプがXMLでありリクエスト元のエンティティがWindow
s(R)に基づいたWebブラウザである場合に用いるべきであることを示し得る。
タイプ特有のパーシングモジュールに対するエントリは、ソースファイルタイプ
が.GIFイメージである場合にそれを用いるべきであるということを示し得る。According to one embodiment, type-specific parsing and rendering modules are registered by storing in a database table information indicating the capabilities of the module. For example, an entry for a type-specific rendering module might be that the source file type is XML and the requesting entity is Window.
It may indicate that it should be used if it is an s (R) based web browser.
The entry for the type-specific parsing module may indicate that the source file type should be used if it is a .GIF image.
【0119】
DBファイルサーバ408がDBファイルAPIを通じてあるファイルに関係
するコマンドを受けると、DBファイルサーバ408は発生時のファイルタイプ
と、そのコマンドを発したエンティティのアイデンティティとを決定する。DB
ファイルサーバ408はこの後データベースサーバ204にデータベースコマン
ドを発し、これによってデータベースサーバ204に、登録されたモジュールの
テーブルをスキャンさせ、現状で用いるのに適切なモジュールを選択させる。イ
ンバウンドのファイルの場合、適切なパーシングモジュールが呼出され、データ
ベースに挿入される前にファイルをパーシングする。アウトバウンドのファイル
の場合、適切なレンダリングモジュールが呼出され、データベースから検索され
たデータからアウトバウンドのファイルを構築する。When the DB file server 408 receives a command related to a file through the DB file API, the DB file server 408 determines the file type at the time of occurrence and the identity of the entity issuing the command. DB
The file server 408 then issues a database command to the database server 204, which causes the database server 204 to scan the table of registered modules and select the appropriate module for the current use. For inbound files, the appropriate parsing module is called to parse the file before inserting it into the database. For outbound files, the appropriate rendering module is called to build the outbound file from the data retrieved from the database.
【0120】
本発明のある実施例によれば、DBファイルシステムにより、オブジェクト指
向技術を用いてファイルのクラスを規定することが可能になり、ここで各ファイ
ルタイプは1つのファイルクラスに属し、ファイルクラスは他のファイルクラス
からの属性を継承することができる。このようなシステムにおいて、あるファイ
ルのファイルクラスはそのファイルに対する適切なパーサおよびレンダラを決定
するのに用いられる因子となり得る。ファイルクラスの使用については以下によ
り詳細に述べることにする。According to an embodiment of the present invention, a DB file system allows object classes to be used to define a class of files, where each file type belongs to one file class and Classes can inherit attributes from other file classes. In such a system, the file class of a file can be a factor used to determine the appropriate parser and renderer for that file. The use of file classes will be discussed in more detail below.
【0121】
ストアドクエリディレクトリ
上記で説明したように、階層ディレクトリ構造は、各行が1つのファイルに対
応するファイルテーブル710を用いて、データベースシステムにおいて実現さ
れ得る。特定されたファイルに関連付けられた行の場所をファイルのパス名に基
づいて効率的に突きとめるために階層インデックス510が採用され得る。Stored Query Directory As described above, a hierarchical directory structure can be implemented in a database system using a file table 710, where each row corresponds to a file. A hierarchical index 510 may be employed to efficiently locate the row associated with the identified file based on the file's pathname.
【0122】
図5および図7に示す実施例において、各ディレクトリの子ファイルが明示的
に列挙される。特に、各ディレクトリの子ファイルはそのディレクトリに関連付
けられるインデックスエントリのDir_entry_listにおいて列挙される。たとえ
ば、インデックスエントリ512はWindows(R)ディレクトリ614に対応し
、インデックスエントリ512のDir_entry_listは「Word」および「Access」
をWindows(R)ディレクトリ614の子ファイルとして明示的に列挙する。In the embodiment shown in FIGS. 5 and 7, child files of each directory are explicitly listed. In particular, the child files of each directory are listed in the Dir_entry_list of index entries associated with that directory. For example, the index entry 512 corresponds to the Windows (R) directory 614, and the Dir_entry_list of the index entry 512 is “Word” and “Access”.
Are explicitly listed as child files of the Windows® directory 614.
【0123】
本発明の一局面によれば、いくつかまたはすべてのディレクトリの子ファイル
が、明示的に列挙されるのではなく、ストアドクエリのサーチ結果に基づいて動
的に決定される、ファイルシステムが提供される。このようなディレクトリはこ
こではストアドクエリディレクトリと称す。According to one aspect of the present invention, a file system in which child files of some or all directories are dynamically determined based on search results of a stored query rather than explicitly listed. Will be provided. Such directories are referred to herein as stored query directories.
【0124】
たとえば、ファイルシステムのユーザが拡張子.docを有するすべてのファイル
を単一のディレクトリにグループ分けしたいとする。従来のファイルシステムで
は、ユーザはディレクトリを作成し、拡張子.docを有するすべてのファイルをサ
ーチし、その後このサーチで見つかったファイルを新たに作成したディレクトリ
へ移動させるか、新たに作成したディレクトリとサーチで見つけたファイルとの
間にハードリンクを作成するか、のいずれかを行なう。残念ながら、この新たに
作成されたディレクトリの内容はサーチが行なわれた時点でのシステムの状態を
正確に反映しているにすぎない。仮に、.doc拡張子を有さない名称に変えたとし
ても、フィールドはディレクトリ内に残ることになる。さらに、新規ディレクト
リが確立された後に他のディレクトリ内に作成された.doc拡張子を有するファイ
ルは、この新規ディレクトリには含まれない。For example, a file system user wants to group all files with the extension .doc into a single directory. In traditional file systems, the user creates a directory and searches for all files with the extension .doc and then either moves the files found in this search to the newly created directory or creates a new directory. Either make a hard link to the file found by the search, or. Unfortunately, the contents of this newly created directory only reflect the exact state of the system at the time the search was performed. Even if you change the name without the .doc extension, the fields will remain in the directory. Furthermore, files with a .doc extension created in other directories after the new directory was established are not included in this new directory.
【0125】
新規ディレクトリのメンバーシップを統計的に規定するのではなく、このディ
レクトリのメンバーシップはストアドクエリにより規定され得る。拡張子.docを
有するファイルを選択するストアドクエリは以下のように現われ得る。Rather than defining membership of the new directory statistically, membership of this directory can be defined by stored queries. A stored query that selects files with the extension .doc can appear as follows.
【0126】
Q1:
SELECT* from files_table
但し、
files_table.Extension = “doc”
図7を参照して、テーブル710に対して実行されると、クエリQ1は、Exam
ple.doc」と題された2つの文書に対する行である、行R4および行R12を選
択する。Q1: SELECT * from files_table However, files_table.Extension = “doc” Referring to FIG. 7, when executed for the table 710, the query Q1 is Exam
Select lines R4 and R12, which are the lines for the two documents entitled "ple.doc".
【0127】
本発明の一実施例によれば、クエリQ1などのクエリを階層インデックス51
0におけるディレクトリエントリにリンクするための機構が設けられる。階層イ
ンデックス510の横断中、そのようなリンクを含むディレクトリエントリに遭
遇すると、このリンクにより特定されるクエリが実行される。このクエリにより
選択された各ファイルは、ちょうどそのファイルがディレクトリエントリをスト
アするデータベーステーブル中の明示的なエントリであったかのように、ディレ
クトリエントリに関連付けられるディレクトリの子として扱われる。According to one embodiment of the present invention, queries such as query Q1 are indexed into the hierarchical index 51.
A mechanism is provided for linking to the directory entry at 0. When traversing the hierarchical index 510, when a directory entry containing such a link is encountered, the query identified by this link is executed. Each file selected by this query is treated as a child of the directory associated with the directory entry, just as if the file was an explicit entry in the database table that stores the directory entry.
【0128】
たとえば、ユーザがWord616の子であるディレクトリ「Documents」の作成
を望み、このドキュメントディレクトリが拡張子.docを有するすべてのファイル
を含むことを望むとする。本発明の一実施例によれば、このユーザは、このディ
レクトリに属することになるファイルに対する選択条件を特定する、クエリを設
計する。この例では、ユーザはクエリQ1を生成し得る。このクエリはこの後デ
ータベースシステム内にストアされる。For example, suppose a user wants to create a directory “Documents” that is a child of Word 616, and that this document directory contains all files with the extension .doc. According to one embodiment of the invention, this user designs a query that specifies selection criteria for files that will belong to this directory. In this example, the user may generate the query Q1. This query is then stored in the database system.
【0129】
他のタイプのディレクトリと同様、Documentディレクトリに対する行がファイ
ルテーブル710に加えられ、このDocumentディレクトリに対するインデックス
エントリが階層インデックス510に加えられる。さらに、Wordディレクトリに
対するインデックスエントリのDir_Entry_listは、新規なDocumentディレクト
リがWordディレクトリの子であることを示すように更新される。Dir_Entry_li
stにおける子を明示的にリストするのではなく、このDocumentディレクトリに対
する新規ディレクトリエントリは、ストアドクエリに対するリンクを含む。As with other types of directories, a row for the Document directory is added to the file table 710 and an index entry for this Document directory is added to the hierarchical index 510. In addition, the index entry Dir_Entry_list for the Word directory is updated to indicate that the new Document directory is a child of the Word directory. Dir_Entry_li
Rather than explicitly listing the children in st, the new directory entry for this Document directory contains a link to the stored query.
【0130】
図10および図11はそれぞれ、Documentsディレクトリに対して適切なエン
トリが作成された後の階層インデックス510とファイルテーブル710との状
態を示す。図10を参照して、Documentsディレクトリに対してインデックスエ
ントリ1004が作成されている。Documentsディレクトリの子はストアドクエ
リの結果セットに基づいて動的に決定されるので、インデックスエントリ100
4のDir_entry_listフィールドはヌル(null)である。子ファイルを静的に列
挙する代わりに、インデックスエントリ1004は、Documentsディレクトリの
子ファイルを決定するために実行されることになっているストアドクエリ100
2へのリンクを含む。10 and 11 respectively show the state of the hierarchical index 510 and the file table 710 after an appropriate entry is created for the Documents directory. Referring to FIG. 10, an index entry 1004 is created for the Documents directory. Since the children of the Documents directory are determined dynamically based on the result set of the stored query, index entry 100
The Dir_entry_list field of 4 is null. Instead of listing the child files statically, the index entry 1004 is stored query 100 that is to be executed to determine the child files in the Documents directory.
Includes a link to 2.
【0131】
Documentsディレクトリに対するインデックスエントリ1004の作成に加え
て、Wordディレクトリに対する既存のインデックスエントリ514は、Document
sがWordディレクトリの子であることを示すように更新される。具体的には、イ
ンデックスエントリ514にDir_entry_listアレイエントリが加えられ、名称
「Documents」、Documentsディレクトリに対するインデックスエントリのRowID
(すなわちY7)、およびDocumentsディレクトリのFileID(すなわちX13)
を特定する。In addition to creating the index entry 1004 for the Documents directory, the existing index entry 514 for the Word directory is
Updated to indicate that s is a child of the Word directory. Specifically, the Dir_entry_list array entry is added to the index entry 514, and the RowID of the index entry for the name “Documents” and the Documents directory.
(Ie Y7) and the FileID of the Documents directory (ie X13)
Specify.
【0132】
図示した実施例では、階層インデックス510に2つの欄が加えられている。
具体的には、ストアドクエリディレクトリ(SQD:Stored Query Directory)
欄は、ディレクトリエントリがストアドクエリディレクトリに対するものである
かを示すフラグを含む。ストアドクエリディレクトリに対するディレクトリエン
トリにおいて、クエリポインタ(QP:Query Pointer)欄に、ディレクトリに
関連付けられるストアドクエリへのリンクが記憶される。ストアドクエリディレ
クトリ以外のディレクトリに対するディレクトリエントリにおいては、QP欄は
ヌルである。In the illustrated embodiment, the hierarchy index 510 has two additional columns.
Specifically, Stored Query Directory (SQD)
The column contains a flag that indicates whether the directory entry is for a stored query directory. In the directory entry for the stored query directory, a link to the stored query associated with the directory is stored in the Query Pointer (QP) column. In directory entries for directories other than stored query directories, the QP column is null.
【0133】
リンクの性質は各実現例ごとに変化し得る。たとえば、ある実現例によれば、
このリンクは、ストアドクエリがストアされているストレージ場所に対するポイ
ンタであり得る。別の実現例によれば、このリンクは、単に、ストアドクエリテ
ーブル中のストアドクエリを調べるのに用いられ得る固有のストアドクエリ識別
子であり得る。本発明は、何らかの特定のタイプのリンクに限定されることはな
い。The nature of the links may change for each implementation. For example, according to one implementation,
This link can be a pointer to the storage location where the stored query is stored. According to another implementation, this link may simply be a unique stored query identifier that may be used to look up the stored query in the stored query table. The present invention is not limited to any particular type of link.
【0134】
図11を参照して、ここには、Documentsディレクトリに対する行(R13)
を含むように更新されたファイルテーブル710が図示される。一実施例によれ
ば、従来のディレクトリに対して保持されたものと同じメタデータがDocuments
ディレクトリに対してもまた保持される。たとえば、行R13は、作成日、最終
変更日などを含み得る。Referring to FIG. 11, here, the line (R13) for the Documents directory is set.
A file table 710 updated to include According to one embodiment, the same metadata that is maintained for traditional directories is Documents.
It is also maintained for directories. For example, row R13 may include the creation date, last modified date, and so on.
【0135】
図12はファイル階層構造のブロック図である。図12に示す階層構造は図6
のものと同じであるが、Documentsディレクトリ1202が加えられている。何
らかのアプリケーションがDocumentsディレクトリ1202の内容の表示をリク
エストすると、データベースはそのDocumentsディレクトリ1202に関連付け
られたクエリを実行する。クエリは、このクエリを満足するファイルを選択する
。このクエリの結果はその後、Documentsディレクトリ1202の内容としてア
プリケーションに提示される。図12に示された時点では、ファイルシステムは
Documentsディレクトリ1202に関連付けられたクエリを満足するファイルを
2つしか含まない。これら2つのファイルはともにExample.docと題されている
。したがって、これら2つのExample.docファイル618および622はDocumen
tsディレクトリ1202の子として示される。FIG. 12 is a block diagram of a file hierarchical structure. The hierarchical structure shown in FIG. 12 is shown in FIG.
Same as the above, but a Documents directory 1202 is added. When any application requests to display the contents of the Documents directory 1202, the database executes the query associated with that Documents directory 1202. The query selects files that satisfy this query. The results of this query are then presented to the application as the contents of the Documents directory 1202. At the time shown in FIG. 12, the file system is
It contains only two files that satisfy the query associated with the Documents directory 1202. Both of these two files are titled Example.doc. Therefore, these two Example.doc files 618 and 622 are Documen
It is shown as a child of the ts directory 1202.
【0136】
OSファイルシステムの多くにおいて、同じディレクトリは同じ名称の2つの
異なるファイルをストアできない。したがって、Documentsディレクトリ120
2内にExample.docと題された2つのファイルがに存在すると、OSファイルシ
ステムの規則が破られるおそれがある。この問題に対処するためにさまざまな技
術が用いられ得る。たとえば、DBファイルシステムは各ファイル名に文字を付
加して固有のファイル名を作ることができる。したがって、Example.doc618
はExample.doc1として提示され得るのに対し、Example.doc622はExample.do
c2として提示される。特定の情報を伝えない文字を付加するのではなく、意味
を伝えるように付加文字を選択してもよい。たとえば、付加する文字により、そ
のファイルが静的に位置づけられるディレクトリへのパスを示してもよい。すな
わち、Example.doc618はExample.doc_Windows(R)_Wordと表わすことが
でき、一方、Example.doc622はExample.doc_VMS_App4と表わされる。これ
に代えて、単にストアドクエリディレクトリにOSファイルシステムの規則を破
らせることも可能である。In many OS file systems, the same directory cannot store two different files with the same name. Therefore, the Documents directory 120
If two files named Example.doc exist in 2 then the rules of the OS file system may be broken. Various techniques may be used to address this issue. For example, the DB file system can add a character to each file name to create a unique file name. Therefore, Example.doc618
Can be presented as Example.doc1, whereas Example.doc622 is Example.do.
Presented as c2. The additional characters may be selected so as to convey the meaning rather than adding the characters that do not convey specific information. For example, the additional character may indicate the path to the directory where the file is statically located. That is, Example.doc 618 can be represented as Example.doc_Windows (R) _Word, while Example.doc 622 is represented as Example.doc_VMS_App4. Alternatively, the stored query directory may simply violate the rules of the OS file system.
【0137】
図10に示す実施例では、所与のディレクトリの子ファイルはすべて静的に規
定されるか、またはすべてストアドクエリにより規定されるかのいずれかである
。しかしながら、本発明の一実施例によれば、ディレクトリはいくつかの静的に
規定された子ファイルと、ストアドクエリにより規定されたいくつかの子ファイ
ルとを有し得る。たとえば、ヌルのDir_entry_listを有するのではなく、イン
デックスエントリ1004は、1つ以上の子ファイルを静的に特定するDir_ent
ry_listを有し得る。したがって、アプリケーションがデータベースシステムに
Documentsディレクトリの子を特定するように要請すると、データベースサーバ
は静的に規定された子ファイルとストアドクエリ1002を満足する子ファイル
との集合をリストすることになる。In the example shown in FIG. 10, the child files in a given directory are either all defined statically or all defined by stored queries. However, according to one embodiment of the invention, a directory may have some statically defined child files and some child files defined by stored queries. For example, instead of having a null Dir_entry_list, index entry 1004 statically identifies one or more child files.
can have ry_list. Therefore, the application can
When asked to identify a child of the Documents directory, the database server will list a set of statically defined child files and child files that satisfy stored query 1002.
【0138】
重要なことには、あるディレクトリの子ファイルを特定するストアドクエリが
他のディレクトリおよび文書を選択してもよい。そのような他のディレクトリの
いくつかまたはすべては、それら自体がストアドクエリディレクトリであり得る
。ある状況下では、ある特定のディレクトリのストアドクエリがその特定のディ
レクトリ自体を選択し、そのディレクトリを自身の子にするという場合もある。Importantly, a stored query that identifies child files in one directory may select other directories and documents. Some or all of such other directories may themselves be stored query directories. Under certain circumstances, a stored query for a particular directory may select itself and make it a child of itself.
【0139】
ストアドクエリディレクトリの子ファイルはオンザフライで決定されるので、
子ファイルのリスティングは常にデータベースの現状を反映するものとなろう。
たとえば、「Documents」ストアドクエリディレクトリが上述のとおり作成され
たとする。拡張子.docを有する新規ファイルが作成されるたびに、そのファイル
は自動的にDocumentsディレクトリの子になる。同様に、あるファイルの拡張子
が.docから.txtに変わると、そのファイルは自動的にDocumentsディレクトリの
子としての資格をなくすことになる。The child files of the stored query directory are determined on the fly, so
The listing of child files will always reflect the current state of the database.
For example, assume that the "Documents" stored query directory was created as described above. Each time a new file with the extension .doc is created, it will automatically become a child of the Documents directory. Similarly, when a file's extension changes from .doc to .txt, that file automatically disqualifies itself as a child of the Documents directory.
【0140】
一実施例によれば、ストアドクエリディレクトリに関連付けられたクエリは、
ディレクトリの子ファイルとなる特定のデータベース記録を選択し得る。たとえ
ば、「Employees(従業員)」と題されたディレクトリは、データベース内のEmp
loyeesテーブルからすべての行を選択するストアドクエリにリンクされ得る。あ
るアプリケーションが仮想従業員ファイルのうちの1つの検索をリクエストする
と、レンダラは対応の従業員記録からのデータを用いて、リクエストを出してい
るアプリケーションが予期するファイルタイプのファイルを生成する。According to one embodiment, the query associated with the stored query directory is
You can select a particular database record that is a child file of the directory. For example, the directory titled "Employees" is Emp in the database.
Can be linked to a stored query that selects all rows from the employees table. When an application requests a search for one of the virtual employee files, the renderer uses the data from the corresponding employee record to generate a file of the file type expected by the requesting application.
【0141】
ストアされたクエリ文書
ストアドクエリをディレクトリの子ファイルを特定するのに用いることができ
るのと同様に、ストアドクエリはまた、文書の内容を特定するのに用いることも
できる。図7および図11を参照して、これらの図はBody(本体)欄を有するフ
ァイルテーブル710を示している。ディレクトリに対し、Body欄はヌルである
。文書に対し、Body欄は文書を含むBLOBを含む。ストアドクエリによって内容が
特定されるファイルに対して、Body欄はストアドクエリに対するリンクを含んで
いてもよい。アプリケーションがストアされたクエリ文書の検索を要求すると、
ストアされたクエリ文書に関連付けられる行にリンクされたストアドクエリが実
行される。文書の内容はそこで、クエリの結果のセットに基づいて構成される。
ある実施例によれば、クエリ結果から文書を構成するプロセスは上述のようにレ
ンダラによって行なわれる。Stored Query Documents Just as stored queries can be used to identify child files of a directory, stored queries can also be used to identify the contents of a document. Referring to FIGS. 7 and 11, these figures show a file table 710 having a Body column. The Body field is null for directories. For documents, the Body field contains a BLOB that contains the document. For files whose content is specified by a stored query, the Body field may contain a link to the stored query. When an application requests a search of stored query documents,
The stored query linked to the row associated with the stored query document is executed. The content of the document is then constructed based on the result set of the query.
According to one embodiment, the process of constructing a document from the query results is performed by the renderer as described above.
【0142】
ストアドクエリの結果によってその内容が完全に決められる文書に対するサポ
ートをもたらすことに加えて、サポートはまた、ある部分はクエリの結果によっ
て決められるが他の部分はそうではない文書に対してもたらされてもよい。たと
えば、文書ディレクトリにおける行のBody欄はBLOBを含んでいてもよく、その際
、別の欄はストアドクエリへのリンクを含む。その行に関連付けられるファイル
に対するリクエストを受取った際、クエリは実行されてもよく、クエリの結果は
ファイルをレンダリングする際にBLOBと組合されてもよい。In addition to providing support for documents whose content is completely determined by the results of a stored query, support is also provided for documents that are determined in part by the query results but not in others. May be brought. For example, the Body column of a row in the document directory may contain a BLOB, with another column containing a link to the stored query. The query may be executed upon receiving a request for the file associated with that row, and the result of the query may be combined with the BLOB in rendering the file.
【0143】
複数レベルのストアドクエリディレクトリ
上述のように、ストアドクエリはディレクトリの子ファイルを動的に選択する
のに用いられてもよい。ディレクトリの子ファイルはすべて、ファイル階層構造
における同じレベル(すなわち、ストアドクエリと関連付けられるディレクトリ
の真下のレベル)に属する。ある実施例によれば、あるディレクトリに関連付け
られるストアドクエリはディレクトリの下の複数のレベルを規定し得る。複数の
レベルを規定するクエリに関連付けられるディレクトリはここで、複数レベルの
ストアドクエリディレクトリと称するものとする。Multi-Level Stored Query Directory As mentioned above, stored queries may be used to dynamically select a child file of a directory. All child files of a directory belong to the same level in the file hierarchy (ie, the level directly below the directory associated with the stored query). According to an embodiment, a stored query associated with a directory may define multiple levels below the directory. The directories associated with queries that define multiple levels are referred to herein as multi-level stored query directories.
【0144】
たとえば、複数レベルのストアドクエリディレクトリは、従業員テーブルにお
けるすべての従業員記録を選択し、これらの従業員記録を部門および地域ごとに
グループ分けするクエリと関連付けられていてもよい。これらの条件のもとで、
各グループ分けキー(部門および地域)および従業員記録に対して別個の階層レ
ベルを設けてもよい。具体的には、このようなクエリの結果はファイル階層構造
における3つの異なるレベルとして表わされてもよい。ディレクトリの子ファイ
ルは第1のグループ分け基準によって定められる。この例においては、第1のグ
ループ分け基準は「部門」(department)である。よって、ディレクトリの子ファ
イルは、さまざまな部門の値、すなわち「Dept1」、「Dept2」および「Dept3」
であってもよい。これらの子ファイルはそれら自体がディレクトリとして表わさ
れる。For example, a multi-level stored query directory may be associated with a query that selects all employee records in the employee table and groups these employee records by department and region. Under these conditions,
There may be a separate hierarchy level for each grouping key (department and region) and employee record. Specifically, the results of such queries may be represented as three different levels in the file hierarchy. The child files of the directory are defined by the first grouping criterion. In this example, the first grouping criterion is "department". Therefore, the child files of the directory are different department values, namely "Dept1", "Dept2" and "Dept3".
May be These child files are themselves represented as directories.
【0145】
部門ディレクトリの子ファイルは第2のグループ分け基準によって定められる
ことになる。この例においては、第2のグループ分け基準は「地域」(region)で
ある。したがって、各部門ディレクトリは「North」、「South」、「East」、「
West」などの地域値の各々に対する子ファイルを有することとなる。地域ファイ
ルもまたディレクトリとして表わされる。最後に、各地域ディレクトリの子ファ
イルは、地域ディレクトリに関連付けられるある特定の部門/地域の組合せに対
応するファイルとなる。たとえば、\Dept1\Eastディレクトリの子はEast地域
におけるDepartment1における従業員であることとなる。The child files of the department directory will be defined by the second grouping standard. In this example, the second grouping criterion is "region". Therefore, each department directory has "North", "South", "East", "
You will have a child file for each regional value such as "West". Regional files are also represented as directories. Finally, the child files of each region directory will be the files corresponding to a particular department / region combination associated with the region directory. For example, a child of the \ Dept1 \ East directory would be an employee in Department1 in the East area.
【0146】
ストアドクエリディレクトリの子ファイルに対する
ファイルオペレーションの取扱い
上記のように、ストアドクエリディレクトリの子ファイルは、従来のディレク
トリの子ファイルと同様の態様でアプリケーションに対して示される。しかしな
がら、従来のディレクトリの子ファイルに対して行なわれ得るあるファイルオペ
レーションは、ストアドクエリディレクトリの子ファイルに対して行なわれると
特殊な問題点を生じることとなる。Handling File Operations for Stored Query Directory Child Files As described above, stored query directory child files are presented to the application in a manner similar to conventional directory child files. However, certain file operations that may be performed on child files of conventional directories pose special problems when performed on child files of stored query directories.
【0147】
たとえば、ユーザがストアドクエリディレクトリの子ファイルを別のディレク
トリに移動すべきであることを特定する入力をしたと仮定する。子ファイルはデ
ィレクトリに関連付けられるストアドクエリにおいて特定される基準を満たして
いるという事実によってストアドクエリディレクトリに属しているため、このオ
ペレーションは問題を生じる。ファイルがその基準をもはや満たさなくなるよう
な態様でファイルを変更するのでなければ、そのファイルはストアドクエリディ
レクトリの子ファイルとしての資格を有し続けることになる。For example, assume that the user has entered that specifies that the child files of the stored query directory should be moved to another directory. This operation is problematic because it belongs to the stored query directory due to the fact that the child files meet the criteria specified in the stored query associated with the directory. Unless you modify the file in such a way that it no longer meets that criterion, it will continue to qualify as a child file of the stored query directory.
【0148】
あるファイルをストアドクエリディレクトリに移動する試みがなされる際に同
様の問題が生じる。そのファイルが既にストアドクエリディレクトリの子ではな
いのであれば、そのファイルはストアドクエリディレクトリに関連付けられるス
トアドクエリを満たさない。ストアドクエリにより特定される基準をファイルが
満たすようにする態様でそのファイルを変更するのでなければ、そのファイルは
ストアドクエリディレクトリの子とされるべきではない。A similar problem occurs when an attempt is made to move a file to the stored query directory. The file does not satisfy the stored query associated with the stored query directory if the file is not already a child of the stored query directory. A file should not be a child of a stored query directory unless it is modified in such a way that it meets the criteria specified by the stored query.
【0149】
これらの問題点を解決するのにさまざまなアプローチをとることができる。た
とえば、ファイルをストアドクエリディレクトリの中へまたはその中から移動す
ることを試みるオペレーションに応答してエラーを出すようにDBファイルシス
テムを構成してもよい。代わりに、DBファイルシステムはこのような試みに応
答して、問題のファイル(またはファイルとして表わされているデータベース記
録)を削除してもよい。Various approaches can be taken to solve these problems. For example, the DB file system may be configured to issue an error in response to an operation attempting to move a file into or out of the stored query directory. Alternatively, the DB file system may respond to such attempts by deleting the file in question (or the database record represented as a file).
【0150】
さらに別のアプローチでは、ストアドクエリディレクトリの中へ移動されたフ
ァイルはこれらがディレクトリに関連付けられるストアドクエリの基準を満たす
ように自動的に変更されてもよい。たとえば、ストアドクエリディレクトリに関
連付けられるストアドクエリが既婚のすべての従業員を選択しているものと仮定
する。ある従業員記録に対応するファイルがそのストアドクエリディレクトリに
移動されると、その従業員記録の「既婚」フィールドが更新され、その従業員が
既婚であることを示す。In yet another approach, files moved into the stored query directory may be automatically modified so that they meet the stored query criteria associated with the directory. For example, assume that the stored query associated with the stored query directory selects all married employees. When the file corresponding to an employee record is moved to the stored query directory, the "married" field in the employee record is updated to indicate that the employee is married.
【0151】
同様に、ストアドクエリディレクトリの外へ移動されたファイルはこれらがデ
ィレクトリに関連付けられるストアドクエリの基準をもはや満たさないように自
動的に変更されてもよい。たとえば、「既婚の従業員」のストアドクエリディレ
クトリにおけるファイルがそのディレクトリの外へ移動された場合、対応する従
業員記録の「既婚」フィールドが更新されその従業員が既婚ではないことを示す
ようにする。Similarly, files moved out of the stored query directory may be automatically modified so that they no longer meet the stored query criteria associated with the directory. For example, if a file in the "Married Employees" stored query directory is moved out of that directory, the "Married" field in the corresponding employee record is updated to indicate that the employee is not married. To do.
【0152】
ストアドクエリの基準を満たさないファイルを対応のストアドクエリディレク
トリの中へ移動する試みがなされた場合、別のアプローチとしては、ストアドク
エリディレクトリのインデックスエントリを更新してそのファイルをストアドク
エリディレクトリの子として統計的に確立することが挙げられる。こうした状況
のもとでは、ストアドクエリディレクトリは、ストアドクエリを満たしているこ
とから子ファイルであるいくつかの子ファイルと、ストアドクエリディレクトリ
に手動で移動されたために子ファイルとなった他の子ファイルとを有することと
なる。If an attempt is made to move a file that does not meet the stored query criteria into the corresponding stored query directory, another approach is to update the stored query directory index entry and store the file in the stored query directory. Statistically established as a child of. Under these circumstances, the stored query directory will have some child files that are child files because they satisfy the stored query, and other child files that have become child files because they were manually moved to the stored query directory. Will have.
【0153】
プログラム的に規定されたファイル
ストアドクエリディレクトリおよびストアされたクエリ文書はプログラム的に
規定されたファイルの例である。プログラム的に規定されたファイルとは、ファ
イルシステムに対してファイルとして表わされたエンティティ(たとえば文書ま
たはディレクトリ)であるが、その内容および/または子ファイルがコードを実
行することによって定められるものである。ファイルの内容を定めるために実行
されるコードとは、ストアされたクエリファイルの場合のようにストアされたデ
ータベースクエリを含んでいてもよく、および/または他のコードを含んでいて
もよい。一実施例によれば、プログラム的に規定されるファイルに関連付けられ
るコードは以下のルーチンを実現する。Programmatically Defined Files Stored query directories and stored query documents are examples of programmatically defined files. A programmatically defined file is an entity (eg, a document or directory) represented as a file to the file system, but whose contents and / or child files are defined by executing code. is there. The code executed to define the contents of the file may include a stored database query, as in the case of a stored query file, and / or may include other code. According to one embodiment, the code associated with the programmatically defined file implements the following routines.
【0154】
resolve_filename( filename):child_file_handle;
list_directory;
fetch;
put;
delete;
resolve_filenameルーチンは、「filename」の名を有しかつプログラム的に
規定されたファイルの子であるファイルのファイルハンドル(file handle)を戻
す。list_directoryルーチンは、プログラム的に規定されたファイルのすべて
の子ファイルのリストを戻す。fetchルーチンは、プログラム的に規定されたフ
ァイルの内容を検索する。putルーチンは、プログラム的に規定されたファイル
の中へデータを挿入する。deleteルーチンは、プログラム的に規定されたファイ
ルを削除する。Resolve_filename (filename): child_file_handle; list_directory; fetch; put; delete; Bring back. The list_directory routine returns a list of all child files of a programmatically defined file. The fetch routine retrieves the contents of a programmatically specified file. The put routine inserts data into a programmatically specified file. The delete routine deletes a programmatically specified file.
【0155】
一実施例によれば、「resolve_pathname(path):file_handle」ルーチンも提
供される。resolve_pathnameルーチンはパスを受け、パスにおける各ファイル
名(filename)に対してresolve_filename機能を反復的にコールする。According to one embodiment, a "resolve_pathname (path): file_handle" routine is also provided. The resolve_pathname routine receives a path and iteratively calls the resolve_filename function for each filename in the path.
【0156】
一実施例によれば、DBファイルシステムは、従来のファイル(すなわち、プ
ログラム的に規定されていないファイル)に対する、上に列挙したルーチンを実
現するオブジェクトクラスをもたらす。説明の目的で、そのオブジェクトクラス
はここで「ディレクトリクラス」と称することにする。プログラム的に規定され
たファイルを実現するため、ディレクトリクラスのサブクラスが確立される。そ
のサブクラスはディレクトリクラスのルーチンを継承するが、これらのルーチン
の実現をプログラマがオーバーライドすることを可能にする。サブクラスにより
もたらされる実現は、プログラム的に規定されたファイルにかかわるファイルオ
ペレーションに応答してDBファイルシステムによって行なわれるオペレーショ
ンを決める。According to one embodiment, the DB file system provides an object class that implements the routines listed above for conventional files (ie, files that are not programmatically defined). For purposes of explanation, that object class will be referred to herein as a "directory class". Subclasses of the directory class are established to implement programmatically defined files. The subclass inherits the routines of the directory class, but allows the programmer to override the implementation of these routines. The implementation provided by the subclass determines the operations performed by the DB file system in response to file operations involving programmatically defined files.
【0157】
ファイルシステム内でのイベント通知
この発明の一局面によれば、あるファイルシステムイベントの発生の際にユー
ザが先を見越して(proactively)通知されるファイルシステムが提供される。こ
れらは先を見越して通知されるため、関心のあるイベントが起こったことを示す
条件を検出するため繰返されるポーリングのオーバーヘッドを引起さずにすむ。
ファイルシステムイベントの発生の際に通知を受けるという能力は、たとえば、
ユーザにとってある特定のファイルシステムイベントが重要な意味を有している
場合などに非常に有用である。Event Notification in File System According to one aspect of the present invention, there is provided a file system in which a user is proactively notified when a certain file system event occurs. These are proactively notified, thus avoiding the overhead of repeated polling to detect conditions that indicate an event of interest has occurred.
The ability to be notified when a file system event occurs, for example,
It is very useful, for example, when a particular file system event has a significant meaning to the user.
【0158】
たとえば、ある文書の複数のコピーが異なる場所において維持され(「キャッ
シュされ」)、その文書に対してより効率のよいアクセスをもたらすようにする
ことは一般的である。こうした条件のもとで、そのコピーのうちの1つが更新さ
れた場合、残りのコピーは古くなってしまう(すなわち、これらのコピーはもは
やその文書の現在の状態を反映していない)。以下説明するイベント通知手法を
用いて、1つのコピーが更新された際に、他のコピーが存在するサイトではその
更新について先を見越して通知を受けることができる。これらのサイトにおける
プロセスまたはユーザはそこで、その状況下で適当である何らかの処置をとるこ
とができる。キャッシュの場合、適当な処置とはたとえば、文書のキャッシュさ
れたバージョンを更新されたバージョンで置き換えることであるかもしれない。For example, it is common for multiple copies of a document to be maintained (“cached”) at different locations, resulting in more efficient access to the document. Under these conditions, if one of the copies is updated, the remaining copies become obsolete (ie, these copies no longer reflect the current state of the document). By using the event notification method described below, when one copy is updated, a site where another copy exists can be proactively notified of the update. The process or user at these sites can then take whatever action is appropriate under the circumstances. In the case of caching, the appropriate action may be, for example, replacing the cached version of the document with an updated version.
【0159】
別の例としては、ある特定のユーザがある会社の技術文書のすべてをそれらが
出版される前に見直す責任がある場合がある。その会社のテクニカルライタは、
すべての技術文書をそのユーザによる見直しのための準備が整った際に「見直し
準備完了」ディレクトリの中へ記憶するように指示を受けているかもしれない。
事前対応型の(proactive)通知システムがなければ、技術文書を「見直し準備完
了」ディレクトリに単に記憶するだけでは新しい文書の見直しの準備ができたこ
とをユーザに気づかせることにはならない。むしろ、テクニカルライタがそのユ
ーザにその文書が見直されるための準備が整ったことを知らせるか、またはユー
ザが「見直し準備完了」ディレクトリを定期的にチェックするなどの何らかの追
加の作業が必要となる。これに対し、ここに説明するイベント通知手法を実現す
るファイルシステムでは、技術文書を「見直し準備完了」ディレクトリの中へ入
れるという行為により、新しい技術文書が見直しされる準備が整ったことをユー
ザに通知するためのユーザに対するメッセージの生成を引起すことができる。As another example, a particular user may be responsible for reviewing all of a company's technical documents before they are published. The technical writer for that company
It may be instructed to store all technical documents in the "Ready to Review" directory when they are ready for review by the user.
Without a proactive notification system, simply storing technical documents in a "ready for review" directory does not remind the user that a new document is ready for review. Rather, some additional work is required such as the technical writer notifying the user that the document is ready for review, or the user periodically checking the "Review Ready" directory. On the other hand, in the file system that realizes the event notification method described here, the user is notified that the new technical document is ready to be reviewed by putting the technical document in the “ready for review” directory. The generation of a message for the user to notify can be triggered.
【0160】
この発明の一実施例によれば、ファイルシステムイベントに対して先を見越し
てメッセージを生成するためのルールを定義付けてもよい。このようなイベント
には、たとえば、ある特定のディレクトリにおけるファイルの記憶または作成、
ある特定のディレクトリにおけるファイルの削除、ある特定のディレクトリから
のファイルの移動、ある特定のファイルの変更または削除およびある特定のディ
レクトリへファイルをリンクすることなどが含まれる。これらのファイルシステ
ムオペレーションは単に代表として表わすものである。事前対応型の通知ルール
が作成され得る特定のオペレーションは実現例ごとに異なり得る。この発明はど
んなある特定のセットのファイルシステムオペレーションに対してイベント通知
サポートをもたらすことにも限定されない。According to one embodiment of the present invention, rules may be defined for proactively generating messages for file system events. Such events include, for example, storing or creating a file in a particular directory,
This includes deleting files in certain directories, moving files from certain directories, modifying or deleting certain files and linking files to certain directories. These file system operations are merely representative. The specific operations for which proactive notification rules may be created may vary from implementation to implementation. The present invention is not limited to providing event notification support for any particular set of file system operations.
【0161】
一実施例によれば、event_idがファイルシステムイベントに割当てられる。
そこで、あるevent_idおよび1以上の加入者の組を特定する通知ルールが作成
されてもよい。あるルールがファイルシステムに一旦登録されると、ルールのev
ent_idによって識別されるファイルシステムイベントの発生に応答して、その
ルールにおいて識別される消費者の組に自動的にメッセージが送られる。According to one embodiment, event_id is assigned to a file system event.
Therefore, a notification rule may be created that identifies an event_id and a set of one or more subscribers. Once a rule is registered in the file system, the rule ev
In response to the occurrence of the file system event identified by ent_id, a message is automatically sent to the set of consumers identified in the rule.
【0162】
たとえば、あるユーザはいつファイルがある特定のディレクトリに追加される
かを知ることについて関心を登録するかもしれない。この関心を記録するため、
データベースサーバは、(1)「登録ルール」テーブルの中に行を挿入し、(2
)ディレクトリに関連付けられるフラグを設定して、少なくとも1つのルールが
そのディレクトリに対して登録されたことを示す。登録されたルールのテーブル
に挿入される行はエンティティを識別しそのエンティティが関心を持っているイ
ベントを示す。行はまた、そのエンティティと通信するのに用いるべきプロトコ
ルなどの追加の情報を含んでいてもよい。あるルールがディレクトリに当てはま
ることを示すフラグは、ディレクトリに関連付けられるファイルのテーブルの行
において、またはディレクトリに関連付けられる階層インデックスエントリにお
いて、またはその両方において記憶されてもよい。For example, a user may register interest in knowing when a file is added to a particular directory. To record this interest,
The database server inserts a row into the (1) "registration rule" table,
) Set a flag associated with the directory to indicate that at least one rule has been registered for that directory. Rows inserted into the table of registered rules identify the entity and indicate the event that the entity is interested in. The row may also include additional information such as the protocol to use to communicate with that entity. A flag indicating that a rule applies to a directory may be stored in a row of a table of files associated with the directory, in a hierarchical index entry associated with the directory, or both.
【0163】
ファイルをディレクトリに挿入する際、データベースサーバはディレクトリと
関連付けられるフラグを検査してそのディレクトリに対して何らかのルールが登
録されているかどうかを判定する。そのディレクトリに対してルールが登録され
ている場合、登録されたルールのテーブルをサーチしてそのディレクトリに当て
はまる特定のルールを見出す。登録されたルールがディレクトリに対して行なわ
れている特定のオペレーションに当てはまるルールを含んでいる場合、これらの
ルールに識別される関心を持っているエンティティにメッセージが送られる。エ
ンティティに対してメッセージを送るのに用いられるプロトコルはエンティティ
ごとに異なり得る。たとえば、あるエンティティに対しては、メッセージはCO
RBAを介して送られてもよく、その一方、他のエンティティに対しては、メッ
セージはHTTPを介するHTMLページの形で送られてもよい。When inserting a file into a directory, the database server examines the flags associated with the directory to determine if any rules are registered for that directory. If a rule is registered for that directory, search the table of registered rules to find the specific rule that applies to that directory. If the registered rules contain rules that apply to the particular operation being performed on the directory, then a message is sent to the interested entity identified by these rules. The protocol used to send a message to an entity may vary from entity to entity. For example, for an entity, the message is CO
It may be sent via RBA, while for other entities the message may be sent in the form of HTML pages via HTTP.
【0164】
一実施例によれば、通知機構は、その内容のすべてがここに引用により援用さ
れる、1997年10月31日にチャンドラ(Chandra)他によって提出された
「データベースシステムにおけるメッセージ待ち行列のための装置および方法」
(APPARATUS AND METHOD FOR MESSAGE QUEUING IN A DATABASE SYSTEM)と題さ
れた米国特許出願第08/961,597号に記載される待ち行列機構のような
待ち行列機構を用いて、上述のように、データベース実現型ファイルシステムと
ともに実現される。According to one embodiment, the notification mechanism is a message queue in a database system submitted by Chandra et al. On October 31, 1997, all of which is incorporated herein by reference. Apparatus and methods for
A database implementation, as described above, using a queuing mechanism such as that described in US patent application Ser. No. 08 / 961,597 entitled "APPARATUS AND METHOD FOR MESSAGE QUEUING IN A DATABASE SYSTEM". Implemented with a type file system.
【0165】
そのような実施例の1つによれば、データベースサーバの外部で実行されるイ
ベントサーバがデータベースサーバによって管理される待ち行列に対して加入者
として登録される。イベントサーバが加入する待ち行列はここでファイルイベン
ト待ち行列と称することとする。ある特定のファイルシステムイベントに関心が
あるエンティティはその関心をイベントサーバに登録する。イベントサーバはデ
ータベースAPIを介してデータベースサーバと通信し、関心を持っているエン
ティティと、それらのエンティティがサポートするプロトコルを介して通信する
。According to one such embodiment, an event server running external to the database server is registered as a subscriber to a queue managed by the database server. The queue to which the event server subscribes will be referred to herein as the file event queue. Entities interested in a particular file system event register their interest with the event server. The event server communicates with the database server via the database API and with interested entities via the protocols they support.
【0166】
データベースサーバがファイルシステムに関連するオペレーションを行なう際
、データベースサーバファイルイベント待ち行列の中に、オペレーションに関連
付けられるevent_idを示すメッセージを入れる。待ち行列機構は、イベントサ
ーバがファイルイベント待ち行列の中に関心を登録したことを判定し、イベント
サーバにメッセージを送信する。イベントサーバは関心を持っているエンティテ
ィのリストをサーチしていずれかのエンティティがそのメッセージにおいて識別
されるイベントに関心を登録していないかどうかを判定する。イベントサーバは
次に、そのイベントに関心を登録したすべてのエンティティに対してファイルシ
ステムイベントの発生を示すメッセージを送信する。When the database server performs a file system related operation, it places a message in the database server file event queue indicating the event_id associated with the operation. The queuing mechanism determines that the event server has registered interest in the file event queue and sends a message to the event server. The event server searches the list of interested entities to determine if any of the entities have registered interest in the event identified in the message. The event server then sends a message indicating the occurrence of a file system event to all entities that have registered interest in the event.
【0167】
関心を持っているエンティティへメッセージを転送するのにイベントサーバを
用いる実施例において、イベントサーバはある特定の最大数のユーザをサポート
するように構成されてもよい。関心を持っているユーザの数が最大数を超えた場
合、追加のイベントサーバを開始して追加のユーザに対してサービスをもたらす
。単一のイベントサーバのケースと同様に、複数イベントサーバのシステムにお
ける各イベントサーバはファイルイベント待ち行列への加入者として登録される
。In embodiments in which an event server is used to transfer messages to interested entities, the event server may be configured to support a certain maximum number of users. If the number of interested users exceeds the maximum, an additional event server is started to serve the additional users. As with the single event server case, each event server in a multiple event server system is registered as a subscriber to the file event queue.
【0168】
代替の実施例によれば、ファイルシステムイベントに関心を持っているエンテ
ィティはファイルイベント待ち行列への加入者として直接登録される。登録情報
の一部として、エンティティはそれらが関心を持っているファイルシステムイベ
ントのevent_idを示す。待ち行列機構がファイルイベント待ち行列の中にメッ
セージを入れる際、待ち行列機構はすべての待ち行列加入者に自動的にメッセー
ジを送るわけではない。むしろ、待ち行列機構は登録情報を検査してどのエンテ
ィティがそのメッセージに関連付けられる特定のイベントに関心を登録している
かを判定し、それらのエンティティのみに選択的にメッセージを送る。データベ
ースAPIをサポートとしていないエンティティの場合、登録情報にはこれらの
エンティティがサポートするプロトコルについての情報が含まれる。待ち行列機
構はこれらのエンティティに対し、それらの登録情報にリストされているプロト
コルを用いてファイルイベントメッセージを送信する。According to an alternative embodiment, entities interested in file system events are directly registered as subscribers to the file event queue. As part of the registration information, the entities indicate the event_id of the file system event they are interested in. When the queue mechanism puts a message in the file event queue, the queue mechanism does not automatically send the message to all queue subscribers. Rather, the queuing mechanism examines the registration information to determine which entities are registering interest in the particular event associated with the message and selectively sends the message only to those entities. For entities that do not support database APIs, the registration information will include information about the protocols supported by these entities. The queuing mechanism sends to these entities file event messages using the protocols listed in their registration information.
【0169】
ファイルシステムイベント通知はさまざまなコンテキストにおいて適用され得
る。たとえば、時には第1のマシンに第2のマシンに存在するファイルのキャッ
シュを記憶することが望ましいことがある。そのようなファイルキャッシュを実
現する現在利用可能な機構の1つはMicrosoft Windows(R)オペレーティング
システムにより提供される「ブリーフケース」機能である。ブリーフケース機能
により、ユーザがあるマシン上で特殊なフォルダ(「ブリーフケース」)を作成
し、そのブリーフケースの中へ他のマシン上に記憶されているファイルをコピー
することが可能となる。各々のブリーフケースは「更新」オプションを有してお
り、これが選択されると、ブリーフケース内のファイルのコピーと元の場所にあ
るファイルのコピーとをファイルシステムに比較させる。もしファイルが同じ変
更日を有していない場合、ファイルシステムはユーザがその2つのコピーを同期
化するのを可能にする(典型的に、より新しいコピーをより古いコピーに上書き
することによって)。File system event notifications can be applied in various contexts. For example, it may sometimes be desirable to store a cache of files residing on a second machine on a first machine. One of the currently available mechanisms for implementing such a file cache is the "briefcase" feature provided by the Microsoft Windows (R) operating system. The briefcase feature allows a user to create a special folder ("briefcase") on one machine and copy files stored on other machines into that briefcase. Each briefcase has an "update" option, which, when selected, causes the file system to compare the copy of the file in the briefcase with the copy of the file in its original location. If the files do not have the same modification date, the file system allows the user to synchronize the two copies (typically by overwriting the older copy with the newer copy).
【0170】
ブリーフケース機構とは異なり、ファイルシステムイベント通知機構は、ファ
イルキャッシュを先を見越して更新することを可能にし、これによってファイル
キャッシュが常に、元の場所にあるファイルの現在の状態を反映するようにする
。たとえば、ファイルキャッシュを管理するプロセスは、キャッシュに含まれて
いるファイルの元のコピーに対する更新について関心を登録してもよい。これに
より、元のファイルのいずれかが更新された際にはプロセスは自動的にこれを知
らされることとなり、即刻これに応答して更新されたファイルをファイルキャッ
シュの中へコピーすることができる。同様に、ファイルシステムイベント通知機
構を用いて、第1のマシン上に第2のマシン上に存在する1つ以上のディレクト
リをミラー化してもよい。ファイルシステムイベント通知機構をこのような態様
で用いるため、ミラー化された(mirrored)ディレクトリを維持するためのプロセ
スは最初にディレクトリおよびその中に含まれるすべてのファイルのコピーを作
り、次に、ディレクトリおよびディレクトリに含まれるファイルに対して加えら
れた変更についてその関心を登録する。変更がディレクトリに加えられたことを
知らされると、プロセスはディレクトリのコピーに対し対応する変更を加える。
同様に、ミラー化されたディレクトリ内のファイルのいずれかに対する変更を知
らされた際には、プロセスはファイルのコピーに対して対応する変更を加える。Unlike the briefcase mechanism, the file system event notification mechanism allows the file cache to be proactively updated so that the file cache always reflects the current state of the file in its original location. To do so. For example, a process that manages a file cache may register interest in updates to the original copy of the files contained in the cache. This allows the process to be automatically notified when any of the original files have been updated and can immediately copy the updated files into the file cache in response. . Similarly, a file system event notification mechanism may be used to mirror one or more directories residing on a second machine on a first machine. To use the file system event notification mechanism in this manner, the process for maintaining a mirrored directory first makes a copy of the directory and all the files it contains, then the directory. And register its interest in the changes made to the files contained in the directory. When notified that a change has been made to the directory, the process makes the corresponding change to the copy of the directory.
Similarly, when notified of a change to any of the files in the mirrored directory, the process makes a corresponding change to the copy of the file.
【0171】
たとえば、ミラー化されたディレクトリからミラー化されていないディレクト
リへファイルが移動された場合、プロセスはミラー化されたディレクトリからフ
ァイルのコピーを削除し、そのファイルについての関心の登録を解除する。した
がって、プロセスはファイルが更新された際も引続き通知されるということはな
い。同様に、ミラー化されていないディレクトリからミラー化されているディレ
クトリへファイルが移動された場合、プロセスはディレクトリが変わったことを
知らされることとなる。そのメッセージに応答して、プロセスは新しいファイル
を識別し、ミラー化されたディレクトリ内に新しいファイルのコピーを作り、そ
の新しいファイルについてその関心を登録する。For example, if a file is moved from a mirrored directory to a non-mirrored directory, the process removes the copy of the file from the mirrored directory and unregisters interest in that file. . Therefore, the process does not continue to be notified when the file is updated. Similarly, if a file is moved from a non-mirrored directory to a mirrored directory, the process will be notified that the directory has changed. In response to the message, the process identifies the new file, makes a copy of the new file in the mirrored directory, and registers its interest in the new file.
【0172】
ファイルシステムにおけるバージョン管理
職場においては、大勢の人が長期間にわたってともに作業することになる大型
の仕事を「プロジェクト」と称する。プロジェクトに取組んでいる際、社員は典
型的に多数の文書を作成し、その各々は何らかの態様でそのプロジェクトに関係
がある。Version Management in File System In the workplace, a large-scale work in which a large number of people work together for a long period of time is called a “project”. When working on a project, employees typically create a number of documents, each of which is in some way related to the project.
【0173】
同様に、コンピュータシステム内では、ユーザはしばしば、すべてがあるプロ
ジェクトに関係のある多数の電子文書を作成する。たとえば世界中の多数のサイ
トに位置しているプログラマがそれぞれ、同じコンピュータプログラムの異なる
部分に取組んでいるかもしれない。そのコンピュータプログラムに対して彼らが
生成する電子文書は典型的にソースコードファイルを含むが、単一のプロジェク
トに属する。すなわち、この議論の文脈では、プロジェクトとは関連するファイ
ルの集まりのことである。Similarly, within a computer system, users often create a large number of electronic documents, all related to a project. For example, programmers located at numerous sites around the world may each be working on different parts of the same computer program. The electronic documents they generate for that computer program typically contain source code files, but belong to a single project. That is, in the context of this discussion, a project is a collection of related files.
【0174】
典型的に、プロジェクトのファイルは特定のフォルダの中へ整理されることと
なる。たとえば、図13は、プロジェクト「Big Project」に関連するファイル
がどのようにさまざまなフォルダに整理されているかの一例を示している。図1
3を参照して、Big Projectと題されたフォルダ1302は、そのプロジェクト
に関連するすべてのファイル(ディレクトリおよび文書)を保持するように作成
されたものである。Big Project1302のすぐ下の子ファイルはフォルダsourc
e code1304およびフォルダdocs1306である。source code1304は、
ロサンゼルスに位置するプログラマのsource code1316およびsource code1
318を記憶するためのLA code1312と、サンフランシスコに位置するプロ
グラマのsource code1320を記憶するためのSF code1314との2つのディ
レクトリを含む。docs1306は、specs1308およびuser manual1310の
2つのフォルダを含む。specs1308はspecs1322およびspecs1324を
含む。user manual1310はUM1326を含む。Typically, project files will be organized into specific folders. For example, FIG. 13 shows an example of how the files associated with the project “Big Project” are organized into various folders. Figure 1
3, a folder 1302 entitled Big Project was created to hold all files (directories and documents) associated with that project. The child file just under Big Project 1302 is the folder sourc
e code 1304 and folder docs 1306. source code 1304 is
Source code 1316 and source code 1 for programmers located in Los Angeles
It contains two directories, a LA code 1312 for storing 318 and a SF code 1314 for storing source code 1320 of a programmer located in San Francisco. docs 1306 contains two folders, specs 1308 and user manual 1310. specs 1308 includes specs 1322 and specs 1324. The user manual 1310 includes UM1326.
【0175】
しばしば、あるプロジェクト内のファイルは同じプロジェクト内の他のファイ
ルへの参照(reference)(たとえばHTMLリンク)を含んでいるであろう。こ
れらの参照は典型的に、他の文書をその文書の完全なパス名を用いて識別してい
る。したがって、文書がディレクトリ階層構造におけるある場所から別の場所へ
移動された場合、あるいはその文書の名称が変更された場合、その文書へのすべ
ての参照が無効となってしまう。Often, a file in one project will contain a reference (eg, an HTML link) to another file in the same project. These references typically identify other documents using the full pathname of the document. Therefore, if a document is moved from one location to another in the directory hierarchy, or if the document is renamed, all references to that document will be invalid.
【0176】
文書間参照の存在により、ファイルの新しいバージョンは典型的に、それらが
置換するより古いバージョンと同じ名前で同じ場所に記憶される。従来のファイ
ルシステムでは、このプロセスによってファイルのより古いバージョンは上書き
され、これを回復するのが不可能になる。残念ながら、ファイルのより古いバー
ジョンを回復することが望ましい場合は多々ある。たとえば、より新しいバージ
ョンから重大な情報がうっかり削除されてしまったかもしれない。もしより古い
バージョンを回復することが不可能であれば、ユーザはその失われた資料を再現
するのに、それも再現できるのであればの話であるが、かなりのリソースを費や
さなければならないかもしれない。さらに、多くの場合、ファイルに対する変更
履歴を復元することが可能であったり、ある特定の変更がいつ加えられたもので
あるかを判断することが可能であったり、またはある時点で何が変更されたかを
判断することが可能であることは望ましい。Due to the presence of inter-document references, new versions of files are typically stored in the same location with the same name as the older versions they replace. In traditional file systems, this process overwrites older versions of the file, making it impossible to recover. Unfortunately, there are often times when it is desirable to recover an older version of a file. For example, newer versions may inadvertently delete important information. If it is impossible to recover an older version, the user will have to spend considerable resources recreating the lost material, if it can. unknown. In addition, it is often possible to restore the history of changes to a file, determine when a particular change was made, or change something at some point. It is desirable to be able to determine what has been done.
【0177】
この発明の一局面によれば、ファイルの新しいバージョンがより古いバージョ
ンを上書きすることなく、より古いバージョンと同じ名称を用いてディレクトリ
階層構造における同じ場所に保存されるバージョニング(versioning)機構が提供
される。より古いバージョンを上書きするのではなく、より古いバージョンは保
持され、ユーザは選択的にファイルのより古いバージョンを検索することができ
る。さらに、より古いバージョンはディレクトリ階層構造におけるそれらの元の
場所において保持される。以下により詳細に説明するように、ファイルシステム
がディレクトリ階層構造内の同じ場所において同じファイルの複数のバージョン
を同じ名称で保持することを可能にする新規のディレクトリバージョニング手法
が提供される。According to one aspect of the invention, a versioning mechanism in which a new version of a file is saved in the same location in the directory hierarchy with the same name as the older version without overwriting the older version. Will be provided. Instead of overwriting the older version, the older version is retained and the user can selectively retrieve the older version of the file. In addition, older versions are kept in their original place in the directory hierarchy. As described in more detail below, a new directory versioning technique is provided that allows a file system to keep multiple versions of the same file with the same name at the same location in the directory hierarchy.
【0178】
新しいバージョンの作成によって元のバージョンの名称または場所が変更され
ないため、ファイルの最初のバージョンに対するどんな参照も、ファイルのより
新しいバージョンが作成された場合でもファイルの最初のバージョンを示し続け
ることとなる。したがって、文書内に含まれるファイル間参照は、参照された文
書のより新しいバージョンが作成されたとしても、引続き参照された文書の正し
いバージョンを指す。バージョニングプロセスにおいてファイル間参照が有効な
ままである(すなわち、引続き、参照されたファイルの正しいバージョンを参照
する)という事実は、ファイル検索の効率にかなり有益な影響がある。具体的に
は、参照されたファイルの適切なバージョンを探すためにルックアップオペレー
ションを行なうことを必要とするのではなく、参照されたファイルは他のファイ
ル内に含まれるそれらへの参照をたどることによって直接検索することができる
。Any reference to the first version of a file should continue to point to the first version of the file even if a newer version of the file is created, since the creation or creation of a new version does not change the name or location of the original version. Becomes Thus, an inter-file reference contained within a document refers to the correct version of the referenced document, even if a newer version of the referenced document is created. The fact that cross-file references remain valid in the versioning process (ie, continue to refer to the correct version of the referenced file) has a significant beneficial impact on the efficiency of file retrieval. Specifically, the referenced file does not need to perform a lookup operation to find the appropriate version of the referenced file, but the referenced file follows references to those contained within other files. Can be searched directly by.
【0179】
同様に、ある特定の時点におけるディレクトリの内容を判定するプロセスにル
ックアップオペレーションが関与する必要がない。ディレクトリはそれら自体が
バージョン付け(versioned)されているため、ディレクトリのある特定のバー
ジョンを選択することは単にディレクトリのメンバを選択することになる。ディ
レクトリの選択されたバージョンは、ディレクトリのそのバージョンに属する正
しいファイルへの、よってファイルの正しいバージョンへの、直接リンクを含む
ことになる。Similarly, the lookup operation need not be involved in the process of determining the contents of the directory at any particular time. Since directories are themselves versioned, selecting a particular version of a directory simply selects the members of the directory. The selected version of the directory will contain a direct link to the correct file belonging to that version of the directory, and thus to the correct version of the file.
【0180】
また、バージョンごとにファイルの名称が変わる場合でも同じファイルのバー
ジョン間の関係を追跡するための手法が提供される。以下により詳細に説明する
ように、ファイルの名称に加えて、各ファイルの各バージョンに対してFileIDお
よびバージョンナンバが維持される。2つのファイルが同じFileIDを有している
場合、それらは異なる名称を有していたとしても同じファイルの異なるバージョ
ンである。A method is also provided for tracking the relationship between versions of the same file even when the file name changes for each version. In addition to the file's name, a FileID and version number are maintained for each version of each file, as described in more detail below. If two files have the same FileID, they are different versions of the same file, even if they have different names.
【0181】
この発明の一局面によれば、ユーザが見たいと思うプロジェクトの「ビュー」
(view)をユーザが選択することを可能にする機構が提供される。プロジェクトの
ビューはある特定の時点において存在していた状態でのプロジェクトのファイル
を表わす。たとえば、ユーザに提示されるデフォルトビューはすべてのファイル
の最新のバージョンを表わしてもよい。別のビューでは、1日前の時点で最新で
あったファイルのバージョンを表わしているかもしれない。別のビューでは、一
週間前の時点で最新であったファイルのバージョンを表わしていてもよい。According to one aspect of the present invention, a “view” of the project that the user wants to see.
A mechanism is provided that allows the user to select the (view). The view of a project represents the files of the project as they existed at a particular point in time. For example, the default view presented to the user may represent the latest version of all files. Another view may represent the version of the file that was the most recent one day ago. Another view may show the version of the file that was most recent a week ago.
【0182】
一実施例によれば、あるプロジェクトにおける各ファイルとともにバージョン
ナンバを記憶することによってバージョン追跡機構が提供される。たとえば、フ
ァイルテーブル710などの、ファイルテーブルを用いるデータベースシステム
において実現されるファイルシステムにおいて、あるファイルに関連付けられる
行の1つの欄はそのファイルに対するバージョンナンバを記憶してもよい。ファ
イルが作成されるたびに、ファイルに対する行がファイルテーブル710の中に
挿入され、予め定められた最初のバージョンナンバ(たとえば1)がその行のバ
ージョン欄に記憶される。According to one embodiment, a version tracking mechanism is provided by storing a version number with each file in a project. For example, in a file system implemented in a database system that uses a file table, such as file table 710, one column of a row associated with a file may store the version number for that file. Each time a file is created, a row for the file is inserted into the file table 710 and the first predetermined version number (eg, 1) is stored in the version column for that row.
【0183】
ファイルが更新されると、ファイルの前のバージョンは上書きされない。その
代わり、ファイルの新しいバージョンのために新しい行がファイルテーブルに挿
入される。新しいバージョンのための行には元の行と同じFileID、NameおよびCr
eation Dateが含まれるが、より高いバージョンナンバ(たとえば2)、新しいM
odification Dateおよび場合によっては異なるファイルサイズなどが含まれる。
さらに、ファイルの内容を記憶するBLOBは更新を反映することとなるが、元のエ
ントリのBLOBは変わらない。When a file is updated, the previous version of the file is not overwritten. Instead, a new row is inserted in the file table for the new version of the file. The row for the new version has the same FileID, Name and Cr as the original row
eation Date included, but higher version number (eg 2), new M
It includes the odification Date and possibly different file sizes.
Furthermore, the BLOB that stores the contents of the file will reflect the update, but the BLOB of the original entry will not change.
【0184】
一実施例によれば、ファイルとそのファイルが存在するディレクトリとがとも
にあるプロジェクトに属している場合、ファイルへの変更によってディレクトリ
の新しいバージョンが実効的に作成される。これにより、ディレクトリにおける
ファイルの更新により、ファイルの新しいバージョンのためのファイルテーブル
の行が作成されるだけでなく、ディレクトリの新しいバージョンのためのファイ
ルテーブルの行も作成されることとなる。階層インデックスを用いる一実施例に
おいて、ディレクトリの新しいバージョンに対するインデックスエントリもまた
階層インデックスに追加されることとなる。According to one embodiment, if a file and the directory in which the file resides both belong to a project, changes to the file effectively create a new version of the directory. Thus, updating a file in a directory not only creates a file table row for the new version of the file, but also a file table row for the new version of the directory. In one embodiment using a hierarchical index, the index entry for the new version of the directory will also be added to the hierarchical index.
【0185】
もしあるディレクトリと親ディレクトリとがともに同じプロジェクトに属して
いるなら、ディレクトリの新しいバージョンの作成によって親ディレクトリの新
しいバージョンが実効的に作成される。これにより、ディレクトリの親ディレク
トリに対するファイルテーブルおよび階層インデックスにも新しい行が追加され
る。このプロセスは続けられ、あるプロジェクトに属しかつファイル階層構造に
おいて更新されたファイルの上に存在するすべてのディレクトリに対して新しい
バージョンが作られることとなる。If a directory and a parent directory both belong to the same project, creating a new version of the directory effectively creates a new version of the parent directory. This also adds a new row to the file table and hierarchy index for the directory's parent directory. This process continues, and a new version is created for every directory that belongs to a project and exists above the updated files in the file hierarchy.
【0186】
バージョニング機構がプロジェクトに属するファイルの更新にどのように応答
するかを示すため、図13に示されるすべてのファイルがバージョン1であると
仮定し、かつcode1320に対して更新が行なわれたと仮定する。図14に示さ
れるように、バージョニング機構はcode1320の元のバージョンを削除するこ
となく新しいバージョンのcode1320′を作成することによって更新に応答す
る。code1320はSF codeディレクトリ1314に属し、そのため元のバージ
ョンを削除することなく新しいバージョンのSF codeディレクトリ1314′が
作成される。SF codeディレクトリ1314はsource codeディレクトリ1304
に属するため新しいバージョンのsource codeディレクトリ1304′が元のバ
ージョンを削除することなく作成される。最後に、source codeディレクトリ1
304はbig projectディレクトリ1302に属するため、新しいバージョンのb
ig project1302′が元のバージョンを削除することなく作成される。To show how the versioning mechanism responds to updates of files belonging to a project, assume that all files shown in FIG. 13 are version 1 and that updates have been made to code 1320. I assume. As shown in FIG. 14, the versioning mechanism responds to the update by creating a new version of code 1320 'without deleting the original version of code 1320. The code 1320 belongs to the SF code directory 1314, so that a new version of the SF code directory 1314 'is created without deleting the original version. SF code directory 1314 is source code directory 1304
A new version of the source code directory 1304 'is created without deleting the original version. Finally, source code directory 1
304 belongs to big project directory 1302, so new version b
ig project 1302 'is created without deleting the original version.
【0187】
図14に示されるように、親ファイルの新しいバージョンが子ファイルの新し
いバージョンに応答して作成される際、親ファイルの新しいバージョンは更新さ
れたファイルの元のバージョンではなく、更新されたファイルの新しいバージョ
ンが子であることを除いて、引続き更新前に有していたのと同じ子を有する。た
とえば、新しいバージョンのcode1320′は新しいバージョンのSF code13
14′の子である。新しいバージョンのSF code1314′は、新しいバージョ
ンのsource code1304′の子である。しかしながら、元のsource code130
4の変わらない子ファイル(たとえばLA code1312)は引続き新しいバージ
ョンのsource code1304′の子ファイルであり続ける。同様に、新しいバー
ジョンのsource code1304′は新しいバージョンのbig project1302′の
子であるが、元のbig projectの変わらない子ファイル(たとえばdocs1306
)はbig project1302の新しいバージョンの子ファイルであり続ける。As shown in FIG. 14, when a new version of a parent file is created in response to a new version of a child file, the new version of the parent file is updated rather than the original version of the updated file. It still has the same children as it had before the update, except that the new version of the file is a child. For example, the new version of code 1320 'is the new version of SF code13.
14 'child. The new version of SF code 1314 'is a child of the new version of source code 1304'. However, the original source code 130
4 unchanged child files (eg, LA code 1312) continue to be newer versions of the source code 1304 'child files. Similarly, the new version of source code 1304 'is a child of the new version of big project 1302', but the original big project's unchanged child files (eg docs 1306).
) Remains a new version of the big project 1302 child files.
【0188】
ファイルシステムが階層インデックスを用いて実現される実施例では、ディレ
クトリの新しいバージョンに対して作成されたインデックスエントリは、更新さ
れた子ファイルに対するアレイエントリが子ファイルの新しいバージョンに対す
るアレイエントリで置換されることを除いて、ディレクトリの前のバージョンに
対するインデックスエントリと同じDir_entry_listを含むことになる。更新さ
れた子ファイルが子ディレクトリであった場合、新しいディレクトリに対するDi
r_entry_listアレイエントリは、子ディレクトリの新しいバージョンに対する
インデックスエントリの、階層インデックス内の、RowIDを含むこととなる。In an embodiment where the file system is implemented using a hierarchical index, the index entry created for the new version of the directory is such that the array entry for the updated child file is the array entry for the new version of the child file. It will contain the same Dir_entry_list as the index entry for the previous version of the directory, except that it will be replaced. If the updated child file was a child directory, Di for the new directory
The r_entry_list array entry will contain the RowID in the hierarchical index of the index entry for the new version of the child directory.
【0189】
あるプロジェクトに属するファイルがそのプロジェクトにおける1つのディレ
クトリからそのプロジェクトにおける別のディレクトリに移動された場合、ファ
イルそのものは変更されていないため、ファイルの新しいバージョンは作成され
ない。しかしながら、ファイルが移動された元のディレクトリおよびファイルが
入れられたディレクトリはともに変更されている。このため、これらのディレク
トリおよび同じプロジェクトにあるこれらのディレクトリのすべての先祖ディレ
クトリに対して新しいバージョンが作成される。図15は、LA code1312か
らSF code1314へ移動される図13のcode1318に応答して作られること
になる新しいディレクトリを示す。具体的には、新しいバージョンのLA code1
312′およびSF code1314′が作成されることになる。新しいバージョン
のLA code1312′はその子としてcode1318を有さない。むしろ、code1
318は新しいバージョンのSF code1314′の子となる。新しいsource code
ディレクトリ1304′が作成され、新しいバージョンのLA code1312′お
よびSF code1314′にリンクされる。新しいbig projectディレクトリ130
2′が作成され、新しいsource code1304′および元のdocsディレクトリ1
306にリンクされる。When a file belonging to a project is moved from one directory in that project to another directory in that project, a new version of the file is not created because the file itself has not changed. However, both the original directory where the file was moved and the directory where the file was placed have changed. Therefore, new versions are created for these directories and all ancestor directories of these directories in the same project. FIG. 15 shows a new directory that will be created in response to code 1318 of FIG. 13 moved from LA code 1312 to SF code 1314. Specifically, the new version of LA code1
312 'and SF code 1314' will be created. The new version of LA code 1312 'does not have code 1318 as its child. Rather, code1
318 is a child of the new version of SF code 1314 '. New source code
A directory 1304 'is created and linked to the new version of LA code 1312' and SF code 1314 '. New big project directory 130
2'created with new source code 1304 'and original docs directory 1
Linked to 306.
【0190】
上述のバージョニング手法を用いて、あるプロジェクト(たとえばbig projec
t1302)に対して変更が加えられる度にそのプロジェクトのルートディレク
トリの新しいバージョンが作成される。ルートプロジェクトディレクトリの各バ
ージョンから派生するリンクはある特定の時点においてそのプロジェクトに属し
ていたすべてのファイルを互いにリンクし、このようにリンクされたファイルの
バージョンはそのある特定の時点において存在していたバージョンである。たと
えば、図14を参照して、big project1302から派生するリンクはcode13
20に対する更新の前に存在していた状態でのプロジェクトを反映している。bi
g project1302′から派生するリンクは、code1320に対する更新の直後
に存在していた状態でのプロジェクトを反映する。同様に、図15において、bi
g project1302から派生するリンクは、code1318をLA code1312から
SF code1314へ移動する前に存在していた状態でのプロジェクトを反映する。
big project1302′から派生するリンクは、code1318をLA code1312
からSF code1314へ移動した直後に存在していた状態でのプロジェクトを反
映する。Using the versioning technique described above, one project (eg big projec
Each time a change is made to t1302) a new version of the project root directory is created. A link that is derived from each version of the root project directory links all the files that belonged to that project to each other at a particular point in time, and the versions of the files linked in this way existed at that particular point in time. It is a version. For example, referring to FIG. 14, the link derived from big project 1302 is code13.
It reflects the project as it existed before the update to 20. bi
The links derived from g project 1302 'reflect the project as it existed immediately after the update to code 1320. Similarly, in FIG.
The link derived from g project 1302 is code 1318 from LA code 1312
It reflects the project as it existed before moving to SF code 1314.
For links derived from big project 1302 ', code 1318 is LA code 1312
Reflects the project as it existed immediately after moving from to SF code 1314.
【0191】
タグ付け
残念なことに、上述のバージョニング手法により、特にプロジェクトのより上
位のレベルにおけるディレクトリの、ファイルバージョンの大幅な急増が起きる
。状況によっては、このような急増は必要ではなく望ましくもないかもしれない
。したがって、この発明の一実施例によれば、ファイルのバージョンに「タグ付
けする」ための機構が提供される。ファイルのバージョンのタグ付けによりファ
イルのそのバージョンを保持すべきであることを示す。すなわち、より新しいバ
ージョンが作成される際にファイルのより古いバージョンを常に保持するのでは
なく、ファイルのより古いバージョンはタグ付けされている場合にのみ保持され
る。そうでなければ、これらはより新しいバージョンが作成される際に置換され
る(上書きされる)。Tagging Unfortunately, the versioning approach described above results in a significant surge of file versions, especially in directories at higher levels of the project. In some circumstances, such a surge may not be necessary or desirable. Thus, according to one embodiment of the present invention, a mechanism is provided for "tagging" a version of a file. Tagging the version of a file indicates that that version of the file should be retained. That is, rather than always retaining the older version of the file when the newer version is created, the older version of the file is retained only if it is tagged. Otherwise, they will be replaced (overwritten) when a newer version is created.
【0192】
図13を参照して、code1320がタグ付けされていないものと仮定する。co
de1320が更新された場合、codeの新しいバージョンは単にcodeの古いバージ
ョンで置換される。code1320がタグ付けされている場合にのみ、図14に示
されるように、code1320、SF code1314、source code1304およびbi
g project1302の別個の新しいバージョンが作られることとなる。Referring to FIG. 13, assume that code 1320 is untagged. co
When de1320 is updated, the new version of code is simply replaced by the old version of code. Only if code 1320 is tagged, as shown in FIG. 14, code 1320, SF code 1314, source code 1304 and bi
A separate new version of g project 1302 will be created.
【0193】
多くの場合、タグはあるプロジェクト内のすべてのファイルに対して同時に適
用されることになる。たとえば、あるソフトウェアプログラムのある特定のバー
ジョンがリリースされた場合、プログラムのリリースされたバージョンを作成す
るのに用いられたすべてのソースコードはその時点でタグ付けされてもよい。こ
れにより、ソースコードファイルへのその後の改訂にかかわらず、リリースされ
たバージョンに関連付けられる正確に同じソースコードの組が後に参照するため
に利用可能となる。In many cases, tags will be applied to all files within a project at the same time. For example, if a particular version of a software program is released, then all source code used to create the released version of the program may be tagged at that time. This makes the exact same set of source code associated with the released version available for later reference, regardless of subsequent revisions to the source code files.
【0194】
タグが常に全体としてのプロジェクトに適用される実施例において、単一のタ
グがルートプロジェクトディレクトリに対して維持されてもよい。タグ付けされ
ているルートプロジェクトディレクトリのバージョンを用いてあるファイルの場
所を確認する場合、そのファイルに対するいかなる変更もそのファイルの新しい
バージョンを作成することにつながり、その一方でそのファイルの元のバージョ
ンが保持される。逆に、タグ付けされていないルートプロジェクトディレクトリ
のバージョンを用いてファイルの場所が確認される場合、そのファイルに対する
いかなる変更も単にファイルの前のバージョンを上書きすることになる。In embodiments where tags are always applied to the project as a whole, a single tag may be maintained for the root project directory. If you use the tagged version of the root project directory to locate a file, any changes to that file will create a new version of that file, while the original version of that file will Retained. Conversely, if the location of a file is verified using the untagged version of the root project directory, any changes to that file will simply overwrite the previous version of the file.
【0195】
別の実施例によれば、タグをファイルに適用することはファイル階層構造にお
いてそのファイルより下にあるすべてのファイルにタグを実効的に適用する。た
とえば、タグがLA code1312に適用されるものと仮定する。code1318がL
A code1312から外へ移動される場合、LA code1312の新しいバージョン
が作成される。code1318が更新される場合、code1318およびLA code1
312の双方の新しいバージョンが作成される。このような実施例において、す
べてのタグ付きファイルを通してファイル階層構造をトラバースすることによっ
てファイルの場所が確認される場合、そのファイルに対するどんな変更によって
もファイルの新しいバージョンが作成されることになる。階層構造におけるタグ
付けされたいずれのファイルもトラバースすることなくファイルの場所が確認さ
れる場合、そのファイルに対するどんな変更もそのファイルの前のバージョンを
上書きすることとなる。According to another embodiment, applying a tag to a file effectively applies the tag to all files below that file in the file hierarchy. For example, assume that the tag applies to LA code 1312. code1318 is L
When moved out of A code 1312, a new version of LA code 1312 is created. If code1318 is updated, code1318 and LA code1
Both new versions of 312 are created. In such an embodiment, if the location of a file is verified by traversing the file hierarchy through all tagged files, any changes to that file will create a new version of the file. If the location of a file is verified without traversing any tagged files in the hierarchy, then any changes to that file will overwrite the previous version of that file.
【0196】
パージカウント
タグ付けの代わりにまたはタグ付けに加えて用いることができるバージョンの
急増を低減するための別の手法には、パージカウントを維持することが含まれる
。パージカウントは、いずれかの所与のファイルに対して保持されることとなる
バージョンの最大数を示す。既にバージョンの数がパージカウントに達している
ファイルに対して新しいバージョンが作成される場合、そのファイルの新しいバ
ージョンはそのファイルの保持される最も古いバージョンを上書きする。パージ
カウントはファイルごとのシステム、プロジェクトごとのベースまたはファイル
ごとのベースで実現されてもよい。ファイルごとのシステムのベースで実現され
る場合、単一のパージカウントがファイルシステムにおいて維持されるすべての
ファイルに適用される。プロジェクトごとのベースでは、所与のプロジェクトに
おけるすべてのファイルは同じパージカウントを有するが、異なるプロジェクト
は異なるパージカウントを有し得る。ファイルごとのベースでは、各ファイルに
対して異なるパージカウントが特定され得る。Purge Count Another approach to reduce version spikes that can be used instead of or in addition to tagging involves maintaining a purge count. The purge count indicates the maximum number of versions that will be kept for any given file. When a new version is created for a file that has already reached the purge count of versions, the new version of the file overwrites the oldest retained version of the file. The purge count may be implemented on a file-by-file system, project-by-project basis, or file-by-file basis. When implemented on a file-by-file system basis, a single purge count applies to all files maintained in the file system. On a project-by-project basis, all files in a given project may have the same purge count, but different projects may have different purge counts. On a file-by-file basis, different purge counts may be specified for each file.
【0197】
タグ付けと組合せて用いられる場合、パージカウント機構はさまざまな態様で
実現され得る。一実施例によれば、タグ付けされたファイルは、ファイルの新し
いバージョンを作成することによってパージカウントを超えることになるかどう
かを判定する目的では無視され、タグ付けされたファイルはパージカウント機構
によっては削除されることは決してない。たとえば、あるファイルに対するパー
ジカウントが5であり、すなわちそのファイルの5つのバージョンが存在すると
仮定し、かつこれらの5つのバージョンのうちの1つにタグ付けがされていると
仮定する。そのファイルに対して更新がなされると、パージカウント機構は、現
在そのファイルの既存のタグなしバージョンは4つしかないと判断し、よって、
既存のバージョンのいずれをも削除することなくファイルの別のバージョンを作
成する。同じファイルが再び更新された場合は、パージカウント機構は、ファイ
ルの既存のタグなしバージョンは5つであると判定し、よって、新しいバージョ
ンを作成することに応答してファイルの最も古いタグなしバージョンを削除する
。When used in combination with tagging, the purge counting mechanism can be implemented in various ways. According to one embodiment, tagged files are ignored for the purpose of determining if creating a new version of a file will exceed the purge count, and tagged files are purged by the purge count mechanism. Is never deleted. For example, assume that the purge count for a file is 5, that is, there are 5 versions of the file, and that one of these 5 versions is tagged. When an update is made to that file, the purge count mechanism determines that there are currently only four untagged versions of that file, and thus
Create another version of the file without deleting any of the existing versions. If the same file is updated again, the purge count mechanism determines that there are five existing untagged versions of the file, and thus in response to creating a new version, the oldest untagged version of the file. To delete.
【0198】
プロジェクト間リンク
各リンクはソースファイル(そのリンクが拡張される元のファイル)およびタ
ーゲットファイル(そのリンクが指し示すファイル)を有する。ファイル階層構
造において、リンクのソースファイルはしばしばディレクトリであり、リンクの
ターゲットファイルはディレクトリ内のファイルである。しかしながら、リンク
のすべてがディレクトリとその子との間のものであるわけではない。たとえばH
TMLファイルは、グラフィック画像および他のHTMLファイルへのハイパー
リンクを含み得る。階層インデックスを用いて実現されるファイルシステムでは
、これらのハイパーリンクはディレクトリ−文書間リンクと同様の態様で扱うこ
とができる。Inter-Project Links Each link has a source file (the original file that the link is extended from) and a target file (the file that the link points to). In the file hierarchy, the source files for links are often directories and the target files for links are files within directories. However, not all links are between a directory and its children. For example H
TML files may include hyperlinks to graphic images and other HTML files. In the file system realized by using the hierarchical index, these hyperlinks can be handled in the same manner as the directory-document link.
【0199】
ファイルシステムのビューにより、ファイルシステムにおける各プロジェクト
がある特定の時点においてどのように存在していたかが示される。しかしながら
、あるビューにおける1つのプロジェクトに関連付けられるその時点は、同じビ
ューにおける別のプロジェクトに関連付けられる時点とは異なるかもしれない。
このことにより、リンクのソースファイルがリンクのターゲットファイルとは異
なるプロジェクトに属する場合に問題が生じる。たとえば、ビューが、ファイル
F1を含むプロジェクトP1に対する時間T1とファイルF2を含むプロジェク
トP2に対する後の時間T2とを特定すると仮定する。さらに、ファイルF2が
ファイルF1へのリンクを有すると仮定する。F2のT2バージョンに含まれる
リンクはP1のT2バージョンへ行くのであり、P1のT1バージョンに行くの
ではない。しかしながら、そのビューはP1に対するT1を特定するため、その
ビューを介してP1におけるいずれのファイルに対して行なわれるどんなオペレ
ーションに対してもP1のT1バージョンが用いられるべきである。A view of the file system shows how each project in the file system existed at a particular point in time. However, the time associated with one project in one view may be different than the time associated with another project in the same view.
This causes problems if the source file of the link belongs to a different project than the target file of the link. For example, assume that a view identifies a time T1 for a project P1 containing a file F1 and a later time T2 for a project P2 containing a file F2. Further assume that file F2 has a link to file F1. The links contained in the T2 version of F2 go to the T2 version of P1, not to the T1 version of P1. However, that view identifies the T1 for P1, so any T1 version of P1 used for any file in P1 via that view should be used.
【0200】
この発明の一実施例によれば、各リンクに対して「プロジェクト間境界」フラ
グが維持される。リンクのプロジェクト間境界フラグは、そのリンクのソースフ
ァイルおよびターゲットファイルが同じプロジェクトにあるかどうかを示す。階
層インデックス510などの階層インデックスを用いるファイルシステムにおい
て、プロジェクト間境界フラグはたとえば、インデックスエントリのDir_entry
_listの各アレイエントリに記憶されてもよい。According to one embodiment of the invention, an "inter-project boundary" flag is maintained for each link. The inter-project boundary flag for a link indicates whether the source and target files for that link are in the same project. In a file system that uses a hierarchical index such as the hierarchical index 510, the inter-project boundary flag is, for example, Dir_entry of the index entry.
It may be stored in each array entry of _list.
【0201】
ファイル階層構造のトラバース(traversal)において、すべてのリンクのプロ
ジェクト間境界フラグはそのリンクをたどる前に検査される。あるリンクのプロ
ジェクト間境界フラグが設定されている場合、ソース側ファイルが属しているプ
ロジェクトの要求されるバージョン時間はターゲット側ファイルが属しているプ
ロジェクトの要求されるバージョン時間と比較される。所望のバージョン時間が
同じである場合、そのリンクはトラバースされる。所望のバージョン時間が同じ
ではない場合、ターゲット側ファイルが属しているプロジェクトの要求されるバ
ージョン時間に対応するターゲットファイルのバージョンを探してサーチが行わ
れる。In a file hierarchy traversal, the inter-project boundary flag of every link is checked before following that link. If the inter-project boundary flag for a link is set, the required version time of the project to which the source file belongs is compared to the required version time of the project to which the target file belongs. If the desired version times are the same, the link is traversed. If the desired version times are not the same, a search is performed for the version of the target file that corresponds to the required version time of the project to which the target file belongs.
【0202】
たとえば、F2とF1との間のリンクのプロジェクト間境界フラグが設定され
ることとなる。これにより、P2の要求されるバージョン時間とP1の要求され
るバージョン時間とが比較される。P2の要求されるバージョン時間はT2であ
り、これはP1の要求されるバージョン時間であるT1と同じではない。したが
って、P1はリンクをたどることによってその場所を確認することはできないで
あろう。その代わり、時間T1に対応するP1のバージョンの場所を確認するた
めにサーチが行われることとなる。For example, the inter-project boundary flag of the link between F2 and F1 will be set. This compares the required version time of P2 with the required version time of P1. The required version time of P2 is T2, which is not the same as the required version time of P1. Therefore, P1 would not be able to ascertain its location by following the link. Instead, a search will be performed to locate the version of P1 corresponding to time T1.
【0203】
代替の実施例によれば、プロジェクト間境界フラグは全く維持されない。代わ
りに、リンクに遭遇するたびに、ソースファイルの要求されるバージョン時間が
ターゲットファイルの要求されるバージョン時間と比較される。ソースファイル
とターゲットファイルとが同じプロジェクトにある場合、または同じ要求される
バージョン時間を有する異なるプロジェクトにある場合、そのリンクをたどる。
そうでなければ、ターゲットファイルの正しいバージョンを探してサーチが行な
われる。According to an alternative embodiment, no inter-project boundary flags are maintained. Instead, each time a link is encountered, the required version time of the source file is compared to the required version time of the target file. If the source and target files are in the same project or in different projects with the same required version time, follow that link.
Otherwise, the search is done for the correct version of the target file.
【0204】
オブジェクト指向ファイルシステム
近年、オブジェクト指向プログラミングが標準のプログラミング規範となって
いる。オブジェクト指向プログラミングでは、世界はオブジェクトの観点からモ
デル化される。オブジェクトとは、記録を操る手続きおよび機能と組合される記
録である。あるオブジェクトクラスにおけるすべてのオブジェクトは同じフィー
ルド(「属性」)を有し、同じ手続きおよび機能(「方法」)により操られる。
オブジェクトはそれが属するオブジェクトクラスの「インスタンス」であるとい
われる。Object-Oriented File System In recent years, object-oriented programming has become a standard programming standard. In object-oriented programming, the world is modeled in terms of objects. An object is a record that is associated with the procedures and functions that manipulate the record. All objects in an object class have the same fields (“attributes”) and are manipulated by the same procedures and functions (“methods”).
An object is said to be an "instance" of the object class to which it belongs.
【0205】
ときおり、アプリケーションは、類似であるが同一ではないオブジェクトクラ
スの使用を必要とすることがある。たとえば、イルカと犬との両方をモデル化す
るのに用いられるオブジェクトクラスには鼻、口、長さおよび年齢の属性が含ま
れるかもしれない。しかしながら、犬オブジェクトクラスは毛色属性を必要とす
る一方、イルカオブジェクトクラスはひれの大きさの属性を必要とするかもしれ
ない。At times, applications may require the use of similar but not identical object classes. For example, the object classes used to model both dolphins and dogs may include nose, mouth, length and age attributes. However, the dog object class may require a coat color attribute, while the dolphin object class may require a fin size attribute.
【0206】
あるアプリケーションが複数の類似の属性を必要とする状況におけるプログラ
ミングを容易にするため、オブジェクト指向プログラミングでは「継承」をサポ
ートする。継承がなければ、プログラマは犬オブジェクトクラスに対して1つの
コードのセットを書き、イルカオブジェクトクラスに対して第2のコードのセッ
トを書かなければならなくなる。双方のオブジェクトクラスに共通した属性およ
び方法を実現するコードは双方のオブジェクトクラスに重複して現われることと
なる。このような態様でコードが重複しているのは、特に、共通の属性および方
法の数が独特の属性の数よりはるかに多い場合に非常に効率が悪い。さらに、オ
ブジェクトクラス間のコード重複によりコードを改訂するプロセスが複雑になる
。これは、その属性を有するすべてのオブジェクトクラス間で整合性を維持する
ために、共通の属性に対して加えられた変更はコードにおける複数の位置におい
て複製されなければならないためである。Object-oriented programming supports “inheritance” to facilitate programming in situations where an application requires multiple similar attributes. Without inheritance, the programmer would have to write one set of code for the dog object class and a second set of code for the dolphin object class. Code that implements the attributes and methods common to both object classes will be duplicated in both object classes. Duplicating code in this manner is very inefficient, especially when the number of common attributes and methods is much greater than the number of unique attributes. In addition, code duplication between object classes complicates the code revision process. This is because changes made to common attributes must be replicated at multiple places in the code to maintain consistency across all object classes that have that attribute.
【0207】
継承により、オブジェクトクラス間に階層構造を確立することが可能となる。
所与のオブジェクトクラスの属性および方法は、自動的に階層構造における所与
のオブジェクトクラスに基づいたオブジェクトクラスの属性および方法となる。
たとえば、「動物」オブジェクトクラスは関連付けられた方法とともに、鼻、口
、長さおよび年齢属性を有するものとして定義付けられ得る。これらの属性およ
び方法をイルカおよび犬オブジェクトクラスに追加するため、プログラマはイル
カおよび犬オブジェクトクラスが動物オブジェクトクラスを「継承する」のを特
定することができる。このような状況の下で、イルカおよび犬オブジェクトクラ
スは動物オブジェクトクラスの「サブクラス」であるといえ、動物オブジェクト
クラスは犬およびイルカオブジェクトクラスの「親」クラスであるといわれる。By inheritance, it is possible to establish a hierarchical structure between object classes.
The attributes and methods of a given object class automatically become the attributes and methods of the object class based on the given object class in the hierarchy.
For example, the "animal" object class may be defined as having nose, mouth, length and age attributes, along with associated methods. By adding these attributes and methods to the dolphin and dog object classes, programmers can specify that the dolphin and dog object classes "inherit" the animal object class. Under these circumstances, the dolphin and dog object classes are said to be "subclasses" of the animal object class, but the animal object class is said to be the "parent" class of the dog and dolphin object classes.
【0208】
この発明の一局面によれば、ファイルシステムに対して、継承を含むオブジェ
クト指向規範を適用するための機構が提供される。具体的には、ファイルシステ
ムにおける各ファイルはあるクラスに属する。ファイルシステムのクラスは、と
りわけ、ファイルシステムがそのファイルについて記憶している情報のタイプを
定める。一実施例によれば、ベースクラスが設けられる。ファイルシステムのユ
ーザはそこで他のクラスを登録してもよく、これはベースクラスまたはいずれか
の前に登録したクラスのサブクラスとして定義付けられてもよい。According to one aspect of the present invention, a mechanism for applying an object-oriented standard including inheritance to a file system is provided. Specifically, each file in the file system belongs to a certain class. File system classes define, among other things, the type of information the file system stores about its files. According to one embodiment, a base class is provided. A file system user may register other classes there, which may be defined as a base class or a subclass of any previously registered class.
【0209】
新しいファイルクラスがファイルシステムに登録される際、ファイルシステム
は新しいタイプのファイルおよび新しいタイプのファイルシステムとの対話をサ
ポートするよう実効的に拡張される。たとえば、ほとんどの電子メールアプリケ
ーションは電子メール文書が「優先度」プロパティを有していることを期待する
。ファイルシステムが優先度プロパティのための記憶をもたらしていない場合、
電子メールアプリケーションはそのファイルシステムに記憶される電子メール文
書に対して正しく動作しないかもしれない。同様に、あるオペレーティングシス
テムは、あるタイプのシステム情報がファイルとともに記憶されていることを期
待するかもしれない。ファイルシステムがその情報を記憶していない場合、オペ
レーティングシステムは問題に遭遇し得る。ある特定のタイプのシステムまたは
プロトコル(たとえば、特定のオペレーティングシステム、FTP、HTPP、
IMAP4など)をサポートするのに必要とされるすべての属性を含むクラスを
登録することによって、そのシステムまたはプロトコルとの正確かつ透過的な対
話が可能となる。When a new file class is registered with a file system, the file system is effectively extended to support new types of files and interactions with the new type of file system. For example, most email applications expect email documents to have a "priority" property. If the file system does not provide a memory for priority properties,
Email applications may not work correctly with email documents stored in that file system. Similarly, some operating systems may expect some type of system information to be stored with the file. If the file system does not store that information, the operating system may encounter problems. A particular type of system or protocol (eg, a particular operating system, FTP, HTTPP,
Registering a class that contains all the attributes needed to support IMAP4, etc.) allows for accurate and transparent interaction with that system or protocol.
【0210】
クラスを登録するために、そのクラスについての情報がもたらされ、これはそ
のクラスの親クラスを識別し親クラスが有していない属性でそのクラスが有して
いるどんな属性をも記述するデータを含む。その情報はまた、そのクラスのイン
スタンスに対して動作する特定の方法を特定してもよい。To register a class, information about that class is provided, which identifies the parent class of the class and has any attributes that the class does not have. Contains the data to describe. The information may also identify a particular way to operate on an instance of that class.
【0211】
ユーザがファイルクラスを登録することを可能にし、ファイルクラス間での継
承をサポートし、ファイルが属するクラスに基づいてファイルについての情報を
記憶するオブジェクト指向ファイルシステムは、ファイルシステムそのものが実
現されるコンテキストに応じてさまざまな態様で実現され得る。一実施例によれ
ば、オブジェクト指向ファイルシステムは上述のようにデータベース実現型ファ
イルシステムのコンテキストにおいて提供される。オブジェクト指向ファイルシ
ステムのさまざまな局面をデータベース実現型の実施例に関連して説明するが、
ここで説明するオブジェクト指向ファイルシステム手法はそのような実施例に限
定されるものではない。The file system itself is an object-oriented file system that enables users to register file classes, supports inheritance between file classes, and stores information about files based on the class to which the files belong. It can be implemented in various ways depending on the context in which it is performed. According to one embodiment, the object oriented file system is provided in the context of a database-implemented file system as described above. Various aspects of an object-oriented file system are described in connection with database-implemented embodiments,
The object oriented file system approach described here is not limited to such an embodiment.
【0212】
オブジェクト指向ファイルシステムのデータベース実現
一実施例によれば、データベース実現型ファイルシステムはベースクラスを設
けており、そのベースクラスのサブクラスをファイルシステムに登録することが
可能である。図16を参照して、ファイルクラスの例示的なセットが示される。
ベースクラスは「Files」と題され、名称、作成日および変更日を含むすべての
ファイルに一般的に共通である属性を含む。同様に、Filesクラスの方法には、
すべてのファイルに対して行われ得るオペレーションのための方法が含まれる。Database Implementation of Object-Oriented File System According to one embodiment, a database-implemented file system has a base class, and subclasses of the base class can be registered in the file system. Referring to FIG. 16, an exemplary set of file classes is shown.
The base class is titled "Files" and contains attributes that are commonly common to all files including name, creation date and modification date. Similarly, the Files class method
Includes methods for operations that can be performed on all files.
【0213】
一実施例によれば、Filesクラスの属性は、データベース実現型ファイルシス
テムがともに用いられることになるオペレーティングシステムによって維持され
るすべての属性の合併である。たとえば、図3に示されるようにサーバ204に
よって維持されるデータベースにおいてファイルシステムが実現されていると仮
定する。そのファイルシステムに記憶されるファイルはオペレーティングシステ
ム304aおよびオペレーティングシステム304bから生じたものであるが、
これらのオペレーティングシステムは必ずしも同じファイル属性のセットをサポ
ートするわけではない。このため、データベースサーバ204によって実現され
るファイルシステムのFilesクラスの属性のセットは2つのオペレーティングシ
ステム304aおよび304bによってサポートされる属性のセットの合併とな
る。According to one embodiment, the attributes of the Files class are a union of all the attributes maintained by the operating system with which the database-implemented file system will be used. For example, assume that a file system is implemented in a database maintained by server 204 as shown in FIG. The files stored in that file system originated from operating system 304a and operating system 304b,
These operating systems do not necessarily support the same set of file attributes. Thus, the set of attributes of the Files class of the file system implemented by the database server 204 is a union of the set of attributes supported by the two operating systems 304a and 304b.
【0214】
代替の実施例によれば、Filesクラスの属性はデータベース実現型ファイルシ
ステムがともに用いられるオペレーティングシステムによって維持されるすべて
の属性の交差である。そのような実施例においては、Filesクラスのサブクラス
を各オペレーティングシステムに対して登録することができる。所与のオペレー
ティングシステムに対して登録されたサブクラスは、ベースのFilesクラスに既
に含まれていない所与のオペレーティングシステムによってサポートされる属性
のすべてを追加することによってベースのFilesクラスを拡張することとなる。According to an alternative embodiment, the attributes of the Files class are intersections of all the attributes maintained by the operating system with which the database-implemented file system is used. In such an embodiment, a subclass of the Files class could be registered for each operating system. A subclass registered for a given operating system can extend the base Files class by adding all of the attributes supported by the given operating system that are not already included in the base Files class. Become.
【0215】
図16に例示される実施例では、「Document」クラスおよび「Folder」クラス
の、Filesの2つのサブクラスが登録されている。DocumentクラスはFilesクラス
の属性および方法のすべてを継承し、かつ文書ファイルに特有の属性を追加する
。例示される実施例では、Documentクラスは属性「サイズ」を追加する。In the example illustrated in FIG. 16, two subclasses of Files of the “Document” class and the “Folder” class are registered. The Document class inherits all of the attributes and methods of the Files class, and adds document file-specific attributes. In the illustrated example, the Document class adds the attribute "size".
【0216】
Folderクラスは、Filesクラスの属性および方法のすべてを継承し、フォルダ
ファイル(すなわち、他のファイルを含むことが可能である、ディレクトリなど
のファイル)に特有である属性および方法を追加する。例示される実施例では、
Folderクラスは新しい属性「max_children」および新しい方法「dir_list」を
導入している。max_children属性はたとえば、所与のフォルダ内に含まれ得る
子ファイルの最大数を示していてもよい。dir_list方法はたとえば、所与のフ
ォルダの子ファイルのすべてのリストを提供するようにしてもよい。The Folder class inherits all of the attributes and methods of the Files class and adds attributes and methods that are specific to folder files (ie files, such as directories, which can contain other files). . In the illustrated embodiment,
The Folder class introduces a new attribute "max_children" and a new method "dir_list". The max_children attribute may indicate, for example, the maximum number of child files that can be included in a given folder. The dir_list method may, for example, provide a list of all child files in a given folder.
【0217】
図16に例示されるクラス階層構造では、Documentクラスは、e-mailおよびTe
xtの2つの登録されたサブクラスを有する。これらのサブクラスは両方ともDocu
mentクラスの属性および方法のすべてを継承する。さらに、e-mailクラスは、Re
ad_flag、優先度および送信者の3つの追加のプロパティを含む。Textクラスは
1つの追加の属性であるCR_Flagと追加の方法Typeとを有する。CR_Flagは、テ
キスト文書が「復帰」(carriage return)記号を含むかどうかを示すフラグであ
ってもよい。Type方法は、コンピュータモニタなどの入出力デバイスへテキスト
文書を出力する。In the class hierarchy structure illustrated in FIG. 16, the Document class includes e-mail and Te.
It has two registered subclasses of xt. Both of these subclasses are Docu
Inherits all the attributes and methods of the ment class. In addition, the e-mail class is Re
It contains three additional properties: ad_flag, priority and sender. The Text class has one additional attribute, CR_Flag, and an additional method Type. CR_Flag may be a flag that indicates whether the text document includes a "carriage return" symbol. The Type method outputs a text document to an input / output device such as a computer monitor.
【0218】
ファイルクラスおよびファイル形式
ファイルの内部構造はファイルの「形式」と称される。典型的に、ファイルの
形式はファイルを作成するアプリケーションにより決められる。たとえば、ある
ワードプロセッサにより作成された文書は別のワードプロセッサによって作成さ
れた別の文書と同じ意味内容を有していても、全く異なる形式を有しているかも
しれない。いくつかのファイルシステムでは、文書形式とファイル名拡張子との
間にマッピングが維持されている。たとえば、.docで終わるファイル名を有する
すべてのファイルはある特定のワードプロセッサにより作成されたファイルであ
ると推定され、よって、そのワードプロセッサによって強いられる内部構造を有
するものと推定される。他のファイルシステムでは、文書の形式についての情報
はその文書に関連付けられる別個のメタファイルにおいて維持される。File Class and File Format The internal structure of a file is called the “format” of the file. Typically, the file format is determined by the application that creates the file. For example, a document created by one word processor may have the same semantic content as another document created by another word processor, but have a completely different format. Some file systems maintain a mapping between document format and filename extension. For example, all files with filenames ending in .doc are presumed to be files created by a particular word processor, and thus presumed to have internal structure imposed by that word processor. In other file systems, information about the format of a document is maintained in a separate metafile associated with that document.
【0219】
ファイル形式とは対照的に、ここに説明するファイルクラス機構は文書の内部
構造に関連しない。むしろ、ファイルのファイルクラスはファイルシステムがそ
のファイルに対してどんな情報を維持するか、かつファイルシステムがファイル
にどんなオペレーションを行なえるかを決める。たとえば、多数のワードプロセ
ッサによって作成された文書はすべてDocumentクラスのインスタンスであり得る
。このため、ファイルシステムは文書の内部構造が完全に異なっていても、文書
について同じ属性情報を維持し、文書に対して同じオペレーションを行なうこと
を可能にする。In contrast to the file format, the file class mechanism described here does not relate to the internal structure of a document. Rather, the file class of a file determines what information the file system maintains for that file, and what operations the file system can perform on the file. For example, documents created by multiple word processors can all be instances of the Document class. Therefore, the file system maintains the same attribute information about the document and enables the same operation on the document even if the internal structure of the document is completely different.
【0220】
クラステーブル
一実施例によれば、オブジェクト指向ファイルシステムは、ファイルの各クラ
スに対して関係テーブルが作成される関係データベースシステムにおいて実現さ
れる。図17は、図16に例示されるクラスに対して作成され得るテーブルの一
例である。具体的には、Filesテーブル1702、documentテーブル1704、E
-mailテーブル1706、Textテーブル1708およびFolderテーブル1708
はそれぞれ、Filesクラス、Documentクラス、E-mailクラス、TextクラスおよびF
olderクラスに対応する。Class Tables According to one embodiment, an object oriented file system is implemented in a relational database system in which a relation table is created for each class of file. FIG. 17 is an example of a table that can be created for the classes illustrated in FIG. Specifically, Files table 1702, document table 1704, E
-mail table 1706, text table 1708 and folder table 1708
Are the Files class, Document class, E-mail class, Text class and F, respectively.
Corresponds to older classes.
【0221】
一実施例によれば、所与のクラスに対するクラステーブルは、(1)その所与
のクラスに属するファイルおよび(2)その所与のクラスのいずれかの子孫(des
cendant)クラスに属するファイルのための行を含む。たとえば、例示されるシス
テムにおいて、Filesクラスはベースクラスである。したがって、ファイルシス
テムにおけるすべてのファイルはFilesクラスまたはその子孫クラスのメンバと
なる。したがって、Filesテーブルはファイルシステムにおけるすべてのファイ
ルに対する行を含むこととなる。一方、E-mailクラスおよびTextクラスはDocume
ntクラスの子孫であるが、FilesクラスおよびFolderクラスはそうではない。し
たがって、Documentテーブル1704は、クラスDocument、E-mailまたはTextの
すべてのファイルに対する行を含むが、クラスFilesまたはFolderのものである
ファイルに対する行は含まない。According to one embodiment, the class table for a given class includes (1) files belonging to that given class and (2) any descendants of that given class.
cendant) Contains lines for files that belong to the class. For example, in the illustrated system, the Files class is a base class. Therefore, every file in the file system is a member of the Files class or its descendants. Therefore, the Files table will contain a row for every file in the file system. On the other hand, E-mail class and Text class are Docume
It is a descendant of the nt class, but not the Files and Folder classes. Thus, the Document table 1704 contains rows for all files of class Document, E-mail or Text, but not for files that are of class Files or Folder.
【0222】
各クラスに対するテーブルは、そのクラスにより導入された属性に対する値を
記憶する欄を含む。たとえば、DocumentクラスはFilesクラスの属性を継承し、
これらの属性にサイズ属性を追加する。したがって、Documentテーブルには、サ
イズ属性に対するサイズ値を記憶するための欄が含まれる。同様に、E-mailクラ
スはDocumentクラスの属性を継承し、read_flag、優先度および送信者属性を導
入する。したがって、E-mailテーブル1706には、read_flag値、優先度値お
よび送信者値を記憶するための欄が含まれる。The table for each class includes a column that stores the values for the attributes introduced by that class. For example, the Document class inherits the attributes of the Files class,
Add size attributes to these attributes. Therefore, the Document table includes a field for storing the size value for the size attribute. Similarly, the E-mail class inherits the attributes of the Document class and introduces read_flag, priority and sender attributes. Therefore, the E-mail table 1706 includes columns for storing the read_flag value, the priority value, and the sender value.
【0223】
図17に示されるファイルシステムにおいて5つのファイルが記憶されている
。File1と名づけられたファイルはFilesテーブル1702におけるRowID X1に記
憶される。File1のFileIDはF1である。File1のクラスはFileクラスであり、こ
れは行X1のClass欄に記憶される値によって示されるとおりである。File1はFi
lesクラスのインスタンスであるため、Filesテーブル1704はFile1に対する
情報を含む唯一のクラステーブルである。したがって、File1に対して記憶され
る唯一の属性値はFilesクラスに関連付けられる属性に対する値である。Five files are stored in the file system shown in FIG. The file named File1 is stored in RowID X1 in the Files table 1702. The FileID of File1 is F1. The class of File1 is the File class, as indicated by the value stored in the Class column of row X1. File1 is Fi
Being an instance of the les class, the Files table 1704 is the only class table containing information for File1. Therefore, the only attribute value stored for File1 is the value for the attribute associated with the Files class.
【0224】
File2と名付けられたファイルはFilesテーブル1702におけるRowID X2に記
憶される。File2のFileIDはF2である。File2のクラスはDocumentクラスであり
、これは行X2のClass欄に記憶される値によって示されるとおりである。File2
はDocumentクラスのインスタンスであるため、Filesテーブル1702およびDoc
umentテーブル1704はFile2に対する情報を含む。すなわち、File2に対して
記憶される属性値は、Filesクラスから継承された属性を含む、Documentクラス
と関連付けられる属性に対する値である。The file named File2 is stored in RowID X2 in the Files table 1702. The FileID of File2 is F2. The File2 class is the Document class, as indicated by the value stored in the Class column of row X2. File2
Is an instance of Document class, so Files table 1702 and Doc
The ument table 1704 includes information on File2. That is, the attribute values stored for File2 are the values for the attributes associated with the Document class, including the attributes inherited from the Files class.
【0225】
File3と名付けられるファイルはFilesテーブル1702におけるRowID X3に記
憶される。File3のFileIDはF3である。File3のクラスはE-mailクラスであり、
これは行X3のClass欄に記憶される値によって示されるとおりである。File3は
E-mailクラスのインスタンスであるため、Filesテーブル1702、Documentテ
ーブル1704およびE-mailテーブル1706はすべてFile3に対する情報を含
む。すなわち、File3に対して記憶される属性値は、DocumentクラスおよびFiles
クラスから継承された属性を含む、E-mailクラスに関連付けられる属性に対する
値である。The file named File3 is stored in RowID X3 in the Files table 1702. The FileID of File3 is F3. File3 class is E-mail class,
This is as indicated by the value stored in the Class column of row X3. File3
Since it is an instance of the E-mail class, the Files table 1702, Document table 1704, and E-mail table 1706 all include information for File3. That is, the attribute values stored for File3 are Document class and Files
Values for attributes associated with the E-mail class, including attributes inherited from the class.
【0226】
File4と名付けられたファイルはFilesテーブル1702におけるRowID X4に記
憶される。File4のFileIDはF4である。File4のクラスはTextクラスであり、こ
れは行X4のClass欄に記憶される値によって示されるとおりである。File4はTe
xtクラスのインスタンスであるため、Filesテーブル1702、Document170
4およびTextテーブル1708はFile4に対する情報を含む。すなわち、File4に
対して記憶される属性値は、DocumentクラスおよびFilesクラスから継承された
属性を含む、Textクラスに関連付けられる属性に対する値である。The file named File4 is stored in RowID X4 in the Files table 1702. The FileID of File4 is F4. The class of File4 is the Text class, as indicated by the value stored in the Class column on line X4. File4 is Te
Since it is an instance of xt class, Files table 1702, Document 170
4 and Text table 1708 contains information for File4. That is, the attribute values stored for File4 are the values for the attributes associated with the Text class, including the attributes inherited from the Document and Files classes.
【0227】
File5と名付けられたファイルはFilesテーブル1702におけるRowID X5に記
憶される。File5のFileIDはF5である。File5のクラスはFolderクラスであり、
これは行X5のClass欄に記憶される値によって示されるとおりである。File5は
Folderクラスのインスタンスであるため、Filesテーブル1702およびFolder
テーブル1708はFile5に対する情報を含む。すなわち、File5に対して記憶さ
れる属性値は、Filesクラスから継承される属性を含む、Folderクラスに関連付
けられる属性に対する値である。The file named File5 is stored in RowID X5 in the Files table 1702. The FileID of File5 is F5. File5 class is Folder class,
This is as indicated by the value stored in the Class column of row X5. File5
Since it is an instance of Folder class, Files table 1702 and Folder
Table 1708 contains information for File5. That is, the attribute values stored for File5 are the values for the attributes associated with the Folder class, including the attributes inherited from the Files class.
【0228】
この発明の一実施例によれば、クラステーブル内のファイルは上に図5および
図8に関連して説明したように階層インデックスをトラバースすることによって
アクセスされる。階層インデックスのトラバースにより(パス名導出において行
われるように)、ターゲットファイルに対応するFilesテーブル1702内の行
のRowIDが生成される。その行から、Filesクラス属性に対する属性値が検索され
る。しかしながら、他のクラスに属するファイルに関しては、追加の属性は他の
クラステーブルから検索されなければならないかもしれない。たとえば、File3
に対し、作成日および変更日はFilesテーブル1702の行X3から検索され得
る。しかしながら、File3のサイズを検索するには、Documentテーブル1704
の行Y2にアクセスしなければならない。File3に対する優先度情報を検索する
には、E-mailテーブル1706の行Q1にアクセスしなければならない。According to one embodiment of the invention, the files in the class table are accessed by traversing the hierarchical index as described above in connection with FIGS. 5 and 8. The traversal of the hierarchical index (as done in pathname derivation) produces the RowID of the row in the Files table 1702 corresponding to the target file. From that line, the attribute value for the Files class attribute is retrieved. However, for files belonging to other classes, additional attributes may have to be retrieved from other class tables. For example, File3
In contrast, the creation date and modification date can be retrieved from row X3 of the Files table 1702. However, to retrieve the size of File3, the Document table 1704
Must access row Y2. To retrieve the priority information for File3, it is necessary to access the row Q1 of the E-mail table 1706.
【0229】
あるファイルに属するさまざまな属性値の検索を容易にするため、これらの属
性を含む行は互いにリンクされる。例示される実施例では、リンクは「Derived
RowID」とラベル付けされた欄に記憶される。ある特定のクラスに対するテーブ
ルにおけるある特定のファイルに対する行のDerived RowID欄において記憶され
る値は、そのある特定のクラスのサブクラスに対するテーブルに存在するそのあ
る特定のファイルに対する行を指し示す。たとえば、File3に対するFilesテーブ
ル行X3のDerived RowID欄は値Y2を含む。Y2はDocumentテーブル1704
におけるFile3に対する行のRowIDである。同様に、Document行Y2のDerived Ro
wID欄は値Q1を含む。Q1はE-mailテーブル1706におけるFile3に対する行
のRowIDである。To facilitate the retrieval of various attribute values belonging to a file, the rows containing these attributes are linked together. In the illustrated example, the link is "Derived
It is stored in the column labeled “Row ID”. The value stored in the Derived Row ID column of the row for a particular file in the table for a particular class points to the row for that particular file that exists in the table for the subclass of that particular class. For example, the Derived Row ID column of Files table row X3 for File3 contains the value Y2. Y2 is Document table 1704
RowID of the row for File3 in. Similarly, Derived Ro in Document line Y2
The wID field contains the value Q1. Q1 is the RowID of the row for File3 in the E-mail table 1706.
【0230】
例示される実施例では、ある特定のファイルに対する行間のリンクは片方向で
あり、親クラスに対するテーブルにおける行からサブクラスのテーブルにおける
行へ行く。これらの片方向リンクにより、ベーステーブル(すなわちファイルテ
ーブル)における行から始まるサーチが容易となるが、これはほとんどの条件下
で当てはまる。しかしながら、サーチの開始点が別のテーブルの行である場合、
親クラステーブルにおける関連のある行はリンクによってその場所を確認するこ
とができない。これらの関連のある行を探すため、関心のあるファイルのFileID
に基づいてこれらのテーブルのサーチが行なわれてもよい。In the illustrated embodiment, the link between the lines for a particular file is unidirectional, going from the line in the table for the parent class to the line in the table for the subclass. These one-way links facilitate the search starting from the row in the base table (ie the file table), which is true under most conditions. However, if the starting point of the search is a row in another table,
The related row in the parent class table cannot be located by the link. FileID of the file of interest, looking for these related lines
These tables may be searched based on
【0231】
たとえば、ユーザがDocumentテーブル1704の行Y2を検索し、File3に対
する他の属性値のすべてを検索することを望んだと仮定する。E-mailに特有の属
性値を含む行は、行Y2のDerived RowID欄におけるポインタをたどることによ
って見つけられるかも知れず、これはE-mailテーブル1706における行Q1を
指し示す。しかしながら、残りの属性を探すためには、Filesテーブル1702
をFileID F3に基づいてサーチする。このようなサーチにより行X3が見出され
ることとなり、これはFile3の残りの属性値を含む。For example, suppose the user wants to search row Y2 of the Document table 1704 and find all other attribute values for File3. The row containing the attribute value specific to E-mail may be found by following the pointer in the Derived Row ID column of row Y2, which points to row Q1 in E-mail table 1706. However, to find the remaining attributes, the Files table 1702
Based on FileID F3. Such a search would result in finding row X3, which contains the remaining attribute values of File3.
【0232】
代替の実施例によれば、関連のある行間のリンクは、すべての関連のある行が
FileIDルックアップなしでその場所を確認することが可能となる態様で実現され
てもよい。たとえば、各クラステーブルはまた、親クラステーブルにおける関連
のある行のRowIDを含むParent RowID欄を有していてもよい。したがって、Docum
entテーブル1704の行Y2に対するParent RowID欄はFilesテーブル1702
における行X3を指し示すこととなる。代わりに、片方向リンクの連鎖における
最後の行が、Filesテーブルにおける関連のある行へ戻るポインタを含んでいて
もよい。さらに別の選択肢としては、各クラステーブルに対して、Filesテーブ
ルにおける関連のある行へ戻るポインタを含む欄を設けることを含む。したがっ
て、Textテーブル1708の行R1およびDocumentテーブル1704の行Y3は
ともに、Filesテーブル1702の行X4へ戻るポインタを含むことになる。[0232] According to an alternative embodiment, the links between related lines include all related lines.
It may be implemented in a way that makes it possible to confirm its location without a FileID lookup. For example, each class table may also have a Parent RowID column that contains the RowID of the related row in the parent class table. Therefore, Docum
The Parent Row ID column for the row Y2 of the ent table 1704 is the Files table 1702.
Will point to row X3 in. Alternatively, the last row in the chain of one-way links may include a pointer back to the relevant row in the Files table. Yet another option involves providing for each class table a column containing a pointer back to the relevant row in the Files table. Thus, row R1 of Text table 1708 and row Y3 of Document table 1704 will both contain pointers back to row X4 of Files table 1702.
【0233】
サブクラス登録
上に述べたように、新しいクラスを登録することによってファイルシステムの
クラス階層構造を拡張するための機構が提供される。一般的に、クラス登録プロ
セスにおいて提供される情報は、新しいクラスの親クラスを識別するデータと新
しいクラスによって追加される属性を記述するデータとを含む。任意に、データ
はまた、新しいクラスのインスタンスに対して行なうことができる新しい方法を
識別するのに用いられるデータを含んでいてもよい。Subclass Registration As mentioned above, a mechanism is provided to extend the file system class hierarchy by registering a new class. In general, the information provided in the class registration process includes data identifying the parent class of the new class and data describing the attributes added by the new class. Optionally, the data may also include data used to identify new methods that can be performed on instances of the new class.
【0234】
登録情報は数多くの手法のうちのいずれを用いてファイルシステムに提供され
てもよい。たとえば、ユーザに、登録されたクラスのすべてを表わすアイコンを
含むグラフィックユーザインターフェイスを提示してもよく、ユーザはユーザイ
ンターフェイスによって表わされるコントロールを操作して、(1)クラスのう
ちの1つを新しいクラスの親として選択し、(2)新しいクラスに名を付け、(
3)新しいクラスに対して追加の属性を定義付け、(4)新しいクラスに対して
行われ得る新しい方法を定義付けてもよい。代わりに、ユーザはファイルシステ
ムに対して、新しいクラスに対する登録情報を含むファイルを与えてもよい。フ
ァイルシステムはそのファイルをパーシングして情報を識別し抽出し、その情報
に基づいて新しいクラスに対するクラスファイルを作る。Registration information may be provided to the file system using any of a number of techniques. For example, the user may be presented with a graphical user interface that includes icons representing all of the registered classes, and the user operates the controls represented by the user interface to (1) create one of the new classes. Select it as the parent of the class and (2) name the new class,
3) Additional attributes may be defined for the new class, and (4) New methods may be defined for the new class. Alternatively, the user may provide the file system with a file containing registration information for the new class. The file system parses the file to identify and extract information, and based on that information creates a class file for the new class.
【0235】
この発明の一実施例によれば、クラス登録情報がExtensible Markup Language
(XML)ファイルの形でファイルシステムにもたらされる。XML形式はwww.
oasis-open.org/cover/xml.htm1#contentsおよびそこにリストされるサイトに
おいて詳細に説明される。一般的に、XML言語は、フィールドを指名しフィー
ルドの始まりおよび終わりをマークするタグとこれらのフィールドに対する値と
を含む。たとえば「Folder」ファイルクラスに対する登録情報を含むXML文書
は以下の情報を含んでいるかもしれない。According to one embodiment of the present invention, the class registration information is Extensible Markup Language.
It is brought to the file system in the form of (XML) files. XML format is www.
oasis-open.org/cover/xml.htm1 # Explained in detail in contents and the sites listed there. Generally, the XML language includes tags that name fields and mark the beginning and end of fields and the values for these fields. For example, an XML document containing registration information for the "Folder" file class might contain the following information:
【0236】
<typename>
folder
</typename>
<inherits_from>
files
</inherits_from>
<dbi_classname>
my_folder_methods
</dbi_classname>
<prop_def>
<name>
max_children
</name>
<type>
integer
</type>
</prop_def>
このファイルクラス登録文書を受取ったことに応答して、ファイルシステムは
、新しいクラスFolderに対するテーブルを作成する。このようにして作成された
新しいテーブルは、登録情報において定義付けられる属性の各々に対する欄を含
む。この例においては、max_children属性のみが定義付けられている。max_ch
ildren属性に対して特定されるデータタイプは「整数」である。したがって、Fo
lderテーブルは、整数値を保持するmax_children欄とともに作成される。属性
の名称およびタイプに加えて、各属性に対してさまざまな他の情報がもたらされ
てもよい。たとえば、登録情報は、属性値に対する範囲または最大長さを示して
いてもよく、その欄にインデックスをつけるべきであるかまたはその欄が一意性
または参照制約を受けるべきであるかを示していてもよい。<Typename> folder </ typename><inherits_from> files </ inherits_from><dbi_classname> my_folder_methods </ dbi_classname><prop_def><name> max_children </ name><type> integer </ type></prop_def> In response to receiving this file class registration document, the file system creates a table for the new class Folder. The new table created in this way contains a column for each of the attributes defined in the registration information. In this example, only the max_children attribute is defined. max_ch
The data type specified for the ildren attribute is "integer". Therefore, Fo
The lder table is created with the max_children column holding an integer value. In addition to the attribute name and type, various other information may be provided for each attribute. For example, the registration information may indicate a range or maximum length for the attribute value, indicating whether the column should be indexed or whether the column should be unique or referentially constrained. Good.
【0237】
登録情報はまた、新しいクラスファイルによってサポートされるどんな方法に
ついての情報も含む。一実施例によれば、新しい方法はこれらの方法に関連付け
られるルーチンを含むファイルを識別することによって特定される。一実施例に
よれば、各ファイルクラスに関連付けられるルーチンはJAVA(R)クラスにおい
て実現される。第1のファイルクラスが第2のファイルクラスのサブクラスであ
る場合、第1のファイルクラスに関連付けられる方法を実現するJAVA(R)クラ
スは第2のファイルクラスの方法を実現するJAVA(R)クラスのサブクラスであ
る。Registration information also includes information about any methods supported by the new class file. According to one embodiment, the new methods are identified by identifying the files that contain the routines associated with these methods. According to one embodiment, the routines associated with each file class are implemented in the JAVA (R) class. If the first file class is a subclass of the second file class, the JAVA (R) class that realizes the method associated with the first file class is the JAVA (R) class that realizes the method of the second file class. Is a subclass of.
【0238】
上に挙げたXMLの例では、登録情報のdbi_classnameフィールドがFolderフ
ァイルクラスに対するJAVA(R)クラスファイルを特定する。具体的には、登録
情報はdbi_classnameフィールドに対してファイル名「my_folder_methods」
をもたらし、my_folder_methods JAVA(R)クラスがFolderクラスの継承され
ていない方法に対するルーチンを実現することを示す。FolderクラスはFilesク
ラスのサブクラスであるため、my_folder_methodsクラスはFilesクラスに対す
る方法を実現するJAVA(R)クラスのサブクラスとなる。したがって、my_fold
er_methodsクラスはFiles方法を継承することとなる。In the XML example given above, the dbi_classname field of the registration information identifies the JAVA (R) class file for the Folder file class. Specifically, the registration information is the file name "my_folder_methods" for the dbi_classname field.
And show that the my_folder_methods JAVA (R) class implements a routine for the non-inherited methods of the Folder class. Since the Folder class is a subclass of the Files class, the my_folder_methods class is a subclass of the JAVA (R) class that implements the method for the Files class. Therefore, my_fold
The er_methods class will inherit the Files method.
【0239】
親ファイルクラスによってサポートされていない新しい方法を定義付けること
に加え、子ファイルクラスに対するルーチンは親クラスにおいて定義付けられる
方法の実現をオーバーライドできる。たとえば、図16に示されるFilesクラス
は「記憶」方法を提供する。Folderクラスはその記憶方法を継承する。しかしな
がら、Filesクラスに対してもたらされる記憶方法の実現は、フォルダを記憶す
るのに必要とされる実現ではないかもしれない。したがって、Folderクラスは記
憶方法のそれ自身の実現をもたらしてもよく、これによりFilesクラスによって
もたらされる実現をオーバーライドする。In addition to defining new methods that are not supported by the parent file class, routines for child file classes can override the implementations of the methods defined in the parent class. For example, the Files class shown in Figure 16 provides a "remember" method. The Folder class inherits its storage method. However, the implementation of the storage method provided for the Files class may not be the implementation needed to store folders. Therefore, the Folder class may provide its own implementation of the storage method, which overrides the implementation provided by the Files class.
【0240】
ファイルのクラスの判定
ファイルシステムがファイルに対してオペレーションを行なうように求められ
た際、ファイルシステムはそのファイルが属するファイルのある特定のクラスに
対する要求されたオペレーションを実現するルーチンを呼出す。上述のように、
その同じオペレーションは、たとえばサブクラスがその親クラスによってもたら
された実現をオーバーライドした際には異なるファイルクラスに対して異なった
態様で実現され得る。すなわち、正しいオペレーションが行なわれることを確実
にするため、ファイルシステムはまず、オペレーションが行なわれるべきファイ
ルのクラスを識別しなければならない。Determining the Class of a File When a file system is asked to perform an operation on a file, the file system calls a routine that implements the requested operation on the particular class of file to which the file belongs. As mentioned above,
The same operation may be implemented differently for different file classes, for example when a subclass overrides the implementation provided by its parent class. That is, to ensure that the correct operation is performed, the file system must first identify the class of file on which the operation should be performed.
【0241】
ファイルシステムにおいて既に記憶されているファイルに対しては、ファイル
のクラスを識別するタスクは些細なことかもしれない。たとえば、図17に示さ
れる実施例では、Filesテーブル1702は、どの所与の行に対しても、その行
と関連付けられるファイルのクラスを示すデータを記憶するClass欄を含む。し
たがって、File3に対して「移動」オペレーションを行なうことのリクエストを
受取った場合、行X3のClass欄を検査してFile3がE-mailのタイプのものである
ことを判定する。これにより、「移動」のE-mailの実現が実行されるべきである
。「移動」のE-mail実現は、E-mailファイルクラスがその継承した「移動」方法
の実現をオーバーライドする場合にはE-mailファイルクラスに対してもたらされ
る実現となる。そうでなければ、「移動」のE-mail実現はE-mailクラスによって
継承された実現である。For files already stored in the file system, the task of identifying the class of a file may be trivial. For example, in the example shown in FIG. 17, the Files table 1702 includes, for any given row, a Class column that stores data indicating the class of the file associated with that row. Therefore, when a request to perform a "move" operation on File3 is received, the Class column of row X3 is examined to determine that File3 is of E-mail type. This should implement the "move" E-mail realization. The "move" E-mail realization is the realization provided to the E-mail file class if the E-mail file class overrides its inherited "move" method realization. Otherwise, the "move" E-mail realization is the realization inherited by the E-mail class.
【0242】
ファイルのクラスを識別するタスクは、ファイルが既にファイルシステムに記
憶されていない場合にはより困難であり得る。たとえば、ファイルシステムがフ
ァイルシステムに既に存在していないファイルを記憶することを求められた際、
ファイルシステムはファイルテーブルを検査することによってクラス判定を行な
うことができない。このような条件下では、ファイルのタイプを識別するのにさ
まざまな手法を用いてもよい。一実施例によれば、ファイルのタイプはファイル
オペレーションリクエストにおいて明白にもたらされ得る。たとえば、オペレー
ティングシステムのコマンド行を介して発行されたコマンドに応答してリクエス
トがなされた場合、コマンド行引き数(command-line arguments)のうちの1つを
用いてファイルのファイルタイプを示してもよい。たとえば、コマンドは「move
a:\mydocs\file2c:\yourdocs/class=document」と入力されてもよい。The task of identifying the class of a file can be more difficult if the file is not already stored in the file system. For example, when the file system is asked to store a file that no longer exists in the file system,
The file system cannot make a class decision by examining the file table. Under such conditions, various techniques may be used to identify the type of file. According to one embodiment, the type of file may be explicitly provided in the file operation request. For example, if the request was made in response to a command issued via the operating system command line, one of the command-line arguments may be used to indicate the file type of the file. Good. For example, the command is "move
a: \ mydocs \ file2c: \ yourdocs / class = document "may be input.
【0243】
ファイルのクラスを判定するための別の手法には、ファイルの名称に含まれる
情報に基づいてクラスを判定することが含まれる。たとえば、ある拡張子(たと
えばdoc.wpd.pwpなど)を有するすべてのファイルはある特定のファイルクラス
(たとえばDocument)のメンバとしてすべて扱われてもよい。したがって、ファ
イルシステムがこれらのファイルに対してオペレーションを行なうことを求めら
れると、そのある特定のファイルクラスに関連付けられる方法実現が用いられる
。Another technique for determining the class of a file involves determining the class based on the information contained in the name of the file. For example, all files with an extension (eg doc.wpd.pwp) may all be treated as members of a particular file class (eg Document). Therefore, when the file system is required to perform operations on these files, the method implementation associated with that particular file class is used.
【0244】
ファイルのクラスを判定するためのさらに別の手法には、ファイルシステム階
層構造内のファイルの場所に基づいてクラスを判定することが含まれる。たとえ
ば、ある特定のディレクトリまたはディレクトリのセット内で作成されるすべて
のファイルは、ファイルがどのように名付けられているかにかかわらずある特定
のファイルクラスに属するものと推定され得る。これらおよび他の手法をさまざ
まな態様で組合せてもよい。たとえば、ある特定の拡張子を有するファイルは、
そのファイルが第2のクラスと関連付けられるディレクトリに記憶されているの
でなければ、第1のクラスのメンバとして扱われ得る。ファイルが第2のクラス
に関連付けられるディレクトリに記憶されている場合、ファイルが別のファイル
クラスのメンバであることをファイルオペレーションリクエストが明示的に識別
しているのでなければ、ファイルは第2のクラスのメンバとして扱われる。Yet another technique for determining the class of a file involves determining the class based on the location of the file in the file system hierarchy. For example, all files created within a particular directory or set of directories can be presumed to belong to a particular file class regardless of how the files are named. These and other approaches may be combined in various ways. For example, a file with a certain extension is
If the file is not stored in the directory associated with the second class, it can be treated as a member of the first class. If the file is stored in a directory associated with a second class, then the file is a second class unless the file operation request explicitly identifies that the file is a member of another file class. Treated as a member of.
【0245】
ハードウェアの外観
図18はこの発明の実施例が実現され得るコンピュータシステム1800を示
すブロック図である。コンピュータシステム1800は、バス1802または情
報を通信するための他の通信機構と、バス1802に結合され情報を処理するた
めのプロセッサ1804とを含む。コンピュータシステム1800はまた、ラン
ダムアクセスメモリ(RAM)または他の動的記憶装置などのメインメモリ18
06を含み、これはバス1802に結合され情報と、プロセッサ1804によっ
て実行されるべき命令とを記憶する。メインメモリ1806はまた、プロセッサ
1804によって実行されるべき命令の実行の間に一時変数または他の中間情報
を記憶するのに用いられてもよい。コンピュータシステム1800はさらに、バ
ス1802に結合されプロセッサ1804のための静的情報および命令を記憶す
るための読取専用メモリ(ROM)1808または他の静的記憶装置を含む。磁
気ディスクまたは光ディスクなどのストレージデバイス1810が設けられ、バ
ス1802に結合されて情報および命令を記憶する。Hardware Appearance FIG. 18 is a block diagram showing a computer system 1800 in which an embodiment of the present invention can be implemented. Computer system 1800 includes a bus 1802 or other communication mechanism for communicating information, and a processor 1804 coupled with bus 1802 for processing information. Computer system 1800 also includes main memory 18 such as random access memory (RAM) or other dynamic storage.
06, which is coupled to bus 1802 and stores information and instructions to be executed by processor 1804. Main memory 1806 may also be used to store temporary variables or other intermediate information during execution of instructions to be executed by processor 1804. Computer system 1800 further includes a read only memory (ROM) 1808 or other static storage device coupled to bus 1802 for storing static information and instructions for processor 1804. A storage device 1810, such as a magnetic disk or optical disk, is provided and is coupled to bus 1802 for storing information and instructions.
【0246】
コンピュータシステム1800は、コンピュータユーザに情報を表示するため
の、陰極線管(CRT)などのディスプレイ1812にバス1802を介して結
合されてもよい。英数字キーおよび他のキーを含む入力デバイス1814は、バ
ス1802に結合されプロセッサ1804へ情報およびコマンド選択を通信する
。別のタイプのユーザ入力デバイスは、マウス、トラックボールまたはカーソル
方向キーなどのカーソル制御1816であり、これはプロセッサ1804へ方向
情報およびコマンド選択を通信し、ディスプレイ1812上でのカーソル移動を
制御する。この入力デバイスは典型的に、第1の軸(たとえばx)および第2の
軸(たとえばy)の2軸での2つの自由度を有し、これはデバイスが平面におけ
る位置を特定することを可能にする。Computer system 1800 may be coupled via bus 1802 to a display 1812, such as a cathode ray tube (CRT), for displaying information to a computer user. An input device 1814, which includes alphanumeric keys and other keys, is coupled to bus 1802 to communicate information and command selections to processor 1804. Another type of user input device is a cursor control 1816, such as a mouse, trackball or cursor direction keys, which communicates direction information and command selections to the processor 1804 and controls cursor movement on the display 1812. This input device typically has two degrees of freedom in two axes, a first axis (eg x) and a second axis (eg y), which allows the device to specify a position in a plane. to enable.
【0247】
この発明は、ここに説明される手法を実現するためのコンピュータシステム1
800の使用に関する。この発明の一実施例によれば、これらの手法は、プロセ
ッサ1804がメインメモリ1806に含まれる1つ以上の命令の1つ以上のシ
ーケンスを実行することに応答してコンピュータシステム1800によって実現
される。このような命令は、ストレージデバイス1810などの別のコンピュー
タ可読媒体からメインメモリ1806に読込まれてもよい。メインメモリ180
6に含まれる命令のシーケンスの実行により、プロセッサ1804がここに説明
するプロセスステップを行なうこととなる。代替の実施例では、この発明を実現
するのに布線回路をソフトウェア命令の代わりに、またはソフトウェア命令と組
合せて用いてもよい。このように、この発明の実施例はハードウェア回路および
ソフトウェアのいずれの特定の組合せにも限定されるものではない。The present invention provides a computer system 1 for implementing the techniques described herein.
Regarding the use of 800. According to one embodiment of the invention, these techniques are implemented by computer system 1800 in response to processor 1804 executing one or more sequences of one or more instructions contained in main memory 1806. . Such instructions may be read into main memory 1806 from another computer-readable medium, such as storage device 1810. Main memory 180
Execution of the sequences of instructions contained in 6 will cause processor 1804 to perform the process steps described herein. In alternative embodiments, wiring circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the present invention are not limited to any particular combination of hardware circuitry and software.
【0248】
ここで用いられる用語「コンピュータ可読媒体」は、実行のためにプロセッサ
1804に命令を提供することにかかわるすべての媒体を指していう。このよう
な媒体は数多くの形態をとることができ、これには不揮発性媒体、揮発性媒体お
よび伝送媒体が含まれるがこれらに限定されるものではない。不揮発性媒体はた
とえば、ストレージデバイス1810などの光ディスクまたは磁気ディスクを含
む。揮発性媒体には、メインメモリ1806などの動的メモリが含まれる。伝送
媒体には、バス1802をなす配線を含む、同軸ケーブル、銅線および光ファイ
バが含まれる。伝送媒体にはまた、電波および赤外線データ通信において生成さ
れるもののような、音波または光波の形態をとっていてもよい。The term “computer-readable medium” as used herein refers to any medium that participates in providing instructions to processor 1804 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 1810. Volatile media includes dynamic memory, such as main memory 1806. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 1802. Transmission media may also take the form of acoustic or light waves, such as those generated in radio and infrared data communications.
【0249】
一般的な形態のコンピュータ可読媒体には、たとえば、フロッピー(R)ディ
スク、フレキシブルディスク、ハードディスク、磁気テープまたは他の磁気媒体
すべて、CD−ROM、他の光学媒体すべて、穿孔カード、紙テープ、孔のパタ
ーンを有する他の物理媒体すべて、RAM、PROMおよびEPROM、FLASH-
EPROM他のメモリチップすべてまたはカートリッジ、以下に説明するような搬送
波またはコンピュータが読むことができる他の媒体すべてが含まれる。Common forms of computer readable media include, for example, floppy disks, flexible disks, hard disks, magnetic tape or any other magnetic media, CD-ROM, all other optical media, perforated cards, paper tape. , All other physical media with hole patterns, RAM, PROM and EPROM, FLASH-
It includes all EPROMs, other memory chips or cartridges, carrier waves or any other computer-readable medium as described below.
【0250】
さまざまな形態のコンピュータ可読媒体が、実行のためにプロセッサ1804
に1つ以上の命令の1つ以上のシーケンスを与えることに関係し得る。たとえば
、命令は初めに、遠隔地のコンピュータの磁気ディスクに担持されているかもし
れない。遠隔地のコンピュータはその動的メモリに命令をロードして、命令をモ
デムを用いて電話回線を介して送信することができる。コンピュータシステム1
800が有するモデムが電話回線上のデータを受信し、赤外線送信機を用いてそ
のデータを赤外線信号に変換することができる。赤外線検出器は赤外線信号に載
ったデータを受信し、適切な回路はそのデータをバス1802上に出力すること
ができる。バス1802はデータをメインメモリ1806に運び、そこからプロ
セッサ1804が命令を取出し実行する。メインメモリ1806によって受信さ
れた命令は、任意にプロセッサ1804による実行の前または後のいずれかにお
いてストレージデバイス1810に記憶されてもよい。Various forms of computer readable media may be included in a processor 1804 for execution.
To one or more sequences of one or more instructions. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. Computer system 1
A modem included in 800 can receive data on the telephone line and use an infrared transmitter to convert the data to an infrared signal. The infrared detector can receive the data carried in the infrared signal and the appropriate circuitry can output the data on bus 1802. Bus 1802 carries data to main memory 1806 from which processor 1804 fetches and executes instructions. The instructions received by main memory 1806 may optionally be stored on storage device 1810 either before or after execution by processor 1804.
【0251】
コンピュータシステム1800はまた、バス1802に結合される通信インタ
ーフェイス1818を含む。通信インターフェイス1818は、ローカルネット
ワーク1822に接続されるネットワークリンク1820に結合される双方向デ
ータ通信を提供する。たとえば、通信インターフェイス1818は、対応するタ
イプの電話回線に対するデータ通信接続をもたらすモデムまたはサービス総合デ
ジタルネットワーク(ISDN)カードであってもよい。別の例としては、通信
インターフェイス1818は、互換性のあるLANへのデータ通信接続をもたら
すためのローカルエリアネットワーク(LAN)カードであってもよい。無線リ
ンクもまた実現され得る。このような実現例のいずれにおいても、通信インター
フェイス1818は、さまざまなタイプの情報を表わすデジタルデータストリー
ムを担持する電気信号、電磁信号または光信号を送受信する。Computer system 1800 also includes a communication interface 1818 coupled to bus 1802. Communication interface 1818 provides bidirectional data communication coupled to a network link 1820 connected to local network 1822. For example, communication interface 1818 may be a modem or integrated services digital network (ISDN) card that provides a data communication connection to a corresponding type of telephone line. As another example, communication interface 1818 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links can also be realized. In any such implementation, communication interface 1818 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
【0252】
ネットワークリンク1820は典型的に、1つ以上のネットワークを介して他
のデータデバイスに対するデータ通信を提供する。たとえば、ネットワークリン
ク1820は、ローカルネットワーク1822を介して、ホストコンピュータ1
824に対してまたはインターネットサービスプロバイダ(ISP)1826に
よって操作されるデータ機器に対して接続をもたらし得る。そのISP1826
は、現在一般的に「インターネット」1828と称されるワールドワイドパケッ
トデータ通信ネットワークを介するデータ通信サービスを提供する。ローカルネ
ットワーク1822およびインターネット1828はともに、デジタルデータス
トリームを担持する電気信号、電磁信号または光信号を用いる。さまざまなネッ
トワークを介する信号と、デジタルデータをコンピュータシステム1800と授
受するネットワークリンク1820上のおよび通信インターフェイス1818を
介する信号とは、情報を運ぶ搬送波の例示的な形態である。Network link 1820 typically provides data communication to other data devices via one or more networks. For example, the network link 1820 is connected to the host computer 1 via the local network 1822.
A connection may be provided to 824 or to a data device operated by an Internet Service Provider (ISP) 1826. The ISP1826
Provides data communication services over the world wide packet data communication network now commonly referred to as the "Internet" 1828. Both local network 1822 and Internet 1828 use electrical, electromagnetic or optical signals that carry digital data streams. Signals over various networks and signals over network link 1820 and through communication interface 1818 for communicating digital data with computer system 1800 are exemplary forms of carrier waves carrying information.
【0253】
コンピュータシステム1800は、ネットワーク、ネットワークリンク182
0および通信インターフェイス1818を介して、プログラムコードを含む、メ
ッセージを送信しデータを受信することができる。インターネットの例では、サ
ーバ1830がインターネット1828、ISP1826、ローカルネットワー
ク1822および通信インターフェイス1818を介してアプリケーションプロ
グラムに対する要求されたコードを送信するかもしれない。この発明によれば、
ダウンロードされたそのようなアプリケーションの1つがここに説明される手法
を実現する。The computer system 1800 is a network, a network link 182.
0 and communication interface 1818, messages can be sent and data can be received, including program code. In the Internet example, server 1830 may send the requested code for the application program via Internet 1828, ISP 1826, local network 1822 and communication interface 1818. According to this invention,
One such downloaded application implements the approach described herein.
【0254】
受信されたコードは、受信されるとともにプロセッサ1804によって実行さ
れてもよく、および/または後に実行するためにストレージデバイス1810ま
たは他の不揮発性ストレージに記憶されてもよい。このような態様で、コンピュ
ータシステム1800は搬送波の形態であるアプリケーションコードを得てもよ
い。The received code may be received and executed by processor 1804 and / or stored in storage device 1810 or other non-volatile storage for later execution. In this manner, computer system 1800 may obtain application code in the form of carrier waves.
【0255】
前述の明細書において、この発明をその特定の実施例に関連して説明した。し
かしながら、この発明のより広い精神および範囲から逸脱することなくこれにさ
まざまな変更および修正を加えてもよいことが明らかになるであろう。明細書お
よび図面はしたがって、例示的な意味でみなすべきであり、限定的な意味でみな
すものではない。In the above specification, the present invention has been described with reference to specific embodiments thereof. However, it will be apparent that various changes and modifications may be made thereto without departing from the broader spirit and scope of the invention. The specification and drawings are accordingly to be regarded in an illustrative sense and not in a limiting sense.
【図1】 従来のアプリケーションにおいて、オペレーティングシステムに
よって提供されるファイルシステムを通じてデータが記憶される様子を示すブロ
ック図である。FIG. 1 is a block diagram showing how data is stored in a conventional application through a file system provided by an operating system.
【図2】 従来のデータベースアプリケーションにおいて、データベースシ
ステムによって提供されるデータベースAPIを通じてデータが記憶される様子
を示すブロック図である。FIG. 2 is a block diagram showing how data is stored through a database API provided by a database system in a conventional database application.
【図3】 データベースAPIおよびOSファイルシステムAPIを含む種
々のインターフェイスを通じて同じデータの組にアクセス可能な、システムを示
すブロック図である。FIG. 3 is a block diagram illustrating a system in which the same data set is accessible through various interfaces including a database API and an OS file system API.
【図4】 トランスレーションエンジン308をより詳細に示すブロック図
である。FIG. 4 is a block diagram showing translation engine 308 in greater detail.
【図5】 階層インデックスを示すブロック図である。FIG. 5 is a block diagram showing a hierarchical index.
【図6】 階層インデックスによってエミュレートすることのできるファイ
ル階層構造を示すブロック図である。FIG. 6 is a block diagram showing a file hierarchical structure that can be emulated by a hierarchical index.
【図7】 本発明に一実施例に従った、関係データベース内にファイルを記
憶するのに使用することのできるファイルテーブルを示すブロック図である。FIG. 7 is a block diagram illustrating a file table that can be used to store files in a relational database, according to one embodiment of the invention.
【図8】 階層インデックスを使用してパス名を導出するステップを示すフ
ローチャートである。FIG. 8 is a flowchart showing steps for deriving a path name using a hierarchical index.
【図9】 データベースファイルサーバをより詳細に示すブロック図である
。FIG. 9 is a block diagram showing the database file server in more detail.
【図10】 ストアドクエリディレクトリのためのエントリを含む階層イン
デックスのブロック図である。FIG. 10 is a block diagram of a hierarchical index that includes an entry for a stored query directory.
【図11】 ストアドクエリディレクトリのための行を含むファイルテーブ
ルのブロック図である。FIG. 11 is a block diagram of a file table containing a row for a stored query directory.
【図12】 ストアドクエリディレクトリを含むファイル階層構造を示すブ
ロック図である。FIG. 12 is a block diagram showing a file hierarchy structure including a stored query directory.
【図13】 ファイル階層構造を示すブロック図である。FIG. 13 is a block diagram showing a file hierarchical structure.
【図14】 図13に示すファイル階層構造が、ここに説明するバージョニ
ング技術の一実施例に従って、ドキュメントの更新に応答して更新される様子を
示す、ブロック図である。FIG. 14 is a block diagram illustrating how the file hierarchy shown in FIG. 13 is updated in response to a document update in accordance with one embodiment of the versioning techniques described herein.
【図15】 図13に示すファイル階層構造が、ここに説明するバージョニ
ング技術の一実施例に従って、ドキュメントがあるフォルダから別のフォルダへ
と移動するのに応答して更新される様子を示す、ブロック図である。FIG. 15 is a block diagram showing how the file hierarchy shown in FIG. 13 is updated in response to a document moving from one folder to another according to one embodiment of the versioning techniques described herein. It is a figure.
【図16】 本発明の一実施例に従ったファイルクラスのクラス階層構造を
示すブロック図である。FIG. 16 is a block diagram showing a class hierarchy structure of a file class according to an embodiment of the present invention.
【図17】 本発明の一実施例に従った、図16のファイルクラス階層構造
を実現するデータベース実現型ファイルシステムにおいて使用される、関係テー
ブルを示すブロック図である。FIG. 17 is a block diagram showing a relationship table used in the database-implemented file system that implements the file class hierarchical structure of FIG. 16 according to an embodiment of the present invention.
【図18】 本発明の実施例がそれにおいて実現され得る、コンピュータシ
ステムを示すブロック図である。FIG. 18 is a block diagram illustrating a computer system in which embodiments of the present invention may be implemented.
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 09/571,060 (32)優先日 平成12年5月15日(2000.5.15) (33)優先権主張国 米国(US) (31)優先権主張番号 09/571,492 (32)優先日 平成12年5月15日(2000.5.15) (33)優先権主張国 米国(US) (31)優先権主張番号 09/571,496 (32)優先日 平成12年5月15日(2000.5.15) (33)優先権主張国 米国(US) (31)優先権主張番号 09/571,508 (32)優先日 平成12年5月15日(2000.5.15) (33)優先権主張国 米国(US) (31)優先権主張番号 09/571,568 (32)優先日 平成12年5月15日(2000.5.15) (33)優先権主張国 米国(US) (31)優先権主張番号 09/571,696 (32)優先日 平成12年5月15日(2000.5.15) (33)優先権主張国 米国(US) (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,MZ,SD,SL,SZ,TZ,UG ,ZW),EA(AM,AZ,BY,KG,KZ,MD, RU,TJ,TM),AE,AG,AL,AM,AT, AU,AZ,BA,BB,BG,BR,BY,BZ,C A,CH,CN,CR,CZ,DE,DK,DM,DZ ,EE,ES,FI,GB,GD,GE,GH,GM, HR,HU,ID,IL,IN,IS,JP,KE,K G,KR,KZ,LC,LK,LR,LS,LT,LU ,LV,MA,MD,MG,MK,MN,MW,MX, MZ,NO,NZ,PL,PT,RO,RU,SD,S E,SG,SI,SK,SL,TJ,TM,TR,TT ,TZ,UA,UG,UZ,VN,YU,ZA,ZW Fターム(参考) 5B075 ND02 QT06 5B082 EA01 GA08 ─────────────────────────────────────────────────── ─── Continued front page (31) Priority claim number 09 / 571,060 (32) Priority date May 15, 2000 (May 15, 2000) (33) Priority claiming countries United States (US) (31) Priority claim number 09 / 571,492 (32) Priority date May 15, 2000 (May 15, 2000) (33) Priority claiming countries United States (US) (31) Priority claim number 09 / 571,496 (32) Priority date May 15, 2000 (May 15, 2000) (33) Priority claiming countries United States (US) (31) Priority claim number 09 / 571,508 (32) Priority date May 15, 2000 (May 15, 2000) (33) Priority claiming countries United States (US) (31) Priority claim number 09 / 571,568 (32) Priority date May 15, 2000 (May 15, 2000) (33) Priority claiming countries United States (US) (31) Priority claim number 09 / 571,696 (32) Priority date May 15, 2000 (May 15, 2000) (33) Priority claiming countries United States (US) (81) Designated countries EP (AT, BE, CH, CY, DE, DK, ES, FI, FR, GB, GR, IE, I T, LU, MC, NL, PT, SE), OA (BF, BJ , CF, CG, CI, CM, GA, GN, GW, ML, MR, NE, SN, TD, TG), AP (GH, GM, K E, LS, MW, MZ, SD, SL, SZ, TZ, UG , ZW), EA (AM, AZ, BY, KG, KZ, MD, RU, TJ, TM), AE, AG, AL, AM, AT, AU, AZ, BA, BB, BG, BR, BY, BZ, C A, CH, CN, CR, CZ, DE, DK, DM, DZ , EE, ES, FI, GB, GD, GE, GH, GM, HR, HU, ID, IL, IN, IS, JP, KE, K G, KR, KZ, LC, LK, LR, LS, LT, LU , LV, MA, MD, MG, MK, MN, MW, MX, MZ, NO, NZ, PL, PT, RO, RU, SD, S E, SG, SI, SK, SL, TJ, TM, TR, TT , TZ, UA, UG, UZ, VN, YU, ZA, ZW F-term (reference) 5B075 ND02 QT06 5B082 EA01 GA08
Claims (116)
て、該方法は、 アプリケーションが、ファイルにアクセスするためにオペレーティングシステ
ムに対して1または複数のコールを行なうステップを含み、 前記オペレーティングシステムはオペレーティングシステムファイルシステム
を実現するルーチンを含み、 前記1または複数のコールは前記オペレーティングシステムファイルシステム
を実現する前記ルーチンに対して行なわれ、さらに、 前記1または複数のコールに応答して前記データベースを管理するデータベー
スサーバに対して1または複数のデータベースコマンドを発行するステップと、 前記データベースサーバが前記データベースコマンドを実行して前記データベ
ースから前記データを検索するステップと、 前記データから前記ファイルを生成するステップと、 前記ファイルを前記アプリケーションに提供するステップとを含む、方法。1. A method of accessing data stored in a database, the method comprising the step of an application making one or more calls to an operating system to access a file. The system includes a routine that implements an operating system file system, the one or more calls are made to the routine that implements the operating system file system, and the database is responsive to the one or more calls. Issuing one or more database commands to a database server that manages the database, and the database server executing the database commands to retrieve the data from the database. Including a flop, and generating the file from the data, and providing the file to the application method.
、前記オペレーティングシステムファイルシステムを実現する前記ルーチンによ
って行なわれる、請求項1に記載の方法。2. The method of claim 1, wherein the step of providing the file to the application is performed by the routine implementing the operating system file system.
ベースコマンドを発行するステップは、 前記オペレーティングシステムファイルシステムを実現する前記ルーチンのう
ち1または複数のルーチンが、前記オペレーティングシステムで動作するよう構
成されたプロトコルサーバに対して1または複数のI/Oコマンドを送るステッ
プと、 前記プロトコルサーバが、前記1または複数のI/Oコマンドを1または複数
のDBファイルシステムコマンドに変換するステップと、 前記1または複数のDBファイルシステムコマンドに応答して、前記1または
複数のデータベースコマンドを発行するステップとを含む、請求項1に記載の方
法。3. The step of issuing one or more database commands in response to the one or more calls includes one or more of the routines implementing the operating system file system being executed by the operating system. Sending one or more I / O commands to a protocol server configured to operate, the protocol server converting the one or more I / O commands into one or more DB file system commands The method of claim 1, comprising the steps of: issuing a database command or commands in response to the DB file system command or commands.
を保持するコンピュータ可読媒体であって、該コンピュータ可読媒体は、 アプリケーションがファイルにアクセスするためにオペレーティングシステム
に対して1または複数のコールを行なうステップを行なうための命令を含み、 前記オペレーティングシステムはオペレーティングシステムファイルシステム
を実現するルーチンを含み、 前記1または複数のコールは前記オペレーティングシステムファイルシステム
を実現する前記ルーチンに対して行なわれ、さらに、 前記1または複数のコールに応答して前記データベースを管理するデータベー
スサーバに対して1または複数のデータベースコマンドを発行するステップと、 前記データベースサーバが前記データベースコマンドを実行して前記データベ
ースから前記データを検索するステップと、 前記データから前記ファイルを生成するステップと、 前記ファイルを前記アプリケーションに提供するステップと、を行なうための
命令を含む、コンピュータ可読媒体。4. A computer readable medium carrying instructions for accessing data stored in a database, the computer readable medium comprising one or more operating systems for an application to access a file. Instructions for performing the steps of making a call, the operating system includes a routine that implements an operating system file system, the one or more calls are made to the routine that implements the operating system file system, And further issuing one or more database commands to a database server managing the database in response to the one or more calls; Comprising the steps of retrieving the data from the database by executing the Sukomando, and generating the file from the data, and providing the file to the application, instructions for performing the computer-readable media.
、前記オペレーティングシステムファイルシステムを実現する前記ルーチンによ
って行なわれる、請求項4に記載のコンピュータ可読媒体。5. The computer-readable medium of claim 4, wherein the step of providing the file to the application is performed by the routine that implements the operating system file system.
ベースコマンドを発行するステップは、 前記オペレーティングシステムファイルシステムを実現する前記ルーチンのう
ち1または複数のルーチンが、前記オペレーティングシステムで動作するよう構
成されたプロトコルサーバに対して1または複数のI/Oコマンドを送るステッ
プと、 前記プロトコルサーバが、前記1または複数のI/Oコマンドを1または複数
のDBファイルシステムコマンドに変換するステップと、 前記1または複数のDBファイルシステムコマンドに応答して、前記1または
複数のデータベースコマンドを発行するステップとを含む、請求項4に記載のコ
ンピュータ可読媒体。6. The step of issuing one or more database commands in response to the one or more calls includes one or more of the routines implementing the operating system file system being executed by the operating system. Sending one or more I / O commands to a protocol server configured to operate, the protocol server converting the one or more I / O commands into one or more DB file system commands The computer-readable medium of claim 4, comprising the steps of: issuing the one or more database commands in response to the one or more DB file system commands.
を含み、前記ファイルシステムインターフェイスはファイルをセーブしかつ検索
するためのルーチンを含み、さらに、 前記ファイルシステムインターフェイスを介して複数のファイルオペレーショ
ンを行なうためのコールを受けるステップと、 前記複数のファイルオペレーションを、 もし前記複数のファイルオペレーションのうちすべてのファイルオペレー
ションが失敗なく完了すれば、前記複数のファイルオペレーションによってなさ
れたすべての変化を永久のものとするステップを、 もし前記複数のファイルオペレーションのうち何らかのファイルオペレー
ションが失敗すれば、前記複数のファイルオペレーションのすべてによってなさ
れたすべての変化を無効にするステップを、 行なうことによって、単一のトランザクションとして行なうステップとを含む、
方法。7. A method of performing a file operation, the method including the step of opening a file system interface to an application, the file system interface including routines for saving and retrieving files. Receiving a call to perform a plurality of file operations through the file system interface, the plurality of file operations, if all file operations of the plurality of file operations complete without failure, Making all changes made by any of the file operations permanent, if any of the plurality of file operations fails. The step of disabling all changes made by all of the plurality of file operation, by performing, and a step of performing a single transaction,
Method.
第1のファイルオペレーションおよび第2のファイル上の第2のファイルオペレ
ーションの少なくとも1つを含む、請求項7に記載の方法。8. The method of claim 7, wherein the plurality of file operations include at least one of a first file operation on a first file and a second file operation on a second file.
する一連の書込オペレーションを含む、請求項7に記載の方法。9. The method of claim 7, wherein the plurality of file operations comprises a series of write operations on a single file.
データベースサーバに対して1または複数のデータベースステートメントを発行
するステップを含み、前記データベースサーバは前記データベースステートメン
トを実行して前記複数のファイルオペレーションを行なう、請求項7に記載の方
法。10. The step of performing the plurality of file operations comprises:
8. The method of claim 7, comprising issuing one or more database statements to a database server, the database server executing the database statements to perform the plurality of file operations.
データベースに記憶するためにネットワーク接続にわたって転送することに対応
する、請求項9に記載の方法。11. The method of claim 9, wherein the plurality of write operations correspond to transferring the single file across a network connection for storage in a database.
に応答して該プロトコルサーバによって行なわれる、請求項7に記載の方法。12. The method of claim 7, wherein the call is made by a protocol server in response to receiving the command by the protocol server.
スをエミュレートし、前記コマンドはオペレーティングシステムによって前記プ
ロトコルサーバに送られる、請求項12に記載の方法。13. The method of claim 12, wherein the protocol server emulates a device driver interface and the command is sent by the operating system to the protocol server.
ンピュータ可読媒体であって、該コンピュータ可読媒体は、 アプリケーションに対してファイルシステムインターフェイスを開くステップ
を実行するための命令を含み、前記ファイルシステムインターフェイスはファイ
ルをセーブしかつ検索するためのルーチンを含み、さらに、 前記ファイルシステムインターフェイスを介して複数のファイルオペレーショ
ンを行なうためのコールを受けるステップと、 前記複数のファイルオペレーションを、 もし前記複数のファイルオペレーションのうちすべてのファイルオペレー
ションが失敗なく完了すれば、前記複数のファイルオペレーションによってなさ
れたすべての変化を永久のものとするステップを、 もし前記複数のファイルオペレーションのうち何らかのファイルオペレー
ションが失敗すれば、前記複数のファイルオペレーションのすべてによってなさ
れたすべての変化を無効にするステップを、 行なうことによって、単一のトランザクションとして行なうステップと、を実行
するための命令を含む、コンピュータ可読媒体。14. A computer readable medium carrying instructions for performing file operations, the computer readable medium comprising instructions for performing a step of opening a file system interface to an application, said file system. The interface includes routines for saving and retrieving files, further comprising receiving calls to perform multiple file operations through the file system interface, the multiple file operations, if the multiple file operations are performed. If all file operations of the operations are completed without failure, the step of making all the changes made by the plurality of file operations permanent is If any file operation of the file operations fails, undoing all changes made by all of the plurality of file operations, thereby performing as a single transaction. A computer-readable medium containing instructions.
の第1のファイルオペレーションおよび第2のファイル上の第2のファイルオペ
レーションの少なくとも1つを含む、請求項14に記載のコンピュータ可読媒体
。15. The computer-readable computer-readable medium of claim 14, wherein the plurality of file operations includes at least one of a first file operation on a first file and a second file operation on a second file. Medium.
対する一連の書込オペレーションを含む、請求項14に記載のコンピュータ可読
媒体。16. The computer-readable medium of claim 14, wherein the plurality of file operations comprises a series of write operations on a single file.
データベースサーバに対して1または複数のデータベースステートメントを発行
するステップを含み、前記データベースサーバは前記データベースステートメン
トを実行して前記複数のファイルオペレーションを行なう、請求項14に記載の
コンピュータ可読媒体。17. The steps of performing the plurality of file operations include:
15. The computer-readable medium of claim 14 including the step of issuing one or more database statements to a database server, the database server executing the database statements to perform the plurality of file operations.
データベースに記憶するためにネットワーク接続にわたって転送することに対応
する、請求項16に記載のコンピュータ可読媒体。18. The computer-readable medium of claim 16, wherein the plurality of write operations correspond to transferring the single file over a network connection for storage in a database.
に応答して該プロトコルサーバによって行なわれる、請求項14に記載のコンピ
ュータ可読媒体。19. The computer-readable medium of claim 14, wherein the call is made by a protocol server in response to receiving the command.
スをエミュレートし、前記コマンドはオペレーティングシステムによって前記プ
ロトコルサーバに送られる、請求項19に記載のコンピュータ可読媒体。20. The computer-readable medium of claim 19, wherein the protocol server emulates a device driver interface and the command is sent by the operating system to the protocol server.
イルリクエストに応答する方法であって、該方法は、 ファイル識別子とクエリとの間に関連付けを構築するステップと、 前記ファイル識別子に関連付けられたファイルに対するリクエストを前記ファ
イルシステムインターフェイスを介して受取るステップと、 前記リクエストに応答して、 前記クエリを実行してデータの組を生成するステップ、 前記データの組に基づいて前記ファイルの内容を生成するステップ、およ
び 前記ファイルを前記ファイルシステムインターフェイスを介して提供する
ステップ、 を行なうステップとを含む、方法。21. A method of responding to a file request received via a file system interface, the method comprising: building an association between a file identifier and a query; and a file associated with the file identifier. Receiving a request via the file system interface for executing a query to generate a set of data in response to the request; and generating the contents of the file based on the set of data. And, providing the file via the file system interface.
、 前記内容を生成するステップは、前記データの組に基づいてどのファイルが前
記ディレクトリ内にあるかを判定することによって行なわれる、請求項21に記
載の方法。22. The file is a directory, the request is for a list of files in the directory, and the step of generating the content includes determining which file is the directory based on the set of data. 22. The method of claim 21, performed by determining if
ベース記録を、前記ディレクトリ内のファイルとして提示するステップを含む、
請求項22に記載の方法。23. The query selects a set of database records, and providing the file comprises presenting a database record from the set of database records as a file in the directory.
23. The method of claim 22.
くとも一部分を構築するステップを含む、請求項21に記載の方法。24. The method of claim 21, wherein the file is a document, and the step of generating the content comprises building at least a portion of the document from the data set.
された前記部分を該ドキュメントの先に記憶されていた部分と組合せて前記ドキ
ュメントを作成するステップを含む、請求項24に記載の方法。25. The method of claim 24, wherein generating the content comprises combining the portion constructed from the data set with a previously stored portion of the document to create the document. The method described.
リ内にあるかを判定するステップは、前記ディレクトリ内の1または複数のディ
レクトリを判定するステップを含み、 該方法は、前記データの組に基づいて、どのファイルが前記1または複数のデ
ィレクトリ内にあるかを判定するステップをさらに含む、請求項22に記載の方
法。26. Determining which files are in the directory based on the set of data includes determining one or more directories in the directory, the method comprising: 23. The method of claim 22, further comprising determining which files are in the one or more directories based on the set.
する句によるグループ(group by clause)を含み、 該1または複数のディレクトリは、前記キーによるグループに対する値に対応
する、請求項26に記載の方法。27. The query includes a group by clause that identifies a group by key, the one or more directories corresponding to values for the group by key. Item 26. The method according to Item 26.
クエストを前記ファイルシステムインターフェイスを通じて受取るステップは、 オペレーティングシステムがアプリケーションから前記リクエストを受取
り該リクエストに応答してメッセージを送るステップと、 プロトコルサーバが該メッセージを該オペレーティングシステムから受取
るステップとを含み、 前記クエリを実行してデータの組を生成するステップは、 前記メッセージに応答してデータベースサーバに対してデータベースコマ
ンドを発行するステップを含み、 前記ファイルシステムインターフェイスを通じて前記ファイルを提供するステ
ップは、 該プロトコルサーバが前記ファイルを前記オペレーティングシステムに提
供するステップと、 前記オペレーティングシステムが前記ファイルを前記アプリケーションに提
供するステップとを含む、請求項21に記載の方法。28. Receiving a request for a file associated with the file identifier through the file system interface, the operating system receiving the request from an application and sending a message in response to the request; Receiving a message from the operating system, executing the query to generate a data set includes issuing a database command to a database server in response to the message, the file system Providing the file through an interface, the protocol server providing the file to the operating system, and Computing system and providing the file to the application, The method of claim 21.
イルリクエストに応答するための命令を保持するコンピュータ可読媒体であって
、該コンピュータ可読媒体は、 ファイル識別子とクエリとの間に関連付けを構築するステップと、 前記ファイル識別子に関連付けられたファイルに対するリクエストを前記ファ
イルシステムインターフェイスを介して受取るステップと、 前記リクエストに応答して、 前記クエリを実行してデータの組を生成するステップ、 前記データの組に基づいて前記ファイルの内容を生成するステップ、およ
び 前記ファイルを前記ファイルシステムインターフェイスを介して提供する
ステップ、 を行なうステップと、を実行するための命令を含む、コンピュータ可読媒体。29. A computer readable medium carrying instructions for responding to a file request received through a file system interface, the computer readable medium establishing an association between a file identifier and a query. Receiving, via the file system interface, a request for a file associated with the file identifier, in response to the request, executing the query to generate a data set, based on the data set A computer-readable medium comprising instructions for performing the steps of: generating the contents of the file; and providing the file via the file system interface.
、 前記内容を生成するステップは、前記データの組に基づいてどのファイルが前
記ディレクトリ内にあるかを判定することによって行なわれる、請求項29に記
載のコンピュータ可読媒体。30. The file is a directory, the request is for a list of files in the directory, and the step of generating the content includes determining which file is the directory based on the set of data. 30. The computer-readable medium of claim 29, which is performed by determining if it is in.
ベース記録を、前記ディレクトリ内のファイルとして提示するステップを含む、
請求項30に記載のコンピュータ可読媒体。31. The query selects a set of database records, and the step of providing the file comprises presenting a database record from the set of database records as a file in the directory.
The computer-readable medium of claim 30.
くとも一部分を構築するステップを含む、請求項29に記載のコンピュータ可読
媒体。32. The computer-readable medium of claim 29, wherein the file is a document and the step of generating the content comprises constructing at least a portion of the document from the data set.
された前記部分を該ドキュメントの先に記憶されていた部分と組合せて前記ドキ
ュメントを作成するステップを含む、請求項32に記載のコンピュータ可読媒体
。33. The method of claim 32, wherein generating the content comprises combining the portion constructed from the data set with a previously stored portion of the document to create the document. The computer-readable medium described.
リ内にあるかを判定するステップは、前記ディレクトリ内の1または複数のディ
レクトリを判定するステップを含み、 該コンピュータ可読媒体は、前記データの組に基づいて、どのファイルが前記
1または複数のディレクトリ内にあるかを判定するステップをさらに含む、請求
項30に記載のコンピュータ可読媒体。34. Determining which files are in the directory based on the set of data includes determining one or more directories in the directory, the computer-readable medium comprising: 31. The computer-readable medium of claim 30, further comprising determining which files are in the one or more directories based on the data set.
ープを含み、 該1または複数のディレクトリは、前記キーによるグループに対する値に対応
する、請求項34に記載のコンピュータ可読媒体。35. The computer-readable medium of claim 34, wherein the query includes groups by phrase identifying groups by key, and wherein the one or more directories correspond to values for groups by key.
クエストを前記ファイルシステムインターフェイスを通じて受取るステップは、 オペレーティングシステムがアプリケーションから前記リクエストを受取
り該リクエストに応答してメッセージを送るステップと、 プロトコルサーバが該メッセージを該オペレーティングシステムから受取
るステップとを含み、 前記クエリを実行してデータの組を生成するステップは、 前記メッセージに応答してデータベースサーバに対してデータベースコマ
ンドを発行するステップを含み、 前記ファイルシステムインターフェイスを通じて前記ファイルを提供するステ
ップは、 該プロトコルサーバが前記ファイルを前記オペレーティングシステムに提
供するステップと、 前記オペレーティングシステムが前記ファイルを前記アプリケーションに提
供するステップとを含む、請求項29に記載のコンピュータ可読媒体。36. Receiving a request for a file associated with the file identifier through the file system interface, the operating system receiving the request from an application and sending a message in response to the request; Receiving a message from the operating system, executing the query to generate a data set includes issuing a database command to a database server in response to the message, the file system Providing the file through an interface, the protocol server providing the file to the operating system, and Computing system and providing the file to the application, a computer-readable medium of claim 29.
あって、該方法は、 ファイルシステムオペレーションのタイプ、ファイル、および関心を持ってい
るエンティティの間に関連付けを構築するステップと、 前記タイプのファイルシステムオペレーションがいつ前記ファイルに対して行
なわれるかを検出するステップと、 前記タイプのファイルシステムオペレーションが前記ファイルに対して行なわ
れたことを検出したのに応答して、前記関心を持っているエンティティに対して
メッセージを送るステップとを含む、方法。37. A method of managing files in a computer system, the method comprising establishing an association between a type of file system operation, a file and an entity of interest, said type of file. Detecting when a system operation is performed on the file, and the interested entity in response to detecting that a file system operation of the type was performed on the file. Sending a message to.
ーションが前記ファイルに対して行なわれたことを示すデータを含む、請求項3
7に記載の方法。38. The message comprises data indicating that a file system operation of the type was performed on the file.
7. The method according to 7.
トリ内に挿入するものである、請求項37に記載の方法。39. The method of claim 37, wherein the file is a directory and the type of file system operation is to insert another file into the directory.
、および関心を持っているエンティティの間に関連付けを構築するステップは、
該ファイルが特定的なディレクトリ内に記憶されるのに応答して行なわれる、請
求項37に記載の方法。40. Building an association between the type of file system operation, a file, and an entity of interest.
38. The method of claim 37, performed in response to the file being stored in a particular directory.
応答して、該ファイルシステムオペレーションのタイプ、ファイル、および関心
を持っているエンティティの間の該関連付けを削除するステップをさらに含む、
請求項40に記載の方法。41. Responsive to the file being removed from the particular directory, further comprising the step of deleting the association between the type of file system operation, the file, and the entity of interest. ,
The method of claim 40.
複数のデータベースコマンドを発行することによって、前記ファイルに対して前
記タイプのファイルオペレーションを行なうステップを含む、請求項37に記載
の方法。42. The file is stored in a database, and the method comprises a file operation of the type for the file by issuing one or more database commands to a database server managing the database. 38. The method of claim 37, including the step of performing.
、および関心を持っているエンティティの間に関連付けを構築するステップは、
前記タイプのファイルシステムオペレーションが前記ファイルに対して行なわれ
たときに前記関心を持っているエンティティにメッセージが送られねばならない
ことを示すデータベース記録を前記データベース内に記憶するステップを含む、
請求項42に記載の方法。43. Building an association between the type of file system operation, a file, and an entity of interest.
Storing a database record in the database indicating that a message should be sent to the interested entity when a file system operation of the type is performed on the file.
43. The method of claim 42.
コンピュータ可読媒体であって、該コンピュータ可読媒体は、 ファイルシステムオペレーションのタイプ、ファイル、および関心を持ってい
るエンティティの間に関連付けを構築するステップと、 前記タイプのファイルシステムオペレーションがいつ前記ファイルに対して行
なわれるかを検出するステップと、 前記タイプのファイルシステムオペレーションが前記ファイルに対して行なわ
れたことを検出したのに応答して、前記関心を持っているエンティティに対して
メッセージを送るステップとを含む、コンピュータ可読媒体。44. A computer readable medium for managing files in a computer system, the computer readable medium establishing an association between a type of file system operation, a file, and an entity of interest. Detecting when a file system operation of the type is performed on the file; and in response to detecting that a file system operation of the type is performed on the file, Sending a message to an entity of interest.
ーションが前記ファイルに対して行なわれたことを示すデータを含む、請求項4
4に記載のコンピュータ可読媒体。45. The message includes data indicating that a file system operation of the type was performed on the file.
4. A computer-readable medium according to item 4.
トリ内に挿入するものである、請求項44に記載のコンピュータ可読媒体。46. The computer-readable medium of claim 44, wherein the file is a directory and the type of file system operation is to insert another file into the directory.
、および関心を持っているエンティティの間に関連付けを構築するステップは、
該ファイルが特定的なディレクトリ内に記憶されるのに応答して行なわれる、請
求項44に記載のコンピュータ可読媒体。47. Building an association between the type of file system operation, the file, and the entity of interest.
The computer-readable medium of claim 44, which is done in response to the file being stored in a particular directory.
応答して、該ファイルシステムオペレーションのタイプ、ファイル、および関心
を持っているエンティティの間の該関連付けを削除するステップをさらに含む、
請求項47に記載のコンピュータ可読媒体。48. Responsive to the file being removed from the particular directory, further comprising the step of deleting the association between the type of file system operation, the file, and the entity of interest. ,
The computer-readable medium of claim 47.
に対して1または複数のデータベースコマンドを発行することによって、前記フ
ァイルに対して前記タイプのファイルオペレーションを行なうステップを含む、
請求項44に記載のコンピュータ可読媒体。49. The file is stored in a database and the computer-readable medium is of the type for the file by issuing one or more database commands to a database server that manages the database. Including steps to perform file operations,
The computer-readable medium of claim 44.
、および関心を持っているエンティティの間に関連付けを構築するステップは、
前記タイプのファイルシステムオペレーションが前記ファイルに対して行なわれ
たときに前記関心を持っているエンティティにメッセージが送られねばならない
ことを示すデータベース記録を前記データベース内に記憶するステップを含む、
請求項49に記載のコンピュータ可読媒体。50. Building an association between the type of file system operation, the file, and the entity of interest.
Storing a database record in the database indicating that a message should be sent to the interested entity when a file system operation of the type is performed on the file.
The computer-readable medium of claim 49.
の方法であって、該方法は、 第1の組の方法を含む第1のファイルクラスを構築するステップと、 第2の組の方法を含む第2のファイルクラスを識別するデータを受取るステッ
プと、 ファイルに対してオペレーションを行なうように求めるリクエストに応答して
、該ファイルシステムが、 該ファイルに関連付けられているクラスを識別するステップ、および、 該ファイルが該第1のクラスに関連付けられている場合には、前記オペレ
ーションを行なうために前記第1のクラスに関連付けられている第1のルーチン
を呼出すステップ、 該ファイルが該第2のクラスに関連付けられている場合には、前記オペレ
ーションを行なうために前記第2のクラスに関連付けられている第2のルーチン
を呼出すステップ、 を行なうステップと、を含む、方法。51. A method for implementing a file system for storing electronic files, the method comprising: constructing a first file class comprising a first set of methods; Receiving data identifying a second file class that includes the method, and in response to a request to perform an operation on the file, the file system identifying the class associated with the file. And, if the file is associated with the first class, calling a first routine associated with the first class to perform the operation; Associated with the second class to perform the operation, if associated with the second class Invoking a second routine that is executing;
2のファイルクラスが前記第1のファイルクラスのサブクラスであることを特定
し、 該ファイルシステムは、該第2のファイルクラスに、該第1のファイルシステ
ムからの該第1の組の方法を継承させる、請求項51に記載の方法。52. The data identifying the second file class specifies that the second file class is a subclass of the first file class and the file system is the second file class. 52. The method of claim 51, causing a class to inherit the first set of methods from the first file system.
供し、 該第2のルーチンは、前記第2のファイルクラスに関連付けられているファイ
ルに対する前記第1の実現をオーバライドする前記オペレーションの第2の実現
を提供する、請求項52に記載の方法。53. The first routine provides a first realization of the operation and the second routine overrides the first realization for files associated with the second file class. 53. The method of claim 52, providing a second implementation of the operation.
の方法であって、該方法は、 第1の組の属性および第1の組の方法を含む第1のファイルクラスを構築する
ステップと、 第2の組の属性および第2の組の方法を含む第2のファイルクラスを識別する
データを受取るステップと、 該ファイルシステムが、前記第1のファイルクラスのファイルに対する前記第
1の組の属性の属性値および、前記第2のファイルクラスのファイルに対する前
記第2の組の属性の属性値を記憶するステップとを含み、前記第1の組の属性は
前記第2の組の属性とは異なる、方法。54. A method for implementing a file system for storing electronic files, the method comprising constructing a first file class including a first set of attributes and a first set of methods. Receiving data identifying a second file class including a second set of attributes and a second set of methods, the file system comprising: the first set for files of the first file class; Storing the attribute values of the attributes of the second set of attributes for the files of the second file class and the attributes of the first set of attributes of the second set of attributes. Different, way.
される関係テーブル内に、前記ファイルシステム内に記憶されたファイルの属性
値を記憶する、請求項54に記載の方法。55. The method of claim 54, wherein the file system stores attribute values of files stored in the file system in a relational table managed by a database server.
クラスであり、 該関係テーブルは、前記第1の組の属性の属性値を記憶する第1の関係テーブ
ルを含み、 該関係テーブルは、前記第2の組の属性に含まれ前記第1の組の属性には含ま
れない属性の属性値を記憶する第2の関係テーブルを含む、請求項55に記載の
方法。56. The second file class is a subclass of the first file class, and the relationship table includes a first relationship table storing attribute values of the first set of attributes, 56. The method of claim 55, wherein the relationship table comprises a second relationship table that stores attribute values for attributes included in the second set of attributes and not included in the first set of attributes.
付けられている特定的なファイルを記憶し、 前記特定的なファイルについて、該ファイルシステムは、前記第1の関係テー
ブルの特定の行内に、前記第1の組の属性の属性値を記憶し、 前記特定的なファイルについて、該ファイルシステムは、前記第2の関係テー
ブルの特定の行内に、前記第2の組の属性内にあって前記第1の組の属性には含
まれない属性の属性値を記憶する、請求項56に記載の方法。57. The file system stores a specific file associated with the second file class, for the specific file, the file system stores a specific file of the first relationship table. In a row, storing attribute values of the first set of attributes, for the particular file, the file system is in a particular row of the second relationship table, in the second set of attributes. 57. The method of claim 56, storing attribute values for attributes that are not included in the first set of attributes.
係テーブルの前記特定の行へのリンクを含む、請求項57に記載の方法。58. The method of claim 57, wherein the particular row of the first relationship table comprises a link to the particular row of the second relationship table.
の命令を保持するコンピュータ可読媒体であって、該コンピュータ可読媒体は、 第1の組の方法を含む第1のファイルクラスを構築するステップと、 第2の組の方法を含む第2のファイルクラスを識別するデータを受取るステッ
プと、 ファイルに対してオペレーションを行なうように求めるリクエストに応答して
、該ファイルシステムが、 該ファイルに関連付けられているクラスを識別するステップ、および、 該ファイルが該第1のクラスに関連付けられている場合には、前記オペレ
ーションを行なうために前記第1のクラスに関連付けられている第1のルーチン
を呼出すステップ、 該ファイルが該第2のクラスに関連付けられている場合には、前記オペレ
ーションを行なうために前記第2のクラスに関連付けられている第2のルーチン
を呼出すステップ、 を行なうステップと、を実行するための命令を含む、コンピュータ可読媒体。59. A computer-readable medium carrying instructions for implementing a file system for storing electronic files, said computer-readable medium constructing a first file class comprising a first set of methods. And a step of receiving data identifying a second file class including a second set of methods, the file system associating with the file in response to a request to perform an operation on the file. Identifying the class being assigned, and if the file is associated with the first class, calling a first routine associated with the first class to perform the operation. Step, if the file is associated with the second class, the operation Calling a second routine associated with the second class to perform a computer program, and executing instructions for performing a computer readable medium.
2のファイルクラスが前記第1のファイルクラスのサブクラスであることを特定
し、 該ファイルシステムは、該第2のファイルクラスに、該第1のファイルシステ
ムからの該第1の組の方法を継承させる、請求項59に記載のコンピュータ可読
媒体。60. The data identifying the second file class specifies that the second file class is a subclass of the first file class and the file system is the second file class. 60. The computer-readable medium of claim 59, causing a class to inherit the first set of methods from the first file system.
供し、 該第2のルーチンは、前記第2のファイルクラスに関連付けられているファイ
ルに対する前記第1の実現をオーバライドする前記オペレーションの第2の実現
を提供する、請求項60に記載のコンピュータ可読媒体。61. The first routine provides a first realization of the operation and the second routine overrides the first realization for a file associated with the second file class. The computer-readable medium of claim 60, which provides a second implementation of the operation.
の命令を保持するコンピュータ可読媒体であって、該コンピュータ可読媒体は、 第1の組の属性および第1の組の方法を含む第1のファイルクラスを構築する
ステップと、 第2の組の属性および第2の組の方法を含む第2のファイルクラスを識別する
データを受取るステップと、 該ファイルシステムが、前記第1のファイルクラスのファイルに対する前記第
1の組の属性の属性値および、前記第2のファイルクラスのファイルに対する前
記第2の組の属性の属性値を記憶するステップと、を実行するための命令を含み
、前記第1の組の属性は前記第2の組の属性とは異なる、コンピュータ可読媒体
。62. A computer readable medium carrying instructions for implementing a file system for storing electronic files, the computer readable medium including a first set of attributes and a first set of methods. Constructing a first file class, receiving data identifying a second file class including a second set of attributes and a second set of methods, the file system comprising: Storing the attribute values of the first set of attributes for the files of the second file and the attribute values of the second set of attributes for the files of the second file class. A computer-readable medium, wherein the attributes of the first set are different from the attributes of the second set.
される関係テーブル内に、前記ファイルシステム内に記憶されたファイルの属性
値を記憶する、請求項62に記載のコンピュータ可読媒体。63. The computer-readable medium of claim 62, wherein the file system stores attribute values of files stored in the file system in a relational table managed by a database server.
クラスであり、 該関係テーブルは、前記第1の組の属性の属性値を記憶する第1の関係テーブ
ルを含み、 該関係テーブルは、前記第2の組の属性に含まれ前記第1の組の属性には含ま
れない属性の属性値を記憶する第2の関係テーブルを含む、請求項63に記載の
コンピュータ可読媒体。64. The second file class is a subclass of the first file class, and the relationship table includes a first relationship table storing attribute values of the first set of attributes, 64. The computer-readable medium of claim 63, wherein the relationship table includes a second relationship table that stores attribute values for attributes that are included in the second set of attributes and not included in the first set of attributes. .
付けられている特定的なファイルを記憶し、 前記特定的なファイルについて、該ファイルシステムは、前記第1の関係テー
ブルの特定の行内に、前記第1の組の属性の属性値を記憶し、 前記特定的なファイルについて、該ファイルシステムは、前記第2の関係テー
ブルの特定の行内に、前記第2の組の属性内にあって前記第1の組の属性には含
まれない属性の属性値を記憶する、請求項64に記載のコンピュータ可読媒体。65. The file system stores a specific file associated with the second file class, and for the specific file, the file system stores a specific file in the first relationship table. In a row, storing attribute values of the first set of attributes, for the particular file, the file system is in a particular row of the second relationship table, in the second set of attributes. 66. The computer-readable medium of claim 64, storing attribute values for attributes that are not included in the first set of attributes.
係テーブルの前記特定の行へのリンクを含む、請求項65に記載のコンピュータ
可読媒体。66. The computer-readable medium of claim 65, wherein the particular row of the first relationship table includes a link to the particular row of the second relationship table.
って、該方法は、 現時点においてデータベースに記憶されている記憶ファイルに対するリクエス
トをアプリケーションから受取るステップを含み、前記記憶ファイルは第1のフ
ァイルタイプに関連付けられており、さらに、 前記データベースから前記記憶ファイルに関連付けられているデータを検索す
るために1または複数のデータベースコマンドを発行するステップと、 第1の組の選択基準に基づいて複数のレンダラから1つのレンダラを選択する
ステップと、 前記レンダラを使用して前記データから外向きファイルを生成するステップと
を含み、前記外向きファイルは第2のファイルタイプに対応し、さらに、 前記外向きファイルを前記アプリケーションに提供するステップを含む、方法
。67. A method of accessing data stored in a database, the method comprising: receiving a request from an application for a storage file currently stored in the database, the storage file comprising a first Issuing one or more database commands associated with a file type and further retrieving data associated with the storage file from the database, the plurality of database commands based on a first set of selection criteria. Selecting one renderer from the renderers, and using the renderer to generate an outbound file from the data, the outbound file corresponding to a second file type, and further comprising: The orientation file to the application Including the step of the method.
サポートすることを判定するステップをさらに含み、 前記レンダラは、第2の組の選択基準に基づいて前記複数のファイルタイプか
ら前記第2のファイルタイプを選択する、請求項67に記載の方法。68. The method further comprises determining that the application supports multiple file types, wherein the renderer selects from the multiple file types based on a second set of selection criteria. 68. The method of claim 67, selecting two file types.
判定するステップをさらに含み、 前記第2の組の選択基準は、前記1または複数の属性の値に基づく選択基準を
含む、請求項68に記載の方法。69. The method further comprises determining the value of one or more attributes of the storage file, the second set of selection criteria being selection criteria based on the values of the one or more attributes. 69. The method of claim 68, including.
ることを判定するステップは、 前記アプリケーションのアイデンティティを判定するステップと、 前記データベースから、前記アプリケーションの能力を示すデータを読出すス
テップとを含む、請求項68に記載の方法。70. The step of determining that the application supports multiple file types includes the step of determining the application's identity and reading data from the database that is indicative of the application's capabilities. 69. The method of claim 68.
イプに基づく選択基準を含む、請求項67に記載の方法。71. The method of claim 67, wherein the first set of selection criteria comprises file type-based selection criteria of the storage file.
同一のファイルタイプであり、 前記外向きファイルを生成するステップは、前記データベース内の1または複
数のテーブルの複数の欄からの値を、単一のファイルへと組合せるステップを含
む、請求項67に記載の方法。72. The first file type is the same file type as the second file type, and wherein the step of generating the outbound file includes a plurality of columns of one or more tables in the database. 68. The method of claim 67, including the step of combining the values from to a single file.
1または複数のメタデータ値を生成するステップと、 前記データベース内に前記オリジナルファイルを前記記憶ファイルとして記憶
するステップと、 前記データベース内に前記1または複数のメタデータ値を、前記1または複数
のメタデータ値を前記記憶ファイルと関連付ける態様で記憶するステップと、 を行なうステップをさらに含む、請求項67に記載の方法。73. Receiving an original file of the first data type before receiving the request; parsing the original file to generate one or more metadata values for the original file. Storing the original file as the storage file in the database, storing the one or more metadata values in the database in a manner that associates the one or more metadata values with the storage file. 68. The method of claim 67, further comprising the steps of: and.
トコルに従って伝送されたデータを受取ることによって行なわれ、 前記外向きファイルを前記アプリケーションに提供するステップは、データを
第2のプロトコルに従って伝送することによって行なわれ、 前記第1のプロトコルは前記第2のプロトコルとは異なる、請求項73に記載
の方法。74. The step of receiving the original file is performed by receiving data transmitted according to a first protocol, and the step of providing the outbound file to the application transmits data according to a second protocol. 74. The method of claim 73, wherein the first protocol is different from the second protocol.
によってサポートされるI/Oプロトコルであって、 該第2のプロトコルは、第2のオペレーティングシステムによってサポートさ
れるI/Oプロトコルである、請求項74に記載の方法。75. The first protocol is an I / O protocol supported by a first operating system and the second protocol is an I / O protocol supported by a second operating system. 75. The method of claim 74, wherein:
少なくとも一方は、HTTP、FTP、IMAP4およびPOP3からなるプロ
トコルの組に属する、請求項74に記載の方法。76. The method of claim 74, wherein at least one of the first protocol and the second protocol belongs to a set of protocols consisting of HTTP, FTP, IMAP4 and POP3.
令を保持するコンピュータ可読媒体であって、該コンピュータ可読媒体は、 現時点においてデータベースに記憶されている記憶ファイルに対するリクエス
トをアプリケーションから受取るステップを実行するための命令を含み、前記記
憶ファイルは第1のファイルタイプに関連付けられており、さらに、 前記データベースから前記記憶ファイルに関連付けられているデータを検索す
るために1または複数のデータベースコマンドを発行するステップと、 第1の組の選択基準に基づいて複数のレンダラから1つのレンダラを選択する
ステップと、 前記レンダラを使用して前記データから外向きファイルを生成するステップと
を実行するための命令を含み、前記外向きファイルは第2のファイルタイプに対
応し、さらに、 前記外向きファイルを前記アプリケーションに提供するステップを実行するた
めの命令を含む、コンピュータ可読媒体。77. A computer readable medium carrying instructions for accessing data stored in a database, the computer readable medium receiving a request from an application for a storage file currently stored in the database. The storage file is associated with a first file type, and further includes one or more database commands for retrieving the data associated with the storage file from the database. Performing a publishing step, selecting a renderer from a plurality of renderers based on a first set of selection criteria, and generating an outbound file from the data using the renderer. Including instructions, said outward Airu corresponds to a second file type, further comprising instructions for performing the step of providing the outwardly file to the application, computer-readable media.
ファイルタイプをサポートすることを判定するステップを実行するための命令を
さらに含み、 前記レンダラは、第2の組の選択基準に基づいて前記複数のファイルタイプか
ら前記第2のファイルタイプを選択する、請求項77に記載のコンピュータ可読
媒体。78. The computer-readable medium further comprises instructions for performing steps for determining that the application supports multiple file types, the renderer based on a second set of selection criteria. 78. The computer-readable medium of claim 77, selecting the second file type from the plurality of file types.
複数の属性の値を判定するステップを実行するための命令をさらに含み、 前記第2の組の選択基準は、前記1または複数の属性の値に基づく選択基準を
含む、請求項78に記載のコンピュータ可読媒体。79. The computer-readable medium further comprises instructions for performing the step of determining the value of one or more attributes of the storage file, the second set of selection criteria being the one or more of the one or more. 79. The computer-readable medium of claim 78, comprising selection criteria based on the value of an attribute of.
ることを判定するステップは、 前記アプリケーションのアイデンティティを判定するステップと、 前記データベースから、前記アプリケーションの能力を示すデータを読出すス
テップとを含む、請求項78に記載のコンピュータ可読媒体。80. The step of determining that the application supports multiple file types includes the step of determining the application's identity and reading data from the database indicating the application's capabilities. 79. The computer-readable medium of claim 78.
イプに基づく選択基準を含む、請求項77に記載のコンピュータ可読媒体。81. The computer-readable medium of claim 77, wherein the first set of selection criteria comprises selection criteria based on a file type of the storage file.
同一のファイルタイプであり、 前記外向きファイルを生成するステップは、前記データベース内の1または複
数のテーブルの複数の欄からの値を、単一のファイルへと組合せるステップを含
む、請求項77に記載のコンピュータ可読媒体。82. The first file type is the same file type as the second file type, and wherein the step of generating the outbound file includes a plurality of columns of one or more tables in the database. 78. The computer-readable medium of claim 77, including the step of combining the values from to a single file.
1または複数のメタデータ値を生成するステップと、 前記データベース内に前記オリジナルファイルを前記記憶ファイルとして記憶
するステップと、 前記データベース内に前記1または複数のメタデータ値を、前記1または複数
のメタデータ値を前記記憶ファイルと関連付ける態様で記憶するステップと、 を実行するための命令をさらに含む、請求項77に記載のコンピュータ可読媒体
。83. Receiving an original file of the first data type prior to receiving the request; parsing the original file to generate one or more metadata values for the original file. Storing the original file as the storage file in the database, storing the one or more metadata values in the database in a manner that associates the one or more metadata values with the storage file. 78. The computer-readable medium of claim 77, further comprising the steps: and instructions for performing.
トコルに従って伝送されたデータを受取ることによって行なわれ、 前記外向きファイルを前記アプリケーションに提供するステップは、データを
第2のプロトコルに従って伝送することによって行なわれ、 前記第1のプロトコルは前記第2のプロトコルとは異なる、請求項83に記載
のコンピュータ可読媒体。84. The step of receiving the original file is performed by receiving data transmitted according to a first protocol, and the step of providing the outbound file to the application transmits data according to a second protocol. 84. The computer-readable medium of claim 83, wherein the first protocol is different from the second protocol.
によってサポートされるI/Oプロトコルであって、 該第2のプロトコルは、第2のオペレーティングシステムによってサポートさ
れるI/Oプロトコルである、請求項84に記載のコンピュータ可読媒体。85. The first protocol is an I / O protocol supported by a first operating system and the second protocol is an I / O protocol supported by a second operating system. 85. The computer-readable medium of claim 84, which is.
少なくとも一方は、HTTP、FTP、IMAP4およびPOP3からなるプロ
トコルの組に属する、請求項84に記載のコンピュータ可読媒体。86. The computer-readable medium of claim 84, wherein at least one of the first protocol and the second protocol belongs to a set of protocols consisting of HTTP, FTP, IMAP4 and POP3.
法であって、該方法は、 ファイルの新しいバージョンの作成に応答して、ディレクトリから派生する該
ディレクトリの新しいバージョンを作成するステップを含み、バージョン付けさ
れるディレクトリの該異なるバージョンは、異なる時間点に関連付けられており
、さらに、 バージョン付けされるディレクトリの特定的なバージョンから派生する該ファ
イルの該バージョンが、該バージョン付けされるディレクトリに関連付けられて
いる該時間点を反映するように、該ファイルシステム内の該ファイル間のリンク
を維持するステップを含む、方法。87. A method of managing a version of a file in a file system, the method comprising: in response to creating a new version of a file, creating a new version of the directory that is derived from the directory. , The different versions of the versioned directory are associated with different time points, and the version of the file derived from a particular version of the versioned directory is added to the versioned directory. Maintaining a link between the files in the file system to reflect the associated time points.
択された時間点を判定するステップと、 ディレクトリの特定的なバージョンを該ディレクトリの複数のバージョンから
、該ディレクトリの該特定的なバージョンが該選択された時間点に関連付けられ
ていることに基づいて選択するステップと、 該ディレクトリの該選択されたバージョンからのリンクを辿って、前記オペレ
ーションに関与する1または複数のファイルの場所を突止めるステップとをさら
に含む、請求項87に記載の方法。88. Determining a selected time point for which a file should reflect for a particular operation, and a particular version of the directory from a plurality of versions of the directory to the particular version of the directory. Selecting based on a version being associated with the selected time point, and following links from the selected version of the directory to locate one or more files involved in the operation. 88. The method of claim 87, further comprising: locating.
ージョンから第2のディレクトリの第1のバージョンへの移動を示す入力を受取
るステップを含み、 該第1のディレクトリの第1のバージョンは、前記特定的なファイル以外のゼ
ロまたは1以上のファイルの第1の組を含み、 該第2のディレクトリの第1のバージョンは、前記特定的なファイル以外のゼ
ロまたは1以上のファイルの第2の組を含み、 該リンクを維持するステップは、前記入力に応答して、 前記第1のディレクトリの第2のバージョンを作成するステップと、 前記特定的なファイルを前記第1のディレクトリの前記第2のバージョン
のメンバとして構築することなく、前記第1の組のゼロまたは1以上のファイル
を前記第1のディレクトリの前記第2のバージョンのメンバとして構築するステ
ップと、 前記第2のディレクトリの第2のバージョンを作成するステップと、 前記特定的なファイルおよび前記第2の組のゼロまたは1以上のファイル
を、前記第2のディレクトリの前記第2のバージョンのメンバとして構築するス
テップと、を実行するステップを含む、請求項87に記載の方法。89. The method includes the step of receiving an input indicating a movement of a particular file from a version of a first directory to a first version of a second directory, the method of claim One version includes a first set of zero or more files other than the particular file, and a first version of the second directory is zero or more than one file other than the particular file. Including a second set of files, maintaining the link in response to the input, creating a second version of the first directory; The first set of zero or more files in the first directory without building as a member of the second version of the directory. Building a second version of the second directory, the specific file and the second set of zero or more files in the second directory. 88. The method of claim 87, comprising the steps of: building as a member of the second version of a directory.
法であって、該方法は、 重ね書きされないファイルのバージョンにタグを付けるための機構を提供する
ステップと、 ファイルの第1のバージョンへの更新に応答して、 該ファイルの該第1のバージョンにタグが付けられているかを判定するス
テップ、および、 該ファイルの該第1のバージョンにタグが付けられている場合には、該フ
ァイルの前記第1のバージョンを保持しながら該ファイルの前記第2のバージョ
ンを記憶するステップを、 該ファイルの該第1のバージョンにタグが付けられていない場合には、該
ファイルの前記第2のバージョンを記憶したのに応答して、該ファイルの前記第
1のバージョンを削除するステップを、 行なうステップと、を含む、方法。90. A method of managing a version of a file in a file system, the method comprising providing a mechanism for tagging a version of a file that is not overwritten; Determining whether the first version of the file is tagged in response to updating the file, and if the first version of the file is tagged, the file Storing said second version of said file while retaining said first version of said file, said second version of said file if said first version of said file is not tagged. Responsive to storing the version, deleting the first version of the file. Law.
1のバージョンの場所を突き止めるステップを含み、 該ファイルの該第1のバージョンにタグが付けられているかどうかを判定する
ステップは、 該ファイルの前記第1のバージョンの場所を突き止めるように逆転された
ファイルにタグが付けられていたかどうかを判定するステップ、および、 該ファイルの前記第1のバージョンを突き止めるよう逆転されたファイル
にタグが付けられていた場合には、該ファイルの前記第1のバージョンを保持し
ながら該ファイルの前記第2のバージョンを記憶するステップ、 該ファイルの前記第1のバージョンを突き止めるよう逆転されたファイル
にタグが付けられていない場合には、該ファイルの前記第2のバージョンを記憶
したのに応答して該ファイルの前記第1のバージョンを削除するステップ、 を含む、請求項90に記載の方法。91. The method includes reversing a file hierarchy to locate the first version of a file and determining whether the first version of the file is tagged. Determining whether the file was inverted to locate the first version of the file, and reversed to locate the first version of the file If the file was tagged, storing the second version of the file while retaining the first version of the file, inverted to locate the first version of the file If the file is untagged, store the second version of the file In response to the comprising the step of deleting the first version of the file, the method of claim 90.
トリの第1のバージョン内に記憶され、 該特定的なディレクトリの該第1のバージョンは、前記ファイル以外の1また
は複数のファイルを含み、 該ファイルの前記第1のバージョンを保持しながら該ファイルの前記第2のバ
ージョンを記憶するステップは、 前記特定的なディレクトリの第2のバージョンを作成するステップ、 前記1または複数のファイルを前記特定的なディレクトリの前記第2のバ
ージョンのメンバとして構築するステップ、および、 前記特定的なファイルの前記第1のバージョンを前記特定的なディレクト
リの前記第1のバージョンのメンバとして維持しながら、前記ファイルの前記第
2のバージョンを前記特定的なディレクトリの前記第2のバージョンのメンバと
して構築するステップ、 を含む、請求項90に記載の方法。92. The first version of the file is stored in a first version of a specific directory, the first version of the specific directory being one or more than the file. Storing a second version of the file while retaining the first version of the file, the method including: creating a second version of the specific directory; Building a file as a member of the second version of the specific directory; and maintaining the first version of the specific file as a member of the first version of the specific directory. While adding the second version of the file to the second directory of the specific directory. The step of constructing as a member of the, Version, including method of claim 90.
を受取るステップを含み、 前記特定的なファイルの該第1のバージョンは、特定的なディレクトリの第1
のバージョン内に記憶され、 該特定的なディレクトリの該第1のバージョンは、前記特定的なファイル以外
の1または複数のファイルを含み、 該リンクを維持するステップは、該更新に応答して、 前記特定的なディレクトリの第2のバージョンを作成するステップ、 前記特定的なファイルの第2のバージョンを作成するステップ、 前記1または複数のファイルを前記特定的なディレクトリの前記第2のバ
ージョンのメンバとして構築するステップ、および、 前記特定的なファイルの前記第1のバージョンを前記特定的なディレクト
リの前記第1のバージョンのメンバとして維持しながら、前記特定的なファイル
の前記第2のバージョンを前記特定的なディレクトリの前記第2のバージョンの
メンバとして構築するステップ、 を行なうステップを含む、請求項87に記載の方法。93. The method includes receiving an update to a first version of a particular file, wherein the first version of the particular file is first to a particular directory.
Stored in a version of the particular directory, the first version of the particular directory includes one or more files other than the particular file, and maintaining the link is responsive to the update. Creating a second version of the specific directory, creating a second version of the specific file, adding the one or more files to a member of the second version of the specific directory And maintaining the first version of the particular file as a member of the first version of the particular directory while maintaining the second version of the particular file as Building as a member of said second version of a specific directory. 88. The method of claim 87, which comprises a pop up.
法であって、該方法は、 ファイルの第1のバージョンに対してなされる変化に応答して、第1の組の判
断基準が満たされるかどうかを判定するステップと、 該第1の組の判断基準が満たされれば、 該ファイルの該第1のバージョンを保持しながら該ファイルの第2のバー
ジョンを作成するステップ、および、 先祖ファイルが第2の組の判断基準を満たせば、ファイル階層構造におい
て各先祖ファイルの新しいバージョンを前記ファイルの上方に作成するステップ
、 を行なうステップと、を含む、方法。94. A method of maintaining a version of a file in a file system, wherein the method is responsive to a change made to the first version of the file to meet a first set of criteria. Determining if the first set of criteria is met, creating a second version of the file while retaining the first version of the file, and an ancestor file. Satisfying the second set of criteria, creating a new version of each ancestor file above the file in the file hierarchy.
が付けられることを特定するユーザ入力を受取るステップと、 前記1または複数のファイルにタグが付けられていることを示すデータを前記
ファイルシステム内に記憶するステップとをさらに含み、 該第1の組の判断基準が満たされているかどうかを判定するステップは、前記
ファイルの前記第1のバージョンにタグが付けられているかどうかを判定するス
テップを含み、 前記第1の組の判断基準は、前記ファイルの前記第1のバージョンにタグが付
けられていることを含む、請求項94に記載の方法。95. Receiving user input identifying that one or more files in the file system are tagged, and providing data indicating that the one or more files are tagged. Storing in a file system, the step of determining whether the first set of criteria is met includes determining whether the first version of the file is tagged. 95. The method of claim 94, wherein the first set of criteria comprises: tagging the first version of the file.
に含み、前記第2の組の判断基準は、前記先祖ファイルが前記プロジェクトに属
することを含む、請求項94に記載の方法。96. The method of claim 94, further comprising associating the file with a project, wherein the second set of criteria includes that the ancestor file belongs to the project.
は複数のファイルを含み、該方法は、前記ファイルシステムのビューであって、
その中では前記プロジェクトに属するファイルが第1の時間点において存在して
いたように見え、かつ該第2のプロジェクトに属する該1または複数のファイル
が前記第1の時間点とは異なる第2の時間点において存在していたように見える
ビューを、ユーザが使用することができるようにするステップをさらに含む、請
求項96に記載の方法。97. The file system comprises one or more files belonging to a second project, the method comprising: a view of the file system,
A file belonging to the project appears to have existed at a first time point therein, and the one or more files belonging to the second project differ from the first time point in a second time point. 97. The method of claim 96, further comprising allowing a user to use a view that appeared to exist at a time point.
間のリンクに基づいて前記ファイル階層構造の逆転を行なうステップと、 前記逆転中に、前記ビューによってソースファイルおよびターゲットファイル
が同じ時間点にあるように見える場合に限り、前記ソースファイルおよび前記タ
ーゲットファイルを有するリンクを辿るステップとをさらに含む、請求項97に
記載の方法。98. Reversing the file hierarchy based on links between files in the file system through the view, and wherein the view causes the source and target files to be at the same time point during the reversing. 98. The method of claim 97, further comprising following a link having the source file and the target file only if they appear to be.
て、前記ファイルの、タグが付けられていない第3のバージョンを削除するステ
ップをさらに含む、請求項95に記載の方法。99. The method of claim 95, further comprising, in response to creating the second version of the file, deleting an untagged third version of the file. Method.
プは、該ファイルの前記第2のバージョンの作成によって前記ファイルのタグ付
けされていないバージョンの数がしきい値最大数を越えることが検出されたこと
に応答して行なわれる、請求項99に記載の方法。100. The step of deleting the third version of the file comprises the step of: the creation of the second version of the file causing the number of untagged versions of the file to exceed a threshold maximum number. 100. The method of claim 99, which is performed in response to being detected.
連付けられているソースファイルおよびターゲットファイルが同じプロジェクト
に属するかどうかを示すマークを付けるステップをさらに含む、請求項97に記
載の方法。101. The method of claim 97, further comprising marking a link in the file system indicating whether the source and target files associated with the link belong to the same project. .
ための命令を保持するコンピュータ可読媒体であって、該コンピュータ可読媒体
は、 ファイルの新しいバージョンの作成に応答して、ディレクトリから派生する該
ディレクトリの新しいバージョンを作成するステップを実行するための命令を含
み、バージョン付けされるディレクトリの該異なるバージョンは、異なる時間点
に関連付けられており、さらに、 バージョン付けされるディレクトリの特定的なバージョンから派生する該ファ
イルの該バージョンが、該バージョン付けされるディレクトリに関連付けられて
いる該時間点を反映するように、該ファイルシステム内の該ファイル間のリンク
を維持するステップを実行するための命令を含む、コンピュータ可読媒体。102. A computer readable medium carrying instructions for managing versions of files in a file system, the computer readable medium deriving from a directory in response to creating a new version of a file. Instructions for performing the steps of creating a new version of the directory, the different versions of the versioned directory being associated with different time points, and further from the particular version of the versioned directory. Instructions for performing the step of maintaining links between the files in the file system such that the version of the derived file reflects the time point associated with the versioned directory. Including computer readable media .
選択された時間点を判定するステップと、 ディレクトリの特定的なバージョンを該ディレクトリの複数のバージョンから
、該ディレクトリの該特定的なバージョンが該選択された時間点に関連付けられ
ていることに基づいて選択するステップと、 該ディレクトリの該選択されたバージョンからのリンクを辿って、前記オペレ
ーションに関与する1または複数のファイルの場所を突止めるステップと、を実
行するための命令をさらに含む、請求項102に記載のコンピュータ可読媒体。103. Determining a selected time point for which a file should reflect for a particular operation, and a particular version of the directory from a plurality of versions of the directory to the particular version of the directory. Selecting based on a version being associated with the selected time point, and following links from the selected version of the directory to locate one or more files involved in the operation. 103. The computer-readable medium of claim 102, further comprising locating steps, and instructions for performing.
のディレクトリのバージョンから第2のディレクトリの第1のバージョンへの移
動を示す入力を受取るステップを実行するための命令を含み、 該第1のディレクトリの第1のバージョンは、前記特定的なファイル以外のゼ
ロまたは1以上のファイルの第1の組を含み、 該第2のディレクトリの第1のバージョンは、前記特定的なファイル以外のゼ
ロまたは1以上のファイルの第2の組を含み、 該リンクを維持するステップは、前記入力に応答して、 前記第1のディレクトリの第2のバージョンを作成するステップと、 前記特定的なファイルを前記第1のディレクトリの前記第2のバージョン
のメンバとして構築することなく、前記第1の組のゼロまたは1以上のファイル
を前記第1のディレクトリの前記第2のバージョンのメンバとして構築するステ
ップと、 前記第2のディレクトリの第2のバージョンを作成するステップと、 前記特定的なファイルおよび前記第2の組のゼロまたは1以上のファイル
を、前記第2のディレクトリの前記第2のバージョンのメンバとして構築するス
テップと、を実行するステップを含む、請求項102に記載のコンピュータ可読
媒体。104. The computer-readable medium is a first of a particular file.
A first version of the first directory, the first version of the first directory being other than the particular file. A first set of zero or more files of the second directory, the first version of the second directory including a second set of zero or more files other than the particular file, the link Maintaining a second version of the first directory in response to the input; constructing the specific file as a member of the second version of the first directory. Without the first set of zero or more files as members of the second version of the first directory. Building a second version of the second directory, the specific file and the second set of zero or more files in the second directory of the second directory. 103. The computer-readable medium of claim 102, including the steps of building as a member of a version of the.
ための命令を保持するコンピュータ可読媒体であって、該コンピュータ可読媒体
は、 重ね書きされないファイルのバージョンにタグを付けるための機構を提供する
ステップと、 ファイルの第1のバージョンへの更新に応答して、 該ファイルの該第1のバージョンにタグが付けられているかを判定するス
テップ、および、 該ファイルの該第1のバージョンにタグが付けられている場合には、該フ
ァイルの前記第1のバージョンを保持しながら該ファイルの前記第2のバージョ
ンを記憶するステップを、 該ファイルの該第1のバージョンにタグが付けられていない場合には、該
ファイルの前記第2のバージョンを記憶したのに応答して、該ファイルの前記第
1のバージョンを削除するステップを、 行なうステップと、を実行するための命令を含む、コンピュータ可読媒体。105. A computer-readable medium carrying instructions for managing versions of a file in a file system, the computer-readable medium providing a mechanism for tagging a version of a file that is not overwritten. Responsive to updating the file to a first version, determining whether the first version of the file is tagged, and tagging the first version of the file with a tag. Storing the second version of the file while retaining the first version of the file, if the first version of the file is untagged In response to storing the second version of the file, the first version of the file The step of deleting down, including instructions for performing the steps, the performing, computer-readable media.
てファイルの前記第1のバージョンの場所を突き止めるステップを実行するため
の命令を含み、 該ファイルの該第1のバージョンにタグが付けられているかどうかを判定する
ステップは、 該ファイルの前記第1のバージョンの場所を突き止めるように逆転された
ファイルにタグが付けられていたかどうかを判定するステップ、および、 該ファイルの前記第1のバージョンを突き止めるよう逆転されたファイル
にタグが付けられていた場合には、該ファイルの前記第1のバージョンを保持し
ながら該ファイルの前記第2のバージョンを記憶するステップ、 該ファイルの前記第1のバージョンを突き止めるよう逆転されたファイル
にタグが付けられていない場合には、該ファイルの前記第2のバージョンを記憶
したのに応答して該ファイルの前記第1のバージョンを削除するステップ、 を含む、請求項105に記載のコンピュータ可読媒体。106. The computer readable medium includes instructions for performing the steps of reversing a file hierarchy to locate the first version of a file, the first version of the file being tagged with a tag. Determining if it has been tagged to the file that has been reversed to locate the first version of the file, and the first of the file. Storing the second version of the file while retaining the first version of the file if the inverted file was tagged to locate the version of the file, the second version of the file If the reversed file is not tagged to find the 1 version, Comprising the step of deleting the first version of the file in response to storing the second version of the file, a computer-readable medium of claim 105.
クトリの第1のバージョン内に記憶され、 該特定的なディレクトリの該第1のバージョンは、前記ファイル以外の1また
は複数のファイルを含み、 該ファイルの前記第1のバージョンを保持しながら該ファイルの前記第2のバ
ージョンを記憶するステップは、 前記特定的なディレクトリの第2のバージョンを作成するステップ、 前記1または複数のファイルを前記特定的なディレクトリの前記第2のバ
ージョンのメンバとして構築するステップ、および、 前記特定的なファイルの前記第1のバージョンを前記特定的なディレクト
リの前記第1のバージョンのメンバとして維持しながら、前記ファイルの前記第
2のバージョンを前記特定的なディレクトリの前記第2のバージョンのメンバと
して構築するステップ、 を含む、請求項105に記載のコンピュータ可読媒体。107. The first version of the file is stored in a first version of a specific directory, the first version of the specific directory including one or more files other than the file. Storing a second version of the file while retaining the first version of the file, the method including: creating a second version of the specific directory; Building a file as a member of the second version of the specific directory; and maintaining the first version of the specific file as a member of the first version of the specific directory. While replacing the second version of the file with the second version of the specific directory. Comprising the step of constructing a version of a member, a computer-readable medium of claim 105.
バージョンへの更新を受取るステップを実行するための命令を含み、 前記特定的なファイルの該第1のバージョンは、特定的なディレクトリの第1
のバージョン内に記憶され、 該特定的なディレクトリの該第1のバージョンは、前記特定的なファイル以外
の1または複数のファイルを含み、 該リンクを維持するステップは、該更新に応答して、 前記特定的なディレクトリの第2のバージョンを作成するステップ、 前記特定的なファイルの第2のバージョンを作成するステップ、 前記1または複数のファイルを前記特定的なディレクトリの前記第2のバ
ージョンのメンバとして構築するステップ、および、 前記特定的なファイルの前記第1のバージョンを前記特定的なディレクト
リの前記第1のバージョンのメンバとして維持しながら、前記特定的なファイル
の前記第2のバージョンを前記特定的なディレクトリの前記第2のバージョンの
メンバとして構築するステップ、 を行なうステップを含む、請求項102に記載のコンピュータ可読媒体。108. The computer-readable medium includes instructions for performing the steps of receiving an update to a first version of a particular file, the first version of the particular file being First of the directory
Stored in a version of the particular directory, the first version of the particular directory includes one or more files other than the particular file, and maintaining the link is responsive to the update. Creating a second version of the specific directory, creating a second version of the specific file, adding the one or more files to a member of the second version of the specific directory And maintaining the first version of the particular file as a member of the first version of the particular directory while maintaining the second version of the particular file as Building as a member of said second version of a specific directory. 103. The computer-readable medium of claim 102, which comprises a disc.
ための命令を保持するコンピュータ可読媒体であって、該コンピュータ可読媒体
は、 ファイルの第1のバージョンに対してなされる変化に応答して、第1の組の判
断基準が満たされるかどうかを判定するステップと、 該第1の組の判断基準が満たされれば、 該ファイルの該第1のバージョンを保持しながら該ファイルの第2のバー
ジョンを作成するステップ、および、 先祖ファイルが第2の組の判断基準を満たせば、ファイル階層構造におい
て各先祖ファイルの新しいバージョンを前記ファイルの上方に作成するステップ
、 を行なうステップと、を実行するための命令を含む、コンピュータ可読媒体。109. A computer-readable medium carrying instructions for maintaining a version of a file in a file system, the computer-readable medium responsive to a change made to a first version of the file. , A step of determining whether the first set of criteria is met, and if the first set of criteria is met, a second version of the file is retained while retaining the first version of the file. Creating a version, and, if the ancestor file meets a second set of criteria, creating a new version of each ancestor file above the file in the file hierarchy. A computer-readable medium containing instructions for :.
グが付けられることを特定するユーザ入力を受取るステップと、 前記1または複数のファイルにタグが付けられていることを示すデータを前記
ファイルシステム内に記憶するステップとを実行するための命令をさらに含み、 該第1の組の判断基準が満たされているかどうかを判定するステップは、前記
ファイルの前記第1のバージョンにタグが付けられているかどうかを判定するス
テップを含み、 前記第1の組の判断基準は、前記ファイルの前記第1のバージョンにタグが付
けられていることを含む、請求項109に記載のコンピュータ可読媒体。110. Receiving user input identifying that one or more files in the file system are tagged, and providing data indicating that the one or more files are tagged. And storing instructions in the file system to determine whether the first set of criteria is met by tagging the first version of the file. 110. The computer-readable medium of claim 109, comprising determining whether or not the first set of criteria is tagged, wherein the first set of criteria includes the first version of the file being tagged.
行するための命令をさらに含み、前記第2の組の判断基準は、前記先祖ファイル
が前記プロジェクトに属することを含む、請求項109に記載のコンピュータ可
読媒体。111. The method of clause 109, further comprising instructions for performing the step of associating the file with a project, wherein the second set of criteria comprises that the ancestor file belongs to the project. Computer readable medium.
たは複数のファイルを含み、該コンピュータ可読媒体は、前記ファイルシステム
のビューであって、その中では前記プロジェクトに属するファイルが第1の時間
点において存在していたように見え、かつ該第2のプロジェクトに属する該1ま
たは複数のファイルが前記第1の時間点とは異なる第2の時間点において存在し
ていたように見えるビューを、ユーザが使用することができるようにするステッ
プを実行するための命令をさらに含む、請求項111に記載のコンピュータ可読
媒体。112. The file system comprises one or more files belonging to a second project, the computer-readable medium being a view of the file system, wherein the files belonging to the project are the first. A view that appears to have existed at a time point, and the one or more files belonging to the second project appear to have existed at a second time point different from the first time point. 112. The computer-readable medium of claim 111, further comprising instructions for performing a step of making available to a user.
ル間のリンクに基づいて前記ファイル階層構造の逆転を行なうステップと、 前記逆転中に、前記ビューによってソースファイルおよびターゲットファイル
が同じ時間点にあるように見える場合に限り、前記ソースファイルおよび前記タ
ーゲットファイルを有するリンクを辿るステップと、を実行するための命令をさ
らに含む、請求項112に記載のコンピュータ可読媒体。113. Reversing the file hierarchy based on links between files in the file system through the view; and during the reversing, the source and target files are at the same time point. 113. The computer-readable medium of claim 112, further comprising instructions for performing a link having the source file and the target file only if they appear to.
して、前記ファイルの、タグが付けられていない第3のバージョンを削除するス
テップを実行するための命令をさらに含む、請求項110に記載のコンピュータ
可読媒体。114. Further comprising instructions for performing a step of deleting an untagged third version of the file in response to creating the second version of the file. The computer-readable medium of claim 110.
プは、該ファイルの前記第2のバージョンの作成によって前記ファイルのタグ付
けされていないバージョンの数がしきい値最大数を越えることが検出されたこと
に応答して行なわれる、請求項114に記載のコンピュータ可読媒体。115. The step of deleting the third version of the file comprises the step of: creating the second version of the file such that the number of untagged versions of the file exceeds a threshold maximum number. 115. The computer-readable medium of claim 114, wherein the computer-readable medium is performed in response to being detected.
連付けられているソースファイルおよびターゲットファイルが同じプロジェクト
に属するかどうかを示すマークを付けるステップをさらに含む、請求項112に
記載のコンピュータ可読媒体。116. The computer of claim 112, further comprising the step of marking the file system link to indicate whether the source and target files associated with the link belong to the same project. A readable medium.
Applications Claiming Priority (17)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14753899P | 1999-08-05 | 1999-08-05 | |
US60/147,538 | 1999-08-05 | ||
US57149200A | 2000-05-15 | 2000-05-15 | |
US09/571,568 US7280995B1 (en) | 1999-08-05 | 2000-05-15 | On-the-fly format conversion |
US09/571,036 | 2000-05-15 | ||
US09/571,492 | 2000-05-15 | ||
US09/571,036 US6549916B1 (en) | 1999-08-05 | 2000-05-15 | Event notification system tied to a file system |
US09/571,496 US6922708B1 (en) | 1999-02-18 | 2000-05-15 | File system that supports transactions |
US09/571,496 | 2000-05-15 | ||
US09/571,508 US7418435B1 (en) | 1999-08-05 | 2000-05-15 | Multi-model access to data |
US09/571,696 | 2000-05-15 | ||
US09/571,568 | 2000-05-15 | ||
US09/571,060 US7620620B1 (en) | 1999-08-05 | 2000-05-15 | Basing directory contents on a query that is associated with a file identifier |
US09/571,508 | 2000-05-15 | ||
US09/571,060 | 2000-05-15 | ||
US09/571,696 US8335775B1 (en) | 1999-08-05 | 2000-05-15 | Versioning in internet file system |
PCT/US2000/020386 WO2001011486A2 (en) | 1999-08-05 | 2000-07-26 | Internet file system |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2003527659A true JP2003527659A (en) | 2003-09-16 |
JP2003527659A5 JP2003527659A5 (en) | 2007-09-13 |
JP5113967B2 JP5113967B2 (en) | 2013-01-09 |
Family
ID=27574958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001516067A Expired - Lifetime JP5113967B2 (en) | 1999-08-05 | 2000-07-26 | Internet file system |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP1330727A2 (en) |
JP (1) | JP5113967B2 (en) |
AU (6) | AU774090B2 (en) |
CA (1) | CA2379930C (en) |
WO (1) | WO2001011486A2 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007526564A (en) * | 2004-02-18 | 2007-09-13 | イエニー,クラーク | Time-addressed database management system |
JP2009205207A (en) * | 2008-02-26 | 2009-09-10 | Nec Corp | Information sorting and displaying system based on tag information |
JP2011008443A (en) * | 2009-06-24 | 2011-01-13 | Mitsubishi Electric Corp | Database definition generation device, database design device, database construction system, computer program, and database definition generation method |
WO2012111129A1 (en) * | 2011-02-17 | 2012-08-23 | 三菱電機株式会社 | Database connection device |
JP2013511104A (en) * | 2009-11-16 | 2013-03-28 | マイクロソフト コーポレーション | Virtual hard drive management as a blob |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7200627B2 (en) | 2001-03-21 | 2007-04-03 | Nokia Corporation | Method and apparatus for generating a directory structure |
GB0107078D0 (en) * | 2001-03-21 | 2001-05-09 | Nokia Oyj | Management and distribution of electronic media |
US7320141B2 (en) * | 2001-03-21 | 2008-01-15 | International Business Machines Corporation | Method and system for server support for pluggable authorization systems |
WO2002082312A2 (en) * | 2001-04-06 | 2002-10-17 | International Business Machines Corporation | A method for standardized file-based access to databases, enterprise java beans and content management systems |
US20050203903A1 (en) * | 2004-03-10 | 2005-09-15 | Rajan Rajeev B. | System and method for locking and isolation in a storage platform |
US7366740B2 (en) * | 2004-05-03 | 2008-04-29 | Microsoft Corporation | Systems and methods for automatic maintenance and repair of enitites in a data model |
US7143120B2 (en) * | 2004-05-03 | 2006-11-28 | Microsoft Corporation | Systems and methods for automated maintenance and repair of database and file systems |
US7644239B2 (en) | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
US7707498B2 (en) | 2004-09-30 | 2010-04-27 | Microsoft Corporation | Specific type content manager in an electronic document |
US7490197B2 (en) | 2004-10-21 | 2009-02-10 | Microsoft Corporation | Using external memory devices to improve system performance |
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 |
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 |
US7945590B2 (en) | 2005-01-06 | 2011-05-17 | Microsoft Corporation | Programmability for binding data |
US7617234B2 (en) | 2005-01-06 | 2009-11-10 | Microsoft Corporation | XML schema for binding data |
US7730394B2 (en) | 2005-01-06 | 2010-06-01 | Microsoft Corporation | Data binding in a word-processing application |
US7668873B2 (en) * | 2005-02-25 | 2010-02-23 | Microsoft Corporation | Data store for software application documents |
US7752224B2 (en) | 2005-02-25 | 2010-07-06 | Microsoft Corporation | Programmability for XML data store for documents |
US7953696B2 (en) | 2005-09-09 | 2011-05-31 | Microsoft Corporation | Real-time synchronization of XML data between applications |
US8914557B2 (en) | 2005-12-16 | 2014-12-16 | Microsoft Corporation | Optimizing write and wear performance for a memory |
US9032151B2 (en) | 2008-09-15 | 2015-05-12 | Microsoft Technology Licensing, Llc | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
US7953774B2 (en) | 2008-09-19 | 2011-05-31 | Microsoft Corporation | Aggregation of write traffic to a data store |
CN107729504A (en) * | 2017-10-23 | 2018-02-23 | 武汉楚鼎信息技术有限公司 | A kind of method and system for handling large data objectses |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0765032A (en) * | 1993-08-27 | 1995-03-10 | Toshiba Corp | Information processing system having data base language converting function |
JPH08137728A (en) * | 1994-09-14 | 1996-05-31 | Toshiba Corp | Portable file system and file data processing method |
JPH08314787A (en) * | 1995-05-12 | 1996-11-29 | Nec Corp | File location management system |
JPH10247155A (en) * | 1997-01-31 | 1998-09-14 | Informix Software Inc | File system interface for data base |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0229232A2 (en) * | 1985-12-31 | 1987-07-22 | Tektronix, Inc. | File management system |
US5150473A (en) * | 1990-01-16 | 1992-09-22 | Dantz Development Corporation | Data storage format for addressable or sequential memory media |
CA2067633C (en) * | 1991-07-24 | 1996-10-01 | Eric Jonathan Bauer | Method and apparatus for accessing a computer-based file system |
US5513351A (en) * | 1994-07-28 | 1996-04-30 | International Business Machines Corporation | Protecting a system during system maintenance by usage of temporary filenames in an alias table |
US5737736A (en) * | 1994-07-29 | 1998-04-07 | Oracle Corporation | Method and apparatus for storing objects using a c-structure and a bind descriptor |
US5581755A (en) * | 1995-01-31 | 1996-12-03 | Unisys Corporation | Method for maintaining a history of system data and processes for an enterprise |
US5649158A (en) * | 1995-02-23 | 1997-07-15 | International Business Machines Corporation | Method for incrementally archiving primary storage to archive storage by utilizing both a partition archive status array and a partition map |
US5675802A (en) * | 1995-03-31 | 1997-10-07 | Pure Atria Corporation | Version control system for geographically distributed software development |
US5870757A (en) * | 1995-09-11 | 1999-02-09 | Sun Microsystems, Inc. | Single transaction technique for a journaling file system of a computer operating system |
US5706510A (en) * | 1996-03-15 | 1998-01-06 | Hewlett-Packard Company | Zymbolic history management system |
US6078929A (en) * | 1996-06-07 | 2000-06-20 | At&T | Internet file system |
US5920867A (en) * | 1996-12-06 | 1999-07-06 | International Business Machines Corporation | Data management system having data management configuration |
US5903897A (en) * | 1996-12-18 | 1999-05-11 | Alcatel Usa Sourcing, L.P. | Software documentation release control system |
US6216140B1 (en) * | 1997-09-17 | 2001-04-10 | Hewlett-Packard Company | Methodology for the efficient management of hierarchically organized information |
US6505212B2 (en) * | 1998-02-04 | 2003-01-07 | Interwoven Inc | System and method for website development |
US6321219B1 (en) * | 1998-08-14 | 2001-11-20 | Microsoft Corporation | Dynamic symbolic links for computer file systems |
-
2000
- 2000-07-26 CA CA2379930A patent/CA2379930C/en not_active Expired - Lifetime
- 2000-07-26 WO PCT/US2000/020386 patent/WO2001011486A2/en active IP Right Grant
- 2000-07-26 AU AU64954/00A patent/AU774090B2/en not_active Expired
- 2000-07-26 JP JP2001516067A patent/JP5113967B2/en not_active Expired - Lifetime
- 2000-07-26 EP EP00952215A patent/EP1330727A2/en not_active Ceased
-
2004
- 2004-07-19 AU AU2004203242A patent/AU2004203242B2/en not_active Expired
- 2004-07-19 AU AU2004203240A patent/AU2004203240B2/en not_active Expired
- 2004-07-19 AU AU2004203241A patent/AU2004203241B2/en not_active Expired
- 2004-07-19 AU AU2004203243A patent/AU2004203243B2/en not_active Expired
- 2004-07-19 AU AU2004203249A patent/AU2004203249B2/en not_active Expired
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0765032A (en) * | 1993-08-27 | 1995-03-10 | Toshiba Corp | Information processing system having data base language converting function |
JPH08137728A (en) * | 1994-09-14 | 1996-05-31 | Toshiba Corp | Portable file system and file data processing method |
JPH08314787A (en) * | 1995-05-12 | 1996-11-29 | Nec Corp | File location management system |
JPH10247155A (en) * | 1997-01-31 | 1998-09-14 | Informix Software Inc | File system interface for data base |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007526564A (en) * | 2004-02-18 | 2007-09-13 | イエニー,クラーク | Time-addressed database management system |
JP2009205207A (en) * | 2008-02-26 | 2009-09-10 | Nec Corp | Information sorting and displaying system based on tag information |
JP2011008443A (en) * | 2009-06-24 | 2011-01-13 | Mitsubishi Electric Corp | Database definition generation device, database design device, database construction system, computer program, and database definition generation method |
JP2013511104A (en) * | 2009-11-16 | 2013-03-28 | マイクロソフト コーポレーション | Virtual hard drive management as a blob |
US10628086B2 (en) | 2009-11-16 | 2020-04-21 | Microsoft Technology Licensing, Llc | Methods and systems for facilitating communications with storage |
WO2012111129A1 (en) * | 2011-02-17 | 2012-08-23 | 三菱電機株式会社 | Database connection device |
Also Published As
Publication number | Publication date |
---|---|
AU2004203242B2 (en) | 2008-05-01 |
AU2004203241B2 (en) | 2008-04-10 |
EP1330727A2 (en) | 2003-07-30 |
CA2379930A1 (en) | 2001-02-15 |
AU2004203249A1 (en) | 2004-09-02 |
AU2004203240B2 (en) | 2008-04-03 |
AU2004203242A1 (en) | 2004-09-02 |
AU2004203241A1 (en) | 2004-09-02 |
AU2004203249B2 (en) | 2008-04-03 |
CA2379930C (en) | 2012-12-18 |
AU6495400A (en) | 2001-03-05 |
WO2001011486A2 (en) | 2001-02-15 |
AU2004203240A1 (en) | 2004-09-02 |
JP5113967B2 (en) | 2013-01-09 |
AU2004203243B2 (en) | 2008-03-20 |
WO2001011486A3 (en) | 2003-04-17 |
AU2004203243A1 (en) | 2004-09-02 |
AU774090B2 (en) | 2004-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6549916B1 (en) | Event notification system tied to a file system | |
US6922708B1 (en) | File system that supports transactions | |
US7418435B1 (en) | Multi-model access to data | |
JP5113967B2 (en) | Internet file system | |
US7280995B1 (en) | On-the-fly format conversion | |
US7421541B2 (en) | Version management of cached permissions metadata | |
JP4394643B2 (en) | System and method for data modeling in an item-based storage platform | |
JP2007521533A (en) | System and method for interfacing application programs with item-based storage platforms | |
WO2004044781A2 (en) | Techniques for managing multiple hierarchies of data from a single interface | |
JP4580390B2 (en) | System and method for extending and inheriting information units manageable by a hardware / software interface system | |
JP4394644B2 (en) | Storage platform for organizing, searching, and sharing data | |
EP1898321B1 (en) | Internet file system | |
CA2646776C (en) | Internet file system | |
CA2650251C (en) | Internet file system | |
HK1112296A (en) | Internet file system | |
HK1112088A (en) | Internet file system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20050913 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070725 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070725 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100420 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100720 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20101012 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110214 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20110222 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20110428 |
|
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: 20121015 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151019 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5113967 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
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 |
|
EXPY | Cancellation because of completion of term |