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

技术编号:13743229 阅读:54 留言:0更新日期:2016-09-23 04:26
本发明专利技术实施例提供的数据库读写方法中,包括:将数据库写入请求写入到一个HASH队列中,所述HASH队列按照键值对方式存储所述数据库写入请求,通过请求键唯一标识一个所述数据库写入请求;从所述HASH队列中读取所述数据库写入请求;以及根据读取到所述数据库写入请求进行数据库操作。通过按照键值对的方式将数据库写入请求写入到HASH队列中,能够合并具有相同键值的HASH队列,从而减少数据库操作的次数,减轻数据库压力,提高数据库访问效率。进一步地,增加数据库缓存用于数据库的读取操作,为了避免数据库缓存和数据库的不同步,在将数据库写入请求写入到HASH队列的同时,根据数据库写入请求更新数据库缓存。

【技术实现步骤摘要】

本专利技术涉及计算机领域,具体涉及一种数据库读写方法和读写装置
技术介绍
目前很多应用系统采用数据库表存储数据。由于应用系统需要频繁地从数据库表中读取和写入数据,从而使读写数据的效率直接关系到应用系统的整体效率。计算机技术的快速发展使工程师们提出各种方法提高数据库的访问效率,比较实用的有数据库读写分离技术和缓存技术。数据库读写分离技术建立数据库副表,从副表中读取数据,写入数据时直接写入到主表中,同时同步到副表中,如图1a所示。数据库读写分离技术能显著提高数据库读取的效率,但对提高数据库写入效率提升效果不大。缓存技术将数据库表的数据读取到内存中,应用系统直接从内存中读取数据,如果在内存中读取不到相关数据,再从数据库表中读取数据,并更新到内存中,如图1b所示。缓存技术用于数据库的读取操作,能有效避免对数据库的频繁读取。但如果数据库表的数据更新,而缓存表中的数据没有更新,则可能导致应用系统读取不到最新的数据。
技术实现思路
有鉴于此,本专利技术提供一种数据库读写方法和读写装置,用于解决上述问题。根据本专利技术的第一方面,本专利技术提供一种数据库读写方法,包括:将数据库写入请求写入到一个HASH队列中,所述HASH队列按照键值对方式存储所述数据库写入请求,通过请求键唯一标识一个所述数据库写入请求;从所述HASH队列中读取所述数据库写入请求;以及根据读取到所
述数据库写入请求进行数据库操作。优选地,按照先进先出的原则从所述HASH队列中读取所述数据库写入请求。优选地,所述数据库写入请求包括表更新和表添加,所述请求键包括所述数据库写入请求的表名和表的主键。优选地,所述将数据库写入请求写入到HASH队列包括:以所述数据库写入请求的请求键检索所述HASH队列;如果检索到对应项,则将所述数据库写入请求和对应项合并;以及如果没有检索到对应的数据库写入请求,则将所述数据库写入请求添加到所述HASH队列尾。优选地,所述将所述数据库写入请求和对应项合并包括:如果所述数据库写入请求和所述对应项包含对表的同一字段的操作,则用所述数据库写入请求的值替换所述对应项的值;以及如果所述数据库写入请求和所述对应项包含对表的不同字段的操作,则组合不同字段的值。优选地,还包括:从数据库中读取数据,存储到数据库缓存中。优选地,还包括:当将数据库写入请求写入到HASH队列时,根据所述数据库写入请求同步更新所述数据库缓存。根据本专利技术的第二方面,本专利技术提供一种数据库读写装置,包括队列管理模块和缓存管理单元,所述队列管理模块包括写入单元和读取单元,所述写入单元用于将数据库写入请求写入到HASH队列;所述读取单元用于从所述HASH队列中读取所述数据库写入请求,进行数据库操作,其中,所述HASH队列按照键值对方式存储所述数据库写入请求,通过请求键唯一标识一个所述数据库写入请求;所述缓存管理单元,用于建立数据库缓存,所述缓存中存储有从数据库中读取的数据。优选地,所述读取单元按照先进先出的原则读取所述数据库写入请求。优选地,所述数据库写入请求包括表更新和表添加,所述请求键包括所述数据库写入请求的表名和表的主键。优选地,所述写入单元包括:以所述数据库写入请求的请求键检索所述HASH队列;如果检索到对应项,则将所述数据库写入请求和对应项
合并;以及如果没有检索到对应项,则将所述数据库写入请求添加到所述HASH队列尾。本专利技术实施例提供的数据库读写方法中,通过按照键值对方式将数据库写入请求写入到HASH队列中,能够合并具有相同键值的HASH队列,从而减少数据库操作的次数,减轻数据库压力,提高数据库访问效率。进一步地,为了避免数据库缓存和数据库的不同步,在将数据库写入请求写入到HASH队列的同时,根据数据库写入请求更新数据库缓存。上述方法如果应用于一些对同一数据库表频繁更新的场景,能极大地提升数据库读写效率。附图说明通过参照以下附图对本专利技术实施例的描述,本专利技术的上述以及其它目的、特征和优点将更为清楚,在附图中:图1a,1b分别是现有技术中的数据库读写分离技术和缓存技术的示意图;图2是根据本专利技术实施例的数据库读写方法的示意图;图3a-3c是根据本专利技术实施例中写入HASH队列的示意图;图4是根据本专利技术实施例的数据库读写方法的流程图;图5是根据本专利技术另一实施例的数据库读写方法的流程图。具体实施方式以下基于实施例对本专利技术进行描述,但是本专利技术并不仅仅限于这些实施例。在下文对本专利技术的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本专利技术。为了避免混淆本专利技术的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。图2是根据本专利技术实施例的数据库读写方法的示意图。在图2中,①表示客户端将数据库写入请求写入到HASH队列,②表示根据数据库写入请求更新数据库缓存,③表示从HASH队列中读取数据库写入请求,并把请求数据写入数据库中,④表示从数据库中读取数据存储到数据库缓
存中,⑤表示客户端从数据库缓存读取数据。在图2中,客户端不直接操作数据库,直接数据库写入请求丢入HASH队列,同时客户端会根据数据库写入请求更新数据库缓存中的数据。可以使用一个进程从HASH队列里读取数据写入到数据库,这样高峰期就不会出现数据库连接过多的问题。而同时更新数据库缓存又可以保证在HASH队列没有及时更新数据库时还能获取最新的数据。另外,为了防止HASH队列中数据冗余,减少数据库操作次数,每个数据库写入请求按照键值对方式存储,如果后一个数据库写入请求和已有的数据库写入请求的键相同,则后一个数据库写入请求和前一个数据库写入请求进行合并,这种方式将相关的多个数据库写入请求合并成一次操作,从而从数量上减少了数据库操作的次数,提高了数据库访问效率。在下文中,以图3a-3c为例,具体说明HASH队列的写入步骤。在图3a-3c中,301,302和303表示具有相同键值的数据库写入请求。在图3a中,数据库写入请求301首先被存储到HASH队列的尾部。当客户端继续向HASH队列写入数据库写入请求302,由于HASH队列按照键值对方式存储数据,所以首先根据数据库写入请求302的键值查到301,然后根据数据库写入请求302更新301,如图3b所示。以此类推,当客户端继续向HASH队列写入数据库写入请求303,以数据库写入请求303更新301。由于数据库写入请求的请求键可以通过数据库表和主键字段组合表示,所以上述操作相当于将对同一个数据库表的多个写操作合并为一个写操作。注意,从HASH队列中读取数据存储到数据库时,一般按照先进先出的方式进行读取,如果一个新的数据库写入请求到达时,和它相同键的写入请求已经取出,则依然把这个数据库写入请求写入到HASH队列的尾部。这种数据库写入方法对某些数据库应用场景特别有用。例如,如果在短时间内将order_info中的statusId字段更新为A,B,C,D,E,并分别将这些更新请求写入到HASH队列中,可以发现,更新操作只被执行了一次(最后一次),并得到了statusId为E的最后结果。再例如,如果分三次修改order_info中的statusId,operator和operTime字段,则可以将三个修改合并为本文档来自技高网
...

