一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于SQL复杂计算的无限量数据下载方法和系统与流程

2022-12-13 21:48:29 来源:中国专利 TAG:

基于sql复杂计算的无限量数据下载方法和系统
技术领域
1.本技术涉及数据存储和处理技术领域,尤其涉及基于sql复杂计算的无限量数据下载方法和系统。


背景技术:

2.目前在企业的实际运营中,数据的存储一般都是存储到数据库中或大数据平台中,目前主流的数据库有oracle、mysql、postgresql和一些国产数据库等,大数据平台有cloudera、hadoop开源系列,阿里maxcompute、华为mrs等。通常情况下,如果用户需要使用到这些平台中的数据,基本上都是使用类似sql的标准语言(各家语法上有一些简单扩展)来获取数据,但这些基本是以查询类为主多,查看的数据在工具中也是一小部分数据量,一般展示在50行左右或几百行的大小。
3.csv是目前全球主流的大数据文本存储格式的标准,无论在数据库或大数据平台中,还是在人工智能ai中的使用,数据文件在各数据平台的交换等,基本都是使用csv的格式进行存储和交换,同时csv的格式也完全兼容excel,不同的点是excel目前支持的数据行数是百万,所以csv的格式在数据的常规使用中已经是一个标准。在传统简单型数据的交换或导入导出中,有两种不同的方式:
4.1.全量导出单个数据表中的数据,这样的数据量通常也是海量数据,很多在百万或千万甚至上亿行的数据以上。
5.2.根据业务规则通过sql计算出相应的结果后,再把结果导出来供用户使用。
6.第一种方式的情况下,用户一般可以使用数据库或大数据平台自带的sql工具或是命令行是直接可以导出海量数据的,这个目前主流的数据库或大数据平台产品都具备这个功能;第二种方式的情况下,目前全球主流的sql工具如apache hue,snowflake sql,阿里dataworks,华为dgc等,通过支持的数据量级在10万行左右,最高一般是在20万行左右,主要原因是在数据量太大的情况下,会造成计算和内存不稳定,进而造成任务的失败。
7.十万级数据量级和以下情况下,如果只是个人查看结果数据,一般数据量不大,通常也是在万行或者十万行的量级,这也就是excel目前的支持的数据量集,这样的情况目前是可以使用的,只有偶尔数据字段数太多或有大块字段的时候会失败。但在很多主流的业务场景比如人工智能的输入样本结果数据集的数据量级就通常在百万或千万的数据量级别以上;或者结果数据集只是另一个应用的数据输入,要做二次的数据处理和分析,这个时候的数据量会更大,通常在这种情况下,就不能使用工具来完成,在现有的情况下,用户基本都是通过人工写代码比如java、scala、python等方式来导出数据,然后人工进行传输,在安全性和效率上都是很大的挑战。
8.所以对于企业用户,一直都希望有支持sql工具能支持无限数据量的下载。这样用户在数据导出和下载的过程中不用再关注于是否有数据sql计算,数据量有多大,可以完美支持所有的数据下载行为和场景,让数据的使用没有边界。


技术实现要素:

