鉴于数据结构如下,您可以看到一个文件中的每个记录对ATT1和ATT2具有相同的值。
// Store in fileD001.txt
ATT1 | ATT2 | ATT3 | ATT4 ... | ATT200
D001 | 10102011 | x13 | x14 ... | x1200
D001 | 10102011 | x23 | x24 ... | x2200
...
D001 | 10102011 | xN3 | xN4 ... | xN200
// Store in fileD002.txt
ATT1 | ATT2 | ATT3 | ATT4 ... | ATT200
D002 | 10112011 | x13 | x14 ... | x1200
D002 | 10112011 | x23 | x24 ... | x2200
...
D002 | 10112011 | xN3 | xN4 ... | xN200
// Store in fileD003.txt
ATT1 | ATT2 | ATT3 | ATT4 ... | ATT200
D003 | 10132011 | x13 | x14 ... | x1200
D003 | 10132011 | x23 | x24 ... | x2200
...
D003 | 10132011 | xN3 | xN4 ... | xN200
Method One: Assume I use the following structure to store the data.
doc = { “ATT1" : "D001",
"ATT2" : "10102011",
"ATT3" : "x13",
"ATT4" : "x14",
...
"ATT200" : "x1200"
}
问题是,数据包含过多的重复信息,浪费了DB的空间。但是,好处是每条记录都有自己的_id。
Method One: Assume I use the following structure to store the data.
doc = { “ATT1" : "D001",
"ATT2" : "10102011",
"sub_doc" : { "ATT3" : "x13",
"ATT4" : "x14",
...
"ATT200" : "x1200"
}
}
问题是,数据大小N大约为1~5000,太多,MongoDB在一次插入操作中无法处理。当然,我们可以使用$ push update修饰符逐步追加数据。但是,每个记录都不再以这种方式存在_id。
我并不是说每条记录都必须有自己的ID。我只是在为这样的任务寻找更好的设计解决方案。
谢谢
答案 0 :(得分:0)
选项1很不错,因为它为您提供了最简单的数据。因为价格便宜所以可能不太担心空间?
选项2可以节省空间,但请注意您的文档不会太大。最大文档大小可能会限制您。此外,如果您将来分片,这可能会限制您。
选项3与它有点关系。有两个系列。第一个是查找ATT1和ATT2对。另一个集合是对另一个和最终的对象的引用。
parent = { att1: "val1", att2: "val2"}
child = {parent: parent.id, att3: "val3"...}