YashanDB 支持的存储引擎架构特点详细介绍
数据库系统在处理日益增长的数据量和复杂业务需求时,面临着性能瓶颈、一致性保障以及数据管理灵活性不足等挑战。针对这些问题,数据库架构设计需兼顾事务处理、实时分析、扩展性及高可用性等多方面需求。YashanDB 作为新一代关系型数据库,基于多样化的存储引擎架构,通过灵活部署与先进的存储管理策略,有效提升了系统综合性能与可靠性。本文将对 YashanDB 支持的存储引擎架构进行技术细节的深入解析,旨在为数据库设计、架构师及开发人员提供参考依据与技术指导。
存储引擎的存储结构分类及特性
YashanDB 采用多种存储结构以适配不同应用场景,主要包括 HEAP、BTREE、MCOL(可变列式存储)与 SCOL(稳态列式存储)。
HEAP 存储结构:采用无序堆式存储,数据以行(Row)格式存放,主要用于高并发的联机事务处理(OLTP)场景。数据插入时快速寻找空闲位置,支持变长字段的原地更新及行迁移机制,减少更新延迟和空间浪费。
BTREE 存储结构:实现基于 B-Link Tree 的多叉平衡查找树,保证索引数据的有序存储,提高查询效率。支持多种索引扫描模式(如唯一扫描、范围扫描、跳跃扫描等),满足复杂查询优化需求。
MCOL 存储结构:采用段页管理的可变列式存储,数据按列批次连续存储,支持原地更新和字典编码。相比传统列式存储,MCOL 避免了“墓碑”标记及空间膨胀,兼具列存查询性能与实时事务更新能力,适合 HTAP 场景。
SCOL 存储结构:采用对象式管理的稳态列式存储,将数据分割为多个切片文件,支持高效压缩、编码及稀疏索引,加速海量稳态数据分析(OLAP)。数据分为活跃切片(支持实时更新)和稳态切片(支持更高压缩及合并优化)。
存储对象类型及应用场景
基于上述存储结构,YashanDB 支持三类核心存储对象:
行存表:采用 HEAP 结构,具备高效的增删改操作能力,适合对数据实时性要求严格的 OLTP 业务。
列存表:包括 TAC 表(基于 MCOL,支持实时事务与分析混合 HTAP 场景)及 LSC 表(基于 MCOL 与 SCOL,面向海量数据的 OLAP 分析场景),通过冷热数据分区及多阶段数据转化,兼顾写入性能与大规模查询优化。
BTree 索引:默认索引类型,实现高效的索引构造与维护策略,辅助加速数据访问路径,降低全表扫描代价。
空间管理与数据持久化机制
YashanDB 通过分层逻辑结构和多线程协作保证存储空间高效利用与数据完整性:
表空间和段页式管理:表空间作为逻辑存储容器,支持段(Segment)、区(Extent)、块(Block)三级结构,精细化管理各类型数据和索引存储。采用 PCT Free 预留空闲空间策略,减少行迁移带来的性能影响。
事务与多版本并发控制(MVCC):所有表对象全面支持 ACID 特性,采用 UNDO 日志存储历史版本,保证读写并发情况下的数据一致性,支持语句级和事务级一致性视图。
写前日志(WAL)与 redo 日志管理:所有变更先写 redo 日志,实现快速故障恢复与主备数据同步。数据库采用检查点机制(Checkpoint)将脏页批量刷盘,辅以多线程写入、IO 合并等技术优化落盘效率。
双写机制:通过对数据块双写缓解文件系统缓存导致的半写问题,提升数据完整性确保系统在异常断电场景下的可靠性。
部署架构与存储引擎协同
YashanDB 支持多种部署形态,三种部署形态下的存储引擎共同协作,满足不同业务需求:
单机部署:采用主备复制实现数据同步与高可用,存储引擎在单机实例内高效运行,满足标准 OLTP 业务需求。
分布式部署:基于 Shared-Nothing 架构,节点分为管理节点(MN),协调节点(CN),数据节点(DN),存储引擎可根据数据分片策略动态扩展。支持海量数据分析并发处理。
共享集群部署:依托共享存储与崖山集群内核(YCK),实现多实例对同一数据的强一致性并发读写。存储引擎结合共享集群文件系统(YFS),高效管理数据访问与元数据共享,满足多实例多写高性能及高可用需求。
性能优化与存储引擎创新点
多层缓存机制:包括共享内存池、数据缓存和有界加速缓存,以及虚拟内存等,不同缓存类型针对查询执行、事务日志和数据库对象等多种用途,提升整体系统响应速度。
向量化及并行执行支持:存储引擎与 SQL 执行层配合利用 SIMD 指令集,实现批量数据处理,提高计算密集型分析任务的效率。
冷热数据自动切换:基于 MCOL 和 SCOL 存储结构,支持后台自动转换任务,将热数据优势的快速更新与冷数据优势的高压缩查询相结合,实现存储最优化。
段空间空闲度管理:三级空闲链表随机分配空闲空间,降低多事务竞争,提高插入及更新并发性能。
存储引擎维护与管理特性
索引维护和多样化索引支持:支持唯一索引、非唯一索引、函数索引以及反向索引等多种索引类型,实现灵活查询优化与存储整理。
表空间和数据文件在线管理:支持在线增删数据文件、表空间离线及扩展操作,确保系统运行不中断,同时实现空间资源动态调整。
日志和备份恢复机制:依托 redo 日志与归档机制,结合增量与全量备份,支持时间点恢复及快速故障切换,确保存储系统的高可用性与业务连续性。
技术建议
根据业务场景合理选择存储结构:实时更新业务推荐采用 HEAP 行存或 MCOL 列存,海量分析业务推荐采用 SCOL 稳态列存。
合理配置表空间大小及区分冷热数据存储空间,提升空间利用率并支持高并发数据访问。
设计索引时充分利用 BTREE 索引的多种扫描策略,避免无效索引提升查询性能同时减少维护负担。
使用 MVCC 及事务隔离配置保障数据一致性,推荐使用读已提交默认隔离级别,特殊业务可根据需求调整为可串行化。
针对高写入负载场景,优先采用 MCOL 原地更新能力,减少空间膨胀,提高存储引擎更新效率。
部署集群时结合业务规模选择合适部署形态,单机适用标准事务,分布式适合大规模分析,共享集群满足高可用多写性能需求。
定期统计数据分布与表空间使用情况,维护准确的统计信息,辅助优化器制定高效执行计划。
合理配置和监控存储引擎缓存资源,避免缓存瓶颈带来性能降级。
利用 YashanDB 的自动选主及主备复制功能,保障系统的高可用和业务持续稳定运行。
结论
YashanDB 的存储引擎架构充分体现了多样存储结构与灵活部署的技术优势,支持面向事务、混合事务分析及海量分析的多场景数据管理需求。其基于段页式空间管理、多版本并发控制、原地更新及冷热数据自动转换机制,保证数据一致性与性能的高度平衡。配合高效的主备复制及集群服务机制,实现了业务的高可用保障。建议数据库设计与运维人员基于实际业务场景,合理规划存储结构和相关参数配置,以最大化发挥 YashanDB 存储引擎的性能和可靠性优势。
评论