如果geode有部分数据而其他数据存在于外部数据源中,我如何从apache geode获取完整数据
How can i get complete data from apache geode if geode is having partial data and other data is present in external datasource
我有一个 apache geode 设置。我已将 geode 与 postgres 的外部数据源连接起来。有一种情况,我在 apache geode 中几乎没有数据,其余的都在 postgres 中。我正在使用查询服务来获取数据,当我触发查询时,我希望 apache geode 应该向我提供其服务器中存在的数据以及来自 postgres 的数据(对于 apache geode 中不存在的数据)。我该如何处理?
我加载了我的缓存,如果 Apache Geode 中不存在,它会加载数据。
'''
@服务
public class QuoteLoader 实现 CacheLoader {
private static Logger logger = LoggerFactory.getLogger(QuoteLoader.class);
@Autowired
EmployeeImpl employeeImpl;
@Autowired
EmployeeRepository employeeRepository;
public QuoteLoader() {
}
@Override
public void init(Properties props) {
}
@Override
public void close() {
}
@Override
public Employee load(LoaderHelper<String, Employee> helper) throws CacheLoaderException {
Employee value = null;
try {
value = employeeImpl.getEmployeeById(Long.valueOf(helper.getKey()));
} catch (Exception e) {
e.printStackTrace();
logger.error("Error Occured", e);
}
return value;
}
}
'''
查询引擎只执行 OQL
和 return 结果,在查询执行期间不会调用任何 CacheLoader
。 CacheLoader
仅在执行 Region.get(key)
操作时出现缓存未命中时才会调用。
如果你仔细想想,这完全有道理......查询是一个任意字符串,可以 return 任何结果(包括 none),所以查询引擎不能如果 Geode 区域中不存在实际条目,则知道该条目是否应该是结果的一部分。
我有一个 apache geode 设置。我已将 geode 与 postgres 的外部数据源连接起来。有一种情况,我在 apache geode 中几乎没有数据,其余的都在 postgres 中。我正在使用查询服务来获取数据,当我触发查询时,我希望 apache geode 应该向我提供其服务器中存在的数据以及来自 postgres 的数据(对于 apache geode 中不存在的数据)。我该如何处理?
我加载了我的缓存,如果 Apache Geode 中不存在,它会加载数据。
'''
@服务
public class QuoteLoader 实现 CacheLoader
private static Logger logger = LoggerFactory.getLogger(QuoteLoader.class);
@Autowired
EmployeeImpl employeeImpl;
@Autowired
EmployeeRepository employeeRepository;
public QuoteLoader() {
}
@Override
public void init(Properties props) {
}
@Override
public void close() {
}
@Override
public Employee load(LoaderHelper<String, Employee> helper) throws CacheLoaderException {
Employee value = null;
try {
value = employeeImpl.getEmployeeById(Long.valueOf(helper.getKey()));
} catch (Exception e) {
e.printStackTrace();
logger.error("Error Occured", e);
}
return value;
}
} '''
查询引擎只执行 OQL
和 return 结果,在查询执行期间不会调用任何 CacheLoader
。 CacheLoader
仅在执行 Region.get(key)
操作时出现缓存未命中时才会调用。
如果你仔细想想,这完全有道理......查询是一个任意字符串,可以 return 任何结果(包括 none),所以查询引擎不能如果 Geode 区域中不存在实际条目,则知道该条目是否应该是结果的一部分。