0

一部のプロセスのファイルベースのキャッシュがLinuxマシンで発生することを想像してみてください。

  • ソースデータに変更があった場合にのみ、プロセス(リソースを消費する)を作成します。
  • 結果をクエリするたびに、ベースデータが変更されているかどうかを確認しています。
  • データが変更された場合、データを処理してキャッシュを保存します。
  • 変更とキャッシュの鮮度(最後の変更後に作成された場合)のチェックは、ファイルの変更時刻(ソースデータとキャッシュファイル)を照会することによって行われます。

トリッキーな部分:プロセスには時間がかかります。データの処理中にデータが変更される可能性があります。キャッシュの変更時間を作成クエリ時間に変更しても安全ですか?

それは次のようなものです:

  1. ソースデータは20:00:01に変更されました。
  2. クエリは20:00:05に行われました-キャッシュを再作成しています。
  3. 20:04:15に終了しました。
  4. キャッシュを保存しています。
  5. キャッシュファイルの変更時刻を20:00:05に変更します(これは、20:00:05以降のすべての変更がカウントされないことを示しています)。

安全ですか?バックアップ、展開、ソース管理の場合...このようなソリューションで問題が発生する可能性があるのはどのような状況ですか?

4

1 に答える 1

1

いいえ。安全な解決策は、一時的な名前のファイルを同じディレクトリに書き込み、すべてのデータを書き込んだ後で名前を変更することです。

  1. このようにして、不完全な/切り捨てられたファイルが作成されることはありません
  2. エラーが発生した場合でも、元のデータはそのまま残ります
  3. エラー処理のために、あなたはただ一時ファイルを削除する必要があります

また、バックアップ、ソース管理に関するすべての問題を解決します。一時ファイルを無視させることができます。

于 2013-03-26T12:34:31.597 に答える