数据管理系统

文档序号:26844784发布日期:2021-10-09 00:08阅读:196来源:国知局
数据管理系统

1.本技术涉及数据传输技术领域,具体而言,涉及一种数据管理系统。


背景技术:

2.随着计算机技术的发展,社会已经步入信息化时代,数据承载着各种信息,需要在不同的终端进行传递和交互,数据存储已成为个人企事业单位的必要需求。过去数据主要存储在个人、企事业单位的存储设备中,数据传递需要移动存储设备,常会出现移动存储设备的遗忘、丢失和资源浪费等问题,给用户造成不便和困扰。
3.为了解决该问题,各互联网公司陆续推出各自的数据服务中心,即网盘。各互联网公司为了占领市场,扩大影响,为用户提供免费的存储空间。用户可以把数据资源存储在网盘中,可以通过网络,随时随地存储、访问、备份、编辑、使用和共享数据资源。为用户节约了资源,提供了方便,目前越来越多个人用户倾向于将大量数据存放在网络数据中心,数据存储由分散存储逐步走向集中存储。
4.由于网盘成本高昂,各网络公司推出的免费网盘一般容量较小,而且为了防止用户滥用网盘资源,通常限制网盘单个文件大小和传输速度。用户为了降低成本满足存储需求常会申请多个网盘。但是不同公司的网盘需要不同的客户端和账号,网盘间无法进行数据互通,用户使用数据时需要频繁的在不同公司的网盘间切换,造成了极大不便。
5.针对相关技术中,不同公司的网盘之间数据无法互通导致用户使用数据不便的问题,目前尚未有有效的解决办法。


技术实现要素:

