4

エンタープライズプロジェクトでは、大量のデータ(元の値、変更された値、データを変更したユーザーなど)をログに記録する必要があります。NLogを使用してそのようなデータをログに記録し、ELMAHを使用して例外をログに記録しています。別のデータベースを使用してログ情報を保存するのか、プライマリデータベースを使用するのかわかりません。別のデータベースを使用する利点は次のとおりです。

  • ログと例外はビジネスの一部ではないため、プライマリデータベースにある必要はありません。
  • メインデータベースの負荷が軽減され、パフォーマンスが向上します。

短所は次のとおりです。

  • ログデータベースが停止すると、このプロジェクトで非常に重要なログが失われます。(ただし、ロギングが成功しなかった場合は保存を防ぐことができます)
  • トランザクションの処理は困難になります。(ログは保存されているが、データは保存されていない場合はどうなりますか)

もちろん、さらに多くの長所と短所がありますが、全体として、私は知る必要があります。かなりのトランザクションRDBMSを利用するエンタープライズソフトウェアのベストプラクティスは何ですか?それとも、いくつかの要因に基づいてプロジェクトごとに異なるのでしょうか?

4

1 に答える 1

7

エラーログをデータアクセスから分離して分離したい。データ アクセスがロールバックする場合は、ログ アクセスを保持しさらにロールバックしたことをログに記録する必要があります。データベースがダウンしている場合は、データベースがダウンしていることをログに記録する必要があります。ロギングがデータ アクセスとトランザクション的に一貫している場合、システムでは 1 分間に 10 回のロールバックが発生する可能性がありますが、エラー ログには何も表示されません。

ロギングを独自のストレージ (データベース) にする必要があるもう 1 つの理由は、多くの場合、関係が 1 対 1 ではないことです。エラー ロギングは、複数のシステムから報告されたエラーを集約することが多く、複数のデータベースに裏付けられている可能性があります。

エラー レポートの送信に使用するインフラストラクチャは、エラー ログ リポジトリが利用できない場合 (つまり、ログ データベースがダウンしているか、ネットワークが分割されている) を処理する必要があり、利用可能な多くのキュー ソリューション ( MSMQRabbitMQZeroMQなど) のいずれかを使用します。

于 2012-10-30T08:28:34.437 に答える