我正在努力实施数据库,为农业的某些决策支持工具提供数据。好吧,我一直在学习mongoDB及其最佳应用实践(blog.engineyard.com/2011/mongodb-best-practices, http://s3.amazonaws.com/info-mongodb-com/MongoDB-Performance-Best-Practices.pdf),但我仍然对最好的问题有所疑问设计数据库的方法。实际上,我看到了许多不同的可能性,甚至在这里(stackoverflow.com/questions/5373198/mongodb-relationships-embed-or-reference)。
我的数据库需要存储大量数据。我会有很多气象站,每个气象站都有很多数据。你可以在下面看到我的计划。
这是存放气象站。我创建了一个名为location的对象,其中包含国家,州,市和县。有时我需要按国家/地区,有时候是按国家/地区等来查找电台...
var weatherStationSchema = new mongoose.Schema({
name: String,
active: {
type: Boolean,
default: true
},
private: {
type: Boolean,
default: false
},
organization: {
type: mongoose.Schema.ObjectId,
ref: 'Organization'
},
location: {
country: {
type: mongoose.Schema.ObjectId,
ref: 'Country',
required: true
},
state: {
type: mongoose.Schema.ObjectId,
ref: 'State',
required: true
},
city: {
type: mongoose.Schema.ObjectId,
ref: 'City'
},
county: {
type: mongoose.Schema.ObjectId,
ref: 'County'
},
lat: Number,
lon: Number,
utcOffset: Number,
zoneName: String
},
metaData: {},
__v: {
type: Number,
select: false
}
});
var WeatherStation = mongoose.model('WeatherStation', weatherStationSchema);
所以,这是我的数据文档方案。问题是什么?我在这份文件中会有很多数据。我做了一些测试,我意识到通过这种方式。我能够存储106.000条记录(Understanding MongoDB BSON Document size limit)。
var wsDataSchema = new mongoose.Schema({
weatherStation: {
type: mongoose.Schema.ObjectId,
ref: 'WeatherStation'
},
datetime: 'Moment',
utcOffset: Number,
interval: Number,
data: {
minTemp: Number,
avgTemp: Number,
maxTemp: Number,
avgHumi: Number,
winSpeed: Number,
SolarRad: Number
},
__v: {
type: Number,
select: false
}
});
var WsData = mongoose.model('WsData', wsDataSchema);
为了解决这个问题,我一直在寻找解决方案并试图了解如何使用MongoDB实现这种数据库的最佳方式,并且我正在研究gridfs(https://www.mongodb.com/blog/post/building-mongodb-applications-binary-files-using-gridfs-part-1?_ga=1.247329284.1472580275.1437575537)。
所以,我的问题是:我应该使用像gridFS这样的东西,或者我做错了什么或者...我如何使用超过16MB文件限制的这类数据。
对我这个大而无聊的文字感到抱歉。
谢谢大家!