【问题标题】:couchDB: storing MB per documentcouchDB:为每个文档存储 MB
【发布时间】:2010-12-25 08:25:51
【问题描述】:

我目前正在分析 couchDB。 每个文档可以存储 MB 的数据吗?例如。 JPEG 图像。

我知道我需要对所述数据进行编码(base64 或其他)以适应 JSON 容器。

请寻求实用建议。

【问题讨论】:

  • 为什么不将它们存储为附件?

标签: erlang couchdb


【解决方案1】:

我从未尝试过大文档,但我使用的是带有大附件(JPEG > 10 Mpix)的文档,效果很好。

主要问题是,如此庞大的数据库规模复制往往每周都会以新的有趣方式中断。

【讨论】:

    【解决方案2】:

    正如 zed 在他的评论中所说,最好的方法是使用附件。 Wiki 对此有一个部分:http://wiki.apache.org/couchdb/HTTP_Document_API#Attachments

    基本思路是这样的:

    {
      "_id":"attachment_doc",
      "_attachments":
      {
        "foo.txt":
        {
          "content_type":"text\/plain",
          "data": "VGhpcyBpcyBhIGJhc2U2NCBlbmNvZGVkIHRleHQ="
        }
      }
    }
    

    您应该对附件内容进行 Base64 编码是正确的。每个文档可以有多个附件。

    注意来自 wiki:请注意,您发送的任何 base64 数据都必须在一行字符中,因此请预处理您的数据以删除任何回车符和换行符。

    【讨论】:

    • 我意识到这一点,谢谢:我更关心每个文档的 size,因此是“实用建议”说明。
    • 我相当确定兆字节大小不会对数据库产生不利影响。如果您担心的是,它不应该影响查询时间或访问时间。关于附件的唯一警告是您不能映射/减少它们的内容,因此如果您需要深入查询它们可能是一个问题。
    • 请注意,您不必在 Base64 中上传附件。您可以创建文档,然后在原始放置请求中单独添加附件。详情请见wiki.apache.org/couchdb/…
    • @brian:你应该把它放在一个答案中:我很擅长投票。
    • 我回来有点晚了,但当然我指的是真实的而不是内联的附件,这正是 Brian 所说的。我从来没有真正理解内联附件的意义。原因可能是我仍然生活在 web 1.1 和 web 1.2 之间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2011-05-17
    • 1970-01-01
    • 2020-05-31
    • 2015-07-29
    • 2012-07-01
    • 1970-01-01
    相关资源
    最近更新 更多