Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在数据库中使用数据库_Javascript_Database_Nosql_Couchdb_Pouchdb - Fatal编程技术网

Javascript 如何在数据库中使用数据库

Javascript 如何在数据库中使用数据库,javascript,database,nosql,couchdb,pouchdb,Javascript,Database,Nosql,Couchdb,Pouchdb,我正在制作一个任务列表来学习如何使用PockDB/CouchDB,这个应用程序非常简单,将具有身份验证,用户将创建他们的任务 我的问题是关于如何在数据库中存储每个用户的信息。我应该为每个用户及其任务创建一个数据库吗?或者有没有一种方法可以将所有用户的所有任务放入一个名为“任务”的数据库中,并以某种方式过滤同步,以便PockDB不会同步服务器中的整个数据库(包括其他用户的任务) (我已经阅读了PockDB文档好几次,但我无法定义它,如果有文档,请告诉我在哪里。)两种模式都有效。唯一的区别是,为了使

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

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


(我已经阅读了PockDB文档好几次,但我无法定义它,如果有文档,请告诉我在哪里。)

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

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


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

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

每个用户的数据库

  • 每个用户的数据库,是CouchDB中的每个用户的数据库模式。CouchDB可以在每次在CouchDB中创建/删除用户时处理数据库的创建/删除。在这种情况下,每个数据库客户端将复制完整的用户数据库
  • 您可以在服务器中启用它
  • 如果用户数据是隔离的,并且您不需要在用户之间共享信息,那么这是一种合适的方法。在这种情况下,如果需要将许多用户数据库与CouchDB中的另一个数据库同步,可能会出现一些可伸缩性问题。看这个
针对每个用户的单个数据库

  • 您需要在CouchDB/db中使用过滤复制功能。这说明了如何使用它
  • 使用这种方法,您可以在数据库中复制CouchDB数据库的一个子集
  • 因为只有一个数据库,所以用户之间更容易共享信息
  • 但是,这种方法存在一些性能问题。过滤过程非常低效。因为它必须处理整个数据集,包括已删除的文档,以确定要包含在复制中的文档集。此筛选在服务器中的couchdb外部进程中完成,这会增加进程的成本
  • 如果需要使用过滤方法,最好使用Mango选择器,因为它是在CouchDB主进程中评估的,并且可以索引。请参见数据库复制筛选选项中的
结论

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

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