看来您无法在CouchDB中嵌套数据库。人们如何解决这个限制?例如,假设我想创建一个博客引擎,其中每个域都有一个单独的数据库。在每个数据库中,我可能需要一个用户数据库,一个订单数据库等来包含各种用户文档,订单文档等等。CouchDB中的嵌套数据库
最显而易见的方法似乎是一个扁平结构,其中数据库名称标定数据库嵌套级别之间的人为边界用连字号:
myblog.com-users
myblog.com-posts
myblog.com-comments
anotherblog.com-users
anotherblog.com-posts
anotherblog.com-comments
...hundreds more...
另一种解决办法是保持较低级别的数据库和标记每个与顶层值记录:
用户含有文档User1的数据库,与现场实例=“测试”或场domain =“myblog.com”
其实,我认为你滥用术语数据库。从CouchDB:最终指导:“对于严格的,CouchDB是一个数据库管理系统(DMS),这意味着它可以容纳多个数据库,数据库是容纳'相关数据'的存储区。当我在我的问题中提及数据库时,我并不是指CouchDB DMS的多个实例,而是指多个存储区来存储相关数据。由于数据库(存储区)旨在保存相关数据,因此您可以为所有域中的订单设置存储桶,或者可以为单个域中的用户和订单设置存储区。 – rcampbell 2009-11-05 09:43:49
除了术语之外,使用Views来分隔用户文档,发布文档和评论文档的建议绝对与我的想法一致,即为每个文档使用一个鉴别器键/值对。对我来说,只是感觉像一个黑客必须说Post.domain = MyApp,User.domain = MyApp,Comment.domain = MyApp等等。很多数据重复。另外,将所有客户端数据分组在一起,只是觉得安全明智。视图中的漏洞可能会将一个客户端暴露给另一个客户端的数据。 – rcampbell 2009-11-05 09:49:17
可能是我的错误选择。我的观点是,如果你想在一个数据库中有帖子评论和用户都完美的话。每个域有一个数据库可能是一个好主意,但如果你想整理或加入帖子和评论文件说,那么如果你把它们全部放在同一个数据库中,它会更容易。 – 2009-11-05 15:30:39