回答

收藏

有效识别差异

技术问答 技术问答 229 人阅读 | 0 人回复 | 2023-09-14

每天,我们都会收到来自不同供应商的不同格式(CSV,XML,自定义)的巨大文件,需要将其上传到数据库中进行进一步处理。
% U* I7 a, m) d0 C3 P) ?) e0 }问题是,这些供应商将发送其数据的完整存储,而不仅仅是更新。在某些应用程序中,我们只需要发送更新(即只更改记录)。目前,我们需要做的是将数据加载到临时表中,然后将其与以前的数据进行比较。这很慢,因为数据集非常大,有时我们缺乏它SLA。9 {3 r- {5 T8 S+ B
有没有更快的方法来解决这个问题?非常感谢任何建议或帮助。我们的程序员用尽了所有的想法。" G) W3 S7 Y0 V& H. F
                                                                7 u4 u4 i& c$ Z8 Q& _' m- v
    解决方案:                                                                1 U# J3 q5 U! |/ K/ \7 }0 L0 a
                                                                在完整的转储数据集中,有多种模式可录、新记录和删除记录。8 g/ u0 i& H6 q8 S1 }- U, \
我看到的一个更有效的方法是为现有的数据银行创建哈希值,在数据库中创建导入的哈希值,然后将现有的哈希值与输入的哈希值进行比较。, t6 E5 f# ?. ]/ F: s  _
主键匹配 哈希匹配=不变的行
: R" X. I8 e& a1 ?, a主要匹配 哈希不匹配=更新的行! X; G/ e; l- p4 a0 W" W
主键进入数据,但现有数据集中缺少主键=新行+ d' o, E6 B  w  H
主键不在输入数据中,而在现有数据中=已删除的行; U5 d: v7 Q& \1 B2 E
哈希的方式因数据库产品而异,但在所有主要提供程序中都有一些可用的哈希。7 q- Q. l1 R  I& b8 R/ S+ w
优点是只需要比较少量的字段(主键列和哈希),而不需要通过字段分析来比较一个字段。即使是长哈希也能快速分析。
  f8 E, f- k: L4 n" Y8 g+ i" Y导入处理需要一些返工,但需要时间一次又一次地提高处理速度。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则