mysql - 什么是存储对象更改历史的好解决方案?

标签 mysql mongodb hive nosql

需要跟踪对数据库中对象所做的更改。

简单的实现是让镜像表通过触发器将记录插入其中,无论是在数据库内部还是在应用程序内部,但这会影响性能,并且随着时间的推移,镜像数据库会变得庞大,并且当必须更改原始表时,维护时间基本上会加倍(镜像表需要反射(reflect)这种变化)。

由于我最大的要求是对数据库和应用程序性能的影响最小,我目前的偏好是将更改转储到 syslog-ng 中而不是 udp 并将它们存储在纯文本文件中。

毕竟变更日志不会被频繁访问,因此随着时间的推移将其存档也是可以的。但显然,通过这样的设置,实际访问该数据是相当棘手的。

所以我想我的问题是 - 是否已经有一个系统至少可以部分满足我的需求?完美契合将是 UDP 访问的无模式仅附加数据库系统,可以自动存档数据(或至少需要执行此操作的最少配置量)或插入性能的非常缓慢的下降。 MongoDB?沙发数据库?你的数据库?

最佳答案

嗯,有很多方法可以解决这个问题。我最熟悉 MongoDB,所以会倾向于那个方向。一般来说,我认为它会满足您对性能的需求,并且使用副本集,从从属设备上读取可能是采用的方法。但是,版本控制不是内置的。您可以在此处查看使用 Mongoid::Versioning 进行版本控制的一种方法:

Mongoid::Versioning - how to check previous versions?

你提到的其他解决方案可能有更好的原生支持,但我不能说。希望这至少能给你一些关于 MongoDB 方面的指导。

关于mysql - 什么是存储对象更改历史的好解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9164471/

相关文章:

mysql - Rails 创建 mysql View 或虚拟表

mongodb - 未检测到设置的主节点 [Mongo shell]

hadoop - Hive JDBC Mapreduce

mongodb - 在 ObjectId 字段上的两个集合之间进行 $lookup 查询

node.js - Mongoose.js 忽略子文档架构中的默认值

hadoop - 在 Hadoop Hive 中计数

BASH 脚本中的 SQL 查询

php - 无法将 lang 类型的对象用作数组

MySQL使用命令提示符时不需要密码

php - 我想在我的网站上添加交互式日历