论文部分内容阅读
随着互联网技术的快速发展,金融、通信、教育等行业对信息化的需求不断地增加。在国内,信息化发展已经有几十年,金融行业更是成为信息化程度最高的行业。随着用户的增长和业务的更新,金融行业数据库的数据量也不断地增长,其数据量高达几百TB甚至PB级。通常,金融企业需要大型数据库系统来存储和管理海量金融数据。同时由于业务需求,不同金融系统间需要大量的数据共享,因此不同系统间需要大量的数据迁移和加载。海量金融数据的存储和加载,给金融系统提出了严峻的挑战。本文主要针对海量金融数据的数据加载问题展开研究,并以一个实际金融系统作为研究对象,结合其底层数据存储架构及数据加载特点,设计和实现适用于该系统的海量数据加载方法。主要贡献如下:1.基于交通银行历史库系统,我们分析了历史库系统的海量数据存储和加载实现,其底层数据存储采用分布式数据库Ocean Base来解决海量数据存储的问题。通过分析历史库的数据加载特点,我们发现新存储架构下的历史库系统面临海量数据加载问题。为此,我们提出了两种解决思路。2.针对OceanBase数据加载的实现,我们设计和实现了两种加载方法:基于SQL INSERT的数据加载和直接更新内存表的数据加载。前者是一种常见的数据导入技术,主要通过并发执行插入SQL来实现数据导入。后者则根据OceanBase特有的存储架构,将数据加载问题转化为B+树的并发插入问题。这种加载方法只适用于OceanBase。相比于前者,该方法可以减少网络传输和事务处理量,从而提高加载效率。实验表明该加载方法较好地解决OceanBase数据加载问题。3.根据历史库系统的数据加载特点,为了提高整体的数据加载效率,我们提出一种多任务并行加载的方法。该方法将所有加载任务切分到多个加载服务器上,充分利用加载服务器和数据库系统的资源,使得加载任务并行运行于不同加载服务器上。4.为了获取更好的并行加载效率,我们提出了两种任务调度策略:基于表级任务调度和基于细粒度的两阶段任务调度。这两种调度策略分别基于不同的划分粒度,被应用于多任务并行加载过程中,使尽可能多的加载任务并行执行。实验表明,两阶段调度策略可以更充分地利用加载服务器资源,获取更好的加载效率。