2

我们与很多房地产合作,在重新构建数据导入方式时,我遇到了一个有趣的问题。

首先,我们系统的工作方式(粗略地说)是我们每天运行一次 Coldfusion 进程,该进程通过 FTP 检索从 IDX 供应商提供的数据。他们将数据推送给我们。他们寄给我们的东西就是我们得到的东西。

多年来,这已被证明是相当不稳定的。

我正在 RETS 标准上使用 PHP 重新构建它,该标准使用 SOAP 方法来检索数据,这已经被证明比我们拥有的要好得多。

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

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

这是更好的方法吗?或者我可以只获取我知道我需要的数据吗?做不必要的处理对我来说没有多大意义。想法?

4

2 回答 2

3

如果您可以信任 MODIFIED,那么您的方法就足够好并且比解析整个文件更快。如果您循环整个查找,试图找到修改或未修改的内容,这将更加困难。

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

于 2010-04-09T14:59:44.040 回答
1

如果您有幸获得了上次更新日期,那么限制您正在更新或导入的行数肯定会更有效。只需确保当记录更改时数据源实际上正在更新日期,因为并非所有数据库都经过精心设计,并且并不总是按照您期望的方式进行操作。

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

于 2010-04-09T15:01:34.217 回答