APP下载

分布式数据库管理平台的功能与测试方法

2021-11-21对外经济贸易大学统计学院在职人员高级课程研修班崔校郡

数字技术与应用 2021年12期
关键词:集中式事务日志

对外经济贸易大学统计学院在职人员高级课程研修班 崔校郡

分布式数据库管理平台主要是快速部署分布式数据库实例的管理平台,包含数据库基本功能、高性能、信息安全性、维护性、易用性、对外接口、高可用、扩展多方面的功能,与传统的Oracle数据库对比,更加体现在高可用和扩展性、云计算的弹性扩展上,因此功能设计与测试方法上与Oracle也存在差异,在设计测试用例上,着重设计单点机房高可用、跨机房高可用、网络故障、混沌测试、数据一致性的,分布式事务、备份恢复的功能测试用例。

0 引言

信息技术的快速发展数据也呈现了膨胀式增长,传统关系数据库无法满足业务访问需求,开始出现不同的解决方案对Oracle形成了有力挑战,有的产品是基于分布式文件系统[1],有的是基于关系型数据库改造而成的分布式数据库,例如百度的盖亚,各种数据库产品的稳定性、功能集存在差异,如何选出综合系统性适合自己业务的产品是非常重要的,必须通过一套可行的方法论指导,本文就分布式数据库管理平台的功能设计和测试方法进行研究。

1 分布式数据库的特征

分布式数据库的典型特征是基于CAP、BASE、最终一致性的三大基石设计和开发的,对于不同的应用类型进行功能取舍,在一致性、可用性、分区容错性进行取舍,容忍数据库从基本可用到软状态、最终一致性,传统的集中式数据库选择的是CA,既一致性和可用性放到同一个实例中保障,分布式数据库有更多的选择,即可以选择CA,也可以选择BASE、AP。在节点层的存储引擎上有的选择列式存储、行列混合存储、智能索引技术,在运算分析型场景中性能非常优越;分布式数据库由于采用了数据水平分布架构,存储与计算耦合,存储与计算双分布式,网卡采用RDMA技术,使得通过水平扩展节点带来的性能飞跃接近线性增长,在进行带分区键的数据检索、更新业务中,吞吐量增长效果非常明显,成为了在TB级在线运算数据量的场景中首选[2]。

2 分布式数据库的功能

2.1 基本功能

数据库对象实际包含数据库用户、数据库、表、索引、视图、权限、操作符、函数、存储过程、序列,这些对象的创建和使用规则方法是否符合标准的数据库SQL规范标准(SQL∶2003-SQL∶2011),对外提供的访问接口,管理界面。

数据库管理功能测试的方法和侧重点与传统集中式数据库不一样,分布式数据库与集中式数据库采取的设计原则和理论基石与集中式数据库是截然不同的,使用场景不同采取的典型配置也有差异,在集中式的数据库中以上对象的管理功能必须是齐全的,是符合数据库范式的完整关系型数据库,既能满足可用性,也保障一致性,但在分布式数据库中,满足数据的分布式存储后,管控界面、访问接口、表的存储、用户管理、权限管理是必须的之外,视图、操作符、函数、存储过程、序列是可选的。分布式事务在分布式的产品中是非常难实现并且影响事务性能的[3],有的产品采用了两阶段提交,有的产品采用了三阶段提交,有的产品使用MQ作为分布式事务串行化执行队列。

着重指出的是,从集中式数据库过度到分布式数据库过程中不只是数据库管理系统本身的改变,更多是开发方法和方案的改变,从应用层进行改革,单从数据库产品替换不能解决集中式数据库遇到的问题[2],视图、函数、存储过程需要全局视图,全局一致性的维护带来系统开销和一致性检查的强制等待时间开销,单事务响应时间必然要多于集中式数据库,如果不选择全局性的视图、函数、存储过程,分布式数据库能通过节点数的水平扩展,提升整体吞吐量和系统性能线性扩展。

2.2 高性能管理

