Apache IoTDB UDF 查询执行源码阅读

藏宝库编辑 2024-10-11 14:37:23 3693 0 来自 中国
作者现在是清华大学软件学院 IoTDB 组在读弟子,到场过 Apache IoTDB UDF 模块的代码维护和功能拓展,本文是作者在阅读 Apache IoTDB UDF 模块代码时的一点总结。
概述

UDF(User Defined Functions) 是数据库查询引擎里较为紧张的一个模块,其为数据的高级分析提供了更多可能。
UDF 的使用说明可以参考作者的另一篇文章:
https://zhuanlan.zhihu.com/p/599011218
Apache IoTDB 的 UDF 功能实现总体可以分为三大部分:

  • 向用户提供的编程接口,相关代码在包 org.apache.iotdb.udf.api
  • 查询框架相关代码,包罗 SQL 分析、逻辑计划天生、物理计划天生等
  • UDF 查询计算执行时相关逻辑
本文紧张对 UDF 查询计算执行时的相关逻辑做概要介绍,紧张针对特定接口/抽象类做说明,并分析典范实现资助理解,盼望本文可以资助读者更轻松地 Debug 阅读 UDF 计算流程的源码。
UDF 查询计算紧张接口和工具类

在我看来,要理解 IoTDB 中 UDF 计算的流程,最关键的是理解以下几个接口/工具类的作用:

  • IntermediateLayer
  • LayerPointReader / LayerRowReader / LayerRowWindowReader
  • Transformer
  • ElasticSerializableTVList
理解上述接口/抽象类的作用之后再进行 Debug 阅读源码会事半功倍。
IntermediateLayer

作用

UDF 计算流程大致可以分成 InputLayer -> IntermediateLayer -> OutputLayer 三层,IntermediateLayer 封装了计算中心层的逻辑。
出现中心层的计划缘故原由有:

  • 查询树节点可能存在公共部分,中心层缓存计算结果可以制止重复计算。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-21 21:33, Processed in 0.144919 second(s), 33 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表