Couchdb 数据库结构

Couchdb 数据库结构,couchdb,pouchdb,nosql,Couchdb,Pouchdb,Nosql,我是一个新的概念,所以当我开始学习时,我发现了这个转换图。我的困惑是,如果假设我有多个表,这是否意味着我需要创建多个数据库?因为据我在数据库中的理解,一个数据库可以存储很多文档,但是一个文档意味着sql中的一行,还是我被误解了 。。。这是否意味着我需要创建多个数据库 没有 。。。文档是指sql中的一行,还是我被误解了 对。SQL表定义了列标题(名称和类型)——即文档的JSON属性名称 因此,具有相同属性的所有文档(行)(所谓的“模式”)都相当于SQL表。您可以在一个数据库中拥有任意多个不同的模

我是一个新的概念,所以当我开始学习时,我发现了这个转换图。我的困惑是,如果假设我有多个表,这是否意味着我需要创建多个数据库?因为据我在数据库中的理解,一个数据库可以存储很多文档,但是一个文档意味着sql中的一行,还是我被误解了

。。。这是否意味着我需要创建多个数据库

没有

。。。文档是指sql中的一行,还是我被误解了

对。SQL表定义了列标题(名称和类型)——即文档的JSON属性名称

因此,具有相同属性的所有文档(行)(所谓的“模式”)都相当于SQL表。您可以在一个数据库中拥有任意多个不同的模式(请访问json-schema.org获得一些启示)

如何单独申请?创建CouchDB视图!您可以通过一个请求获取表格数据的所有/部分“行”(具有相同模式的文档),正如您从SQL中所知道的那样

要轻松编写此类视图,CouchDB文档的属性
type
非常常见。SQL表中的已知名称可以是您的类型,如
doc.type:“animal”


您的视图名称可能是
animalByName
animalByWeight
。这取决于你的需要

这个问题的答案似乎出人意料地没有记录在案。虽然@llabball显然给出了一个不错的答案,但我不认为观点总是正确的

正如您在“何时不使用map/reduce”一节中所读到的,Nolan解释说,对于更简单的应用程序,关键是滥用
\u id
,并利用
allDocs()的功能

换句话说,如果您有两种不同的类型(比如艺术家和专辑),那么您可以为每种类型的id添加前缀,以获得易于搜索的数据集。例如,
\u id:“艺术家名称”
&
\u id:“专辑标题”
,将允许您轻松地按名称顺序检索艺术家


由于不需要额外的索引和更少的代码,以这种方式布局数据将获得更好的性能。显然,如果您的数据要求更复杂,那么视图是一种选择。

有时多数据库计划是一个不错的选择,例如每个用户一个数据库,甚至是每个用户一个数据库功能。看看CouchDB邮件列表