有一个独立的层来访问数据库

时间:2017-12-17 03:41:45

标签: java oracle hibernate

如果我有多个应用程序,每个应用程序通过直接JDBC调用或通过Hibernate访问自己的数据库,是否有另一层对象从应用程序读取请求,如果在此层中找到则返回结果,如果找不到则,转到数据库检索它,就像一个缓存?这个新层还从应用程序获取写入请求并相应地更新DB,然后更新自己的缓存。感谢

1 个答案:

答案 0 :(得分:0)

理论上,Oracle数据库通过数据库链接相互通信。假设您创建一个新数据库(或一个现有模式中的模式,然后由所有应用程序使用)。

为了从所有这些数据中收集数据,您需要创建前面提到的数据库链接并创建从不同来源选择数据的视图。这些视图将使用UNION(ALL)集合运算符。请注意,如果访问大型数据集,则数据库链接上的视图可能会变慢。

或者,您可以创建实体化视图并按需或按计划刷新它们。

优点和缺点:如果您使用视图,您可以读取(慢?)并写入数据(通过而不是触发器)。如果您使用物化视图(MV),您可以阅读(快速,因为MV可以被编入索引),但您无法写入它们,因为下次刷新将使这些更改消失。

另一方面,如果那个新的"层" (正如你所说)没有合并来自不同数据库的数据,但是以1个现有数据库= 1个新图层的方式使用,然后我看不到任何好处那。在这种情况下,您可能应该注意现有数据库中的性能调整(索引表,定期收集统计数据等)。