CN106294477B - 一种数据处理方法和装置 - Google Patents
一种数据处理方法和装置 Download PDFInfo
- Publication number
- CN106294477B CN106294477B CN201510303238.6A CN201510303238A CN106294477B CN 106294477 B CN106294477 B CN 106294477B CN 201510303238 A CN201510303238 A CN 201510303238A CN 106294477 B CN106294477 B CN 106294477B
- Authority
- CN
- China
- Prior art keywords
- confirmation
- data block
- read
- queue
- processing equipment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
Abstract
本发明实施例公开了一种数据处理方法和装置,处理设备从被读取数据块队列中读取数据块;生成与所述数据块具有一一关联关系的确认对象,用于记录具有所述关联关系的数据块的确认状态;建立包括N个确认对象的确认队列,根据所述确认队列中确认对象的确认状态对被读取确认的数据块执行持久化操作,可见,处理设备根据所述确认队列中的确认对象的确认状态以及确认队列的排列顺序,将确认状态为未确认的、且较早被处理设备读取到的数据块的上一个已读取确认的数据块进行持久化操作,而不用对每一个已读取确认的数据块都进行持久化操作,在保证数据读取精度的情况下降低了持久化服务的处理压力。
Description
技术领域
本发明涉及数据处理领域,特别是涉及一种数据处理方法和装置。
背景技术
在互联网的数据处理中,处理设备经常会需要从数据库或其他数据存储单元中读取数据块,并对读取的数据块进行处理或者说确认。数据库等数据存储单元中被读取的数据一般是一个或多个数据块队列的形式,读取设备从该一个或多个数据块队列中依次读取并确认数据块。
在大数据的场景下,数据块队列的数据量非常的大,串行读取或者说单线程读取数据块的效率太低。目前读取设备一般都是采用并行读取数据块的方式,以提高读取效率。并行读取的方式,会造成从数据块队列中读取数据块的顺序与并行确认后的数据块的顺序不同。在读取数据块的过程中,可能会因为处理设备重启或者处理能力限制等导致出现读取中断的情况。处理设备在中断后继续读取数据块时,由于数据块的读取顺序和确认顺序不同,处理设备无法确认哪些数据块已经被确认了、哪些数据块还未被读取或哪些数据块已被读取但还未被确认。处理设备为了确保当出现中断读取后继续时,不会出现将已经读取过的数据块反复读取或者没有读取到的数据块被跳过没有被读取的情况,通常使用对每一个已读取并确认后的数据块进行持久化操作,保存到持久化区域中,所述持久化可以理解为将内存中的数据转换保存到数据库、文件等位置。处理设备通过对已读取确认的数据块持久化达到标识被持久化的数据块已经被读取确认的作用。也就是说,通过持久化的操作,处理设备在中断后继续读取数据块时不会读取已经被持久化的数据块。
然而问题是,大数据的场景下,处理设备并行读取并确认数据块的速度远大于持久化的速度,会有海量的读取并确认的数据块等待持久化服务对其持久化处理,导致持久化服务的处理压力很大。
发明内容
为了解决上述技术问题,本发明提供了一种数据处理方法和装置,使得不需要对每一个已读取确认的数据块都进行持久化操作也能保证在出现中断后继续读取的情况时,被读取数据块队列中未被读取确认的数据块不会被处理设备跳过读取,在保证数据读取精度的情况下降低了持久化服务的处理压力。
本发明实施例公开了如下技术方案:
一种数据处理方法,所述方法包括:
处理设备从被读取数据块队列中读取数据块;
所述处理设备生成与所述数据块具有一一关联关系的确认对象,所述确认对象用于记录具有所述关联关系的数据块的确认状态;
所述处理设备建立包括N个确认对象的确认队列,所述N个确认对象在所述确认队列中的排列顺序与读取顺序相同,所述读取顺序为与所述N个确认对象具有所述关联关系的N个数据块从所述被读取数据块队列中被读取出的顺序,所述确认队列中位于队列头的确认对象为所述N个确认对象中最先生成的数据对象;
若所述被读取数据块队列中的数据块被所述处理设备读取确认,所述处理设备将与被读取确认的数据块具有关联关系的确认对象的确认状态从未确认修改为已确认;
所述处理设备根据所述确认队列中确认对象的确认状态对被读取确认的数据块执行持久化操作。
优选的,所述处理设备根据所述确认队列中确认对象的确认状态对被读取确认的数据块执行持久化操作,具体包括:
所述处理设备对位于所述队列头的确认对象的确认状态进行识别,若所述确认状态为已确认,删除位于所述队列头的确认对象,根据所述排列顺序从所述确认队列中将被删除的确认对象的下一个确认对象置于所述队列头,再一次对位于所述队列头的确认对象的确认状态进行识别,直到位于所述队列头的确认对象的确认状态为未确认时,根据所述排列顺序,将位于所述队列头的确认对象前一个的、且已被删除的确认对象所关联的数据块的位置信息保存到持久化区域中,所述位置信息为对应的数据块在所述被读取数据块队列中的位置信息。
优选的,若所述处理设备从被读取数据块队列中读取数据块的过程中出现读取中断,还包括:
所述处理设备从持久化区域中获取最新保存的数据块的位置信息;
所述处理设备根据所述最新保存的数据块的位置信息从所述被读取数据块队列中对应的位置开始继续读取数据块。
优选的,
所述处理设备使用并行读取的方式从被读取数据块队列中读取数据块。
优选的,
所述确认队列保存在缓存中。
优选的,所述确认对象用于记录具有所述关联关系的数据块的确认状态,具体包括:
若与所述确认对象具有所述关联关系的数据块未被读取确认,所述确认对象的确认状态为未确认;
若与所述确认对象具有所述关联关系的数据块已被读取确认,所述确认对象的确认状态为已确认。
一种数据处理装置,包括:
读取单元,用于从被读取数据块队列中读取数据块;
生成单元,用于生成与所述数据块具有一一关联关系的确认对象,所述确认对象用于记录具有所述关联关系的数据块的确认状态;
建立单元,用于建立包括N个确认对象的确认队列,所述N个确认对象在所述确认队列中的排列顺序与读取顺序相同,所述读取顺序为与所述N个确认对象具有所述关联关系的N个数据块从所述被读取数据块队列中被读取出的顺序,所述确认队列中位于队列头的确认对象为所述N个确认对象中最先生成的数据对象;
修改单元,用于若所述被读取数据块队列中的数据块被读取确认,将与被读取确认的数据块具有关联关系的确认对象的确认状态从未确认修改为已确认;
持久化单元,用于根据所述确认队列中确认对象的确认状态对被读取确认的数据块执行持久化操作。
优选的,
所述持久化单元,具体用于对位于所述队列头的确认对象的确认状态进行识别,若所述确认状态为已确认,删除位于所述队列头的确认对象,根据所述排列顺序从所述确认队列中将被删除的确认对象的下一个确认对象置于所述队列头,再一次对位于所述队列头的确认对象的确认状态进行识别,直到位于所述队列头的确认对象的确认状态为未确认时,根据所述排列顺序,将位于所述队列头的确认对象前一个的、且已被删除的确认对象所关联的数据块的位置信息保存到持久化区域中,所述位置信息为对应的数据块在所述被读取数据块队列中的位置信息。
优选的,若所述读取单元从被读取数据块队列中读取数据块的过程中出现读取中断,还包括:
获取单元,用于从持久化区域中获取最新保存的数据块的位置信息;
所述读取单元还用于根据所述最新保存的数据块的位置信息从所述被读取数据块队列中对应的位置开始继续读取数据块。
优选的,
所述读取单元使用并行读取的方式从被读取数据块队列中读取数据块。
优选的,
所述确认队列保存在缓存中。
优选的,所述确认对象用于记录具有所述关联关系的数据块的确认状态,具体包括:
若与所述确认对象具有所述关联关系的数据块未被读取确认,所述确认对象的确认状态为未确认;
若与所述确认对象具有所述关联关系的数据块已被读取确认,所述确认对象的确认状态为已确认。
由上述技术方案可以看出,处理设备在读取数据块时,会生成与数据块具有一一关联关系的、用于记录数据块的确认状态的确认对象,并根据从被读取数据块队列中读取数据块的读取顺序建立包括N个确认对象的确认队列,处理设备根据所述确认队列中的确认对象的确认状态以及确认队列的排列顺序,将确认状态为未确认的、且较早被处理设备读取到的数据块的上一个已读取确认的数据块进行持久化操作,而不用对每一个已读取确认的数据块都进行持久化操作,在保证数据读取精度的情况下降低了持久化服务的处理压力。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据处理方法的方法流程图;
图2为本发明实施例提供的一种确认队列建立示意图;
图3为本发明实施例提供的一种读取中断后继续读取的方法示意图;
图4为本发明实施例提供的一种数据处理装置的装置结构图;
图5为本发明实施例提供的一种数据处理装置的装置结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在互联网的数据处理中,处理设备经常会需要从数据库或其他数据存储单元中读取数据块,并对读取的数据块进行处理或者说确认。在大数据的场景下,数据块队列的数据量非常的大,串行读取或者说单线程读取数据块的效率太低。目前读取设备一般都是采用并行读取数据块的方式,以提高读取效率。并行读取的方式,会造成从数据块队列中读取数据块的顺序与并行确认后的数据块的顺序不同。在读取数据块的过程中,可能会因为处理设备重启或者处理能力限制等导致出现读取中断的情况。处理设备在中断后继续读取数据块时,由于数据块的读取顺序和确认顺序不同,处理设备无法确认哪些数据块已经被确认了、哪些数据块还未被读取或哪些数据块已被读取但还未被确认。处理设备为了确保当出现中断读取后继续时,不会出现将已经读取过的数据块反复读取或者没有读取到的数据块被跳过没有被读取的情况,通常使用对每一个已读取并确认后的数据块进行持久化操作,保存到持久化区域中。所述持久化可以理解为将内存中的数据块转换保存到数据库、文件等地方,处理设备通过对已读取确认的数据块持久化达到标识被持久化的数据块已经被读取确认的作用。也就是说,通过持久化的操作,处理设备在中断后继续读取数据块时不会读取已经被持久化的数据块。
然而问题是,大数据的场景下,处理设备并行读取并确认数据块的速度远大于持久化的速度,会有海量的读取并确认的数据块等待持久化服务对其进行持久化处理,导致持久化服务的处理压力很大。
故为此,本发明实施例提供了一种数据处理方法和装置,处理设备在读取数据块时,会生成与数据块具有一一关联关系的、用于记录数据块的确认状态的确认对象,并根据从被读取数据块队列中读取数据块的读取顺序建立包括N个确认对象的确认队列,处理设备根据所述确认队列中的确认对象的确认状态以及确认队列的排列顺序,将确认状态为未确认的、且较早被处理设备读取到的数据块的上一个已读取确认的数据块进行持久化操作,而不用对每一个已读取确认的数据块都进行持久化操作,在保证数据读取精度的情况下降低了持久化服务的处理压力。
使用传统的对每一个已读取确认的数据库进行持久化操作,由于持久化的速度赶不上并行读取的读取确认速度,导致会有海量的已读取确认的数据库处于等待被持久化的状态中,也就是处于未被持久化的情况,若这时所述处理设备出现了读取数据库中断,那么当所述处理设备再一次继续开始从所述被读取数据块队列读取数据块时,所述处理设备需要重新读取这些海量的且之前已经被读取确认的数据块,由此造成系统资源的浪费,降低处理设备的处理效率。
在本发明实施例中,若处理设备在读取数据块的过程中出现读取中断的情况,所述处理设备在继续读取之前,从所述持久化区域中获取最近一次保存的数据块的位置信息,也就是在读取中断前最后被执行持久化操作的数据块。所述处理设备根据所述位置信息从所述被读取数据块队列中对应的位置开始继续读取数据块。由于所述排列顺序和所述读取顺序相同,若持久化区域中最新保存为数据块a的位置信息,数据块a与当前确认队列中位于队列头的确认对象b的前一个确认对象a具有对应关系。当处理速度合并在继续读取数据块时,将直接从数据块a开始读取,而不用重复读取在被读取数据块队列中读取顺序位于数据块a之前的数据块,因为通过这些数据块所对应的确认对象的确认状态,可以确定这些数据块已经均被读取确认了。由此减少了处理设备中断后继续读取时可能会重复读取的已读取确认的数据块的数量,提高了处理效率。
实施例一
图1为本发明实施例提供的一种数据处理方法的方法流程图,所述方法包括:
S101:处理设备从被读取数据块队列中读取数据块。
S102:所述处理设备生成与所述数据块具有一一关联关系的确认对象,所述确认对象用于记录具有所述关联关系的数据块的确认状态。
举例说明,可选的,所述处理设备可以使用并行读取的方式从被读取数据块队列中读取数据块。
可选的,所述确认对象用于记录具有所述关联关系的数据块的确认状态,具体包括:
若与所述确认对象具有所述关联关系的数据块未被读取确认,所述确认对象的确认状态为未确认;
若与所述确认对象具有所述关联关系的数据块已被读取确认,所述确认对象的确认状态为已确认。
也就是说,所述确认对象的确认状态与所述确认对象对应的数据块的确认状态一致。
S103:所述处理设备建立包括N个确认对象的确认队列,所述N个确认对象在所述确认队列中的排列顺序与读取顺序相同,所述读取顺序为与所述N个确认对象具有所述关联关系的N个数据块从所述被读取数据块队列中被读取出的顺序,所述确认队列中位于队列头的确认对象为所述N个确认对象中最先生成的数据对象。
举例说明,所述处理设备从被读取数据块队列中每读取出一个数据块,就会生成一个确认对象,数据块与确认对象是一一对应的。随着数据块读取,处理设备将生成的确认对象依次组成确认队列,也就是说,处理设备读取数据块的读取顺序和确认队列中确认对象的排列顺序是相同的。所述确认队列保存在缓存中。所述缓存例如可以为内存。
如图2所示,图2为本发明实施例提供的一种确认队列建立示意图。图2中,处理设备从被读取数据块队列中先读取出数据块1,由此生成对应的确认对象1,紧接着处理设备读取数据块2,并生成对应的确认对象2,以此类推,读取数据块N,生成对应的确认对象N。可以看出,处理设备读取数据块的读取先后顺序与所述确认队列中的对应的确认对象的排列顺序是一致的。图2数据块队列中的箭头方向为读取顺序,可以理解为最左边的数据块被读取的读取时间点相对最早,从左向右读取时间点依次变大,队列最右边的数据块为最新被处理设备读取的数据块。图2确认队列中的箭头方向为排列顺序,队列最左边的确认对象为相对最早加入所述确认队列的,从左到右加入队列的时间越晚,最右边的确认对象为最新加入所述确认队列的。也就是说,处理设备读取数据块1的读取顺序先于数据块2,所述确认队列中数据块1对应的确认对象1的排列顺序也先于数据块2对应的确认对象2。
S104:若所述被读取数据块队列中的数据块被所述处理设备读取确认,所述处理设备将与被读取确认的数据块具有关联关系的确认对象的确认状态从未确认修改为已确认。
举例说明,确认对象的确认状态会随着对应的数据块的读取确认的状态改变而改变,所述处理设备刚读取到一个数据块时,该数据块处于未读取确认状态,那么该数据块对应的确认对象的确认状态也为未确认。当该数据块被所述处理设备读取确认了,则该数据块对应的确认对象的确认状态将改变为已确认。
S105:所述处理设备根据所述确认队列中确认对象的确认状态对被读取确认的数据块执行持久化操作。
举例说明,位置信息可用于下次重新定位到该数据块,以便在读取中断后继续时,可以根据位置信息在所述被读取数据块队列中重新从该数据块开始进行顺序读取。
可选的,本发明实施例提供了一种具体的根据所述确认队列中确认对象的确认状态对被读取确认的数据块执行持久化操作的方式,具体包括:
所述处理设备对位于所述队列头的确认对象的确认状态进行识别,若所述确认状态为已确认,删除位于所述队列头的确认对象,根据所述排列顺序从所述确认队列中将被删除的确认对象的下一个确认对象置于所述队列头,再一次对位于所述队列头的确认对象的确认状态进行识别,直到位于所述队列头的确认对象的确认状态为未确认时,根据所述排列顺序,将位于所述队列头的确认对象前一个的、且已被删除的确认对象所关联的数据块的位置信息保存到持久化区域中,所述位置信息为对应的数据块在所述被读取数据块队列中的位置信息。
举例说明,处理设备不需要对所有已读取确认的数据块均执行持久化操作。处理设备在查询所述确认队列时,通过所述确认队列中各个确认对象的确认状态,当所述队列头中的确认对象的确认状态为已确认,则删除,将所述排列顺序中该被删除的确认对象的下一个确认对象置于所述队列头中,例如,如图2所示,数据块1、数据块3和数据块4被读取确认,确认对象1、确认对象3和确认对象4的确认状态会相应的改变为已确认,数据块2和数据块5还未被处理设备读取确认。那么处理设备在查询确认列表时,发现队列头中的确认对象1的确认状态为已确认,删除确认对象1,将确认对象2作为队列头继续判断,由于确认对象2的确认状态为未确认,处理设备将存储确认对象1所对应的数据块1的位置信息保存到持久化区域中。接下来,若数据块2也被处理设备读取确认了,确认对象2的确认状态会改变为已确认,处理设备将删除确认对象2,将确认对象3作为队列头继续判断,由于确认对象3和确认对象4的确认状态均为已确认,处理设备将删除确认对象3和确认对象4,将确认对象5作为队列头继续判断,确认对象5的确认状态为未确认,则保留确认对象5,并将确认对象4所对应的数据块4的位置信息保存到持久化区域中。相同的场景下,若使用传统的持久化方法,需要对数据块1、数据块2、数据块3和数据块4均执行持久化操作,也就是需要执行四次;而通过本发明实施例,只需要对数据块1和数据块4执行持久化操作,即只需要执行两次,而减少执行了两次持久化操作。可以有效降低了持久化服务的处理压力,至少可以使需要被持久化的数据块等待被持久化的时间变短。
由此可见,处理设备在读取数据块时,会生成与数据块具有一一关联关系的、用于记录数据块的确认状态的确认对象,并根据从被读取数据块队列中读取数据块的读取顺序建立包括N个确认对象的确认队列,处理设备根据所述确认队列中的确认对象的确认状态以及确认队列的排列顺序,将确认状态为未确认的、且较早被处理设备读取到的数据块的上一个已读取确认的数据块进行持久化操作,而不用对每一个已读取确认的数据块都进行持久化操作,在保证数据读取精度的情况下降低了持久化服务的处理压力。
实施例二
使用传统的方式对每一个已读取确认的数据库进行持久化操作,由于持久化的速度赶不上并行读取的读取确认速度,导致会有海量的已读取确认的数据库处于等待被持久化的状态中,也就是处于未被持久化的情况,若这时所述处理设备出现了读取数据库中断,那么当所述处理设备再一次继续开始从所述被读取数据块队列读取数据块时,所述处理设备需要重新读取这些海量的且之前已经被读取确认的数据块,由此造成系统资源的浪费,降低处理设备的处理效率。
在图1所对应实施例的基础上,图3为本发明实施例提供的一种读取中断后继续读取的方法示意图。若所述处理设备从被读取数据块队列中读取数据块的过程中出现读取中断,所述方法包括:
S301:所述处理设备从持久化区域中获取最新保存的数据块的位置信息。
举例说明,所述最新保存的数据块的位置信息可以理解为在读取中断之前,最后一个保存到持久化区域中的,或者保存到持久化区域中的时间距离读取中断时间最短的。
S302:所述处理设备根据所述最新保存的数据块的位置信息从所述被读取数据块队列中对应的位置开始继续读取数据块。
举例说明,例如,如图2所示,数据块1和数据块2已经被读取确认,数据块4和数据块5也已经被读取确认,数据块3尚未被读取确认,若此时处理设备的读取被中断了,那么在持久化区域中最新保存的数据块的位置信息应该是处理设备读取数据块3之前的数据块2的位置信息。
中断后,当处理设备准备继续从所述被读取数据块队列读取数据块时,通过S301获取到的数据块2的位置信息,根据数据块2的位置信息从从所述被读取数据块队列中数据块2对应的位置开始继续读取,这样,处理设备可以不用重复读取确认数据块1和数据块2,减少了处理设备中断后继续读取时可能会重复读取的数据块的数量。且能够保证未确认的数据块一定能再次读取到,不会发生丢失现象。
由上述实施例可以看出,在本发明实施例中,若处理设备在读取数据块的过程中出现读取中断的情况,所述处理设备在继续读取之前,从所述持久化区域中获取最近一次保存的数据块的位置信息,也就是在中断前最后被执行持久化操作的数据块,所述处理设备根据所述位置信息从所述被读取数据块队列中对应的位置开始继续读取数据块。由于所述排列顺序和所述读取顺序相同,若持久化区域中最新保存为数据块a的位置信息,数据块a与当前确认队列中位于队列头的确认对象b的前一个确认对象a具有对应关系。当处理速度合并在继续读取数据块时,将直接从数据块a开始读取,而不用重复读取在被读取数据块队列中读取顺序位于数据块a之前的数据块,因为通过这些数据块所对应的确认对象的确认状态,可以确定这些数据块已经均被读取确认了。由此减少了处理设备中断后继续读取时可能会重复读取的已读取确认的数据块的数量,提高了处理效率。
实施例三
图4为本发明实施例提供的一种数据处理装置的装置结构图,包括:
读取单元401,用于从被读取数据块队列中读取数据块。
举例说明,可选的,所述读取单元401使用并行读取的方式从被读取数据块队列中读取数据块。以便提高读取速度。
生成单元402,用于生成与所述数据块具有一一关联关系的确认对象,所述确认对象用于记录具有所述关联关系的数据块的确认状态。
举例说明,可选的,所述确认对象用于记录具有所述关联关系的数据块的确认状态,具体包括:
若与所述确认对象具有所述关联关系的数据块未被读取确认,所述确认对象的确认状态为未确认;
若与所述确认对象具有所述关联关系的数据块已被读取确认,所述确认对象的确认状态为已确认。
也就是说,所述确认对象的确认状态与所述确认对象对应的数据块的确认状态一致。
建立单元403,用于建立包括N个确认对象的确认队列,所述N个确认对象在所述确认队列中的排列顺序与读取顺序相同,所述读取顺序为与所述N个确认对象具有所述关联关系的N个数据块从所述被读取数据块队列中被读取出的顺序,所述确认队列中位于队列头的确认对象为所述N个确认对象中最先生成的数据对象。
举例说明,所述读取单元401从被读取数据块队列中每读取出一个数据块,所述生成单元402就会生成一个确认对象,数据块与确认对象是一一对应的。随着数据块读取,所述建立单元403将生成的确认对象依次组成确认队列,也就是说,所述读取单元401读取数据块的读取顺序和确认队列中确认对象的排列顺序是相同的。所述确认队列保存在缓存中。所述缓存例如可以为内存。
图2中,处理设备从被读取数据块队列中先读取出数据块1,由此生成对应的确认对象1,紧接着处理设备读取数据块2,并生成对应的确认对象2,以此类推,读取数据块N,生成对应的确认对象N。可以看出,处理设备读取数据块的读取先后顺序与所述确认队列中的对应的确认对象的排列顺序是一致的。图2数据块队列中的箭头方向为读取顺序,可以理解为最左边的数据块被读取的读取时间点相对最早,从左向右读取时间点依次变大,队列最右边的数据块为最新被处理设备读取的数据块。图2确认队列中的箭头方向为排列顺序,队列最左边的确认对象为相对最早加入所述确认队列的,从左到右加入队列的时间越晚,最右边的确认对象为最新加入所述确认队列的。也就是说,处理设备读取数据块1的读取顺序先于数据块2,所述确认队列中数据块1对应的确认对象1的排列顺序也先于数据块2对应的确认对象2。
修改单元404,用于若所述被读取数据块队列中的数据块被读取确认,将与被读取确认的数据块具有关联关系的确认对象的确认状态从未确认修改为已确认。
举例说明,确认对象的确认状态会随着对应的数据块的读取确认的状态改变而改变,所述读取单元401刚读取到一个数据块时,该数据块处于未读取确认状态,那么该数据块对应的确认对象的确认状态也为未确认。当该数据块被读取确认了,则该数据块对应的确认对象的确认状态将改变为已确认。
持久化单元405,用于根据所述确认队列中确认对象的确认状态对被读取确认的数据块执行持久化操作。
举例说明,位置信息可用于下次重新定位到该数据块,以便在读取中断后继续时,可以根据位置信息在所述被读取数据块队列中重新从该数据块开始进行顺序读取。
可选的,所述持久化单元405具体用于对位于所述队列头的确认对象的确认状态进行识别,若所述确认状态为已确认,删除位于所述队列头的确认对象,根据所述排列顺序从所述确认队列中将被删除的确认对象的下一个确认对象置于所述队列头,再一次对位于所述队列头的确认对象的确认状态进行识别,直到位于所述队列头的确认对象的确认状态为未确认时,根据所述排列顺序,将位于所述队列头的确认对象前一个的、且已被删除的确认对象所关联的数据块的位置信息保存到持久化区域中,所述位置信息为对应的数据块在所述被读取数据块队列中的位置信息。
举例说明,所述持久化单元405不需要对所有已读取确认的数据块均执行持久化操作。所述持久化单元405在查询所述确认队列时,通过所述确认队列中各个确认对象的确认状态,当所述队列头中的确认对象的确认状态为已确认,则删除,将所述排列顺序中该被删除的确认对象的下一个确认对象置于所述队列头中,例如,如图2所示,数据块1、数据块3和数据块4被读取确认,确认对象1、确认对象3和确认对象4的确认状态会相应的改变为已确认,数据块2和数据块5还未被处理设备读取确认。那么所述持久化单元405在查询确认列表时,发现队列头中的确认对象1的确认状态为已确认,删除确认对象1,将确认对象2作为队列头继续判断,由于确认对象2的确认状态为未确认,所述持久化单元405将存储确认对象1所对应的数据块1的位置信息保存到持久化区域中。接下来,若数据块2也被处理设备读取确认了,确认对象2的确认状态会改变为已确认,所述持久化单元405将删除确认对象2,将确认对象3作为队列头继续判断,由于确认对象3和确认对象4的确认状态均为已确认,所述持久化单元405将删除确认对象3和确认对象4,将确认对象5作为队列头继续判断,确认对象5的确认状态为未确认,则保留确认对象5,并将确认对象4所对应的数据块4的位置信息保存到持久化区域中。相同的场景下,若使用传统的持久化方法,需要对数据块1、数据块2、数据块3和数据块4均执行持久化操作,也就是需要执行四次;而通过本发明实施例,只需要对数据块1和数据块4执行持久化操作,即只需要执行两次,减少执行了两次持久化操作。可以有效降低了持久化服务的处理压力,至少可以使需要被持久化的数据块等待被持久化的时间变短。
由此可见,处理设备在读取数据块时,会生成与数据块具有一一关联关系的、用于记录数据块的确认状态的确认对象,并根据从被读取数据块队列中读取数据块的读取顺序建立包括N个确认对象的确认队列,处理设备根据所述确认队列中的确认对象的确认状态以及确认队列的排列顺序,将确认状态为未确认的、且较早被处理设备读取到的数据块的上一个已读取确认的数据块进行持久化操作,而不用对每一个已读取确认的数据块都进行持久化操作,在保证数据读取精度的情况下降低了持久化服务的处理压力。
实施例四
使用传统的方式对每一个已读取确认的数据库进行持久化操作,由于持久化的速度赶不上并行读取的读取确认速度,导致会有海量的已读取确认的数据库处于等待被持久化的状态中,也就是处于未被持久化的情况,若这时所述读取单元401出现了读取数据库中断,那么当所述读取单元401再一次继续开始从所述被读取数据块队列读取数据块时,所述读取单元401需要重新读取这些海量的且之前已经被读取确认的数据块,由此造成系统资源的浪费,降低处理设备的处理效率。
在图4所对应实施例的基础上,图5为本发明实施例提供的一种数据处理装置的装置结构图,若所述读取单元401从被读取数据块队列中读取数据块的过程中出现读取中断,还包括:
获取单元501,用于从持久化区域中获取最新保存的数据块的位置信息。
所述读取单元401还用于根据所述最新保存的数据块的位置信息从所述被读取数据块队列中对应的位置开始继续读取数据块。
举例说明,例如,如图2所示,数据块1和数据块2已经被读取确认,数据块4和数据块5也已经被读取确认,数据块3尚未被读取确认,若此时所述读取单元401的读取被中断了,那么在持久化区域中最新保存的数据块的位置信息应该是所述读取单元401读取数据块3之前的数据块2的位置信息。
中断后,当所述读取单元401准备继续从所述被读取数据块队列读取数据块时,通过所述获取单元501获取到的数据块2的位置信息,根据数据块2的位置信息从从所述被读取数据块队列中数据块2对应的位置开始继续读取,这样,所述读取单元401可以不用重复读取确认数据块1和数据块2,减少了处理设备中断后继续读取时可能会重复读取的数据块的数量。且能够保证未确认的数据块一定能再次读取到,不会发生丢失现象。
由上述实施例可以看出,在本发明实施例中,若处理设备在读取数据块的过程中出现读取中断的情况,所述处理设备在继续读取之前,从所述持久化区域中获取最近一次保存的数据块的位置信息,也就是在中断前最后被执行持久化操作的数据块,所述处理设备根据所述位置信息从所述被读取数据块队列中对应的位置开始继续读取数据块。由于所述排列顺序和所述读取顺序相同,若持久化区域中最新保存为数据块a的位置信息,数据块a与当前确认队列中位于队列头的确认对象b的前一个确认对象a具有对应关系。当处理速度合并在继续读取数据块时,将直接从数据块a开始读取,而不用重复读取在被读取数据块队列中读取顺序位于数据块a之前的数据块,因为通过这些数据块所对应的确认对象的确认状态,可以确定这些数据块已经均被读取确认了。由此减少了处理设备中断后继续读取时可能会重复读取的已读取确认的数据块的数量,提高了处理效率。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备)执行本发明各个实施例或者实施例的某些部分所述的方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本发明的优选实施方式,并非用于限定本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种数据处理方法,其特征在于,所述方法包括:
处理设备从被读取数据块队列中读取数据块;
所述处理设备生成与所述数据块具有一一关联关系的确认对象,所述确认对象用于记录具有所述关联关系的数据块的确认状态,若与所述确认对象具有所述关联关系的数据块未被读取确认,所述确认对象的确认状态为未确认;若与所述确认对象具有所述关联关系的数据块已被读取确认,所述确认对象的确认状态为已确认;
所述处理设备建立包括N个确认对象的确认队列,所述N个确认对象在所述确认队列中的排列顺序与读取顺序相同,所述读取顺序为与所述N个确认对象具有所述关联关系的N个数据块从所述被读取数据块队列中被读取出的顺序,所述确认队列中位于队列头的确认对象为所述N个确认对象中最先生成的数据对象;
若所述被读取数据块队列中的数据块被所述处理设备读取确认,所述处理设备将与被读取确认的数据块具有关联关系的确认对象的确认状态从未确认修改为已确认;
所述处理设备根据所述确认队列中确认对象的确认状态对被读取确认的数据块执行持久化操作。
2.根据权利要求1所述的方法,其特征在于,所述处理设备根据所述确认队列中确认对象的确认状态对被读取确认的数据块执行持久化操作,具体包括:
所述处理设备对位于所述队列头的确认对象的确认状态进行识别,若所述确认状态为已确认,删除位于所述队列头的确认对象,根据所述排列顺序从所述确认队列中将被删除的确认对象的下一个确认对象置于所述队列头,再一次对位于所述队列头的确认对象的确认状态进行识别,直到位于所述队列头的确认对象的确认状态为未确认时,根据所述排列顺序,将位于所述队列头的确认对象前一个的、且已被删除的确认对象所关联的数据块的位置信息保存到持久化区域中,所述位置信息为对应的数据块在所述被读取数据块队列中的位置信息。
3.根据权利要求1所述的方法,其特征在于,若所述处理设备从被读取数据块队列中读取数据块的过程中出现读取中断,还包括:
所述处理设备从持久化区域中获取最新保存的数据块的位置信息;
所述处理设备根据所述最新保存的数据块的位置信息从所述被读取数据块队列中对应的位置开始继续读取数据块。
4.根据权利要求1所述的方法,其特征在于,
所述处理设备使用并行读取的方式从被读取数据块队列中读取数据块。
5.根据权利要求1所述的方法,其特征在于,
所述确认队列保存在缓存中。
6.一种数据处理装置,其特征在于,包括:
读取单元,用于从被读取数据块队列中读取数据块;
生成单元,用于生成与所述数据块具有一一关联关系的确认对象,所述确认对象用于记录具有所述关联关系的数据块的确认状态,若与所述确认对象具有所述关联关系的数据块未被读取确认,所述确认对象的确认状态为未确认;若与所述确认对象具有所述关联关系的数据块已被读取确认,所述确认对象的确认状态为已确认;
建立单元,用于建立包括N个确认对象的确认队列,所述N个确认对象在所述确认队列中的排列顺序与读取顺序相同,所述读取顺序为与所述N个确认对象具有所述关联关系的N个数据块从所述被读取数据块队列中被读取出的顺序,所述确认队列中位于队列头的确认对象为所述N个确认对象中最先生成的数据对象;
修改单元,用于若所述被读取数据块队列中的数据块被读取确认,将与被读取确认的数据块具有关联关系的确认对象的确认状态从未确认修改为已确认;
持久化单元,用于根据所述确认队列中确认对象的确认状态对被读取确认的数据块执行持久化操作。
7.根据权利要求6所述的装置,其特征在于,
所述持久化单元,具体用于对位于所述队列头的确认对象的确认状态进行识别,若所述确认状态为已确认,删除位于所述队列头的确认对象,根据所述排列顺序从所述确认队列中将被删除的确认对象的下一个确认对象置于所述队列头,再一次对位于所述队列头的确认对象的确认状态进行识别,直到位于所述队列头的确认对象的确认状态为未确认时,根据所述排列顺序,将位于所述队列头的确认对象前一个的、且已被删除的确认对象所关联的数据块的位置信息保存到持久化区域中,所述位置信息为对应的数据块在所述被读取数据块队列中的位置信息。
8.根据权利要求6所述的装置,其特征在于,若所述读取单元从被读取数据块队列中读取数据块的过程中出现读取中断,还包括:
获取单元,用于从持久化区域中获取最新保存的数据块的位置信息;
所述读取单元还用于根据所述最新保存的数据块的位置信息从所述被读取数据块队列中对应的位置开始继续读取数据块。
9.根据权利要求6所述的装置,其特征在于,
所述读取单元使用并行读取的方式从被读取数据块队列中读取数据块。
10.根据权利要求6所述的装置,其特征在于,
所述确认队列保存在缓存中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510303238.6A CN106294477B (zh) | 2015-06-05 | 2015-06-05 | 一种数据处理方法和装置 |
PCT/CN2016/083890 WO2016192605A1 (zh) | 2015-06-05 | 2016-05-30 | 一种数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510303238.6A CN106294477B (zh) | 2015-06-05 | 2015-06-05 | 一种数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106294477A CN106294477A (zh) | 2017-01-04 |
CN106294477B true CN106294477B (zh) | 2019-10-01 |
Family
ID=57440116
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510303238.6A Active CN106294477B (zh) | 2015-06-05 | 2015-06-05 | 一种数据处理方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106294477B (zh) |
WO (1) | WO2016192605A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679276B (zh) * | 2017-08-31 | 2021-06-18 | 电力规划总院有限公司 | 电力系统潮流接线图的生成方法、装置及电子设备 |
CN109597832B (zh) * | 2018-10-25 | 2023-05-23 | 平安科技(深圳)有限公司 | 数据处理方法、计算设备、存储设备和存储介质 |
CN110457272B (zh) * | 2019-08-15 | 2022-02-01 | 中国银行股份有限公司 | 票据批量处理方法和装置 |
CN115098537B (zh) * | 2021-10-19 | 2023-03-10 | 腾讯科技(深圳)有限公司 | 事务执行方法、装置、计算设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541746A (zh) * | 2010-12-07 | 2012-07-04 | 深圳市金蝶中间件有限公司 | 一种队列的数据处理方法和系统 |
CN102567490A (zh) * | 2011-12-21 | 2012-07-11 | 华为技术有限公司 | 数据库内的描述信息的恢复和数据的缓存方法及设备 |
CN103678577A (zh) * | 2013-12-10 | 2014-03-26 | 新浪网技术(中国)有限公司 | 一种数据更新方法及装置 |
CN104520907A (zh) * | 2012-06-07 | 2015-04-15 | 环球城市电影有限责任公司 | 队列管理系统和方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10430298B2 (en) * | 2010-10-28 | 2019-10-01 | Microsoft Technology Licensing, Llc | Versatile in-memory database recovery using logical log records |
US10394757B2 (en) * | 2010-11-18 | 2019-08-27 | Microsoft Technology Licensing, Llc | Scalable chunk store for data deduplication |
US8909996B2 (en) * | 2011-08-12 | 2014-12-09 | Oracle International Corporation | Utilizing multiple storage devices to reduce write latency for database logging |
CN103870570B (zh) * | 2014-03-14 | 2018-04-27 | 上海艾讯云计算有限公司 | 一种基于远程日志备份的 HBase 数据可用性及持久性的方法 |
-
2015
- 2015-06-05 CN CN201510303238.6A patent/CN106294477B/zh active Active
-
2016
- 2016-05-30 WO PCT/CN2016/083890 patent/WO2016192605A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541746A (zh) * | 2010-12-07 | 2012-07-04 | 深圳市金蝶中间件有限公司 | 一种队列的数据处理方法和系统 |
CN102567490A (zh) * | 2011-12-21 | 2012-07-11 | 华为技术有限公司 | 数据库内的描述信息的恢复和数据的缓存方法及设备 |
CN104520907A (zh) * | 2012-06-07 | 2015-04-15 | 环球城市电影有限责任公司 | 队列管理系统和方法 |
CN103678577A (zh) * | 2013-12-10 | 2014-03-26 | 新浪网技术(中国)有限公司 | 一种数据更新方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106294477A (zh) | 2017-01-04 |
WO2016192605A1 (zh) | 2016-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106294477B (zh) | 一种数据处理方法和装置 | |
RU2523917C2 (ru) | Система управления связью и способ управления связью | |
US9385948B2 (en) | Packet processing method, device and system | |
CN102023974B (zh) | 一种通过消息队列处理消息的方法、装置和系统 | |
CN107197015A (zh) | 一种基于消息队列系统的消息处理方法和装置 | |
EP2840576A1 (en) | Hard disk and data processing method | |
CN104424186B (zh) | 一种流计算应用中实现持久化的方法及装置 | |
JP7046983B2 (ja) | パケット伝送方法及び装置 | |
CN105068875B (zh) | 一种智能数据处理方法及装置 | |
CN111343089A (zh) | 解决mac地址hash冲突导致洪泛问题的方法及系统 | |
CN103716139A (zh) | 一种信息推送处理方法和装置 | |
CN110445826B (zh) | 一种会话信息获取方法、装置及服务器 | |
US10171330B2 (en) | Integrating a communication bridge into a data processing system | |
WO2016107102A1 (zh) | 短信并发业务处理方法及装置 | |
CN111131024A (zh) | 聚合链路的处理方法及装置 | |
US9450706B2 (en) | Communication apparatus and packet transfer method | |
EP2774342B1 (en) | Reducing tcp timeouts due to incast collapse at a network switch | |
CN103414656B (zh) | 报文发送控制方法和网卡 | |
JP2011182211A (ja) | バッファ管理プログラム及び方法、並びにメッセージ分析装置 | |
EP3223478A1 (en) | Packet processing method and device, and storage medium | |
CN105095042B (zh) | 管理信息系统及其业务处理方法 | |
CN104660521B (zh) | 一种组播流量控制的方法和装置 | |
CN106557530A (zh) | 业务系统、数据修复方法及装置 | |
CN110365667A (zh) | 攻击报文防护方法、装置、电子设备 | |
CN101764705A (zh) | 一种基于日志信息处理的写磁盘方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |