我是nosql概念的新手,所以当我开始学习PouchDB时,我找到了这个转换图表。我的困惑是,PouchDB怎么处理,如果我说我有多个表,这是否意味着我需要创建多个数据库?因为根据我对pouchdb的理解,一个数据库可以存储很多文件,但是一个文件在sql中意味着一行还是我被误解了?
答案 0 :(得分:11)
这个问题的答案似乎令人惊讶地记录不足。虽然@llabball明显给出了一个不错的答案,但我并不认为观点总是可行的。
正如您可以在何时不使用map / reduce 一节中阅读here,Nolan解释说,对于更简单的应用程序,关键是滥用 { {1}},并利用_ids
的力量。
换句话说,如果你有两种不同的类型(比如艺术家和专辑),那么你可以在每种类型的id前面加上一个易于搜索的数据集。例如allDocs()
& _id: 'artist_name'
,允许您按名称顺序轻松检索艺术家。
以这种方式布置数据将导致更好的性能,因为不需要额外的索引和更少的代码。但是,显然,如果您的数据要求更复杂,那么视图就是可行的方法。
答案 1 :(得分:8)
......这是否意味着我需要创建多个数据库?
没有。
...一个文件在sql中意味着一行,或者我误解了?
那是对的。 SQL表定义列标题(名称和类型) - 它们是doc的JSON属性名称。
因此,具有相同属性的所有文档(行) (所谓的" schema")等同于您的SQL表。您可以在一个数据库中拥有尽可能多的不同架构(访问json-schema.org获取一些灵感)。
如何单独申请?创建CouchDB视图!你可以得到所有/一些"行"表单数据(具有相同模式的文档)与您从SQL中了解的一个请求。
要轻松编写此类视图,属性type
对于CouchDB文档非常常见。 SQL表中的已知名称可以是doc.type: "animal"
您的视图名称可能是animalByName
或animalByWeight
。取决于您的需求。
答案 2 :(得分:1)
有时,多数据库计划是一个不错的选择,例如每个用户的数据库,甚至是每个用户功能的数据库。在CouchDB邮件列表上查看this conversation。