gpt4 book ai didi

java - java内置的缓存机制

转载 作者:行者123 更新时间:2023-12-01 12:04:16 27 4
gpt4 key购买 nike

我必须缓存 Oracle 数据库更改通知和查询结果,并使用它来更新另一个 Oracle 数据库中的另一个表。我之前的回答 question建议我使用缓存,我不确定java中是否有内置的缓存机制,或者我必须使用一些外部框架/库来实现这一点?

注意:我使用 oracle jdbc 来获取结果。

例如:如果用户通过 sql Developer 或通过命令提示符手动更新表,则生成的 change-notifications来自oracle数据库的数据应该被缓存。

最佳答案

Java JDBC API 本身没有内置缓存机制。

Oracle JDBC 驱动程序(显然)支持结果集的客户端缓存,但我不知道这有什么帮助:

  • 它缓存结果集,而不是插入和删除。

  • 它仅缓存当前客户端 JVM 完成的查询/结果集,而不缓存其他客户端 JVM ...或其他类型的客户端完成的任何操作。

  • 据我所知,没有公共(public) API 用于检查已缓存的内容,如果您要使用缓存来镜像更新,则需要它。

事实上,我认为缓 stub 本不是正确的方法。缓存的大小有限,并且会丢弃(逐出)旧条目。缓存(通常)不知道其他东西取决于条目,直到它们被镜像后才被驱逐。因此,我希望基于缓存的解决方案能够在更新发生速度快于镜像速度时释放更新。

<小时/>

我认为最好的方法是在服务器端设置 Oracle 数据库复制。有大量关于此的 Oracle 文档...但我不是专家。

使用“ha-jdbc”(或类似)的客户端复制在某些情况下可以工作。但是,所有数据库客户端都需要使用该库,而这在您的用例中是排除的。

最后,可以实现使用 Oracle 数据库更新通知的复制器。然而它看起来很复杂并且可能很昂贵。 (我希望 Oracle 的 native 复制性能更高。)

关于java - java内置的缓存机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27753100/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com