6.本技术实施例提供了一种数据管理系统,以至少解决相关技术中不同公司的网盘之间数据无法互通导致用户使用数据不便的问题。
7.在本技术的一个实施例中,提出了一种数据管理系统,包括:文件管理模块,配置为设置统一的本地磁盘与网盘的交互接口,并建立文件目录,其中,所述网盘包括一个或多个,所述文件目录用于索引所述本地磁盘与所述网盘内存储的文件;网络传输模块,连接所述文件管理模块,配置为使用多工作线程的传输方式,与所述本地磁盘或所述网盘进行文件传输;任务管理模块,连接所述网络传输模块,配置为管理传输文件的任务,其中,不同的所述任务对应于不同的优先级和不同数量的工作线程;网盘管理模块,连接所述网络传输模块,配置为与不同的网盘进行通信连接。
8.在一实施例中,所述文件管理模块包括:文件目录缓存单元,配置为根据所述本地磁盘与所述网盘内存储的文件,建立所述文件目录;文件目录索引单元,配置为根据所述文件目录,进行路径检索获取所述文件的详细信息;文件目录获取单元,配置为接受所述任务管理模块的调度,根据所述路径检索的结果获取所述本地磁盘与所述网盘内存储的文件。
9.在一实施例中,所述文件目录缓存单元还配置为:每隔指定的时间周期,或在检测到所述网盘内文件发生变化时,更新所述文件目录。
10.在一实施例中,所述网络传输模块包括:多线程加速单元,配置为打开多个连接到目标文件的工作线程,实现针对所述目标文件的多线路数据传输;断点续传单元,配置为对文件传输过程中的传输数据进行本地保存;多线程部署单元,配置为对所述工作线程的数量进行协调。
11.在一实施例中,所述断点续传单元还配置为,通过读取本地保存的任务数据快速还原之前的任务数据,其中,所述任务数据包括需要传输的文件;恢复任务数据或创建了新的任务后,重新保存最新的任务数据,并在接下来的执行过程中同步更新;在需要传输部分数据的情况下,向远程服务器传递范围参数指定数据范围;传输完成后,对需要合并文件的任务执行文件并操作;任务完成报告主线程,移除相应任务数据,删除临时文件。
12.在一实施例中,所述任务管理模块包括:任务设计单元,配置为确定所述任务的优先级,根据所述任务的优先级确定所述任务对应的工作线程的数量。
13.在一实施例中,所述任务设计单元还配置为,当目标任务发生变化,导致所述目标任务持有的工作线程数量和预先设计不符时,根据优先级排序,进行工作线程的移除或添加。
14.在一实施例中,所述网盘管理模块包括:数据备份单元,配置为在其他功能模块工作时,所述数据备份单元处于休眠或单一线程工作的状态;当其他功能模块不工作时,所述数据备份单元进行所述文件的传输备份;数据互通单元,配置为将第一网盘中的第一文件下载到本地后,从本地上传所述第一文件至第二网盘。
15.在一实施例中,所述数据备份单元还配置为,通过文件大小、修改时间以及md5值判断文件是否备份,覆盖或保存原文件。
16.通过本技术实施例提供的数据管理系统,文件管理模块,配置为设置统一的本地磁盘与网盘的交互接口,并建立文件目录,其中,网盘包括一个或多个,文件目录用于索引所述本地磁盘与网盘内存储的文件;网络传输模块,连接文件管理模块,配置为使用多工作线程的传输方式,与本地磁盘或所述网盘进行文件传输;任务管理模块,连接网络传输模块,配置为管理传输文件的任务,其中,不同的任务对应于不同的优先级和不同数量的工作线程;网盘管理模块,连接网络传输模块,配置为与不同的网盘进行通信连接。解决了相关技术中不同公司的网盘之间数据无法互通导致用户使用数据不便的问题。通过本技术提供的基于本地客户端的多网盘数据管理机制,并通过混合编程实现了一个多网盘数据管理系统,使得用户无需在多网盘之间切换,同时提升了数据传输效率,提高文件管理效率。
附图说明
17.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
18.图1是根据本技术实施例的一种可选的数据管理系统结构框图;
19.图2是根据本技术实施例的一种可选的数据管理系统操作界面示意图;
20.图3是根据本技术实施例的一种可选的diskhandleclient的类图;
21.图4是根据本技术实施例的一种可选的diskhandleclient衍生类图;
22.图5是根据本技术实施例的一种可选的文件目录更新流程图;
23.图6是根据本技术实施例的一种可选的networker类图;
24.图7是根据本技术实施例的一种可选的传输任务执行逻辑流程图;
25.图8是根据本技术实施例的一种可选的threadpool类图;
26.图9是根据本技术实施例的一种可选的会员非会员多线程传输效果示意图;
27.图10是根据本技术实施例的一种可选的taskmaster主要执行逻辑流程图;
28.图11是根据本技术实施例的一种可选的多线程任务管理示意图;
29.图12是根据本技术实施例的一种可选的taskmaster计算任务线程的数量分布示意图;
30.图13是根据本技术实施例的一种可选的网盘数据互通示意图;
31.图14是根据本技术实施例的一种可选的页面响应延迟示意图;
32.图15是根据本技术实施例的一种可选的1gb文件传输速度示意图;
33.图16是根据本技术实施例的一种可选的多任务传输测试示意图。
具体实施方式
34.下文中将参考附图并结合实施例来详细说明本技术。需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。
35.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
36.本技术实施例提供了一种数据管理系统。图1是根据本技术实施例的一种可选的数据管理系统结构框图,如图1所示,所述系统包括:
37.文件管理模块102,配置为设置统一的本地磁盘与网盘的交互接口,并建立文件目录,其中,所述网盘包括一个或多个,所述文件目录用于索引所述本地磁盘与所述网盘内存储的文件;
38.网络传输模块104,连接所述文件管理模块,配置为使用多工作线程的传输方式,与所述本地磁盘或所述网盘进行文件传输;
39.任务管理模块106,连接所述网络传输模块,配置为管理传输文件的任务,其中,不同的所述任务对应于不同的优先级和不同数量的工作线程;
40.网盘管理模块108,连接所述网络传输模块,配置为与不同的网盘进行通信连接。
41.为了便于网盘管理,提高数据访问效率,提升用户使用体验,本技术实施例综合运用虚拟化、多线程和多任务技术,设计了一种基于本地客户端的多网盘数据管理机制,并通过c++、qt和libcurl等混合编程实现了一个多网盘数据管理系统,使得用户无需在多网盘之间切换,同时提升了数据传输效率,提高文件管理效率该系统包括文件管理、网络传输,任务管理和网盘管理模块,系统界面如图2所示。
42.在一实施例中,所述文件管理模块102包括:文件目录缓存单元,配置为根据所述本地磁盘与所述网盘内存储的文件,建立所述文件目录;文件目录索引单元,配置为根据所述文件目录,进行路径检索获取所述文件的详细信息;文件目录获取单元,配置为接受所述任务管理模块的调度,根据所述路径检索的结果获取所述本地磁盘与所述网盘内存储的文件。
43.在一实施例中,所述文件目录缓存单元还配置为:每隔指定的时间周期,或在检测到所述网盘内文件发生变化时,更新所述文件目录。
44.文件管理模块运用虚拟化技术统一了本地和网盘文件系统的对外交互接口,实现了本地与网盘文件系统的存储、访问、备份和编辑,提高了文件检索性能,优化了文件管理模式。
45.网盘与普通磁盘从硬件角度没有本质区别,都是存储设备,区别仅在于数据传输方式和速度的不同,网盘通过网络io流传输速度较慢,后者通过文件io流传输速度较快。鉴于此,为了提高文件检索性能,优化管理模式,设计了一种网盘和本地对外交互的统一文件目录获取接口——diskhandleclient。
46.图3给出了diskhandleclient的类图,规范如下:getfile()通过任务管理模块调度,保持在后台运行,在不干扰正常交互的情况下,实现对应存储设备文件目录的获取;getfile(string path)不通过磁盘交互,仅使用内存的文件目录进行路径检索获取详细信息,提升了文件检索的性能。
47.图4给出了diskhandleclient衍生类,主要包括:商业网盘jianguoclient和baiduclient实现类;本地磁盘diskclient实现类;私有网盘ftpclient、nfsclient、seafileclient和smbclient实现类。
48.diskhandleclient实现类目录缓存运行逻辑是通过多任务管理调度在后台运行,严格的控制相关结构数据的读取写入,避免与硬盘直接通讯,实现内存快速通讯,达到性能提升的目的。具体逻辑如图5所示:程序启动时,相关实现类读取网盘类型,网盘账号密码或本地磁盘相关数据等自身属性;多任务管理模块调度相关实现类对象,在后台开辟工作线程调用getfile()缓存文件树,记录相关结构化数据;按照用户当前工作目录提前更新文件目录,例如最多深度为3;例如每隔1分钟或者用户发生文件目录更改时自动调用更新文件目录。
49.在一实施例中,所述网络传输模块包括:多线程加速单元,配置为打开多个连接到目标文件的工作线程,实现针对所述目标文件的多线路数据传输;断点续传单元,配置为对文件传输过程中的传输数据进行本地保存;多线程部署单元,配置为对所述工作线程的数量进行协调。
50.在一实施例中,所述断点续传单元还配置为,通过读取本地保存的任务数据快速还原之前的任务数据,其中,所述任务数据包括需要传输的文件;恢复任务数据或创建了新的任务后,重新保存最新的任务数据,并在接下来的执行过程中同步更新;在需要传输部分数据的情况下,向远程服务器传递范围参数指定数据范围;传输完成后,对需要合并文件的任务执行文件并操作;任务完成报告主线程,移除相应任务数据,删除临时文件。
51.网络传输模块运用多线程技术提高了网络传输速度,通过断点续传技术提高了网络传输的稳定性,使用本地缓存记录实时信息可防止程序关闭导致数据丢失的问题。
52.网盘运营商为了自身利益,出于成本考虑主动对用户进行限速,严重影响体验,为了提高网络传输速度,使用多线程技术打开多个连接到目标的socket进行数据传输达到多网络连接传输同一文件的目的,从而提高数据的吞吐量。
53.图6给出了networker类,该类继承于线程类worker,具体规范如下:downloadfile(stringurl,map<string,string>headers,string uuid,uint start,uint end,stringpath)通过libcurl的curl_easy接口,设置range参数,将下载文件切片,分配到不同工作线程中进行传输,其中,uuid参数设定该任务的唯一编码,path设置文件保存路径,相
关任务信息持久化在本地工作目录,统筹安排各个传输任务;upload(string url,map<string,string>headers,string uuid,uint start,uint end,string path)上传接口和下载接口相似,其中,path是待上传的文件路径;setfile(string uuid,string path)通过uuid查询完成的传输任务,将临时文件组装成需要传输的对应文件,完成传输工作。
54.图7给出了传输任务的执行逻辑:通过读取本地保存的任务数据快速还原之前的任务数据,使得不会出现类似程序关闭等意外情况导致传输任务丢失的情况;恢复任务数据或创建了新的任务,将重新保存最新的任务数据,并在接下来的执行过程中同步更新;在需要传输部分数据的情况下,使用libcurl向远程服务器传递range参数指定数据范围;传输完成后,对需要合并文件的任务执行文件并操作;任务完成报告主线程,移除相应任务数据,删除临时文件。
55.多线程是一项为了更高效地利用计算机计算资源的技术,传输任务是io密集型的,并非cpu密集型,io通讯速度远低于cpu,线程越多cpu的等待时间越短,利用越高,可以进行更加频繁的调度,大幅提升传输效率。
56.io本质上是通过io总线顺序排队执行,过多线程产生的io吞吐需求会超过计算机自身上限,收益曲线会达到边际效益递减的状态。因此,多线程部署需要合理管控线程,不能盲目添加工作线程。
57.图8给出了线程池threadpool类,规范如下:getmax()对计算机自身的cpu核数,内存等数据进行分析,以内存大小基础,额外加入cpu核数作为参考,计算出理论的线程上限,一般遵循,线程数=(内存*1%/4mb)+cpu核数*4;getthread()获取空闲的工作线程,如果没有达到getmax()的上限,将会返回一个可用的工作线程,否则返回null;setthread(worker worker)将工作线程回收。
58.使用线程池进行管理合理平衡程序占用资源导致卡顿和用户期望程序流畅之间的问题,将任务分配到后台线程极大提高了并行效率,改善了用户使用体验。
59.使用多线程下载,可缓解目标网盘的限速问题,提高用户体验。如图9所示,百度网盘会员不使用多线程下载时速度是13.4mb/s,使用多线程速度可达50.1mb/s;非百度网盘会员不使用多线程下载速度仅为128kb/s,使用多线程下载速度可达2mb/s左右,可见,百度网盘会员使用多线程下载速度提升4倍,达到io的吞吐上限50.1mb/s;非百度网盘会员下载速度提升16倍,多线程传输极大的激发了数据吞吐量。
60.在一实施例中,所述任务管理模块包括:任务设计单元,配置为确定所述任务的优先级,根据所述任务的优先级确定所述任务对应的工作线程的数量。
61.在一实施例中,所述任务设计单元还配置为,当目标任务发生变化,导致所述目标任务持有的工作线程数量和预先设计不符时,根据优先级排序,进行工作线程的移除或添加。
62.任务管理模块使用多线程模块提供的接口,具备管理任务的优先级,动态添加移除任务的工作线程的功能,管理分配任务的工作线程,合理协调资源调度,对全局资源进行统一分配,提高了任务执行效率。
63.任务管理类主要通过整合不同任务的任务对象,任务对象根据任务类型,优先级,具体任务内容等进行执行。图10给出了任务管理类taskmaster的主要执行逻辑:taskmaster固定具备一个后台线程执行自身逻辑;根据任务优先级排序,计算每个任务应
该启用的线程数量;例如等待10s,因taskmaster单独持有一个线程所以等待也不会发生cpu阻塞;如果此时任务发生了变化,导致了任务持有线程数和之前不符,再次根据优先级排序,进行线程的移除或添加。
64.图11给出了多线程任务管理示意图,ui模块或网络模块发送任务给管理模块后,联系线程池,把任务发放给对应线程。期间通过任务对象通过线程对象接口发生启动,暂停,取消等指令。同时对任务的操作同样会本地进行持久化,即使程序意外关闭,也保证了数据不丢失。
65.图12给出了taskmaster计算任务线程的数量分布,大致和指数函数相似,优先级越高的任务获取到的线程数量越多。线程数遵循:线程数=2^优先级(0<=优先级<5),最高优先级最多存在3个;超出3个则,线程数=优先级

