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类:
-
<