PouchDB 结构
Posted
技术标签:
【中文标题】PouchDB 结构【英文标题】:PouchDB structure 【发布时间】:2015-07-16 00:00:48 【问题描述】:我是nosql 概念的新手,所以当我开始学习PouchDB 时,我发现了这个转换表。我的困惑是,如果假设我有多个表,PouchDB 如何处理,这是否意味着我需要创建多个数据库?因为根据我在pouchdb中的理解,一个数据库可以存储很多文档,但是一个文档意味着sql中的一行还是我误解了?
【问题讨论】:
【参考方案1】:有时多数据库计划是一个不错的选择,例如每个用户的数据库,甚至每个用户的数据库功能。看看 CouchDB 邮件列表上的this conversation。
【讨论】:
【参考方案2】:这个问题的答案似乎出人意料地记录不足。虽然@llabball 明确给出了一个不错的答案,但我认为观点并不总是可行的。
您可以在 何时不使用 map/reduce 部分阅读 here,Nolan 解释说,对于更简单的应用程序,关键是滥用 _ids
,并利用allDocs()
的力量。
换句话说,如果您有两种不同的类型(比如艺术家和专辑),那么您可以为每种类型的 id 添加前缀以获得易于搜索的数据集。例如_id: 'artist_name'
& _id: 'album_title'
,将允许您轻松地按名称顺序检索艺术家。
由于不需要额外的索引和更少的代码,以这种方式布置数据将带来更好的性能。但是,很明显,如果您的数据要求更复杂,那么视图是您的最佳选择。
【讨论】:
【参考方案3】:... 这是否意味着我需要创建多个数据库?
没有。
...一个文档意味着sql中的一行还是我误解了?
没错。 SQL 表定义了列标题(名称和类型)——它们是文档的 JSON 属性名称。
因此,所有具有相同属性的文档(行)(所谓的“模式”)都相当于您的 SQL 表。您可以根据需要在一个数据库中拥有尽可能多的不同模式(访问 json-schema.org 以获得一些灵感)。
如何单独申请?创建 CouchDB 视图!您可以通过 SQL 知道的一个请求获取所有/部分“行”表格数据(具有相同架构的文档)。
为了轻松编写此类视图,type
属性在 CouchDB 文档中非常常见。您在 SQL 表中的已知名称可以是您的类型,例如 doc.type: "animal"
您的视图名称可能是 animalByName
或 animalByWeight
。取决于你的需要。
【讨论】:
以上是关于PouchDB 结构的主要内容,如果未能解决你的问题,请参考以下文章
排毒测试 + React Native + PouchDB 应用程序:由于一些 PouchDB 同步,我们的登录测试一直失败并超时?
未捕获的TypeError:PouchDB.plugin不是一个函数