大家好,
今天是Plugin SIG组的第一次例会,参会的同学:黄凯耀、吴岳川、苏梓鑫、彭炯、陈晓滨、张乐奕、李传成、苏章艳、阮青松。感谢大家参加这次会议。
会议纪要:
1. 黄凯耀首先介绍了Android 8.0引入的Treble架构,它解决了Android版本升级复杂,需要谷歌、芯片厂商、手机厂商分别修改代码集成发布,导致厂商无法跟上Android版本节奏,Android碎片化严重的问题。 [cid:image005.jpg@01D783FF.68EE8440]
2. 黄凯耀介绍了插件化架构的总体思路和插件初步工作规划,主要包括插件规划、插件管理、插件实现和插件移植。
3. 讨论了插件架构的原则:只封装变化的代码。插件架构的设计模式:门面(Façade)模式。通过门面模式实现对众多hook的归类。
[https://box.kancloud.cn/2016-04-20_57175853a499f.jpg] https://www.kancloud.cn/digest/xing-designpattern/143728
4. 黄凯耀介绍了Parser插件的设计和使用方法。苏章艳提出了一个问题,当前Parser参数是会话级别的,但对于某些数据类型,如DATE,Oracle和PG的定义可能不同,如果定义时采用PG语法,查询时采用Oracle语法,查询结果可能出错。
5. 彭炯介绍了语义插件当前的设计思路。大家初步认可语义插件当前细化的9个语义分析函数指针,以及相应的语义分析接口结构体。这是对Façade模式的一个应用。苏章艳建议针对SelectStmt做进一步的插件点定义。
6. 陈晓滨介绍了PG插件移植指导和会话参数改造方案,主要回答了PG的进程化变量如何迁移到openGauss的线程架构上的问题。
a) 苏章艳提到当前FDW插件在u_sess的定义问题,后面FDW的要基于晓滨的框架进行整改,进行归一化
7. 会议主要形成如下结论:
a) 苏章艳提到的一些插件点的top需求
i. 认为SQL语法分析和SQL语义分析是高频修改的地方,希望进一步细化定义插件点。(上述第5点是一个有益的尝试)
ii. pl/pgsql本身就是一个插件,但需要对这个插件内部进一步进行插件点的定义,比如统计每行语句的执行时间、调试统计功能等
iii. 存储层的加密和解密接口
b) 阮青松提到插件化机制的一些要考虑的风险
i. 如何解决插件与插件之间、插件与内核之间可能存在的冲突,如何建立插件化依赖机制,实现插件本身的版本和演进管理
ii. 如何进行插件的测试,如何通过兼容性测试套件保证插件的兼容性
iii. 插件的相关参数的范围,是否有相应的指导原则
c) 张乐奕提到了contrib目录下的原有插件是否会受到插件机制的影响。本质上,插件架构是继承兼容于PG原生的extension机制,但提供了更加友好的SDK,使得后面新开发的插件变得更加容易。
i. 另外,contrib目录下的移植,可基于当前晓滨的工作开展(上述第6点)
d) 李传成提到了一些插件开发的问题:
i. 当前插件的回归测试无法执行报错,需要修复
ii. 当前无法drop一个外来的插件,涉及到插件白名单机制,需要修复
iii. 按需反馈单个hook的时效性比较差,要考虑开始时的的系统规划,形成一个结构化的体系后,再逐步完善。
8. 下一步工作安排:
a) 请苏章艳、阮青松、李传成在下周三(8/4)之前,反馈一稿插件点列表,可基于当前对openGauss内核所做的修改(diff opengauss mydatabase),抽象出相应的插件点出来,请尽可能细化,不怕多,只怕不全。(参见7-d-iii)
b) 请大家踊跃在plugin@opengauss.org邮件列表中新开话题和讨论(给plugin@opengauss.org发邮件即可),与插件化架构的任何话题讨论都可以,比如Android的兼容性实现分析、PG生态插件的问题等等。
c) 初定下次例会召开时间是8/11。
9. 如有遗漏,请大家回复补充。
-------------------------------------------------- 黄凯耀 Huang Kaiyao Mobile: +86-18664933229tel:+86-18664933229 Email: huangkaiyao@huawei.commailto:huangkaiyao@huawei.com