分布式存储引擎LAMOST研发实践_第1页
分布式存储引擎LAMOST研发实践_第2页
分布式存储引擎LAMOST研发实践_第3页
分布式存储引擎LAMOST研发实践_第4页
分布式存储引擎LAMOST研发实践_第5页
已阅读5页,还剩28页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、技术创新,变革未来银联分布式存储引擎LAMOST研发实践目录一UPDRDB的前世今生二产品功能概述三Lamost存储引擎详述 四其他功能模块介绍五整体技术状态总结根据现状,参考业界标准,可以将分布式数据库分为3条路线,目前共4类产品:技术路线含义特征产品混合方案产品新架构基于新架构创建的新型 分布式数据库。设计之初就考虑了分布 式特征。具备较高的硬 件要求。OceanBase TiDB混合存储引擎和中间 件方案,在兼容性、 稳定性、扩展性上进 一步发展。PolarDB-X UPDRDB存储引擎在传统数据库之后,研 发分布式存储引擎,以 具备分布式数据库关键 特性。与传统数据库具备极好 的兼容性

2、,但性能损耗 较大。SequoiaDB-MySQL(巨杉) MariaDB SpiderAurora (by Amazon) PolarDB (by Alibaba ) CynosDB (by Tencent)透明中间件在传统数据库之上构建 中间件。具备高性能、低成本和 稳定性特征。但与传统数据库的兼容 性最差。Vitess(from Youtube) Sharding-Sphere UPSQL ProxyTDSQLGoldenDB上代产品:UPSQL Proxy架构应用APP应用APP应用APP应用APP应用APPUPSQL(Master)UPSQL(Master)UPSQL(Master)

3、UPSQL(Master)分布式代理UPSQL Proxy自研分布式数据库代理,实现数据库节点 高可用、读写分离、数据拆分等。其他核心功能支持分布式事务数据库连接池流式通信处理不足分库需要用户配置缺少在线扩缩容能力不支持复杂查询不支持单点ddl复杂语句 Complex SQLMySQL Protocol对UPSQL Proxy进行架构升级,采用了 独特的语句分类路由与分布式事务管理 机制。创新架构优势简单语句高性能(优于上代分 布式代理产品)复杂语句支持更为完备其他关键功能单点DDL自动扩缩容免分库配置UPSQL(Master)UPSQL(Standby)协调器Coordinator事务管理器

4、Trx Manager语句路由SQL Router简单语句Simple SQL元数据与辅助处理器 Metatada & Coprocessor自研存储引擎Lamost应用APP应用APP应用APP应用APP应用APPUPSQL(Master)UPSQL(Standby)UPSQL(Master)UPSQL(Standby)UPSQL(Master)UPSQL(Standby)分布式死锁处理 Distributed Deadlock Detection & Resolution新生代:UPDRDB目录一UPDRDB的前世今生二产品功能概述三Lamost存储引擎详述 四其他功能模块介绍五整体技术状

