2017-05-25 48 views
0

我将设置一个cron作业来通过API更新一些数据。我希望它用新的提要更新数据库。更新数据馈送检查新值和当前值

即我将拥有一个现有的条目源,脚本将通过新的源。如果条目已经存在,则不更新,如果它不在数据库中,则添加它,并且需要删除所有其他条目。

我想知道做这个的好方法是有一个名为“更新”的列。这默认是0。当添加新条目或检查现有条目时,列值变为1.一旦cron作业完成其更新,它将删除仍然为0的所有值,并将余数重置为0.

这是做这样一份工作的正确方法,如果它帮助超过1000万行。

回答

1

首先没有正确或错误的答案,它总是取决于。至于那你们的做法表示

你会被更新所有1,000万名以上的排在每次做同步时间的两倍你的主要(目标)表,这取决于此表的繁忙程度可能会或可能不会可以接受的。

你可以考虑不同的方法,被广泛应用于ETL:

  1. Feed数据加载到一个临时表第一;做批量插入,或者如果可能的用途LOAD DATA INFILE - 在MySQL
  2. 摄取数据
  3. 可选建立索引以帮助查找
  4. “按摩”数据的最快方法(如有必要,清理,改造,扩大等)
  5. 插入进入主表存在于升级,而不是在主表中的所有新行
  6. 删除主表,在临时表中不存在的所有行
  7. 截断临时表