我需要每1分钟存储来自百万台设备的信号,其中每个信号对象都有4个属性和时间戳:
通过收集到的数据,我需要得到一些报告,比如“上个月有多少设备使用attr2签入”。这里的限制是,我可能需要根据任何属性进行筛选和分组,而不仅仅是设备ID。
我的第一种方法是在bigquery中建立一个带有嵌套记录的模型,但我不确定这是否是最好的解决方案。
您推荐我解决这个问题的数据库和模式是什么?
谢谢!
发布于 2018-05-06 23:51:20
有趣的问题-- BigQuery可以以这样的速度消化(限制是每一个项目100 K的记录前几秒钟)--但是看起来DeviceId是你的关键,所以把它作为非嵌套列公开是有意义的--在这种情况下--没有嵌套列--存储代价很高,但是非常有效的查询。作为替代,您可以使用Attr1、Attr2、Attr3作为键列,使用deviceId列表作为嵌套列--从存储的角度来看将是最有效的--但从分析查询的角度来看可能不是很好。
另一个选项是只存储更改(或每天/每小时的聚合)(因此,不重要的是知道特定设备报告在10:01、10:02、10:03,并且您可以说知道该设备报告在5-5-2018年(或至少在5-5-2018年的10小时),在这种情况下,您可以在内存解决方案(例如appengine)中实现一些等待设备状态更改的解决方案,并且只有在这种情况下,才能将数据流数据发送给BigQuery。
https://stackoverflow.com/questions/50205008
复制相似问题