预先计算的JOIN查询作为地图点燃

时间:2016-05-28 14:42:25

标签: ignite

我现在很想点燃和POCing。 我有一个关于在地图中存储/加载数据的方法的问题。这有点棘手和奇怪的要求。 例如:

  

我有员工,部门,项目[数据库中的表] + [应用程序中的实体类]。   但我不想将这些内容存储在内存中的单独地图中,而是希望将预先计算的连接结果存储在指定的地图中。

动态查询:从员工,部门,项目中选择employeeId,employeeName,departmentName,projectName,projectStart,projectEnd $ JOIN

我至少在手边知道,什么是关键字段和什么是值字段。从上面的例子中,我可以表示我的" Map"如下图所示,

键:设置(employeeId,departmentId) 值:List(employeeName,value),(departmentName,value),(projectName,value),(projectStart,value),(projectEnd,value)

所以你可以看到每一对(employeeId,departmentId)我会有多个值与之关联。但困境是我手头没有领域模型/实体pojos。可以灵活地添加这样的动态视图/地图,这样我们就不必每次都去改变域/实体模型。 我们不希望每次呼叫时都有数千个此类客户请求进行加入/计算。

是否可以使用MapLoader或任何其他方式触发此类连接查询? 我可以将Map(Key = Set,Value = List)视为存储最终结果的数据结构。还有其他更好的选择吗?

根据密钥从此类地图中检索值时是否存在任何性能问题? 我应该注意哪些内存优化?

谢谢, Dharam

1 个答案:

答案 0 :(得分:1)

您不需要使用SQL查询。将Ignite用作数据库查询结果的简单缓存机制是很好的。每次执行查询时,将结果保存在IgniteCache中,然后使用此缓存的结果是请求相同的查询。您还可以使用到期[1]和/或驱逐[2]来确保缓存中没有太多数据并且内存不足。

[1] https://apacheignite.readme.io/docs/expiry-policies

[2] https://apacheignite.readme.io/docs/evictions

相关问题