ApacheIgnite缓存到SQL,反之亦然

ApacheIgnite缓存到SQL,反之亦然,ignite,Ignite,我正在开发一个系统,该系统将从服务获取数据,并将响应片段放入缓存和/或SQL表中 其他Java服务直接使用缓存是必需的。这些服务需要比SQL抽象更直接的连接,因此我们需要直接连接到缓存 JDBC SQL连接到外部SQL客户机(例如SQL Workbench、DBeaver、Tableau、第三方系统)需要该表 我的问题是Ignite如何处理缓存和表。我知道它将缓存存储为类似于其他IMDG的地图。我想我不明白的是它是如何变成一个表的,或者有什么API可以在两者之间设置/获取 所以问题是,如何从JD

我正在开发一个系统,该系统将从服务获取数据,并将响应片段放入缓存和/或SQL表中

其他Java服务直接使用缓存是必需的。这些服务需要比SQL抽象更直接的连接,因此我们需要直接连接到缓存

JDBC SQL连接到外部SQL客户机(例如SQL Workbench、DBeaver、Tableau、第三方系统)需要该表

我的问题是Ignite如何处理缓存和表。我知道它将缓存存储为类似于其他IMDG的地图。我想我不明白的是它是如何变成一个表的,或者有什么API可以在两者之间设置/获取

所以问题是,如何从JDBC/SQL端获取
INSERT
,并通过缓存进行查询?我怎样才能
add()
到缓存中并
从JDBC/SQL端选择它?
如果我有一个名为“foo”的表,这是否也会创建一个名为“foo”的缓存

或者我应该使用其中一种,而不是在两者之间流血?我还没有找到很多这样的好例子,所以你要么使用缓存,要么使用表

在两者之间架起一座桥梁将极为有利。我们正在从H2实现迁移到Ignite,在H2实现中,我们将Hazelcast缓存和H2的SQL混合在一起,希望构建在H2之上的Ignite已经做了类似的事情


特别是,我希望使用它,但我没有发现它与SQL/表方面的关系。

Ignite cache属于nosql数据库的键值类型。您可以从java代码中启动类似SQL的查询,以点燃缓存,因为它支持缓存。比如说,

SELECT _KEY, _VAL from "foo".val 
这里,foo是缓存名称,val是键值对的值部分。由于这都是NOSQL,所以将其与RDBMS SQL关联不是很合理,但我们仍然可以将SQL表中的所有非主列与值对象的字段关联,将主列与关键部分关联。
因此,在datastreamer中,您可以构造键、值对象的集合并对其进行流式处理。这在内部只调用缓存上的put操作。
要在SQLFashon中进行选择,可以按如下方式启动查询-

SqlFieldsQuery query = new SqlFieldsQuery(queryString);
FieldsQueryCursor<List<?>> cursor = cache.query(query);   
SqlFieldsQuery query=newsqlfieldsquery(queryString);

FieldsQueryCursor这已经被回答了好几次了,基本上你需要参考或者让它工作。也就是说,缓存中正确类型的每个条目都将是表的一行,反之亦然。

谢谢。我走这条路的一部分。当使用
缓存时,我不完全确定如何引用键。当键是复合键(
主键(foo,bar)
)时,获取(??)
),但我认为这不是什么大问题,因为我需要迭代每个对象,而且它看起来像
VisitorStreamer
可以实现这一点,而无需提前知道键。我提出了另一个与在缓存端查询它相关的问题,但没有看到结果,但我不确定它是否与上面的问题相关:仅供参考,您通过创建一个表示将其作为键传递的POJO来引用复合键。因此,
主键(id,name)
将是一个具有
长id
字符串名
(加上getter/setter,如果您愿意的话),并且您会说
cache.get(新的PrimaryKeyThing(123L,“bob”)