一种快速向数据库加载数据的方法技术

技术编号:8594037 阅读:206 留言:0更新日期:2013-04-18 07:14
本发明专利技术公开了一种快速向数据库加载数据的方法。在数据文件写入数据库的过程中,采用并行方式加载数据文件;在加载过程中采用直接写入方式,在生成元组后直接将元组写入数据库的数据文件中。本发明专利技术通过并行线程的方式提高CPU的利用率,并且通过配置数据直接写入方式,免去了数据文件写入时的各种事务检查,可以有效提高数据文件的写入效率。

【技术实现步骤摘要】

本专利技术涉及一种向数据库中快速加载数据文件的方法,属于数据库

技术介绍
随着互联网应用的广泛普及,海量数据的访问和存储成为数据库系统设计的瓶颈问题。传统数据库的数据写入接口大多采用单线程工作方式,在写入海量数据时效率较低。而现有的数据库服务器普遍使用多核CPU,单线程的数据写入方式会造成巨大的CPU资源浪费。另外,在外部数据通过数据写入接口写入数据库的过程中,数据库系统通常会执行多项事务检查。这些事务检查也会降低数据文件的写入效率。在申请号为200910080927. X的中国专利申请中,公开了一种将数据批量导入数据库的方法及系统。在该技术方案中,分析数据文件中数据的过程和将分析后数据写入数据库的过程并行;数据经过分析后存入缓存,直到分析完毕;当缓存中的数据达到预设数据量时,将该数据一次性写入数据库,并将该数据从缓存中删除;当分析完毕后,将缓存中的所有数据一次性写入数据库。采用该技术方案,数据分析和写入的速度快,尤其适用于将大量数据导入到数据库中。另外,马礼等人在论文《一种基于多核环境的海量数据快速读取方法》(刊载于《2010年第16届全国信息存储技术大会(I S T2010)论文集》)中指出随着多核计算机的发展,多核PC机已经可以完成许多大规模计算任务,然而面对海量数据的处理,存储器与辅助存储器内的数据读取往往会成为提高应用程序运行速度的瓶颈,从而不能很好运用多核系统带来的优越硬件性能。该论文提出了一种基于多核环境的海量数据快速提取方法,以内存映射文件方法为基础并运用基于视图映射粒度的划分方式和动态与静态结合的负载均衡策略,实现了在多核平台下针对海量数据的高速并行提取。
技术实现思路
本专利技术所要解决的技术问题在于提供。该方法通过并行线程和数据直接写入等技术手段,可以显著提高数据文件的加载效率。为实现上述的专利技术目的,本专利技术采用下述的技术方案—种快速向数据库加载数据的方法,在数据文件写入数据库的过程中,采用并行方式加载数据文件;在加载过程中采用直接写入方式,在生成元组后直接将元组写入数据库的数据文件中。其中较优地,在加载所述数据文件之前,首先制作配置文件,在所述配置文件中根据数据库服务器的硬件条件设置并行线程的数量。其中较优地,在数据文件写入数据库的过程中,实时维护数据库表的索引或者待数据加载结束后重新生成数据库表的索引。其中较优地,在数据库管理系统解析所述配置文件并创建加载环境后,首先解析所述数据文件,依照所述数据文件的类型由读取线程读取符合数据库表的一条数据,将该条数据写入数据槽内,并将该数据槽传输给解析线程;所述解析线程将数据解析为数据库识别的基本类型并放入数据槽中,合成线程从所述数据槽中读取数据并合成元组;在合成元组之后,根据所述配置文件中的写入方式以及索引处理方式对元组进行写入操作。其中较优地,在所述数据文件加载过程中如果出现异常情况,根据所述配置文件判断是否忽略该异常,若忽略该异常则读取线程跳过该条数据继续加载下一条数据,如果不忽略该异常则退出数据加载过程。其中较优地,在退出数据加载过程后,如果不保留已经加载的数据,则对数据库表进行操作,使已经加载的数据不可见。本专利技术所提供的数据库数据快速加载方法通过并行线程的方式提高CPU的利用率,并且通过配置数据直接写入方式,免去数据文件写入时的各种事务检查,可以有效提高数据文件的写入效率。附图说明图1为本专利技术所提供的数据库数据快速加载方法的整体架构示意图;图2为配置文件的解析过程示意图;图3为数据文件的写入过程示意图。具体实施例方式本专利技术所采用的技术思路在于通过并行线程以及数据直接写入等技术手段,提高数据文件的加载效率。在具体实施过程中,一方面通过配置文件指定并行加载数据的方式,并指定并行线程的数量;另一方面,指定直接写入(Direct)的方式,免去数据文件写入过程中的层层检查。通过上述的技术手段,有效提高数据文件的加载速度。下面结合附图展开详细的说明。如图1所示,在数据库启动后,如果需要将数据文件快速写入到数据库中,首先根据数据文件自身情况、数据库表以及硬件条件制作数据文件写入过程的配置文件。通过该配置文件可以配置并行度、写入方式、写入目标、数据文件的地址、索引支持、日志支持以及对加载过程中出现的异常进行处理的方式。其中,并行度的大小(单线程或多线程)需要根据数据库运行所在的数据库服务器的硬件条件,例如CPU的核数等进行配置。通过配置并行度的大小,可以提高CPU的使用效率。在本专利技术中,优先选择通过多线程并行的方式写入数据,该并行线程的数量通过配置文件中的配置参数决定。写入方式的配置则需要根据写入效率以及数据文件自身的情况进行选择,例如可以选择缓冲写入(Buffer)方式或者直接写入(Direct)方式。在使用缓冲写入方式时,需要经过事务检查等操作后,再将元组写入到数据文件中。而在使用直接写入方式时,则不需要经过事务检查等操作,可以直接将元组写入数据文件中。如果需要写入的数据文件已经符合写入目标(数据库表)的各种事务检查要求,且需要更高的数据加载效率,优选采用直接写入方式进行,在生成元组后直接将元组写入数据库的数据文件中。在本专利技术中,数据文件需要符合固定的标准规范,可以是CSV、TEXT以及Binary三种格式。在配置文件中通过预先指定某一种文件格式,可以决定后续操作中数据解析的具体方式。索引支持提供了在数据库表存在索引的情况下,对数据库表写入数据的索引支持。在本专利技术中,可以选择采用在数据写入的过程中实时维护索引或者待数据加载结束后重新生成索引两种方式。在通过上述配置文件指定写入的数据库表、写入方式、写入数据的存放地址等信息之后,通过数据库系统函数将配置文件的信息传导给数据库管理系统(DBMS)。参考图1,数据库管理系统负责根据配置文件中的信息,利用解析器解析数据,这里被解析的数据可以是CSV、TEXT以及Binary三种文件类型中的任意一种。随后,由写入器合成数据(即元组)、写入数据。其中,在解析数据以及合成数据的过程中,优选采用多线程并行执行的方式提高数据的生成效率,从而提高数据文件的加载速度。如图2所示,配置文件将数据库系统接口作为接入点,数据库管理系统则负责解析配置文件,获取配置信息并根据配置内容创建加载环境,创建线程信息并启用并行的线程,创建加载的数据槽信息。上述并行的线程分别具有不同的子任务,包括读取线程、解析线程、合成线程以及写入线程等。如图3所示,在数据库管理系统解析配置文件并创建加载环境后,首先解析数据文件,依照数据文件的类型由读取线程读取符合数据库表的一条数据,将该条数据写入数据槽内,并将该数据槽传输给解析线程。解析线程负责将数据解析成为数据库能够识别的基本类型,并放入数据槽中,合成线程则从数据槽中读取数据并合并成元组的形式。在合成元组之后,根据配置文件的写入方式以及索引处理方式对元组进行写入操作。在上述数据文件加载过程中如果出现异常情况,则需要根据配置文件中的配置判断是否忽略该异常,若忽略该异常则读取线程跳过该条数据继续加载下一条数据,如果不忽略该异常则退出数据加载过程。在退出数据加载过程后,需要根据配置文件中的配置判断是否保留已经加载的数据。若不保留该数据,则对数据库表进行操作,使已经加载的数据也不可见。另外本文档来自技高网
...

