java 中的内置缓存机制
inbuilt cache mechanism in java
我必须缓存 oracle 数据库更改通知和查询结果,并使用它来更新另一个 oracle 数据库中的另一个 table。我之前 的回答建议我使用缓存,我不确定 java 中是否有内置缓存机制,或者我必须使用一些外部 framework/library 来实现这个?
注意:我正在使用 oracle jdbc 来获取结果。
例如:如果用户通过 sql 开发人员或命令提示符手动更新 table,则应缓存来自 oracle 数据库的结果 change-notifications。
JavaJDBCAPI本身没有内置缓存机制。
Oracle JDBC 驱动程序(显然)支持结果集的客户端缓存,但我看不出这有什么帮助:
它缓存结果集,而不是插入和删除。
它只缓存当前客户端 JVM 完成的查询/结果集,而不缓存其他客户端 JVM 完成的任何内容...或其他类型的客户端。
AFAIK,没有 public API 用于检查已缓存的内容,如果您要使用缓存进行镜像更新,则需要它。
事实上,我认为缓存根本不是正确的方法。缓存的大小有限,并丢弃(逐出)旧条目。缓存(通常)不知道其他事情取决于条目在被镜像之前不会被驱逐。因此,我希望基于缓存的解决方案能够在更新发生速度快于镜像速度时丢失更新。
我认为最好的方法是在服务器端设置 Oracle 数据库复制。有大量关于此的 Oracle 文档......我不是专家。
使用 "ha-jdbc"(或类似)的客户端复制在某些情况下会起作用。但是,所有数据库客户端都需要使用该库,这在您的用例中被排除了。
最后,有可能实现一个使用 Oracle 数据库更新通知的复制器。然而,它看起来很复杂并且可能很昂贵。 (我希望 Oracle 的本机复制性能更高。)
我必须缓存 oracle 数据库更改通知和查询结果,并使用它来更新另一个 oracle 数据库中的另一个 table。我之前
注意:我正在使用 oracle jdbc 来获取结果。
例如:如果用户通过 sql 开发人员或命令提示符手动更新 table,则应缓存来自 oracle 数据库的结果 change-notifications。
JavaJDBCAPI本身没有内置缓存机制。
Oracle JDBC 驱动程序(显然)支持结果集的客户端缓存,但我看不出这有什么帮助:
它缓存结果集,而不是插入和删除。
它只缓存当前客户端 JVM 完成的查询/结果集,而不缓存其他客户端 JVM 完成的任何内容...或其他类型的客户端。
AFAIK,没有 public API 用于检查已缓存的内容,如果您要使用缓存进行镜像更新,则需要它。
事实上,我认为缓存根本不是正确的方法。缓存的大小有限,并丢弃(逐出)旧条目。缓存(通常)不知道其他事情取决于条目在被镜像之前不会被驱逐。因此,我希望基于缓存的解决方案能够在更新发生速度快于镜像速度时丢失更新。
我认为最好的方法是在服务器端设置 Oracle 数据库复制。有大量关于此的 Oracle 文档......我不是专家。
使用 "ha-jdbc"(或类似)的客户端复制在某些情况下会起作用。但是,所有数据库客户端都需要使用该库,这在您的用例中被排除了。
最后,有可能实现一个使用 Oracle 数据库更新通知的复制器。然而,它看起来很复杂并且可能很昂贵。 (我希望 Oracle 的本机复制性能更高。)