数据库的性能主要体现在数据的检索和更新效率上,分布式数据库采用了数据水平分布,数据哈希分布到多个节点上并发运算,性能管理主要涉及到数据的导出、导入加载,单事务的响应时间,高并发情况下的平均响应时间以及每秒事务处理能力,每个事务的SQL数量以及读写比例。

测试的侧重点在于业务场景的分析与测试工具的选取上,业务场景主要是分析读写比例,数据量、表的数量、表的行数,表的平均行长度,字段类型,SQL的类型以及典型特征,选取与业务特征相近的测试工具,分布式数据库的优势和劣势都非常明显,并不是通用在所有场景中,用其长处,规避其劣势是性能测试中的重点,避免跨实例的事务和连接能够大大提升分布式数据库的并发度和吞吐量,如果涉及到跨实例的事务和连接,业务层需要做一定的改造才能用好分布式数据库,否则造成资源浪费,也不能取得良好的效果,对于分析型的场景中,多个节点并行运算,在线运算的数据量往往是TB级[1],运算所占的时间在整体业务执行时间中的比例大,这种场景下分布式的数据库并行运算的连接查询的性能远比集中式数据库高数倍。测试用例需要考察数据分布在多个节点是否均匀,各个节点的压力是否均衡,CPU、内存和磁盘资源的利用率是否均匀,如果出现数据倾斜是否为分布键选取不合理导致,最佳的效果是数据分布均匀,各个节点资源利用率均匀,随着压力的增加,各个节点压力增长,带来整体的每秒处理事务数增加,性能呈现增长趋势,到达瓶颈后开始回落并稳定在一定的性能水平值。

2.3 信息安全性

分布式数据库与集中式数据库一样,信息安全包括用户访问控制、身份鉴别、审计日志、数据加密和传输加密,因部分场景需要用到数据不落地加密,需要鉴别数据库产品是否具备这样的功能。

信息安全测试的重点在于用户访问的密码存储是否已经加密,分布式的集群往往由集群层和节点层组成或者部署中间件负责数据路由解析,会存在集群层或者中间件通过密码访问节点层数据库的情况,需要确保中间件或者集群层的账号密码加密存储,密码复杂度是否满足国家安全标准需要。

2.4 维护性

维护功能主要是分布式数据库在日常运行过程中,能否提供必要的工具检查错误信息、日志信息,能够通过工具进行性能检测、运维告警、版本升级和降级,数据库参数设置,能否通过一键式定位问题流程,系统能否具备自我运维的功能。

测试的重点管控面必须具备全局统一视图运维多个节点,并能针对每个节点进行详细的运维,例如一套分布式集群的运行状态、数据量、并发度、数据访问流量等信息都能够统一看到,同时又能看到节点上的这些信息。在出现问题报警后,根据报警信息能够在运维系统里进行一键式故障定位,根据故障定位结果,提供快速问题解决的建议。运维工具本身具备自我运维的能力。

2.5 高可用

当某个数据库进程故障时保障对外提供的数据库服务不受到影响或者在有限的时间内服务恢复且数据不丢失,高可用需要包括数据路由节点、集群层、数据存储节点、管控进程、网络、磁盘、数据备份的高可用,对于存在多机房的系统也包括整机房的高可用。

在测试中针对每种高可用环境,需要构建程序进程故障、挂起、软切换的软故障,也需要构建操作系统宕机、物理宕机、网络中断、机房掉电等硬故障情况下的故障用例,故障切换完成后,需要校验数据的一致性,需要从理论上分析产品是否具备高可用数据一致性的能力,并且通过故障验证这种能力。所有的高可用故障切换后最主要的是保障数据的一致不丢失,采用关系型数据库作为存储节点构建的分布式数据库都有多个存储节点,每个存储节点都是有只读副本以及备份节点提供服务,当存储节点故障后,高可用的管控程序会组织所有副本选主,新主库与旧主库之间数据一致的保障通过主副本的数据同步完成,主副本的同步如果是库外回放事务日志的方法,例如MySQL的事务日志,主库会等待副本收到事务日志的接收应答后才会提交并入库刷盘,保障副本事务与主库一致,副本如果收到事务日志但回放日志的速度与主库之间存在延迟,在切换过程中管控程序会等待副本回放完毕事务日志,避免数据差异。

