我最近在Fitbit上开发了一个应用程序。 我正在考虑使用MongoDB或HBase,因为它支持以Key值格式处理数据的聚合和支持。 示例数据集:
{
"activities-heart": [
{
"customHeartRateZones": [],
"dateTime": "today",
"heartRateZones": [
{
"caloriesOut": 2.3246,
"max": 94,
"min": 30,
"minutes": 2,
"name": "Out of Range"
},
{
"caloriesOut": 0,
"max": 132,
"min": 94,
"minutes": 0,
"name": "Fat Burn"
},
{
"caloriesOut": 0,
"max": 160,
"min": 132,
"minutes": 0,
"name": "Cardio"
},
{
"caloriesOut": 0,
"max": 220,
"min": 160,
"minutes": 0,
"name": "Peak"
}
],
"value": "64.2"
}
],
"activities-heart-intraday": {
"dataset": [
{
"time": "00:00:00",
"value": 64
},
{
"time": "00:00:10",
"value": 63
},
{
"time": "00:00:20",
"value": 64
},
{
"time": "00:00:30",
"value": 65
},
{
"time": "00:00:45",
"value": 65
}
],
"datasetInterval": 1,
"datasetType": "second"
}
}
如果我想在我的应用程序中对这些数据进行分析,那么数据库存储传感器数据的理想选择是什么? 谢谢!
答案 0 :(得分:2)
Mongo需要担心的一件事:存储数据的开销很大。在典型的RDBMS或时间序列数据库中,它只存储您的数据,而不是每行的元数据(字段名称和类型)。
你应该研究像Graphite和InfluxDB这样的时间序列数据库。即使是卡桑德拉也有一些特色。
另一方面,正如另一方面的海报所指出的那样,从常规SQL数据库开始可能更简单,并且只在需要时进行迁移。通过推迟选择,您将更好地理解您想要的具体权衡。
一个简单的数据库就是Graphite。它进行了非常具体的权衡:每个图形的数据存储要求是不变的(即,即使您记录多年的数据,也不会随着时间的推移而变大。)它还可以处理每秒数百万个指标。唯一的缺点是分辨率“老化”,所以你可以告诉它在几天内存储1m分辨率,然后在一个月内降低到10m分辨率,然后在1年内降低1h分辨率,在10年内降低1d分辨率。您可以告诉它保持每个间隔的统计数据(最大值,最小值,平均值,第90百分位数)。获取任意时间跨度的图形基本上是单个磁盘搜索。有很好的仪表板可以查看您的数据(我建议Grafana)。
答案 1 :(得分:0)
您可以尝试使用Amazon Redshift,