论文部分内容阅读
近年来,在数据泛滥的时代,从电子商务到社交网络等移动互联网技术的应用,用户以前所未有的规模产生了大量的数据。传统的通过增加服务器并采用基于分库分表的方法来解决数据库扩展性问题需要大量的人工维护成本和硬件开销。为了降低开销和分库分表带来的各种问题,业界通常利用新型数据库系统替换原有的系统。其中,基于日志结构合并树存储的数据库系统(例如:OceanBase)被广泛采用,这类系统磁盘上存储的数据块一般呈现全局有序的特征。在从传统数据库切换到新型数据库过程中,需要将大量数据加载到新型数据库系统中,并且长时间加载过程中可能出现存储节点故障或加载进程故障。为了减少总加载时间和故障恢复时间,本文提出一种负载均衡且支持高效故障恢复的数据加载方法。为了支持负载均衡的数据加载,考虑到目标系统默认存储块大小,本文采用一种预计算分区数目方法,这种方法基于目标系统默认存储块大小和加载数据文件大小,同时利用数据在分库分表的系统中导出通常局部有序的特点,选择一些采样块并等间隔选样本来确定分区间边界点,减少选取所有采样块并在每个采样块中头部或随机选样本引起的高开销。为了处理不同的故障类型,加快故障恢复速度,特别是存储节点故障和加载进程故障两种常见的故障类型,本文利用日志结构合并树存储系统的多副本特性减少故障恢复时从远程数据源拉取的数据量,提出基于副本局部故障恢复方式,避免完全重新加载的故障恢复方式。本文主要贡献总结如下:1.提出预计算分区数目和基于部分采样确定分区边界点负载均衡数据加载方法。本文针对日志结构化存储系统存储的表数据按全局有序水平切分为多个固定大小的子表分布在多个存储节点上的特点,采用预计算分区数目和基于等间隔选取样本的部分采样方法来减少采样开销,同时使各个分区相对均衡,实现负载均衡数据格式转换和数据迁移到目标存储系统。2.提出一种基于副本的局部故障恢复的加载方法,减少了故障恢复的时间。由于在分布式环境中可能存在各种类型故障,为了使数据加载流程能够对故障实现自动处理,同时减少故障恢复时间,本文针对日志结构化存储系统多副本的特性,提出一种基于副本局部故障恢复方法,减少发生故障时重新从数据源拉取副本数量,提高故障恢复速度。3.基于Hadoop和开源数据库CEDAR中实验验证负载均衡数据加载及故障恢复方法高效性。通过对比预确定分区数目和预计算分区数目两种方法,验证了本文提出的针对基于日志结构合并树存储系统的预计算分区方法更加高效,通过对比全局采样和部分采样两种方法,验证了本文提出的通过部分采样可以权衡采样开销和精确度。通过对比三种选取样本方式,验证了等间隔选取样本方法更加适合局部有序的数据集。在故障恢复方面,对于存储节点和加载进程故障,通过对比基于重启全局故障恢复和基于副本局部故障恢复两种恢复,验证由于减少从数据源重新拉取恢复副本的数量,基于副本局部故障恢复减少了故障恢复时间。综上所述,本文主要研究了在基于日志结构化存储系统中的数据加载问题。首先,为解决数据加载过程中的负载均衡问题,给出针对存储系统结构特点和加载数据文件局部有序的特点设计的数据分区方案,实现整体负载均衡的数据加载流程;其次,为解决数据加载过程中的故障恢复问题,提出一种结合系统多副本特点的基于副本局部故障恢复方式,减少故障恢复时间;最后,通过实验验证了本文方法的高效性。