我需要提出一个采用postgres表的例程,并将每个记录的字段中的数据与DB2表进行比较,并将不同的记录记录在postgres表中以进行报告。
当前系统遵循此模型
load postgres data into recordset prs
for each record in prs {
search for record in db2
compare record
if diff, log
}
这通常有效。问题是,看到大约有500,000条记录需要大约3个小时才会触发我们的VPN中的一个错误,导致连接中断。当然,你必须重新开始,重新设计例程比修复VPN错误更快。
我正在考虑一个例程,它将db2数据放在一个临时表中然后进行联合查询,但是我遇到了创建和删除表的安全问题。
我能想到的最现实的方法是将db2数据作为记录集加载,然后将其加载到一个哈希映射中,密钥是db id号,然后循环postgres数据,但这可能真的会淹没我的内存资源。但它更像是一种蛮力技术。你们能想到更优雅的解决方案吗?
edit-- 抱歉,该表以350万条记录开始,因此内存解决方案变得非常不切实际。任何想法?
答案 0 :(得分:1)
我要做的是将主键分区为范围,使每个作业的大小可管理(并且在触发VPN错误的时间内)。
使用这些范围打开2个记录集,每个表1个,迭代两个比较记录(有点像合并排序,但现在用于在两个源之间进行区分)。这应该比查询其他表以查找记录更快。