leveldb数据库中数据对写入的方法、装置及系统制造方法及图纸

技术编号:15391663 阅读:67 留言:0更新日期:2017-05-19 04:52
本发明专利技术涉及计算机数据存储技术领域,尤其涉及一种leveldb数据库中数据对写入的方法、装置及系统。本发明专利技术提供一种leveldb数据库中数据对写入的方法,包括:配置多个消息队列对应多个leveldb数据库;将数据对写入其中的一个消息队列;将消息队列中的数据对写入与该消息队列相对应的leveldb数据库。其中,配置多个消息队列对应多个数据库之前,还包括步骤:创建多个目录,配置多个leveldb数据库对应多个目录。其中,将数据对写入其中的一个消息队列,包括步骤:通过哈希算法将数据对在多个消息队列之间进行分配,确定数据对将要写入的消息队列。本发明专利技术解决了在大压力情况下leveldb数据库的写入性能较低的问题,提高了leveldb数据库的写入性能。

Method, device and system for writing data in leveldb database

The invention relates to the technical field of computer data storage, in particular to a method, a device and a system for writing data in an leveldb database. The invention relates to a method to write, including a data in leveldb database: configure multiple message queue corresponding to a plurality of leveldb database; data on a message queue which is written; the messages in the queue to write the number of leveldb data corresponding to the message queue database. Among them, before configuring multiple message queues to correspond to multiple databases, there are steps to create multiple directories, configure multiple leveldb databases, and correspond to multiple directories. Wherein, the data is written to one of the message queues, including steps to assign the data pairs among the plurality of message queues by a hashing algorithm, and determine the data to the message queue to be written. The invention solves the problem that the writing performance of the leveldb database is low under the condition of large pressure, and improves the writing performance of the leveldb database.

