PouchDB结构

PouchDB structure

我是 nosql concept, so when i start to learn PouchDB, i found this conversion chart. My confusion is, how PouchDB 新手 如果说我有多个 table,这是否意味着我需要创建多个数据库?因为根据我对pouchdb的理解,一个数据库可以存储很多文档,但是一个文档意味着sql中的一行还是我误解了?

... does it mean that i need to create multiple databases?

没有。

... a document mean a row in sql or am i misunderstood?

没错。 SQL table 定义列 header(名称和类型)- 即文档的 JSON 属性 名称。

因此,所有文档(行)具有相同属性(所谓的 "schema")等同于您的 SQL table.您可以根据需要在一个数据库中拥有尽可能多的不同模式(访问 json-schema.org 以获得一些灵感)。

如何分别请求?创建 CouchDB 视图!您可以通过 SQL.

中的一个请求获取 all/some "rows" 表格数据(具有相同架构的文档)

要轻松编写此类视图,属性 type 对于 CouchDB 文档来说非常常见。您在 SQL table 中的已知名称可以是您的类型,例如 doc.type: "animal"

您的视图名称可能是 animalByNameanimalByWeight。取决于您的需要。

这个问题的答案似乎记录不足。虽然@llabball 显然给出了一个不错的答案,但我认为观点并不总是可行的方法。

正如您可以在 何时不使用 map/reduce 部分中阅读 here,Nolan 解释说对于更简单的应用程序,关键是 滥用 _ids,并利用allDocs()的力量。

换句话说,如果您有两种不同的类型(比如艺术家和专辑),那么您可以为每种类型的 ID 添加前缀以获得易于搜索的数据集。例如 _id: 'artist_name' & _id: 'album_title',可以让您轻松地按姓名顺序检索艺术家。

以这种方式布置数据将导致更好的性能,因为不需要额外的索引和更少的代码。但很明显,如果您的数据要求更复杂,那么视图是最佳选择。

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