背景
业务逻辑为近百万数据对比,根据主键对比,若有变化则变更数据,无变化则不对数据库中的数据做处理。
处理逻辑
api获取的数据存与数据库中的数据都存在主键,可以将两份数据用主键(例如同一个数据中心的,同一个应用的)分割成组,具有相同主键的组进行对比,且大致有多少组数据可以启用多少个线程对比,如此便可将对比数据量级降低,提高处理效率。
代码示例
下面展示一些 内联代码片
。
Map<String, List<RiskDetail>> newInfoList = riskInstanceList.stream().collect(Collectors.groupingBy(newData -> newData.getRegion() + "-" + newData.getAppCode()));
Map<String, List<RiskDetail>> oldInfoList = riskInfoByProduct.stream().collect(Collectors.groupingBy(oldData -> oldData.getRegion()+"-"+oldData.getAppCode() ));
for(String key:newInfoList.keySet()){
................
}