存储可穿戴数据的理想数据库选择(Fitbit)

时间:2015-09-20 21:55:48

标签: mongodb fitbit bigdata database

我最近在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"
    }
}

如果我想在我的应用程序中对这些数据进行分析,那么数据库存储传感器数据的理想选择是什么? 谢谢!

2 个答案:

答案 0 :(得分:2)

Mongo需要担心的一件事:存储数据的开销很大。在典型的RDBMS或时间序列数据库中,它只存储您的数据,而不是每行的元数据(字段名称和类型)。

你应该研究像Graphite和InfluxDB这样的时间序列数据库。即使是卡桑德拉也有一些特色。

另一方面,正如另一方面的海报所指出的那样,从常规SQL数据库开始可能更简单,并且只在需要时进行迁移。通过推迟选择,您将更好地理解您想要的具体权衡。

一个简单的数据库就是Graphite。它进行了非常具体的权衡:每个图形的数​​据存储要求是不变的(即,即使您记录多年的数据,也不会随着时间的推移而变大。)它还可以处理每秒数百万个指标。唯一的缺点是分辨率“老化”,所以你可以告诉它在几天内存储1m分辨率,然后在一个月内降低到10m分辨率,然后在1年内降低1h分辨率,在10年内降低1d分辨率。您可以告诉它保持每个间隔的统计数据(最大值,最小值,平均值,第90百分位数)。获取任意时间跨度的图形基本上是单个磁盘搜索。有很好的仪表板可以查看您的数据(我建议Grafana)。

答案 1 :(得分:0)

您可以尝试使用Amazon Redshift,

  • 它具有使用复制命令的直接json加载功能。
  • 它支持完整的ANSI SQL(因为它基于PostgreSQL)。
  • 内部有分析功能。
  • 如果您想要更多" analytics"它支持Python和R.
  • 它与大多数流行的报告解决方案(Microstrategy,Tableau等)直接连接。
  • 完全在AWS云上。
相关问题