数据文件的存取方法及装置制造方法及图纸

技术编号:15840904 阅读:36 留言:0更新日期:2017-07-18 16:53
本发明专利技术公开了一种数据文件的存取方法及装置。其中,方法包括:将数据文件分别存储到第一存储空间和第二存储空间中;每当接收到用于更新数据文件的更新指令时,将更新指令存储到预设的消息队列中;将第一存储空间作为读取存储空间,并将第二存储空间作为更新存储空间;每当预设的存储空间切换条件满足时,将当前的读取存储空间切换为更新存储空间,并将当前的更新存储空间切换为读取存储空间;其中,读取存储空间用于处理来自用户的读取请求,更新存储空间用于根据消息队列中存储的更新指令进行更新。本发明专利技术在双存储空间的基础上实现了完全无锁,提高了用户并发数;同时又利用消息队列存储更新指令,可以避免拷贝大量无效数据的弊端。

Access method and device for data file

The invention discloses a method and a device for accessing data files. The method includes: data files are stored into the first storage space and a second storage space; whenever update instructions received for updating a data file, will be updated to the preset instructions stored in the message queue; the first storage space as read storage space, and the second storage space as update storage space; when meet the storage space switching condition preset, the current read storage space switch to update the storage space, storage space and will update the current switching for reading storage space; the storage space for processing read from the user read requests to update the storage space for updates according to the update instructions stored in the message queue. The invention realizes complete lock free on the basis of double storage space, improves the concurrent number of users, and simultaneously stores the updating instructions by using the message queue, thereby avoiding the abuse of copying a large amount of invalid data.

【技术实现步骤摘要】
数据文件的存取方法及装置
本专利技术涉及通信
,具体涉及一种数据文件的存取方法及装置。
技术介绍
在并发环境中,常常会出现对数据文件同时进行读操作与写操作的情况,在此种情况下容易引发数据的丢失更新、脏读、不可重复读取等问题。为解决这一问题,技术人员常常采用加锁的方式来保证任务的顺利进行。但是,专利技术人在实现本专利技术的过程中发现,现有技术中的上述方式至少存在下述缺陷:采用加锁的方式会大大降低并发数,影响系统的吞吐量,降低系统处理任务的效率。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的数据文件的存取方法及装置。根据本专利技术的一个方面,提供了一种数据文件的存取方法,其包括:将数据文件分别存储到第一存储空间和第二存储空间中;每当接收到用于更新所述数据文件的更新指令时,将所述更新指令存储到预设的消息队列中;将所述第一存储空间作为读取存储空间,并将所述第二存储空间作为更新存储空间;每当预设的存储空间切换条件满足时,将当前的读取存储空间切换为更新存储空间,并将当前的更新存储空间切换为读取存储空间;其中,读取存储空间用于处理来自用户的读取请求,更新存储空间用于根据所述消息队列中存储的更新指令进行更新。根据本专利技术的另一个方面,提供了一种数据文件的存取装置,其包括:数据存储模块,适于将数据文件分别存储到第一存储空间和第二存储空间中;将所述第一存储空间作为读取存储空间,并将所述第二存储空间作为更新存储空间;指令存储模块,适于每当接收到用于更新所述数据文件的更新指令时,将所述更新指令存储到预设的消息队列中;切换模块,适于每当预设的存储空间切换条件满足时,将当前的读取存储空间切换为更新存储空间,并将当前的更新存储空间切换为读取存储空间;其中,读取存储空间用于处理来自用户的读取请求,更新存储空间用于根据所述消息队列中存储的更新指令进行更新。在本专利技术提供的数据文件的存取方法及装置中,首先通过将数据文件分别存储在两个存储空间中,从而将数据文件的读操作与写操作进行空间上的分化,利用读取存储空间来处理来自用户的读取请求,利用更新存储空间来根据更新指令进行数据的更新,并在满足切换条件时读取存储空间与更新存储空间可以进行切换,从而实现了在无锁的情况下对数据同时进行读写,提高系统的并发数和吞吐量的效果;同时,一般情况下,读取存储空间与更新存储空间相互切换后,需将切换前的更新存储空间中的全部数据拷贝至切换前读取存储空间中来保证数据的一致性,但拷贝的数据中往往只有少部分数据进行了更新,从而造成拷贝数据中存在大量的无效和冗余数据,而本专利技术中通过将更新指令存储到消息队列中,在存储空间与更新存储空间进行切换后,当前的更新存储空间(即切换前的存储空间)仍可根据消息队列中的更新指令对之前的数据进行更新,避免了拷贝大量无效数据的弊端。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1示出了根据本专利技术一个实施例提供的一种数据文件的存取方法的流程图;图2示出了根据本专利技术另一个实施例提供的一种数据文件的存取方法的流程图;图3示出了根据本专利技术一个实施例提供的一种数据文件的存取装置的结构框图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。图1示出了根据本专利技术一个实施例提供的一种数据文件的存取方法的流程图。如图1所示,该方法包括以下步骤:步骤S110:将数据文件分别存储到第一存储空间和第二存储空间中。其中,数据文件可以包括各种类型的数据文件,例如,可以包括新闻数据文件、财经数据文件等。本步骤中第一存储空间和第二存储空间中的数据文件内容相同,也就是说,在执行步骤S120之前,第一存储空间和第二存储空间中的存储内容是完全相同的。并且本专利技术对数据文件存储在第一存储空间和第二存储空间的具体形式不做限定。例如,可以将数据文件中的数据以键值对的方式进行存储,也可以以列式或其他方式进行存储。步骤S120:每当接收到用于更新数据文件的更新指令时,将更新指令存储到预设的消息队列中。当需要对数据文件进行更新时,会接收到用于更新数据文件的更新指令,每当接收到用于更新数据文件的更新指令时,将更新指令存储到预设的消息队列中。其中,本专利技术中的更新指令包括多种类型,例如,新增类型的更新指令、删除类型的更新指令以及修改类型的更新指令等。由此可见,本专利技术中的更新指令不局限于对数据文件中原有数据的更新操作指令,还包括在数据文件中写入新的数据的写入操作指令。步骤S130:将第一存储空间作为读取存储空间,并将第二存储空间作为更新存储空间。在执行完步骤S110之后,初始的默认状态可以为第一存储空间为读取存储空间,第二存储空间为更新存储空间;或者,当系统重新启动但未保存有之前读取存储空间和更新存储空间与第一存储空间和第二存储空间的对应关系的相关信息时,也可将第一存储空间作为读取存储空间,并将第二存储空间作为更新存储空间。其中,第一存储空间与第二存储空间中的“第一”及“第二”并不表示任何顺序,只是为区分存储空间而设。其中,读取存储空间用于处理来自用户的读取请求,更新存储空间用于根据消息队列中存储的更新指令进行更新。本专利技术中读取存储空间与更新存储空间的作用与此处相同。具体地,当接收到用户的读取请求时,根据读取存储空间中的数据来处理用户的读取请求;而更新存储空间则不断地根据更新指令对更新存储空间中的数据文件进行更新。步骤S140:每当预设的存储空间切换条件满足时,将当前的读取存储空间切换为更新存储空间,并将当前的更新存储空间切换为读取存储空间。每当满足预设的存储空间切换条件时,切换读取存储空间与更新存储空间,即将当前的读取存储空间切换为更新存储空间,并将当前的更新存储空间切换为读取存储空间。例如,当预设的存储空间切换条件为当前时间距上次切换时间的时间间隔等于30秒时,则将当前的读取存储空间切换为更新存储空间,并将当前的更新存储空间切换为读取存储空间。其中,本专利技术对上述的各个步骤的具体执行顺序不做限定,本领域技术人员可以根据需要灵活调整各个步骤之间的先后顺序。例如,步骤S120与步骤S130既可以同时执行,也可以先后执行,本专利技术对此不做限定。由此可见,本专利技术实施例提供的数据文件的存取方法,首先通过将数据文件分别存储在两个存储空间中,从而将数据文件的读操作与写操作进行空间上的分化,利用读取存储空间来处理来自用户的读取请求,利用更新存储空间来根据更新指令进行数据的更新,并在满足切换条件时读取存储空间与更新存储空间可以进行切换,从而实现了在无锁的情况下对数据同时进行读写,提高系统的并发数和吞本文档来自技高网...
数据文件的存取方法及装置

