削除が発生したときに削除されるもののリストはありますか (または、これを作成するために削除するプロセスを変更します)? もしそうなら、タイムスタンプ付きの「私は削除されました」のリストを作成し、このリストからアイテムを選択して、変更されたものだけを同期することはできませんか? 当然、サーバーの処理速度が遅い時間帯に何らかのバッチ ジョブを同期させたいと思うでしょうが、それによって負荷を軽減できると思います。
別のオプションは、コードの変更内容に応じて、そのプロセスが削除時にデータベースを直接更新することです (複数のノードがある場合)。これにより、システムに何らかの結合が導入されますが、これが最も効率的な方法です。
私の意見では、削除が発生したというメッセージのアイデアのいくつかのバリエーション(それが最近削除されたファイルのリストを使用してどこかに書き込むだけのファイルであっても)、または何らかの直接コールバックメカニズムのいずれかです。コードを使用するか、アプリケーションが削除プロセスから直接使用する永続データ ストアを調整するだけです。
以上のことをすべて述べたとしても、すべてが正しく一致していることを確認するために、何らかの種類のインデックス同期またはインデックスの定期的な健全性チェックを常に行う必要があります。
ファイル スペースを、たとえば 1 フォルダーあたり 5,000 ~ 10,000 個のファイルでフォルダーに分割し、次のような単純なファイルを作成することができます (そして、所有しているファイルの数に基づいて作成する必要がなければ、私はショックを受けます)。フォルダー内のすべてのファイルの名前のハッシュがあります。これは削除をキャッチしますが、削除が発生したときに何らかの形で直接コールバックする方がはるかに優れていると思います。これらすべてのものを含むモノリシックなフォルダーがある場合は、それを個別のフォルダーに分割する何かを作成すると (メインフォルダーの下に単純な番号を使用したため、面倒なことに進むことができました)、すべてが大幅に高速化されます。すべての新しいファイルに対してこれを実行し、古いファイルをそのままにしておく必要がある場合でも、少なくともファイルの取得時に出血を止めることができます.
私の意見では、ファイルのインデックスをプログラムで制御しているため、基本的なファイル システムへの変更時に変更が発生した場合は、変更を許可するのではなく、何らかの方法で同じプログラムを関与させる (または通知する) 必要があります。次に、すべてを調べて更新を探します。当然のことながら、この通信が途切れる異常値を検出するには、ファイル システムの内容を実際にチェックし、インデックスを定期的に更新するための同期コードをそこに含める必要があります (ただし、これはメイン アプリケーションのプロセス外でバッチ処理する必要があります)。 )。