【问题标题】:PouchDB structurePouchDB 结构
【发布时间】:2015-07-16 00:00:48
【问题描述】:

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

【问题讨论】:

    标签: couchdb pouchdb nosql


    【解决方案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"

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-10-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-25
          相关资源
          最近更新 更多