我是GemFire的新手。
目前我们正在使用MySQL数据库,并希望转移到GemFire。
如何将存储在MySQL中的现有数据移到GemFire上?即,有没有办法将现有的MySQL数据导入GemFire?
答案 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
机制。 CacheLoader
和CacheWriter
是“ 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。
显然,您有很多选择。您需要仔细选择您的选项,并选择最符合您的应用要求和需求的方法。
如果您还有其他问题,请与我们联系。