2

私たちは多くの不動産を扱っており、データのインポート方法を再検討しているときに、興味深い問題に遭遇しました。

まず、システムの動作方法(大まかに言えば)は、FTP経由でIDXベンダーから提供されたデータを取得するColdfusionプロセスを1日1回実行することです。彼らは私たちにデータをプッシュします。彼らが私たちに送るものは何でも私たちが得るものです。

長年にわたって、これはかなり不安定であることが証明されています。

私は、データを取得するためのSOAPメソッドを使用するRETS標準のPHPを使用して再設計しています。これは、私たちが持っていたものよりもはるかに優れていることがすでに証明されています。

既存のデータを「更新」することになると、私の最初の考えは、更新されたデータのみを照会することでした。リストが最後に更新された日時を示す「変更済み」のフィールドがあり、私が持っているコードは、過去6時間以内に更新されたリストを取得します(何か問題が発生した場合に備えてウィンドウを表示します)。

ただし、多くの不動産開発業者が、常に実行されている更新されたステータスに関係なく、すべてのリストを実行する「バッチ」プロセスを作成することを提案しているのを目にします。

これはそれを行うためのより良い方法ですか?それとも、必要だとわかっているデータを取得するだけで大​​丈夫ですか?必要以上の処理をすることは私にはあまり意味がありません。考え?

4

2 に答える 2

3

MODIFIED を信頼できる場合、アプローチはファイル全体を解析するよりも十分に高速です。検索全体をループして、何が変更されているかどうかを見つけようとしている場合、それは難しくなります。

ファイルをデータベースに直接送信し、組み込みのファイル インポート機能を使用してインポートできるようにすると、パフォーマンスがわずかに向上します。たとえば、MySQLにはこれがあります- http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html SQL ServerやOracleなどの他のDBにもそのようなメカニズムがあると確信しています。これにより、プログラミング言語作業のオーバーヘッドが節約され、データベース リソースのみが使用されます。

于 2010-04-09T14:59:44.040 に答える
1

幸運にも最終更新日がある場合は、更新またはインポートする行数を制限する方が確実に効率的です。すべてのデータベースが適切に設計されているわけではなく、常に期待どおりに動作するとは限らないため、レコードが変更されたときにデータ ソースによって日付が実際に更新されていることを確認してください。

何をするにしても、行ごとに処理しないでください。これは最も非効率的な方法です。一度に 1 行ずつ 100000 レコードのデータ セットを処理するよりも、100 万レコードのバッチ挿入を実行できます。ただし、挿入の場合はセットベースの方法があり、変更された 100 レコードのセットベースの更新は、50,000 レコードのバッチ挿入よりも高速になります。

于 2010-04-09T15:01:34.217 に答える