备份、恢复的测试用例需要包括全量备份、增量备份,全量恢复和增量恢复,是否包含闪回,观察产品是基于事务日志挖掘的闪回,还是基于存储引擎本身的闪回,分布式数据库的闪回需要考察分布式事务的协调多个存储节点的闪回,是闪回过程非常容易出问题的点,备份恢复必须做到分布式事务的一致性。

2.6 扩展性

分布式数据库的最大特性是横向扩展能力,未达到存储节点的性能瓶颈前,横向扩展中间件或者集群层节点数,能够提升系统的事务处理能力,在达到存储节点瓶颈后,扩展存储节点也可以提升系统的事务处理能力,节点数的水平扩展,能够使整体性能达到接近线性增长的能力,在中间件节点数扩容以及存储节点扩容过程中业务读写无感,中间件节点的扩容不涉及到数据的重分布,存储节点数扩容可能引起已有的数据的重分布,产品最好能够提供可选的能力,增加存储节点后可以选择以后数据存储分布不变。

扩展性的测试重点应该构建带业务读写的扩容、缩容用例,观察数据量与扩缩容时间的关系,以及需要观察对业务读写的影响,包括阻塞读、阻塞写的时间,扩缩容后数据一致检查,需要说明的是随着节点数的扩容和不断增加,单集群的单笔事务处理时长可能会变长,数据分布节点数越多,分布式事务需要协调的节点数越多,耗费时间越久,因此当单笔事务处理时长发生变化时而且非常明显时,可能需要关注业务是否可以通过拆分业务事务数据的大小,避免单笔事务时长增加带来的积压问题,积压问题会导致数据库实例存储引擎的宕死,导致死锁、锁等待等连锁问题。

2.7 资源管控能力

分布式数据库多用在数据量庞大以及多租户环境中,不同租户之间的优先级和使用资源的能力不一样,管控程序必须提供资源管控的能力,统一划分整个系统的处理器、内存、磁盘存储和输入输出能力[1]。

测试用例必须构建不同租户分别在不同处理器、内存、磁盘资源配置下处理相同数据集的时长差异,确认租户资源管控能力的强弱,必须达到预期的结果是分配资源越多处理效率越高。

3 结语

本文分析了分布式数据库管理平台的功能设计要点和测试方法,希望在数据库管理员数据库选型时有所帮助,分布式数据库在金融场景数据仓库分层建模分析,风险控制系统应用广泛,它与传统的数据库的使用方法和适用场景上存在着巨大的差异,在小数据集以及单事务效率上不如集中式数据库,但整体的吞吐量,并行运算能力、水平弹性扩展存储节点的能力,远远超过Oracle等传统数据库产品,在数据库功能选择和构建测试用例的时候,必须从业务优化的角度构建与业务匹配的测试用例,选择适于自身业务的数据库产品。

引用

[1] 林子雨.大数据技术原理与应用[M].北京:人民邮电出版社,2017(2):108-116.

[2] 周莹.分布式异构数据集成系统的研究与分析[J].数字技术与应用,2018,36(7):220+222.

[3] 潘潁.确定性分布式数据库中长事务处理方法研究[J].数字技术与应用,2017(2):107.

猜你喜欢

集中式事务日志
基于分布式事务的门架数据处理系统设计与实现
一名老党员的工作日志
扶贫日志
河湖事务
游学日志
组串式、集中式逆变器的评估选定浅析
接触网隔离开关集中式控制方案研究
一种基于粗集和SVM的Web日志挖掘模型
SQLServer自治事务实现方案探析
移动实时环境下的数据一致性研究