写点什么

用一个数据库解决 80% 的问题,YashanDB 数据库一体化的实践

作者:Geek_2d6073
  • 2024-04-25
    湖北
  • 本文字数:5616 字

    阅读完需:约 18 分钟

4 月 12 日,第十三届数据技术嘉年华 (DTC2024)在北京成功召开,YashanDB 存储引擎负责人郭藏龙受邀参与,并在大会上分享了题为《数据库融合架构设计与实践》的演讲。以下是演讲实录:


今天我将围绕“数据库一体化”这个比较热门的话题,结合 YashanDB 在理论创新、技术架构以及工程实践方面的探索经验,从业务、技术、产品三个角度深入聊聊“数据库一体化”,也欢迎大家交流探讨。分享将从以下几个部分展开:


1.从业务的角度分析目前数据库一体化以及技术架构面临的挑战;

2.从技术的角度思考如何通过融合架构解决一体化问题;

3.从产品的角度给出数据库一体化的解决方案;

4.数据库一体化的未来展望。


数据库一体化面临四大挑战


数据库一体化是当下比较热门的一个话题,也是数据库发展的一个方向,究其原因是随着业务发展数据库需要处理的场景错综复杂,主要体现在几个方面:一是需要能同时应对多种业务负载,例如处理事务处理(在线交易、跑批业务)以及数据分析(实时分析、离线分析)业务;二是要能同时满足多模态数据的存储和处理要求,例如关系数据、图数据、时序数据、GIS 数据等;三是需要支持本地独立部署、公有云、私有云部署或者一体机部署等多种基础设施;四是为了降低存量系统的迁移成本或新系统学习运维成本,需要兼容 Oracle、MySQL 等主流的数据库生态。


面对这些诉求,传统解决方案难以满足业务的创新发展,数据库一体化解决方案迫在眉睫,但目前面临比较大的挑战,可以概括为以下几个方面:


第一是性能要求,目前数据库性能无法满足各负载场景的要求,同时单机性能偏低,需要堆资源来解决整体性能诉求;


第二是高可用能力,不少数据库发生故障后对业务影响较大,恢复时间比较久,对高可用方案的资源要求、部署成本、运维复杂度都较高;


第三是生态兼容要求,目前部分数据库系统或者对主流数据库的兼容性低,存量业务迁移需要投入大量资源;或者即使兼容度高了也只能做到“能跑但是跑不好”,性能跟原始数据库比仍有不小差距或者存在诸多约束;


第四是成本控制,不同业务需要依赖不同系统的服务,而且各个系统之间差异较大,学习、部署、运维成本都很高。



那应该如何应对数据库一体化带来的挑战呢?核心在于优秀的数据库技术架构,基于传统架构的缝缝补补或者采用搭积木的方案无法满足一体化长期发展诉求。理论突破先行,坚持自研路线,培养工匠精神,打造核心技术和产品驱动型基础软件,才能从根本上解决一体化面临的挑战。



基于这个思路,YashanDB 通过打造一体化产品体系来应对当前的数据库一体化挑战。基于一个自研高性能内核,构建集中式和分布式两个形态,原生支持 OLTP/OLAP/HTAP 三个场景,提供独立软件/云/一体机/原厂四种服务形态,同时提供统一的开发、运维管理以及数据迁移平台。


融合内核架构:原生一体化方案的基石


融合内核架构是数据库一体化方案的基石,其中最关键的是事务引擎、存储引擎、SQL 引擎三个内核组件设计,接下来将从这三方面介绍 YashanDB 融合内核架构的关键技术。



一、融合事务引擎:单机、共享集群、分布式强一致的事务能力


融合事务引擎通过智能元数据管理、高性能块级 MVCC 机制、自适应资源管理、多级内存访问等技术实现了事务存储和处理底座,既支持不同事务隔离级别,又能提供高性能的并发事务能力,同时也可以保证强一致。


