time-series - 什么是时间序列数据基数?
问题描述
我见过很少有地方给出时间序列基数的定义,类似于:
假设您在 20 个位置有 1000 台 IoT 设备,它们运行 5 个固件版本之一,并报告每个设备来自 5 种传感器的输入。这组的基数是 500,000 (1000 x 20 x 5 x 5)。在某些情况下,这很快就会变得难以管理,因为即使为设备添加和跟踪新的固件版本也会将集合增加到 600,000 (1000 x 20 x 6 x 5)
或者
我觉得这是非常夸张的定义。例如,如果您有一组 10 行,并且每行用于不同的设备,来自不同的位置、不同的固件、不同的传感器,它会将基数气球增加到 10x10x10x10 = 10,000。而且只有10行!
时间序列数据集基数能否超过数据集的总行数?
解决方案
在时间序列中,通常将时间序列的基数估计为唯一标签/标签值和测量次数的所有可能组合。该估计有助于了解在数据库的生命周期中,有多少不同的时间序列可能被存储在数据库中,即不仅仅是在当前状态。请注意,估计假设标签之间的独立性,通常不成立。InfluxDB 中系列基数的这个定义讨论了这个方面,除了问题中的链接之外,它也是一个有趣的阅读。
最好提前了解时间序列的可能基数,因为某些时间序列数据库不能很好地处理高基数。例如,请参阅这篇文章以处理 InfluxDB 中的高基数问题。
其他时间序列数据库,例如 TimescaleDB,在处理高基数方面没有任何问题,因为标签没有特殊处理。在创建索引时了解基数可能很有用,因为更高的基数使索引更有用,但占用更多空间。
推荐阅读
- google-cloud-platform - 公开 Google Cloud 映像
- c# - Raise Events to the UI thread from a Task
- regex - SCALA regex: Find matching URL rgex within a sentence
- android - Cannot remove an external library causing the variation in library version conflict
- ios - What might cause a GL_INVALID_OPERTATION error on a call to EAGLContext presentRenderBuffer?
- javascript - 无法动态获取 JSON 值
- azure-devops - Azure Devops handle special character in yaml
- python - What is the training complexity of Sklearn GridSearch?
- angularjs - 如何在 AngularJS 中拦截 $http 的便捷快捷方式
- javascript - 猫鼬包装类。生产失败