Oracle update和delete是openLooKeng在Oracle connector上提供的对Oracle数据源进行更新和删除操作的特性,此特性除实现对Oracle数据源update和delete操作的直接支持,还提供了适配开发接口,基于这些接口可以开发某些数据源的update和delete操作。
功能介绍
update和delete操作,先通过查询操作获取到满足条件的行,这些行每行有一个唯一的rowid的值来标识,然后对行数据进行update和delete操作,对于delete操作还提供额外的优化,如果查询可以下推到数据源,则可以将delete操作和查询操作一起下推到数据源中执行。
备注:oracle的update和delete与Hive的update和delete在业务流程还有些差别,oracle是实现原地写(只对待处理的数据进行操作),而Hive是实现重定向写(把待涉处理数据处理后,重新写入到HDFS中,实际执行updateAsInsert或deleteAsInsert的流程)。
功能实现原理

二个操作都要经过上面的不同阶段的处理, 语法解析阶段对SQL语句进行解析并转化为内部的AST树,语法&语义分析阶段对AST树中的各种标识进行识别(如表,列,表达式等)转化为逻辑计划树,优化阶段对这个逻辑树进行优化,然后转化为一个物理执行树,执行阶段框架按照这个执行树进行执行,其中有些树节点的算子会与数据源进行交互。
交互的接口大致分2类:
-
涉及元数据的接口: 如在语法&语义阶段,对rowid列信息的获取;
-
涉及业务流程处理接口有两类:
-
第一类: 主要是预和后处理接口,beginXXX, applyXXX, finishXXX
<

本文介绍了openLooKeng如何支持Oracle数据源的update和delete操作,包括功能介绍、实现原理和delete业务流程。通过查询获取rowid,对数据进行原地操作,同时提供了适配开发接口。delete操作可被优化为下推到数据源执行,减少交互次数,提高效率。开发注意事项中提到,需根据数据源选择合适的接口实现,并注意事务处理。
最低0.47元/天 解锁文章
339

被折叠的 条评论
为什么被折叠?