基于统一的事务底座 YashanDB 构建了不同形态的事务能力:通过数据快照无锁访问、全局缓存共享技术、智能死锁检机制保证了极致的单机事务性能;通过多实例事务对等访问以及跨实例事务托管实现了共享集群事务能力;通过两阶段提交协议、全局时钟服务、未决事务智能决策技术提供了可靠、强一致的分布式事务能力。融合事务引擎集成了不同场景事务处理能力,并具备灵活、可靠、高性能等优势,是融合内核的重要底座。



二、融合存储引擎:行列混合数据存储、融合高可用能力


融合存储引擎架构上包括了基础能力以及以此构建的混合存储能力。基础方面包括了基于 WAL+ 异步 Checkpoint 的持久化机制,具备高效的故障恢复能力;基于主备物理复制的高可用能力,支持高负载下的秒级 RTO 以及基于 Raft 的自动故障切换;支持故障预警、检测、上报、修复的故障管理机制,保证存储引擎的可靠性;资源管理模块提供了对 CPU、IO、内存等系统资源的管理能力,保证了稳定可控的资源开销以及高效的资源利用率等等。


基于存储底座,融合存储引擎提供了表、索引、视图等不同对象管理能力以及数据缓存、元数据缓存、磁盘缓存等对象的缓存机制。YashanDB 将数据划分为实时数据和稳态数据,例如生产系统的实时交易数据通常用于事务处理,而历史归档数据等稳态数据通常用于数据分析,并针对不同数据设计了行式存储、列式存储、混合存储等多种存储结构以及加速结构。在空间管理方面,YashanDB 以表空间为数据空间的逻辑管理单元,包括了段页式空间管理以及分片式空间管理两种方式:段页式管理方式灵活高效,适合事务处理或者混合负载的场景;分片式有较强的批处理能力,并且支持对象化存储,适合归档数据的存储。数据最终经过透明加密以及高效压缩持久化到本地文件系统、共享文件系统或者通过云存储协议持久化到远端。


融合存储引擎还包括了混合存储、融合缓存等关键技术以及统一的存储底座和高可用等关键能力。混合存储能力方面,In-place Update 行存引擎提供了极致的事务处理能力,In-place Update 列存引擎提供了混合负载能力,Append-only 列存引擎提供极致分析性能,同时通过支持不同的加速结构来提升性能,例如支持高性能并发事务处理的 Btree 索引、对批处理业务友好的列式索引、用于空间数据加速的 Rtree 索引以及基于有界计算理论,能带来数量级分析性能提升的访问约束等等。同时数据可以根据用户定制的策略在不同格式之间进行智能转换,例如行列数据之间、原始数据与加速结构之间、实时数据和稳态数据之间,以满足不同业务诉求。



YashanDB 缓存管理融合了单实例多级缓存、多实例缓存融合、远端存储的本地缓存能力。其中单实例的多级缓存是基础能力,多实例间的缓存融合是多写能力的基石,远端存储的本地缓存保障了存算分离架构的性能。


YashanDB 存储引擎基于自研的文件系统打造了统一的存储底座,提供了卷管理能力以及标准的文件系统接口。既能满足多实例下文件系统缓存同步的诉求,又能通过 IO 负载均衡能力提升硬件资源利用率,通过数据多副本及自动修复能力提供文件系统级高可用能力。


YashanDB 存储引擎通过高性能物理复制提供极致高可用能力,基于统一的架构,提供实例-实例、集群-集群的同步复制能力,使不同形态下的高可用体验完全一致。


三、融合 SQL 引擎:统一接入、智能优化以及混合执行


融合 SQL 引擎自顶向下由解析器、优化器和执行器三大组件构成,每个组件在设计时充分考虑了不同场景能力的集成,并分别提供统一接入、智能优化以及混合执行的能力。


解析器是数据库的入口,负责 SQL 语句解析、PL/SQL 编译等工作,在融合架构中最重要的职责是对外提供统一的接入能力,使用户在不同形态产品、不同工作负载、不同 SQL 执行方式以及不同数据存储结构下可以使用一致的接口。


