2009-12-10 25 views
3

在CouchDB中存储订购文档的最佳方式是什么?在CouchDB/JSON中存储有序的子文档/值?

假设我有100篇文章,并且想通过将它们按照我喜欢的顺序显示出来,或者我有10,000张图像,并且希望它们按特定顺序显示,而不是按日期/类别/等。这是否最好存储在父级(“页面”或“专辑”级别)或子级(图像/文章)级别?

它应该是更多这样的:


{ _id: myPage; articles: [myArticle14, myArticle5, myArticle2, myArticle20...]; } 
或本:

{ _id: myArticle14; position: 1; } 

...其中articles: [myArticle14, myArticle5, myArticle2, myArticle20...];是TE实际第二十文件_id的。

每种产品的优点/缺点是什么?您发现哪些应用随着应用的增长而更容易使用?

回答

1

为每篇文章使用一个文档,假设它包含非平凡的数据。一个大的“容器”文件不是一个好主意 - 你会浪费很多修改每一个小的更新任何文章数据。它也会使解决冲突成为一个麻烦。

1

第一个解决方案。

优点:在一个位置上不能有两篇文章。

缺点:要获取文章的顺序,您需要从数据库中获取所有文章,然后仅筛选需要的文章,或者您需要调用尽可能多的查询作为您想要在页面上显示的文章。

解决方法二

优势:你可以得到一个页面的所有文件在一个查询。只要创建视图,其中关键是由位置和使用startKeyendkey参数只得到你需要的文章。

缺点:有可能犯错误,并有更多的文章与相同的位置。

我会选择第二个解决方案。