巨大的生成xml的优化?

时间:2010-11-08 04:04:52

标签: ruby-on-rails xml rest query-optimization nokogiri

目前,我正在开发一个重生成xml的rails应用程序 为宁静的网络服务。我的Web服务使用的xml表示 nokogiri gem生成符合预期格式的xml格式 客户。但问题是数据相当大,约有50,000条记录 从表中拉出(数百万条记录)。我只是在我当地测试 机器,大约需要20分钟才能得到响应 请求。

您对如何优化此问题有任何想法吗?另一个选择,我不确定我们是否 不要使用ActiveRecord,我们只使用纯sql语句来拔出 用于生成xml的数据,然后性能更快或更快 不?

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案是研究pagination的想法。分页将返回原始结果的子集。您服务的呼叫者会向您的服务发出多个请求,以检索所有需要的记录。

分页将带来许多好处,这里只是几个

  1. 初始更快的API调用响应时间
  2. 服务器端进程的内存密集程度较低,因为您不是一次将50K结果存储在内存中
  3. 如果需要,允许呼叫者仅提取数据子集
  4. 实践中的分页示例

    当他们想要返回给定用户的所有关注者时,Twitter API的用户会遇到类似的情况。 Twitter使用游标的概念以分页方式提供结果。使用cursor参数允许返回所有关注者,而不会产生大量请求。

    Twitter API链接:

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

    来自API文档:

      

    光标。可选的。将结果分解为页面。单个页面包含100个用户。建议用户跟随许多其他用户。   提供值-1以开始分页。提供在响应主体的next_cursor和previous_cursor属性中返回的值,以便在列表中来回翻页。