存储快速增长的数据量的最佳设计/技术

时间:2018-05-06 22:12:32

标签: google-bigquery time-series bigdata scalability iot

我需要每隔1分钟存储来自百万台设备的信号,其中每个信号对象有4个属性加上时间戳:

  • 设备ID,始终相同
  • Attr1,始终相同(设备型号)
  • Attr2,每6个月改变一次aprox。 (设备固定位置)
  • Attr3,每2-4周更改一次(设备固件版本)

通过收集的数据,我需要获得一些报告,例如"上个月检查了多少具有attr2的设备"。这里的限制是我可能需要按任何属性进行过滤和分组,而不仅仅是设备ID。

我的第一个方法是在bigquery中建立一个嵌套记录的模型,但我不确定这是否是最好的解决方案。

您建议我使用哪种数据库和架构来解决此问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

有趣的问题 - BigQuery可以用这个速度消化(限制是每个项目前几秒100K记录) - 但看起来DeviceId是你的密钥所以它有意义将它暴露为非嵌套列 - 在这种情况下 - 没有嵌套列 - 存储的高价格,但非常有效的查询。作为替代方案,您可以使用Attr1,Attr2,Attr3作为关键列,将deviceId列表作为嵌套列 - 从存储角度来看将是最有效的 - 但从分析查询的角度来看可能不是很好。

您只能存储更改(或每日/每小时聚合)的另一个选项(因此,在10:01,10:02,10:03知道特定设备报告对您来说并不重要知道该设备于2018年5月5日(或至少在2018年5月5日至10日)报告 在这种情况下,您可以实现一些内存解决方案(例如appengine),它将等待设备状态的更改,并且仅在此情况下将数据流转换为BigQuery

相关问题