【技术保护点】
一种数据库读写方法,包括:将数据库写入请求写入到一个HASH队列中,所述HASH队列按照键值对方式存储所述数据库写入请求,通过请求键唯一标识一个所述数据库写入请求;从所述HASH队列中读取所述数据库写入请求;以及根据读取到所述数据库写入请求进行数据库操作。

【技术特征摘要】
1.一种数据库读写方法,包括:将数据库写入请求写入到一个HASH队列中,所述HASH队列按照键值对方式存储所述数据库写入请求,通过请求键唯一标识一个所述数据库写入请求;从所述HASH队列中读取所述数据库写入请求;以及根据读取到所述数据库写入请求进行数据库操作。2.根据权利要求1所述的数据库读写方法,其中,按照先进先出的原则从所述HASH队列中读取所述数据库写入请求。3.根据权利要求1所述的数据库读写方法,其中,所述数据库写入请求包括表更新和表添加,所述请求键包含所述数据库写入请求的表名和表的主键。4.根据权利要求3所述的数据库读写方法,其中,所述将数据库写入请求写入到HASH队列包括:以所述数据库写入请求的请求键检索所述HASH队列;如果检索到对应项,则将所述数据库写入请求和对应项合并;以及如果没有检索到对应项,则将所述数据库写入请求添加到所述HASH队列尾。5.根据权利要求4所述的数据库读写方法,其中,所述将所述数据库写入请求和对应项合并包括:如果所述数据库写入请求和所述对应项包含对表的同一字段的操作,则用所述数据库写入请求的值替换所述对应项的值;以及如果所述数据库写入请求和所述对应项包含对表的不同字段的操作,则组合不同字段的值。6.根据权利要求1所述的数据库读写...

【专利技术属性】
技术研发人员:郭秋实
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京;11

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

1