缓存应用程序的常用数据是一项非常有效的举措。 但是确保缓存的数据与您的 Oracle 数据库保持同步是一个难题。 克服这个问题的诀窍是使用数据过期来猜测项目的 TTL(生存时间),然后将其缓存。

不管这个方案多么流行,这仍然只是关于该项目在数据库中保持不变多长时间的有根据的猜测。 而且猜测并不总是准确的。 如果您的应用程序是数据敏感的,其中获取和处理不准确的数据会反驳其目的,那么使用过期将花费您很多。

使您摆脱这种困境的方法是在缓存中使用数据库同步机制,例如 NCache,如果在 Oracle 数据库中更新了相应的缓存数据,它会自动删除相应的缓存数据。

NCache 更多信息                 缓存对数据库的依赖               数据过期技术

 

运用 NCache 与 Oracle 服务器同步

Oracle Dependency 使用事件通知在数据库中的数据集发生更改时通知所有数据库客户端。 后台信息: NCache 使用此功能将自己注册为 Oracle Server 的客户端。 这意味着每当 Oracle 数据集中的数据发生变化时, NCache 会自动通知。 使用这些信息, NCache 保留所有缓存项目及其相应数据集的地图。 所以,无论何时 NCache 收到更改通知时,它会使缓存中的相应缓存项无效,并在客户端应用程序下次请求时获取更新的项。

同步-ncache-甲骨文

图:同步 NCache 与 Oracle 服务器

让我们同步 NCache 与 Oracle 服务器

我将举一个电子商务应用程序的简单示例(.NET Core 基于),其全部成功在于其准确性。 每分钟都有成千上万的客户访问该应用程序进行在线购物,因此该应用程序的数据已被缓存。

现在,让我们看一个非常常见的场景 客户A 购买了商店的最后一台 Xbox Series X。 应用服务器从数据库中删除该项目的数量,但缓存仍然不知道此更改。 这种不一致会导致客户愤怒,当 客户B 喜欢相同的产品,付款并收到付款成功消息的通知,但没有获得他最新的 Xbox Series X。

在这里,为了确保应用程序不会在主 Oracle 数据库中的每次数据更改时遇到数据完整性问题, NCache 提供支持 甲骨文依赖.

要使用此依赖项功能, NCache 允许您使用参数化您的 Oracle 查询 Oracle缓存依赖 在运行时获取参数值的方法。 这样做将减少您的查询必须在 Oracle 服务器上编译的次数,从而将应用程序的性能提高十倍。

NCache 更多信息                 缓存对 Oracle 的依赖                     设置 Oracle 环境

 

您可以使用 OracleCacheDependency 做更多事情。 下面列出了此 Oracle 依赖项支持的一些非常有用的特性。

通过 Read-Thru Provider 自动重新加载缓存项

OracleCacheDependency 负责在数据源中更改缓存项后使其失效。 NCache 提供 通读支持源提供程序 如果您希望缓存不仅失效,而且还从 Oracle 服务器获取更改项目的最新版本。 和 通读 选项已启用, NCache 呼叫 直读 提供者在 Oracle 服务器通知缓存更改时获取更新的数据。

以下代码说明了如何实现此功能:

NCache 更多信息                 缓存对 Oracle 的依赖                     通读提供程序

 

基于存储过程的 Oracle 依赖

NCache 支持 基于存储过程的 Oracle 依赖 如果您的偏好在于将所有 Oracle 查询保存在 Oracle 数据库中。 这些存储过程在 Oracle 服务器上预编译,运行速度比动态 Oracle 查询快得多。

要在 Oracle 中创建存储过程,请参见以下示例:

在您的 .NET 应用程序中调用此存储过程很容易。 使用以下代码段作为示例。

 

NCache 更多信息                 缓存对 Oracle 的依赖                     使用存储过程的 Oracle 依赖关系

为什么要同步 NCache 与 Oracle 服务器?

没有人希望他们努力工作的应用程序因为处理过时的数据而失败。 你既失去了生意,也面临着这种情况。 但 NCache很容易为您提供 Oracle Dependency,使您的缓存与您的 Oracle 数据库保持同步,以确保您使用的缓存不会让您失望。

NCache 更多信息                                下载 NCache                          版本比较