在单个CouchDB文档中存储大量附件

时间:2011-11-29 09:21:46

标签: couchdb archive tar attachment

tl; dr :我应该将目录存储在CouchDB中作为附件列表还是单个tar

我一直在使用CouchDB来存储项目文档。我只是通过Futon创建文档并直接从那里上传。我还编写了一个脚本来批量上传目录。我正在使用它像一个基本的内容库。我复制它,所以我团队中的其他人都有一个存储库的副本。

我注意到将目录保存为一系列文件似乎有很多存储开销,所以我上传了一个包含该目录的.tar.gz文件。此 会显着减小文档的大小,但现在对目录的任何更改都需要复制整个tarball。

我正在寻找有关此事的想法或观点。

1 个答案:

答案 0 :(得分:1)

这真的取决于你想要实现的目标。我会尽量为你提供一些选择。

存储一个tar.gz将为您节省空间,但它确实使得它更难以使用。如果您只是归档它可能适合您。

将所有附件存储在一个文档上适用于couchapps。在您准备好发布应用程序之前,工作流程就是乱用附件,然后复制没有太多开销,因为它通常是一次。它们是一个文档很好,因为它们都作为一个包移动/复制。在内容管理系统中使用这种方法的缺点是你可以获得许多历史包,你必须在当地的沙发上压缩。此外,您将在沙发之间复制时遇到很多冲突,沙发将保持冲突,让您解决。因此,如果选择此型号,则应经常压缩以减小磁盘大小。

对于内容管理系统,我建议每个附件使用一个文档。这样可以减少冲突。由于每个文档将为文档本身分配一些空间,因此会有轻微的开销,但是必须经常进行压缩和/或解决冲突的节省会更好。

希望能为您提供一些权衡选择。