Benefits of Structured StorageThe Evolution of File System

ファイルシステムの発展

数年前、ディスクオペレーティングシステム以前、各コンピュータはただ 1つの独占(マシンの完全な排他コントロールを行う)アプリケーションを動作させるように設計されていました。 アプリケーションはディスクコントローラに直接コマンドを送信して、ディスク(即ちドラム)にその永続的なデータ書き込んでいたでしょう。 アプリケーションは、決して既存のデータを上書きしない用に、ディスクにおけるデータの絶対的な位置に関して責任がありました。 コンピュータ上で 1つのアプリケーションしか動作しない間は、このタスクはさして困難ではありませんでした。

1つ以上のアプリケーションを実行することができるコンピュータシステムの出現は、アプリケーションが互いのデータ上書きしない事を保証するメカニズムを求めました。 アプリケーション開発者はこれらの問題に対して、マーキングにしたがって使用中のセクタをそれ以外と識別する 1つの標準を採用することで対処しました。 そのうちに、これらの標準はディスクオペレーティングシステムに統合されました。 (これは、永続的な記憶装置を管理するためのファイルシステムなど、アプリケーションに様々なサービスを提供しました。) ファイルシステムの到来によって、アプリケーションはもはや直接物理的な記憶メディアに対処する必要がなくなりました。 代わりに彼らは、単にディスクにデータのブロックを書き、かつファイルシステムがそれを行う方法について注意するよう、ファイルシステムに命じました。 さらにファイルシステムは、ディレクトリとして知られている抽象的概念によって、アプリケーションがデータ階層を作成することを可能にしました。 ディレクトリはファイルだけでなく他の(自分のファイルおよびディレクトリなどを含むことができる)ディレクトリも含むことができました。

ファイルシステムは、アプリケーションとディスクの間に、単一の間接的な基準を提供し、その結果すべてのアプリケーションは、実はシステム上では連続していないセクタに保存されているファイルであっても、ディスク上の単一の連続したストリームとしてファイルを見る事ができました。 この間接化は、アプリケーションを記憶媒体上のデータの絶対位置という制約から解放しました。

今日、仮想的なファイル入出力に関するすべてのシステム API は、アプリケーションにフラットなファイルへの情報の書き込みを提供します。 アプリケーションは、(ディスクが一杯になるまでの間は)必要に応じてサイズ増大が可能な単一のストリームとしてファイルを使用します。 長い間、これらの API は、長期情報を保存するアプリケーションにとって十分でした。 アプリケーションは、増加する「より速い保存」というフィーチャを提供するため、単一のストリームを配置するための重要な革新を起こさなければなりませんでした。

しかしながら、コンポーネントオブジェクトの世界では、単一のフラットなファイルシステム上にあるストリングデータは、効率的ではありません。 ファイルシステムは、複数のアプリケーションが同じストレージ媒体を共有する必然性から生まれました。 現在コンポーネントオブジェクトには、単一ファイルをコンセプトとしたフレームワーク上でストレージの共有ができるシステムが必要です。 にもかかわらず、伝統的なフラットファイルストレージを使用して分割したオブジェクトを保存することは可能です。 もし、オブジェクトのサイズが増大したり、また他のオブジェクトを単純に追加した場合、メモリ上にあるファイル全体や、挿入する新しいオブジェクト、保存するすべてのファイルを読み込みなおす必要があります。 このプロセスは、きわめて時間を消費します。

このソリューションでは、COM によって(ファイル中にあるファイルシステムとして) 2段階の間接レベルを提供します。 フラットファイルストレージは、ディスク上に単一のシークポインタを伴った単一のファイルハンドルによって操作可能な連続した領域が必要です。 対照的に、COM 構造化ストレージは、単一のファイルシステムの実体を、2種類の(ストレージとストリーム、これらはディレクトリとファイルの役割を果たす)オブジェクトの構造化されたコレクションとして扱う方法を定義します。