【技术保护点】
一种数据文件的存取方法,包括:将数据文件分别存储到第一存储空间和第二存储空间中;每当接收到用于更新所述数据文件的更新指令时,将所述更新指令存储到预设的消息队列中;将所述第一存储空间作为读取存储空间,并将所述第二存储空间作为更新存储空间;每当预设的存储空间切换条件满足时,将当前的读取存储空间切换为更新存储空间,并将当前的更新存储空间切换为读取存储空间;其中,读取存储空间用于处理来自用户的读取请求,更新存储空间用于根据所述消息队列中存储的更新指令进行更新。

【技术特征摘要】
1.一种数据文件的存取方法,包括:将数据文件分别存储到第一存储空间和第二存储空间中;每当接收到用于更新所述数据文件的更新指令时,将所述更新指令存储到预设的消息队列中;将所述第一存储空间作为读取存储空间,并将所述第二存储空间作为更新存储空间;每当预设的存储空间切换条件满足时,将当前的读取存储空间切换为更新存储空间,并将当前的更新存储空间切换为读取存储空间;其中,读取存储空间用于处理来自用户的读取请求,更新存储空间用于根据所述消息队列中存储的更新指令进行更新。2.根据权利要求1所述的方法,其中,进一步包括步骤:通过预设的第一消费端和第二消费端订阅所述消息队列;其中,所述第一消费端负责在所述第一存储空间作为更新存储空间时,根据所述消息队列中的更新指令对所述第一存储空间进行更新;所述第二消费端负责在所述第二存储空间作为更新存储空间时,根据所述消息队列中的更新指令对所述第二存储空间进行更新。3.根据权利要求2所述的方法,其中,每当所述第一存储空间切换为更新存储空间时,所述第一消费端根据预设的第一消费偏移消费所述消息队列中的更新指令;并且,每当所述第一存储空间切换为读取存储空间时,所述第一消费端根据当前偏移信息更新所述第一消费偏移;每当所述第二存储空间切换为更新存储空间时,所述第二消费端根据预设的第二消费偏移消费所述消息队列中的更新指令;并且,每当所述第二存储空间切换为读取存储空间时,所述第二消费端根据当前偏移信息更新所述第二消费偏移。4.根据权利要求1-3任一所述的方法,其中,所述预设的存储空间切换条件包括:当前时间点与上一次切换读取存储空间和更新存储空间的时间点之间的间隔达到预设时间;和/或...

【专利技术属性】
技术研发人员:朱超
申请(专利权)人:北京奇虎科技有限公司
类型:发明
国别省市:北京,11

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

1