JP3984983B2 - 小さいオブジェクトデータストリームを使用する、データオブジェクトを保存する方法 - Google Patents
小さいオブジェクトデータストリームを使用する、データオブジェクトを保存する方法 Download PDFInfo
- Publication number
- JP3984983B2 JP3984983B2 JP2004242980A JP2004242980A JP3984983B2 JP 3984983 B2 JP3984983 B2 JP 3984983B2 JP 2004242980 A JP2004242980 A JP 2004242980A JP 2004242980 A JP2004242980 A JP 2004242980A JP 3984983 B2 JP3984983 B2 JP 3984983B2
- Authority
- JP
- Japan
- Prior art keywords
- stream
- mini
- storage
- instance
- size
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/93—Document management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/953—Organization of data
- Y10S707/956—Hierarchical
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Document Processing Apparatus (AREA)
- Computer And Data Communications (AREA)
- Transition And Organic Metals Composition Catalysts For Addition Polymerization (AREA)
- Warehouses Or Storage Devices (AREA)
Description
上記したように、マルチストリームインターフェイスは、IStorage及びIStreamインターフェイスを定める。IStorageインターフェイス及びIStreamインターフェイスは、本発明のハイアラーキストレージを具現化する1組の純粋な仮想メソッドを定める。純粋な仮想メソッドとは、デクラレーションは有するがコードの具現化をもたないファンクションである。これらインターフェイスは、インターフェイスの特定の具現化とは独立してアプリケーションプログラムを開発できるようにする。好ましい具現化について以下に述べるが、IStorage及びIStreamインターフェイスを用いたアプリケーションプログラムは、何らかの具現化に添付したときに何ら変更を行わずに実行することができる(具現化のメソッドにリンクすることは除いて)。
本発明では、ストレージ及びストリームを種々のアクセスモードで開放することができる。アクセスモードは、エレメント(ストレージ又はストリーム)がトランザクションモードで開放されるか、読み取り又は書き込みモードで開放されるか、拒絶読み取り又は拒絶書き込みモードで開放されるかを制御する。
SCODE StgCreateDocfile(lpszName,grfMode,dwIfThere,reserved,ppstg)
StgCreateDocfile関数は、指定された名称を使用して複合文書としてファイルシステムにファイルを形成し、そのファイル内にルートストレージを形成し、そして指定されたアクセスモードでそのルートストレージを開放する。パラメータdwIfThereは、指定された名称のファイルが存在するときにその関数のふるまいを指定する。このようなファイルが存在する場合に、この関数は、任意にエラーを返送し、それを削除しそして新たなファイルを形成するか、或いはそのファイルを、「CONTENT」という名称のストリームを含むルートストレージを含んだファイルと置き換える。ストリームは、古いファイルにあったデータを含む。指定された名称がNULLの場合には、独特の名称をもつ一時的な文書ファイルが形成される。この関数は、ルートストレージに対するIStorageインスタンスを例示し、そしてそれに対するポインタを返送する。
SCODE StgOpenStorage(lpszName,pstgPriority,grfMode,subExclude,reserved,ppstgOpen)
StgOpenStorage関数は、指定された名称の既存の複合文書を指定されたアクセスモードで開放する。ファイルが存在しないか又はストレージではない場合には、エラーが返送される。この関数は、開放されたIStorageインスタンスに対するポインタを返送する。
テーブル1は、IStorageインターフェイスを定めるものである。IStorageインターフェイスのメソッドのパラメータはテーブル2で定められる。各メソッドのふるまいは、これらテーブルの後に指定する。IStorageインターフェイスは、IStreamインスタンス及びIStorageインスタンスを含むことができ、これらは、親IStorageインスタンスのエレメントと称される。
テーブル1
Class IStorage
{
仮想 SCODE Release0=0;
仮想 SCODE CreateStream(lpsName,grfMode,dwIfThere,reserved,ppstm)=0;
仮想 SCODE OpenStream(lpsName,grfMode,reserved,ppstm)=0;
仮想 SCODE CreateStorage(lpszName,grfMode,dwIfThere,reserved,ppstg)=0;
仮想 SCODE OpenStrage(lpszName,pstgPriority,grfMode,subExclude,reserved,ppstg)=0;
仮想 SCODE CopyTo(pstgDest)=0;
仮想 SCODE Commit(grfCommitFlags)=0;
仮想 SCODE Revert 0=0;
仮想 SCODE EnumElements(reserved1,reserved2,reserved3,ppenun)=0;
仮想 SCODE DestroyElement(lpszName)=0;
仮想 SCODE RenameElement(lpszOldName,lpszNewName)=0;
仮想 SCODE Stat(pstatatg)=0.
}
テーブル2
項目 説明
lpszName ストリーム又はストレージの名称(IStorage インスタン
ス内の全てのエレメントは同じ名称空間内にある)
grfMode IStream 又はIStorageインスタンスのアクセスモード
dwIfThere IStream 又はIStorageインスタンスを形成するときに
は、dwIfThere は、同じ名称のエレメントが既に存在
するときのふるまいを指示する
reserved ゼロでなければならない
ppstm IStream インスタンスに対するポインタ
ppstg IStorageインスタンスに対するポインタ
Releaseメソッドは、指定されたIStorageインスタンスを閉じ、インスタンスを無効とする。(以下の説明において、「指定された」という語は、メソッドが呼び出されるインスタンスを指し、そして「指示される」という語はパラメータを指すものとする。)好ましい実施例において、IStorageインターフェイスは、レファレンスカウンタを増加するメソッドを含む。Releaseメソッドはレファレンスカウンタを減少し、カウントが0に達したときに指定されたインスタンスのみを無効にする。
CreateSTreamメソッドは、指定されたIStorageインスタンスのストレージ内に指示された名称の新たなストリームを形成し、そして指定されたアクセスモードでストリームを開放する。パラメータdwIfThereは、指定された名称のエレメントが既に存在するときにこのメソッドのふるまいを指示する。このようなエレメントが存在するときには、このメソッドは任意にエラーを返送するか、又は既存のエレメントを削除して新たなストリームを形成する。このメソッドは、形成されたストリームに対してIStreamインスタンスを例示し、それに対するポインタを返送する。
OpenStreamメソッドは、指定されたIStorageインスタンスのストレージ内で指示された名称の既存のストリームを指示されたアクセスモードで開放する。指示された名称のストリームがストレージ内に存在しないか又は指示されたアクセスモードで開放できない場合には、エラーが返送される。アクセスモードについては以下で詳細に述べる。このメソッドは開放ストリームに対してIStreamインスタンスを例示し、それに対するポインタを返送する。
CreateStorageメソッドは、指定されたIStorageインスタンス内に指示された名称の新たなストレージを形成し、この新たなストレージを指示されたアクセスモードで開放する。パラメータdwIfThereは、指示された名称のエレメントが既に存在するときにこのメソッドのふるまいを指示する。同じ名称のエレメントが存在する場合には、このメソッドは任意にエラーを返送するか又は既存のエレメントを削除して新たなストレージを形成する。同じ名称のストリームが存在する場合には、そのストリームが、「CONTENTS」という名称の1つのストリームを含む新たなストレージと置き換えられる。このストリームは古いストリーム内にあったデータを含む。このメソッドは、形成されたストレージに対しIStorageインスタンス(及びもし必要ならばIStream)を例示する。
OpenStorageメソッドは、指定されたIStorageインスタンス内の指示された名称の既存のストレージを指示されたアクセスモードで開放する。指示された名称のストレージが存在しないか又は指示されたアクセスモードで開放できない場合には、エラーが返送される。
CopyToメソッドは、指定されたIStorageインスタンスのストレージの全内容を指示されたストレージにコピーする。このメソッドは、指示されたストレージの内容を置き換える。指示されたストレージは、指定されたストレージとは異なる具現であってもよい。従って、CopyToの具現は、指示されたストレージのメソッドしか使用してはならない。
Commitメソッドは、指定されたストレージに対するトランザクションをコミットする。Commitメソッドのふるまいは、指定されたストレージが開放されたアクセスモードによって左右される。指定されたストレージが直接モードで開放された場合には、このメソッドは、1つの例外を除いて何の作用も及ぼさない。指定されたIStorageインスタンスがルートストレージである場合、このメソッドは、通常の「フラッシュ」オペレーションのように動作し、これは、内部のメモリバッファがその基礎となる記憶装置へ書き出されるよう確保する。
Revertメソッドは、指定されたストレージが開放されるか又は最後にコミットされて以来(いずれか遅い方)そのエレメントによってストレージにコミットされた全ての変化を破棄する。このメソッドの完了後に、指定されたストレージに対して開放されたいかなるエレメントも無効とされる(Release以外のこれらエレメントの全てのメソッドによってエラーが返送される)。
EnumElementsメソッドは、指定されたIStorageインスタンスのストレージ内に直ちに含まれたエレメントを列挙する。指定されたストレージは、読み取りモードで開放されねばならない。
DestroyElementメソッドは、指示された名称のエレメントを指定されたストレージインスタンスから除去する。この破壊されたエレメントを開放すること(指定されたストレージを介して)は無効になる。エレメントが存在しない場合には、エラーが返送される。
RenameElementメソッドは、指定されたストレージ内の指示されたエレメントを古い名称から新しい名称に変更する。この新しい名称が既に存在する場合、又は古い名称が存在しない場合には、エラーが返送される。
Statメソッドは、ストレージ指定されたIStorageインスタンスに関する統計学的な情報を返送する。
テーブル3は、IStreamインターフェイスを定める。IStreamインターフェイスのメソッドのパラメータはテーブル4に示す。IStreamインターフェイスは、各読み取り及び書き込みのためのストリーム内の位置として使用されるシークポインタを定める。各メソッドのふるまいは以下に指定する。
テーブル3
Class IStream
{
仮想 SCODE Release0=0;
仮想 SCODE Read(pv,cb,pcbRead)=0;
仮想 SCODE Write(pv,cb,pcbWritten)=0;
仮想 SCODE Seek(dlibMove,dwOrigin,plibNewPosition)=0;
仮想 SCODE SetSize(libNewSize)=0;
仮想 SCODE Clone(ppstm)=0;
仮想 SCODE CopyTo(ppstm,cb,pcbRead,pcbWritten)=0;
仮想 SCODE Commit(grfCommitFlags)=0;
仮想 SCODE Revert 0=0;
仮想 SCODE LockRegion(cb,dwLockType)=0;
仮想 SCODE UnlockRegion(cb,dwLockType)=0;
仮想 SCODE Stat(pstatstg)=0;
}
テーブル4
項目 説明
pv 読み取り又は書き込みするためのバッファのポインタ
cb バイト数
ppstm IStream インスタンスのポインタ
pcbWritten ストリームに実際に書き込まれるバイト数で、呼び出
し側に関与しない場合にはNULLである
pcbRead ストリームから実際に読み取られるバイト数で、呼び
出し側に関与しない場合にはNULLである
dlibMove dwOriginによって指示された位置に追加される変位
dwOrigin シークモード
plibNewPosition 更新されたシークポインタ
libNewSize 新たなストリームのサイズ
dwLockType ロックの形式
Releaseメソッドは、指定されたIStreamインスタンスのストリームを閉じる。好ましい実施例では、IStreamインスタンスは、レファレンスカウンタを増加するメソッドを含む。Releaseメソッドは、レファレンスカウンタを減少し、カウントがゼロになったときに指定されたIStreamインスタンスを無効にする。
Readメソッドは、現在シークポインタでスタートして、指定されたIStreamインスタンスのストリームから指示されたバッファへ指示された数のバイトを読み込む。このメソッドは、実際に読まれたバイトの数を返送する。このメソッドは、実際に読まれたバイトの数でシークポインタを調整する。ストリームが読み取りモードで開放されていない場合には、エラーが返送される。実際に読まれたバイトの数は、読み取り中にストリームの終わりに達した場合には、要求されたものより少なくなる。
Writeメソッドは、現在シークポインタでスタートして、指示されたバッファから指定されたIStreamインスタンスのストリームへ指示された数のバイトを書き込む。非ゼロのバイトカウントが指定されそしてシークポインタがストリームの終わりを現在通過したときには、シークポインタに到達するようにストリームのサイズが増加される。加えられたバイトは初期化されない。ストリームが適当なモードで開放していない場合には、エラーが返送される。実際に書き込まれたバイトの数が返送される。シークポインタは、実際に書き込まれたバイトの数で調整される。
Seekメソッドは、指定されたIStreamインスタンスのストリームに対しシークポインタの位置を調整する。ストリームの開始より前ではシークエラーとなる。ストリームの終わりを越えてもシークエラーとならない。パラメータdlibMoveは、パラメータdwOriginによって指示されるように、ストリームの開始、現在シークポインタ、又はストリームの終わりのいずれかからの変位を指示する。新たなシークポインタは、パラメータplibNewPositionにおいて返送され、これは発呼者が新たなシークポインタに関心をもたない場合にゼロとなる。
SetSizeメソッドは、指定されたIStreamインスタンスのストリームのサイズを、パラメータlibNewSizeで指示されたものに変更する。シークポインタは、この動作によって影響されない。ストリームは、サイズが増加されるか又はサイズが減少されるかのいずれかである。ストリームのサイズが増加される場合には、新たなバイトの内容が定められない。
Cloneメソッドは、指定されたIStreamインスタンスと同じ基礎的ストリームを指す新たなIStreamインスタンスを形成する。1つのIStreamインスタンスを介してのストリームの変更は、他のストリームインスタンスを介して直ちに見ることができる。ロック状態(以下に述べる)は、2つのIStreamインスタンス間で分担される。しかしながら、クローンされたIStreamインスタンスは、指定されたIStreamインスタンスのシークポインタとは独立したそれ自身のシークポインタを有する。クローンされたIStreamインスタンスにおけるシークポインタの初期設定は、このCloneメソッドが呼び出されたときには、指定されたIStreamインスタンスにおけるシークポインタの現在設定と同じである。
CopyToメソッドは、指定されたIStreamインスタンスのストリームから(その現在シークポインタでスタートして)、指示されたIStreamインスタンスのストリームへ(その現在シークポインタでスタートして)指定された数のバイトをコピーする。実際に読み取られるか又は書き込まれたバイトの数が返送される。各IStreamインスタンスのシークポインタは、実際に読み取られるか又は書き込まれたバイトの数で調整される。IStreamインスタンスが適当なアクセスモードで開放していない場合には、エラーが返送される。このメソッドは、語義的には、読み取りに続く書き込みと等価である。
Commitメソッドのふるまいは、IStreamインスタンスが開放されるモードに基づいている。直接モードにおいては、このメソッドは何のふるまいももたない。トランザクションモードにおいては、このメソッドは、IStreamインスタンスが開放されるか又は親ストレージに反映されるように最後にコミットされて以来(いずれか遅い方)IStreamインスタンスになされた変化を生じさせる。指示されたコミットモードは、IStorage::Commitメソッドで述べたのと同様に機能する。
Revertメソッドのふるまいは、指定されたIStreamインスタンスのストリームが開放されるモードによって左右される。直接モードにおいては、このメソッドは何の動作も行わない。トランザクションモードにおいては、IStreamインスタンスが開放されるか或いは最後にコミットされて以来(どちらか遅い方)IStreamインスタンスになされた全ての変化が破棄される。
LockRegionメソッドは、指定されたIStreamインスタンスのストリームの領域をロックするように試みる。領域は現在シークポインタで始まり、ストリームの終わりに向かって指示されたバイト数だけ延びる。ストリームの現在終端を越えて延びる領域を指示することは義務である。ストリームに対する領域ロックをサポートすることは任意である。このメソッドは、2つの形式のロック、即ち、他の書き込み者を排除するためのロック(書き込みロック)と、他の書き込み者及び読み取り者を排除するためのロック(排他的ロック)とをサポートする。書き込みロックが許可された場合には、ストリームの指示された領域を読み取りメソッドによりその基礎となるストリームのIStreamインスタンスからアクセスすることができる。しかしながら、指定されたIStreamインスタンス及びそのクローンを除いて、書き込みメソッドがいずれかのIStreamインスタンスを介して呼び出された場合には、エラーが返送される。排他的ロックが許可された場合には、他のIStreamインスタンスを介して呼び出された読み取り及び書き込みメソッドがエラーを返送する。要求されたモードが具現化によってサポートされない場合には、エラーメッセージが返送される。要求されたロックはサポートされるが、他のロックであるために現在許可できない場合には、エラーが返送される。このメソッドでロックされた領域は、全く同じシークポインタと、同じバイトカウントと、同じロック形式とを有するUnLockRegionメソッドを用いて後で特にロック解除しなければならない。従って、2つの隣接領域を別々にロックして1つのアンロックコールでロック解除することはできない。IStreamインスタンスを通るストリームに対する全てのロックは、IStreamインスタンスをリリースする前に明確にロック解除されねばならない。
UnLockRegionメソッドは、指定されたIStreamインスタンスのストリームの以前にロックされた領域をロック解除する。
Statメソッドは、指定されたIStreamインスタンスのストリームの関する情報を返送する。
図4は、本発明の好ましい具現化の全体を示すブロック図である。この好ましい具現化では、IStorage/IStream具現部401と、Docfile具現部402と、ILockBytes具現部403とを含む階層式解決策を用いている。この好ましい具現化は、オブジェクト指向言語のC++言語で行われる。従って、この具現化は、オブジェクト指向の用語で説明する。IStorage/IStream具現部401は、文書ファイルを形成しそして開放する関数と、IStorage及びIStreamのメソッドとを与える。IStorage/IStream具現部401は、トランザクションを実施し、Docfile具現部402のサービスを呼び出す。Docfile具現部402は、文書ファイル内のストレージ及びストリームの永続的記憶に対するインターフェイスを与える。Docfile具現部402は、文書ファイル内のストレージ及びストリームをマップする。Docfile具現部402は、ILockBytesインターフェイスを用いてストレージ及びストリームをその基礎となる永続的ストレージにマップする。ILockBytesインターフェイスは、永続的ストレージを操作するメソッドを定めるアブストラクトクラスとして定義される。好ましい具現化において、ILockBytes具現部403は、その基礎となるファイルシステムを用いてデータを記憶する。或いは又、ILockBytesインターフェイスの具現化は、他のストレージ405で示されたように、他の基礎的な記憶媒体を使用することもできる。
エクスポーズした層は最も外側の層であり、IStrage及びIStreamインターフェイスのメソッドを具現化するものである。このエクスポーズした層はIStrage及びIStreamメソッドのパラメータを有効化する。好ましい実施例においては、ストリームのためのシークポインタのトランザクションは行われない。シークポインタに気付く唯一の層がこのエクスポーズした層である。IStream具現部のこのエクスポーズした層は、シークポインタを維持する。エクスポーズした層のメソッドが、読み取り及び書き込みを行うパブリック層のメソッドを呼び出すときには、これらメソッドに、読み取り又は書き込みするためのオフセットが通される。従って、全ての内部層は、シークポインタを維持しなければならないことから遮断される。
エクスポーズした層はパブリック層を指す。パブリック層は、インスタンスに対してほとんどのアクセスモードを強制する。パブリック層は、その全てのエレメント及びそのアクセスモードのリストを維持する。このリストを使用して、エレメントへの特定のアクセスを許すか拒絶するかを判断する。インスタンスがトランザクションモードにあるときには、パブリック層は、これが指すラップした層のメソッドを呼び出す。さもなくば、パブリック層は直接層を呼び出す。
ラップした層及び直接層は両方とも同じインターフェイスをサポートし、多様に使用することができる。これは、パブリック層がアブストラクトインターフェイスのメソッドを呼び出せるようにし、そしてそれがラップした層の呼び出しであるか直接層の呼び出しであるかは気にしないようにする。ラップした層は、コミット又は復帰のときまで変化のバッファ作用をサポートする。ラップした層は直接層と通信して、そのダーティ情報(トランザクションに対してバッファされたデータ)を管理すると共に、そのベース情報(永続的ストレージにあるデータ)を管理する。又、ラップした層は、あるアクセスモードを強制する。例えば、IStorageインターフェイスは、親のアクセスモードに係わりなく、インスタンスに対して書き込みアクセスモードを要求できることを指定する。これは、親が読み取りのみのアクセスにある間にそのインスタンスを書き込みモードに入れられることを意味する。しかし、親が読み取りのみのアクセスであるから、書き込みアクセスをするインスタンスのコミットはフェイルとなる。直接層は、DocFile具現部のメソッドを直接呼び出して、永続的なストレージを変更する。
好ましい具現化において、各IStrage及びIStreamインスタンスは、直接モード又はトランザクションモードで動作することができる。IStrage及びIStreamインスタンスは、トランザクションモードで開放されたときには、ラップした層と共に例示される。ラップした層は、そのエレメントに対してなされた変化を追跡し、そして要求があった際にコミットするか又は復帰する。
DocFile具現部は、ILockBytesインターフェイスを用いて、IStorage及びIStreamインターフェイスのオブジェクトハイアラーキを永続的ストレージにマップする。ILockBytesインターフェイスは、以下に説明するように、永続的ストレージをバイトのアレイとして見ることができるようにする。DocFile具現部は、このアレイをヘッダ及び複数の固定長さセクタに論理的に分割する。図12は、1つの文書ファイルにおけるセクタのレイアウトを示す図である。この具現化のフォーマットをマルチストリームファイルフォーマット(MSFF)と称する。好ましい実施例では、ヘッダが512バイトである。セクタのサイズはヘッダに記憶され、典型的に、512バイトの倍数である。セクタは、その各々が含む情報の形式に基づいて形式分けされる。これらの形式は、FAT、ディレクトリー、MiniFAT、DIF及びデータである。MSFFは、ファイル割り当てテーブル(FAT)及びダブル間接ファイル割り当てテーブル(DIF)を用いて同じ形式のセクタをリンクし、論理的に隣接するストリームを形成する。
ILockBytes具現部403は、ILockBytesインターフェイスを具現化するものである。以下に述べるように、ILockBytesインターフェイスは、基礎となる記憶媒体のモデルを形成する。好ましい実施例では、ILockBytes具現部403は、基礎となるファイルシステムにおいて動作する。しかしながら、他の媒体で動作するように他の具現部を開発することもできる。IStrage/IStream具現部403の上記説明では、ILockBytesインターフェイスの多数のインスタンスが使用される。1つのインスタンスはスクラッチファイルを指し、そして別のインスタンスは実際に文書ファイルを指すのに用いられる。又、更に別のパラメータをStgCreateDocFile及びStgOpenDocFileファンクションに追加して、アプリケーションプログラムがILockBytesインスタンスを特定できるようにすることができる。
テーブル5
Class ILockBytes
{
仮想 SCODE ReadAt(libOffset,pv,cb,pcbRead)=0;
仮想 SCODE Write(libOffset,pv,cb,pcbWrite)=0;
仮想 SCODE Flush0=0;
仮想 SCODE SetSize(cb)=0;
仮想 SCODE LockRegion(libOffset,cb,dwLockType)=0;
仮想 SCODE UnLockRegion(libOffset,cb,dwLockType)=0;
仮想 SCODE Stat(pstatstg)=0.
}
テーブル6
項目 説明
libOffset 読み取り又は書き込みを始めるところのストレージアレ
イに対するオフセット
pv バッファに対するポインタ
cb ストレージアレイから読み取りを試みるバイト数
pcbRead 実際に読み取られるバイト数
ReadAtメソッドは、指示されたオフセットでスタートして指定されたILockBytesインスタンスのストレージアレイから指示されたバッファへ指示された数のバイトを読み込む。実際に読み取られたバイトの数が返送される。読み取り中にストレージアレイの終わりに達した場合には、実際に読み取られたバイトの数が、要求されたものより少ない。読み取りがストレージアレイの読み取りロック領域にオーバーラップする場合には、エラーが返送される。
WriteAtメソッドは、指示されたバッファから指示されたオフセットでスタートしてILockBytesインスタンスのストレージアレイへ指定された数のバイトを書き込む。オフセットがストレージアレイの現在終了点を越える場合には、ストレージアレイのサイズが初期化されないバイトで増加される。実際に書き込まれたバイトの数はpcbWrittenにおいて返送される。書き込みがロックされた領域にオーバーラップする場合には、エラーが返送される。
Flushメソッドは、指定されたILockBytesインスタンスの具現化によって維持された内部バッファをストレージアレイに書き込む。
SetSizeメソッドは、指定されたILockBytesインスタンスのストレージアレイのサイズを指示されたバイト数に変更する。ストレージアレイのサイズが増加されるか又はサイズが減少される。ストレージアレイのサイズが増加される場合には、新たなバイトの内容が定まらない。
LockRegionメソッドは、指定されたILockBytesインスタンスのストレージアレイの領域をロックするように試みる。領域は指示されたオフセットで始まり、ストレージアレイの終わりに向かって指示されたバイト数だけ延びる。ストレージアレイの現在終了端を越えて延びるバイトの範囲を指示するのは正当である。このメソッドのロック作用のふるまいは、IStream::LockRegionメソッドと同様である。
UnLockRegionメソッドは、指定されたILockBytesインスタンスのストレージアレイの既にロックされた領域をロック解除する。
Statメソッドは、指定されたILockBytesインスタンスのストレージアレイに関連した情報を返送する。
102 IStreamインスタンス
103 IStrageインスタンス
104、105 IStreamインスタンス
201 ワードプロセスプログラム
202 グラフプログラム
203 マルチストリームインターフェイス
204 ファイルシステム
205 複合文書
Claims (16)
- ストレージエリア内に種々の大きさの複数のオブジェクトを保存するためのコンピュータシステムにおける方法であって、
前記ストレージエリアにディレクトリ構造を保存するステップと、
データ流のサイズが第1の大きさより小さいことを確認すると、ミニストリームを割り当て、単一の参照を使用して前記ミニストリームを参照するため前記ディレクトリ構造を更新するステップと、
前記第1の大きさより大きい複数のオブジェクトのそれぞれに対して、オブジェクトストリームを割り当て、前記割り当てられたストリームを参照するため前記ディレクトリ構造を更新し、前記オブジェクトを前記割り当てられたストリーム中に保存するステップと、
前記第1の大きさより大きくない複数のオブジェクトのそれぞれに対して、前記オブジェクトを前記ミニストリーム中に保存し、前記ミニストリーム中に保存されたすべてのオブジェクトへ、前記単一の参照を使用してアクセスできるようにするステップと、を有することを特徴とする方法。 - 前記オブジェクトを前記ミニストリーム中に保存する前記ステップは、前記ミニストリームの中に保存された割り当てテーブルを更新することを含む請求項1に記載の方法。
- 前記ミニストリームの中に保存された前記割り当てテーブルは、miniFATデータ構造定義に基づいて構成される請求項2に記載の方法。
- ディレクトリエントリーのオブジェクトの大きさを指定するステップと、
前記ディレクトリエントリーのオブジェクトの大きさより大きくない複数のオブジェクトの各々に対して、前記オブジェクトを前記ディレクトリ構造の中に直接保存するステップと、
を更に備えた請求項1に記載の方法。 - 前記第1の大きさより大きかったオブジェクトが、前記第1の大きさより大きくなるときに、前記ミニストリームから前記オブジェクトを除去し、前記オブジェクトに対してストリームを割り当て、前記割り当てられたストリームを参照するように前記ディレクトリ構造を更新し、そして前記割り当てられたストリームの中に前記オブジェクトを保存するステップを更に備えた請求項1に記載の方法。
- 前記ストレージエリアは、複数の固定の大きさのセクタを有し、前記方法は、更に、
1つのストリームのセクタを一緒にリンクするために前記ストレージエリアにストレージ割り当てテーブルを保存するステップと、
前記ミニストリームに対するセクタ内に部分を一緒にリンクするために前記ミニストリームの中に別のストレージ割り当てテーブルを保存するステップと、
を備えた請求項1に記載の方法。 - 前記第1の大きさより大きくないオブジェクトに対する要求を受け取るステップと、
前記ミニストリームを参照する前記ディレクトリ構造の前記単一の参照を使用して、前記要求されたオブジェクトを前記ミニストリームから検索するステップと、
を更に備えた請求項1に記載の方法。 - 前記ストレージエリアは、ファイルシステムを実施するのに使用される請求項1に記載の方法。
- ストレージエリア内に種々の大きさのオブジェクトを保存するためのコンピュータシステムにおける方法であって、
第1の大きさより小さいオブジェクトを保存するために第1ストレージサブエリアを割り当てるステップと、
オブジェクトが前記第1の大きさ以上であるときには、前記オブジェクトに対して異なるストレージサブエリアを割り当て、そして前記オブジェクトに対する前記異なるストレージサブエリアに前記オブジェクトを保存するステップと、
オブジェクトが前記第1の大きさ未満であるときには、前記第1の大きさより小さいオブジェクトを保存するために前記第1ストレージサブエリアに前記オブジェクトを保存して、前記第1の大きさより各々小さい多数のオブジェクトを前記第1ストレージサブエリア内に保存するステップと、
を備えた方法。 - プログラムによりアクセスするためのデータを保存するコンピュータシステムにおいて、
ファイルシステムを表わすデータを有しているデータ構造体を備え、該データ構造体は、
第1の大きさより大きくない複数のオブジェクトを含むミニストリームと、
前記第1の大きさより大きいオブジェクトを各々含む複数の他のストリームと、
前記ミニストリームに対する単一の参照、及び前記複数の他のストリームの1つを各々参照する複数の参照を含むディレクトリ構造であって、前記複数の他のストリームの中のオブジェクトは、それ自身の参照を使用して検索され、且つ前記ミニストリームの中のオブジェクトは、前記単一の参照を使用して検索されるようなディレクトリ構造と、を備えたコンピュータシステム。 - 前記ミニストリームは、更に、前記ミニストリームの中で前記第1の大きさより大きくないオブジェクトを探索するのに使用される割り当てテーブルを含む請求項10に記載のコンピュータシステム。
- ストレージエリアにディレクトリ構造を保存するステップと、
第1の大きさより大きくないオブジェクトを各々保存するために、前記ディレクトリ構造にディレクトリエントリーを割り当てるステップと、
前記第1の大きさより大きくない複数のオブジェクトの各オブジェクトに対して、
前記ディレクトリエントリーに充分なストレージが残っているときには、前記ディレクトリエントリーに前記オブジェクトを保存し、そして
前記ディレクトリエントリーに充分なストレージが残っていないときには、
前記第1の大きさより大きくないオブジェクトを保存するためにミニストリームを割り当て、
前記ディレクトリエントリーに保存されたオブジェクトの各々を前記ミニストリームにコピーし、
単一の参照を使用して前記ミニストリームを参照するように前記ディレクトリエントリーを更新して、前記ミニストリームに保存された全てのオブジェクトが前記単一の参照を使用してアクセスされるようにし、そして
前記第1の大きさより大きい複数のオブジェクトの各オブジェクトに対して、前記オブジェクトに異なるストリームを割り当て、前記異なるストリームを参照するように前記ディレクトリ構造において異なるディレクトリエントリーを更新し、そして前記異なるストリームに前記オブジェクトを保存するステップと、
を備えた、ストレージエリア内の種々の大きさの複数のオブジェクトにアクセスするためのコンピュータシステムにおける方法。 - 前記コピーするステップは、前記ミニストリーム内に保存された割り当てテーブルを更新することを含む請求項12に記載の方法。
- 前記ミニストリームは、固定の大きさの複数のミニセクタを含み、そして前記割り当てテーブルは、前記固定の大きさのミニセクタを一緒にリンクするminiFATである請求項13に記載の方法。
- 前記ストレージエリアは、固定の大きさの複数のセクタを有し、その少なくとも1つが複数のミニセクタを含む請求項12に記載の方法。
- 前記ミニストリームに保存されたオブジェクトの大きさが前記第1の大きさより大きいときには、前記ミニストリームから前記オブジェクトを除去し、前記オブジェクトに異なるストリームを割り当て、前記異なるストリームを参照するように前記ディレクトリ構造において異なるディレクトリエントリーを更新し、そして前記異なるストリームに前記オブジェクトを保存するステップを更に備えた請求項12に記載の方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/909,533 US5506983A (en) | 1992-07-06 | 1992-07-06 | Method and system for transactioning of modifications to a tree structured file |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP16714293A Division JP3672582B2 (ja) | 1992-07-06 | 1993-07-06 | ツリー構造ファイルへの変更を処理する方法及びシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004355660A JP2004355660A (ja) | 2004-12-16 |
JP3984983B2 true JP3984983B2 (ja) | 2007-10-03 |
Family
ID=25427396
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP16714293A Expired - Lifetime JP3672582B2 (ja) | 1992-07-06 | 1993-07-06 | ツリー構造ファイルへの変更を処理する方法及びシステム |
JP2004242980A Expired - Lifetime JP3984983B2 (ja) | 1992-07-06 | 2004-08-23 | 小さいオブジェクトデータストリームを使用する、データオブジェクトを保存する方法 |
JP2004242981A Expired - Lifetime JP4318305B2 (ja) | 1992-07-06 | 2004-08-23 | オブジェクトリンキングを使用する、複合文書中のデータに対して保存およびアクセスを行う方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP16714293A Expired - Lifetime JP3672582B2 (ja) | 1992-07-06 | 1993-07-06 | ツリー構造ファイルへの変更を処理する方法及びシステム |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004242981A Expired - Lifetime JP4318305B2 (ja) | 1992-07-06 | 2004-08-23 | オブジェクトリンキングを使用する、複合文書中のデータに対して保存およびアクセスを行う方法 |
Country Status (7)
Country | Link |
---|---|
US (3) | US5506983A (ja) |
EP (4) | EP1006456A3 (ja) |
JP (3) | JP3672582B2 (ja) |
KR (1) | KR100287046B1 (ja) |
AT (2) | ATE179003T1 (ja) |
CA (3) | CA2320674C (ja) |
DE (2) | DE69324410T2 (ja) |
Families Citing this family (109)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5506983A (en) * | 1992-07-06 | 1996-04-09 | Microsoft Corporation | Method and system for transactioning of modifications to a tree structured file |
WO1994027229A1 (en) * | 1993-05-10 | 1994-11-24 | Apple Computer, Inc. | Computer-human interface system which manipulates parts between a desktop and a document |
WO1994027228A1 (en) * | 1993-05-10 | 1994-11-24 | Apple Computer, Inc. | System for automatically determining the status of contents added to a document |
US5812862A (en) * | 1993-05-10 | 1998-09-22 | Apple Computer, Inc. | Computer-human interface system for compound documents |
US5873097A (en) * | 1993-05-12 | 1999-02-16 | Apple Computer, Inc. | Update mechanism for computer storage container manager |
US5652879A (en) * | 1993-05-12 | 1997-07-29 | Apple Computer, Inc. | Dynamic value mechanism for computer storage container manager enabling access of objects by multiple application programs |
US5870764A (en) * | 1993-05-12 | 1999-02-09 | Apple Computer, Inc. | Method of managing a data structure for concurrent serial and parallel revision of a work |
CA2124754C (en) * | 1993-06-30 | 2005-06-28 | Mark Zbikowski | Storage of file data on disk in multiple representations |
CA2124752C (en) * | 1993-06-30 | 2005-04-12 | Mark Zbikowski | Meta-data structure and handling |
US5922054A (en) * | 1994-08-19 | 1999-07-13 | Canon Kabushiki Kaisha | System for managing external applications and files |
WO1996035991A1 (en) | 1995-05-05 | 1996-11-14 | Apple Computer, Inc. | A network component system |
US5664208A (en) * | 1995-05-16 | 1997-09-02 | Apple Computer, Inc. | Methods and apparatuses for seamless compound document processing |
US5740455A (en) * | 1995-05-16 | 1998-04-14 | Apple Computer, Inc. | Enhanced compound document processing architectures and methods therefor |
JP3635765B2 (ja) * | 1996-02-23 | 2005-04-06 | ブラザー工業株式会社 | 印刷特性表示装置 |
US5842219A (en) * | 1996-03-14 | 1998-11-24 | International Business Machines Corporation | Method and system for providing a multiple property searching capability within an object-oriented distributed computing network |
US6119130A (en) | 1996-03-28 | 2000-09-12 | Oracle Corporation | Method and apparatus for providing schema evolution without recompilation |
US5999972A (en) | 1996-07-01 | 1999-12-07 | Sun Microsystems, Inc. | System, method and article of manufacture for a distributed computer system framework |
US6266709B1 (en) | 1996-07-01 | 2001-07-24 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server failure reporting process |
US6304893B1 (en) | 1996-07-01 | 2001-10-16 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system |
US6272555B1 (en) | 1996-07-01 | 2001-08-07 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system |
US6424991B1 (en) | 1996-07-01 | 2002-07-23 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server communication framework |
US6434598B1 (en) | 1996-07-01 | 2002-08-13 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system |
US5848246A (en) | 1996-07-01 | 1998-12-08 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system |
US5987245A (en) | 1996-07-01 | 1999-11-16 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture (#12) for a client-server state machine framework |
US6038590A (en) | 1996-07-01 | 2000-03-14 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system |
US6049832A (en) * | 1996-11-15 | 2000-04-11 | Wall Data Incorporated | Method for accessing information on a host computer from a client computer through an intelligent virtual host component |
US5878206A (en) * | 1997-03-25 | 1999-03-02 | Hewlett-Packard Company | Commit scope control in hierarchical information processes |
US6061696A (en) * | 1997-04-28 | 2000-05-09 | Computer Associates Think, Inc. | Generating multimedia documents |
ATE302413T1 (de) * | 1997-05-14 | 2005-09-15 | Biosite Diagnostics Inc | Schnelle bestimmung des verhältnisses von biologischen molekülen |
US7284187B1 (en) * | 1997-05-30 | 2007-10-16 | Aol Llc, A Delaware Limited Liability Company | Encapsulated document and format system |
US6195794B1 (en) | 1997-08-12 | 2001-02-27 | International Business Machines Corporation | Method and apparatus for distributing templates in a component system |
US6093215A (en) * | 1997-08-12 | 2000-07-25 | International Business Machines Corporation | Method and apparatus for building templates in a component system |
US5978579A (en) * | 1997-08-12 | 1999-11-02 | International Business Machines Corporation | Architecture for customizable component system |
US6182279B1 (en) * | 1997-08-12 | 2001-01-30 | International Business Machines Corporation | Method and apparatus for storing templates in a component system |
US5970252A (en) * | 1997-08-12 | 1999-10-19 | International Business Machines Corporation | Method and apparatus for loading components in a component system |
US6067541A (en) * | 1997-09-17 | 2000-05-23 | Microsoft Corporation | Monitoring document changes in a file system of documents with the document change information stored in a persistent log |
US7447712B2 (en) | 1997-09-28 | 2008-11-04 | Global 360, Inc. | Structured workfolder |
US6240414B1 (en) | 1997-09-28 | 2001-05-29 | Eisolutions, Inc. | Method of resolving data conflicts in a shared data environment |
US6237011B1 (en) * | 1997-10-08 | 2001-05-22 | Caere Corporation | Computer-based document management system |
US6070254A (en) * | 1997-10-17 | 2000-05-30 | International Business Machines Corporation | Advanced method for checking the integrity of node-based file systems |
US6018789A (en) * | 1997-11-24 | 2000-01-25 | Western Digital Corporation | Disk drive with cache segment providing adaptively managed chunks |
US6269362B1 (en) * | 1997-12-19 | 2001-07-31 | Alta Vista Company | System and method for monitoring web pages by comparing generated abstracts |
US6163776A (en) * | 1998-03-23 | 2000-12-19 | Software Tree, Inc. | System and method for exchanging data and commands between an object oriented system and relational system |
US6614433B1 (en) * | 1998-06-05 | 2003-09-02 | Unisys Corporation | Method and system for distributed, dynamic generation of graphics files |
US6272607B1 (en) * | 1998-08-28 | 2001-08-07 | International Business Machines Corporation | Method and apparatus for transactional writing of data into a persistent memory |
US6266682B1 (en) | 1998-08-31 | 2001-07-24 | Xerox Corporation | Tagging related files in a document management system |
US6562076B2 (en) | 1998-08-31 | 2003-05-13 | Xerox Corporation | Extending application behavior through active properties attached to a document in a document management system |
US6549918B1 (en) | 1998-09-21 | 2003-04-15 | Microsoft Corporation | Dynamic information format conversion |
US6192376B1 (en) | 1998-11-13 | 2001-02-20 | International Business Machines Corporation | Method and apparatus for shadowing a hierarchical file system index structure to enable error recovery |
JP3756352B2 (ja) * | 1999-06-29 | 2006-03-15 | 富士通株式会社 | コンパイラ装置およびコンパイラを記録したコンピュータ読み取り可能な記録媒体 |
US20060031746A1 (en) * | 1999-11-11 | 2006-02-09 | Toepfer John R | Publishing architecture system and method |
US20020069214A1 (en) * | 1999-12-02 | 2002-06-06 | Smith John M. | Document services architecture |
US6856993B1 (en) | 2000-03-30 | 2005-02-15 | Microsoft Corporation | Transactional file system |
US20020087579A1 (en) * | 2000-06-23 | 2002-07-04 | Alan Chasanoff | Object universe |
FR2811101B1 (fr) * | 2000-07-03 | 2002-09-20 | Axicare | Procede de traitement de donnees structurees utilisant un langage informatique oriente objet |
CA2428325C (en) * | 2000-11-29 | 2011-08-30 | Matthew David Walker | Transmitting and receiving real-time data |
US7386792B1 (en) * | 2001-03-07 | 2008-06-10 | Thomas Layne Bascom | System and method for collecting, storing, managing and providing categorized information related to a document object |
US6618736B1 (en) * | 2001-03-09 | 2003-09-09 | Ensim Corporation | Template-based creation and archival of file systems |
DK1417800T3 (en) * | 2001-08-15 | 2018-01-15 | Bentley Sys Inc | PROCEDURE AND SYSTEM FOR STORING LARGE DATA FILES |
US7428548B2 (en) * | 2001-08-15 | 2008-09-23 | Bentley Systems, Inc. | Computer readable medium for storing large data files |
CN1557072A (zh) * | 2001-09-21 | 2004-12-22 | ���˹���Ѷ��� | 使用缓冲器大小计算用于拥塞控制的传输速率的数据通信方法和系统 |
WO2003049373A1 (en) * | 2001-11-30 | 2003-06-12 | British Telecommunications Public Limited Company | Data transmission |
US7134020B2 (en) * | 2002-01-31 | 2006-11-07 | Peraogulne Corp. | System and method for securely duplicating digital documents |
EP1359722A1 (en) * | 2002-03-27 | 2003-11-05 | BRITISH TELECOMMUNICATIONS public limited company | Data streaming system and method |
AU2003216817A1 (en) * | 2002-03-27 | 2003-10-13 | British Telecommunications Public Limited Company | Data structure for data streaming system |
KR100804945B1 (ko) * | 2002-04-29 | 2008-02-20 | 주식회사 포스코 | 롤의 넥크부 정도 유지장치 |
US7548935B2 (en) * | 2002-05-09 | 2009-06-16 | Robert Pecherer | Method of recursive objects for representing hierarchies in relational database systems |
US7234109B2 (en) * | 2002-11-19 | 2007-06-19 | Microsoft Corp. | Equality of extensible markup language structures |
GB0306296D0 (en) * | 2003-03-19 | 2003-04-23 | British Telecomm | Data transmission |
US20030191681A1 (en) * | 2003-05-06 | 2003-10-09 | Gallion Kirk P. | Method for managing a business process related to a document publishing project |
US8166101B2 (en) | 2003-08-21 | 2012-04-24 | Microsoft Corporation | Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system |
US8238696B2 (en) | 2003-08-21 | 2012-08-07 | Microsoft Corporation | Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system |
US7676481B2 (en) * | 2005-02-24 | 2010-03-09 | Microsoft Corporation | Serialization of file system item(s) and associated entity(ies) |
US8271541B2 (en) * | 2004-03-31 | 2012-09-18 | Fusionops Corporation | Method and apparatus for developing composite applications |
US8683318B1 (en) * | 2004-07-14 | 2014-03-25 | American Express Travel Related Services Company, Inc. | Methods and apparatus for processing markup language documents |
US7457826B2 (en) * | 2004-12-20 | 2008-11-25 | Microsoft Corporation | Systems and methods for synchronization of items without snapshots |
US8521752B2 (en) * | 2005-06-03 | 2013-08-27 | Osr Open Systems Resources, Inc. | Systems and methods for arbitrary data transformations |
US7630998B2 (en) * | 2005-06-10 | 2009-12-08 | Microsoft Corporation | Performing a deletion of a node in a tree data storage structure |
RU2005124030A (ru) * | 2005-07-28 | 2007-02-10 | Александр Михайлович Юров (RU) | Способ визуальной адресации команд в дереве |
CN101000610B (zh) * | 2006-01-11 | 2010-09-29 | 鸿富锦精密工业(深圳)有限公司 | 文件分散式储存系统及方法 |
US8538931B2 (en) | 2006-04-28 | 2013-09-17 | International Business Machines Corporation | Protecting the integrity of dependent multi-tiered transactions |
GB2440357B (en) | 2006-06-30 | 2011-12-07 | Data Equation Ltd | Data processing |
GB2439576B (en) * | 2006-06-30 | 2011-05-04 | Data Equation Ltd | Storing related data fragments in the same block |
GB2439752B (en) * | 2006-06-30 | 2011-11-02 | Data Equation Ltd | Storing and Modifying Data |
GB2439578B (en) * | 2006-06-30 | 2011-11-09 | Data Equation Ltd | Data processing |
GB2439577B (en) * | 2006-06-30 | 2011-12-14 | Data Equation Ltd | Data processing |
US7512748B1 (en) | 2006-08-17 | 2009-03-31 | Osr Open Systems Resources, Inc. | Managing lock rankings |
US8539228B1 (en) | 2006-08-24 | 2013-09-17 | Osr Open Systems Resources, Inc. | Managing access to a resource |
JP2008077173A (ja) * | 2006-09-19 | 2008-04-03 | Sony Computer Entertainment Inc | コンテンツ表示処理装置およびコンテンツ内広告表示方法 |
AU2007346281B2 (en) * | 2007-02-06 | 2013-07-04 | Zodiac Pool Care South Africa (Pty) Limited | Swimming pool cleaner |
US8024433B2 (en) | 2007-04-24 | 2011-09-20 | Osr Open Systems Resources, Inc. | Managing application resources |
US7949693B1 (en) | 2007-08-23 | 2011-05-24 | Osr Open Systems Resources, Inc. | Log-structured host data storage |
US20100169092A1 (en) * | 2008-11-26 | 2010-07-01 | Backes Steven J | Voice interface ocx |
US8307891B2 (en) * | 2009-01-28 | 2012-11-13 | Baker Hughes Incorporated | Retractable downhole backup assembly for circumferential seal support |
US8134733B2 (en) * | 2009-04-24 | 2012-03-13 | Xerox Corporation | Pre-concatenation execution method and system for automated prepress process nodes |
CN102122284B (zh) * | 2010-01-08 | 2014-07-02 | 腾讯科技(深圳)有限公司 | 一种复合文档存储、读写方法和装置 |
US9965224B2 (en) * | 2010-02-24 | 2018-05-08 | Veritas Technologies Llc | Systems and methods for enabling replication targets to reclaim unused storage space on thin-provisioned storage systems |
US8843814B2 (en) * | 2010-05-26 | 2014-09-23 | Content Catalyst Limited | Automated report service tracking system and method |
US9430470B2 (en) * | 2010-05-26 | 2016-08-30 | Content Catalyst Limited | Automated report service tracking system and method |
US8769392B2 (en) * | 2010-05-26 | 2014-07-01 | Content Catalyst Limited | Searching and selecting content from multiple source documents having a plurality of native formats, indexing and aggregating the selected content into customized reports |
US10911550B2 (en) | 2010-11-09 | 2021-02-02 | Microsoft Technology Licensing, Llc | Partial loading and editing of documents from a server |
US10338947B2 (en) | 2011-03-15 | 2019-07-02 | Microsoft Technology Licensing, Llc | Extent virtualization |
US8903874B2 (en) | 2011-11-03 | 2014-12-02 | Osr Open Systems Resources, Inc. | File system directory attribute correction |
US8868531B2 (en) * | 2012-09-10 | 2014-10-21 | Apple Inc. | Concurrent access methods for tree data structures |
US9830329B2 (en) | 2014-01-15 | 2017-11-28 | W. Anthony Mason | Methods and systems for data storage |
US10437564B1 (en) | 2016-09-16 | 2019-10-08 | Software Tree, LLC | Object mapping and conversion system |
DE102018126546A1 (de) * | 2017-12-22 | 2019-06-27 | Odass Gbr | Verfahren zur Reduzierung der Rechenzeit einer Datenverarbeitungseinrichtung |
US10997153B2 (en) * | 2018-04-20 | 2021-05-04 | Hewlett Packard Enterprise Development Lp | Transaction encoding and transaction persistence according to type of persistent storage |
US11243703B2 (en) | 2018-04-27 | 2022-02-08 | Hewlett Packard Enterprise Development Lp | Expandable index with pages to store object records |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4536837A (en) * | 1982-05-25 | 1985-08-20 | Elxsi | Improved disk file allocation and mapping system utilizing cylinder control blocks and file map having unbalanced tree structure |
US4723209A (en) * | 1984-08-30 | 1988-02-02 | International Business Machines Corp. | Flow attribute for text objects |
US4739477A (en) * | 1984-08-30 | 1988-04-19 | International Business Machines Corp. | Implicit creation of a superblock data structure |
JPS6410353A (en) * | 1987-07-03 | 1989-01-13 | Hitachi Ltd | Computer file system |
JPH01237757A (ja) * | 1987-12-23 | 1989-09-22 | Internatl Business Mach Corp <Ibm> | 情報処理システム中の文書オブジエクトを検索する方法 |
US4899299A (en) * | 1987-12-23 | 1990-02-06 | International Business Machines Corporation | Method for managing the retention of electronic documents in an interactive information handling system |
JPH01211067A (ja) * | 1988-02-19 | 1989-08-24 | Hitachi Ltd | 文書編集装置 |
US4953080A (en) * | 1988-04-25 | 1990-08-28 | Hewlett-Packard Company | Object management facility for maintaining data in a computer system |
US5359708A (en) * | 1988-06-15 | 1994-10-25 | International Business Machines Corp. | Dynamic in a document processing system for dynamically locating format controls and determining formatting information in effect before and after each format control |
US4933880A (en) * | 1988-06-15 | 1990-06-12 | International Business Machines Corp. | Method for dynamically processing non-text components in compound documents |
JPH0277872A (ja) * | 1988-09-14 | 1990-03-16 | Hitachi Ltd | 文書処理プログラムを格納した記憶媒体と文書処理装置 |
US4907151A (en) * | 1988-09-30 | 1990-03-06 | Digital Equipment Corporation | System and method for garbage collection with ambiguous roots |
US5029125A (en) * | 1989-03-07 | 1991-07-02 | Drexler Technology Corporation | Method of reading and writing files on nonerasable storage media |
US5339392A (en) * | 1989-07-27 | 1994-08-16 | Risberg Jeffrey S | Apparatus and method for creation of a user definable video displayed document showing changes in real time data |
US5371885A (en) * | 1989-08-29 | 1994-12-06 | Microsoft Corporation | High performance file system |
US5247520A (en) * | 1989-10-13 | 1993-09-21 | International Business Machines Corporation | Communications architecture interface |
JPH03232029A (ja) * | 1989-12-08 | 1991-10-16 | Fuji Photo Film Co Ltd | メモリカードの記憶管理方式 |
GB9005697D0 (en) * | 1990-03-14 | 1990-05-09 | Digital Equipment Int | Data format conversion |
US5535319A (en) * | 1990-04-13 | 1996-07-09 | International Business Machines Corporation | Method of creating and detecting device independent controls in a presentation data stream |
US5297279A (en) * | 1990-05-30 | 1994-03-22 | Texas Instruments Incorporated | System and method for database management supporting object-oriented programming |
US5317730A (en) * | 1991-01-11 | 1994-05-31 | International Business Machines Corporation | System for modifying persistent database based upon set of data elements formed after selective insertion or deletion |
JPH04275684A (ja) * | 1991-03-01 | 1992-10-01 | Fuji Xerox Co Ltd | 図形情報データベース構築方法およびその方法が適用される装置 |
US5269019A (en) * | 1991-04-08 | 1993-12-07 | Storage Technology Corporation | Non-volatile memory storage and bilevel index structure for fast retrieval of modified records of a disk track |
US5448727A (en) * | 1991-04-30 | 1995-09-05 | Hewlett-Packard Company | Domain based partitioning and reclustering of relations in object-oriented relational database management systems |
US5243518A (en) * | 1991-05-03 | 1993-09-07 | Xerox Corporation | Document services architecture |
US5349658A (en) * | 1991-11-01 | 1994-09-20 | Rourke Thomas C O | Graphical user interface |
US5335290A (en) * | 1992-04-06 | 1994-08-02 | Ricoh Corporation | Segmentation of text, picture and lines of a document image |
US5479656A (en) * | 1992-05-13 | 1995-12-26 | Rawlings, Iii; Joseph H. | Method and system for maximizing data files stored in a random access memory of a computer file system and optimization therefor |
US5423034A (en) * | 1992-06-10 | 1995-06-06 | Cohen-Levy; Leon | Network file management with user determined hierarchical file structures and means for intercepting application program open and save commands for inputting and displaying user inputted descriptions of the location and content of files |
KR100359670B1 (ko) * | 1992-07-06 | 2003-01-29 | 마이크로소프트 코포레이션 | 파일의내부구조구성방법및시스템 |
DE69327138T2 (de) * | 1992-07-06 | 2000-04-27 | Microsoft Corp | Verfahren zur Namensgebung und zur Bindung von Objekten |
US5506983A (en) * | 1992-07-06 | 1996-04-09 | Microsoft Corporation | Method and system for transactioning of modifications to a tree structured file |
US5515536A (en) * | 1992-11-13 | 1996-05-07 | Microsoft Corporation | Method and system for invoking methods of an object through a dispatching interface |
EP0672277B1 (en) * | 1992-12-01 | 1998-05-13 | Microsoft Corporation | A method and system for in-place interaction with embedded objects |
US5537526A (en) * | 1993-11-12 | 1996-07-16 | Taugent, Inc. | Method and apparatus for processing a display document utilizing a system level document framework |
US5467472A (en) * | 1994-04-15 | 1995-11-14 | Microsoft Corporation | Method and system for generating and maintaining property sets with unique format identifiers |
US5608909A (en) * | 1994-04-15 | 1997-03-04 | Microsoft Corporation | Method and system for caching presentation data of a source object in a presentation cache |
-
1992
- 1992-07-06 US US07/909,533 patent/US5506983A/en not_active Expired - Lifetime
-
1993
- 1993-07-06 AT AT93110796T patent/ATE179003T1/de not_active IP Right Cessation
- 1993-07-06 AT AT98118766T patent/ATE231997T1/de not_active IP Right Cessation
- 1993-07-06 JP JP16714293A patent/JP3672582B2/ja not_active Expired - Lifetime
- 1993-07-06 CA CA002320674A patent/CA2320674C/en not_active Expired - Lifetime
- 1993-07-06 DE DE69324410T patent/DE69324410T2/de not_active Expired - Lifetime
- 1993-07-06 KR KR1019930012824A patent/KR100287046B1/ko not_active IP Right Cessation
- 1993-07-06 EP EP00105871A patent/EP1006456A3/en not_active Ceased
- 1993-07-06 EP EP98118766A patent/EP0892355B1/en not_active Expired - Lifetime
- 1993-07-06 CA CA002320675A patent/CA2320675C/en not_active Expired - Lifetime
- 1993-07-06 EP EP00105872A patent/EP1006457A3/en not_active Withdrawn
- 1993-07-06 DE DE69332672T patent/DE69332672T2/de not_active Expired - Lifetime
- 1993-07-06 EP EP93110796A patent/EP0578204B1/en not_active Expired - Lifetime
- 1993-07-06 CA CA002099911A patent/CA2099911C/en not_active Expired - Lifetime
-
1995
- 1995-06-07 US US08/474,100 patent/US5715441A/en not_active Expired - Lifetime
- 1995-06-07 US US08/477,925 patent/US5706504A/en not_active Expired - Lifetime
-
2004
- 2004-08-23 JP JP2004242980A patent/JP3984983B2/ja not_active Expired - Lifetime
- 2004-08-23 JP JP2004242981A patent/JP4318305B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE69332672T2 (de) | 2003-07-10 |
CA2099911A1 (en) | 1994-01-07 |
EP0578204A2 (en) | 1994-01-12 |
EP0892355B1 (en) | 2003-01-29 |
EP1006457A3 (en) | 2009-11-25 |
US5506983A (en) | 1996-04-09 |
EP0578204B1 (en) | 1999-04-14 |
ATE179003T1 (de) | 1999-04-15 |
CA2320675A1 (en) | 1994-01-07 |
US5715441A (en) | 1998-02-03 |
CA2320675C (en) | 2004-04-13 |
EP1006457A2 (en) | 2000-06-07 |
JP2004355660A (ja) | 2004-12-16 |
JP4318305B2 (ja) | 2009-08-19 |
JPH06161849A (ja) | 1994-06-10 |
DE69324410T2 (de) | 1999-08-05 |
JP3672582B2 (ja) | 2005-07-20 |
JP2005018803A (ja) | 2005-01-20 |
EP1006456A3 (en) | 2009-12-02 |
DE69332672D1 (de) | 2003-03-06 |
CA2320674A1 (en) | 1994-01-07 |
EP1006456A2 (en) | 2000-06-07 |
KR940006025A (ko) | 1994-03-22 |
EP0578204A3 (ja) | 1994-03-23 |
EP0892355A1 (en) | 1999-01-20 |
CA2320674C (en) | 2004-04-27 |
KR100287046B1 (ko) | 2001-04-16 |
DE69324410D1 (de) | 1999-05-20 |
CA2099911C (en) | 2001-11-27 |
ATE231997T1 (de) | 2003-02-15 |
US5706504A (en) | 1998-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3984983B2 (ja) | 小さいオブジェクトデータストリームを使用する、データオブジェクトを保存する方法 | |
CN109906433B (zh) | 针对容器的存储隔离 | |
US5537592A (en) | System and method for reading and writing disks formatted for an operating system foreign to the host computer | |
US5367671A (en) | System for accessing extended object attribute (EA) data through file name or EA handle linkages in path tables | |
US6934822B2 (en) | Organization of multiple snapshot copies in a data storage system | |
US6792518B2 (en) | Data storage system having mata bit maps for indicating whether data blocks are invalid in snapshot copies | |
EP0698243B1 (en) | Storage manager for computer system and method therefor | |
US5819275A (en) | System and method for superimposing attributes on hierarchically organized file systems | |
US6957362B2 (en) | Instantaneous restoration of a production copy from a snapshot copy in a data storage system | |
US5915253A (en) | Method and system for implementing objects in a storage system | |
CA1303747C (en) | Method of rapidly opening disk files identified by path names | |
US6850959B1 (en) | Method and system for transparently extending non-volatile storage | |
EP0415346B1 (en) | Method and system for dynamic volume tracking in an installable file system | |
US7676526B1 (en) | System, method and computer program product for multi-level file-sharing by concurrent users | |
EP0474395A2 (en) | Data storage hierarchy with shared storage level | |
WO1996041283A9 (en) | System and method for superimposing attributes on hierarchically organized file systems | |
US4855907A (en) | Method for moving VSAM base clusters while maintaining alternate indices into the cluster | |
US6405217B1 (en) | State-based implementation of transactions on a file system | |
Kifer et al. | FileSys: The File System | |
Dean III | Integrating compound documents, file systems, and object stores in a microstorage architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040917 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040917 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060403 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060629 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060704 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061003 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070611 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070709 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100713 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110713 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110713 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120713 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120713 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130713 Year of fee payment: 6 |
|
EXPY | Cancellation because of completion of term |