【技术保护点】
一种快速向数据库加载数据的方法,其特征在于:在数据文件写入数据库的过程中,采用并行方式加载数据文件;在加载过程中采用直接写入方式,在生成元组后直接将元组写入数据库的数据文件中。

【技术特征摘要】
1.一种快速向数据库加载数据的方法,其特征在于在数据文件写入数据库的过程中,采用并行方式加载数据文件;在加载过程中采用直接写入方式,在生成元组后直接将元组写入数据库的数据文件中。2.如权利要求1所述的快速向数据库加载数据的方法,其特征在于在加载所述数据文件之前,首先制作配置文件,在所述配置文件中根据数据库服务器的硬件条件设置并行线程的数量。3.如权利要求1所述的快速向数据库加载数据的方法,其特征在于在采用直接写入方式时,不进行事务检查。4.如权利要求1所述的快速向数据库加载数据的方法,其特征在于在数据文件写入数据库的过程中,实时维护数据库表的索引。5.如权利要求1所述的快速向数据库加载数据的方法,其特征在于在数据文件写入数据库的过程中,待数据加载结束后重新生成数据库表的索引。6.如权利要求2或4或5所述的快速向数据库加载数据的方法,其特征在于所述索引的处理方式在所述配置文件中设置。7.如权利要求2 ...

【专利技术属性】
技术研发人员:张树杰王颖泽冯玉李祥凯任永杰王珊
申请(专利权)人:北京人大金仓信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1