CN108874994A - 一种分块读取数据的方法、装置及计算机存储介质 - Google Patents

一种分块读取数据的方法、装置及计算机存储介质 Download PDF

Info

Publication number
CN108874994A
CN108874994A CN201810603763.3A CN201810603763A CN108874994A CN 108874994 A CN108874994 A CN 108874994A CN 201810603763 A CN201810603763 A CN 201810603763A CN 108874994 A CN108874994 A CN 108874994A
Authority
CN
China
Prior art keywords
data
piecemeal
read
vernier
reads
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.)
Pending
Application number
CN201810603763.3A
Other languages
English (en)
Inventor
高其林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201810603763.3A priority Critical patent/CN108874994A/zh
Publication of CN108874994A publication Critical patent/CN108874994A/zh
Pending legal-status Critical Current

Links

Abstract

本发明公开一种分块读取数据的方法、装置及计算机存储介质,通过对较大数据量的目标数据进行分块读取,使得在对分块数据处理时,有效减轻处理压力,提升了处理效率。该方法包括:从目标数据中分块读取数据时,确定读取的起始位置以及确定读取的分块长度;确定所述目标数据的数据总长度;基于所述起始位置、所述分块长度以及所述数据总长度,从所述目标数据中游标式读取分块数据,确定游标读取结果,所述游标读取结果包括表示所述目标数据是否读取结束的标识信息。

Description

