如何在Apache Ignite中按需缓存Posgres表作为第三方持久性?

时间:2018-12-18 23:45:26

标签: postgresql apache-spark apache-spark-sql ignite

我一直在阅读有关Apache Ignite的3rd Party Store的文档:https://apacheignite.readme.io/v2.7/docs/3rd-party-store#section-manual

但是我仍然有一些疑问:

  1. 是否可以将Postgresql表缓存到已经启动的Ignite实例中?可以使用Ignite客户端吗?
  2. 如果在Postgresql表中插入了新行,是否会自动刷新Ignite缓存?
  3. 一旦将Postgresql表缓存在Ignite中,是否可以使用带有Ignite数据源的Spark数据帧读取此缓存的数据?

1 个答案:

答案 0 :(得分:1)

  1. 假设您有一个正在运行的Ignite服务器节点。您可以在指定cacheStoreFactory的情况下启动新的缓存,然后在其上运行IgniteCache#loadCache(...)。可以从客户端节点完成此操作,但是所有节点的类路径上都应具有工厂类。

  2. 不会自动从基础数据库插入新数据。但是,如果启用了read-through模式,则会根据需要从数据库中请求Ignite缓存中不存在的数据。

  3. 为了使Spark DataFrame读取数据,应在Ignite中创建相应的SQL表。 QueryEntitiesindexed types应该在Ignite中配置为缓存的数据。参见https://apacheignite-sql.readme.io/docs/schema-and-indexeshttps://apacheignite-fs.readme.io/docs/ignite-data-frame#section-reading-dataframes