一种数据库文本表数据的加载方法及装置与流程

文档序号:12786345阅读:330来源:国知局
一种数据库文本表数据的加载方法及装置与流程

本发明涉及数据库技术领域,特别涉及一种数据库中文本表数据的加载方法及装置。



背景技术:

随着网络运维关联集中化程度的进一步提高,网管集成的应用功能不断增多,运维需要管理的数据量也迅速增大,对数据的多维度读取需求也不断出现。

而现有的传统数据库在面对数量级较大的并发需求时,通常是依次对每个并发任务提供数据加载,由此会存在运行负荷较大,对百万级、千万级及更大数据级数据的并行处理能力不足的问题;或者通过内存为每个并发任务同时提供数据加载,但会存在因过度消耗系统内存及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,为本发明实施例一种提供的一种数据库中文本表数据的加载方法的实现流程图,其中,本实施例的目的在于将数据库中的文本表数据提供 给每个并发需求,即为完成每个并发需求对文本表中所有文本文件的数据加载需求。具体的,所述方法可以包括以下步骤:

步骤201:确定数据库中待加载的目标文本表。

其中,所述目标文本表包含N个文本文件,N为大于或等于1的正整数。

步骤202:在内存中创建N个第一队列。

其中,每个所述第一队列与每个所述文本文件之间具有一一映射的对应关系,如图3中所示,N个文本文件与N个第一队列中,文本文件1对应第一队列1,文本文件2对应第一队列2,以此类推,文本文件N对应第一队列N。也就是说,本实施例中可以创建多个第一队列,所述第一队列的数量与该目标文本表中需要加载的文本文件的数量相同,进而所述目标文本表中的每个文本文件均对应一个所述第一队列。

步骤203:对每个所述文本文件分别进行读操作,以将每个所述文本文件所读出的数据分别写入其各自对应的第一队列中。

也就是说,每个所述文本文件各自被读取出的数据会别写入到该文本文件对应的第一队列中,如图4a中所示,以实现多文本文件TextFile的并发读取。

步骤204:在内存中创建M个第二队列。

其中,M为大于或等于1的正整数,这里所述第二队列的个数可以根据并发需求的个数相一致,也就是说,每个并发需求可以分别对应一个第二队列。

步骤205:依次从N个所述第一队列中读取出数据,并将读取出的N个数据同时复制到每个所述第二队列中。

其中,所述M个第二队列中的数据可被分别读取,具体可以被相应的并发需求的队列读取器读取相应第二队列中的数据,被读取出的M个数据可以用于各自对应的并发需求,需要说明的是,这里M个数据中每个数据即为前文中从N个第一队列中所读取出的所有数据。

也就是说,本实施例中依次对所有所述第一队列中的数据进行读取,并将每次读取到的数据都会在每个所述第二队列进行写入一次,这样,每个所述第二队列中的数据都是相同的,最后每个所述第二队列中的数据是包含有上述目标文本表中所有文本文件中所读取出的数据的,如图4b中所示,每个所述第二队列中包含第1~N个第一队列中所读取出的所有数据。

其中,所述队列读取器可以理解为需要加载所述目标文本表中文本文件的任务或者线程的表数据队列读取器,用以读取相应第二队列中的数据,之后,每个任务或线程如SQL执行线程等,通过表数据读取器逐行读取结构化的行数据,之后再完成SQL语句的后续查询、关联等其他工作,进而结束数据的加载流程,完成数据加载。

由上述方案可知,本发明实施例一提供的一种数据库中文本表数据的加载方法,通过将文本表中的每个文本文件进行并行读取到相应的第一队列之后,依次从每个第一队列中读取出数据同时写到预先创建的多个第二队列中,而这些第二队列中的数据可以被分别读取出用于各自对应的并发需求,完成文本表中数据的加载,满足多个应用或任务所需要的数据处理需求。这一过程中本发明通过设置与文本表中文本个数同等数量的第一队列来收集文本文件所读取出的数据,进而再写入可为多个应用或任务同时读取的第二队列中,实现多文件并发读取,采用异步一对多队列的方式,实现一次读取后供多个任务或线程的同时读取,实现数据共享机制,完成每个任务或线程对文本表中每个文本文件的加载任务,提高数据加载效率,降低多文件并发读取过程中对I/O资源的消耗,进一步提高数据处理效率。

