1

我有的 ?

我有“n”个部门的数据每个部门有超过 1000 个数据集每个数据集有超过 10,000 个 csv 文件(大小大于 10MB),每个文件都有不同的模式。

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

我想做的事?

我想将此数据映射到 mongodb

我使用了哪些方法?

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

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

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

我想从你那里知道:

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

文件数量有最大限制吗?

我还能做其他设计吗?

4

2 回答 2

0

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

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

文件数量有最大限制吗?

不。

我还能做其他设计吗?

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

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

于 2013-09-27T08:46:36.193 回答
0

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

将每条记录映射到 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 个文档。如果在创建上限集合时没有指定最大文档数,则文档数没有限制...

我还能做其他设计吗?

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

于 2013-09-27T14:06:51.417 回答