CirroData-TimeS时序数据库可以应用于多种场景,例如交通、公共服务、金融、电力、新能源等,针对不同的业务场景,对数据的处理逻辑也会有不同的方式。而通用的时序数据库提供的内置函数一般具有业务通用性,对于具有业务特性的处理逻辑一般情况下都是在业务侧做,会有更多的资源开销。如果数据库能提供更灵活的处理框架能将处理逻辑下推,就可以获得更好的性能。
将用户自己的业务处理逻辑加到数据库的数据处理框架下,会带来两个好处:
- 处理逻辑复用
- 计算靠近数据,降低网络资源消耗,提高处理效率
【调研】
大数据处理框架目前使用比较常见的有hive的自定义函数功能,其支持三种自定义函数:
- UDF(User Defined Function)用户自定义函数,一进一出
- UDAF(User Defined Aggregation Function)用户自定义聚集函数,多进一出;
类似于: count/max/min/avg - UDTF((User Defined Table-Generating
Functions)用户自定义表生成函数,一进多出;类似于:explode
在时序数据场景中比较常见的需求是对原始数据进行一些变形、过滤或扩增,并控制数据最终的输出。
本时序数据库当前支持两种用户自定义函数类型:
- UDTF(User Defined Timeseries Generating Function),该类函数允许接收多条时间线,最终输出一条时间线,生成的时间线可以有任意多的数据点,本文主要也是介绍此类自定义函数。
- UDAF (User Defined Aggregation Function),类似hive的UDAF,一般配合分组查