我需要每隔1分钟存储来自百万台设备的信号,其中每个信号对象有4个属性加上时间戳:
通过收集的数据,我需要获得一些报告,例如"上个月检查了多少具有attr2的设备"。这里的限制是我可能需要按任何属性进行过滤和分组,而不仅仅是设备ID。
我的第一个方法是在bigquery中建立一个嵌套记录的模型,但我不确定这是否是最好的解决方案。
您建议我使用哪种数据库和架构来解决此问题?
谢谢!
答案 0 :(得分:1)
有趣的问题 - BigQuery可以用这个速度消化(限制是每个项目前几秒100K记录) - 但看起来DeviceId是你的密钥所以它有意义将它暴露为非嵌套列 - 在这种情况下 - 没有嵌套列 - 存储的高价格,但非常有效的查询。作为替代方案,您可以使用Attr1,Attr2,Attr3作为关键列,将deviceId列表作为嵌套列 - 从存储角度来看将是最有效的 - 但从分析查询的角度来看可能不是很好。
您只能存储更改(或每日/每小时聚合)的另一个选项(因此,在10:01,10:02,10:03知道特定设备报告对您来说并不重要知道该设备于2018年5月5日(或至少在2018年5月5日至10日)报告 在这种情况下,您可以实现一些内存解决方案(例如appengine),它将等待设备状态的更改,并且仅在此情况下将数据流转换为BigQuery