早上好!
我想对目前正在使用的pwa使用长沙发/ pouchdb。
在我的项目中,我要存储“项目”,在“项目”中,我要存储项目标题和“章节”,在“章”中,我要存储章节标题和“场景” ,“场景”包含文本。
哪种模式最有意义和最有效?
现在我正在考虑这样的计划:
由于我只有SQL经验,并且以前从未使用过基于文档的数据库,所以我真的不知道如何放置一个有意义的结构。
我是将文档存储在文档中以具有与上图完全相同的架构,还是为每个组件(Projects,Chapters,Scenes)创建一个数据库?
答案 0 :(得分:1)
您有几种选择。
哪个是最好的取决于可能的总大小以及每个组件的变化方式。 CouchDB最适合小型文档(千字节)。由于您只能更新整个文档,因此更改列表或较大文档中的对象内部的位会很快变得效率低下,并可能产生更新冲突。
上面的第二个建议可以更好地扩展,但是(当前;请参见下面的链接)缺少能够通过单个API调用提取项目所有内容的便利。您可以使用id字段产生很大的效果:
{
"_id": "project1:toplevel",
"type": "project",
"title": "Project 1"
}
{
"_id": "project1:chapter1",
"type": "chapter",
"title": "Project 1, chapter 1"
}
{
"_id": "project1:chapter1#scene1",
"type": "scene",
"title": "Project 1, chapter 1, scene 1"
}
在CouchDB的“即将登陆”版本中,此id格式可用于利用所谓的分区数据库,这在这里非常适合。您可以在此处阅读有关它的博客文章:
https://blog.cloudant.com/2019/03/05/Partition-Databases-Introduction.html