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

GBase UP核心技术与核心价值——跨引擎读写分离& 数据生命周期管理

郑小雯 2023-10-11
86

跨引擎读写分离

当一个数据模型同时大量读、写操作并发执行时,读写操作互相影响,会加剧对锁的竞争,导致整体性能下降。通过在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级变量,影响到语句的执行引擎。


 数据生命周期管理

数据在各生命周期有不同的处理要求,尤其是时间序列数据,其业务场景常常是初期集中于OLTP,中期用于OLAP,后期很少使用,只是偶尔用于历史数据分析,整体呈现热、温、冷三种典型的处理模型,从存储成本和计算特征考虑,不同时期的数据采用不同的引擎存储。

最常见的一种情况,最近生成的数据会被频繁使用和修改,将其存放在GBase 8t中,将近期生成但不再更新的数据放在GBase 8a中,将历史数据放在Hive中。用户通过SQL透明读写,而GBase UP按照设定的数据迁移策略后台自动透明的高效迁移。

代码示意: 创建分区表,按热、温、冷分别存储在三个数据引擎

Create table t_part (…, in_date date) partition by range(in_date)

(partition p_hive values less than (date_sub(current_date(),interval 1 month)) engine=‘Hive’,

partition p_8a values less than (date_sub(current_date(),interval 1 week)) engine=‘GBase8a’,

partition p_8t values less than MAXVALUE engine=‘GBase8t’);

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

评论