JSON ファイル (サイズ: ~100MB; 形式: [{},{},...,{}]) を1 秒あたり約 70 ~ 80 回クエリする必要がある Web サービスを実装しています。JSON ファイルは1 時間ごとに更新されます。「JSON ファイルをクエリする」とは、特定の値を持つ属性を持つファイルに JSON オブジェクトがあるかどうかを確認することを意味します。
現在、サービスを Node.js に実装し、JSON ファイルを MongoDB のコレクションにインポート ( mongoimport ) しようと考えています。リクエストが届くと、ファイルを直接読み取って検索する代わりに、MongoDB コレクションにクエリを実行します。Node.js サーバーには、JSON ファイルが更新されているかどうかを 1 時間ごとにチェックする別のタイマー サービスが必要です。更新されている場合は、新しいファイルのデータをコレクションに「再入力」する必要があります。
JSON ファイルは、外部 API に要求を送信することによって取得されます。API には 2 つのメソッドがあります。methodA では JSON ファイル全体をダウンロードできます。methodB は実際には単なる HTTP HEAD 呼び出しであり、ファイルが更新されたかどうかを通知するだけです。API から増分更新データを取得できません。
私の問題は、毎時更新です。サービスが実行されていると、リクエストが絶えず入ってきます。タイマーが JSON ファイルの更新を検出すると、それをダウンロードし、ダウンロードが完了すると、ファイルをコレクションに再インポートしようとします。これには少なくとも数分かかると思います。コレクションへのクエリを中断せずにこれを行う方法はありますか?
上記は、これにアプローチする私の最初のアイデアです。プロセスに問題はありますか?ファイルを直接検索するのは、特に 1 秒間に約 100 回のリクエストが来るため、コストが高すぎるように思えます。