我有'n'部门的数据 每个部门都有1000多个数据集 每个数据集都有超过10,000个csv文件(大小超过10MB),每个文件都有不同的模式。
这些数据在未来会变得更多
我想将此数据映射到mongodb
我无法将每个数据集映射到mongo中的文档,因为它的限制为4-16MB
我不能为每个数据集创建集合,因为最大集合数也是有限的(< 24000)
所以最后我想为每个部门创建集合,在该集合中为属于该部门的csv文件中的每个记录创建一个文档。
会出现性能问题吗?
文件数量是否有最大限制?
我可以做任何其他设计吗?
答案 0 :(得分:0)
如果我们将每条记录映射到文档,会出现性能问题吗?
这完全取决于你如何搜索它们。当您使用大量仅影响一个文档的查询时,它可能更快。当更高的文档粒度导致大量跨文档查询时,它会变慢,因为MongoDB本身不能这样做。
文件数量是否有最大限制?
没有
我可以做任何其他设计吗?
可能,但这取决于您想要查询数据的方式。如果您满意将文件视为BLOB,而BLOB整体检索但未在数据库级别进行搜索或分析,则可以考虑将其存储在GridFS上。它是一种在MongoDB上存储大于16MB的文件的方法。
总的来说,MongoDB数据库设计并不太依赖于您拥有的数据量和数量,而是取决于您希望如何使用它。
答案 1 :(得分: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为BSON文档支持不超过100级的嵌套...
因此,最好为每条记录使用一个文档
文件数量是否有最大限制?
不,它在mongoDB的参考手册中提到
...更改了上限集合中的最大文档数 版 2.4。
如果为封顶集合指定最大文档数 使用max参数创建,限制必须小于232 文档。如果您未指定最大文档数 创建一个上限集合,对数量没有限制 文件 ......
我可以做任何其他设计吗?
如果您的文档太大,那么您可以考虑在应用程序级别进行文档分区。但它在应用层的计算要求很高。