【问题标题】:Mapping datasets to NoSql (MongoDB) collection将数据集映射到 NoSql (MongoDB) 集合
【发布时间】:2013-09-27 06:35:46
【问题描述】:

我有什么?

我有'n'部门的数据 每个部门都有1000多个数据集 每个数据集都有超过 10,000 个 csv 文件(大小大于 10MB),每个文件具有不同的架构。

这些数据在未来会增长得更多

我想做什么?

我想将此数据映射到 mongodb

我使用了哪些方法?

我无法将每个数据集映射到 mongo 中的文档,因为它的限制为 4-16MB

我无法为每个数据集创建集合,因为最大集合数也是有限的 (

所以最后我想为每个部门创建一个集合,在该集合中为属于该部门的 csv 文件中的每条记录创建一个文档。

我想知道你:

如果我们将每条记录映射到文档,会不会出现性能问题?

文档数量有上限吗?

我还能做其他设计吗?

【问题讨论】:

标签: mongodb database nosql


【解决方案1】:

如果我们将每条记录映射到文档,会不会出现性能问题?

将每条记录映射到 mongodb 中的文档并不是一个糟糕的设计。您可以在 mongodb 站点查看常见问题解答 http://docs.mongodb.org/manual/faq/fundamentals/#do-mongodb-databases-have-tables 。 它说,

...MongoDB 数据库将其数据存储在集合中,而不是表, 它们大致相当于 RDBMS 表。一个集合拥有一个 或多个文档,对应于一个记录或 关系数据库表....

除了 BSON 文档大小(16MB)的限制外,文档嵌套级别的最大限制为 100

http://docs.mongodb.org/manual/reference/limits/#BSON 文档大小

...BSON 文档的嵌套深度在 2.2 版中已更改。

MongoDB 支持不超过 100 层的 BSON 文档嵌套...

所以最好为每条记录使用一个文档

文档数量是否有最大限制?

不,在mongoDB的参考手册中有提及

...上限集合中的最大文档数已更改 版本 2.4.

如果您指定上限集合的最大文档数 使用max参数创建,限制必须小于232 文件。如果您不指定最大文档数时 创建一个有上限的集合,没有数量限制 文件 ...

我还能做其他设计吗?

如果您的文档太大,那么您可以考虑在应用程序级别进行文档分区。但对应用层的计算要求较高。

【讨论】:

    【解决方案2】:

    如果我们将每条记录映射到文档,会不会出现性能问题?

    这完全取决于您如何搜索它们。当您使用大量只影响一个文档的查询时,这种方式可能会更快。当更高的文档粒度导致大量跨文档查询时,它会变慢,因为 MongoDB 本身无法做到这一点。

    文档数量有上限吗?

    没有。

    我还能做其他设计吗?

    也许可以,但这取决于您要如何查询数据。当您满足于将文件视为 BLOB 并将其作为一个整体检索但未在数据库级别进行搜索或分析时,您可以考虑将它们存储在 GridFS 上。这是一种在 MongoDB 上存储大于 16MB 的文件的方法。

    一般来说,MongoDB 数据库设计不太依赖于您拥有什么和多少数据,而是取决于您希望如何使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-09
      • 1970-01-01
      • 2015-07-13
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      相关资源
      最近更新 更多