3

在 CouchDB 中存储有序文档的最佳方式是什么?

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

是否应该更像这样:


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

{
    _id: myArticle14;
    position: 1;
}

...实际文章文件的位置articles: [myArticle14, myArticle5, myArticle2, myArticle20...];在哪里。_id

每种方法的优点/缺点是什么,随着应用程序的发展,您发现哪些更容易使用?

4

2 回答 2

1

第一个解决方案。

优点:你不能在一个职位上写两篇文章。

缺点:要按顺序获取文章,您需要从数据库中获取所有文章,然后只过滤您需要的文章,或者您需要调用尽可能多的查询,因为您希望在页面上显示文章。

第二种解决方案

优点:您可以一次查询获得一页的所有文档。只需创建视图,其中键由页面位置组成,并使用startKeyendkey参数仅获取您需要的文章。

缺点:有可能出错,相同位置的文章较多。

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

于 2009-12-14T11:17:02.537 回答
1

每篇文章使用一个文档,假设它包含重要数据。一个大的“容器”文档不是一个好主意——任何文章数据的每次小更新都会浪费大量的修订。它也会使冲突解决成为一个麻烦。

于 2009-12-11T02:49:52.853 回答