4

在企业项目中,我需要记录大量数据(原始值、修改值、更改数据的用户等)。我使用 NLog 记录此类数据,使用 ELMAH 记录异常。我不确定是使用单独的数据库来存储日志信息还是使用主数据库。使用单独数据库的优点是:

  • 日志和异常不是业务的一部分,因此它们不需要在主数据库中。
  • 主数据库上的负载将减少,从而获得更好的性能。

缺点是:

  • 如果日志数据库停止,我们将错过在这个项目中非常重要的日志。(尽管如果记录不成功,我们可以阻止保存)
  • 处理交易会很困难。(如果日志保存了,但数据没有)

当然还有更多的优点和缺点,但总而言之,我需要知道:在企业软件中使用大型事务性 RDBMS 的最佳实践是什么?或者它可能会因某些因素而因项目而异?

4

1 回答 1

7

您希望将错误记录与数据访问分离和分离。如果数据访问回滚,您希望保留日志访问并另外记录它回滚的事实。如果数据库已关闭,您确实需要记录数据库关闭。如果您的日志记录在事务上与数据访问一致,那么您的系统每分钟可能会经历 10 次回滚,但您的错误日志不会显示任何内容!

日志记录应该是它自己的存储(数据库)的另一个原因是,通常关系不是 1:1,错误日志记录通常聚合来自多个系统报告的错误,可能由多个数据库支持。

用于提交错误报告的基础架构应处理错误日志存储库的不可用性(即日志记录数据库已关闭或网络已分区),使用可用的许多排队解决方案之一(MSMQRabbitMQZeroMQ等)。

于 2012-10-30T08:28:34.437 回答