一种数据库文本表数据的加载方法及装置制造方法及图纸

技术编号:15746630 阅读:88 留言:0更新日期:2017-07-03 02:22
本发明专利技术公开了一种内存数据库中文本表的数据加载方法及装置,所述方法包括:确定数据库中待加载的目标文本表,所述目标文本表包含N个文本文件,N为大于或等于1的正整数;在内存中创建N个第一队列,每个所述第一队列与每个所述文本文件之间具有一一映射的对应关系;对每个所述文本文件分别进行读操作,以将每个所述文本文件所读出的数据分别写入其各自对应的第一队列中;在内存中创建M个第二队列,M为大于或等于1的正整数;依次从N个所述第一队列中读取出数据,并将读取出的N个数据同时复制到每个所述第二队列中,其中,所述M个第二队列中的数据可被分别读取,用于各自对应的并发需求。

Method and device for loading data of database text table

The invention discloses a device and method for data loading text table a memory database, the method includes: determining the load database of the target text, the target text table contains N text files, N is greater than or equal to the positive integer 1; create N first queue in memory, with the corresponding one-to-one mapping relationship between each of the first queue with each of the text file; for each of the text file read operation, the first queue each of the text file data read out into their respective; create M second queue in memory, M is greater than or equal to the positive integer 1; followed by N from the first queue read, and read out the N data and copy to each of the second cohort, among them, the M queue number second It can be read separately for each of their corresponding concurrent requirements.

【技术实现步骤摘要】
一种数据库文本表数据的加载方法及装置
本专利技术涉及数据库
,特别涉及一种数据库中文本表数据的加载方法及装置。
技术介绍
随着网络运维关联集中化程度的进一步提高,网管集成的应用功能不断增多,运维需要管理的数据量也迅速增大,对数据的多维度读取需求也不断出现。而现有的传统数据库在面对数量级较大的并发需求时,通常是依次对每个并发任务提供数据加载,由此会存在运行负荷较大,对百万级、千万级及更大数据级数据的并行处理能力不足的问题;或者通过内存为每个并发任务同时提供数据加载,但会存在因过度消耗系统内存及I/O资源而大幅度降低数据加载效率的问题。为此,目前亟需一种能够高效实现数据库数据的并行加载的技术方案。
技术实现思路
有鉴于此,本专利技术的目的在于提供一种内存数据库中文本表的数据加载方法及装置,用以解决现有技术中内存数据库中重复加载同一文本表时I/O资源消耗过大的技术问题。本专利技术提供了一种数据库中文本表数据的加载方法,包括:确定数据库中待加载的目标文本表,所述目标文本表包含N个文本文件,N为大于或等于1的正整数;在内存中创建N个第一队列,每个所述第一队列与每个所述文本文件之间具有一一映射的对应关系;对每个所述文本文件分别进行读操作;将每个所述文本文件所读出的数据分别写入其各自对应的第一队列中;在内存中创建M个第二队列,M为大于或等于1的正整数;依次从N个所述第一队列中读取出数据,并将读取出的N个数据同时复制到每个所述第二队列中,其中,所述M个第二队列中的数据可被分别读取,用于各自对应的并发需求。上述方法,优选的,所述对每个所述文本文件分别进行读操作,具体包括:从每个所述文本文件中逐行读取出字符串数据;对每个所述文本文件中读取出的字符串数据进行解析,得到内存数据;将每个所述文本文件所读出的内存数据分别写入其各自对应的第一队列中。上述方法,优选的,依次从每个所述第一队列中读取出数据,并将每次读取出的数据同时复制到每个所述第二队列中,包括:依次从N个所述第一队列中逐个逐行读取出数据;将每次读取到的数据均同时写入到M个所述第二队列中。上述方法,优选的,所述方法还包括:在读取到所述文本文件的末尾时,在该文本文件对应的第一队列中写入结束标志。上述方法,优选的,所述方法还包括:在读取到每个所述第一队列的结束标志时,在每个所述第二队列中分别写入结束标志。本专利技术还提供了一种数据库中文本表数据的加载装置,包括:目标文本表确定单元,用于确定数据库中待加载的目标文本表,所述目标文本表包含N个文本文件,N为大于或等于1的正整数;第一队列创建单元,用于在内存中创建N个第一队列,每个所述第一队列与每个所述文本文件之间具有一一映射的对应关系;文件读取写入单元,用于对每个所述文本文件分别进行读操作,以将每个所述文本文件所读出的数据分别写入其各自对应的第一队列中;第二队列创建单元,用于在内存中创建M个第二队列,,M为大于或等于1的正整数;队列读取写入单元,用于依次从每个所述第一队列中读取出数据,并将读取出的N个数据复制到每个所述第二队列中,其中,所述M个第二队列中的数据可被分别读取,用于各自对应的并发需求。上述装置,优选的,所述文件读取写入单元包括:字符串读取子单元,用于从每个所述文本文件中逐行读取出字符串数据;字符串解析子单元,用于对每个所述文本文件中读取出的字符串数据进行解析,得到内存数据;内存数据写入子单元,用于将每个所述文本文件所读出的内存数据分别写入其各自对应的第一队列中。上述装置,优选的,所述队列读取写入单元包括:第一队列读出子单元,用于依次从N个所述第一队列中逐个逐行读取出数据;第二队列写入子单元,用于将每次读取到的数据同时写入到M个所述第二队列中。上述装置,优选的,还包括:第一标志写入单元,用于所述文件读取写入单元读取到所述文本文件的末尾时,在该文本文件对应的第一队列中写入结束标志。上述装置,优选的,还包括:第二标志写入单元,用于在所述队列读取写入单元在读取到每个所述第一队列的结束标志时,在每个所述第二队列中分别写入结束标志。由上述方案可知,本专利技术提供的一种数据库中文本表数据的加载方法及装置,通过将文本表中的每个文本文件进行并行读取到相应的第一队列之后,依次从每个第一队列中读取出数据同时写到预先创建的多个第二队列中,而这些第二队列中的数据可以被分别读取出用于各自对应的并发需求,完成文本表中数据的加载,满足多个应用或任务所需要的数据处理需求。这一过程中本专利技术通过设置与文本表中文本个数同等数量的第一队列来收集文本文件所读取出的数据,进而再写入可为多个应用或任务同时读取的第二队列中,实现多文件并发读取,采用异步一对多队列的方式,实现一次读取后供多个任务或线程的同时读取,实现数据共享机制,完成每个任务或线程对文本表中每个文本文件的加载任务,提高数据加载效率,降低多文件并发读取过程中对I/O资源的消耗,进一步提高数据处理效率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为现有技术中文本表的数据加载示例图;图2为本专利技术实施例一种提供的一种数据库中文本表数据的加载方法的流程图;图3为本专利技术实施例的应用示例图;图4a~图4f分别为本专利技术实施例的其他应用示例图;图5为本专利技术实施例二提供的一种数据库中文本表数据的加载方法的部分流程图;图6为本专利技术实施例三提供的一种数据库中文本表数据的加载方法的部分流程图;图7为本专利技术实施例四提供的一种数据库中文本表数据的加载方法的实现流程图;图8为本专利技术实施例四的另一流程图;图9为本专利技术实施例五提供的一种数据库中文本表数据的加载装置的结构示意图;图10为本专利技术实施例六提供的一种数据库中文本表数据的加载装置的部分结构示意图;图11为本专利技术实施例七提供的一种数据库中文本表数据的加载装置的部分结构示意图;图12为本专利技术实施例八提供的一种数据库中文本表数据的加载装置的结构示意图;图13为本专利技术实施例八的另一结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。现有其他数据库的加载文本表数据的原理比较简单,即每个SQL执行线程,会初始化自己的文件读取器。文件读取器负责从文本文件中逐行读取字符串数据,并解析为一行结构化的内存数据;如果该文本表关联的是一个文件列表(1个以上的文本文件),则文件读取器依次读取每个文件;如果同时执行的多个SQL执行线程(即多个SQL语句),用到了同一个文本表,则每个执行线程的文件读取器会重复读取这个文本表对应的多个文件,如图1中所示,由此造成重复加载,对I/O资源消耗过大;而当用缓存的方式解决复用时,如果缓存设置过大对内存消耗还是过大,而缓存设置小时,效率显著下降,仍然无法解决问题。参考图2,为本专利技术实施例一种提供的一种数据库中文本表数据的加载方法的本文档来自技高网...
一种数据库文本表数据的加载方法及装置

