2015-04-28 94 views
1

我是NOSQL的新手,所以請耐心等待,我瀏覽了教程和相關的時間序列基礎指南,但仍然卡住了。傳感器數據的mongodb結構

我目前正在使用1個傳感器,但是無論放在哪裏,都需要至少可擴展到數以萬計的傳感器。傳感器將通過GPRS進行遠程傳輸和數據傳輸,因此可以每隔15分鐘以大塊方式提取數據,但我們希望從傳感器每分鐘存儲數據。

有我希望存儲的時間序列數據,如 GPS位置,能源使用和收費率,但老實說,我很困惑數據庫結構來存儲這些數據。我還需要存儲更多的交易清單。我還需要存儲非時間序列數據,如獨特的傳感器ID,傳感器綁得ETX用戶..

有一個MongoDB的博客here討論的時間序列和 here單個傳感器。

這些建議每個文檔都應該保存的時間一大塊(如價值數據的小時)細分裏面,像這樣的值:

{ timestamp_hour: ISODate("2013-10-10T23:06:00.000Z"), type: 「energy_use」, values: { 0: -1, 1: .. 2: .. 3: 4: 5: 6: 7: 8: 58: .. 59 .. } }

我不明白是如何將這些數據鏈接到特定的傳感器? 如果我有10個傳感器,我是否仍然有相同的結構,其中一個文件存儲一小時的數據?這是每個傳感器每小時一個文檔還是那個小時內所有傳感器的一個文檔。爲什麼不在每個傳感器上記錄時間序列的文檔?

對不起,如果這是有點困惑,我顯然正在努力與NOSQL模型一點點。

如果任何人都可以提供關於如何構建數據庫的建議,我會永遠感激,或者讓我走向更全面的理解。

回答

1

如果你通過這個演示文稿,你會找到你的答案。它討論了建模16000個傳感器數據。

Time Series Data Modeling

你可以有來自傳感器的數據在一個文件中,如果你只是想從所有傳感器聚集。但是,如果您希望基於傳感器ID進行查詢,則最好將sensorId嵌入文檔的_id字段中,如下所示:

{ 
    _id: "38392" 
    data: [however you want to capture, per min, per hour] 
}