CN112395337B - 一种数据导出方法和装置 - Google Patents
一种数据导出方法和装置 Download PDFInfo
- Publication number
- CN112395337B CN112395337B CN201910739535.3A CN201910739535A CN112395337B CN 112395337 B CN112395337 B CN 112395337B CN 201910739535 A CN201910739535 A CN 201910739535A CN 112395337 B CN112395337 B CN 112395337B
- Authority
- CN
- China
- Prior art keywords
- data
- cloud server
- task
- database
- export request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种数据导出方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:接收数据导出请求,从数据库中获取与所述数据导出请求相对应的数据;传输所述数据至云端服务器中,接收所述云端服务器所反馈的资源定位信息;根据所述数据导出请求和所述资源定位信息,创建下载任务,添加所述下载任务至下载任务列表中进行任务更新。该实施方式将数据传输至云端存储,以降低导出数据对系统内存资源的占用,以及将数据导出压力转移至云端中,以此提高数据下载速度。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据导出方法和装置。
背景技术
现有大多数应用都支持数据导出功能,在导出报表数据的需求较大时,用户可能会按照周、月、季度等条件进行数据导出。目前通常直接查询数据库进行导出数据:用户在前端选择查询条件,后台根据该条件从数据库中查询数据,之后将所查询到的数据写入文件(例如生成Excel),并通过应用系统的下载接口下载到用户本地。
在实现本发明的过程中,发明人发现现有方式至少存在如下问题:
1)对于业务量较大的系统,其日数据量通常过万,若一次性下载数据较多可能会长时间占用I/O操作(例如一条数据0.2k,一千万条数据则为2G左右),导致应用系统内存不足,引起系统崩溃;
2)从用户角度分析,在点击数据导出操作后可能应用系统长时间没有反应或等待时间较长,影响用户体验。
发明内容
有鉴于此,本发明实施例提供一种数据导出方法和装置,至少能够解决现有技术当所导出的数据量过大时,应用系统内存以及I/O等资源占用过大,导致数据导出效率较低,影响用户体验问题。
为实现上述目的,根据本发明实施例的一个方面,提供了一种数据导出方法,包括:接收数据导出请求,从数据库中获取与所述数据导出请求相对应的数据;传输所述数据至云端服务器中,接收所述云端服务器所反馈的资源定位信息;其中,所述资源定位信息为所述云端服务器根据所述数据在所述云端服务器中的存储位置所生成;根据所述数据导出请求和所述资源定位信息,创建下载任务,添加所述下载任务至下载任务列表中进行任务更新。
可选的,所述从数据库中获取与所述数据导出请求相对应的数据,包括:确定与所述数据导出请求相对应的数据标识;根据预定分组的数量,对所述数据标识进行分组处理,得到与所述数量相对应的多个数据标识组;利用各数据查询线程,从所述数据库中查询与各数据标识组中各数据标识相对应的数据,对查询到的数据进行组合,得到多个数据组。
可选的,所述根据预定分组的数量,对所述数据标识进行分组处理,还包括:若所述数量大于或等于数据查询线程的可用量,则将所述数量替换为所述可用量。
可选的,在所述传输所获取的数据至云端服务器中进行存储,还包括:将所述数据传输至缓存数据库中,在监测到所有数据传输完毕或传输的数据量达到预定数量阈值时,从所述缓存数据库中提取所传输的数据并上传至所述云端服务器中。
为实现上述目的,根据本发明实施例的另一方面,提供了一种数据导出装置,包括:
数据获取模块,用于接收数据导出请求,从数据库中获取与所述数据导出请求相对应的数据;
数据转存模块,用于传输所述数据至云端服务器中,后接收所述云端服务器所反馈的资源定位信息;其中,所述资源定位信息为所述云端服务器根据所述数据在所述云端服务器中的存储位置所生成;
任务创建模块,用于根据所述数据导出请求和所述资源定位信息,创建下载任务,添加所述下载任务至下载任务列表中进行任务更新。
可选的,所述数据获取模块,用于:
确定与所述数据导出请求相对应的数据标识;
根据预定分组的数量,对所述数据标识进行分组处理,得到与所述数量相对应的多个数据标识组;
利用各数据查询线程,从所述数据库中查询与各数据标识组中各数据标识相对应的数据,对查询到的数据进行组合,得到多个数据组。
可选的,所述数据获取模块,还用于:若所述数量大于或等于数据查询线程的可用量,则将所述数量替换为所述可用量。
可选的,所述数据转存模块,还用于:将所述数据传输至缓存数据库中,在监测到所有数据传输完毕或传输的数据量达到预定数量阈值时,从所述缓存数据库中提取所传输的数据并上传至所述云端服务器中。
为实现上述目的,根据本发明实施例的再一方面,提供了一种数据导出电子设备。
本发明实施例的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一所述的数据导出方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一所述的数据导出方法。
根据本发明所述提供的方案,上述发明中的一个实施例具有如下优点或有益效果:通过采用多个线程对多组数据进行并行处理,再将处理结果存入缓存数据库中进行存储,以提高数据处理速度,降低导出数据对系统内存资源的占用;最终将数据传输至云端存储,以将数据导出压力转移至云端中,避免出现数据下载长时间无反应的情况,以此提高数据下载速度。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种数据导出方法的主要流程示意图;
图2是根据本发明实施例的一种可选的数据导出方法的流程示意图;
图3是根据本发明实施例的另一种可选的数据导出方法的流程示意图;
图4是根据本发明实施例的一种具体地数据导出方法的流程示意图;
图5是根据本发明实施例的一种数据导出装置的主要模块示意图;
图6是本发明实施例可以应用于其中的示例性系统架构图;
图7是适于用来实现本发明实施例的移动设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
参见图1,示出的是本发明实施例提供的一种数据导出方法的主要流程图,包括如下步骤:
S101:接收数据导出请求,从数据库中获取与所述数据导出请求相对应的数据;
S102:传输所述数据至云端服务器中,接收所述云端服务器所反馈的资源定位信息;其中,所述资源定位信息为所述云端服务器根据所述数据在所述云端服务器中的存储位置所生成;
S103:根据所述数据导出请求和所述资源定位信息,创建下载任务,添加所述下载任务至下载任务列表中进行任务更新。
上述实施方式中,对于步骤S101,本发明针对于业务量较多、业务数据庞大,且需要有数据导出操作的业务场景,例如仓库生产系统、计费系统、票务系统。
以仓库生产系统为例,日单量可达到十万甚至百万级别,而从接收订单到物品出库还需要经历多个环节,每个环节又会产生若干数据,就会产生非常大的数据量。
应用系统接收用户操作设备所传输的数据导出请求,并根据该请求中的查询条件,从业务数据库中查询符合该条件的数据。其中,查询条件可以为时间(天、周、月、年)、地区(如区域、省、市)及其结合形式,例如,北京20190601~北京20190731,所查询到的数据即为北京地区该时间段内的数据。
对于步骤S102,对于所查询到的数据,若直接通过应用系统接口下载,可能造成系统I/O资源,导致系统宕机的情况。
为降低系统压力,本发明选择在获取数据之后、用户下载数据之前,将数据转移至云端服务器中存储,之后数据即从该云端服务器中下载。云端服务器可以独立于应用系统,且云端服务器下载数据通常依赖于其URL(Uniform Resource Locator,统一资源定位符)进行。
因此云端服务器会根据数据在云端服务器中的存储位置生成URL地址,例如,https://pan.xxx.com/s/12JSPIvCeaBziacEmInfIIg,其中,xxx代表云端服务器属性,12JSPIvCeaBziacEmInfIIg表示数据在云端服务器中的存储位置。
进一步的,所查询到的数据量可能较大,若针对各数据生成URL,也会导致URL地址过多,影响用户体验的问题。实际操作中,通常针对于同一数据导出请求的数据,可以写入同一文件中(例如文件夹、excel形式),该文件名称可以以该数据导出请求的任务编号(参见后续图4描述)命名。此时存储位置即为该文件在云端服务器中存储的位置,且数量仅为一个。
通过将数据上传至云端服务器中并生成URL供用户下载,实现将应用系统的数据导出压力转移至云端服务器中,达到降低应用系统内数据库和服务器内存等资源压力的效果。
对于步骤S103,应用系统同一时刻可能会接收到多个数据导出请求,因此下载任务也需要进行区分。在接收到云端服务器所反馈的URL地址后,应用系统会根据该URL地址和相应数据导出请求生成下载任务,以记载在下载任务列表中供用户下载使用。
可以针对不同的数据导出请求设置不同的任务编号,此时的下载任务除了包含有URL地址外,还包含相应数据导出请求的任务编号,例如,TASK0001-https://pan.xxx.com/s/12JSPIvCeaBziacEmInfIIg。若用户点击多个数据导出请求,也可以根据该任务编号对所下载的数据进行区分,避免数据混淆。
下载任务列表位于应用系统中,应用系统在将下载任务添加至下载任务列表后,可以以声音、短信、显示窗口等方式通知用户任务添加完毕,提醒用户下载数据,从而提高数据下载效率。
上述实施例所提供的方法,通过将应用系统中将要导出的数据传输至云端服务器中进行存储,以将应用系统中数据库和服务器的压力转移至云端服务器中,从而有效提高数据导出效率,无需用户长时间等待,提高了用户下载数据体验度。
参见图2,示出了根据本发明实施例的一种可选的数据导出方法流程示意图,包括如下步骤:
S201:接收数据导出请求,确定与所述数据导出请求相对应的数据标识;
S202:根据预定分组的数量,对所述数据标识进行分组处理,得到与所述数量相对应的多个数据标识组;
S203:利用各数据查询线程,从数据库中查询与各数据标识组中各数据标识相对应的数据,对查询到的数据进行组合,得到多个数据组;
S204:传输所述多个数据组至云端服务器中,接收所述云端服务器所反馈的多个资源定位信息;其中,资源定位信息为云端服务器根据各数据组在云端服务器中的存储位置所生成;
S205:根据所述数据导出请求和所述多个资源定位信息,创建多个下载任务,添加所述多个下载任务至下载任务列表中进行任务更新。
上述实施方式中,对于步骤S201,应用系统中的数据库,可以仅用于存储业务数据。
对于数据标识的获取方式,可以有:
1)直接从数据库中获取,得到符合数据导出请求查询条件的数据标识;
2)独立于数据库之外,应用系统单独设置一个数据标识表,该表中的数据标识随数据库内数据的变化不断更新。当接收到数据导出请求时,可以快速从该表中查询到符合该数据导出请求的数据标识。
对于步骤S202,对于业务量较大的应用系统,其导出的数据量通常也较大。为提高后续数据导出效率、减少数据获取耗时,可以对所查询的数据标识(例如ID)进行分组处理。
例如,查到有100万个数据标识,总共分为5组:
1)均分形式,则20万个数据标识为一组;
2)随机形式,有的组可能为30万个,有的组可能仅有10万个。由于后续数据传输通过同一类线程进行,因此为保证各线程对各数据标识组的处理时长尽可能相同,本发明选用均分方式。
但当标识总量不是分组数量的整数倍时,可能存在有些组内数据标识量多于其他组的情况。通过使用均分方式,不会存在有些组内数据标识量远大于其他组的情况。例如101万个数据标识分为3组,则分组情况为33.67/33.67/33.66万。
进一步的,对于分组数量可以预先设定。例如,应用系统中设置有配置界面,可配置分组数量。在用户配置完毕后,将这些配置信息保存至系统的配置表中,在后续对数据标识进行分组时作为数量限制依据。
另外,在应用系统最初使用阶段,需要在配置界面设置不同数据查询线程的最大线程数量。但当所创建的线程数量达到上限时,不允许继续创建线程。
由于后续数据获取以及数据传输都是通过数据查询线程处理的,因此分组数量不可多于当前数据查询线程的可用量。若所得分组的数量小于等于总的线程数量、且大于等于线程当前可用量,则可以将分组数量重新设置为该当前可用量,以降低等待线程空闲时长,提高数据查询效率。
除了上述设定分组数量之外,还可以通过设定组内数量进行数据标识分组操作,且该组内数量同样可以由用户在配置界面设定,例如,设定10万个数据标识为一组。
进一步的,线程资源可以重复利用,若所分组的数量大于线程总数量,则需要等待。例如100万个数据标识,每组设定为10万个,则有10组,而创建的线程总数量仅为8个,则至少需要两组数据标识等待。
对于步骤S203,不同数据查询线程处理不同的数据标识组。利用数据查询线程,从数据库中获取与各数据标识相对应的数据。例如,数据标识组1-数据标识1-数据1,将该组内的数据进行组合,即可得到数据组1。
标识通常包含有数据存储日期等参数,例如20190731,因此可以将所查到的数据标识按照从大到小或者从小到大进行排序和分组,最终得到具有排序关联的数据标识分组。例如,每组20万个数据标识,则取0~20万为第一组,20万~40万为第二组。
需要说明的是,对于符合数据导出请求的数据标识,可能存在不连续的情况,例如一个月的第一周和第三周数据,中间断开了第二周。因此对于上述按照大小排序的数据标识,无需考虑是否连续,仅将其作为一个排位点进行考虑即可。
针对数据标识具有一定排序的分组,其数据范围为排序第一的数据标识至排序末尾的数据标识,数据查询线程可以根据该数据范围在数据库中进行数据查询。
对于步骤S204和S205,云端服务器中针对同一数据导出请求可以设置一个单独的文件,文件内可以存储符合该请求的所有数据。由于之前已经将数据分为多个数据组,因此传输至云端服务器的数据也已分组,或以数据组的形式直接传输,且这些数据组可以存储至同一文件中。
为提高后续数据下载速度,可以针对不同的数据组生成的不同的URL地址,以分批次进行数据下载,例如一次只能下载2个文件或下载上限为1G。
上述实施例所提供的方法,通过多线程并行从数据库中查询数据,可以提高对数据的获取效率;且后续数据下载也是通过多个URL地址进行分批次下载,提高了数据的下载效率,降低对应用系统I/O资源的占用,提升了应用系统处理业务的能力。
参见图3,示出了根据本发明实施例的另一种可选的数据导出方法流程示意图,包括如下步骤:
S301:接收数据导出请求,从数据库中获取与所述数据导出请求相对应的数据;
S302:将所述数据传输至缓存数据库中;
S303:在监测到所有数据传输完毕或传输的数据量达到预定数量阈值时,从所述缓存数据库中提取所传输的数据并上传至云端服务器中;
S304:接收所述云端服务器所反馈的资源定位信息;其中,所述资源定位信息为所述云端服务器根据所述数据在所述云端服务器中的存储位置所生成;
S305:根据所述数据导出请求和所述资源定位信息,创建下载任务,添加所述下载任务至下载任务列表中进行任务更新。
上述实施方式中,对于步骤S301可参见图1所示步骤S101以及图2所示步骤S201~S203的描述,步骤S304和S305可参见图1所示步骤S102和S103的描述,在此不再赘述。
上述实施方式中,对于步骤S302,对于业务量以及数据量较大的应用系统,所获取到的数据量可能较大,例如十万甚至百万级别,若将这些数据直接从数据库提取并存储至应用系统,会占用系统较大的内存资源,严重时可能造成系统卡顿,影响系统性能。
针对该种情况,本发明在传输数据至云端服务器之前,设置有缓存数据库,以将数据暂存至缓存数据库中,后续只需要从缓存数据库提取数据并转移至云端服务器即可,以此降低系统的内存占用问题。其中,缓存数据库可以是Leveldb、Redis、NoSQL等具有缓存功能的数据库,本发明主要以Leveldb为例进行说明。
Leveldb中数据存储于磁盘上,目前能够支持百万级别的数据量,所以不会过多占用系统内存;且每秒的数据写速度可达到40W以上,而随机读的性能每秒钟超过10w,数据读写性能较高。
由于Leveldb是Key-Value嵌入式数据库管理系统编程库,且同一时刻可能需要存储多个数据导出请求的数据,因此可以针对不同的数据导出任务创建不同的key,以进行任务区分。
可以针对不同的数据导出请求建立不同的任务编号,key使用“任务编号+数据标识”进行编号。例如,任务编号为TASK0001,数据标识为20190801,则key为TASK0001_20190801。
1)数据未分组:可以针对每个数据建立key,也可以随机选择一个数据标识建立key,例如,排序第一/末尾/中间位置处的数据标识,还可以是数值最大或最小的数据标识,此时的key对应于符合该请求的所有数据;
2)数据分组:可以仅针对不同的数据组建立不同的key,以减少key数量。此时key对应于该组内的所有数据。key中的数据标识可以是组内随机一个数据的标识,例如任务编号为TASK0001,数据范围为1~100000,所得key即为TASK0001_100000(选取数据范围右边界)、TASK0001_1(选取数据范围左边界)。
对于步骤S303,将缓存数据库中的数据上传至云端服务器中,传输的触发机制为:
1)数据缓存完毕后再上传:监测到与该数据导出请求相对应的数据传输完毕;
2)边缓存边上传:虽缓存数据库所能容纳的数据量较大,但为提高数据上传至云端服务器的效率,可以在监测到数据存储到一定量后开始上传,例如,100万个数据,缓存到50万时候开始上传;
3)对于数据组形式,可以监测到一个或多个数据组中的数据传输完毕后,将该数据组中的数据上传至云端服务器。
由于Leveldb支持数据快照功能,所以数据读取时并不影响写操作,因此可以读写并行。
另外,应用系统在接收云端服务器传输的URL地址,并添加下载任务至下载任务表之后,或者将数据上传至云端服务器成功后,可以删除缓存数据库中所缓存的数据,以降低数据对缓存数据库的资源占用。
上述实施例所提供的方法,在上传数据上至云端服务器之前,将数据暂存在缓存数据库中,以此降低数据对应用系统内存资源的占用压力;在数据传输至缓存数据库的过程中,通过边存边写的方式,可以提高数据上传至云端服务器的效率,进而提高用户对数据的获取效率。
参见图4,示出了根据本发明实施例的一具体的数据导出方法流程示意图,包括如下步骤:
S401:接收数据导出请求,确定与所述数据导出请求相对应的数据标识;
S402:根据预定分组的数量,对所述数据标识进行分组处理,得到与所述数量相对应的多个数据标识组;
S403:利用各数据查询线程,从数据库中查询与各数据标识组中各数据标识相对应的数据,对查询到的数据进行组合,得到多个数据组;
S404:将所述多个数据组传输至缓存数据库中;
S405:若监测到至少一个数据组传输至所述缓存数据库完毕,则从所述缓存数据库中提取所述至少一个数据组并上传至云端服务器中;
S406:接收所述云端服务器所反馈的多个资源定位信息;其中,资源定位信息为云端服务器根据各数据组在云端服务器中的存储位置所生成;
S407:根据所述数据导出请求和所述多个资源定位信息,创建多个下载任务,添加所述多个下载任务至下载任务列表中进行任务更新。
上述实施方式中,对于步骤S401,对于数据导出请求,若在数据库中查询存在符合该请求的数据,则创建数据导出任务。任务的属性包含有任务编号、任务状态、创建人等信息,任务状态有初始、执行中、完成、作废等:
1)刚开始创建得到的数据导出任务的状态为初始;
2)在数据处理阶段~创建下载任务过程,任务状态均为执行中;
3)在添加下载任务至下载任务列表之后,将任务状态修改为完成;
4)在检测到用户点击该下载任务并下载任务完毕后,将该任务标记为作废。
对于步骤S402~S403,在生成数据标识组之后,可以创建导出子任务并保存至子任务表中;其中,子任务表可以为导出任务的子表。
子任务的属性包含子任务编号、数据表、状态、云端服务器URL(此时为空)等字段,对于标识有排序的子任务,还包括有数据范围、段长度等字段。状态值包括初始、获取中、待上传、上传中、完成四个状态,子任务刚创建时为初始状态。
在数据标识分组完毕后,应用系统会启动一个调度任务模块,该模块会定时(例如2s)扫描导出任务和导出子任务数据表,当监测到有状态为初始的导出子任务,则将该导出子任务装载到数据查询线程中开始处理。数据查询线程载入任务后,开始执行查询操作,并将该子任务的状态设置为获取中。
对于步骤S404~S405,数据传输线程,在将数据/数据组传输至缓存数据库后,将当前子任务状态设置为待上传。
系统启动后,同样需要创建负责将数据上传的调度任务。该调度任务定时扫描导出任务表和子任务表,当发现有子任务是待上传状态时,则取出该任务,并载入到数据上传任务处理线程池处理。
数据上传线程载入任务后将任务状态置为上传中,从缓存数据库中读取数据(可以根据key)并上传至云端服务器。
需要说明的是,数据查询线程、数据传输线程、数据上传线程均位于数据处理线程池中,且实际操作中,三者可以为同一线程(例如数据处理线程),即负责数据标识分组-数据获取-数据传输至缓存数据库-数据上传至云端服务器中。
对于步骤S406~S407,数据上传完成后云端服务器生成URL(供下载使用),应用系统将URL地址存入导出子任务的云端服务器URL字段,并将子任务的状态改为上传完成,同时删除缓存数据库中的数据。以及,用户上传完成,让用户从下载任务列表中下载数据,实际上此时已经将下载压力交给云存储系统。
上述实施例所提供的方法,通过采用多个线程对多组数据进行并行处理,再将处理结果存入缓存数据库中进行存储,以提高数据处理速度,降低导出数据对系统内存资源的占用;最终将数据传输至云端存储,以将数据导出压力转移至云端中,避免出现数据下载长时间无反应的情况,以此提高数据下载速度。
参见图5,示出了本发明实施例提供的一种数据导出装置500的主要模块示意图,包括:
数据获取模块501,用于接收数据导出请求,从数据库中获取与所述数据导出请求相对应的数据;
数据转存模块502,用于传输所述数据至云端服务器中,接收所述云端服务器所反馈的资源定位信息;其中,所述资源定位信息为所述云端服务器根据所述数据在所述云端服务器中的存储位置所生成;
任务创建模块503,用于根据所述数据导出请求和所述资源定位信息,创建下载任务,添加所述下载任务至下载任务列表中进行任务更新。
本发明实施装置中,所述数据获取模块501,用于:确定与所述数据导出请求相对应的数据标识;根据预定分组的数量,对所述数据标识进行分组处理,得到与所述数量相对应的多个数据标识组;利用各数据查询线程,从所述数据库中查询与各数据标识组中各数据标识相对应的数据,对查询到的数据进行组合,得到多个数据组。
本发明实施装置中,所述数据获取模块501,还用于:若所述数量大于或等于数据查询线程的可用量,则将所述数量替换为所述可用量。
本发明实施装置中,所述数据转存模块502,还用于:将所述数据传输至缓存数据库中,在监测到所有数据传输完毕或传输的数据量达到预定数量阈值时,从所述缓存数据库中提取所传输的数据并上传至所述云端服务器中。
另外,在本发明实施例中所述装置的具体实施内容,在上面所述方法中已经详细说明了,故在此重复内容不再说明。
图6示出了可以应用本发明实施例的示例性系统架构600。
如图6所示,系统架构600可以包括终端设备601、602、603,网络604和服务器605(仅仅是示例)。网络604用以在终端设备601、602、603和服务器605之间提供通信链路的介质。网络604可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备601、602、603通过网络604与服务器605交互,以接收或发送消息等。终端设备601、602、603上可以安装有各种通讯客户端应用。
终端设备601、602、603可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器605可以是提供各种服务的服务器,例如对用户利用终端设备601、602、603所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的数据导出方法一般由服务器605执行,相应地,数据导出装置一般设置于服务器605中。
应该理解,图6中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图7,其示出了适于用来实现本发明实施例的终端设备的计算机系统700的结构示意图。图7示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有系统700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括数据获取模块、数据转存模块、任务创建模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,数据获取模块还可以被描述为“从数据库获取数据模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
接收数据导出请求,从数据库中获取与所述数据导出请求相对应的数据;
传输所述数据至云端服务器中,接收所述云端服务器所反馈的资源定位信息;其中,所述资源定位信息为所述云端服务器根据所述数据在所述云端服务器中的存储位置所生成;
根据所述数据导出请求和所述资源定位信息,创建下载任务,添加所述下载任务至下载任务列表中进行任务更新。
根据本发明实施例的技术方案,通过采用多个线程对多组数据进行并行处理,再将处理结果存入缓存数据库中进行存储,以提高数据处理速度,降低导出数据对系统内存资源的占用;最终将数据传输至云端存储,以将数据导出压力转移至云端中,避免出现数据下载长时间无反应的情况,以此提高数据下载速度。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (6)
1.一种数据导出方法,其特征在于,包括:
接收数据导出请求,从数据库中获取与所述数据导出请求相对应的数据,包括:确定与所述数据导出请求相对应的数据标识;根据预定分组的数量,对所述数据标识进行分组处理,得到与所述数量相对应的多个数据标识组;利用各数据查询线程,从所述数据库中查询与各数据标识组中各数据标识相对应的数据,对查询到的数据进行组合,得到多个数据组;
将所述数据传输至缓存数据库中,在监测到所有数据传输完毕或传输的数据量达到预定数量阈值时,从所述缓存数据库中提取所传输的数据并上传至云端服务器中,接收所述云端服务器所反馈的资源定位信息;其中,所述资源定位信息为所述云端服务器根据所述数据在所述云端服务器中的存储位置所生成;
根据所述数据导出请求和所述资源定位信息,创建下载任务,添加所述下载任务至下载任务列表中进行任务更新。
2.根据权利要求1所述的方法,其特征在于,所述根据预定分组的数量,对所述数据标识进行分组处理,还包括:
若所述数量大于或等于数据查询线程的可用量,则将所述数量替换为所述可用量。
3.一种数据导出装置,其特征在于,包括:
数据获取模块,用于接收数据导出请求,从数据库中获取与所述数据导出请求相对应的数据,包括:确定与所述数据导出请求相对应的数据标识;根据预定分组的数量,对所述数据标识进行分组处理,得到与所述数量相对应的多个数据标识组;利用各数据查询线程,从所述数据库中查询与各数据标识组中各数据标识相对应的数据,对查询到的数据进行组合,得到多个数据组;
数据转存模块,用于将所述数据传输至缓存数据库中,在监测到所有数据传输完毕或传输的数据量达到预定数量阈值时,从所述缓存数据库中提取所传输的数据并上传至云端服务器中,之后接收所述云端服务器所反馈的资源定位信息;其中,所述资源定位信息为所述云端服务器根据所述数据在所述云端服务器中的存储位置所生成;
任务创建模块,用于根据所述数据导出请求和所述资源定位信息,创建下载任务,添加所述下载任务至下载任务列表中进行任务更新。
4.根据权利要求3所述的装置,其特征在于,所述数据获取模块,还用于:
若所述数量大于等于数据查询线程的可用量,则将所述数量替换为所述可用量。
5.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-2中任一所述的方法。
6.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-2中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910739535.3A CN112395337B (zh) | 2019-08-12 | 2019-08-12 | 一种数据导出方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910739535.3A CN112395337B (zh) | 2019-08-12 | 2019-08-12 | 一种数据导出方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112395337A CN112395337A (zh) | 2021-02-23 |
CN112395337B true CN112395337B (zh) | 2023-09-26 |
Family
ID=74602256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910739535.3A Active CN112395337B (zh) | 2019-08-12 | 2019-08-12 | 一种数据导出方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112395337B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113609226B (zh) * | 2021-08-09 | 2024-05-14 | 深圳平安智慧医健科技有限公司 | 一种数据导出方法、装置、计算机设备及存储介质 |
CN114706922A (zh) * | 2021-11-04 | 2022-07-05 | 金篆信科有限责任公司 | 数据导出方法、节点、服务器、系统、设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108228644A (zh) * | 2016-12-21 | 2018-06-29 | 北京京东尚科信息技术有限公司 | 用于报表导出的方法及装置 |
CN108628890A (zh) * | 2017-03-21 | 2018-10-09 | 北京京东尚科信息技术有限公司 | 一种数据导出方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106657182B (zh) * | 2015-10-30 | 2020-10-27 | 阿里巴巴集团控股有限公司 | 云端文件处理方法和装置 |
-
2019
- 2019-08-12 CN CN201910739535.3A patent/CN112395337B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108228644A (zh) * | 2016-12-21 | 2018-06-29 | 北京京东尚科信息技术有限公司 | 用于报表导出的方法及装置 |
CN108628890A (zh) * | 2017-03-21 | 2018-10-09 | 北京京东尚科信息技术有限公司 | 一种数据导出方法及系统 |
Non-Patent Citations (2)
Title |
---|
Kaliappa Ravindran等. SLA evaluation in cloud-based data-centric distributed services.《 IEEE Xplore》.2014,全文. * |
王少萍 ; 顾乃杰 ; 沈婕 ; .基于云平台的高并发WebGIS服务.计算机系统应用.2016,(11),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN112395337A (zh) | 2021-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11755371B1 (en) | Data intake and query system with distributed data acquisition, indexing and search | |
CN108629029B (zh) | 一种应用于数据仓库的数据处理方法和装置 | |
CN109947668B (zh) | 存储数据的方法和装置 | |
CN105472045A (zh) | 数据库迁移的方法和装置 | |
US11836132B2 (en) | Managing persistent database result sets | |
CN110427386B (zh) | 数据处理方法、装置及计算机存储介质 | |
CN112395337B (zh) | 一种数据导出方法和装置 | |
CN111125170A (zh) | 一种微服务的跨服务数据获取方法、装置及微服务设备 | |
CN105320676A (zh) | 一种客户数据查询服务方法及装置 | |
US20190245827A1 (en) | Method and apparatus for synchronizing contact information and medium | |
CN113312355A (zh) | 一种数据管理的方法和装置 | |
CN113742376A (zh) | 一种同步数据的方法、第一服务器以及同步数据的系统 | |
CN113760966A (zh) | 基于异构数据库系统的数据处理方法和装置 | |
CN110347654B (zh) | 一种上线集群特性的方法和装置 | |
CN104717286A (zh) | 数据处理方法、终端、服务器和系统 | |
CN113779412B (zh) | 一种基于区块链网络的消息触达方法、节点和系统 | |
CN115794876A (zh) | 针对业务数据包的分片处理方法、装置、设备及存储介质 | |
CN112688982B (zh) | 一种用户请求处理方法和装置 | |
CN113779122A (zh) | 导出数据的方法和装置 | |
CN112988806A (zh) | 一种数据处理的方法及装置 | |
CN110334114B (zh) | 一种查询数据的方法和装置 | |
CN112711572A (zh) | 适用于分库分表的在线扩容方法和装置 | |
CN111797110B (zh) | 一种生成调度模型的方法、装置、计算机设备及存储介质 | |
CN113760965B (zh) | 数据查询的方法和装置 | |
CN113495888B (zh) | 一种标识管理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |