我正在寻找Java Web应用程序的缓存解决方案。我们有一个Oracle数据库实例和2-3个远离我们数据库的实例。 我们希望将数据本地缓存到我们的应用程序,因为我们无法接受数据库响应时间。 我们的数据集的平均大小(每个表格有几千行),并且从我们的应用程序(无直接db访问)手动修改(所以不是很经常)。需要Java缓存解决方案
所以我们一直在想的是一个解决方案,它允许我们获得所有本地需要的数据。我们希望减少从数据库中检索的数据量并重写到缓存。例如,当一个实体被修改时,我们不希望使该表上的所有缓存查询无效,我们宁愿希望能够修改本地缓存查询结果集,因此查询仍然可以从本地运行缓存的数据。 缓存必须复制其更改\从数据库中检索由其他应用程序实例修改的数据。
我们一直在寻找EhCache作为Hibernate二级缓存,但它会使任何表修改上给定表的所有缓存查询无效。我快速浏览了Hibernate Services,但不知道它是否允许我们重写hibernate的二级缓存默认行为以满足我们的需求。
我们可以使用其他解决方案吗?
编辑我们想要非常快速地访问数据。有效地,我们正在寻找的是一个可以缓存的缓存。
为什么不创建一个本地数据库并将其复制到远程?它将避免除连接字符串之外的任何代码更改,提供更高的速度并确保与远程数据库的数据一致性。 –
您是否为每个应用程序实例建议一个数据库实例?对我来说似乎是一个很大的设置开销。 –
否 - 在本地服务器/虚拟机上运行数据库的完整副本,然后将其复制到远程 - 以主/从关系。 –