一种分块读取数据的方法、装置及计算机存储介质
技术领域
本发明涉及电子技术领域,尤其涉及一种分块读取数据的方法、装置及计算机存储介质。
背景技术
随着互联网技术的不断发展,互联网大数据的趋势日益显著,每一条互联网的业务线都在不断地产生新的数据。如今数据已取代计算成为信息计算的中心,云计算、大数据正在成为一种趋势和潮流。大数据是规模非常巨大和复杂的数据集。在大数据实际应用场景中,往往会出现一个查询出现大量结果,数据量较大,数据处理压力较大。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的分块读取数据的方法、装置及计算机存储介质。
第一方面,本申请提供一种分块读取数据的方法,包括:
从目标数据中分块读取数据时,确定读取的起始位置以及确定读取的分块长度;
确定所述目标数据的数据总长度;
基于所述起始位置、所述分块长度以及所述数据总长度,从所述目标数据中游标式读取分块数据,确定游标读取结果,所述游标读取结果包括表示所述目标数据是否读取结束的标识信息。
可选的,所述目标数据包括第1~M个数据,每个数据的长度为1,所述数据总长度为M,所述分块长度为N,所述起始位置为所述目标数据中第i个数据所在位置,所述基于所述起始位置、所述分块长度以及所述数据总长度,从所述目标数据中游标式读取分块数据,包括:
确定游标起始位为所述第i个数据所在位置;
如果i+N-1的值小于M,确定游标结束位为第i+N-1个数据所在位置,如果i+N-1的值大于或等于M,确定游标结束位为第M个数据所在位置;
从所述游标起始位开始读取数据直至读取到所述游标结束对应的数据。
可选的,所述确定游标读取结果,包括:
如果i+N-1的值小于M,确定标识信息为未结束标识,表示所述目标数据未读取结束;
如果i+N-1的值大于或等于M,确定标识信息为结束标识,表示所述目标数据读取结束;
确定所述游标读取结果包括所标识信息。
可选的,在所述确定游标起始位为所述起始位置之前,所述方法还包括:
如果所述目标数据为多维结构,将所述目标数据转换为一维结构。
可选的,在所述确定游标结束位为与所述起始位置对应的数据间的长度为所述分块长度的数据所在位置之后,所述方法还包括:
记录断点位置为所述游标结束位之后的下一位数据所在的位置,以使得在下一次分块读取数据时,读取的起始位置为所述断点位置。
可选的,所述确定读取的起始位置,包括:
如果读取对象首次分块读取所述目标数据,确定起始位置为所述目标数据的第一个数据所在位置;
如果读取对象不是首次分块读取所述目标数据,确定起始位置为上一次分块读取数据时记录的断点位置。
可选的,所述确定读取的分块长度,包括:
基于当前运行参数,确定读取的分块长度。
第二方面,本申请提供一种分块读取数据的装置,包括:
第一确定单元,用于从目标数据中分块读取数据时,确定读取的起始位置以及确定读取的分块长度;
第二确定单元,用于确定所述目标数据的数据总长度;
分块读取单元,用于基于所述起始位置、所述分块长度以及所述数据总长度,从所述目标数据中游标式读取分块数据,确定游标读取结果,所述游标读取结果包括表示所述目标数据是否读取结束的标识信息。
可选的,所述目标数据包括第1~M个数据,每个数据的长度为1,所述数据总长度为M,所述分块长度为N,所述起始位置为所述目标数据中第i个数据所在位置,所述分块读取单元具体用于:
确定游标起始位为所述第i个数据所在位置;
如果i+N-1的值小于M,确定游标结束位为第i+N-1个数据所在位置,如果i+N-1的值大于或等于M,确定游标结束位为第M个数据所在位置;
从所述游标起始位开始读取数据直至读取到所述游标结束对应的数据。
可选的,所述分块读取单元具体用于:
如果i+N-1的值小于M,确定标识信息为未结束标识,表示所述目标数据未读取结束;
如果i+N-1的值大于或等于M,确定标识信息为结束标识,表示所述目标数据读取结束;
确定所述游标读取结果包括所标识信息。
可选的,所述分块读取单元还用于:
在所述确定游标起始位为所述起始位置之前,如果所述目标数据为多维结构,将所述目标数据转换为一维结构。
可选的,所述分块读取单元还用于:
在所述确定游标结束位为与所述起始位置对应的数据间的长度为所述分块长度的数据所在位置之后,记录断点位置为所述游标结束位之后的下一位数据所在的位置,以使得在下一次分块读取数据时,读取的起始位置为所述断点位置。
可选的,所述第一确定单元具体用于:
如果读取对象首次分块读取所述目标数据,确定起始位置为所述目标数据的第一个数据所在位置;
如果读取对象不是首次分块读取所述目标数据,确定起始位置为上一次分块读取数据时记录的断点位置。
可选的,所述第一确定单元具体用于:
基于当前运行参数,确定读取的分块长度。
第三方面,本申请提供一种分块读取数据的装置,包括处理器和存储器:所述存储器用于存储执行前述第一方面分块读取数据的方法的程序;所述处理器被配置为用于执行所述存储器中存储的程序。
第四方面,本申请提供一种计算机存储介质,用于储存为上述分块读取数据的装置所用的计算机软件指令,其包含用于执行上述方面为分块读取数据的装置所设计的程序。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
在本发明实施例的技术方案中,通过提供一种分块读取数据的方法,在从目标数据中分块读取数据时,确定读取的起始位置以及确定读取的分块长度,确定目标数据的数据总长度;基于起始位置、分块长度以及数据总长度,从目标数据中游标式读取分块数据。读取对象对较大数据量的目标数据进行分块读取,使得在对分块数据处理时,处理压力更小,避免因数据量过大造成系统崩溃,提升了处理效率。进一步,在读取分块数据时,还会确定游标读取结果,该游标读取结果包括表示目标数据是否读取结束的标识信息,读取对象可根据该标识信息快速确认目标数据是否读取结束,如果目标数据读取结束,即刻停止数据读取,如果目标数据读取未结束,可再次读取剩余的数据。确保分块数据读取时,读取数据的及时性与连贯性。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明第一实施例中的分块读取数据的方法的流程图;
图2为本发明第二实施例中的分块读取数据的装置的示意图;
图3为本发明第三实施例中的分块读取数据的装置的示意图。
具体实施方式
本实施例公开一种分块读取数据的方法、装置及计算机存储介质。读取对象通过对较大数据量的目标数据进行分块读取,使得在对分块数据处理时,有效减轻处理压力,提升了处理效率。该方法包括:从目标数据中分块读取数据时,确定读取的起始位置以及确定读取的分块长度;确定所述目标数据的数据总长度;基于所述起始位置、所述分块长度以及所述数据总长度,从所述目标数据中游标式读取分块数据,确定游标读取结果,所述游标读取结果包括表示所述目标数据是否读取结束的标识信息。
下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
实施例
本发明第一实施例提供一种分块读取数据的方法,该方法的流程图如图1所示,该分块读取数据的方法包括如下步骤:
S101:从目标数据中分块读取数据时,确定读取的起始位置以及确定读取的分块长度;
S102:确定所述目标数据的数据总长度;
S103:基于所述起始位置、所述分块长度以及所述数据总长度,从所述目标数据中游标式读取分块数据,确定游标读取结果,所述游标读取结果包括表示所述目标数据是否读取结束的标识信息。
具体的,在本实施例中,分块读取数据的方法可以应用于许多大数据处理的场景中,比如:云查杀数据分析、云搜索、网盾日志分析等场景。举例来说,以网盾日志分析的场景为例,在该场景下,分析人员设置搜索条件,云端保存了全网用户对应的大量的日志数据,搜索引擎通过该搜索条件搜索到符合条件的日志数量巨大,而单条日志的大小也不能够确定,在分析员通过读取对象进行日志提取时,在某些日志比较大的数据集中时,会造成处理压力过大,读取的数据量多时,甚至造成处理进程崩溃。
进而,针对上述问题,本实施例中的分块读取数据的方法,可以对目标数据进行分块读取。具体的,首先通过步骤S101,确定读取的起始位置以及确定读取的分块长度。在本实施例中,确定读取的起始位置分为以下两种情况:
第一种:如果读取对象首次分块读取所述目标数据,确定起始位置为所述目标数据的第一个数据所在位置。
具体的,在本实施例中,在分块读取目标数据时,由于目标数据的数据量较大,读取对象分多次分块读取该目标数据。目标数据存储在第一存储空间,目标数据中的各数据的存储地址均会反馈至读取对象。读取对象首次分块读取目标数据,确定起始位置为目标数据的第一个数据所在位置,读取对象从该目标数据的第一个数据所在位置开始读取分块数据。
第二种:如果读取对象不是首次分块读取所述目标数据,确定起始位置为上一次分块读取数据时记录的断点位置。
具体的,在本实施例中,在分块读取目标数据时,由于目标数据的数据量较大,读取对象分多次分块读取该目标数据。如果读取对象不是首次分块读取目标数据,确定起始位置为上一次分块读取数据时记录的断点位置。读取对象每次在进行分块读取时,如果还未读到目标数据的最后一个数据,此时,可记录断点位置。所以,在当前次分块读取目标数据的起始位置为上一次分块读取数据时记录的断点位置。读取对象从断点位置开始读取分块数据。
举例来说,目标数据包括20个数据,读取对象上一次分块读取第1个~第10个数据后,由于还未读到目标数据的最后一个数据,记录断点位置为第11个数据所在的位置,读取对象在当前次分块读取目标数据时,可从该断点位置,即第11个数据所在的位置开始读取数据。
进一步,在本实施例中,还需要通过步骤S101确定读取的分块长度,分块长度是用于指示读取对象当前次从目标数据中读取多少个数据。分块长度的配置方式可采用静态配置或动态配置的方式。
具体的,在采用静态配置的方式时,分块长度可以是预先设置的默认值,每次分块读取目标数据时读取的分块长度均一致,即为该默认值。该默认值可结合读取对象的处理能力进行设置,比如:处理器的处理速度、空闲内存等参数。在具体实施过程中,默认值可根据实际需要进行设定,在此,本申请不做限制。
具体的,在采用动态配置的方式时,基于当前运行参数,确定读取的分块长度。
具体的,在本实施例中,可以在每次分块读取目标数据时,均可根据当前运行参数,动态配置该分块长度。如果读取对象读取分块数据后,该读取对象及时处理该分块数据,则根据读取对象的当前运行参数动态配置该分块长度。如果读取对象分块读取数据后,将读取到的分块数据发送至处理对象进行处理,则根据该处理对象的当前运行参数动态配置该分块长度。预先设置有不同空闲内存与分块长度的对应关系,空闲内存越大,表明当前处理能力越强,对应的分块长度可配置越大,表明有能力处理较大数据量的分块数据。动态配置的方式能更好地适配处理该分块数据的对象的处理能力,使得处理能力得到充分利用,数据处理的效率更高。
在具体实施过程中,分块长度的配置方式以及具体数值均可根据实际需要进行设定,在此,本申请不做限制。
进一步,在具体实施过程中,确定起始位置与确定分块长度之前并没有执行的先后顺序,可以任意顺序执行,在此,本申请不做限制。
进一步,还需通过步骤S102确定目标数据的数据总长度。结合到云搜索场景,在通过搜索关键词匹配到较大数据量的搜索结果情况下,会将包含的总的搜索结果个数反馈,则目标数据的数据总长度即为该搜索结果的总数。比如|:目标数据包括M个搜索结果,每个搜索结果占用一位数据长度,则目标数据的数据长度即为M。同理,分块长度是用于指示从目标数据中读取多少位数据的指定值,沿用前述示例,当目标数据长度为M,包括M个搜索结果,如果分块长度为N,表示需要从M个搜索结果中读取N个搜索结果。在具体实施过程中,步骤S101与步骤S102之前并没有执行的先后顺序,可以任意顺序执行,在此,本申请不做限制。
进而,在确定好目标数据的数据总长度、读取的起始位置与分块长度后,所述目标数据包括第1~M个数据,每个数据的长度为1,所述数据总长度为M,所述分块长度为N,所述起始位置为所述目标数据中第i个数据所在位置,所述基于所述起始位置、所述分块长度以及所述数据总长度,从所述目标数据中游标式读取分块数据,通过步骤S103,从目标数据中游标式读取分块数据,可通过如下步骤实现:
确定游标起始位为所述第i个数据所在位置;
如果i+N-1的值小于M,确定游标结束位为第i+N-1个数据所在位置,如果i+N-1的值大于或等于M,确定游标结束位为第M个数据所在位置;
从所述游标起始位开始读取数据直至读取到所述游标结束对应的数据。
具体的,在本实施例中,读取对象游标式读取分块数据。在目标数据为一维结构时,首先确定游标起始位为通过步骤S101确定的起始位置。然后确定游标结束位,在确定游标结束位时,需要判断读取的分块数据是否超出该目标数据。具体的,如果i+N-1的值小于M,表明还未读到目标数据最后一个数据,确定游标结束位为第i+N-1个数据所在位置。比如:目标数据包括第1~10个数据,目标数据的数据总长度为10,起始位置为第5个数据所在位置,分块长度为3,5+3-1=7,小于10,表明此次分块读取还未读取到目标数据的最后一个数据,所以,游标结束位为第7个数据所在位置。
进一步,还需记录断点位置为所述游标结束位之后的下一位数据所在的位置,以使得在下一次分块读取数据时,读取的起始位置为所述断点位置。沿用上述示例,记录断点位置为第8个数据所在的位置。以使得在下一次分块读取数据时,从第8个数据所在的位置开始读取,确保读取数据的连贯性。
具体的,如果i+N-1的值大于或等于M,表明读到目标数据最后一个数据或超出目标数据,确定游标结束位为目标数据的最后一个数据所在的位置,即第M个数据所在的位置。比如:目标数据包括第1~10个数据,目标数据的数据总长度为10,起始位置为第5个数据所在位置,分块长度为6,5+6-1=10,与目标数据长度一致,表明此次分块读取刚好读取到目标数据的最后一个数据,所以,游标结束位为第10个数据所在位置。
又如:目标数据包括第1~10个数据,目标数据的数据总长度为10,起始位置为第5个数据所在位置,分块长度为8,5+8-1=12,大于10,表明此次分块读取超出目标数据的长度,所以,游标结束位为第10个数据所在位置。
进而,在确定好游标起始位和游标结束位后,即可从游标起始位开始读取数据直至读取到游标结束对应的数据。这样,就可以读取到分块数据。
具体的,在本实施例中,如果游标起始点与游标结束点均为第j个数据所在位置,表明此次读取的是第j个数据。
进一步,在本实施例中,还需要确定游标读取结果,主要是确定该游标读取结果中表示目标数据是否读取结束的标识信息。确定标识信息可通过如下步骤实现:
如果i+N-1的值小于M,确定标识信息为未结束标识,表示所述目标数据未读取结束;
如果i+N-1的值大于或等于M,确定标识信息为结束标识,表示所述目标数据读取结束;
确定所述游标读取结果包括所标识信息。
具体的,在本实施例中,如果i+N-1的值小于M,表明还未读到目标数据最后一个数据,确定标识信息为未结束标识,表示所述目标数据未读取结束。比如:目标数据包括第1~10个数据,目标数据的数据总长度为10,起始位置为第5个数据所在位置,分块长度为3,5+3-1=7,小于10,表明此次分块读取还未读取到目标数据的最后一个数据,确定标识信息为未结束标识,表示所述目标数据未读取结束。
具体的,如果i+N-1的值大于或等于M,表明读到目标数据最后一个数据或超出目标数据,确定标识信息为结束标识,表示所述目标数据读取结束。比如:目标数据包括第1~10个数据,目标数据的数据总长度为10,起始位置为第5个数据所在位置,分块长度为6,5+6-1=10,与目标数据长度一致,表明此次分块读取刚好读取到目标数据的最后一个数据,所以,确定标识信息为结束标识,表示所述目标数据读取结束。
又如:目标数据包括第1~10个数据,目标数据的数据总长度为10,起始位置为第5个数据所在位置,分块长度为8,5+8-1=12,大于10,表明此次分块读取超出目标数据的长度,所以,确定标识信息为结束标识,表示所述目标数据读取结束。
在具体实施过程中,游标结果中包括该标识信息,还可包括游标开始位、游标结束位等信息。
在本实施例中,还可以通过得到的目标数据的长度,确定是否采用分块读取方式读取该目标数据。具体的,如果目标数据的数据总长度大于预设长度,表明目标数据的数据量较大,占用较多存储空间,确定执行步骤S101,采用本实施例中的分块读取方式读取目标数据。如果目标数据的数据总长度小于或等于预设长度,表明目标数据的数据量较小,可直接全部读取。在具体实施过程中,预设长度可根据处理能力的相关参数进行设定,可采用静态配置或动态配置的方式,在此,本申请不做限制。
下面以目标数据为一个一维数组为例,对分块读取该数组的数据进行详细介绍。
目标数据为array={a1,a2,a3,a4,a5,a6,a7,a8,a9,a10},长度为10。根据起始位置、分块长度以及该目标数据的长度,读取分块数据,确定游标读取结果的示例如下:
若起始位置为第1个数据所在位置,分块长度为5,游标结果为:游标起始位为第1个数据所在位置,游标结束位为第5个数据所在位置,标识信息为未结束标识,实际读取的分块数据包括:a1,a2,a3,a4,a5。
若起始位置为第7个数据所在位置,分块长度为3,游标结果为:游标起始位为第7个数据所在位置,游标结束位为第9个数据所在位置,标识信息为未结束标识,实际读取的分块数据包括:a7,a8,a9。
若起始位置为第6个数据所在位置,分块长度为5,游标结果为:游标起始位为第6个数据所在位置,游标结束位为第9个数据所在位置,标识信息为未结束标识,实际读取的分块数据包括:a6,a7,a8,a9,a10。
若起始位置为第10个数据所在位置,分块长度为1,游标结果为:游标起始位为第10个数据所在位置,游标结束位为第10个数据所在位置,标识信息为结束标识,实际读取的分块数据包括:a10。
若起始位置为第10个数据所在位置,分块长度为3,超过最大长度,游标结果为:游标起始位为第10个数据所在位置,游标结束位为第10个数据所在位置,标识信息为结束标识,实际读取的分块数据包括:a10。
进一步,在本实施例中,如果所述目标数据为多维结构,还需将所述目标数据转换为一维结构。然后对该一维结构的目标数据进行分块读取,分块读取方式在前述实施例中详细介绍,下面以对一个二维结构的目标数据进行分块读取为例进行详细介绍。
目标数据为一个二维数组,该二维数组如下所示:
Array1={
0:{"1a","1b","1c"},//长度3
1:{"2a","2b","2c","2d","2e","2f","2g"},//长度7
2:{"3a","3b","3c","3d","3e","3f","3g","3h","3i"},//长度9
3:{"4a","4b","4c","4d","4e","4f","4g","4h","4i","4j","4k"},//长度11
}
将上述二维数组转换为一维数组,转换后的一维数组如下所示:
Array2={1a,1b,1c,2a,2b,2c,2d,2e,2f,2g,3a,3b,3c,3d,3e,3f,3g,3h,3i,4a,4b,4c,
4d,4e,4f,4g,4h,4i,4j,4k}
转换后的一维数组的总长度为3+7+9+11=30。
若起始位置为第1个数据所在位置,分块长度为4,游标结果为:游标起始位为第1个数据所在位置,游标结束位为第4个数据所在位置,标识信息为未结束标识,实际读取的分块数据包括:1a,1b,1c,2a。
若起始位置为第5个数据所在位置,分块长度为4,游标结果为:游标起始位为第5个数据所在位置,游标结束位为第8个数据所在位置,标识信息为未结束标识,实际读取的分块数据包括:2b,2c,2d,2e。
若起始位置为第6个数据所在位置,分块长度为4,游标结果为:游标起始位为第6个数据所在位置,游标结束位为第9个数据所在位置,标识信息为未结束标识,实际读取的分块数据包括:2c,2d,2e,2f。
若起始位置为第1个数据所在位置,分块长度为11,游标结果为:游标起始位为第1个数据所在位置,游标结束位为第11个数据所在位置,标识信息为未结束标识,实际读取的分块数据包括:1a,1b,1c,2a,2b,2c,2d,2e,2f,2g,3a。
若起始位置为第1个数据所在位置,分块长度为1000,游标结果为:游标起始位为第1个数据所在位置,游标结束位为第30个数据所在位置,标识信息为结束标识,实际读取的分块数据包括:1a,1b,1c,2a,2b,2c,2d,2e,2f,2g,3a,3b,3c,3d,3e,3f,3g,3h,3i,4a,4b,4c,4d,4e,4f,4g,4h,4i,4j,4k。
本实施例中的分块读取数据的方法,读取对象对较大数据量的目标数据进行分块读取,使得在对分块数据处理时,处理压力更小,避免因数据量过大造成系统崩溃,提升了处理效率。进一步,在读取分块数据时,还会确定游标读取结果,该游标读取结果包括表示目标数据是否读取结束的标识信息,读取对象可根据该标识信息快速确认目标数据是否读取结束,如果目标数据读取结束,即刻停止数据读取,如果目标数据读取未结束,可再次读取剩余的数据。确保分块数据读取时,读取数据的及时性与连贯性。
请参照图2,本发明第二实施例还提供了分块读取数据的装置,所述装置包括:
第一确定单元201,用于从目标数据中分块读取数据时,确定读取的起始位置以及确定读取的分块长度;
第二确定单元202,用于确定所述目标数据的数据总长度;
分块读取单元203,用于基于所述起始位置、所述分块长度以及所述数据总长度,从所述目标数据中游标式读取分块数据,确定游标读取结果,所述游标读取结果包括表示所述目标数据是否读取结束的标识信息。
作为一种可选的实施例,所述目标数据包括第1~M个数据,每个数据的长度为1,所述数据总长度为M,所述分块长度为N,所述起始位置为所述目标数据中第i个数据所在位置,所述分块读取单元具体用于:
确定游标起始位为所述第i个数据所在位置;
如果i+N-1的值小于M,确定游标结束位为第i+N-1个数据所在位置,如果i+N-1的值大于或等于M,确定游标结束位为第M个数据所在位置;
从所述游标起始位开始读取数据直至读取到所述游标结束对应的数据。
作为一种可选的实施例,所述分块读取单元具体用于:
如果i+N-1的值小于M,确定标识信息为未结束标识,表示所述目标数据未读取结束;
如果i+N-1的值大于或等于M,确定标识信息为结束标识,表示所述目标数据读取结束;
确定所述游标读取结果包括所标识信息。
作为一种可选的实施例,所述分块读取单元还用于:
在所述确定游标起始位为所述起始位置之前,如果所述目标数据为多维结构,将所述目标数据转换为一维结构。
作为一种可选的实施例,所述分块读取单元还用于:
在所述确定游标结束位为与所述起始位置对应的数据间的长度为所述分块长度的数据所在位置之后,记录断点位置为所述游标结束位之后的下一位数据所在的位置,以使得在下一次分块读取数据时,读取的起始位置为所述断点位置。
作为一种可选的实施例,所述第一确定单元具体用于:
如果读取对象首次分块读取所述目标数据,确定起始位置为所述目标数据的第一个数据所在位置;
如果读取对象不是首次分块读取所述目标数据,确定起始位置为上一次分块读取数据时记录的断点位置。
作为一种可选的实施例,所述第一确定单元具体用于:
基于当前运行参数,确定读取的分块长度。
本实施例中分块读取数据的装置对目标数据进行分块读取的过程已经在前述第一实施例中的分块读取数据的方法中详细介绍,具体过程可参照第一实施例,在此,本申请不做赘述。
本发明第三实施例还提供了一种分块读取数据的装置,请参照图3,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明第一实施例中的方法部分。
图3示出的是与本发明实施例提供的分块读取数据的装置的部分结构的示意图。该分块读取数据的装置包括存储器301,所述存储器301用于存储执行前述第一实施例中的记账权确认方法的程序。该分块读取数据的装置还包括处理器302,与所述存储器301连接,所述处理器302被配置为用于执行所述存储器301中存储的程序。
所述处理器302执行所述计算机程序时实现上述第一实施例中记账权确认方法中的步骤。或者,所述处理器执行所述计算机程序时实现上述第二实施例的分块读取数据的装置中各模块/单元的功能。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述计算机装置中的执行过程。例如,所述计算机程序可以被分割成第一确定单元、第二确定单元、分块读取单元的功能,各单元具体功能如下:
第一确定单元,用于从目标数据中分块读取数据时,确定读取的起始位置以及确定读取的分块长度;
第二确定单元,用于确定所述目标数据的数据总长度;
分块读取单元,用于基于所述起始位置、所述分块长度以及所述数据总长度,从所述目标数据中游标式读取分块数据,确定游标读取结果,所述游标读取结果包括表示所述目标数据是否读取结束的标识信息。
所述分块读取数据的装置可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图3仅仅是分块读取数据的装置的功能部件的示例图,并不构成对分块读取数据的装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述分块读取数据的装置还可以包括输入输出设备、网络接入设备、总线等。
所称处理器302可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
所述存储器301可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据分块读取数据的装置的使用所创建的数据(比如音频数据、视频数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
在本发明实施例中,处理器302从目标数据中分块读取数据时,确定读取的起始位置以及确定读取的分块长度;确定所述目标数据的数据总长度;基于所述起始位置、所述分块长度以及所述数据总长度,从所述目标数据中游标式读取分块数据,确定游标读取结果,所述游标读取结果包括表示所述目标数据是否读取结束的标识信息。
在本发明实施例中,所述目标数据包括第1~M个数据,每个数据的长度为1,所述数据总长度为M,所述分块长度为N,所述起始位置为所述目标数据中第i个数据所在位置,该处理器302还具有以下功能:
确定游标起始位为所述第i个数据所在位置;
如果i+N-1的值小于M,确定游标结束位为第i+N-1个数据所在位置,如果i+N-1的值大于或等于M,确定游标结束位为第M个数据所在位置;
从所述游标起始位开始读取数据直至读取到所述游标结束对应的数据。
在本发明实施例中,该处理器302还具有以下功能:
如果i+N-1的值小于M,确定标识信息为未结束标识,表示所述目标数据未读取结束;
如果i+N-1的值大于或等于M,确定标识信息为结束标识,表示所述目标数据读取结束;
确定所述游标读取结果包括所标识信息。
在本发明实施例中,该处理器302还具有以下功能:
在所述确定游标起始位为所述起始位置之前,如果所述目标数据为多维结构,将所述目标数据转换为一维结构。
在本发明实施例中,该处理器302还具有以下功能:
在所述确定游标结束位为与所述起始位置对应的数据间的长度为所述分块长度的数据所在位置之后,记录断点位置为所述游标结束位之后的下一位数据所在的位置,以使得在下一次分块读取数据时,读取的起始位置为所述断点位置。
在本发明实施例中,该处理器302还具有以下功能:
如果读取对象首次分块读取所述目标数据,确定起始位置为所述目标数据的第一个数据所在位置;
如果读取对象不是首次分块读取所述目标数据,确定起始位置为上一次分块读取数据时记录的断点位置。
在本发明实施例中,该处理器302还具有以下功能:
基于当前运行参数,确定读取的分块长度。
本发明第四实施例提供了一种计算机可读存储介质,其上存储有计算机程序,本发明第二实施例中的所述分块读取数据的装置集成的功能单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述第一实施例的记账权确认方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
本发明还公开A1、一种分块读取数据的方法,包括:
从目标数据中分块读取数据时,确定读取的起始位置以及确定读取的分块长度;
确定所述目标数据的数据总长度;
基于所述起始位置、所述分块长度以及所述数据总长度,从所述目标数据中游标式读取分块数据,确定游标读取结果,所述游标读取结果包括表示所述目标数据是否读取结束的标识信息。
A2、如A1所述的方法,所述目标数据包括第1~M个数据,每个数据的长度为1,所述数据总长度为M,所述分块长度为N,所述起始位置为所述目标数据中第i个数据所在位置,所述基于所述起始位置、所述分块长度以及所述数据总长度,从所述目标数据中游标式读取分块数据,包括:
确定游标起始位为所述第i个数据所在位置;
如果i+N-1的值小于M,确定游标结束位为第i+N-1个数据所在位置,如果i+N-1的值大于或等于M,确定游标结束位为第M个数据所在位置;
从所述游标起始位开始读取数据直至读取到所述游标结束对应的数据。
A3、如A2所述的方法,所述确定游标读取结果,包括:
如果i+N-1的值小于M,确定标识信息为未结束标识,表示所述目标数据未读取结束;
如果i+N-1的值大于或等于M,确定标识信息为结束标识,表示所述目标数据读取结束;
确定所述游标读取结果包括所标识信息。
A4、如A2所述的方法,在所述确定游标起始位为所述起始位置之前,所述方法还包括:
如果所述目标数据为多维结构,将所述目标数据转换为一维结构。
A5、如A2所述的方法,在所述确定游标结束位为与所述起始位置对应的数据间的长度为所述分块长度的数据所在位置之后,所述方法还包括:
记录断点位置为所述游标结束位之后的下一位数据所在的位置,以使得在下一次分块读取数据时,读取的起始位置为所述断点位置。
A6、如A1-A5中任一项所述的方法,所述确定读取的起始位置,包括:
如果读取对象首次分块读取所述目标数据,确定起始位置为所述目标数据的第一个数据所在位置;
如果读取对象不是首次分块读取所述目标数据,确定起始位置为上一次分块读取数据时记录的断点位置。
A7、如A1-A5中任一项所述的方法,所述确定读取的分块长度,包括:
基于当前运行参数,确定读取的分块长度。
B8、一种分块读取数据的装置,包括:
第一确定单元,用于从目标数据中分块读取数据时,确定读取的起始位置以及确定读取的分块长度;
第二确定单元,用于确定所述目标数据的数据总长度;
分块读取单元,用于基于所述起始位置、所述分块长度以及所述数据总长度,从所述目标数据中游标式读取分块数据,确定游标读取结果,所述游标读取结果包括表示所述目标数据是否读取结束的标识信息。
B9、如B8所述的装置,所述目标数据包括第1~M个数据,每个数据的长度为1,所述数据总长度为M,所述分块长度为N,所述起始位置为所述目标数据中第i个数据所在位置,所述分块读取单元具体用于:
确定游标起始位为所述第i个数据所在位置;
如果i+N-1的值小于M,确定游标结束位为第i+N-1个数据所在位置,如果i+N-1的值大于或等于M,确定游标结束位为第M个数据所在位置;
从所述游标起始位开始读取数据直至读取到所述游标结束对应的数据。
B10、如B9所述的装置,所述分块读取单元具体用于:
如果i+N-1的值小于M,确定标识信息为未结束标识,表示所述目标数据未读取结束;
如果i+N-1的值大于或等于M,确定标识信息为结束标识,表示所述目标数据读取结束;
确定所述游标读取结果包括所标识信息。
B11、如B9所述的装置,所述分块读取单元还用于:
在所述确定游标起始位为所述起始位置之前,如果所述目标数据为多维结构,将所述目标数据转换为一维结构。
B12、如B9所述的装置,所述分块读取单元还用于:
在所述确定游标结束位为与所述起始位置对应的数据间的长度为所述分块长度的数据所在位置之后,记录断点位置为所述游标结束位之后的下一位数据所在的位置,以使得在下一次分块读取数据时,读取的起始位置为所述断点位置。
B13、如B8-B12中任一所述的装置,所述第一确定单元具体用于:
如果读取对象首次分块读取所述目标数据,确定起始位置为所述目标数据的第一个数据所在位置;
如果读取对象不是首次分块读取所述目标数据,确定起始位置为上一次分块读取数据时记录的断点位置。
B14、如B8-B12中任一所述的装置,所述第一确定单元具体用于:
基于当前运行参数,确定读取的分块长度。
C15、一种分块读取数据的装置,包括处理器和存储器:
所述存储器用于存储执行A1至A7中任一项所述方法的程序;
所述处理器被配置为用于执行所述存储器中存储的程序。
D16、一种计算机存储介质,用于储存为上述A1至A7中任一项所述分块读取数据的方法所用的计算机软件指令,其包含用于执行上述方面为分块读取数据的方法所设计的程序。

Claims (10)

1.一种分块读取数据的方法,其特征在于,包括:
从目标数据中分块读取数据时,确定读取的起始位置以及确定读取的分块长度;
确定所述目标数据的数据总长度;
基于所述起始位置、所述分块长度以及所述数据总长度,从所述目标数据中游标式读取分块数据,确定游标读取结果,所述游标读取结果包括表示所述目标数据是否读取结束的标识信息。
2.如权利要求1所述的方法,其特征在于,所述目标数据包括第1~M个数据,每个数据的长度为1,所述数据总长度为M,所述分块长度为N,所述起始位置为所述目标数据中第i个数据所在位置,所述基于所述起始位置、所述分块长度以及所述数据总长度,从所述目标数据中游标式读取分块数据,包括:
确定游标起始位为所述第i个数据所在位置;
如果i+N-1的值小于M,确定游标结束位为第i+N-1个数据所在位置,如果i+N-1的值大于或等于M,确定游标结束位为第M个数据所在位置;
从所述游标起始位开始读取数据直至读取到所述游标结束对应的数据。
3.如权利要求2所述的方法,其特征在于,所述确定游标读取结果,包括:
如果i+N-1的值小于M,确定标识信息为未结束标识,表示所述目标数据未读取结束;
如果i+N-1的值大于或等于M,确定标识信息为结束标识,表示所述目标数据读取结束;
确定所述游标读取结果包括所标识信息。
4.如权利要求2所述的方法,其特征在于,在所述确定游标起始位为所述起始位置之前,所述方法还包括:
如果所述目标数据为多维结构,将所述目标数据转换为一维结构。
5.如权利要求2所述的方法,其特征在于,在所述确定游标结束位为与所述起始位置对应的数据间的长度为所述分块长度的数据所在位置之后,所述方法还包括:
记录断点位置为所述游标结束位之后的下一位数据所在的位置,以使得在下一次分块读取数据时,读取的起始位置为所述断点位置。
6.如权利要求1-5中任一权利要求所述的方法,其特征在于,所述确定读取的起始位置,包括:
如果读取对象首次分块读取所述目标数据,确定起始位置为所述目标数据的第一个数据所在位置;
如果读取对象不是首次分块读取所述目标数据,确定起始位置为上一次分块读取数据时记录的断点位置。
7.如权利要求1-5中任一权利要求所述的方法,其特征在于,所述确定读取的分块长度,包括:
基于当前运行参数,确定读取的分块长度。
8.一种分块读取数据的装置,其特征在于,包括:
第一确定单元,用于从目标数据中分块读取数据时,确定读取的起始位置以及确定读取的分块长度;
第二确定单元,用于确定所述目标数据的数据总长度;
分块读取单元,用于基于所述起始位置、所述分块长度以及所述数据总长度,从所述目标数据中游标式读取分块数据,确定游标读取结果,所述游标读取结果包括表示所述目标数据是否读取结束的标识信息。
9.一种分块读取数据的装置,其特征在于,包括处理器和存储器:
所述存储器用于存储执行权利要求1至7中任一项所述方法的程序;
所述处理器被配置为用于执行所述存储器中存储的程序。
10.一种计算机存储介质,其特征在于,用于储存为上述权利要求1至7中任一项所述分块读取数据的方法所用的计算机软件指令,其包含用于执行上述方面为分块读取数据的方法所设计的程序。
CN201810603763.3A 2018-06-12 2018-06-12 一种分块读取数据的方法、装置及计算机存储介质 Pending CN108874994A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810603763.3A CN108874994A (zh) 2018-06-12 2018-06-12 一种分块读取数据的方法、装置及计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810603763.3A CN108874994A (zh) 2018-06-12 2018-06-12 一种分块读取数据的方法、装置及计算机存储介质

Publications (1)

Publication Number Publication Date
CN108874994A true CN108874994A (zh) 2018-11-23

Family

ID=64338641

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810603763.3A Pending CN108874994A (zh) 2018-06-12 2018-06-12 一种分块读取数据的方法、装置及计算机存储介质

Country Status (1)

Country Link
CN (1) CN108874994A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110555072A (zh) * 2019-09-10 2019-12-10 中国建设银行股份有限公司 数据访问方法、装置、设备和介质
CN111666294A (zh) * 2019-03-05 2020-09-15 深圳市天软科技开发有限公司 获取数据集的方法、终端设备及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8843711B1 (en) * 2011-12-28 2014-09-23 Netapp, Inc. Partial write without read-modify
CN104123280A (zh) * 2013-04-24 2014-10-29 中国银联股份有限公司 文件比对方法和设备
CN107045530A (zh) * 2017-01-20 2017-08-15 华中科技大学 一种将对象存储系统实现为本地文件系统的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8843711B1 (en) * 2011-12-28 2014-09-23 Netapp, Inc. Partial write without read-modify
CN104123280A (zh) * 2013-04-24 2014-10-29 中国银联股份有限公司 文件比对方法和设备
CN107045530A (zh) * 2017-01-20 2017-08-15 华中科技大学 一种将对象存储系统实现为本地文件系统的方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111666294A (zh) * 2019-03-05 2020-09-15 深圳市天软科技开发有限公司 获取数据集的方法、终端设备及计算机可读存储介质
CN111666294B (zh) * 2019-03-05 2024-03-08 深圳市天软科技开发有限公司 获取数据集的方法、终端设备及计算机可读存储介质
CN110555072A (zh) * 2019-09-10 2019-12-10 中国建设银行股份有限公司 数据访问方法、装置、设备和介质

Similar Documents

Publication Publication Date Title
CN105487987B (zh) 一种处理并发顺序读io的方法及装置
CN108171189A (zh) 一种视频编码方法、视频编码装置及电子设备
CN113176992B (zh) A/b实验分流方法、装置和计算机可读存储介质
CN113129150A (zh) 交易数据的处理方法、装置、终端设备及可读存储介质
CN105117489B (zh) 一种数据库管理方法、装置及电子设备
CN108874994A (zh) 一种分块读取数据的方法、装置及计算机存储介质
CN112506950A (zh) 数据聚合处理方法、计算节点、计算集群及存储介质
CN111814045A (zh) 数据查询方法、装置、电子设备及存储介质
CN110472109B (zh) 动态化数据质量分析方法及平台系统
CN111562953A (zh) 接口调用方法、装置、计算机装置及可读存储介质
CN104376584B (zh) 一种数据压缩的方法、计算机系统和装置
CN111522574A (zh) 差分包生成方法及相关设备
CN110784553B (zh) 报文封装方法、设备及域名解析系统
CN111162792A (zh) 一种电力负荷数据的压缩方法及装置
CN106990913A (zh) 一种大规模流式集合数据的分布式处理方法
CN103927341B (zh) 一种获取场景信息的方法及装置
CN106446080B (zh) 数据查询的方法、查询服务设备、客户端设备和数据系统
CN115952398A (zh) 基于物联网的数据上传统计计算方法、系统和存储介质
CN114172856B (zh) 消息自动回复方法、装置、设备及存储介质
CN113283677B (zh) 指标数据处理方法、装置、设备及存储介质
CN106502775B (zh) 一种分时调度dsp算法的方法和系统
CN109815118A (zh) 数据库管理方法及装置、电子设备和计算机可读存储介质
CN112487771B (zh) 报表生成方法、报表生成装置及终端
CN110851446B (zh) 数据表的生成方法、装置、计算机设备及存储介质
CN109033189B (zh) 链路结构日志的压缩方法、装置、服务器及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20181123