大型csv文件的mongodb架构

时间:2016-09-19 21:13:29

标签: mongodb schema

我有一个行数非常多的csv文件,我想将它存储在mongodb中。在设计架构时我需要一些建议。

架构类型1:

var CsvSchema = new Schema({
    col1: String, col2: String, col3: String, col4: String //will save each row of csv file as an object.
});

架构类型2:

var CsvSchema = new Schema({
    row: [] //will store each row of csv file as array
});

然后我需要执行大量的读取操作这个数据(报告应用程序)。 我的假设:

  • 与Schema类型2相比,数据存储占用的空间要少得多 类型1.
  • 我想类型1中的读操作会比键入2更快。

考虑到两者的优点和缺点,我应该使用哪种模式来存储数据......

2 个答案:

答案 0 :(得分:0)

将每行保存为数组(架构2)。您将占用更少的存储空间,但MongoDB的索引和数据操作将更加复杂。

重要的是要记住MongoDB默认接受每个文档16MB。

我建议您阅读有关使用MongoDB的数组操作的文章:http://blog.mlab.com/2013/04/thinking-about-arrays-in-mongodb/

答案 1 :(得分:0)

设计无sql数据库时的主要问题是:您将如何查询数据?

因此,如果您只需要检索完整的行,则永远不需要搜索某些字段,并且您有理由相信这将永远不会在软件生命周期内发生变化,请继续使用类型2.但请注意,这是一个查询的噩梦。

如果您将使用每个人都希望从数据存储区搜索的“正常”搜索操作(搜索其中column1为“x”且column3不是“y”的所有文档),请转到类型1.