【技术实现步骤摘要】
leveldb数据库中数据对写入的方法、装置及系统
本专利技术涉及计算机数据存储
,尤其涉及一种leveldb数据库中数据对写入的方法、装置及系统。
技术介绍
leveldb数据库是google开源的一个key-value存储引擎库,本申请文件中所提到的数据对即key-value对,leveldb数据库在存储数据时,是根据记录的key值有序存储的,就是说相邻的key值在存储文件中是依次顺序存储的,而应用可以自定义key大小比较函数,leveldb数据库会按照用户定义的比较函数依序存储这些记录。在数据存储领域,leveldb数据库的应用场景很多,leveldb数据库的应用过程中会存在一些性能不高的问题:比如大批量的写入场景下,levedb数据库中level-0的files数量达到kL0_SlowdownWritesTrigger(默认8)时,产生写入延迟问题;达到kL0_StopWritesTrigger(默认12)时,产生写入阻塞问题,导致了leveldb数据库整体的写入性能较低。目前常用的解决方法是修改源码中kL0_SlowdownWritesTrigger和kL0_StopWritesTrigger的大小来调整写入延迟和写入阻塞的条件,但是,该方案并不能彻底解决该问题。因为在大批量写入的场景下,通过提高以上两个变量的值,只能暂时延长达到写入延迟与写入阻塞条件的时间,而并没有彻底解决这个问题。当时间达到后,依然会触发写入延迟与写入阻塞的条件,导致写入性能低下。这种方案只能延长到达触发条件的时间,而不能解决达到触发条件后写入性能低下的问题。专利技术内容鉴于此,本方法提供了一种leveldb数据库中数据对写入的方法、装置及系统,解决了在大压力情况下leveldb数据库的写入性能较低的问题,提高了leveldb数据库的写入性能。为了达到上述目的,本专利技术是通过以下技术方案实现的:本专利技术提供一种leveldb数据库中数据对写入的方法,包括:配置多个消息队列对应多个leveldb数据库;将数据对写入其中的一个消息队列;将消息队列中的数据对写入与该消息队列相对应的leveldb数据库。其中,配置多个消息队列对应多个数据库之前,还包括步骤:创建多个目录,配置多个leveldb数据库对应多个目录。其中,将数据对写入其中的一个消息队列之前,包括步骤:通过哈希算法将数据对在多个消息队列之间进行分配,确定数据对将要写入的消息队列。优选地,通过异步线程将数据对写入到消息队列。其中,将消息队列中的数据对写入与该消息队列相对应的leveldb数据库之前,还包括步骤:在leveldb数据库中创建线程池,线程池包括有多个线程。其中,将消息队列中的数据对写入与该消息队列相对应的leveldb数据库,包括步骤:多个线程将消息队列中的数据对写入与该消息队列相对应的leveldb数据库。本专利技术提供一种leveldb数据库中数据对写入的装置,包括:消息队列配置模块,用于配置与多个leveldb数据库相对应的多个消息队列;第一数据对写入模块,用于将数据对写入消息队列;第二数据对写入模块,用于将消息队列中的数据对写入与该消息队列相对应的leveldb数据库。优选地,还包括:目录创建模块,用于创建多个目录;leveldb数据库配置模块,用于配置与多个目录相关联的多个leveldb数据库。优选地,还包括:哈希运算模块,用于对数据对进行哈希运算,确定数据对将要写入的消息队列。本专利技术提供一种leveldb数据库中数据对写入的系统,包括:数据对运算单元、异步线程和多个目录,其中,多个目录的目录名互不相同,每个目录下分别设有与该目录对应的leveldb数据库、消息队列和线程池,所述数据运算单元对数据对进行哈希运算后,通过异步线程将数据写入其中一个目录下的消息队列,所述线程池包括有多个线程,线程将消息队列中的数据对写入与该消息队列相对应的leveldb数据库。本专利技术的有益效果如下:本专利技术所提供的一种leveldb数据库中数据对写入的方法,具有如下优点:1.通过创建多个目录,并在多个目录下配置多个leveldb数据库,在数据对写入时,当其中一个数据库发生写入延迟或写入阻塞时,并不影响其他数据库的正常写入,同时将在大批量写入的场景下,数据写入的整体压力分散给了多个数据库,从另一方面降低了写入延迟或写入阻塞的发生几率,提高数据写入效率和性能;2.通过对数据对中的key采取哈希算法,实现数据对入库的均衡分布,快速决定数据对将要落入哪个数据库,从一方面提高数据库的写入效率;3.经过哈希算法确定数据对所要落入的数据库之后,通过异步线程来进行数据对到消息队列的写入,异步线程的写操作速度远高于同步性线程,因此减少了leveldb数据库处理写入操作时的线程等待时间,提高处理效率;4.通过多线程池的方式,线程池内含有多个线程,采用多个线程操作多个数据对,提高了数据对在到达数据库的效率;leveldb数据库中数据对写入的装置及系统的有益效果与leveldb数据库中数据对写入的方法的有益效果类似,不再赘述。附图说明:图1为本专利技术实施例所提供的leveldb数据库中数据对写入的方法的流程示意图;图2为本专利技术实施例所提供的leveldb数据库中数据对写入的装置的示意图;图3为本专利技术实施例所提供的leveldb数据库中数据对写入的系统的框架图;具体实施方式:本专利技术的核心是提供一种leveldb数据库中数据对写入的方法、装置及系统,解决了在大压力情况下leveldb数据库的写入性能较低的问题,提高了leveldb数据库的写入性能。为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。请参考图1,图1为本专利技术实施例所提供的leveldb数据库中数据对写入的方法的流程示意图;leveldb数据库中数据对写入的方法包括:步骤S101、创建多个目录,配置多个leveldb数据库对应多个目录;其中,在磁盘上创建多个目录,目录的数量记为db_num,可以由用户自行设定或者是系统默认设定,因为目录的数量为一个定值,因此每一个目录都相当于具有一个区别于其他目录的目录名,再为每一个目录配置一个leveldb数据库db,数据库的数量也为db_num,每一个数据库有唯一的名,记为dbID。作为一种可实施方式,为目录配置leveldb数据库可以通过创建一个新的leveldb数据库或者打开一个已有的leveldb数据库来实现。步骤S102、配置多个消息队列对应多个leveldb数据库;其中,根据数据库的数量db_num来为每一个数据库配置一个消息队列,消息队列的数量也为db_num,因此数据的dbID也同样适用于对应的消息队列。步骤S103、通过哈希算法将数据对在多个消息队列之间进行分配,确定数据对将要写入的消息队列;其中,本申请文件中所述的数据对是指含有key(键)、value(值)的数据,数据对在写入消息队列queue[dbID]的时候,需要对key进本文档来自技高网...
leveldb数据库中数据对写入的方法、装置及系统

【技术保护点】
一种leveldb数据库中数据对写入的方法,其特征在于,包括:配置多个消息队列对应多个leveldb数据库;将数据对写入其中的一个消息队列;将消息队列中的数据对写入与该消息队列相对应的leveldb数据库。

【技术特征摘要】
1.一种leveldb数据库中数据对写入的方法,其特征在于,包括:配置多个消息队列对应多个leveldb数据库;将数据对写入其中的一个消息队列;将消息队列中的数据对写入与该消息队列相对应的leveldb数据库。2.根据权利要求1所述的leveldb数据库中数据对写入的方法,其特征在于,配置多个消息队列对应多个leveldb数据库之前,包括:创建多个目录,配置多个leveldb数据库对应多个目录。3.根据权利要求1所述的leveldb数据库中数据对写入的方法,其特征在于,将数据对写入其中的一个消息队列之前,包括:通过哈希算法将数据对在多个消息队列之间进行分配,确定数据对将要写入的消息队列。4.根据权利要求1所述的leveldb数据库中数据对写入的方法,其特征在于,将数据对写入其中的一个消息队列,包括:通过异步线程将数据对写入到消息队列。5.根据权利要求1所述的leveldb数据库中数据对写入的方法,其特征在于,将消息队列中的数据对写入与该消息队列相对应的leveldb数据库之前,还包括:在leveldb数据库中创建线程池,线程池包括有多个线程。6.根据权利要求5所述的leveldb数据库中数据对写入的方法,其特征在于,将消息队列中的数据对写入与该消息队列相对应的leveldb数据库,...

【专利技术属性】
技术研发人员:安祥文
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

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

1