Couchdb 数据库结构
我是一个新的概念,所以当我开始学习时,我发现了这个转换图。我的困惑是,如果假设我有多个表,这是否意味着我需要创建多个数据库?因为据我在数据库中的理解,一个数据库可以存储很多文档,但是一个文档意味着sql中的一行,还是我被误解了 。。。这是否意味着我需要创建多个数据库 没有 。。。文档是指sql中的一行,还是我被误解了 对。SQL表定义了列标题(名称和类型)——即文档的JSON属性名称 因此,具有相同属性的所有文档(行)(所谓的“模式”)都相当于SQL表。您可以在一个数据库中拥有任意多个不同的模式(请访问json-schema.org获得一些启示) 如何单独申请?创建CouchDB视图!您可以通过一个请求获取表格数据的所有/部分“行”(具有相同模式的文档),正如您从SQL中所知道的那样 要轻松编写此类视图,CouchDB文档的属性Couchdb 数据库结构,couchdb,pouchdb,nosql,Couchdb,Pouchdb,Nosql,我是一个新的概念,所以当我开始学习时,我发现了这个转换图。我的困惑是,如果假设我有多个表,这是否意味着我需要创建多个数据库?因为据我在数据库中的理解,一个数据库可以存储很多文档,但是一个文档意味着sql中的一行,还是我被误解了 。。。这是否意味着我需要创建多个数据库 没有 。。。文档是指sql中的一行,还是我被误解了 对。SQL表定义了列标题(名称和类型)——即文档的JSON属性名称 因此,具有相同属性的所有文档(行)(所谓的“模式”)都相当于SQL表。您可以在一个数据库中拥有任意多个不同的模
type
非常常见。SQL表中的已知名称可以是您的类型,如doc.type:“animal”
您的视图名称可能是
animalByName
或animalByWeight
。这取决于你的需要 这个问题的答案似乎出人意料地没有记录在案。虽然@llabball显然给出了一个不错的答案,但我不认为观点总是正确的
正如您在“何时不使用map/reduce”一节中所读到的,Nolan解释说,对于更简单的应用程序,关键是滥用\u id
,并利用allDocs()的功能
换句话说,如果您有两种不同的类型(比如艺术家和专辑),那么您可以为每种类型的id添加前缀,以获得易于搜索的数据集。例如,\u id:“艺术家名称”
&\u id:“专辑标题”
,将允许您轻松地按名称顺序检索艺术家
由于不需要额外的索引和更少的代码,以这种方式布局数据将获得更好的性能。显然,如果您的数据要求更复杂,那么视图是一种选择。有时多数据库计划是一个不错的选择,例如每个用户一个数据库,甚至是每个用户一个数据库功能。看看CouchDB邮件列表