3

我最近搬到了 Web 应用程序后端的 MongoDB 部分,Web 应用程序本身就是一个验证工具,工作流程如下所示:

  • 用户上传文件(通常数十万行)
  • 验证器检查它是否输出大量消息(每行可能不止一条)
  • ...最后提供一些统计数据

我对我的应用程序进行了建模,以便每个用户都有自己的数据库,其中包含:

  • 文件(通过 GridFS 保存)
  • 包含消息的集合(在某些情况下可能超过一百万行)
  • 带有统计信息的集合

我们有几百个用户,所以MongoDB 最终会有几百个 DB

当然,我可以将所有数据保存在同一个数据库中,使用名称空间将来自不同用户的数据分开。但是我觉得在连接 URI 中发送数据库很方便,而且我发现发出“删除数据库”语句来清除用户更直观,而不是在大型数据库中搜索和删除其数据。

我对 MongoDB 很陌生,所以我的问题是:在同一个 MongoDB 实例中拥有多个数据库有什么缺点吗?或者我应该对这个问题给予什么特别的考虑?

4

1 回答 1

0

我对 MongoDB 并不特别熟悉。通常,打开与数据库的连接是一个相对较慢的操作,并且会占用系统资源。在你的情况下这是否足够重要,我不能说。

为每个用户使用不同的数据库会使执行访问多个用户数据的查询变得困难。也许你没有必要这样做。

不过,我认为通常只在每条记录中放置一个用户 ID 而不是创建一个单独的数据库会简单得多。单独的数据库有什么好处?好的,删除用户意味着说“删除数据库”。但是从单个数据库中删除用户应该意味着说“从 user=? 的 tableX 中删除;从 user=? 的 tableY 中删除” 等等,无论您拥有多少相关表格。我无法想象它是数百,对吧?也许半打代码左右?

于 2013-03-08T16:10:43.650 回答