如何使用Pivotal GemFire处理来自外部独立数据源的数据?

时间:2018-01-30 13:26:54

标签: gemfire spring-data-gemfire

我是GemFire的新手。

目前我们正在使用MySQL数据库,并希望转移到GemFire。

如何将存储在MySQL中的现有数据移到GemFire上?即,有没有办法将现有的MySQL数据导入GemFire?

1 个答案:

答案 0 :(得分:0)

有许多不同的选项可供您将数据从1个数据存储(例如像MySQL这样的RDBMS)迁移到IMDG(例如Pivotal GemFire)。 Pivotal GemFire没有为此目的提供任何tools OOTB。

但是,你可以......

A)编写一个Spring Batch应用程序,将所有数据从MySQL迁移到Pivotal GemFire。这是大多数大规模转换过程的典型过程,从1个数据存储转换为另一个,作为升级或迁移的一部分。

使用Pivotal GemFire作为目标数据存储的优势在于它存储了Java Objects。因此,如果您使用ORM工具(例如Hibernate)将存储在MySQL数据库表中的数据映射回应用程序域对象,则可以立即转发并将这些相同的对象直接存储到相应的{ {3}}在Pivotal GemFire中。将Object存储到GemFire中不需要额外的映射。

虽然,如果你需要不那么直接的东西,那么你也可以......

B)利用Pivotal GemFire的Region,甚至是CacheLoader机制。 CacheLoaderCacheWriter是“ Read-Through ”和“ Write-Through ”设计模式的实现。

可以找到此方法的更多详细信息CacheWriter

简而言之,您实现了CacheLoader以从Cache miss上的某些外部数据源加载数据。在创建CacheLoader时,您附加或here Region使用GemFire Region。当请求密钥(可以对应于您的MySQL表主键)(Region.get(key))且条目不存在时,GemFire将咨询CacheLoader以解析该值,前提是您实际注册了CacheLoader的{​​{1}}。

通过这种方式,您可以根据需要从MySQL RDBMS中慢慢构建Pivotal GemFire。

显然,Pivotal GemFire很可能无法将“RDBMS”中的所有数据存储在“内存”中。因此,您可以启用register [到磁盘]功能。通过启用持久性,GemFire将在下次节点联机时从其自己的Region加载数据,假设您之前已将其关闭。

DiskStores机制很好,如果你想同时运行Pivotal GemFire和MySQL,直到你可以将MySQL的足够责任转移到GemFire上。每次在GemFire CacheWriter中写入或更新条目时,CacheWriter都会写回基础MySQL数据库。您甚至可以使用GemFire的Region和监听器异步(即“后写”)进行此操作;见Persistence and Overflow

显然,您有很多选择。您需要仔细选择您的选项,并选择最符合您的应用要求和需求的方法。

如果您还有其他问题,请与我们联系。