我正在使用https://apacheignite-mix.readme.io/v1.7/docs/automatic-persistence将数据从数据库加载到 Ignite 缓存中。
我使用 Ignite 客户端模式运行代码,并希望将数据加载到 Ignite 集群中。
看起来我必须将我的用户代码 jar 和依赖 jar 放入 $IGNITE_HOME/libs 才能使我的代码工作?
我想问:
- 将这些 jar 放入 $IGNITE_HOME/libs 以使我的代码正常工作是否正确?
- 如果我必须将 jar 放入 $IGNITE_HOME/libs 中,看起来如果在将一些表加载到缓存后需要加载更多表,我是否必须关闭集群并重新启动服务器加载这些新类?如果是这样,那么缓存中的数据会丢失,因为它们驻留在内存中,并且必须重新加载?
最佳答案
有两种方式加载数据,通过IgniteDataStreamer
和通过CacheStore
实现。详情请参阅此页:https://apacheignite.readme.io/docs/data-loading
如果使用 IgniteDataStreamer
,您将从客户端的数据库加载数据并将其流式传输到集群中。在这种情况下,您不需要向服务器类路径添加任何类。
如果使用CacheStore
,您将从服务器端的数据库加载数据。在这种情况下,您需要显式部署(添加到 libs
文件夹)CacheStore
的实现及其依赖的任何内容。如果您使用Automatic Persistence ,实现已经存在,也无需部署。
您永远不需要在服务器类路径上拥有模型类,并且可以动态更改架构而无需重新启动集群。请参阅此页面了解更多信息:https://apacheignite.readme.io/docs/binary-marshaller
关于客户端模式下的 Ignite 和 RDMS 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41235588/