如果数据库关闭,我需要确保进入服务(Java应用程序)并且需要进入数据库的数据不会丢失。我应该使用正确的API来执行此操作吗?我应该将数据保存到文件中并稍后重新读取吗?
答案 0 :(得分:2)
最好的解决方案是确保数据库不会出现故障;例如运行热备用。典型的数据库系统对此类事物有现成的支持。这只是站起来更多的数据库副本并配置客户端来使用它们。
保存到文件的问题是你现在要维护两组持久性代码,还有一堆复杂的自定义代码来处理检测数据库是否脱机,切换到文件,检测到数据库又回来了,并将保存的数据重播到数据库中。
如果丢失了保存到文件中的内容,还必须考虑会发生什么;例如因为基于文件的持久性和恢复代码的错误/测试不充分。
使用具有持久队列的排队系统的想法值得关注。但是,您需要注意排队系统也可能会崩溃......这会为整个系统增加另一个潜在的故障点。此外,持久性队列需要本地磁盘空间,如果填满(因为下游数据库长时间停机),您就回到了开始的位置。