TDengine3.0如何设计时序数据库以高效应对高基数问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1813个文字,预计阅读时间需要8分钟。
小T+导读:数据集的高基数问题直接困扰着众多主流的时间序列数据库(Time Series Database,简称TSDB)产品。一些数据库管理系统在基数较低时表现良好;然而,随着基数的增加,高基数问题逐渐显现。
小 T 导读: 数据集的高基数(High-Cardinality)问题一直困扰着诸多主流的时序数据库(Time Series Database,TSDB)产品。一些数据库管理系统,在基数较低时表现良好;但是随着基数的增加,数据库的表现也会变差,这就给数据库管理员带来了很大的挑战,他们需要通过相关设计降低基数,避免与之相关的问题。 TDengine 3.0 是第一个解决了高基数问题的时序数据库,本文将分享其设计思路。
何谓高基数问题?
讲到高基数问题,首先,我们要理解什么是基数(Cardinality)。基数可以定义为一个数据集中值的数量。数据集不同,基数可以很高,也可以很低。比如,如果是布尔数据,它的值只能是 true 或 false,则该数据集的基数为 2。但是如果是像设备 ID 这样的数据集,其基数就非常大了。
对于时序数据,事情就更复杂了。时序数据总会关联一些元数据,比如标签。因此,一个系统的基数就是每个标签的基数的叉乘。比如,以智能电表为例,它会关联设备 ID、城市 ID、厂商 ID 和模型 ID 等标签。
本文共计1813个文字,预计阅读时间需要8分钟。
小T+导读:数据集的高基数问题直接困扰着众多主流的时间序列数据库(Time Series Database,简称TSDB)产品。一些数据库管理系统在基数较低时表现良好;然而,随着基数的增加,高基数问题逐渐显现。
小 T 导读: 数据集的高基数(High-Cardinality)问题一直困扰着诸多主流的时序数据库(Time Series Database,TSDB)产品。一些数据库管理系统,在基数较低时表现良好;但是随着基数的增加,数据库的表现也会变差,这就给数据库管理员带来了很大的挑战,他们需要通过相关设计降低基数,避免与之相关的问题。 TDengine 3.0 是第一个解决了高基数问题的时序数据库,本文将分享其设计思路。
何谓高基数问题?
讲到高基数问题,首先,我们要理解什么是基数(Cardinality)。基数可以定义为一个数据集中值的数量。数据集不同,基数可以很高,也可以很低。比如,如果是布尔数据,它的值只能是 true 或 false,则该数据集的基数为 2。但是如果是像设备 ID 这样的数据集,其基数就非常大了。
对于时序数据,事情就更复杂了。时序数据总会关联一些元数据,比如标签。因此,一个系统的基数就是每个标签的基数的叉乘。比如,以智能电表为例,它会关联设备 ID、城市 ID、厂商 ID 和模型 ID 等标签。