优化器通过智能优化技术自动根据计算要求确定采用最优的计算模式,并生成相应的执行计划。YashanDB 优化器的融合体现在基于统一的自适应 COST 模型、静态/动态重写能力,构建了原生 HTAP 优化框架,支持单机和分布式计划的生成,智能选择行列混合执行计划,并融入向量化执行、分布排序属性,支持 B-Tree 索引、稀疏索引、R-Tree 索引、AC 物化视图等各类型加速结构,确保无论针对 TP 的短小交易,还是针对 AP 的大数据批量操作,都可以选择出最佳的执行方式;


YashanDB 执行器对经典的火山模型进行了全面优化,其融合性体现在既支持丰富的执行算子,并且每个算子支持迭代执行和批量执行两种不同的执行方式:迭代执行方式适用于单点查询例如基于索引范小围查询,资源开销小;批量执行方式适用于计算密集型例如聚集函数,但是引入额外的资源开销。同时通过并行计算框架和向量化指令进行执行加速:并行计算是用多个线程(或者节点)同时执行同一执行计划,每个线程(或者节点)只处理一部分数据,最终把计算结果汇聚在一起作为最终结果;向量化计算利用 SIMD 原理对某一列数据进行批量处理和计算,算子间传递数据批量进行,减少程序循环调用次数以及 cache miss,提高 CPU 利用率。此外 YashanDB 执行器支持纯行数据计算或者纯列数据计算,也支持行列数据的混合计算。



YashanDB 一体化实践:1 个数据库解决 80%的问题


基于融合内核架构,YashanDB 提供不同维度的一体化解决方案,包括一体化产品形态、一体化业务负载、一体化数据模型、一体化运维以及一体化生态兼容,接下来将展开介绍 YashanDB 一体化相关实践。


一、产品形态一体化:支持生产交易、决策分析多业务场景


一体化产品形态是指 YashanDB 基于统一内核打造的不同产品形态,适用于不同的业务场景。


主备基于高性能物理同步构建,适用于生产交易类场景,可以满足 80%的业务场景。主库提供高性能读写能力,备库除了容灾能力之外还可以作为计算节点,提供了强一致的读能力。当主库发生故障时可以进行自动切换,保证 RPO 为 0 的情况下,可以达到秒级 RTO。同时提供不同的保护模式以及级联备模式,减少主库同步资源开销,降低备机故障对主库的影响。基于主备形态可以搭建三地五中心灾备部署,满足金融级高可用要求。


共享存储集群采用单库多实例架构,所有实例对等且可读可写。YashanDB 共享存储集群的优势体现在以下几个方面:第一是对应用透明,集群内各个实例间数据强一致,客户端可以无差别并发读写操作,业务无需改造;第二是提供高性能计算能力,目前 2 节点标准 TPCC 测试性能可以达到 210 万 tpmC,是同架构主流商业数据库的 1.5 倍,可以根据负载按需弹性扩展,扩展比接近线性。第三是极致高可用,在自研集群文件系统提供的透明高可用能力之上,支持实例级快速故障检测、高效仲裁与接管技术,服务端接管透明、客户端透明切换。


分布式数仓是采用 MPP 架构,并基于有界计算理论的实时分析产品。其优势体现在以下几个方面:计算方面支持基于自适应代价模型的分布式计划,支持 MPP 分布式执行以及跨模一致性查询。基于原创的有界计算理论,可以提升海量数据两个数量级分析性能;存储方面支持数据冷热分层处理,热数据兼顾更新和查询性能,冷数据提供极致的分析性能并支持对象化存储到云端;高可用方面支持控制节点多活,数据节点多副本,基于 Raft 协议实现故障自动检测和自动切换以及秒级 RTO;扩展性方面在线扩缩容,数据自动重分布,业务应用透明,服务不中断。分布式实时数仓专注解决大数据计算效率、数据生产即分析、海量数据存储成本及数据孤岛等数据库瓶颈难题,为用户提供灵活的传统数仓加速、一站式数据仓库解决方案。