参考图5,为本发明实施例二提供的一种数据库中文本表数据的加载方法中所述步骤203的实现流程图,其中,所述步骤203可以通过以下步骤实现:

步骤231:从每个所述文本文件中逐行读取出字符串数据。

具体的,本实施例中可以利用文件读取线程实现从每个所述文本文件中逐行读取字符串数据的工作,如图4c中所示,所述文件读取线程对N个文本文件进行逐行读取字符串数据。

步骤232:对每个所述文本文件中读取出的字符串数据进行解析,得到内存数据。

具体的,这里的内存数据为行结构的数据结构,以便于本实施例中在得到这些内存数据之后能够在系统内存中进行存储。

步骤233:将每个所述文本文件所读出的内存数据分别写入其各自对应的第一队列中。

如图4d中所示,本实施例中可以利用所述文件读取线程将得到的内存数据写入到相应的第一队列中。

参考图6,为本发明实施例三提供的一种数据库中文本表数据的加载方法中所述步骤205的实现流程图,其中,所述步骤205可以通过以下步骤实现:

步骤251:依次从N个所述第一队列中逐个逐行读取出数据。

步骤252:将每次读取到的数据均同时写入到M个所述第二队列中。

具体的,本实施例中可以利用表数据共享线程依队列顺序依次从N个所述第一队列中逐行读取所述数据,每读取到一行数据之后,将该读取到的数据同时写入到M个所述第二队列中。

如图4e中所示,所述表数据共享线程每次读取一个第一队列的一行未读取的数据,将此时读取到的数据写入到M个第二队列中的每个队列,之后,读取下一个第一队列的一行未被读取的数据,将此时读取到的数据写入到M个第二队列中的每个队列,以此类推,直到将每个所述第一队列中的数据均读取并写入到每个所述第二队列中。

具体的,本实施例中可以采用先进先出的读取策略,实现对文本文件或读取队列中的数据的读取。

参考图7,为本发明实施例四提供的一种数据库中文本表数据的加载方法的实现流程图,其中,在所述步骤203中读取所述文本文件中的数据时,所述方法还可以包括以下步骤:

步骤206:在读取到所述文本文件的末尾时,在该文本文件对应的第一队列中写入结束标志。

也就是说,本实施例中利用所述文件读取线程读取每个所述文本文件时,在发现所述文本文件中的字符串数据均已经被读取无法再读取出内存数据时,所述文件读取线程可以在相应的第一队列中写入结束标志,以表示所述读取队列完成写入操作。

相应的,参考图8,为本发明实施例四的另一流程图,其中,在所述步骤205读取所述第一队列中的数据时,所述方法还可以包括以下步骤:

步骤207:在读取到每个所述第一队列的结束标志时,在每个所述第二队列中分别写入结束标志。

也就是说,本实施例中利用表数据共享线程在读取每个所述第一队列中的数据时,只有在读取到所有第一队列中的结束标志时,表明所有所述第一队列中的所有数据均被读取,此时,直接在每个所述第二队列中写入结束标志,表明所述第一队列中的数据全部被读取出,并写入每个所述第二队列中,进而M个所述第二队列中的数据可以被相应的并发需求进行读取,具体的,通过每个并发需求的队列读取器从其对应的第二队列中依次读取数据,以满足并发需求。

参考图9,为本发明实施例五提供的一种数据库中文本表数据的加载装置的结构示意图,其中,所述装置的目的在于将数据库中的文本表数据提供给每个并发需求,即为完成每个并发需求对文本表中所有文本文件的数据加载需求。具体的,所述装置可以包括以下结构:

