一种重新分布数据的方法和系统技术方案

技术编号:10862961 阅读:80 留言:0更新日期:2015-01-01 22:14
本发明专利技术适用于计算机领域,提供了一种重新分布数据的方法和系统,所述方法包括:申请多个大小相同的内存块;遍历每条待分布数据,获取所述每条待分布数据的大小;将所述每条待分布数据的大小与所述内存块的大小进行比较;根据所述比较的结果,将每条待分布数据写入所述内存块;将所述内存块中的待分布数据写入对应的文件。本发明专利技术实施例,申请多个大小相同的内存块,当待分布数据的大小大于至少一个内存块的大小时,将该数据写入至少两个内存块,并将内存块中的数据写入对应的文件中,提供了一种数据的分布方法,使得待分布数据的大小大于至少一个内存块的大小时,不会击穿内存块的缓冲区,方便内存管理。

【技术实现步骤摘要】
【专利摘要】本专利技术适用于计算机领域,提供了一种重新分布数据的方法和系统,所述方法包括:申请多个大小相同的内存块;遍历每条待分布数据,获取所述每条待分布数据的大小;将所述每条待分布数据的大小与所述内存块的大小进行比较;根据所述比较的结果,将每条待分布数据写入所述内存块;将所述内存块中的待分布数据写入对应的文件。本专利技术实施例,申请多个大小相同的内存块,当待分布数据的大小大于至少一个内存块的大小时,将该数据写入至少两个内存块,并将内存块中的数据写入对应的文件中,提供了一种数据的分布方法,使得待分布数据的大小大于至少一个内存块的大小时,不会击穿内存块的缓冲区,方便内存管理。【专利说明】一种重新分布数据的方法和系统
本专利技术属于数据存储领域,尤其涉及一种重新分布数据的方法和系统。
技术介绍
互联网业务的普及,用户数据量的极大增长,分布式服务有时候需要对全部数据重新分布,而在进行全部数据重新分布的过程中就会遇到如下情况:一批数据文件F1、F2...Fn,按照一定规则把这些文件中的数据重新分布,变成fl、f2...fm,如果文件数n、m个数很多,并且文件内记录数很多,且文件Fi中的数据离散的分布在fl...fm中,如果每次打开一个文件Fi,读取一条记录,按规则写入fj中。会造成对磁盘的随机写访问,导致处理性能下降100倍左右。 现有技术提出了一种将文件的随机写访问变成顺序写访问的方法,以解决处理性能低下的问题,所述方法为:(1 )、申请多个大小相同的内存块;(2)、将文件中每条待分布的数据写入所述内存块;(3)、将所述内存块中的数据写入对应的文件。通过上述方法可以使文件的随机写入变成顺序写入,但是每个内存块的大小相同,而需要写入的数据的大小不同,如果数据比内存块打的话,将击穿内存块的缓冲区,造成内存管理的困难。
技术实现思路
本专利技术实施例的目的在于提供一种重新分布数据的方法和系统,以解决现有技术的会击穿内存块的缓冲区的问题。 本专利技术实施例是这样实现的,一种重新分布数据的方法,所述方法包括以下步骤: 申请多个大小相同的内存块; 遍历每条待分布数据,获取所述每条待分布数据的大小; 将所述每条待分布数据的大小与所述内存块的大小进行比较; 根据所述比较的结果,将每条待分布数据写入所述内存块; 将所述内存块中的待分布数据写入对应的文件。 本专利技术实施例的另一目的在于提供一种重新分布数据的系统,所述系统包括: 内存块申请单元,用于申请多个大小相同的内存块; 数据大小获取单元,用于在所述内存块申请单元申请之后,遍历每条待分布数据,获取所述每条待分布数据的大小; 比较单元,用于将所述数据大小获取单元获取的每条待分布数据的大小与所述内存块申请单元申请的内存块的大小进行比较; 写入单元,用于根据所述比较单元比较的结果,将每条待分布数据写入所述内存块; 对应文件写入单元,用于将所述写入单元写入内存块的待分布数据写入对应的文件。 本专利技术实施例,申请多个大小相同的内存块,当待分布数据的大小大于至少一个内存块的大小时,将该数据写入至少两个内存块,并将内存块中的数据写入对应的文件中,提供了一种数据的分布方法,使得待分布数据的大小大于至少一个内存块的大小时,不会击穿内存块的缓冲区,提升了内存的性能,方便内存管理。 【专利附图】【附图说明】 为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。 图1是本专利技术实施例提供的重新分布数据方法的流程图; 图2是本专利技术实施例提供的重新分布数据系统的结构图。 【具体实施方式】 为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。 本专利技术实施例,申请多个大小相同的内存块,当待分布数据的大小大于至少一个内存块的大小时,将该数据写入至少两个内存块,并将内存块中的数据写入对应的文件中,提供了一种数据的分布方法,使得待分布数据的大小大于至少一个内存块的大小时,不会击穿内存块的缓冲区,提升了内存的性能,方便内存管理。 为了说明本专利技术所述的技术方案,下面通过具体实施例来进行说明。 实施例一 如图1所示为本专利技术实施例提供的重新分布数据方法的流程图,所述方法包括以下步骤: 在步骤S101中,申请多个大小相同的内存块。 在本专利技术实施例中,向存储待分布数据的服务器申请多个大小相同的内存块。向服务器申请多个大小相同的内存块的方法可以通过malloc函数来实现,malloc函数是向系统申请分配内存空间的函数,通过所述malloc函数即可实现向服务器申请内存块。申请内存块,即是申请内存的读写地址,比如:申请内存的0000h-1000h读写地址的内存段作为内存块,申请多个内存块即是在内存中申请多个如上所述内存段。 在步骤S102中,遍历每条待分布数据,获取所述每条待分布数据的大小。 在本专利技术实施例中,服务器对硬盘中的待分布数据进行遍历,获取每一条待分布数据的大小,比如:通过遍历获取到图片A:50kb、文档B:100kb等。需要指出的是,所述遍历可以是一次性对所有的待分布数据进行遍历,也可以是分批次的进行遍历(比如:第一次遍历30%、第二次遍历70%)。 在步骤S103中,将所述每条待分布数据的大小与所述内存块的大小进行比较。 在步骤S104中,根据所述比较的结果,将每条待分布数据写入所述内存块。 在本专利技术实施例中,服务器将遍历的每一条待分布数据的大小与单个内存块的大小进行比较,根据比较的结果将每条待分布数据分配到不同数量的内存块中。所述根据所述比较的结果,将每条待分布数据写入所述内存块的步骤,包括: 1、获取文件中的每条待分布数据。 在本专利技术实施例中,一个应用中保存有多条数据,用户首先从应用的文件中获取每条数据,该获取的数据即为待分布数据。 2、根据预设的划分规则,将获取的所述待分布数据划分为不同组。 在本专利技术实施例中,用户根据预设的划分规则,将获取的每条待分布数据划分为不同的组。举例说明:一个应用中保存的数据的种类可以为多种,包括:视频数据、图片数据、文档数据,因此可以将划分规则预设为“根据数据种类进行分组”,即可以把待分布数据划分为“视频数据组”、“图片数据组”、“文档数据组”。 3、根据比较的结果将所述组中的待分布数据写入所述内存块,所述写入包括:如果待分布数据的大小小于或等于一个所述内存块,将所述待分布数据写入一个所述内存块;或者,如果待分布数据的大小大于至少一个所述内存块,将所述待分布数据写入至少两个所述内存块。 在本专利技术实施例中,从不同的组中读取数据,即相当于按照预设的划分规则对待分布数据进行顺序读取,但是每一条待分布数据的大小都不相同,因此在将每条数据写入内存块的步骤中,使用不同的方法: (1)、如果一条数据的大小小于或等于一个内存块的大小,那么直接将数据写入该内存块。 (2)、如果一条数据的大小大于本文档来自技高网
...

【技术保护点】
一种重新分布数据的方法,其特征在于,所述方法包括以下步骤:申请多个大小相同的内存块;遍历每条待分布数据,获取所述每条待分布数据的大小;将所述每条待分布数据的大小与所述内存块的大小进行比较;根据所述比较的结果,将每条待分布数据写入所述内存块;将所述内存块中的待分布数据写入对应的文件。

【技术特征摘要】

【专利技术属性】
技术研发人员:邢玉东
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

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

1