MongoDB在一个集合中的巨大数据。如何设计和存储?

时间:2015-09-01 16:34:00

标签: mongodb relationship object-oriented-database

我正在努力实施数据库,为农业的某些决策支持工具提供数据。好吧,我一直在学习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文件限制的这类数据。

对我这个大而无聊的文字感到抱歉。

谢谢大家!

0 个答案:

没有答案