MongoDB数据建模:使用大量数据库的任何缺点?

时间:2013-03-05 10:18:03

标签: mongodb database-design data-modeling

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

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

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

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

我们有几百个用户,因此 MongoDB最终会有几百个数据库

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

我是MongoDB的新手,所以我的问题是:在同一个MongoDB实例中有几个DB有任何缺点吗?或者我是否应该特别考虑这个问题?

1 个答案:

答案 0 :(得分:0)

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

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

但是,我认为将每个记录中的用户ID放在一起而不是创建一个单独的数据库会更简单。独立数据库的收益是什么?好的,删除用户意味着说“删除数据库”。但是从单个数据库中删除用户应该是说“从tableX中删除user =?;从tableY中删除user =?”等等,但你有很多相关的表。我无法想象这是几百个吧?也许有六行代码左右?