Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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
Mongodb单个数据库vs每个客户端的集合vs每个客户端的数据库_Mongodb_Lithium - Fatal编程技术网

Mongodb单个数据库vs每个客户端的集合vs每个客户端的数据库

Mongodb单个数据库vs每个客户端的集合vs每个客户端的数据库,mongodb,lithium,Mongodb,Lithium,我想使用mongodb和Limition构建一个Web服务。更好的是: 存储一个集合中所有客户的数据(如一个集合交易中多个客户的所有交易单据) 创建多个集合,例如事务\客户端1、事务\客户端2等 每个客户端一个数据库 该系统必须具有可扩展性,并且必须易于部署要提供方向,就必须对您想要实现的目标有更多的了解 但是,我会排除选项2(多个集合),因为我看不出这种方法的任何优点:您必须在运行时确定集合名称,编写查询有点棘手,并且您可以拥有的集合数量有一个硬限制(大约150万个集合,2GB) 选项1有

我想使用mongodb和Limition构建一个Web服务。更好的是:

  • 存储一个集合中所有客户的数据(如一个集合交易中多个客户的所有交易单据)

  • 创建多个集合,例如事务\客户端1、事务\客户端2等

  • 每个客户端一个数据库


该系统必须具有可扩展性,并且必须易于部署

要提供方向,就必须对您想要实现的目标有更多的了解

但是,我会排除选项2(多个集合),因为我看不出这种方法的任何优点:您必须在运行时确定集合名称,编写查询有点棘手,并且您可以拥有的集合数量有一个硬限制(大约150万个集合,2GB)

选项1有助于隔离客户端并可能提高安全性,但在选择数据库时仍存在编程错误的风险。然而,隔离代码很容易

这两个选项都有一个缺点,即您无法跨所有集合进行查询。但是,您总是希望能够访问一些基本上在所有客户机之间共享的集合(例如日志、统计数据等),因此您需要承担分离这些集合的额外负担


这就是为什么我通常选择选项1。

我建议从一个db和一个集合开始。它通常更容易管理一个数据库。将来,如果您需要创建单独的数据库(以加速某些客户机),您可以将此客户机的数据放在单独的数据库服务器上(或放在单独的集合中)。在设计应用程序的体系结构时,请记住这一特性。因此,我的意见是选择1。从另一个角度看,您可以通过分片和复制来扩展一个集合

系统必须具有可扩展性,并且必须易于部署

您的数据库将是可伸缩的,因为您使用的是mongodb,它是为可伸缩而设计的。而且您可以轻松地部署数据库,因为它是无模式的。通常,您可能需要简单地将一些数据从一台服务器复制到另一台服务器。有很多方法可以做到这一点:,数据