我目前正在设计一个数据库结构(这很奇怪,在这里避免术语方案)并遇到一些问题。我将通过一个类似的例子激发我的问题。分区CouchDB中的1:1关系
想象一下博客条目的数据库。每个博客条目有0..n条评论,0..m条标签和0..r条用户投票(上/下)。
当然,我可以把所有东西放在一个大的JSON对象中,每个条目都有一个共同的对象,包括注释,标签和投票等字段。
然而,当存在许多并发更改时(至少在我的真实应用程序中),这很容易发生冲突。所以我想把我的结构分成几个文件。每个条目一个,每个条目一个(集合)文档用于评论,一个用于标签,另一个用于投票。
我还设置了一个修复名称模式。博客条目在创建时具有UUID,评论,标签和投票的文档名为<blog-entry-uuid>:(tags|votes|comments)
。 因此,我总是可以通过了解博客文章的ID来构建引用文档的ID。在使用视图时,我可以使用视图归类功能“加入”或利用include_docs=true
。
通过使用更新处理程序,我可以进一步最小化添加注释等的冲突更改。处理程序只是将新评论,并将其放入<blog-entry-uuid>:comments
文档中。
这是一种可行的方法,还是有更好的方法来加入?以这种方式构建ID是否是不好的做法?提前
正如我的问题概括_id,引用ID和视图归类的自动包含是处理CouchDB中关系的强大工具。 – 2010-06-21 18:54:41