アプリのプロトタイプを作成するタスクが与えられました。私が思いついたソリューションの概念はせいぜい臭いように見えるので、私はまだコードを持っていません...
問題:
このソリューションは、AzureSQLdb-sに格納されている大量のデータを処理するさまざまなAzureプロジェクトで構成されています。発生するほとんどすべてのアクションは、blobストレージにgzip圧縮されたログファイルを作成します。つまり、ログエントリごとに1つの.gzファイルです。
また、これらのログファイルの読み取り、フィルター処理、および並べ替えができる小さなデスクトップ(WPF)アプリも必要です。
ロギングの実行方法にはまったく影響がないので、これを変更してこの問題を解決することはできません。
私が(概念的に)思いついた可能な解決策:
1:
- BLOBストレージに接続します
- コンテナを開く
- ブロブの読み取り/ダウンロード(フィルターを適用)
- .gzファイルを解凍します
- 読み取りと表示
これに伴う問題は、フィルターによっては、ダウンロード(低速)および処理(これもそれほど迅速ではない)する大量のデータを意味する可能性があることです。私はこれを使用可能なアプリケーションとして本当に見ることができません。
2:
- WCFまたはRESTサービスを実行するWebロールを作成します
- サービスはフィルターパラメーターやその他のものを取得し、データを含む単一のxml / jsonファイルを返します。処理は、クラウド上で行われます。
このアプローチでは、これらのファイルが多数ある場合、これらのファイルの解凍で問題が発生しますか(サービスが実行されているストレージ/コンピューティングインスタンスで余分なスペースを占有します)。
編集:私がフィルターとは、日付と重大度(情報、警告、エラー)によって結果を制限することを意味します。.gzファイルは、これを非常に簡単にする構造で保存されます。ファイル自体を調べてフィルタリングすることはしません。
3:
- 私が知らない他のエレガントでシンプルなソリューション
また、表示されたログをアプリにリアルタイムで更新させる方法も必要です。これは、blobストレージ/サービスへの繰り返しのリクエストで行う必要があると思います。
これは、「コードを教えて」という質問の1つではありません。ベストプラクティス、または同様の問題に有効な同様のソリューションに関するアドバイスを探しています。また、問題に対するアプローチは人によって異なるため、これは「誰も正解ではない」質問の1つになる可能性があることも知っていますが、プロトタイプを作成する時間があるので、さまざまなことを試して、正しいものを選択します。答えは、実際に何かを構築してテストするまでに少し時間がかかったとしても、うまくいった解決策を示したもの、または正しい方向に私を導いたものになります。