技术标签: 大数据分析 database oracle 大数据技术 数据库 大数据
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
第二类:数据处理接口:XXXRows, executeXXX 前者是记录级的操作,后者是“表”级操作(直接将业务下推到数据源中执行),这里操作跟具体的物理执行计划节点类型相关,目前有Delete节点,TableDelete节点和Update节点,由这些节点来调用相应的接口完成功能。
功能实现上在接口上分2层:
第一层SPI层通用处理接口,全部数据源都遵循的接口
第二层BaseJDBC层针对基于JDBC协议实现的数据源通用处理,方便JDBC数据源来实现业务。
下面将重点对与数据源的数据处理各个接口结合业务进行讲解。
在分析阶段,框架通过ConnectorMetadata#getDeleteRowIdColumnHandle获取rowid列的处理句柄,在Oracle Connector中只绑定Oracle数据源中每个表的隐藏列ROWID列,这个列会在查询数据的时候自动添加到TableScan中。
Delete算子在执行时从下游的算子获取rowid的列数据,然后调用UpdatablePageSource#deleteRows接口,通知数据源删除这些列。在BaseJDBC层,通过二个jdbcClient接口完成,一个生成删除预处理语句,一个执行预处理命令的参数设置(rowid列值的设置)。
一个delete业务在优化阶段前都是走记录级删除流程,优化阶段对某些场景可优化成“表”级删除流程(下推TableScan优化器和下推Delete优化器共同作用的结果),对应的算子由Delete转为TableDelete算子执行。
下推:
从上表可以看出,表级删除大大优化的处理的流程,与数据源的交互算子缩减到一个。
TableDelete算子在执行删除操作的时候不在关注到底是哪些行,只要针对有下推和无下推场景,来组装delete语句即可。
由于提供了二层接口,所以需要根据数据源的实现来选择。
Delete的下推由用户输入的语句及连接器的下推实现共同决定,所以二个接口都要实现。
当前实现,事务考虑较少,对事务敏感的需要另行考虑实现方式。
文章目录1 简要步骤2 详细步骤2.1 安装VS20172.2 下载OpenCV 4.2.02.3 配置环境变量2.4 引入头文件、库文件、链接库3 测试代码参考资料注:转载请标明原文出处链接:https://xiongyiming.blog.csdn.net/article/details/1041458121 简要步骤(1) 安装VS2017;(2) 下载OpenCV 4.2.0 ...
1. 对图片信息可以有下面四种理解方式:[b, 28*28]: b代表batch-图片的数量,28*28是把图片所有像素变成了一个轴axis来理解[b, 2,14*28]:表示把图片分成了上下两部分,每一部分当成一个单独的轴axis2.reshape函数-1代表不需要自己去计算这个位置是多少尺寸,系统根据reshape里其他参数和图片原来的尺寸来自动设置reshape操作经常在全连接层前遇到,把图片变成一个向量来储存...
postgresql 存储过程时 如何把查到数据放到数组中,计算出数组中数字个数字
在机器学习、深度学习中,我们在做分类任务时,经常需要对模型结果进行评估。其中用于评估的指标就有准确率、精准率和召回率,这些指标都是通过预测概率来获得的。以下就来介绍这些指标代表什么。我们先来看看下面这张图:其中,如上图混淆矩阵所示。TP:样本为正,预测结果为正; FP:样本为负,预测结果为正; TN:样本为负,预测结果为负; FN:样本为正,预测结果为负。准确率、精准率和召回率...
1.mapper代理1.mybatis开发dao的方法----引入(为啥要使用mapper代理)1.SqlSession使用范围1.SqlSessionFactoryBuilder通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory 将SqlSessionFactoryBuilder当成一个工具类使用即可,不需要使用单例管理SqlSe...
解决办法:plt.savefig(‘fix.jpg’, dpi=300) #指定分辨率保存
index:设置网站的默认首页语法 index file ...; 默认值 index index.html; 位置 http、server、location index后面可以跟多个设置,如果访问的时候没有指定具体访问的资源,则会依次进行查找,找到第一个为止。举例说明:location / { root /usr/local/nginx/html; index index.html index.htm;}访问该location的时候,可以通过 http:
简答题:数据结构研究的主要内容数据的逻辑结构;数据的存储结构;定义在结构中数据的操作;根据数据元素之间逻辑关系的不同,数据结构分为几类?常用的储存方法有几种?逻辑区分: 集合结构;线性结构;树形结构;图形结构储存方法: 顺序储存;链式存储;散列存储;索引存储单链表带头结点 和不带的区别操作:插入删除中,带头结点的始终不用修改头指针指向,而不带头结点的 有时需要,所以不带头结点的还需要进行是否为第一个结点的判断。结构:无论是否为空链表,带头结点的头结点始终存在
<学生成绩管理系统设计>选题背景在日常生活中,学生成绩信息的管理是每个老师都不可或缺的,总分的统计,平均分的计算等,这些教学任务附带的工作往往给教师带来很大的负担,为了减轻教师上课负担,方便学生和老师的课堂教学,对当前学生成绩信息相关内容设计专门的软件进行管理,减轻教师管理学生成绩的工作量,在日常教学中具有积极的实践意义。系统说明开发工具及环境本系统在windows是pc机上使用QT+VS的模式进行相关的系统功能设计,使用一种轻量级的数据库sqllite进行数据的存储。开发的环
本文所有代码都通过运行!将从以下方面进行分析:1.背景 2.提出问题 3.理解数据 4.数据清洗 5.可视化分析 6.用户流失预测 7.结论和建议本项目带你根据以上过程详细分析电信客户数...
QPen pen(QColor(100, 100, 100)); pPainter->setPen(pen); pPainter->drawLine(m_leftMagicHint, 5, m_leftMagicHint, height()-m_bottomMagicHint+5); pPainter->drawLine(m_leftMagic...
一.基础知识:1.DHCP简介:DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。2.DHCP服务器简介:DHCP服务器指的是由服务器控制一段IP地址范围,客户端登录服务