9.为解决上述存在的技术问题,本发明提供了一种基于sql复杂计算的无限量数据下载方法和系统,针对不同的数据类型编码,大幅提高类型比较的时间和空间,降低数据转换过程中带来的内存的消耗。
10.为实现上述目的,本发明实施例提供了如下的技术方案:
11.第一方面,在本发明提供的一个实施例中,提供了一种基于sql复杂计算的无限量数据下载方法,包括以下步骤:
12.获取所有的resultset中字段的元数据,将数据字段的序号和字段类型进行编码;
13.基于csv标准将编码完成的序号和字段类型拆分重写和数据类型的格式转换操作,生成csv行数据;
14.在java中针对数据进行强制内存回收处理,以支持无限量的数据的下载。
15.作为本发明的进一步方案,所述基于sql复杂计算的无限量数据下载方法,基于java的数据库或大数据平台实现,以jdbc来进行连接数据源,以获得数据源中的数据。
16.作为本发明的进一步方案,数据源中的数据获取后,以resultset格式保存。
17.作为本发明的进一步方案,数据源对应的不同数据库均支持jdbc标准。
18.作为本发明的进一步方案,所有的resultset中字段的元数据后,将字段的元数据进行编码,转变成数字,并将元数据的名字和所述数字对应起来。
19.作为本发明的进一步方案,将数据字段的序号和字段类型进行编码采用生成字段类型和数值的编码器,所述编码器进行编码的步骤如下:
20.生成字段类型和数值的编码器,所述编码器覆盖所有的数据类型和数据库;
21.获取字段值列表和个数;
22.遍历字段值列表,获取各字段的类型;
23.通过比对把各字段类型代表的整数放在map中。
24.作为本发明的进一步方案,所述通过比对把各字段类型代表的整数放在map中,包括:
25.通过比对把字段值类型放入一个map中,按序号存好序号和类型的key:value键值对,使数据字段的序号和类型形成映射关系。
26.作为本发明的进一步方案,基于csv标准将编码完成的序号和字段类型拆分重写和数据类型的格式转换操作,生成csv行数据,包括:
27.进行csv标准的拆分重写和数据类型的格式转换操作;
28.解读标准的文档;
29.根据标准的文档同时整合现有的数据类型的判断;
30.将不同的数据类型的数据拆分写入到字符串的对象中。
31.作为本发明的进一步方案,将不同的数据类型的数据拆分写入到字符串的对象中时,使用stringbuilder或stringbuffer进行字符串的拼接,不同类型的数据根据格式要求放到相应的拼接字符串中。
32.作为本发明的进一步方案,在java中针对数据进行强制内存回收处理时,针对每次或每行的数据的处理完成后,还包括在java中针对数据进行强制内存回收的一些设置和设定,并在java运行器vm中使用内存回收优先的回收器进行回收。
33.第二方面,在本发明提供的另一个实施例中,提供了一种基于sql复杂计算的无限量数据下载系统,所述基于sql复杂计算的无限量数据下载系统用于执行上述基于sql复杂计算的无限量数据下载方法;所述基于sql复杂计算的无限量数据下载系统包括:
34.数据编码模块,用于获取所有的resultset中字段的元数据,将数据字段的序号和字段类型进行编码;
35.拆分重写模块,用于基于csv标准将编码完成的序号和字段类型拆分重写和数据类型的格式转换操作,生成csv行数据;
36.内存回收模块,用于基于csv标准将编码完成的序号和字段类型拆分重写和数据类型的格式转换操作,生成csv行数据。
37.此外,为实现上述目的,本技术还提供一种一种计算机设备,所述一种计算机设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的基于sql复杂计算的无限量数据下载程序,其中所述基于sql复杂计算的无限量数据下载程序被所述处理器执行时,实现如上述的基于sql复杂计算的无限量数据下载方法的步骤。
38.此外,为实现上述目的,本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有基于sql复杂计算的无限量数据下载程序,其中所述基于sql复杂计算的无限量数据下载程序被处理器执行时,实现如上述的基于sql复杂计算的无限量数据下载方法的步骤。
39.本发明提供的技术方案,具有如下有益效果:
40.本技术提供的基于sql复杂计算的无限量数据下载方法和系统,通过针对复杂sql计算结果支持无限量数据的下载,让用户对数据的下载使用变得没有边界,用户可以根据实际的业务需求来处理和下载数据,不用在数据下载的过程中考虑数据的实际情况,更不需要在针对人工智能等应用场景中大量使用java、scala、python等开发语言进行数据的导出工作,极大地提升了企业的效率和数据的安全性。
41.本技术的这些方面或其他方面在以下实施例的描述中会更加简明易懂。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
42.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例。在附图中:
43.图1为本技术基于sql复杂计算的无限量数据下载方法的流程图;
44.图2为本技术基于sql复杂计算的无限量数据下载方法中编码的流程图;
45.图3为本技术基于sql复杂计算的无限量数据下载方法中生成csv行数据的流程图;
46.图4为本技术基于sql复杂计算的无限量数据下载方法中实际数据下载图;
47.图5为本技术基于sql复杂计算的无限量数据下载系统的系统框图。
48.本技术目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
49.下面,结合附图以及具体实施方式,对本技术做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
50.应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
51.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
52.附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
53.下面结合附图,对本技术的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
54.由于在传统简单型数据的交换或导入导出中,有两种不同的方式:(1)全量导出单个数据表中的数据,这样的数据量通常也是海量数据,很多在百万或千万甚至上亿行的数据以上;(2)根据业务规则通过sql计算出相应的结果后,再把结果导出来供用户使用。
55.第一种方式的情况下,用户一般可以使用数据库或大数据平台自带的sql工具或是命令行是直接可以导出海量数据的,这个目前主流的数据库或大数据平台产品都具备这个功能;第二种方式的情况下,目前全球主流的sql工具如apache hue,snowflake sql,阿里dataworks,华为dgc等,通过支持的数据量级在10万行左右,最高一般是在20万行左右,主要原因是在数据量太大的情况下,会造成计算和内存不稳定,进而造成任务的失败。
56.十万级数据量级和以下情况下,如果只是个人查看结果数据,一般数据量不大,通常也是在万行或者十万行的量级,这也就是excel目前的支持的数据量集,这样的情况目前是可以使用的,只有偶尔数据字段数太多或有大块字段的时候会失败。但在很多主流的业务场景比如人工智能的输入样本结果数据集的数据量级就通常在百万或千万的数据量级别以上;或者结果数据集只是另一个应用的数据输入,要做二次的数据处理和分析,这个时候的数据量会更大,通常在这种情况下,就不能使用工具来完成,在现有的情况下,用户基本都是通过人工写代码比如java、scala、python等方式来导出数据,然后人工进行传输,在安全性和效率上都是很大的挑战。
57.所以对于企业用户,一直都希望有支持sql工具能支持无限数据量的下载。这样用户在数边据导出和下载的过程中不用再关注于是否有数据sql计算,数据量有多大,可以完美支持所有的数据下载行为和场景,让数据的使用没有界。
58.因此,针对在原有的工作过程中,用户需要针对不同的数据下载需求写不同的代码,而且对开发人员要求也很高,写完代码后进行测试同时在服务器端执行导出数据到服务器;然后人工使用ftp类工具将数据传输到目标的服务器上。整体的时间周期一般需要几天到几周的时间完成一个新的需要,而现在只需要秒级的输入,分钟级的传输就能完成整体的任务,企业业务完成了从人工到工具的直接转变。
59.本技术的实施例提供了一种基于sql复杂计算的无限量数据下载方法和系统,针
对不同的数据类型编码,大幅提高类型比较的时间和空间,降低数据转换过程中带来的内存的消耗。
60.在一些实施方式中,基于sql复杂计算的无限量数据下载方法可以应用在一种计算机设备,该一种计算机设备可以是pc、便携计算机、移动终端等具有显示和处理功能的设备,当然也不限于此。
61.请参照图1,图1为本技术基于sql复杂计算的无限量数据下载方法的流程示意图。本技术的实施例中,所述基于sql复杂计算的无限量数据下载方法,应用于数据库、数据平台以及大数据平台上,该方法包括以下步骤s10-步骤s30:
62.步骤s10,获取所有的resultset中字段的元数据,将数据字段的序号和字段类型进行编码。
63.步骤s20,基于csv标准将编码完成的序号和字段类型拆分重写和数据类型的格式转换操作,生成csv行数据。
64.步骤s30,在java中针对数据进行强制内存回收处理,以支持无限量的数据的下载。
65.在本发明的实施例中,所述基于sql复杂计算的无限量数据下载方法,基于java的数据库或大数据平台实现,以jdbc来进行连接数据源,以获得数据源中的数据。
66.即:目前在java的数据库或大数据平台的实现中,通常是以jdbc来进行连接数据源,以获得数据源中的数据,数据获取后,一般存在的格式是resultset,不同数据库厂商的实现小有不同,但都是支持jdbc标准的。
67.所以对于resultset拿到以后,主要就是获取所有的resultset中的字段的元数据,把字段的元数据进行编码,变成1、2、3、4等数字,同时把元数据的名字和数字对应起来。
68.具体的步骤如图2所示,将数据字段的序号和字段类型进行编码采用生成字段类型和数值的编码器,所述编码器进行编码的步骤如下:
69.s101、生成字段类型和数值的编码器,所述编码器覆盖所有的数据类型和数据库;
70.s102、获取字段值列表和个数;
71.s103、遍历字段值列表,获取各字段的类型;
72.s104、通过比对把各字段类型代表的整数放在map中。
73.其中,s101是生成字段类型和数值的完全的编码器,这个对于所有的数据类型要进行穷举,如此才能覆盖所有的数据类型和数据库。s102是获取字段值列表和个数,以便于下面的遍历转换操作。s103是遍历字段值列表,获取各字段的类型;s104通过比对把字段值类型放入一个map中,按序号存好序号和类型(整数)的key:value键值对,到这里整体的数据字段的序号和后面的类型就变成了映射关系。
74.示例性的,以一个1亿行数据和100个字段的数据来举例,如果按字段串比较需要比较100亿次,而现在只用按整数进行比较,比较的性能和时间将会完成第一个质的变化。
75.在本发明的实施例中,所述通过比对把各字段类型代表的整数放在map中,包括:通过比对把字段值类型放入一个map中,按序号存好序号和类型的key:value键值对,使数据字段的序号和类型形成映射关系。
76.在本发明的实施例中,如图3所示,基于csv标准将编码完成的序号和字段类型拆分重写和数据类型的格式转换操作,生成csv行数据,包括:
77.s201、进行csv标准的拆分重写和数据类型的格式转换操作;
78.s202、解读标准的文档;
79.s203、根据标准的文档同时整合现有的数据类型的判断;
80.s204、将不同的数据类型的数据拆分写入到字符串的对象中。
81.在本发明的实施例中,将不同的数据类型的数据拆分写入到字符串的对象中时,使用stringbuilder或stringbuffer进行字符串的拼接,不同类型的数据根据格式要求放到相应的拼接字符串中。
82.因此,在本技术实施例中,进行csv标准的拆分重写和数据类型的格式转换操作,csv本身是标准,需要首先解读标准的文档(此处不做详解),根据标准的文档同时整合现有的数据类型的判断,将不同的数据类型的数据拆分写入到字符串的对象中,此处使用stringbuilder或stringbuffer(java)进行字符串的拼接,不同类型的数据根据格式要求放到相应的拼接字符串中,比如float数据和double的数据如果直接写入到数据中,空数据容易出现0,是错误的需要处理,同时长数据会出现科学计数法,也需要做出相应的处理;字符串的数据是最常见的,但也是最复杂的,比如字符串中如果出现双引号,需要做重复的双引号,如果出现逗号(假如使用默认分隔符为逗号),需要用双引号把数据合起来等。在此处是非常关键的,数据的重复处理和格式转换,也就是数据的序列化和反序列化会造成大量的内存的消耗和内存回收问题,所以此处在数据转换的过程中,能用object原始类型的不能用integer,能使用integer的不能使用string,让数据的使用和比较更加的简洁。
83.在本发明的实施例中,在java中针对数据进行强制内存回收处理时,针对每次或每行的数据的处理完成后,还包括在java中针对数据进行强制内存回收的一些设置和设定,并在java运行器vm中使用内存回收优先的回收器进行回收。
84.在本技术的实施例中,内存回收的处理时,针对每次或每行的数据的处理完成后,在java中需要针对数据进行强制内存回收的一些设置和设定。同时在java运行器vm中使用内存回收优先的回收器进行回收,这样当短期海量数据传输过程中,内存短时间内会升高很快,但到一定时间后内存会到达一个值不再继续上升,这样就能支持无限量的数据的下载。
85.本技术的实施例提供的一种基于sql复杂计算的无限量数据下载方法,目前已经在实际的企业运行中的实现,如图是一个3000万行左右的数据的下载,使用的服务器是一个普通16gb的内存的服务器,下载时间和实际数据下载如图4所示,下载导出2844万行数据的时间两次执行分别为194秒和187秒,下载数据性能在海量数据的情况下平均达到15万行/秒,同时也支持了海量数据的执行下载。
86.因此,本发明通过针对复杂sql计算结果支持无限量数据的下载,让用户对数据的下载使用变得没有边界,用户可以根据实际的业务需求来处理和下载数据,不用在数据下载的过程中考虑数据的实际情况,更不需要在针对人工智能等应用场景中大量使用java、scala、python等开发语言进行数据的导出工作,极大地提升了企业的效率和数据的安全性。
87.此外,本技术实施例还提供了一种基于sql复杂计算的无限量数据下载系统。
88.参照图5,图5为本技术基于sql复杂计算的无限量数据下载系统的功能模块示意图。本技术的实施例中,所述基于sql复杂计算的无限量数据下载系统,包括:
89.数据编码模块100,用于获取所有的resultset中字段的元数据,将数据字段的序号和字段类型进行编码;
90.拆分重写模块200,用于基于csv标准将编码完成的序号和字段类型拆分重写和数据类型的格式转换操作,生成csv行数据;
91.内存回收模块300,用于基于csv标准将编码完成的序号和字段类型拆分重写和数据类型的格式转换操作,生成csv行数据。
92.其中,上述基于sql复杂计算的无限量数据下载系统中各个模块与上述基于sql复杂计算的无限量数据下载方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
93.本技术的基于sql复杂计算的无限量数据下载方法、装置可以实现为一种计算机程序的形式,该计算机程序可以在一种计算机设备上运行。
94.一种计算机设备包括通过系统总线连接的处理器和存储器,其中,存储器可以包括非易失性存储介质和内存储器。
95.处理器用于提供计算和控制能力,支撑整个一种计算机设备的运行。
96.内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种基于sql复杂计算的无限量数据下载方法,包括以下步骤:
97.获取所有的resultset中字段的元数据,将数据字段的序号和字段类型进行编码;
98.基于csv标准将编码完成的序号和字段类型拆分重写和数据类型的格式转换操作,生成csv行数据;
99.在java中针对数据进行强制内存回收处理,以支持无限量的数据的下载。
100.在本发明的实施例中,将数据字段的序号和字段类型进行编码采用生成字段类型和数值的编码器,所述编码器进行编码的步骤如下:
101.生成字段类型和数值的编码器,所述编码器覆盖所有的数据类型和数据库;
102.获取字段值列表和个数;
103.遍历字段值列表,获取各字段的类型;
104.通过比对把各字段类型代表的整数放在map中。
105.在本发明的实施例中,基于csv标准将编码完成的序号和字段类型拆分重写和数据类型的格式转换操作,生成csv行数据,包括:
106.进行csv标准的拆分重写和数据类型的格式转换操作;
107.解读标准的文档;
108.根据标准的文档同时整合现有的数据类型的判断;
109.将不同的数据类型的数据拆分写入到字符串的对象中。
110.应当理解的是,处理器可以是中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
111.其中,所述处理器用于运行存储在存储器中的计算机程序,以实现本技术基于sql复杂计算的无限量数据下载方法的各个实施例,此处不再赘述。
112.此外,本技术实施例还提供一种计算机可读存储介质。本技术计算机可读存储介质上存储有基于sql复杂计算的无限量数据下载程序,其中所述基于sql复杂计算的无限量数据下载程序被处理器执行时,实现如上述的基于sql复杂计算的无限量数据下载方法,包括以下步骤:
113.获取所有的resultset中字段的元数据,将数据字段的序号和字段类型进行编码;
114.基于csv标准将编码完成的序号和字段类型拆分重写和数据类型的格式转换操作,生成csv行数据;
115.在java中针对数据进行强制内存回收处理,以支持无限量的数据的下载。
116.在本发明的实施例中,将数据字段的序号和字段类型进行编码采用生成字段类型和数值的编码器,所述编码器进行编码的步骤如下:
117.生成字段类型和数值的编码器,所述编码器覆盖所有的数据类型和数据库;
118.获取字段值列表和个数;
119.遍历字段值列表,获取各字段的类型;
120.通过比对把各字段类型代表的整数放在map中。
121.在本发明的实施例中,基于csv标准将编码完成的序号和字段类型拆分重写和数据类型的格式转换操作,生成csv行数据,包括:
122.进行csv标准的拆分重写和数据类型的格式转换操作;
123.解读标准的文档;
124.根据标准的文档同时整合现有的数据类型的判断;
125.将不同的数据类型的数据拆分写入到字符串的对象中。
126.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
127.上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
128.本技术可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本技术可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本技术,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
129.本技术提供一种基于sql复杂计算的无限量数据下载方法和系统,通过针对复杂sql计算结果支持无限量数据的下载,让用户对数据的下载使用变得没有边界,用户可以根据实际的业务需求来处理和下载数据,不用在数据下载的过程中考虑数据的实际情况,更
不需要在针对人工智能等应用场景中大量使用java、scala、python等开发语言进行数据的导出工作,极大地提升了企业的效率和数据的安全性。
130.以上仅为本技术的优选实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献