【发布时间】:2012-02-28 04:26:50
【问题描述】:
需要跟踪对数据库中对象所做的更改。
简单的实现是让镜像表通过触发器将记录插入其中,无论是在数据库内部还是在应用程序内部,但这会影响性能,并且随着时间的推移,镜像数据库会变得庞大,并且当必须更改原始表时,基本上会使维护时间加倍(镜像表需要反映这种变化)。
由于我最大的要求是对数据库和应用程序性能的影响最小,我目前的偏好是将更改转储到 syslog-ng 中而不是 udp 并将它们存储在纯文本文件中。
毕竟变更日志不会被频繁访问,因此随着时间的推移将其存档也是可以的。但显然,通过这样的设置,实际访问该数据是相当棘手的。
所以我想我的问题是 - 是否已经有一个系统至少可以部分满足我的需求?完美契合将是 UDP 访问的无模式仅附加数据库系统,可以自动存档数据(或至少需要执行此操作的最少配置量)或插入性能的非常缓慢的下降。 MongoDB?沙发数据库?你的数据库?
【问题讨论】:
-
保存为序列化对象或 json 的更改数组(增量更新),您也可以在其中进行数组合并以查看当前合并的更改。
-
是的,这就是我打算做的,问题是要使用什么存储,所以它很容易维护和时间切片。
-
如果问题是存储,您可以将它存储在任何地方,文件、数据库上的字段或持久缓存。这是你的电话。