【问题标题】:CouchDB Views - List function performance hit?CouchDB 视图 - 列表功能性能受到影响?
【发布时间】:2010-09-03 14:13:13
【问题描述】:

很多人都知道来自 couchdb 视图的响应如下

{"rows":[
  {"key":"1","value":{"Col1":"Some Value"}},
  {"key":"2","value":{"Col1":"Another Value"}},
]}

嗯,我想整理一下

[{"key":"1","value":{"Col1":"Some Value"}},
  {"key":"2","value":{"Col1":"Another Value"}}]

我正在考虑使用“列表函数”来整理响应,但我想知道执行此类操作的潜在性能开销?值得吗...还是我应该考虑更改所有代码以处理不同的响应?

谢谢 达摩

【问题讨论】:

    标签: couchdb


    【解决方案1】:

    列表函数在一个单独的进程 (couchjs) 中运行,该进程通过标准 i/o 连接到 couchdb。数据被序列化到 JSON 或从 JSON 序列化以与此通道进行通信。换句话说,您的所有行都将被序列化并发送到couchjscouchjs 会将结果发回。

    因此,列表函数将增加(至少)O(n) 延迟来接收您的结果。对于小型(我说少于 10,000 个文档,但这取决于您的需要)查看结果,非常值得方便。对于非常多的行,升级客户端可能会给您带来好处。

    【讨论】:

    • 我当时的想法。不理想,因为有时您将传递“文档”而其他人传递“文档视图”。所以你的代码需要同时处理这两者。我决定最后使用列表函数将所有值推送到数组中,然后发送 JSOn 响应。感谢您的帮助。
    • 列表函数可以使用provides()返回不同的内容类型,可能基于req.query对象中给定的参数。
    【解决方案2】:

    我使用 JSON_XS 格式化结果,然后 curl、awk 和其他 unix 实用程序重新格式化结果。在这种情况下,漂亮地打印 JSON 并没有帮助:

    curl -s -S --compressed -X GET 'your_view_url' | sed -e '/^{"rows"://' -e '/^]}/]/'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 2019-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多