一种高效的本地缓存管理及读写方法

文档序号:6630021阅读:249来源:国知局
一种高效的本地缓存管理及读写方法
【专利摘要】一种高效的本地缓存管理及读写方法,将多个物理存储文件大小按照指定数值,例如128M的倍数递增的方式来创建文件可以满足长度不固定的数据块的存储,每个物理存储文件头部开辟固定大小的空间用于存储该文件包含的所有数据块的数据结构,对大数据切割成多个分片,分别对每个分片取一定长度的数据来生成MD5。本发明避免文件分布不均造成的文件碎片多,使用率低的问题,解决了占用系统资源高的问题,提高了数据加载的效率,并且极大的提高了校验效率,并能够确保整个文件的正确性。
【专利说明】—种高效的本地缓存管理及读写方法

【技术领域】
[0001]本发明涉及文件管理方法,具体的,本发明涉及一种对于本地缓存文件进行高效地管理以及读写的方法。

【背景技术】
[0002]本地缓存数据管理是下载应用程序能否高效运行的关键环节,缓存数据管理的方式多种多样,能否建立一个高效,快捷,方便的缓存文件组织结构是在数据存储领域被广泛探讨的问题。在现有技术中,缓存数据管理的性能指标可以分为以下几点:
[0003]1.1缓存数据的读写速度是否满足业务的需求,磁盘读写(I/O)操作一直是软件性能的瓶颈之一,达到高效的读写性能的同时也必须保证读写逻辑不能占用过高的CPU性倉泛。
[0004]1.2缓存数据的物理存储结构是否合理,缓存数据的存储形式和组织结构直接影响了数据的访问复杂程度和扩展成本。缓存数据的访问包括读写,修改,删除等操作,存储结构的定义必须兼顾所有这些访问操作。
[0005]1.3缓存数据管理是否能够最大程度的利用当前已经使用的磁盘空间。由于缓存数据的大小和单位存在多样性的特点,所以缓存管理策略既要最大程度减少小文件导致的碎片累积的问题又要防止出现大文件的切割问题。
[0006]1.4缓存数据管理是否能够保证数据的安全性和正确性。由于系统本身的缺陷或者人为方面等因素,本地缓存数据可能会被篡改,由此,缓存数据的访问涉及对数据本身校验的过程。
[0007]而现有技术中,本地缓存的管理存在如下问题:
[0008]2.1占用磁盘空间过多,缓存数据的有效利用率低
[0009]由于大数据应用的需要,缓存文件占用的磁盘空间也越来越大,所以很多应用都会选择使用多个较大物理文件来缓存数据,为了避免同一数据单元存储在多个物理文件带来的逻辑复杂度,普遍采用的方式是同一数据单元的内容都存储在同一个物理文件上,这样会导致每个物理文件尾都不能恰好被完全占用,数据单元越大,浪费的空间也会随之增加。
[0010]2.2小文件数量较多,占用系统资源较多
[0011]某些应用数据单元较小,但数量较多,这种情况会普遍采用文件夹的方式来管理,每个文件夹下面会保存数量较多的小文件来缓存数据。这种方式的优点在于文件小,磁盘浪费率低,操作方便,缺点就是小文件数量多,占用系统资源较多,影响系统的整体性能。
[0012]2.3缓存数据的校验过程冗长,效率低下
[0013]加载本地缓存数据的过程本身也是对缓存数据校验的过程,最简单有效的方式是将本地数据生成的校验数据与服务器的校验数据进行比较,以此判断本地的数据正确性。如果缓存数据总量不高可以采用该方法,反之,如果本地缓存数据较多,每块数据的校验都需要完整读取本地数据,将会导致程序加载过程冗长低效。
[0014]2.4缓存数据文件结构简单,安全性不高
[0015]缓存数据的安全性是程序能否正确运行的一个保障,所以缓存文件的存储既要保障缓存数据本身的正确性又要对数据本身进行必要的防护措施,防止恶意程序的篡改和访问。
[0016]因此,如何能够改善现有技术中本地缓存的管理以及存储缺陷,减少本地缓存所占用的系统资源,提高数据加载效率,成为现有技术亟需解决的技术问题。


【发明内容】