5、态总结不分片分片ProxyCoordinatorMySQLMySQLMySQLMySQLMySQLMySQLMySQLMySQLLamost分布式存储引擎CoordinatorMySQLMySQL读写分离用户模式读写主库只读仅访问主库节点读根据权重分流根据权重分流读,禁止写简单语句(由协调器处理)简单DML,一般为插入、更新、删除、 无聚合操作的单表查询等事务管理:begin、commitSQL语句路由规则复杂语句(由辅助处理器处理)复杂DML,一般为多表操作、有特殊 函数的单表查询、视图、UDF等DDL语句show语句Coordinatorcreate table st3 (seq bigi

6、nt(20) not null default 0,date char(8) not null default ,time char(6) not null default ,flag char(8) not null default , primary key (seq,date) engine=Lamost default charset=utf8 comment=“seq”;数据分片#1UPSQLMetadata &Coprocessor数据分片#nUPSQL. .CoordinatorCoordinator 在各分片创建实体表(InnoDB)通过自研存储引擎Lamost,实现分布式DD

7、L:协调器(Coordinator)将DDL语句转发给辅助处理器(Coprocessor)如果操作的表为Lamost引擎,Lamost引擎会将相应操作转换为对各分片的实体表DDL操作 创建Lamost虚拟表Coordinatorselect product, sum from( select product, sum(profit) as sum from t1group by product with rollup) as tmpwhere product is null;数据分片#1UPSQLMetadata &Coprocessor数据分片#nUPSQL. .CoordinatorCoo

8、rdinatorUPDRDB能支持跨分片join、子查询、视图、UDF等复杂语句,其一般处理流程为:协调器(Coordinator)将复杂语句转发给辅助处理器(Coprocessor)如果操作的表为Lamost引擎,Lamost引擎会将相应操作转换为Handler语句,从实体表获取数据辅助处理器根据获取到的数据进行语句处理,并将最终结果返回协调器 语句转发辅助处理器 使用Handler语法扫描实体表数据目录一UPDRDB的前世今生 二产品功能概述三Lamost存储引擎详述四其他功能模块介绍 五整体技术状态总结MYSQL体系结构图注:左图引自网络Lamost 存储引擎存储引擎接口是什么?MySQ

9、L定义了一系列存储引擎API( Handler类),以 支持插件式存储引擎架构Handler类提供诸如查询数据、写记录、删除记录等基础 操作方法存储引擎要做什么?每一个存储引擎通过继承handler类,实现上述方法,在 方法里对底层数据进行操作读取删除插入DDL类其他更新读数据接口读数据接口是所有语句类型中变化最多的,涉及面最广,处理逻辑最复杂的不仅常见的select语句是命中这块逻辑,某些增删 改场景也会涉及,举例如下:Update语句会先调用读接口,命中到需要的 数据,然后对该行数据进行加锁后删除并插 入新数据Replace语句会先调用insert接口,尝试插入, 如果行记录冲突后,调用查

10、询接口命中数据并加锁,最后执行删除并插入新数据select全表扫描未命中索引的数据 获取操作索引扫描有where条件无where条件,逆 序排序无where条件,正 序排序全表扫描1初始化全表扫描int rnd_init (bool scan);2从表中读取下一行int rnd_next (byte* buf);3结束全表扫描int rnd_end();4精确获取某行数据int rnd_pos(uchar *buf, uchar *pos);实际接口调用截图:典型SQL举例:无where条件的索引扫描(非range)正序1. 告知存储引 擎选定的索引,遍历方向ha_lamost:index_i

11、nit(keynr=0, sorted=true)2. 读取索引 第一条数据ha_lamost:index_first()3. 循环读取索引 下一条数据ha_lamost:index_next()逆序1. 告知存储引擎 选定的索引,遍历方向ha_lamost:index_init(keynr=0, sorted=true)2. 读取索引最 后一条数据ha_lamost:index_last()3. 循环读取索 引上一条数据ha_lamost:index_prev()有where条件的索引扫描(range)实际接口调用:1. 初始化 Ha_lamost:index_init2. 根据给定的索引进

12、行范围查询 Ha_lamost:read_range_first3.循环获取索引位置的下一条数据 Ha_lamost:read_range_next方法:数据查询接口去数据节点获取数据时使用的是mysql的handler语法。UPDRDB新增Handler语法:多表关联慢么?语句举例:select * from tbl_1 inner join tbl_2 on tbl_1.p1_key=tbl_2.p2_key;(假设 tbl_1两百万数据,tbl_2两百行数据)存储引擎调用逻辑:准备工作(打开表等)对tbl_2进行全表扫描,每次查询获得tbl_2中的一条数据后,去tbl_1中进行查询, 检

13、测是否命中该行数据,如果命中数据则返回该条数据到server层循环执行步骤2,直至tbl_2中所有数据遍历完成收尾工作(关闭表等)发生灾难:如果tbl_2也是两百万行数据如果p1_key不是索引,或者代价模型计算有误,未命中该索引,则会全表扫描DELETE接口命中索引语句举例:delete from tbl where index_col0 limit n;未命中索引语句举例:delete from tbl where none_index 0 limit n;索引扫描初始化,告知索引及排 序信息ha_lamost:index_init(keynr=0, sorted=true)范围查询第一行

14、数据并加锁 ha_lamost:read_range_first范围查询指定索引的下一行数据 并加锁ha_lamost:read_range_next删除该行数据 ha_lamost:delete_row循环执行1. 全表扫描初始化 ha_lamost:rnd_init2. 获取下一条数据,并对数据加锁 ha_lamost:rnd_next3. 删除该行数据 ha_lamost:delete_row4. 环境清理并结束 ha_lamost:rnd_end循环执行REPLACE接口数据有冲突语句举例:replace into tbl (p_key,u_key,shardcol) values (

15、4, 33,2002);删除冲突数据行 ha_lamost:delete_row写入新数据,自增列会继续递 增ha_lamost:raw_write_row数据无冲突语句举例:replace into tbl (p_key,u_key,shardcol) values (4, 33,2002);逻辑:调用写数据接口,与insert逻辑相同ha_lamost:write_rowLamost上送索引代价因子范围扫描子查询多表关联表行数索引大小表数据量CPUIO代价常量动态因子自增列值数据行长度更新时间范围值估计动态因子代价估算(选择索引)代价模型语句类型Server层会根据代价模型算出每个索引的

16、代价值,进行比较后, 选择代价最小的索引 下推到存储引擎层ProxyCoordinatorMySQLMySQLMySQLMySQLMySQLMySQLMySQLMySQLLamost存储引擎远程更新索引因子(show table status),汇总计算后 上送server层索引因子上送策略:未触发更新条件则访问本地缓存, 该场景命中绝大多数情况索引因子需要更新,则下发自定义 命令索引更新触发条件:超过指定的超时时间(参数可配)部分DDL语句执行之后实现效果:绝大部分语句索引选择能与单机 mysql保持一致基本不影响复杂语句执行性能本地访问索引因子缓 存,上送server层目录一UPDRDB的

17、前世今生 二产品功能概述三Lamost存储引擎详述四其他功能模块介绍五整体技术状态总结SQL黑白名单防止未授权的SQL语句在数据库中执行,解决高危 SQL执行的风险。根据语句类型或语句摘要,由用户进行标识和分类:灰:一般为新增语句或类型白:可放行语句黑:禁止执行在用户维度配置三种策略:白名单灰名单可执行灰名单执行并报警SQL执行统计统计一定时间周期内(如5秒)内,相同摘要语句:执行次数最短、最长、平均耗时报错码及次数返回行数平台或应用可以基于上述数据,进一步感知系统运 行状态相似性SQL专利SQL解析分为词法解析和语法解析,整个解析过程十分占 用性能,约整体性能的50%左右受语句分类路由机制的

18、启发,我们发现并实现了一种相似 性SQL复用机制,并获得了美国专利授权。该机制能让相似语句规避最为耗时的语法解析与CASE分析 等阶段,使得SQL解析与分布式执行计划构建的整体性能 提升至少1倍以上。CASE分析词法解析语法解析分库计算SQL语句自动化扩缩容基本原理将数据分为1024个slot,在辅助处理器 上维护slot和数据节点之间的映射关系。在扩缩容时,调整slot与数据节点之间 的映射关系,并使用分布式事务进行数 据搬迁。在数据搬迁过程中,使用2套映射关系 的并集进行数据查询。能力支持在线扩缩容支持任意分片数量的扩容和缩容支持指定搬迁数据比例0501002503003501扩2(100w)2扩4(100w)耗 200时秒 150搬迁模式(搬迁数据量)扩容耗时搬迁耗时准备耗时UPDRDB的CI机器人代码质量保证得益与UPDRDB对复杂语句的全面支持,我们引入了67个MySQL测试案例集,总案例集数量达到172+。自动化全量执行耗时大于48小时,所以又研发了并 行执行工具,构建CI,提升研发效能。以CI为抓手规范研发流程,共执行CI328次,全量代 码覆盖率从最初61%提升到80.7%。目录一UPDRDB的前世今生 二产品功能概述三L

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论