繁体   English   中英

如何在pouchdb中使用数据库

[英]How to work with databases in pouchdb

我正在制作一个任务列表,以学习如何使用PouchDB / CouchDB,应用程序非常简单,将具有身份验证,用户将创建他们的任务。

我的问题是如何将每个用户的信息存储在数据库中。 我应该为每个用户创建一个包含任务的数据库吗? 或者有没有办法将所有用户的所有任务放入名为“任务”的数据库中,并以某种方式过滤同步,以便PouchDB不同步服务器中的整个数据库(包括其他用户的任务)?

(我已经阅读了几次pouchdb文档而且我无法定义这个,如果有文档,请告诉我在哪里。)

您可以使用这两种方法来完成您的用例:

每个用户数据库

  • 每个用户的数据库是CouchDB中的每用户数据库模式。 每次在CouchDB中创建/删除用户时,CouchDB都可以处理数据库的创建/删除。 在这种情况下,每个PouchDB客户端将复制完整的用户数据库。
  • 您可以在服务器配置中启用它
  • 如果用户数据被隔离且您不需要在用户之间共享信息,这是一种正确的方法。 在这种情况下,如果您需要在CouchDB中同步许多用户数据库和另一个用户数据库,则可能会出现一些可伸缩性问题。 看这篇文章

每个用户的单个数据库

  • 您需要在CouchDB / PouchDB中使用过滤复制功能。 这篇文章解释了如何使用它。
  • 使用此方法,您可以在PouchDB中复制CouchDB数据库的子集
  • 由于您拥有单个数据库,因此更容易在用户之间共享信息
  • 但是,这种方法存在一些性能问题。 过滤过程效率很低。 因为它必须处理整个数据集,包括已删除的文档以确定要包含在复制中的文档集。 此过滤在服务器中的couchdb外部进程中完成,这会为进程增加更多成本。
  • 如果您需要使用过滤方法,最好为此目的使用芒果选择器 ,因为它在CouchDB主过程中进行评估,并且可以编制索引。 请参阅PouchDB复制筛选选项中的options.selector

结论

哪个更好? 取决于您的用例...在任何情况下,您都应该考虑两种情况下的可伸缩性问题:

  • 在过滤复制的情况下,如果必须过滤整个数据集,则随着文档数量的增加,您将面临一些问题。 据报道,使用芒果选择器时,速度提高了10倍。
  • 对于每用户数据库,如果需要在用户数量增长时将不同的用户数据库整合到一个用户数据库中,则会出现一些问题。

两种模式都有效。 唯一的区别是,为了使用过滤的复制,您需要提供对主数据库的访问。

因为它是在javascript中,所以很容易获得凭据然后访问主数据库。 这将使用户能够查看每个人的数据。

更安全的方法是使用每用户数据库模式。 每个数据库都将受到用户凭据的保护。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM