我们有一个命令和控制系统,可以将历史数据保存在数据库中。我们希望使系统独立于数据库。因此,如果数据库存在,那么我们将在那里保留数据,如果不存在,我们将对文件和内存进行一些备份存储,直到数据库恢复为止。命令和控制功能必须能够不受数据库丢失或恢复的影响而继续;它甚至不应该知道数据库存在。因此,数据库和DAO功能需要与应用程序的其余部分分离。
我们正在使用RESTful服务调用,Spring框架,ActiveMQ,JDBCTemplate和SQL Server数据库。目前遵循使用Hikari数据源和JTDS驱动程序的标准连接实践。问题是如果数据库出现故障或数据库连接丢失,我们就会开始出现数据问题,因为太多的服务调用(主要是getter)仍然过于依赖数据库存在进行处理。这种依赖性是我们想要消除的。
将数据库与应用程序完全分离的最佳实践/技术是什么?我们正在考虑使用AMQ来广播数据更新,让DAO监听这些消息,然后对数据库进行更新(如果可用)或平面文件作为备份。然后,对于getter,根据实际数据库或短期备份中可用的内容提供回复。
我的团队几乎没有这方面的经验,我们想知道别人做了哪些工作做得很好。