一种数据库数据读写方法和装置制造方法及图纸

技术编号:14287173 阅读:109 留言:0更新日期:2016-12-25 17:46
本发明专利技术公开了一种数据库数据读写装置和方法,该装置设置在数据服务器上,所述数据库数据读写装置包括:读取单元,用于从应用服务器中读取原始数据,对所述原始数据进行封装以得到目标数据,并将所述目标数据存储到缓存队列中;提交单元,用于根据预设的缓存读取条件,将缓存队列中缓存的目标数据存储到数据库中。通过本发明专利技术的方案,将数据库数据同步过程中的读写任务分离,读取单元从外围数据库读取数据并封装后,写到高速缓存队列中,缓存队列具有较高的读写速率,从而提高了读任务的效率,提交单元从队列中取出数据,按照给定步长,批量保存。从而提高并发效率。读取单元和提交单元各自独立运行,从而提高了并发效率。

【技术实现步骤摘要】

本专利技术涉及数据库
,尤指一种数据库数据读写方法和装置
技术介绍
伴随着新项目立项,构建新工程时,需要大量数据初始化数据库,这些数据往往来自多个外围系统数据库,本系统的一个数据表经常需要从多个外围数据库同步数据,项目开始阶段需要花费大量时间开发定时任务从不同数据库的不同数据表中同步数据到本系统。通常情况下选择一种流行的(ORM)数据库映射框架,比如Hibernate,不用写SQL语句,从外围数据库读取,遍历数据列表,逐条插入到数据库中。这种模式在开发中效率较高,代码编写较快。但是在实际生产中,碰到几十万、上百万甚至更庞大的数据时,这种方式无比缓慢,一个后台同步数据任务,可能一周都跑不完。虽然很多模块的开发工作都已完成,但是因为初始数据不满足,无法得到正确的结果,反而延误工作。
技术实现思路
为了解决上述问题,本专利技术提出了一种数据库数据读写方法和装置,能够提高数据库同步业务的处理能力。为了达到上述目的,本专利技术提出了一种数据库数据读写装置,设置在数据服务器上,所述数据库数据读写装置包括:读取单元,用于从应用服务器中读取原始数据,对所述原始数据进行封装以得到目标数据,并将所述目标数据存储到缓存队列中;提交单元,用于根据预设的缓存读取条件,将缓存队列中缓存的目标数据存储到数据库中。优选地,所述读取单元从应用服务器中读取原始数据包括:从应用服务器中读取条数为第一预定数目的原始数据;在完成对第一预定数目的原始数据的封装并得到对应的第一目标数据,且第一目标数据全部存储到缓存队列之后,在没有完成全部原始数据的读取时,再次从应用服务器中读取条数为第一预定数目的原始数据。优选地,所述提交单元根据预设的缓存读取条件,将缓存队列中缓存的目标数据存储到数据库中包括:根据预定的读取间隔,将缓存队列中的目标数据批量存储到数据库中。优选地,所述提交单元将所述目标数据批量存储到数据库中包括:预编译存储指令,每次向数据库提交数据时,捆绑Ni条目标数据到存储指令上,执行存储指令,以将Ni条目标数据存储到数据库中;其中,Ni为本次批量存储需存储数目。优选地,所述提交单元根据预定的读取间隔,将缓存队列中的目标数据批量存储到数据库中包括:根据预设的批量保存条数Nx,依次批量保存缓存队列中的目标数据;每次保存的目标数据的最大数目为预设的批量保存条数Nx;其中,获取缓存队列中存储的数据的长度N1;若N1小于或等于0,结束本次存储操作;若N1大于0且小于或等于Nx,将N1条数据以批量存储的方式存储到数据库中;若N1大于Nx,分N_subs次将目标数目存储到数据库中,其中,在第1次至第N_subs-1次,将Nx条数据存储到数据库中,在第N_subs次时,将Nx条目标数据存储到数据库中;其中,N_subs等于N1除以Nx的整数商加1。为了达到上述目的,本专利技术还提出了一种数据库数据读写方法,所述方法包括:从应用服务器中读取原始数据,对所述原始数据进行封装以得到目标数据,并将所述目标数据存储到缓存队列中;根据预设的缓存读取条件,将缓存队列中缓存的目标数据存储到数据库中。优选地,所述从应用服务器中读取原始数据包括:从应用服务器中读取条数为第一预定数目的原始数据;在完成对第一预定数目的原始数据的封装并得到对应的第一目标数据,且第一目标数据全部存储到缓存队列之后,在没有完成全部原始数据的读取时,再次从应用服务器中读取条数为第一预定数目的原始数据。优选地,所述根据预设的缓存读取条件,将缓存队列中缓存的目标数据存储到数据库中包括:根据预定的读取间隔,将缓存队列中的目标数据批量存储到数据库中。优选地,所述将所述目标数据批量存储到数据库中包括:预编译存储指令,每次向数据库提交数据时,捆绑Ni条目标数据到存储指令上,执行存储指令,以将Ni条目标数据存储到数据库中;其中,Ni为本次批量存储需存储数目。优选地,所述根据预定的读取间隔,将缓存队列中的目标数据批量存储到数据库中包括:根据预设的批量保存条数Nx,依次批量保存缓存队列中的目标数据;每次保存的目标数据的最大数目为预设的批量保存条数Nx;其中,获取缓存队列中存储的数据的长度N1;若N1小于或等于0,结束本次存储操作;若N1大于0且小于或等于Nx,将N1条数据以批量存储的方式存储到数据库中;若N1大于Nx,分N_subs次将目标数目存储到数据库中,其中,在第1次至第N_subs-1次,将Nx条数据存储到数据库中,在第N_subs次时,将Nx条目标数据存储到数据库中;其中,N_subs等于N1除以Nx的整数商加1。与现有技术相比,本专利技术提供的技术方案包括:数据库数据读写装置包括:读取单元,用于从应用服务器中读取原始数据,对所述原始数据进行封装以得到目标数据,并将所述目标数据存储到缓存队列中;提交单元,用于根据预设的缓存读取条件,将缓存队列中缓存的目标数据存储到数据库中。通过本专利技术的方案,将数据库数据同步过程中的读写任务分离,读取单元从外围数据库读取数据并封装后,没有直接存储到数据库,而是写到高速缓存队列中,缓存队列具有较高的读写速率,从而提高了读任务的效率,提交单元从队列中取出数据,按照给定步长,批量保存,从而提高写任务的效率。读取单元和提交单元在缓存队列不发生阻塞的情况下,各自独立运行,从而提高并发效率。附图说明下面对本专利技术实施例中的附图进行说明,实施例中的附图是用于对本专利技术的进一步理解,与说明书一起用于解释本专利技术,并不构成对本专利技术保护范围的限制。图1为本专利技术实施例提出的一种实施数据库数据读写方法的系统架构示意图;图2为本专利技术实施例提出的一种数据库数据读写装置的结构示意图;图3为本专利技术实施例提供的一种数据库数据读写方法的流程示意图;图4为本专利技术实施例提供的一种数据库数据读写方法的流程示意图。具体实施方式为了便于本领域技术人员的理解,下面结合附图对本专利技术作进一步的描述,并不能用来限制本专利技术的保护范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的各种方式可以相互组合。应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术。现在将参考附图描述实现本专利技术各个实施例的移动终端。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本专利技术的说明,其本身并没有特定的意义。因此,\模块\与\部件\可以混合地使用。本专利技术实施例中,从两个维度来分解数据库的数据同步任务,将传统的数据同步任务进行读写剥离,通过维持一个高速缓存队列暂时保持数据,第一、从外围的应用数据库读数据,然后将数据写到一个设置的高速缓存队列中;第二、从高速缓存队列取数据,然后批量插入到本地数据库中,保存过程中,设置一个批量步长,比如100,存储数据达到100条之后,再一次commit(保存)到本地数据中,或者设置一个保存时长间隔,例如,10S,每次到达保存时长间隔时一次性commit到本地数据中。本专利技术实施例中,在将缓存队列中的数据保存到数据库时,采用JDBC保存。JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构本文档来自技高网...
一种数据库数据读写方法和装置