[0017]本发明的目的在于提出一种高效的本地缓存管理及读写方法,以减少本地缓存占用资源和提高数据加载效率。
[0018]为达此目的,本发明采用以下技术方案:
[0019]一种本地缓存管理及读写方法,其特征在于:将本地缓存数据的多个物理存储文件的大小按照128M的倍数递增,最大值不超过1G,数据块的存储根据数据块的长度选择最接近的文件进行存储。
[0020]优选地,所述物理存储文件的头部具有头部索引数据区,所述头部索引数据区具有固定大小的空间,用于存储所述物理存储文件所包含的所有数据块的数据结构,所述数据结构包括所述数据块的数量,数据块的大小、所述数据块存储地址和所述数据块的校验信息。
[0021]优选地,所述头部索引数据区包括缓存文件信息,以及缓存的数据块索引数据;其中所述缓存文件信息是指所述物理文件的总体信息,包括整个文件的大小,缓存的数据大小,缓存的数据块数量,数据块索引数据偏移地址,缓存数据偏移地址;所述缓存的数据块索引数据包括数据块大小,数据块偏移地址,数据MD5,数据块位图和数据块时间信息。
[0022]优选地,所述数据块时间信息包括数据块创建时间,访问时间和修改时间。
[0023]优选地,对于长度较大的文件,按照一定比例分割成多个分片,分别取每个分片的一小段数据,利用所有的一小段数据共同生成MD5值。
[0024]优选地,对于所述物理存储文件中的每个所述缓存的数据块,能够对头部一定长度范围的数据进行加密,以防该数据被其他程序利用。
[0025]优选地,在数据写入时,在每个缓存文件中查找当前要写入的数据块,如果没有找至IJ,则通过空闲空间最接近数据块大小的原则挑选合适的物理文件,并创建新的数据块结构。如果找到则直接写入到相应的文件。
[0026]优选地,对于下载的数据块,在完整下载数据块并校验后再提交到上层应用。
[0027]优选地,对缓存的物理存储文件的总量进行限制,当下载的数据总量超过缓存的上限,需要对历史的缓存数据进行淘汰。
[0028]优选地,通过历史访问的时间,或者访问频率来挑选优先淘汰的数据,以满足当前所要存储的数据块的大小。
[0029]本发明的高效的本地缓存管理及读写方法具有如下优点:
[0030]通过物理存储文件大小按照指定数值,例如128M的倍数递增的方式来创建文件可以满足长度不固定的数据块的存储,小块数据集中存储在相对小的物理文件上,大块数据集中存储在大的物理文件上,避免文件分布不均造成的文件碎片多,使用率低的问题。同时,该存储策略能够降低单个文件存储造成的文件数量多,句柄多,占用系统资源高的问题。
[0031]每个物理存储文件头部开辟固定大小的空间用于存储该文件包含的所有数据块的数据结构,这样避免将这些数据存储在其他文件目录,方便了文件的管理,提高了数据加载的效率。
[0032]对大数据切割成多个分片,分别对每个分片取一定长度的数据来生成文件ID,由于不需要对整个文件计算MD5值,所以极大的提高了校验效率,对每个逻辑分片分别读取一定长度的数据,能够确保整个文件的正确性。

【专利附图】

【附图说明】
[0033]图1是根据本发明具体实施例的本地缓存数据的存储文件的数据结构;
[0034]图2是根据本发明具体实施例的本地缓存数据的存储文件的头部索引的数据结构。

