Re: Time Series and Sensor Data

From: Kevin Adistambha <kevinadi@xxxxxxxxxxx>
To: mongodb-user <mongodb-user@xxxxxxxxxxxxxxxx>
Date: Wed, 20 Apr 2016 00:46:23 -0700 (PDT)
Why ads?


Hi Guy,


   1. The examples given on e.g. 
   http://blog.mongodb.org/post/65517193370/schema-design-for-time-series-data-in-mongodb ;
   show storing data for every second. Is the same approach/principle valid 
   when the requirements are to store sensor data e.g. every 15 minutes or 
   every hour? So e.g. in these cases storing data for 24 hours in 1 document? 

Please note that the blog post was written two years ago, and so may 
contain outdated technical details. For example, the in-place update 
mentioned in the blog post (under “More Updates than Inserts” heading) is 
only valid for the MMAPv1 storage engine 
<https://docs.mongodb.org/manual/core/mmapv1/>, and less relevant to the WiredTiger 
engine <https://docs.mongodb.org/manual/core/wiredtiger/>.

If your use case closely follows the case in the blog post, then the 
approach is still valid even if you need to store different time span. The 
time span involved in designing a time-series solution is highly dependent 
on what you need to do with the data you collected. The blog post solution 
assumes that you need to see a summary of data for every minute, but also 
need to store the detailed information every second.


   1. Some sensors can sense at the same time different ‘things’ e.g. 
   temperature and humidity. Is it best to store the temperature and humidity 
   data in 2 separate documents in the same collection (or both 
   readings/values in the same document)? Additionally, it is possible the 
   time intervals for reading the values of temperature and humidity can be 
   different. 

It depends on how you want to use the data. If the temperature and humidity 
measurements are:

   - frequently used together, and 
   - collected at the same time interval (e.g. every second), and 
   - need to be summarized within the same timeframe (e.g. every minute) 

then you could combine the two in a single document, for example:

{
  timestamp: <timestamp>,
  temperature: {0:23, 1:23.5, 2:23.6, ...}
  humidity:    {0:70, 1:70,   2:70,   ...}
}

However, if temperature and humidity are:

   - not frequently used together, or 
   - collected at different time intervals (e.g. every second for 
   temperature, every minute for humidity), or 
   - need to be summarized at different timeframe (e.g. every hour for 
   temperature, every day for humidity) 

then storing temperature and humidity in two different documents may be a 
better fit.

Flexibility is also important: to have the possibility to easily add other 
sensor types (e.g. for pH, etc).

MongoDB stores data in a flexible schema, so you can easily add more 
measurements in your documents.

Other resources regarding schema design that you may find useful are:

   - Data Models <https://docs.mongodb.org/manual/data-modeling/
   - 6 Rules of Thumb for MongoDB Schema Design 
   <http://blog.mongodb.org/post/87200945828/6-rules-of-thumb-for-mongodb-schema-design-part-1>
   . 

Best regards,
Kevin


-- 
You received this message because you are subscribed to the Google Groups "mongodb-user"
group.

For other MongoDB technical support options, see: https://docs.mongodb.org/manual/support/
--- 
You received this message because you are subscribed to the Google Groups "mongodb-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mongodb-user+unsubscribe@xxxxxxxxxxxxxxxx.
To post to this group, send email to mongodb-user@xxxxxxxxxxxxxxxx.
Visit this group at https://groups.google.com/group/mongodb-user.
To view this discussion on the web visit https://groups.google.com/d/msgid/mongodb-user/87be0822-e407-4691-a7d3-4bce13be1721%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Why ads?