我有一个行数非常多的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
});
然后我需要执行大量的读取操作这个数据(报告应用程序)。 我的假设:
考虑到两者的优点和缺点,我应该使用哪种模式来存储数据......
答案 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.