【具体实施方式】
[0035]下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0036]为了尽可能的缩小不同长度的数据块导致的磁盘空间的浪费,本发明的本地缓存管理及读写方法在于,将本地缓存数据的多个物理存储文件的大小按照128M的倍数递增,最大值不超过1G,数据块的存储根据数据块的长度选择最接近的文件进行存储。即本地缓存数据的物理存储文件的大小可以依次为128M,256M, 384M, 512M, 640M, 768M, 896M, 1024M,所要缓存的数据块根据自身的大小,选择合适的物理存储文件进行存储。本领域技术人员均知道,物理磁盘的大小为2的N次方。由于本地缓存数据的物理存储文件的大小也=为128的N倍,这样就使得不同大小的物理存储文件能够相互组合,尽可能的实现对磁盘空间的充分利用,尽量降低不同长度的数据块可能导致的磁盘空间的浪费。通过创建长度不同的文件,可以满足长度不固定的数据块的存储,小块数据集中存储在相对小的物理文件上,大块数据集中存储在大的物理文件上,避免文件分布不均造成的文件碎片多,使用率低的问题。同时,该存储策略能够降低单个文件存储造成的文件数量多,句柄多,占用系统资源高的问题,还能
[0037]参见图1,公开了根据本发明具体实施例的本地缓存数据的存储文件的数据结构。进一步的,为了提高对物理存储文件的数据块的管理,所述物理存储文件的头部具有头部索引数据区,所述头部索引数据区的后面就存储有已经缓存的数据块。所述头部索引数据区具有固定大小的空间,用于存储所述物理存储文件所包含的所有数据块的数据结构,所述数据结构包括所述数据块的数量,数据块的大小、所述数据块存储地址和所述数据块的校验信息。因此,对于每个物理存储文件,只需要加载头部数据就能够加载各个数据块的相关信息。这样避免将这些数据存储在其他文件目录,方便了文件的管理,提高了数据加载的效率。
[0038]进一步的,参见图2,公开了根据本发明具体实施例的本地缓存数据的存储文件的头部索引数据区的具体结构,所述头部索引数据区包括缓存文件信息,以及缓存的数据块索引数据。
[0039]其中,所述缓存文件信息是指某一个物理文件的总体信息,包括整个文件的大小,缓存的数据大小,缓存的数据块数量,数据块索引数据偏移地址,缓存数据偏移地址。通过缓存文件信息可以明确文件的总大小,缓存了多少数据块,空闲空间大小,由此来确定是否可以容纳新的数据块,也可以通过该信息定位到数据块的索引数据位置和数据起始位置。
[0040]缓存的数据块索引数据是指当前物理文件已经缓存的所有数据块相关的数据结构,每个数据块都对应一个索引数据结构,为了方便表示每个数据块索引数据结构都用1,2,3,4…等编号,所述缓存的数据块索引数据主要包括数据块大小,数据块偏移地址,数据MD5,数据块位图和数据块时间信息,所述数据块时间信息包括数据块创建时间,访问时间和修改时间。通过数据块索引数据可以获得某数据块的完整度,校验数据,该数据块的数据的位置等信息。
[0041]进一步的,对于所述物理存储文件中的每个所述缓存的数据块,能够对头部一定长度范围的数据进行加密,以防数据被其他程序利用。加密长度和加密方式可以任意选择,不在本发明的限制范围之内。
[0042]上述是本发明的高校的本地缓存管理及读写方法在缓存数据文件结构方面所进行的改进,本发明还在缓存数据的访问,也就是读写方面进行了改进。
[0043]本发明将长度较大的文件,按照一定比例分割成多个分片,分别取每个分片的一小段数据,利用所有的一小段数据共同生成MD5值。例如,对于一个100M的文件,以20M为单位分成5个分片,然后取每个分片开始的50K大小的数据,即5个50K数据,利用该250K数据生成对应该100M文件的MD5值。
[0044]由于不需要对整个文件计算MD5值,这样既可提高校验的速度,又能确保整个文件的正确性。每个缓存文件的加载过程也是数据的校验过程。为了避免磁盘数据的错误导致错误数据在网络中流窜,需要对上传数据进行严格把关。对每个逻辑分片分别读取一定长度的数据,能够确保整个文件的正确性。缓存文件的头部保存已经下载完整的数据块的校验数据,每次加载一个完整的数据块都需要用该校验数据验证数据本身的正确性。
[0045]进一步的,本发明在数据写入时,在每个缓存文件中查找当前要写入的数据块,如果没有找到,则通过空闲空间最接近数据块大小的原则挑选合适的物理文件,并创建新的数据块结构。如果找到则直接写入到相应的文件。
[0046]在现有技术中,对完整下载的数据块需要进行数据校验,如果校验出错,则需要对当前的数据文件进行标记,并重新下载。为了提高程序效率,往往在数据下载过程中就会将数据提交到上层的应用,由于数据的校验发生在完整下载之后,所以提前提交的数据并不能保证数据的正确性,因此,为了提高对数据的正确性要求,本发明选择在完整下载数据块并校验后再提交到上层应用。
[0047]进一步的,本发明对缓存的物理存储文件的总量进行限制,当下载的数据总量超过缓存的上限,需要对历史的缓存数据进行淘汰。这样,能够腾出额外的空间来存储当前的数据,否则会影响程序的正常运行。
[0048]进一步优选地,本发明通过历史访问的时间,或者访问频率来挑选优先淘汰的数据,以满足当前所要存储的数据块的大小。
[0049]因此,本发明的高效的本地缓存管理及读写方法具有如下优点:
[0050]通过物理存储文件大小按照指定数值,例如128M的倍数递增的方式来创建文件可以满足长度不固定的数据块的存储,小块数据集中存储在相对小的物理文件上,大块数据集中存储在大的物理文件上,避免文件分布不均造成的文件碎片多,使用率低的问题。同时,该存储策略能够降低单个文件存储造成的文件数量多,句柄多,占用系统资源高的问题。
[0051]每个物理存储文件头部开辟固定大小的空间用于存储该文件包含的所有数据块的数据结构,这样避免将这些数据存储在其他文件目录,方便了文件的管理,提高了数据加载的效率。
[0052]对大数据切割成多个分片,分别对每个分片取一定长度的数据来生成文件ID,由于不需要对整个文件计算MD5值,所以极大的提高了校验效率,对每个逻辑分片分别读取一定长度的数据,能够确保整个文件的正确性。
[0053]以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的【具体实施方式】仅限于此,对于本发明所属【技术领域】的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单的推演或替换,都应当视为属于本发明由所提交的权利要求书确定保护范围。
【权利要求】
1.一种本地缓存管理及读写方法,其特征在于: 将本地缓存数据的多个物理存储文件的大小按照128M的倍数递增,最大值不超过1G,数据块的存储根据数据块的长度选择最接近的文件进行存储。
2.根据权利要求1所述的本地缓存管理及读写方法,其特征在于: 所述物理存储文件的头部具有头部索引数据区,所述头部索引数据区具有固定大小的空间,用于存储所述物理存储文件所包含的所有数据块的数据结构,所述数据结构包括所述数据块的数量,数据块的大小、所述数据块存储地址和所述数据块的校验信息。
3.根据权利要求2所述的本地缓存管理及读写方法,其特征在于: 所述头部索引数据区包括缓存文件信息,以及缓存的数据块索引数据; 其中所述缓存文件信息是指所述物理文件的总体信息,包括整个文件的大小,缓存的数据大小,缓存的数据块数量,数据块索引数据偏移地址,缓存数据偏移地址; 所述缓存的数据块索引数据包括数据块大小,数据块偏移地址,数据MD5,数据块位图和数据块时间信息。
4.根据权利要求3所述的本地缓存管理及读写方法,其特征在于: 所述数据块时间信息包括数据块创建时间,访问时间和修改时间。
5.根据权利要求1-4中任意一项所述的本地缓存管理及读写方法,其特征在于: 对于长度较大的文件,按照一定比例分割成多个分片,分别取每个分片的一小段数据,利用所有的一小段数据共同生成MD5值。
6.根据权利要求5所述的本地缓存管理及读写方法,其特征在于: 对于所述物理存储文件中的每个所述缓存的数据块,能够对头部一定长度范围的数据进行加密,以防该数据被其他程序利用。
7.根据权利要求5所述的本地缓存管理及读写方法,其特征在于: 在数据写入时,在每个缓存文件中查找当前要写入的数据块,如果没有找到,则通过空闲空间最接近数据块大小的原则挑选合适的物理文件,并创建新的数据块结构。如果找到则直接写入到相应的文件。
8.根据权利要求5所述的本地缓存管理及读写方法,其特征在于: 对于下载的数据块,在完整下载数据块并校验后再提交到上层应用。
9.根据权利要求5所述的本地缓存管理及读写方法,其特征在于: 对缓存的物理存储文件的总量进行限制,当下载的数据总量超过缓存的上限,需要对历史的缓存数据进行淘汰。
10.根据权利要求9所述的本地缓存管理及读写方法,其特征在于: 通过历史访问的时间,或者访问频率来挑选优先淘汰的数据,以满足当前所要存储的数据块的大小。
【文档编号】G06F12/08GK104239234SQ201410538375
【公开日】2014年12月24日 申请日期:2014年10月13日 优先权日:2014年10月13日
【发明者】郑汝波, 张士波, 杨敬宇, 姚键, 潘柏宇, 卢述奇 申请人:合一网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1