2011-12-21 73 views
0

我正在一個網站上顯示所有App Store中的應用程序。我通過EPF導入程序通過其EPF數據源獲取AppStore數據。在那個數據庫中,我得到了每個商店每個應用程序的定價。存在這樣的一組數據,其表的結構是這樣的行打:計算價格下降應用程序或應用程序會免費 - 應用程序商店

application_price 

The retail price of an application. 

Name   Key Description 

export_date   The date this application was exported, in milliseconds since the UNIX Epoch. 
application_id Y Foreign key to the application table. 
retail_price  Retail price of the application, or null if the application is not available. 
currency_code  The ISO3A currency code. 
storefront_id Y Foreign key to the storefront table. 

這是表我現在把我的問題是,我沒有得到任何出路,我怎麼能計算的降價應用程序和來自此特定數據集的新免費應用程序。任何人都有想法我怎麼能計算它? 任何想法或答案將不勝感激。

我試圖存儲以前的數據和當前的數據,然後試圖匹配它。問題是表本身太大,並且比較導致JOIN操作,這使得查詢執行時間超過一小時,這是我無法承受的。有大約60,000,000表格中的行

回答

2

有了這些字段,您不能直接確定價格下降或新的應用程序。您必須將這些插入到您自己的數據庫中,並從中確定差異。在像MySQL這樣的關係數據庫中,這不是太複雜:

要確定哪些應用程序是新的,可以添加自己的列「first_seen」,然後查詢數據庫以顯示first_seen列不再的所有對象那麼一天之後。

要計算價格下跌,你必須計算當前進口retail_price,和以前的進口之間的差額。


既然你編輯你的問題,我的答案編輯:

好像你遇到存儲/性能的問題,你知道你想達到的目標。爲了解決這個問題,你必須開始測量和調試:數據集這麼大,你必須確保你有正確的索引。分析您的查詢應該有助於查明他們是否確實如此。

,也許,你的環境是「每天寫一次」,並宣讀「很多時候一分鐘」。 (我猜你正在創建一個網站)。因此,您可以通過處理導入時的差異(價格下降和新應用程序)而不是在網站上顯示時加快前端。

如果仍然無法解決這個問題,我建議你打開一個更具體的問題,詳細說明您的DBMS,查詢等,所以真正的數據庫管理員將能夠幫助你。 6000萬行數量很多,但使用正確的索引對普通數據庫系統來說應該不是真正的麻煩。

+0

感謝您的答覆。請參閱我的編輯 – Astha 2011-12-21 08:14:13

+0

請參閱我的編輯以及;-) – 2011-12-21 09:03:48

1

比較表一個你下載的前一天,並注意區別。

加入: 對於只有6000萬個物品,並且在當代PC上,您應該能夠將存儲ID號和先前價格的排序數組存儲在內存中,並且數據查找速度比數據到達時快來自網絡Feed。標記找到的任何差異,並在後處理中對數據庫進行仔細檢查。

+0

感謝您的回覆。看到我的編輯 – Astha 2011-12-21 08:14:25

0

其實我也想用這些數據來打球,我想對你的數據從蘋果基地最好的辦法。

您有2種類型的數據:完整和增量(每日更新的數據)。因此,在增量的新數據(並非真正的大數據)中,只能比較更新的記錄並將它們插入另一個表以確定定價已更改。

所以你有一個記錄清單(應用程序,歌曲,視頻......)每天更新價格有變化,只需從你創建的新表中獲取數據,而不是比較或從各種表中加入它們。

乾杯

相關問題