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



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

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

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

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

您会推荐我使用哪个数据库和模式来解决此问题?

谢谢!

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

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

最新更新