问题描述
我们大多数人可能习惯于将修订历史记录存储在最终数据所在的同一数据库中。这会造成可维护性和可能的稳定性问题:
- 修订历史记录是一个相当复杂的系统。如果有很多API,则需要分别在每个API中重新实现。如果发现了错误,则需要在每个API中分别对其进行修复。
- 在大多数情况下,修订历史记录不是主要的用例,而是导致数据库磁盘空间和内存使用的主要因素,因此,我们在API数据库中填充了大量具有相对较小值的数据。 / li>
假设我们有一个Revision API,用于处理修订,其他服务仅存储最终状态,也可能存储修订UUID。
此解决方案也有缺点:
- 获取修订历史记录需要往返另一项服务。
- 如果所谓的“修订API”遇到技术问题,则所有服务都无法使用其修订历史。
- 要使修订历史与现实保持同步更加困难,因为我们可能不希望仅仅因为修订API中断而拒绝CRUD请求。例如,我们可能仍想让用户保存其更改。否则,我们会将影响范围扩展到更广泛的功能。
在我们的案例中,修订历史记录由内部员工而非最终客户使用。当然,应用程序应该对所有人都可以无缝地工作,但是我们仍在将不太关键但资源非常匮乏的功能与关键功能结合在一起,必须保证正常运行时间非常长。
您对集中式修订历史有何看法?这是应该不惜一切代价避免的事情,还是已经被实际使用案例充分证明?我可以看到,许多大型公司都有用于修订历史记录的单独的API,但是我不确定它们是否实际上将数据存储在单独的数据库中,还是只是将Revision API用作网关服务。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)