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

在单个CouchDB文档中存储大量附件,couchdb,archive,tar,attachment,Couchdb,Archive,Tar,Attachment,tl;dr:我应该将目录存储在CouchDB中作为附件列表还是单个tar 我一直在使用CouchDB来存储项目文档。我只是通过Futon创建文档,然后直接从那里上传。我还编写了一个脚本来批量上传目录。我把它当作一个基本的内容存储库来使用。我复制它,这样团队中的其他人就有了存储库的副本 我注意到将目录保存为一系列文件似乎有很多存储开销,因此我上传了一个包含目录的.tar.gz文件。这确实大大减少了文档的大小,但现在对目录的任何更改都需要复制整个tarball 我在寻找关于这件事的想法或观点。这真的

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

我一直在使用CouchDB来存储项目文档。我只是通过Futon创建文档,然后直接从那里上传。我还编写了一个脚本来批量上传目录。我把它当作一个基本的内容存储库来使用。我复制它,这样团队中的其他人就有了存储库的副本

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


我在寻找关于这件事的想法或观点。

这真的取决于你想要实现什么。我将尝试提供一些选项供您考虑。< /P> 存储一个tar.gz将为您节省空间,但它确实会使您的工作更加困难。如果您只是简单地存档,它可能对您有用

将所有附件存储在一个文档中对couchapps很有效。工作流程是在准备发布应用程序之前处理附件,这样就不会有太多复制开销,因为这通常是一次性的。它们是一个文档,这很好,因为它们都作为一个包进行移动/复制。在内容管理系统中使用这种方法的缺点是,您可能会得到很多历史包袱,您必须在本地沙发上压缩这些包袱。此外,在沙发之间的复制过程中,您会遇到很多冲突,而沙发会保留冲突供您解决。因此,如果您选择此型号,应经常压缩以减小磁盘大小

对于内容管理系统,我可能建议每个附件使用一个文档。这样会减少冲突。这会有一点开销,因为每个文档都会为文档本身分配一些空间,但是在频繁压缩和/或冲突解决方面的节省会更好


希望这能给你一些权衡的选择

你试过分别压缩每个文件吗?我想我会在每个附件中使用单个文档,无论是单个文件还是tar.gz包。我认为管理冲突和压缩足以让我避免每个文档有太多的附件。