目标文本表确定单元901,用于确定数据库中待加载的目标文本表。

其中,所述目标文本表包含N个文本文件,N为大于或等于1的正整数。

第一队列创建单元902,用于在内存中创建N个第一队列。

其中,每个所述第一队列与每个所述文本文件之间具有一一映射的对应关系,如图3中所示,N个文本文件与N个第一队列中,文本文件1对应第 一队列1,文本文件2对应第一队列2,以此类推,文本文件N对应第一队列N。也就是说,本实施例中可以创建多个第一队列,所述第一队列的数量与该目标文本表中需要加载的文本文件的数量相同,进而所述目标文本表中的每个文本文件均对应一个所述第一队列。

文件读取写入单元903,用于对每个所述文本文件分别进行读操作,以将每个所述文本文件所读取出的数据分别写入其各自对应的第一队列中。

也就是说,每个所述文本文件各自被读取出的数据会别写入到该文本文件对应的第一队列中,如图4a中所示,以实现多文本文件的并发读取。

第二队列创建单元904,用于在内存中创建M个第二队列。

其中,M为大于或等于1的正整数,这里所述第二队列的个数可以根据并发需求的个数相一致,也就是说,每个并发需求可以分别对应一个第二队列。

队列读取写入单元905,用于依次从每个所述第一队列中读取出数据,并将读取出的N个数据同时复制到每个所述第二队列中。

其中,所述M个第二队列中的数据可被分别读取,具体可以被相应的并发需求的队列读取器读取相应第二队列中的数据,被读取出的M个数据可以用于各自对应的并发需求,需要说明的是,这里M个数据中每个数据即为前文中从N个第一队列中所读取出的所有数据。

也就是说,本实施例中依次对所有所述第一队列中的数据进行读取,并将每次读取到的数据都会在每个所述第二队列进行写入一次,这样,每个所述第二队列中的数据都是相同的,最后每个所述第二队列中的数据是包含有上述目标文本表中所有文本文件中所读取出的数据的,如图4b中所示,每个所述第二队列中包含第1~N个第一队列中所读取出的所有数据。

其中,所述队列读取器可以理解为需要加载所述目标文本表中文本文件的任务或者线程的表数据队列读取器,用以读取相应第二队列中的数据,之后,每个任务或线程如SQL执行线程等,通过表数据读取器逐行读取结构化的行数据,之后再完成SQL语句的后续查询、关联等其他工作,进而结束数据的加载流程,完成数据加载。

由上述方案可知,本发明实施例五提供的一种数据库中文本表数据的加载装置,通过将文本表中的每个文本文件进行并行读取到相应的第一队列之后,依次从每个第一队列中读取出数据同时写到预先创建的多个第二队列中,而这些第二队列中的数据可以被分别读取出用于各自对应的并发需求,完成文本表中数据的加载,满足多个应用或任务所需要的数据处理需求。这一过程中本发明通过设置与文本表中文本个数同等数量的第一队列来收集文本文件所读取出的数据,进而再写入可为多个应用或任务同时读取的第二队列中,实现多文件并发读取,采用异步一对多队列的方式,实现一次读取后供多个任务或线程的同时读取,实现数据共享机制,完成每个任务或线程对文本表中每个文本文件的加载任务,提高数据加载效率,降低多文件并发读取过程中对I/O资源的消耗,进一步提高数据处理效率。

参考图10,为本发明实施例六提供的一种数据库中文本表数据的加载装置中所述文件读取写入单元903的结构示意图,其中,所述文件读取写入单元903可以包括以下结构:

字符串读取子单元931,用于从每个所述文本文件中逐行读取出字符串数据。

具体的,本实施例中可以利用文件读取线程实现从每个所述文本文件中逐行读取字符串数据的工作,如图4c中所示,所述文件读取线程对N个文本文件进行逐行读取字符串数据。