【技术保护点】
一种数据库数据读写装置,设置在数据服务器上,其特征在于,所述数据库数据读写装置包括:读取单元,用于从应用服务器中读取原始数据,对所述原始数据进行封装以得到目标数据,并将所述目标数据存储到缓存队列中;提交单元,用于根据预设的缓存读取条件,将缓存队列中缓存的目标数据存储到数据库中。

【技术特征摘要】
1.一种数据库数据读写装置,设置在数据服务器上,其特征在于,所述数据库数据读写装置包括:读取单元,用于从应用服务器中读取原始数据,对所述原始数据进行封装以得到目标数据,并将所述目标数据存储到缓存队列中;提交单元,用于根据预设的缓存读取条件,将缓存队列中缓存的目标数据存储到数据库中。2.根据权利要求1所述的数据库数据读写装置,其特征在于,所述读取单元从应用服务器中读取原始数据包括:从应用服务器中读取条数为第一预定数目的原始数据;在完成对第一预定数目的原始数据的封装并得到对应的第一目标数据,且第一目标数据全部存储到缓存队列之后,在没有完成全部原始数据的读取时,再次从应用服务器中读取条数为第一预定数目的原始数据。3.根据权利要求1所述的数据库数据读写装置,其特征在于,所述提交单元根据预设的缓存读取条件,将缓存队列中缓存的目标数据存储到数据库中包括:根据预定的读取间隔,将缓存队列中的目标数据批量存储到数据库中。4.根据权利要求3所述的数据库数据读写装置,其特征在于,所述提交单元将所述目标数据批量存储到数据库中包括:预编译存储指令,每次向数据库提交数据时,捆绑Ni条目标数据到存储指令上,执行存储指令,以将Ni条目标数据存储到数据库中;其中,Ni为本次批量存储需存储数目。5.根据权利要求3所述的数据库数据读写装置,其特征在于,所述提交单元根据预定的读取间隔,将缓存队列中的目标数据批量存储到数据库中包括:根据预设的批量保存条数Nx,依次批量保存缓存队列中的目标数据;每次保存的目标数据的最大数目为预设的批量保存条数Nx;其中,获取缓存队列中存储的数据的长度N1;若N1小于或等于0,结束本次存储操作;若N1大于0且小于或等于Nx,将N1条数据以批量存储的方式存储到数据库中;若N1大于Nx,分N_subs次将目标数目存储到数据库中,其中,在第1次至第N_subs-1次,将Nx条数据存储到数据库中,在第N_subs次时,将Nx条目标数据存储到数据库中;其...

【专利技术属性】
技术研发人员:王平
申请(专利权)人:努比亚技术有限公司
类型:发明
国别省市:广东;44

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

1