首页 > 解决方案 > 在运行时将数据加载到 hazelcast

问题描述

我在我的应用程序中使用 hazelcast IMDG。

我正在一步一步地做三个不同的步骤:

步骤1

当我启动应用程序时,我将表数据加载到 hazelcast IMap 中。

加载后:-

第2步

我正在使用 Hazelcast SqlPredicate 过滤一些数据。

String sql="this.age <= 30
SqlPredicate predicateForObjs = new SqlPredicate(sql);
Collection<HazelcastJsonValue> filterResult = dataEntity.values(predicateForObjs);

步骤:- 3

我再次将过滤后的结果加载到另一个地图中以进行排序操作。

IMap<Integer, HazelcastJsonValue> sortMap= hazelCast.getMap("data");

int i=0;
for(HazelcastJsonValue hjv : filterResult ){
sortMap.put(i,hjv);
i++;

}

Comparator<Entry<Integer, HazelcastJsonValue>> descendingComparator = new DescendingIdComparator();
PagingPredicate pagingPredicate = Predicates.pagingPredicate(descendingComparator, sortMap.size());
Collection<HazelcastJsonValue> values = map.values(pagingPredicate);

为了进行排序操作,我在运行时加载过滤结果。

我看过很多文章说在运行时将数据加载到缓存中不好,还会降低性能。

任何人都可以建议差异方法。?

我使用正确的方法吗?

标签: javahazelcast

解决方案


考虑使用 Hazelcast Jet 作业进行数据摄取。Jet 作业可以连接到数据源,在将数据写入IMap之前对其进行过滤排序。

您可以启动一个独立的 Jet 集群来运行作业,以减轻 Hazelcast IMDG 数据集群的压力。


推荐阅读