暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase UP核心技术与核心价值——跨引擎关联查询&跨引擎读写分离

郑小雯 2023-10-11
79

跨引擎关联查询

与数据清洗和历史数据管理相比,更加灵活的业务场景是:实时进行跨引擎的关联查询。如最简单的:

代码示意:

Select * from t_8a inner join t_hive on t_8a.no = t_hive.no where …

其中t_8a为8a mpp 数据引擎表,t_hive为Hadoop hive 引擎表。

GBaseUP构建了基于规则和成本的优化器,能够既充分利用各自引擎的特色运算,又能保证在引擎间交互的数据最小化,同时利用高效的数据交换总线,从而实现自动优化的引擎间实时关联分析。

DML操作的事务管理依赖具体引擎,如果每个引擎都支持标准的XA,则GBase UP整体支持事务,当前GBase 8t支持XA,而GBase 8aMPP和Hive虽然都支持ACID,但是都不支持XA,所以在单引擎操作时GBase 8a MPP支持多语句长事务,Hive支持单语句事务,混合引擎交互写操作时采用自动提交当前事务的模式。


跨引擎读写分离

当一个数据模型同时大量读、写操作并发执行时,读写操作互相影响,会加剧对锁的竞争,导致整体性能下降。通过在GBase UP中引入引擎级别的读写分离机制,可以极大地缓解并发读写对锁的竞争,从而提高并发性能。引擎级别读写分离的基本原理是,GBase UP作为统一的访问入口,对读写请求进行调度,事务性操作(INSERT、UPDATE和DELETE)在GBase 8t上执行,SELECT查询关键是分析型计算在GBase 8a上执行,以充分利用GBase 8t和GBase 8a各自的优点。

 代码示意:

-- 创建镜像表,镜像方向为GBase8t到GBase 8a MPP

Create table t(...) engine=‘Mirror8t8a’;

-- 写操作用8t引擎

Insert into t values(…);

-- 分析型查询用8a引擎

Select avg(…) from t group by …;

查询操作指向到8a的方式有两种:自动识别,根据语句中函数的类型,如OLAP函数;手动识别,用户session级变量和hint级变量,影响到语句的执行引擎。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论