高效的数据导入?

时间:2010-04-09 14:55:46

标签: php data-integrity import

我们处理大量房地产,在重新架构数据导入方式的同时,我遇到了一个有趣的问题。

首先,我们的系统工作方式(松散地说)是我们每天运行一次Coldfusion流程,检索IDX供应商通过FTP提供的数据。他们将数据推送给我们。无论他们寄给我们什么,都是我们得到的。

多年来,事实证明这种情况相当不稳定。

我正在使用PHP对RETS标准进行重新架构,该标准使用SOAP方法检索数据,这已经证明比我们的方法要好得多。

当谈到“更新”现有数据时,我最初的想法是仅查询已更新的数据。 “修改”字段会告诉您上次更新列表的时间,我所拥有的代码将抓取过去6小时内更新的所有列表(如果出现问题,请给自己一个窗口)。

然而,我看到很多房地产开发商建议创建贯穿所有列表的“批处理”流程,而不管持续运行的更新状态。

这是更好的方法吗?或者我只是抓住我知道我需要的数据?对我来说,做多于必要的处理并没有多大意义。想法?

2 个答案:

答案 0 :(得分:3)

如果您可以信任MODIFIED,那么您的方法比解析整个文件更好,更快。如果你循环整个发现试图找到被修改的内容,那就更难了。

如果您可以将文件直接发送到数据库并使用其内置文件导入功能导入,则会略微提高性能。例如MySQL有这个 - http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html我确信其他数据库如SQL Server和Oracle也有这样的机制。这将节省编程语言工作的开销,并且只使用数据库资源。

答案 1 :(得分:1)

如果您有幸拥有最后更新日期,那么限制更新或导入的行数肯定更有效。只要确保记录发生变化时数据源实际上正在更新日期,因为并非所有数据库都经过精心设计,并且并不总是按照您期望的方式执行。

无论你做什么,都不要逐行处理,这是最无效的做事方式。我可以比一次一行处理100000条记录的数据集更快地批量插入一百万条记录。但是,如果您正在谈论插入,则有基于集合的方法来执行此类型,并且基于集合的更新将更改100条记录,而不是批量插入50,000条记录。