我正在寫一個組件,該組件使用股票報價分析xml供稿,並將結果保存在數據庫中。這個問題相當簡單,除了feed不能遞增閱讀。也就是說,沒有辦法指定您只希望X最後一次報價更改或僅更改比X分鐘更新,比如說。我知道真正的問題是飼料是愚蠢的,供應商應該修理他們的東西,但這不是一個選項atm。解析巨大的XML供稿時處理重複的數據
Feed是一個巨大的xml文件,其中包含提供商的最後100000個股票報價。飼料每分鐘輪詢一次,在此期間大約有50到100次更改報價。其餘部分是重複的引號,它們會一遍又一遍讀取。
在每次對feed進行輪詢時,我將所有引號(使用lxml)解析爲對象。然後,對於每個報價對象,我檢查報價是否已經存在於數據庫中。如果是這樣,我就放棄它,如果沒有,我保存它。這個過程非常浪費,因爲只有大約0.1%是新數據,其餘部分是重複的。爲了優化一下,我通過查詢數據庫一次,在最近X小時內更新報價來創建一個查找表。 (last_update,stock_id)鍵中的引號在數據庫中是唯一的,因此該優化將查詢數減少了大約50%。
但仍然有50k db查詢,每個引號必須單獨檢查,如果存在或不存在,這對數據庫非常重要。
所以我在找的是關於如何使我的提要解析器更快的想法。也許有一種方法來區分上一次獲取的XML文件與新的?
哪個數據庫? – ajreal 2011-04-01 08:41:14