多出的个数,线程数最小为0,最高优先级限制可防止数据传输达到io瓶颈,导致性能下降。
66.需要说明的是,本技术实施例中的具体数字仅为举例说明,不用于限定本技术实施例中的具体方案。
67.在一实施例中,所述网盘管理模块包括:数据备份单元,配置为在其他功能模块工作时,所述数据备份单元处于休眠或单一线程工作的状态;当其他功能模块不工作时,所述数据备份单元进行所述文件的传输备份;数据互通单元,配置为将第一网盘中的第一文件下载到本地后,从本地上传所述第一文件至第二网盘。
68.在一实施例中,所述数据备份单元还配置为,通过文件大小、修改时间以及md5值判断文件是否备份,覆盖或保存原文件。
69.网盘管理模块使用任务管理接口通过第三方客户端形式代替用户连接不同网盘之间的最后“一公里”,实现网盘间实时备份,数据互通。
70.大部分网盘具备数据备份,但不同公司实现的方式不同,功能不同,导致使用效果参差不齐。有的网盘功能提供比较完善的备份功能,甚至提供同步盘等功能;有的备份功能则是简单的上传下载,也不校验数据改变,实现相对简单粗糙。
71.数据备份使用任务管理接口,作为长期执行的任务,一旦提交,除非取消删除,否则永远执行,所以设定其优先级较低。在用户使用其他功能时,该任务即处于休眠或单一线程工作的状态,极少占用系统资源;当用户空闲时,数据备份任务会根据计算机的使用情况,占用合理资源进行数据传输。数据备份通过文件大小、修改时间以及md5值等参数进行判断文件是否备份,以数分钟为单位进行检索。数据备份可设置旧文件覆盖或保存,完整保留历史数据,做到本地和网盘数据一致,具备完备的历史变更记录。另外,本模块能支持ftp、smb、nfs等私有服务器的备份同步等功能,可满足用户的特殊需求。
72.网盘数据互通设计思想是运用第三方客户端程序通过整合其他网盘以及各类私有存储,数据的上传下载以自己本身为桥梁打通连接不同网盘之间的数据传输通道,如图13所示。
73.网盘间数据传输是一种网盘任务,被任务管理类所管理,优先级高,运行时会暂时减少其他低优先级任务所持有的线程,同时依靠多线程传输优势快速完成数据传输任务。网盘在进行互传时,本系统将传输数据存储在任务文件中,相关数据不会丢失,即使程序被关闭也可以立刻恢复状态,具有较强的健壮性和稳定性。
74.本技术实施例中,以百度网盘客户端和mobaxterm私有网盘客户端为对象从低网
速流畅程度、传输速度、任务管理以及数据备份方面对所设计的网盘数据互通系统,进行测试实验。
75.图14给出了百度网盘、mobaxterm和本系统在不同网速下页面响应延迟情况:mobaxterm由于连接私有网盘在网速不佳的情况下会造成很大的性能损失,延迟时间最长;百度网盘在低网速下延迟影响也较大,当网速接近0.5mb/s才比较流畅;本系统将相关文件目录已经在系统启动时就进行缓存,之后全部在内存运算,在各个网速下都比较流畅,明显优于不具备自动缓存文件目录,导致需要和网络进行实时通讯延迟表现较差的百度网盘和mobaxterm。
76.图15给出了百度网盘、mobaxterm和本系统下载1gb大文件的平均传输速度,测试环境网速上限是50mb/s,并且百度网盘具有会员。可见,mobaxterm和百度网盘数据传输速度相似,达13mb/s左右,本系统使用多线程下载技术数据传输可达网速上限50mb/s,性能明显优于百度网盘和mobaxterm。
77.多任务传输测试,图16给出了百度网盘、mobaxterm和本系统完成100个平均大小8mb文件下载的耗时情况,测试环境网速上限是50mb/s。可见,mobaxterm是单线程执行模式,无法并行执行任务,速度最慢,耗时接近2分钟;百度网盘具备一定的多线程任务管理机制,速度较快,耗时明显低于mobaxterm,接近40s;而本系统运用基于多线程的多任务管理机制,合理分配工作线程,最大化利用io吞吐上限,充分发挥多任务管理的优势,耗时仅8,显著优于百度网盘和mobaxterm。
78.任务意外中断恢复测试,基于多任务传输测试,不校验用时而是在传输过程中,kill对应进程,重新启动程序查看任务是否可以被恢复。测试结果表明,mobaxterm不具备任务管理机制,无法实现任务中断恢复;百度网盘和本系统均能记录任务执行情况,并在传输意外时,实现任务恢复继续传输。
79.mobaxterm不具备数据备份功能;百度网盘可以进行数据备份,但但不够完善,不具备文件校验,不记录文件历史更改;本系统不仅支持多种备份形式,校验文件更改,记录历史版本,而且具备灵活的可控性,可以根据网络的实际需求自动降低优先级防止发生网速争夺。
80.本技术实施例综合运用虚拟化、多线程和多任务技术,设计了一种基于本地客户端的多网盘数据管理机制,并通过c++、qt和libcurl等混合编程实现了一个多网盘数据管理系统。通过实验测试表明本系统与市场网盘客户端相比较,更具竞争力,其优点主要表现在:(1)使用了基于缓存的文件管理方案,避免磁盘通讯,具备响应迅速,执行效率高;(2)使用了多线程传输方案,最大程度利用io资源,具备传输速度快;(3)构建了一套基于多线程的多任务管理机制,具备系统稳定性强,数据安全;(4)基于文件管理模块、多线程传输和任务管理模块开创性的提出了一套跨网盘管理机制,解决了跨网盘互通的问题。
81.可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read

only memory,rom)、随机存取器(random access memory,ram)、磁盘或光盘等。
82.上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
83.上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品
销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。
84.在本技术的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
85.在本技术所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
86.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
87.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
88.以上所述仅是本技术的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1