揭秘华为云 GaussDB(for Influx):数据直方图
本文分享自华为云社区《华为云GaussDB(for Influx)揭秘第九期:最佳实践之数据直方图》,作者:GaussDB 数据库。
1. 背景
随着 5G 和 IOT 的快速发展,面对爆发式增长的时序数据,如何才能挖掘数据中的潜在价值,为客户的业务运行、商业决策提供精确的指导?在统计学中,直方图作为一种经典的分析工具,可以直观地描述数据分布特征,应用场景极其广泛,例如:
在网络监控数据方面,通过直方图可以捕捉异常数据的分布区间,便于网络的自诊断与修复;
在时序数据分析方面,通过直方图可以表示数据的分布特征,便于时序数据的特征提取;
作为代价评估模型的输入从而指导数据库内部的查询优化;
本文带您了解直方图在不同产品中的实现,以及 GaussDB(for Influx)中直方图的使用方法。
2. 直方图的实现方式
时序及分析性数据库大部分都支持了直方图算子,但各个数据库中的直方图实现上也有一定差异,其中几种比较典型的直方图实现有:
Druid:Druid-histogram 拓展中提供了近似直方图(approximate histogram aggregator)和固定桶直方图(fixed buckets histogram)聚合器。其中近似直方图根据论文《A Streaming Parallel Decision Tree Algorithm》实现,较适用于随机分布的数据。
ClickHouse:ClickHouse 提供了自适应直方图,查询的结果为近似值。与 Druid 类似,其实现参考了论文《A Streaming Parallel Decision Tree Algorithm》。当新数据输入到直方图时,直方图中桶的边界会被调整,通常情况下,桶的宽度并不相等。
ElasticSearch:ElasticSearch 中支持了 HDR Histogram(High Dynamic Range Histogram),HDR Histogram 是一种替代实现,在计算网络延迟的百分位数表现良好。同时,当值的范围并不清楚时,官方并不建议使用 HDR Histogram,因为此时内存占用会很高。
InfluxDB v2.0:InfluxDB 同样提供了直方图的实现,与其它直方图略有不同。InfluxDB2.0 可以设置直方图的桶的生成方式,linearBins()可以将数据按照线性分割,即桶宽相等,logarithmicBins()则可以将数据按照指数分割,即桶宽呈指数形式增长。
GaussDB(for Influx):GaussDB(for Influx)支持两种直方图类型查询,一种确定桶数的等高直方图,另一种确定桶边界的定界直方图。等高直方图指每个桶的高度接近的直方图,而定界直方图指设定桶的上下边界值的直方图。定界直方图支持用户的自定义,更方便用户根据业务特点提取数据的关键分布特征。支持四种数据类型,包括整数、浮点数、字符串与布尔类型,可满足各行各业的数据分析需求。
3. GaussDB(for Influx)直方图使用
本章节通过实际的数据样例介绍 GaussDB(for Influx)直方图的使用。
3.1 数据样例
示例采用的数据如下:mst 是表名,包含 4 个 field(每个 field 对应一种数据类型)与 2 个 tag,元数据如下:
原始数据如下:
3.2 等高直方图
查询语法:
HISTOGRAM(field_key, N)计算指定指标 field 在各区间的统计值,其中 N 是要求的。
HISTOGRAM(/regular_expression/, N)计算满足正则匹配的 field 在各区间的统计值。
HISTOGRAM(*, N)计算整数与浮点数数据类型的 field 在各区间的统计值。
查询示例
1. 查询 field_key 为 age 且桶数为 5 的等高直方图。
2. 查询 field_key 满足正则匹配为/hei/(符合要求的只有 height)且桶数为 5 的等高直方图。
3. 支持 field 为字符串类型的 address 与布尔类型的 alive 的等高直方图查询。
下图分别表示上述查询的各等高直方图
3.3 定界直方图
查询语法:
HISTOGRAM(field_key, ‘specifyBins’, boundary1, boundary2,...,boundaryN)计算指定指标 field 在指定区间的统计值,specifyBins 为定界直方图标志,boundaryN 表示指定的各边界值,可以是整数、浮点数、字符串与布尔四种数据类型。
HISTOGRAM(/regular_expression/, ‘specifyBins’, boundary1, boundary2,...,boundaryN)计算满足正则匹配的 field 在指定区间的统计值。
HISTOGRAM(*, ‘specifyBins’, boundary1, boundary2,...,boundaryN)计算整数与浮点数数据类型的 field 指定区间的统计值。
查询示例:
1. 查询 field_key 为 age 且指定区间[0, 10), [10, 20), [20, 30), [30, 40), [40, 50)的定界直方图。
2. 查询 field_key 满足正则匹配为/eight/(符合要求的只有 height)且指定区间[0, 160), [160, 170), [170, 180), [180, 190), [190, 200)的定界直方图。
3. 支持 field 为字符串类型的 address 与布尔类型的 alive 的定界直方图查询。
下图分别表示上述查询的各定界直方图。
总结
直方图作为一种经典的统计分析工具,由于其构建简单高效且能有效地描述数据分布特征,因此它的应用场景极其广泛,特别是在分析型数据库中。GaussDB(for Influx)中不仅支持了两种类型的直方图查询能力(等高与定界直方图),而且支持了四种数据类型(整数、浮点数、字符串与布尔型),能够帮助用户快速构建业务的数据分析能力,助力用户商业成功。
另外,GaussDB(for Influx)还在集群化、冷热分级存储、查询、高可用方面也做了深度优化,能更好地满足时序应用的各种场景。
结束
本文作者:华为云数据库创新 Lab & 华为云时空数据库团队 欢迎加入我们!
云数据库创新 Lab(成都、北京)简历投递邮箱:xiangyu9@huawei.com
华为云时空数据库团队(西安、深圳)简历投递邮箱:yujiandong@huawei.com
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/c15ba4cdaaa82401ff191745f】。文章转载请联系作者。
评论