1時間ごとに特定のURLからxmlフィードをダウンロードし、フィードが変更されたかどうかを検出するxmlフィードポーリングシステムをセットアップしたいと思います。もしそうなら、それはいくつかのことをする必要があるでしょう。
どうすればこれを効率的に達成できますか?私がプルするフィードには何千ものアイテムが含まれ、すべてのアイテムにかなりの量のデータが含まれている可能性があります。
新しいデータ/アイテムを検出してデータベースに保存できるようにしたい。
変更されたデータ/アイテムを検出し、それに応じてデータベースを更新できるようにしたい。
削除されたデータ/アイテムを検出し、それに応じてデータベースを更新できるようにしたい。
アイテムの順序は私には関係ないので、順序が変更されても他に何も変更されない場合、フィードは同一であると言えます。
以前にダウンロードしたものと比較するために、アイテムとフィード全体をハッシュすることに言及している人が何人かいます。アイテムが多い場合は、時間がかかる可能性があります。
最後にダウンロードしたフィードと新しいフィードを比較して、同じアイテムをすべて削除する簡単な方法はありますか?そして、多分それから残っているアイテムを調べて比較をしますか?
正しいアプローチがどうなるかわかりません。任意の提案をいただければ幸いです。
私が引っ張る同様のフィードの例は次のとおりです。
<properties>
<property>
<location>
<unit-number>301</unit-number>
<street-address>123 Main St</street-address>
<city-name>San Francisco</city-name>
<zipcode>94123</zipcode>
<county>San Francisco</county>
<state-code>California</state-code>
<street-intersection>Broadway</street-intersection>
<parcel-id>359-02-4158</parcel-id>
<building-name>The Avalon</building-name>
<subdivision></subdivision>
<neighborhood-name>Marina</neighborhood-name>
<neighborhood-description>The Marina is a neighborhood on the Northern part of San
Francisco</neighborhood-description>
<elevation>10</elevation>
<longitude>-70.1200</longitude>
<latitude>30.0000</latitude>
<geocode-type>exact</geocode-type>
<display-address>yes</display-address>
<directions>Take 101 North to Lombard St. Make a left on Lombard and 3rd right
onto Main. 123 is at the end of the block on the right. </directions>
</location>
<details>
<listing-title>A great deal in the Marina</listing-title>
<price>725000</price>
<year-built>1928</year-built>
<num-bedrooms>3</num-bedrooms>
<num-full-bathrooms>2</num-full-bathrooms>
<num-half-bathrooms>1</num-half-bathrooms>
<num-bathrooms></num-bathrooms>
<lot-size>0.25</lot-size>
<living-area-square-feet>1720</living-area-square-feet>
<date-listed>2010-06-20</date-listed>
<date-available></date-available>
<date-sold></date-sold>
<sale-price></sale-price>
<property-type>condo</property-type>
<description>Newly remodeled condo in great location.</description>
<mlsId>582649</mlsId>
<mlsName>SFAR</mlsName>
<provider-listingid>258136842</provider-listingid>
</details>
<landing-page>
<lp-url>http://www.BrokerRealty.com/listing?id=123456&source=Trulia</lp-url>
</landing-page>
<listing-type>resale</listing-type>
<status>for sale</status>
<foreclosure-status></foreclosure-status>
<site>
<site-url>http://www.BrokerRealty.com</site-url>
<site-name>Broker Realty</site-name>
</site>
等..