最好 design/technology 来存储快速增长的数据量
Best design/technology to store fast growing amount of data
我需要存储每 1 分钟来自百万台设备的信号,其中每个信号对象有 4 个属性加上时间戳:
- 设备 ID,始终相同
- Attr1,始终相同(设备型号)
- Attr2,大约每 6 个月更改一次。 (设备固定位置)
- Attr3,每 2-4 周更改一次(设备固件版本)
根据收集到的数据,我需要得到一些报告,例如 "How many devices with attr2 checked in last month"。这里的限制是我可能需要按任何属性进行过滤和分组,而不仅仅是设备 ID。
我的第一个方法是在 bigquery 中创建一个包含嵌套记录的模型,但我不确定这是否是最佳解决方案。
你会推荐我使用哪个数据库和模式来解决这个问题?
谢谢!
有趣的问题 - BigQuery 可以以这种速度消化(限制是每个项目秒前 100K 条记录) - 但看起来 DeviceId 是你的密钥,因此将它公开为非嵌套列是有意义的 - 在这种情况下 - 没有嵌套列 - 存储成本高但查询非常有效。作为替代方案,您可以使用 Attr1、Attr2、Attr3 作为键列,并将 deviceId 列表用作嵌套列 - 从存储的角度来看最有效 - 但从分析查询的角度来看可能不是很好。
您可以使用另一个选项来仅存储更改(或 daily/hourly 聚合)(因此了解 10:01、10:02、10:03 你可以说知道该设备在 2018 年 5 月 5 日(或至少在 2018 年 5 月 5 日的第 10 小时)报告
在这种情况下,您可以实施一些内存解决方案(例如 appengine),它将等待设备状态的更改,并且仅在这种情况下将数据流式传输到 BigQuery
我需要存储每 1 分钟来自百万台设备的信号,其中每个信号对象有 4 个属性加上时间戳:
- 设备 ID,始终相同
- Attr1,始终相同(设备型号)
- Attr2,大约每 6 个月更改一次。 (设备固定位置)
- Attr3,每 2-4 周更改一次(设备固件版本)
根据收集到的数据,我需要得到一些报告,例如 "How many devices with attr2 checked in last month"。这里的限制是我可能需要按任何属性进行过滤和分组,而不仅仅是设备 ID。
我的第一个方法是在 bigquery 中创建一个包含嵌套记录的模型,但我不确定这是否是最佳解决方案。
你会推荐我使用哪个数据库和模式来解决这个问题?
谢谢!
有趣的问题 - BigQuery 可以以这种速度消化(限制是每个项目秒前 100K 条记录) - 但看起来 DeviceId 是你的密钥,因此将它公开为非嵌套列是有意义的 - 在这种情况下 - 没有嵌套列 - 存储成本高但查询非常有效。作为替代方案,您可以使用 Attr1、Attr2、Attr3 作为键列,并将 deviceId 列表用作嵌套列 - 从存储的角度来看最有效 - 但从分析查询的角度来看可能不是很好。
您可以使用另一个选项来仅存储更改(或 daily/hourly 聚合)(因此了解 10:01、10:02、10:03 你可以说知道该设备在 2018 年 5 月 5 日(或至少在 2018 年 5 月 5 日的第 10 小时)报告 在这种情况下,您可以实施一些内存解决方案(例如 appengine),它将等待设备状态的更改,并且仅在这种情况下将数据流式传输到 BigQuery