Insert
およびDelete
は、ファイルのサイズを変更して、ファイルの途中でデータを追加および削除する操作です。大きなファイルの途中で挿入や削除を効率的に処理する方法は?
通常のテキストエディタ(メモ帳、vim、emacsなど)で編集された小さなテキストファイルの場合、テキストファイル全体がアトミック操作で書き換えられます。具体的には、ファイルの末尾ではなく一部のコンテンツをテキストファイルに挿入したり削除したりすると、まず、ファイルの先頭からデータの挿入や削除までのコンテンツが新しいファイルにコピーされます。挿入されたデータがコピーされます(削除操作ではこの手順は省略されます)。最後に、挿入/削除位置から最後までのデータが新しいファイルにコピーされます。
通常のファイルシステムが変更されたファイルのサイズが途中でファイルの内容を変更し
insert
かremove
操作を提供していないので、「挿入」と「削除」は、高価な操作です。
これは、通常、10Gバイトを超えるサイズのメモリを持つファイルを指します。ファイル全体がまだ書き換えられていれば、コストは非常に高くなります。したがって、大きなファイルを所有するソフトウェアは、通常、ファイル自体の変更を処理します。そのような
vmdk
ファイル、VMware Workstationのdb
ファイルの仮想ファイルシステムによって配置された仮想マシンイメージファイルはデータベースファイルでありされ、そのデータは、データベースのストレージエンジンによって操作される
私の質問は、これらの「仮想ファイルシステム/ストレージエンジンは」効率的に処理する方法でinsert
とdelete
集中的なディスクI/Oを避けるために、大きなファイルの途中での操作?
関連資料または論文は歓迎します。
互換性のために、ファイルシステムは、ファイルの基本的な操作をいくつか提供します。ファイルエディタやファイルの所有者は、自分自身で最適化する必要があります。 – foool