【发布时间】:2019-02-15 21:22:15
【问题描述】:
每天,我们都会收到来自不同供应商的不同格式(CSV、XML、自定义)的大量文件,我们需要将这些文件上传到数据库中进行进一步处理。
问题在于,这些供应商将发送其数据的完整转储,而不仅仅是更新。我们有一些应用程序只需要发送更新(即只发送更改的记录)。我们目前所做的是将数据加载到临时表中,然后将其与以前的数据进行比较。由于数据集很大,而且我们偶尔会丢失 SLA,因此这非常慢。
有没有更快的方法来解决这个问题?非常感谢任何建议或帮助。我们的程序员已经没有想法了..
【问题讨论】:
-
您使用的是什么数据库?是将数据上传到临时表或进行比较以移动到常规表的缓慢部分?“巨大”有多大?合并了多少条记录?
-
数据库是 MariaDB。通常包含近 700 万条记录,并且随着更多数据的进入而每天增加
-
最慢的部分是将数据与之前的数据进行比较以识别增量
-
7M 是很多记录,但不是 A LOT 记录。老实说,如果您的供应商向您发送他们的整个数据集,为什么不直接核对您的数据并加载供应商发送给您的数据呢?这些是同时出现还是不同时间出现?您是否还在处理需要从数据中删除的已删除记录?您要比较多少列以及数据库有多大?您能否提供一个您当前用于此更新的查询语句示例?
-
我们不能核对数据,因为它不只是加载到另一个数据库中。我们必须找到差异,然后调用另一个创建和更新数据的服务。如果您再次使用旧数据调用该服务,它将创建新条目。我会在屏蔽几个参数后尝试获取查询,因为它们是严格的保密条款。
标签: sql database algorithm logic generic-programming