CN107545011B - 一种数据读取方法及装置 - Google Patents
一种数据读取方法及装置 Download PDFInfo
- Publication number
- CN107545011B CN107545011B CN201610499749.4A CN201610499749A CN107545011B CN 107545011 B CN107545011 B CN 107545011B CN 201610499749 A CN201610499749 A CN 201610499749A CN 107545011 B CN107545011 B CN 107545011B
- Authority
- CN
- China
- Prior art keywords
- subscript
- data
- reading
- traversed
- subscripts
- 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
- 238000000034 method Methods 0.000 title claims abstract description 85
- 238000010586 diagram Methods 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据读取方法及装置,通过遍历待读取数据的下标集合中的下标,所述下标集合中的下标按照由小到大的顺序排序;判断遍历过的下标是否满足预设的整块读取条件,若是,则读取遍历过的下标对应的整块数据,若否,则读取下标对应的数据,通过上述技术方案,当遍历过的下标不满足预设的整块读取条件时,仅读取遍历过的下标对应的待读取数据,而位于待读取数据之间的无用数据是不进行读取的,因此减少了无用数据的读取时间量,提高了数据的读取效率。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及一种数据读取方法及装置。
背景技术
数组,就是相同数据类型的数据(元素)按一定顺序排列的集合,是把有限个数据类型相同的变量用一个名字命名,然后用编号区分它们的变量的集合,这个名字称为数组名,编号称为下标。现有技术,读取数组中的数据时,采用整块读取的方式。比如,待读取的数据的下标为1000和100001,现有整块读取的方式是将下标1000到下标100001之间的数据作为一个数据块整体读取出来。
由此可见,当待获取的数据的下标不连续的情况下,按照现有技术中的数据读取方式,会将不连续的下标之间所有下标对应的数据都读取出来,而读取的这些位于待获取数据之间的所有数据都是无用数据,现有技术中的数据读取方式会读取到大量的无用数据,而对这些无用数据的读取势必会增加数据的读取时间,从而导致数据的读取效率下降。
发明内容
有鉴于此,本发明实施例提供一种高效的数据读取方法及装置。
为实现上述目的,本发明实施例提供如下技术方案:
一种数据读取方法,所述方法包括:
遍历待读取数据的下标集合中的下标,所述下标集合中的下标按照由小到大的顺序排序;
判断遍历过的下标是否满足预设的整块读取条件,若是,则读取遍历过的下标对应的整块数据,若否,则读取下标对应的数据。
优选的,所述判断遍历过的下标是否满足预设的整块读取条件具体包括:
判断当前遍历到的下标与已遍历过的下标中最小的下标的差值是否超过预设的数据长度阈值,若是,则判断已遍历过的下标的个数是否大于预设的下标个数阈值,所述已遍历过的下标中不包括当前遍历到的下标;
若大于,则所述遍历过的下标为满足预设的整块读取条件的下标。
优选的,所述方法进一步包括:
从所述下标集合中删除所述遍历过的下标,判断所述下标集合中是否还有未遍历的下标,若有,则返回遍历待读取数据的下标集合中的下标步骤。
优选的,所述读取遍历过的下标对应的整块数据具体包括:
读取已遍历过的最小下标到最大下标之间所有下标对应的数据。
优选的,所述遍历待读取数据的下标集合中的下标具体包括:
遍历待读取数据的下标集合中的下标,将所述下标集合中下标进行分组,得到下标子集合,下标子集合中的最大的下标和最小的下标的差值不超过预设的数据长度阈值,所述下标集合中的下标按照由小到大的顺序排序。
优选的,所述判断遍历过的下标是否满足预设的整块读取条件具体包括:
判断下标子集合中的下标个数是否大于预设的下标个数阈值;
若大于,则所述下标子集合中的下标为满足预设的整块读取条件的下标。
优选的,所述读取遍历过的下标对应的整块数据具体包括:
读取下标子集合中最小下标到最大下标之间所有下标对应的数据。
优选的,所述预设的数据长度阈值的确定过程包括:
确定读取待读取数据过程中所占用内存的上限值;
确定所述待读取数据的数据长度值;
依据所述读取待读取数据过程中所占用内存的上限值与所述待读取数据的数据长度值确定所述预设的数据长度阈值。
一种数据读取装置,所述装置包括:
下标遍历模块,用于遍历待读取数据的下标集合中的下标,所述下标集合中的下标按照由小到大的顺序排序;
整块读取条件判断模块,用于判断遍历过的下标是否满足预设的整块读取条件;
整块数据读取模块,用于在整块读取条件判断模块判断出遍历过的下标满足预设的整块读取条件的情况下,读取遍历过的下标对应的整块数据;
下标数据读取模块,用于在整块读取条件判断模块判断出遍历过的下标不满足预设的整块读取条件的情况下,读取下标对应的数据。
优选的,所述整块读取条件判断模块包括:
差值判断模块,用于判断当前遍历到的下标与已遍历过的下标中最小的下标的差值是否超过预设的数据长度阈值;
第一下标个数判断模块,用于在差值判断模块判断出当前遍历到的下标与已遍历过的下标中最小的下标的差值超过预设的数据长度阈值的情况下,则判断已遍历过的下标的个数是否大于预设的下标个数阈值,所述已遍历过的下标中不包括当前遍历到的下标;
第一下标确定模块,用于在下标个数判断模块判断出已遍历过的下标的个数大于预设的下标个数阈值的情况下,则确定所述遍历过的下标为满足预设的整块读取条件的下标。
优选的,所述整块数据读取模块包括:
第一整块数据读取子模块,用于读取已遍历过的最小下标到最大下标之间所有下标对应的数据。
优选的,所述下标遍历模块包括:
下标遍历子模块,用于遍历待读取数据的下标集合中的下标,所述下标集合中的下标按照由小到大的顺序排序;
分组模块,用于将所述下标集合中下标进行分组,得到下标子集合,下标子集合中的最大的下标和最小的下标的差值不超过预设的数据长度阈值。
优选的,所述整块读取条件判断模块包括:
第二下标个数判断模块,用于判断下标子集合中的下标个数是否大于预设的下标个数阈值;
第二下标确定模块,用于在第二下标个数判断模块判断出下标子集合中的下标个数大于预设的下标个数阈值的情况下,则确定所述下标子集合中的下标为满足预设的整块读取条件的下标。
优选的,所述整块数据读取模块包括:
第二整块数据读取子模块,用于读取下标子集合中最小下标到最大下标之间所有下标对应的数据。
优选的,还包括:数据长度阈值确定模块,用于确定预设的数据长度阈值,所述数据长度阈值确定模块包括:
内存上限值确定模块,用于确定读取待读取数据过程中所占用内存的上限值;
数据长度值确定模块,用于确定所述待读取数据的数据长度值;
数据长度阈值确定子模块,用于依据所述读取待读取数据过程中所占用内存的上限值与所述待读取数据的数据长度值确定所述预设的数据长度阈值。
基于上述技术方案,本发明实施例公开了一种数据读取方法及装置,通过遍历待读取数据的下标集合中的下标,所述下标集合中的下标按照由小到大的顺序排序;判断遍历过的下标是否满足预设的整块读取条件,若是,则读取遍历过的下标对应的整块数据,若否,则读取下标对应的数据,通过上述技术方案,当遍历过的下标不满足预设的整块读取条件时,仅读取遍历过的下标对应的待读取数据,而位于待读取数据之间的无用数据是不进行读取的,因此减少了无用数据的读取时间量,提高了数据的读取效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种数据读取方法的流程图;
图2为本发明实施例提供的另一种数据读取方法的流程图;
图3为本发明实施例提供的又一种数据读取方法的流程图;
图4为本发明实施例提供的一种数据读取装置的结构框图;
图5为本发明实施例提供的一种整块读取条件判断模块的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本方案的发明人发现,当待获取的数据的下标不连续的情况下,按照现有技术中的数据读取方式,会将不连续的下标之间所有下标对应的数据都读取出来,而读取的这些位于待获取数据之间的所有数据都是无用数据,现有技术中的数据读取方式会读取到大量的无用数据,而对这些无用数据的读取势必会增加数据的读取时间,从而导致数据的读取效率下降。
基于此,如何提供一种高效的数据读取的方式是目前亟待解决的问题。
本发明实施例中公开的技术方案为了解决上述问题,提出了一种数据读取方法,通过遍历待读取数据的下标集合中的下标,所述下标集合中的下标按照由小到大的顺序排序;判断遍历过的下标是否满足预设的整块读取条件,若是,则读取遍历过的下标对应的整块数据,若否,则读取下标对应的数据,通过上述技术方案,当遍历过的下标不满足预设的整块读取条件时,仅读取遍历过的下标对应的待读取数据,而位于待读取数据之间的无用数据是不进行读取的,因此减少了无用数据的读取时间量,提高了数据的读取效率。
图1为本发明实施例提供的一种数据读取方法的流程图,该方法可以包括:
S101:遍历待读取数据的下标集合中的下标;
需要说明的是,所述待获取数据的下标表示所述待获取数据的数组编号,所述下标集合中的下标按照由小到大的顺序排序。
S102:判断遍历过的下标是否满足预设的整块读取条件,若是,则执行S103;否则,执行S104;
其中,预设的整块数据读取条件具体为:每次整块读取的数据块中最大的下标和最小的下标的差值不超过预设的数据长度阈值,整块读取的数据块中下标个数大于预设的下标个数阈值。本发明中提供判断是否满足预设的整块数据读取条件的两种具体实现方案,将在以下两个实施例中进行介绍。
S103:读取遍历过的下标对应的整块数据;
需要说明的是,读取遍历过的下标对应的整块数据即一次读取过程中,读取已遍历的最小下标到最大下标之间所有下标对应的数据,也就是一次读取一整块数据,与每次读取一个下标对应的数据的方式相比,仅仅通过一次读取操作就能够获取所有的待读取数据,提高了数据读取的效率。
可选的,本发明实施例中,读取遍历过的下标对应的整块数据之后,还包括:从读取的整块数据中删除下标非该组下标集合内的下标对应的数据,得到待获取数据,减少了对内存的占用。
S104:读取下标对应的数据。
需要说明的是,该步骤仅读取下标集合中的下标对应的数据,并且读取方式是采用单个读取数据的方式,即一次读取一个下标对应的待读取数据,直到获取到所有的待读取数据,能够保证在待读取的数据量在所有数据量中所占有的比例较小的情况下,即需要读取的数据量较少的情况下,只采用单个读取数据的方式从该组下标中一一读取对应的待读取数据,而不必将所有的数据读取出来,减少了对内存的浪费。
本发明实施例中的技术方案,通过遍历待读取数据的下标集合中的下标,所述下标集合中的下标按照由小到大的顺序排序;判断遍历过的下标是否满足预设的整块读取条件,若是,则读取遍历过的下标对应的整块数据,若否,则读取下标对应的数据,通过上述技术方案,当遍历过的下标不满足预设的整块读取条件时,仅读取遍历过的下标对应的待读取数据,而位于待读取数据之间的无用数据是不进行读取的,因此减少了无用数据的读取时间量,提高了数据的读取效率。
可选的,图2示出了本发明实施例提供的另外一种数据读取方法流程图,该方法可以包括:
S201:遍历待读取数据的下标集合中的下标;
所述下标集合中的下标按照由小到大的顺序排序;
S202:判断当前遍历到的下标与已遍历的下标中最小的下标的差值是否超过预设的数据长度阈值;若是,则执行S203;
其中,预设的数据长度阈值即为一次读取数据过程中,所能够读取的最大的数据长度。
所述预设的数据长度阈值是依据读取数据过程中所占用内存的上限值以及待读取数据的数据长度值确定的,具体过程为:确定读取待读取数据过程中所占用内存的上限值;确定所述待读取数据的数据长度值;依据所述读取待读取数据过程中所占用内存的上限值与所述待读取数据的数据长度值确定所述预设的数据长度阈值,其中,本发明实施例中数据读取过程中所占用内存的上限值指的是进行数据读取的数据读取模块的内存占用上限。此处确定数据长度阈值的具体实施方式适用于本发明所有实施例。
举例来说,由于数据读取过程受数据读取模块内存上限的限制,所以预设的数据长度阈值的大小需要依据所述数据读取模块内存上限值与待读取数据的数据长度值动态确定,假设数据读取模块的内存占用上限值是1Mb(即1024*1024=1048576字节);如果待读取数据的大小为100字节,那么预设的数据长度阈值=1048576/100=10485.76,约为10000,此时预设的数据长度阈值取值为10000;同理,假设读取待获取数据所占用的内存上限值是2Mb,如果待读取数据的大小为500字节,那么预设的数据长度阈值=1024*1024*2/500=4194.304,此时预设的数据长度阈值取值为4000。
S203:判断已遍历的下标的个数是否大于预设的下标个数阈值;若是,则执行S204;否则执行S205;
所述已遍历的下标中不包括当前遍历到的下标。
需要说明的是,判断已遍历的下标的个数是否大于预设的下标个数阈值的方式,是用来决定到底是采用整块数据读取还是单个数据的读取,所以预设的下标个数阈值nMin的大小与预设的数据长度阈值nMax的大小,以及按整块读取数据时,每个数据的平均读取时间与一次读取一个下标对应的数据的读取时间的倍数有关系。假设一次读取一个数据的读取时间是整块读取时的每个数据的平均读取时间的w倍,那么一次读取一个数据的读取时间为t,整块读取时的每个数据的平均读取时间即为(t/w);则nMin=(nMax*(t/w))/t;化简为:nMin=nMax/w。
S204:读取已遍历的最小下标到最大下标之间所有下标对应的数据;
S205:读取已遍历的下标对应的数据;
S206:从所述下标集合中删除所述已遍历的下标;
S207:判断所述下标集合中是否还有未遍历的下标,若有,则返回执行步骤S201,否则结束流程。
下面以一个具体的例子详细说明,本发明实施例提供的上述数据读取方法的具体过程。
例如存在一组数据,其中记录有100万条数据。现从这100万条数据中确定待读取数据的下标集合,用于读取需要的数据。假设确定的待读取数据的下标集合为:{1000,1010,1011,1050,1100,1101,1102,1105,1107,1200,1250,2000,3000,3010,200000,201000,500000,500002,500010,500011,500012,500100,500200,500201,501000,501002,502000,700001,700005,700010},其中包含30个下标,所述下标集合中的下标是按照从小到大的顺序排列。
初始化的过程中预先设置预设的数据长度阈值nMax=5000;预设的下标个数阈值为nMin=10;
设置下标集合中第i个下标nStart=i,i大于或等于0,小于或等于29,29为下标集合中的下标总个数,则本次数据读取的起始下标vnDataIdx[nStart]=1000,即待读取的数据下标集合的第一个元素值即为第一次读取数据的起始下标;
依序遍历该下标集合中的每一个下标vnDataIdx[i],判断当前遍历到的下标与已遍历的下标中最小的下标的差值是否超过nMax,经判断,当前遍历到的下标为vnDataIdx[14]=200000时,与已遍历的下标中最小的下标vnDataIdx[0]=1000的差值超过nMax,判断已遍历的下标的个数14大于nMin,则读取第1个到第14个元素对应的数据下标之间的所有下标对应的数据,即读取从下标1000到下标3010之间的所有2011个下标对应的数据;
由于下标集合中还有未遍历的下标,则重新开始新的一次遍历判断的过程,当前遍历到的下标为vnDataIdx[16]=500000时,与已遍历的下标中最小的下标vnDataIdx[14]=200000的差值超过nMax,判断已遍历的下标的个数2小于nMin,即获取第15个到第16个元素数据下标对应的数据,即读取200000以及201000下标对应的数据;
以此类推,第三次获取第17个到27个元素对应的数据下标之间的所有下标对应的数据,即读取从下标500000到下标502000之间的所有2001个下标对应的数据;第四次获取第28到第30个元素数据下标对应的数据,即读取700001,700005以及700010下标对应的数据。
可选的,图3示出了本发明实施例提供的另外一种数据读取方法流程图,该方法可以包括:
S301:遍历待读取数据的下标集合中的下标,将所述下标集合中下标进行分组,得到下标子集合,所述下标集合中的下标按照由小到大的顺序排序;
下标子集合中的最大的下标和最小的下标的差值不超过预设的数据长度阈值,其中,预设的长度阈值即为一次读取数据过程中,所能够读取的最大的数据长度。
本发明实施例中将所述下标集合中下标进行分组,得到下标子集合的过程包括:
提取下标集合中的排序在第一位的下标作为目标下标;
按照下标集合中下标的排列顺序,依次计算排列在所述目标下标之后的其他的下标与所述目标下标的差值是否小于或等于预设的数据长度阈值,在当前遍历到的下标与所述目标下标的差值大于预设的数据长度阈值的情况下,将所述当前遍历到的下标的前一个下标作为终止下标;
将所述下标集合中的从所述目标下标到所述终止下标之间的所有下标分为一组,作为一组下标子集合;
判断所述下标集合中是否还有剩余的未被划分到下标子集合中的下标,如有,则提取剩余的下标中排序在第一位的下标作为新的目标下标,返回执行所述按照下标集合中下标的排列顺序,依次计算排列在所述目标下标之后的其他的下标与所述目标下标的差值是否小于或等于第一预设值的步骤;如无,则结束流程。
本发明实施例中将所述下标集合中下标进行分组后,按组对下标集合中的下标对应的待读取数据进行读取,保证每组数据进行读取的过程中不会超出数据读取过程所占用内存的上限,保证数据读取过程不会受到内存限制。
S302:判断下标子集合中的下标个数是否大于预设的下标个数阈值,若是,则执行S303,否则执行S304;
S303:读取下标子集合中最小下标到最大下标之间所有下标对应的数据;
S304:读取下标子集合中的下标对应的数据。
下面以一个具体的例子详细说明,本发明实施例提供的上述数据读取方法的具体过程。
例如存在一组数据,其中记录有100万条数据。现从这100万条数据中确定待读取数据的下标集合,用于读取需要的数据。假设确定的待读取数据的下标集合为:{1000,1010,1011,1050,1100,1101,1102,1105,1107,1200,1250,2000,3000,3010,200000,201000,500000,500002,500010,500011,500012,500100,500200,500201,501000,501002,502000,700001,700005,700010},其中包含30个下标,所述下标集合中的下标是按照从小到大的顺序排列。
初始化的过程中预先设置预设的数据长度阈值nMax=5000;预设的下标个数阈值为nMin=10;
设置下标集合中第i个下标nStart=i,i大于或等于0,小于或等于29,则本次数据读取的起始下标vnDataIdx[nStart]=1000,即待读取的数据下标集合的第一个元素值即为第一次读取数据的起始下标;
依序遍历该下标集合中的每一个下标vnDataIdx[i],将所述下标集合中下标进行分组,得到下标子集合,下标子集合中的最大的下标和最小的下标的差值不超过nMax,可以看到当i=13时(即所述下标集合中的第14个下标),vnDataIdx[i]-vnDataIdx[nStart]小于nMax,即3010-1000=2010<5000,而当i=14时(即所述下标集合中的第15个下标),vnDataIdx[i]-vnDataIdx[nStart]大于等于nMax,即200000-1000=199000>5000。则把第1个元素到第14个元素划分到同一个下标子集中,以此类推,得到的下标子集合如下:{1000,1010,1011,1050,1100,1101,1102,1105,1107,1200,1250,2000,3000,3010},{200000,201000},{500000,500002,500010,500011,500012,500100,500200,500201,501000,501002,502000},{700001,700005,700010};
判断上述每个下标子集合中的下标个数是否大于nMin,若是,则读取下标子集合中最小下标到最大下标之间所有下标对应的数据;否则,读取下标子集合中的下标对应的数据。经判断可知,第一个下标子集合中的下标个数为14,大于nMin,第一次读取第1个到第14个元素对应的数据下标之间的所有下标对应的数据,即读取从下标1000到下标3010之间的所有2011个下标对应的数据;
第二个下标子集合中的下标个数为2,小于nMin,第二次获取第15个到第16个元素数据下标对应的数据,即读取200000以及201000下标对应的数据;
第三个下标子集合中的下标个数为11,大于nMin,第三次获取第17个到27个元素对应的数据下标之间的所有下标对应的数据,即读取从下标500000到下标502000之间的所有2001个下标对应的数据;
第四个下标子集合中的下标个数为3,小于nMin,第四次获取第28到第30个元素数据下标对应的数据,即读取700001,700005以及700010下标对应的数据。
上述读取数据的过程中,如果每次读取n个单位(n为较大值,如1000以上)的数据,那么每个单位的数据的平均读取时间约为一次读取一个单位数据的读取时间的五百分之一,假设一次读取一个单位数据的读取时间为1t,那么整块读取数据时,平均读取一个单位数据的读取时间为0.002t。则当nMax为5000时,读取整块数据一次的最大读取时间为0.002t*5000=10t,那么,对于待获取数据的下标数组:
1.按每次读取一个单位的数据方法,则读取时间为:30*1t=30t;
2.按上述分四次读取数据的方法,则读取时间为:10t*2+5*1t=25t;
因此,本发明实施例公开的上述分四次读取数据的方法与每次读取一个单位的数据方法相比效率提高:(30t–25t)/30t=16.67%。因此,本发明实施例采用的上述数据读取方法比每次读取一个单位的数据方法的效率高。
本发明实施例中的技术方案通过遍历待读取数据的下标集合中的下标,所述下标集合中的下标按照由小到大的顺序排序;判断遍历过的下标是否满足预设的整块读取条件,若是,则读取遍历过的下标对应的整块数据,若否,则读取下标对应的数据,通过上述技术方案,当遍历过的下标不满足预设的整块读取条件时,仅读取遍历过的下标对应的待读取数据,而位于待读取数据之间的无用数据是不进行读取的,因此减少了无用数据的读取时间量,提高了数据的读取效率。
上述本发明公开的实施例中详细描述了方法,对于本发明的方法可采用多种形式的装置实现,因此本发明还公开了一种装置,下面给出具体的实施例进行详细说明。
图4为本发明实施例提供的一种数据读取装置的结构框图,该装置可以包括:
下标遍历模块11,用于遍历待读取数据的下标集合中的下标,所述下标集合中的下标按照由小到大的顺序排序;
整块读取条件判断模块12,用于判断遍历过的下标是否满足预设的整块读取条件;
整块数据读取模块13,用于在整块读取条件判断模块判断出遍历过的下标满足预设的整块读取条件的情况下,读取遍历过的下标对应的整块数据;
下标数据读取模块14,用于在整块读取条件判断模块判断出遍历过的下标不满足预设的整块读取条件的情况下,读取下标对应的数据。
基于上述数据读取装置实施例,本发明还可从以下单元中选取合适单元组成新的数据读取装置,具体组成方式可对应方法实施例中的相关描述进行确定,本实施例不再赘述。
如图5所示,所述整块读取条件判断模块12包括:
差值判断模块121,用于判断当前遍历到的下标与已遍历过的下标中最小的下标的差值是否超过预设的数据长度阈值;
第一下标个数判断模块122,用于在差值判断模块判断出当前遍历到的下标与已遍历过的下标中最小的下标的差值超过预设的数据长度阈值的情况下,则判断已遍历过的下标的个数是否大于预设的下标个数阈值,所述已遍历过的下标中不包括当前遍历到的下标;
第一下标确定模块123,用于在下标个数判断模块判断出已遍历过的下标的个数大于预设的下标个数阈值的情况下,则确定所述遍历过的下标为满足预设的整块读取条件的下标。
所述整块数据读取模块包括:
第一整块数据读取子模块,用于读取已遍历过的最小下标到最大下标之间所有下标对应的数据。
所述下标遍历模块包括:
下标遍历子模块,用于遍历待读取数据的下标集合中的下标,所述下标集合中的下标按照由小到大的顺序排序;
分组模块,用于将所述下标集合中下标进行分组,得到下标子集合,下标子集合中的最大的下标和最小的下标的差值不超过预设的数据长度阈值。
所述整块读取条件判断模块包括:
第二下标个数判断模块,用于判断下标子集合中的下标个数是否大于预设的下标个数阈值;
第二下标确定模块,用于在第二下标个数判断模块判断出下标子集合中的下标个数大于预设的下标个数阈值的情况下,则确定所述下标子集合中的下标为满足预设的整块读取条件的下标。
所述整块数据读取模块包括:
第二整块数据读取子模块,用于读取下标子集合中最小下标到最大下标之间所有下标对应的数据。
可选的,还包括:数据长度阈值确定模块,用于确定预设的数据长度阈值,所述数据长度阈值确定模块包括:
内存上限值确定模块,用于确定读取待读取数据过程中所占用内存的上限值;
数据长度值确定模块,用于确定所述待读取数据的数据长度值;
数据长度阈值确定子模块,用于依据所述读取待读取数据过程中所占用内存的上限值与所述待读取数据的数据长度值确定所述预设的数据长度阈值。
综上所述:
本发明实施例公开了一种数据读取方法及装置,通过遍历待读取数据的下标集合中的下标,所述下标集合中的下标按照由小到大的顺序排序;判断遍历过的下标是否满足预设的整块读取条件,若是,则读取遍历过的下标对应的整块数据,若否,则读取下标对应的数据,通过上述技术方案,当遍历过的下标不满足预设的整块读取条件时,仅读取遍历过的下标对应的待读取数据,而位于待读取数据之间的无用数据是不进行读取的,因此减少了无用数据的读取时间量,提高了数据的读取效率。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (12)
1.一种数据读取方法,其特征在于,所述方法包括:
遍历待读取数据的下标集合中的下标,所述下标集合中的下标按照由小到大的顺序排序;
判断遍历过的下标是否满足预设的整块读取条件,若是,则读取遍历过的下标对应的整块数据,若否,则读取下标对应的数据;
从所述下标集合中删除所述遍历过的下标,判断所述下标集合中是否还有未遍历的下标,若有,则返回遍历待读取数据的下标集合中的下标步骤,
所述判断遍历过的下标是否满足预设的整块读取条件具体包括:
判断当前遍历到的下标与已遍历过的下标中最小的下标的差值是否超过预设的数据长度阈值,若是,则判断已遍历过的下标的个数是否大于预设的下标个数阈值,所述已遍历过的下标中不包括当前遍历到的下标;
若大于,则所述遍历过的下标为满足预设的整块读取条件的下标。
2.如权利要求1所述的方法,其特征在于,所述读取遍历过的下标对应的整块数据具体包括:
读取已遍历过的最小下标到最大下标之间所有下标对应的数据。
3.如权利要求1所述的方法,其特征在于,所述预设的数据长度阈值的确定过程包括:
确定读取待读取数据过程中所占用内存的上限值;
确定所述待读取数据的数据长度值;
依据所述读取待读取数据过程中所占用内存的上限值与所述待读取数据的数据长度值确定所述预设的数据长度阈值。
4.一种数据读取方法,其特征在于,所述方法包括:
遍历待读取数据的下标集合中的下标,所述下标集合中的下标按照由小到大的顺序排序;
判断遍历过的下标是否满足预设的整块读取条件,若是,则读取遍历过的下标对应的整块数据,若否,则读取下标对应的数据,
所述遍历待读取数据的下标集合中的下标具体包括:
遍历待读取数据的下标集合中的下标,将所述下标集合中下标进行分组,得到下标子集合,下标子集合中的最大的下标和最小的下标的差值不超过预设的数据长度阈值,所述下标集合中的下标按照由小到大的顺序排序,
所述判断遍历过的下标是否满足预设的整块读取条件具体包括:
判断下标子集合中的下标个数是否大于预设的下标个数阈值;
若大于,则所述下标子集合中的下标为满足预设的整块读取条件的下标。
5.如权利要求4所述的方法,其特征在于,所述读取遍历过的下标对应的整块数据具体包括:
读取下标子集合中最小下标到最大下标之间所有下标对应的数据。
6.如权利要求4所述的方法,其特征在于,所述预设的数据长度阈值的确定过程包括:
确定读取待读取数据过程中所占用内存的上限值;
确定所述待读取数据的数据长度值;
依据所述读取待读取数据过程中所占用内存的上限值与所述待读取数据的数据长度值确定所述预设的数据长度阈值。
7.一种数据读取装置,其特征在于,所述装置包括:
下标遍历模块,用于遍历待读取数据的下标集合中的下标,所述下标集合中的下标按照由小到大的顺序排序;
整块读取条件判断模块,用于判断遍历过的下标是否满足预设的整块读取条件;
整块数据读取模块,用于在整块读取条件判断模块判断出遍历过的下标满足预设的整块读取条件的情况下,读取遍历过的下标对应的整块数据;
下标数据读取模块,用于在整块读取条件判断模块判断出遍历过的下标不满足预设的整块读取条件的情况下,读取下标对应的数据;
删除模块,用于从所述下标集合中删除所述遍历过的下标,判断所述下标集合中是否还有未遍历的下标,若有,则指示所述下标遍历模块遍历待读取数据的下标集合中的下标,
所述整块读取条件判断模块包括:
差值判断模块,用于判断当前遍历到的下标与已遍历过的下标中最小的下标的差值是否超过预设的数据长度阈值;
第一下标个数判断模块,用于在差值判断模块判断出当前遍历到的下标与已遍历过的下标中最小的下标的差值超过预设的数据长度阈值的情况下,则判断已遍历过的下标的个数是否大于预设的下标个数阈值,所述已遍历过的下标中不包括当前遍历到的下标;
第一下标确定模块,用于在下标个数判断模块判断出已遍历过的下标的个数大于预设的下标个数阈值的情况下,则确定所述遍历过的下标为满足预设的整块读取条件的下标。
8.如权利要求7所述的装置,其特征在于,所述整块数据读取模块包括:
第一整块数据读取子模块,用于读取已遍历过的最小下标到最大下标之间所有下标对应的数据。
9.如权利要求7所述的装置,其特征在于,还包括:数据长度阈值确定模块,用于确定预设的数据长度阈值,所述数据长度阈值确定模块包括:
内存上限值确定模块,用于确定读取待读取数据过程中所占用内存的上限值;
数据长度值确定模块,用于确定所述待读取数据的数据长度值;
数据长度阈值确定子模块,用于依据所述读取待读取数据过程中所占用内存的上限值与所述待读取数据的数据长度值确定所述预设的数据长度阈值。
10.一种数据读取装置,其特征在于,所述装置包括:
下标遍历模块,用于遍历待读取数据的下标集合中的下标,所述下标集合中的下标按照由小到大的顺序排序;
整块读取条件判断模块,用于判断遍历过的下标是否满足预设的整块读取条件;
整块数据读取模块,用于在整块读取条件判断模块判断出遍历过的下标满足预设的整块读取条件的情况下,读取遍历过的下标对应的整块数据;
下标数据读取模块,用于在整块读取条件判断模块判断出遍历过的下标不满足预设的整块读取条件的情况下,读取下标对应的数据;
所述下标遍历模块包括:
下标遍历子模块,用于遍历待读取数据的下标集合中的下标,所述下标集合中的下标按照由小到大的顺序排序;
分组模块,用于将所述下标集合中下标进行分组,得到下标子集合,下标子集合中的最大的下标和最小的下标的差值不超过预设的数据长度阈值,
所述整块读取条件判断模块包括:
第二下标个数判断模块,用于判断下标子集合中的下标个数是否大于预设的下标个数阈值;
第二下标确定模块,用于在第二下标个数判断模块判断出下标子集合中的下标个数大于预设的下标个数阈值的情况下,则确定所述下标子集合中的下标为满足预设的整块读取条件的下标。
11.如权利要求10所述的装置,其特征在于,所述整块数据读取模块包括:
第二整块数据读取子模块,用于读取下标子集合中最小下标到最大下标之间所有下标对应的数据。
12.如权利要求10所述的装置,其特征在于,还包括:数据长度阈值确定模块,用于确定预设的数据长度阈值,所述数据长度阈值确定模块包括:
内存上限值确定模块,用于确定读取待读取数据过程中所占用内存的上限值;
数据长度值确定模块,用于确定所述待读取数据的数据长度值;
数据长度阈值确定子模块,用于依据所述读取待读取数据过程中所占用内存的上限值与所述待读取数据的数据长度值确定所述预设的数据长度阈值。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201610499749.4A CN107545011B (zh) | 2016-06-29 | 2016-06-29 | 一种数据读取方法及装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201610499749.4A CN107545011B (zh) | 2016-06-29 | 2016-06-29 | 一种数据读取方法及装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN107545011A CN107545011A (zh) | 2018-01-05 |
| CN107545011B true CN107545011B (zh) | 2020-04-10 |
Family
ID=60965914
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201610499749.4A Active CN107545011B (zh) | 2016-06-29 | 2016-06-29 | 一种数据读取方法及装置 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN107545011B (zh) |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8311119B2 (en) * | 2004-12-31 | 2012-11-13 | Microsoft Corporation | Adaptive coefficient scan order |
| CN102043795B (zh) * | 2009-10-13 | 2013-01-16 | 上海新华控制技术(集团)有限公司 | 过程控制历史数据文件结构的建立方法和数据读写方法 |
| CN101770515B (zh) * | 2010-01-18 | 2012-01-11 | 杭州顺网科技股份有限公司 | 一种基于数据块比较的数据更新方法 |
| GB2502620B (en) * | 2012-06-01 | 2020-04-22 | Advanced Risc Mach Ltd | A parallel parsing video decoder and method |
| CN103677655B (zh) * | 2012-09-26 | 2016-12-21 | 北京信威通信技术股份有限公司 | 一种二维数组数据流在存储器上的读写方法及装置 |
| CN105224532B (zh) * | 2014-05-28 | 2019-11-08 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
| CN104461920B (zh) * | 2014-12-09 | 2019-04-12 | 杭州华为数字技术有限公司 | 一种存储数据的方法及装置 |
| CN104994340A (zh) * | 2015-06-25 | 2015-10-21 | 广东工业大学 | 一种音视频存储方式的精确定位回放方法 |
-
2016
- 2016-06-29 CN CN201610499749.4A patent/CN107545011B/zh active Active
Also Published As
| Publication number | Publication date |
|---|---|
| CN107545011A (zh) | 2018-01-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN109815162A (zh) | 内存管理方法、装置、移动终端及存储介质 | |
| CN111309644B (zh) | 一种内存分配方法、装置和计算机可读存储介质 | |
| CN103747047A (zh) | 一种cdn文件存储方法、文件分发控制中心及系统 | |
| CN110659151A (zh) | 数据校验方法及装置,存储介质 | |
| CN103927263B (zh) | 垃圾回收方法和装置 | |
| CN103150260A (zh) | 重复数据删除方法和装置 | |
| CN110297810B (zh) | 一种流数据处理方法、装置及电子设备 | |
| CN103473343A (zh) | 一种文件管理方法、装置以及终端 | |
| CN111880745A (zh) | 基于固态盘阵列的数据处理方法、装置、设备及存储介质 | |
| KR20180108810A (ko) | 서비스 파라미터 선택 방법 및 관련된 디바이스 | |
| CN103747276A (zh) | 一种cdn数据删除方法及cdn服务器 | |
| CN110019184B (zh) | 一种压缩和解压缩有序整数数组的方法 | |
| CN117909254B (zh) | 分支预测方法、装置及存储介质 | |
| CN107784195A (zh) | 数据处理方法及装置 | |
| CN113688107A (zh) | 分布式文件系统元数据缓存方法、装置、终端及存储介质 | |
| CN107545011B (zh) | 一种数据读取方法及装置 | |
| CN109542799B (zh) | 块存储器拼接方法、拼接模块、存储装置及现场可编程门阵列 | |
| CN107239543A (zh) | 应用图标处理方法及装置 | |
| CN107273303B (zh) | 一种闪存数据管理系统、方法、闪存芯片及存储装置 | |
| CN106933934B (zh) | 数据表的连接方法和装置 | |
| CN109063261B (zh) | 一种动力电池老化趋势的判断方法和装置 | |
| CN106406766A (zh) | 一种数据存储方法及装置 | |
| CN113077344B (zh) | 基于区块链的交易方法、装置、电子设备及存储介质 | |
| CN103746968A (zh) | 一种cdn服务器摘除方法、cdn控制中心及系统 | |
| CN116204311A (zh) | Pod集群扩缩容方法、装置、计算机设备和存储介质 |
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 | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant | ||
| TR01 | Transfer of patent right | ||
| TR01 | Transfer of patent right |
Effective date of registration: 20200506 Address after: 310052 room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province Patentee after: Alibaba (China) Co.,Ltd. Address before: 100080 Beijing City, Haidian District Suzhou Street No. 3 floor 16 room 2 Patentee before: AUTONAVI INFORMATION TECHNOLOGY Co.,Ltd. |