预先计算的JOIN查询作为点火中的映射



我是新来的点火和POCing。我有一个关于如何在地图中存储/加载数据的问题。这是一个有点棘手和奇怪的要求。示例:

我有员工、部门、项目[数据库中的表]+[应用程序中的实体类]。但我不想将其中的每一个存储在内存中的单独映射中,而是希望将预先计算的联接结果存储在指定的映射中。

动态查询:从Employee,Department,Project where$JOIN 中选择employeeId,employeeName,departmentName,projectName,projectStart,projectEnd

我至少之前就知道,什么是关键字段,什么是价值字段。从上面的例子中,我可以表示我的"地图",如下所示,

密钥:Set(employeeId,departmentId)值:列表(employeeName,Value),(departmentName,Value

所以你可以看到,对于每一对(employeeId,departmentId),我都会有多个值与之相关。但困境是,我手头没有域模型/实体pojo。这样的动态视图/映射可以灵活添加,这样我们就不必每次都更改域/实体模型我们不希望每次调用都为数千个这样的客户端请求进行联接/计算

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

在基于键从这样的映射中检索值时,是否存在任何性能问题?我应该注意什么内存优化?

谢谢,Dharam

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

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

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

最新更新