2010-11-08 65 views
1

目前,我正在開發一款生成xml 的rails應用程序,以實現寧靜的web服務。我的Web服務的xml表示使用 nokogiri gem生成匹配來自 客戶端的預期格式的xml格式。但問題是數據是相當大的從50,000條記錄到 從表中拔出(百萬條記錄)。我只是在我的本地 機器上測試,大約需要20分鐘才能獲得 請求的響應。巨大的生成XML的優化?

對於如何優化這個問題你有什麼想法嗎?另外一個選項,我不確定我們是不是使用ActiveRecord,我們只是用純sql語句將 中的數據拉出來生成xml,那麼性能是巨大的還是快不了的?

+0

如果您發佈了1)表結構,2)您正在使用的dbms,3)您的應用程序生成的實際SQL語句以及4)「EXPLAIN sqlstatement」的結果,您可能會獲得更多幫助。 – 2011-02-21 01:09:55

回答

1

一個可能的解決方案是查看pagination的想法。分頁將返回您的原始結果的一個子集。來電者可以向您的服務提出多項請求以檢索所有需要的記錄。

分頁都將有很多好處,這裏是API調用

  • 服務器端進程將是更少的內存密集型的,你只是幾個

    1. 初始響應時間更快不存儲50K結果在內存中一次
    2. 允許如果需要的話在
    3. 分頁practi的

    例呼叫者拉僅數據的子集ce

    Twitter API的用戶遇到類似的情況時,他們想要返回給定用戶的所有追隨者。 Twitter使用光標的概念以分頁方式提供結果。使用遊標參數可以返回所有追隨者,而不會產生巨大的請求。

    Twitter的API鏈接:

    http://apiwiki.twitter.com/w/page/22554748/Twitter-REST-API-Method:-statuses%C2%A0followers

    從API文檔:

    光標。可選的。將結果分解成頁面。單個頁面包含100個用戶。建議用戶跟隨其他許多用戶。 提供值-1以開始分頁。提供返回給響應主體的next_cursor和previous_cursor屬性的值,以在列表中來回翻頁。