字符串解析子单元932,用于对每个所述文本文件中读取出的字符串数据进行解析,得到内存数据。

具体的,这里的内存数据为行结构的数据结构,以便于本实施例中在得到这些内存数据之后能够在系统内存中进行存储。

内存数据写入子单元933,用于将每个所述文本文件所读出的内存数据分别写入其各自对应的第一队列中。

如图4d中所示,本实施例中可以利用所述文件读取线程将得到的内存数据写入到相应的第一队列中。

参考图11,为本发明实施例七提供的一种数据库中文本表数据的加载装置中所述队列读取写入单元905的结构示意图,其中,所述队列读取写入单元905可以包括以下结构:

第一队列读出子单元951,用于依次从N个所述第一队列中逐个逐行读取出数据。

第二队列写入子单元952,用于将每次读取到的数据均同时写入到M个所述第二队列中。

具体的,本实施例中可以利用表数据共享线程依队列顺序依次从N个所述第一队列中逐行读取所述数据,每读取到一行所述数据之后,将该读取到的数据同时写入到M个所述第二队列中。

如图4e中所示,所述表数据共享线程每次读取一个第一队列的一行未读取的数据,将此时读取到的数据写入到M个第二队列中的每个队列,之后,读取下一个第一队列的一行未被读取的数据,将此时读取到的数据写入到M个第二队列中的每个队列,以此类推,直到将每个所述第一队列中的数据均读取并写入到每个所述第二队列中。

具体的,本实施例中可以采用先进先出的读取策略,实现对文本文件或读取队列中的数据的读取。

参考图12,为本发明实施例八提供的一种数据库中文本表数据的加载装置的结构示意图,其中,所述装置还可以包括以下结构:

第一标志写入单元906,用于所述文件读取写入单元903读取到所述文本文件的末尾时,在该文本文件对应的第一队列中写入结束标志。

也就是说,本实施例中利用所述文件读取线程读取每个所述文本文件时,在发现所述文本文件中的字符串数据均已经被读取无法再读取出内存数据时,所述文件读取线程可以在相应的第一队列中写入结束标志,以表示所述读取队列完成写入操作。

相应的,参考图13,为本发明实施例八的另一结构示意图,其中,所述装置还可以包括以下结构:

第二标志写入单元907,用于在所述队列读取写入单元905在读取到每个所述第一队列的结束标志时,在每个所述第二队列中分别写入结束标志。

也就是说,本实施例中利用表数据共享线程在读取每个所述第一队列中的数据时,只有在读取到所有第一队列中的结束标志时,表明所有所述第一队列中的所有数据均被读取,此时,直接在每个所述第二队列中写入结束标志,表明所述第一队列中的数据全部被读取出,并写入每个所述第二队列中,进而M个所述第二队列中的数据可以被相应的并发需求进行读取,具体的,通过每个并发需求的队列读取器从其对应的第二队列中依次读取数据,以满足并发需求。

以图4f中文本表中N个文本文件的加载过程为例,本实施例中,当前文本表中关联的文件列表包括了N个文本文件,同时有M个SQL语句用到该文本表,本实施例以图示中批量SQL语句管理器(批量执行SQL语句的总控模块)实现。

具体的,所示批量SQL语句管理器负责初始化N个读取队列、N个文件读取线程、1个表数据共享线程、M个共享队列、M个队列读取器、M个SQL执行线程。

首先,每个文件读取线程负责从一个文本文件中逐行逐行读取字符串数据,并解析为一行结构化的内存数据,写入到读取队列中。当读取到文件末尾时,向读取队列中写入结束标志。

其次,表数据共享线程依次从N个读取队列中逐行读取解析后的行数据,每读取一行数据,则同时向M个共享队列中写入数据;当N个读取队列中都有结束标志后,则判断为整个文本表读取结束,此时同时向M个共享队列中写入结束标志。