【技术保护点】
一种数据库中文本表数据的加载方法,其特征在于,包括:确定数据库中待加载的目标文本表,所述目标文本表包含N个文本文件,N为大于或等于1的正整数;在内存中创建N个第一队列,每个所述第一队列与每个所述文本文件之间具有一一映射的对应关系;对每个所述文本文件分别进行读操作,以将每个所述文本文件所读出的数据分别写入其各自对应的第一队列中;在内存中创建M个第二队列,M为大于或等于1的正整数;依次从N个所述第一队列中读取出数据,并将读取出的N个数据同时复制到每个所述第二队列中,其中,所述M个第二队列中的数据可被分别读取,用于各自对应的并发需求。

【技术特征摘要】
1.一种数据库中文本表数据的加载方法,其特征在于,包括:确定数据库中待加载的目标文本表,所述目标文本表包含N个文本文件,N为大于或等于1的正整数;在内存中创建N个第一队列,每个所述第一队列与每个所述文本文件之间具有一一映射的对应关系;对每个所述文本文件分别进行读操作,以将每个所述文本文件所读出的数据分别写入其各自对应的第一队列中;在内存中创建M个第二队列,M为大于或等于1的正整数;依次从N个所述第一队列中读取出数据,并将读取出的N个数据同时复制到每个所述第二队列中,其中,所述M个第二队列中的数据可被分别读取,用于各自对应的并发需求。2.根据权利要求1所述的方法,其特征在于,所述对每个所述文本文件分别进行读操作,以将每个所述文本文件所读出的数据分别写入其各自对应的第一队列中,具体包括:从每个所述文本文件中逐行读取出字符串数据;对每个所述文本文件中读取出的字符串数据进行解析,得到内存数据;将每个所述文本文件所读出的内存数据分别写入其各自对应的第一队列中。3.根据权利要求1所述的方法,其特征在于,依次从每个所述第一队列中读取出数据,并将每次读取出的数据同时复制到每个所述第二队列中,包括:依次从N个所述第一队列中逐个逐行读取出数据;将每次读取到的数据均同时写入到M个所述第二队列中。4.根据权利要求1、2或3所述的方法,其特征在于,所述方法还包括:在读取到所述文本文件的末尾时,在该文本文件对应的第一队列中写入结束标志。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:在读取到每个所述第一队列的结束标志时,在每个所述第二队列中分别写入结束标志。6.一种数据库中文本表数据的加载装置,其特征在于,包括:目标文本表确定单...

【专利技术属性】
技术研发人员:张凤桥高建军
申请(专利权)人:亿阳信通股份有限公司
类型:发明
国别省市:黑龙江,23

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

1