二、业务负载一体化:原生高性能 HTAP 能力


业务负载一体化是指 YashanDB 针对不同业务负载的解决方案,可以提供原生的高性能事务处理、分析以及混合负载能力。主要体现在通过统一 SQL 引擎解决透明接入问题,对应用层提供一致的 SQL 体验。SQL 引擎通过智能优化技术自动根据计算要求确定采用最优的计算模式,并生成相应的执行计划,同时通过透明路由将执行计划推送到合适的执行器进行实际的计算;通过统一存储引擎解决不同形态下的事务强一致、极致高可用能力、数据生命周期管理等难题,通过提供多种数据存储结构来满足不同业务场景的需求,并提供各类辅助加速结构。不同结构的数据可以根据需要通过数据迁移技术在不同结构之间转化,同时对业务完全透明。



三、数据模型一体化:结构化、半结构化、非结构化数据融合计算


数据模型一体化是指 YashanDB 提供了不同模态数据的存储和处理能力,主要包括以下结构的数据:支持关系数据为代表的结构化数据,提供了高效的关系数据处理能力,包括批量处理、复杂关联查询等;支持对 JSON、XML、LOB 等半结构化数据的存储和处理,提供完整高效的访问接口;支持 GIS 数据的存储,并且提供了完备的 GIS 检索接口,实现了原生的 GIS 索引加速检索;支持图数据的存储和检索以及与关系数据的跨模关联查询;通过向量索引存储向量数据并提供检索能力,例如近似查询。


四、运维一体化:统一部署、迁移和运维能力


运维一体化是指无论何种部署形态,YashanDB 提供了统一的部署、迁移和运维能力。部署方面支持服务器、虚拟化、私有云、公有云等全场景基础设施;迁移方面支持一键评估转换、一键应用迁移和数据迁移、一键数据校检;运维方面支持统一的运维工具、视图使用兼容主流生态, DBA 零成本上手。


五、生态兼容一体化:降低迁移与学习成本


生态兼容一体化是为了降低存量业务系统的迁移成本或者新系统的学习、运维成本。YashanDB 从语法、语义、高级特性、工具生态四层全面兼容 Oracle 生态。语法兼容方面,已兼容主流的 DDL/DML/DQL/DML 语法;语义兼容方面,已做到 SQL 语义一致,包含语法对应的语义实现、对象管理和事务处理等;高级特性兼容方面,如存储过程、UDF、UDP、触发器、JOB 等已全面兼容;工具生态兼容方面,已支持主流的客户端工具。


数据库一体化趋势:超融合与智能化


随着人工智能、大数据等新兴技术的发展和应用,数据库一体化的趋势将更加明显。一方面是超融合,做到用一套数据库系统解决 90%的业务,对数据库能力要求主要体现在多模态、多负载、多租户:多模态方面,要支持不同模型的数据存储以及跨模关联;多负载方面,实现绝大多数业务使用同一套数据库系统,少数业务场景使用统一品牌的不同系统解决,但是提供统一接口,统一运维方式;多租户方面,提供复杂业务场景的资源隔离能力以及弹性扩缩容能力。


另一方面是智能化,数据库系统在融合基础之上可以做到高度自治,简化运维,让用户能够更加聚焦业务。例如资源管理方面可以做到资源统一管理、实时智能调度;在数据管理方面,支持生命周期智能管理以及索引、物化视图等加速结构的自动发现;在故障处理方面,做到故障自诊断、自修复,最大化降低对业务的影响。


以上是我关于数据库一体化以及 YashanDB 融合架构的全部分享内容。YashanDB 将继续坚持自研路线,从“根”上打造一体化方案,共同加速数据库管理的智能化、高效化应用。

用户头像

Geek_2d6073

关注

还未添加个人签名 2021-12-22 加入

还未添加个人简介

评论

发布
暂无评论
用一个数据库解决80%的问题,YashanDB数据库一体化的实践_Geek_2d6073_InfoQ写作社区