再次,每个表数据队列读取器负责从对应的一个共享队列中依次读取结构化后的行数据,直到读取到结束标志。

最后,每个SQL执行线程,通过表数据读取器逐行读取结构化后的行数据,之后再完成SQL语句的后续查询、关联等其他工作,完成数据的加载。

由上述实例可以看出,本发明中的技术方案对于同一文本表中的多文件通过并发加载方式,有效提高对文本表的数据读取效率,并且,对同一文本表,采用异步一对多队列的方式,实现一次读取后供多个任务或线程的同时读取,实现了数据的共享机制,对于多个SQL查询同时使用同一文本表的情况下,显著降低了对I/O资源的消耗。与此同时,本发明中的技术方案对内存资源的消耗非常小,并不会随着文本表的数量增加而增加,因为内存的消耗只与读取队列与共享队列的数量和长度有关,与文件的大小没有直接关系。

以下结合集中故障管理系统中的告警统计场景,说明如何利用本发明具体实现文本表的高效数据加载。

集中故障管理系统中,每天都会实时接收和处理通信网络汇总的的大量告警信息(比较大的省份每天会有200~500万的告警量),存储在核心告警库的告警表(tfa_alarm)里,为支撑对大量告警信息分析,每天早晨都需要对前一天的告警数据生成众多指标的统计报表。而且针对大数据量的复杂统计分析,会造成核心告警库的负担过重,会严重影响集中故障系统的实时监控和处理,所以针对告警统计报表的处理方式是每天先从核心告警库的告警表里导出前一天的告警数据,由于数据量大,会生成多个csv格式的文件(这里假定为5个文件:tfa_alarm_1.csv,...,tfa_alarm_5.csv);然后把导出的csv文件作为输入,在内存库GSQL中完成后续的统计分析,在内存库中建立的告警文本表为tfa_alarm_txt,具体说明如下:

tfa_alarm_txt表的相关字段说明:

统计需求:

为便于理解,针对以上需求中的3个SQL语句,在数据库系统中的简单实现原理说明一下:select子句部分的功能是完成表达式的统计计算最终形成输出结果,from子句完成对表数据的读取(包括随机读取和顺序读取,对于文本表的情况只有顺序读取),where子句完成搜索或过滤条件,group by子句完成分组条件。

与本发明相关部分为from子句,也是三个SQL语句的相同部分,即主要完成对表tfa_alarm_txt数据的读取;其余子句的实现原理部分,以下说明不做详细说明。

依据以上需求和场景说明,得到了两个关键参数:一是构成tfa_alarm_txt的文本文件数量为5个;二是需要执行的SQL语句为3个,而且这三个SQL语句的相同之处就是都用到了相同的表tfa_alarm_txt。针对以上信息,具体实现步骤如下:

1)“批量SQL语句管理器”,负责初始化5个读取队列、5个文件读取线程、1个表数据共享线程、3个共享队列、3个队列读取器、3个SQL执行线程。

3)“文件读取线程1”负责从文件tfa_alarm_1.csv中逐行逐行读取字符串数据,并解析为一行结构化的内存数据,写入到“读取队列1”中。当读取到文件末尾时,向读队列中写入结束标志。。。。,“文件读取线程5”负责从文件tfa_alarm_5.csv中逐行逐行读取字符串数据,写入到“读取队列5”中。

4)“表数据共享线程”依次从5个队列中逐行读取解析后的行数据,每读取一行数据,则同时向3个共享队列中写入数据;当5个读取队列中都有结束标志后,则判断为整个文本表读取结束,此时同时向3个共享队列中写入结束标志。

5)“SQL执行线程1”通过调用“队列读取器1”从“共享队列1”读取结构化后的行数据,完成SQL1的from子句的功能。。。;“SQL执行线程3”通过调用“队列读取器3”从“共享队列3”读取结构化后的行数据,完成SQL3的from子句的功能;以此类推。

本实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、 随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1