crud应用程序日志记录

w41d8nur  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(420)

我正在尝试彻底检查我的crud应用程序的日志体系结构。它是一个带有sql server 2008 r2后端的.net winforms应用程序。
在当前设置中,只要用户按下“保存按钮”,就会调用数据库日志。变更集是使用.net对表示我们存储在sql中的表的类的反射来确定的。
日志存储在两个名为actionlogheader和actionlogdetail的表中。
标题架构: ActionLogHeader_id | TableName | PrimaryKey | ActionType | User | ActionDate 详细架构: ActionLogDetail_id | ActionLogHeader_id | ColumnChanged | PreValue | PostValue 一个标题可以有多个详细信息。每个明细行表示表中更改的单个列。actiontype是insert/update/delete/view。
这通常用于向用户显示发生在数据库中任何一件事情上的更改列表。但要从中提取数据来创建某个时刻某个事物的全貌变得很困难。针对特定数据点对这些数据进行聚合是困难的。
我们已经探索过将这些数据从sql server移到hadoop/hbase中,但我觉得我们所做的只是在不改变结构的情况下移动数据。我们已经将表展平并添加了更多的列,这样从sql中获取数据就不会成为问题。但是对数据进行任何类型的分析仍然需要mapreduce工作,这是一个很难设置的工作。
所以我对其他人在做什么很感兴趣。有更好的策略吗?我看到很多人喜欢在数据库级别使用触发器来记录一些更改,但我不知道这会如何影响性能。我不知道接下来该怎么办。

p8h8hvxi

p8h8hvxi1#

请看一下“microsoft cdc文档更改数据捕获”,看看您是否可以使用它而不是滚动自己的文档。还有一篇文章介绍了疾病预防控制中心的基本知识,可以作为一个概述。当然,不管你怎么做都会有开销。
如果您试图只记录来自应用程序的内容,您的方法会更好。
有些人还使用第三方工具,使用事务日志(.ldf)进行数据库更改审核。
补充
记得这篇文章,重温cdc的业绩。如果ms可以被信任,那么if应该比大多数自己推出的解决方案性能更好。当然,要证明这一点,你就必须把你自己的和比较。文章中的一个关键段落:
更改数据捕获通过异步读取源数据库的事务日志来捕获源系统中的更改。为此,更改数据捕获使用事务复制中使用的相同日志读取器。因为变更资料撷取可在现有的表格模式上运作,所以不需要变更来源资料库或应用程式来启用变更资料撷取。因为日志读取器作业是异步工作的,所以dml事务的影响远远小于触发器之类的同步解决方案。对源表的所有更改都记录在特殊的更改表中,因此不需要在源系统和目标系统之间进行更改比较。
补充
其他选择。
好吧,你可以写触发器,等等。如你所说,捕捉所有的数据变化,降低服务器速度,调试问题,等等。你可以使用第三方tranlog分析器(apex)分析日志,你可以继续你的当前路径与漏洞,或者你可以升级到企业版。没有什么能不付出代价和/或努力就神奇地让一切变得美好。
还有其他有效的方法。
请参阅类似问题的先前答案
在sql server中创建审核触发器
在SQLServer中实现审计跟踪的最佳方法

相关问题