使用Oracle黄金数据库同步网格和数据库


几乎任何可用的内存数据网格(IMDG)解决方案都可以原样使用,而无需底层持久存储层。根据我的经验,当整个数据集完全位于IMDG并且根本没有同步到磁盘时,会有不同的使用情形和实际生产场景。

然而,在各种部署中,公司仍然倾向于将数据保存在内存和磁盘中。他们这样做是为了确保,如果整个IMDG群集宕机或需要重新启动,数据不会完全丢失。

下面的图1描述了使用运行的最流行的集群部署之一GridGain In-Memory Data Grid feature。应用程序或服务直接与集群通信stores data在那里,执行distributed transactionsSQL queries,sending computationsstreaming real-time数据集。但是应用程序从不更新数据库或者直接从数据库中读取数据。

Figure 1.

图1

GridGain引擎负责通过将内存中的所有更新同步到磁盘来确保数据库始终是最新的。如果缺少键值,GridGain有责任将缺少的键值从数据库预加载到内存中。多亏了GridGainCache Store机制,这种功能开箱即用,使得与流行数据库如甲骨文、MySQL或PostgreSQL的集成变得微不足道。

多种来源的数据库修改

如果这种类型的部署适用于所有业务案例,上面显示的配置将是完美的。但是,如何处理数据库被GridGain集群和其他直接与数据库交互的应用程序更新的情况,类似于下面图2所示的情况?如何保证陈旧数据不会长时间驻留在GridGain集群中,并且在数据库从其他应用程序接收到更新时会立即更新?

Figure 2.

图2

一个简单的解决方法是将应用2直接连接到GridGain集群,而不是数据库。然而,由于历史原因,这在一些组织中可能是不可能的。在其他情况下,应用程序可能会逐步迁移到内存中的数据网格解决方案,这意味着一些应用程序可能已经在GridGain上工作,而其他应用程序则直接与数据库集成。

另一个可行的解决方案是在GridGain集群端实现定制逻辑。该逻辑可以定期检查数据库,获取最近发生的所有更新,并将它们存储在集群端的内存中。虽然这是一个现实的解决方案,但它需要大量的工程工作,因为要确保只从数据库中检索更新的增量,并且增量以事务方式应用于GridGain集群。

还有其他选择吗?有没有任何替代方案允许构建类似于图2所示的架构?他们必须保证只要数据库被另一个源修改,GridGain集群就会被更新。答案是肯定的!让我们看看如何Oracle GoldenGate可以帮助我们。

同步网格主内存计算集群和数据库

随着Oracle GoldenGate,图2转化为下面的图3。

Figure 3

图3

作为先知says,Oracle GoldenGate是一个全面的软件包,用于异构IT环境中的实时数据集成和复制。该产品集支持高可用性解决方案、实时数据集成、事务性变更数据捕获、数据复制、转换以及运营和分析企业系统之间的验证。”

毫无疑问,甲骨文的说法是正确的,GridGain提供了与这个软件包的集成,确保像图3中这样的部署可以很容易地实现。

谷歌企业版Oracle GoldenGate Integration提供了一个实时集成和复制GoldenGate兼容数据库和GridGain集群的解决方案。当配置了黄金状态集成复制时,GridGain将自动从已配置的黄金状态源数据库接收更新,并将更新存储在GridGain端,如上图3所示。

此外,甲骨文公司不会将您锁定在甲骨文数据库中。您可以自由使用以下数据库之一supported通过这个软件包。在支持的数据库中,您可以找到MySQL、微软SQL Server、IBM DB2等等。

我不打算在这篇博客文章中讨论技术细节,这篇文章详细阐述了如何使用Oracle GoldenGate建立一个GridGain集群。这已经完美地完成了this technical documentation section。所以,继续尝试吧!你会看到这种整合是如何极大地简化你的生活的。