发明内容
针对上述技术问题,本发明采取了一种基于二维平面成角的文件存储方法,通过建立待存储文件到平面直角坐标系映射关系的模型,解决了数据扩展性问题与数据迁移问题,并同时解决了文件和存储节点映射关系数据的维护问题。
本发明采用如下方法来实现:一种基于二维平面成角的文件存储方法:包括:
基于哈希算法计算待存储文件的唯一标识;根据唯一标识建立待存储文件与平面直角坐标系的映射关系;根据平面映射关系计算直角坐标系上的方向角大小;建立待存储文件的方向角与存储节点映射关系。
进一步地,所述哈希算法包括: MD5哈希算法,SHA-1哈希算法,SHA-256哈希算法。
进一步地,基于MD5哈希算法计算待存储文件的唯一标识;所述根据唯一标识建立待存储文件与平面直角坐标系的映射关系具体为:
使用计算得到的MD5值前16个字节表示x坐标轴区间范围,使用后16个字节表示y坐标轴区间范围,并分别将前16个字节和后16个字节进行整数化,即可确定待存储文件在平面直角坐标系的映射关系为(FILEX,FILEY)。
进一步地,所述整数化的方法为采用函数STR2HEX进行整数化。
进一步地,所述待存储文件的方向角为psi=arctan(FILEX/FILEY)且psi的取值范围为0~360度;且每个方向角是唯一的,所有方向角之和为360度。
本发明还提供了一种基于二维平面成角的文件存储***,其特征在于,包括:
标识模块,用于基于哈希算法计算待存储文件的唯一标识;
映射模块一,用于根据唯一标识建立待存储文件与平面直角坐标系的映射关系;
计算模块,用于根据平面映射关系计算直角坐标系上的方向角大小;
映射模块二,用于建立待存储文件的方向角与存储节点映射关系。
进一步地,所述哈希算法包括: MD5哈希算法,SHA-1哈希算法,SHA-256哈希算法。
进一步地,基于MD5哈希算法计算待存储文件的唯一标识;所述根据唯一标识建立待存储文件与平面直角坐标系的映射关系具体为:使用计算得到的MD5值前16个字节表示x坐标轴区间范围,使用后16个字节表示y坐标轴区间范围,并分别将前16个字节和后16个字节进行整数化,即可确定待存储文件在平面直角坐标系的映射关系为(FILEX,FILEY)。
进一步地,所述整数化的方法为采用函数STR2HEX进行整数化。
进一步地,所述待存储文件的方向角为psi=arctan(FILEX/FILEY)且psi的取值范围为0~360度;且每个方向角是唯一的,所有方向角之和为360度。
本发明的有益效果为:本发明具有高度扩展性,存储节点数大于等于1,支持高扩展,实现了“即满即扩”,且负载均衡只是针对单个存储节点,大大降低了数据迁移量级,降低了负载均衡所用时间,降低了网络IO消耗,从而保持了存储***的性能;另外,本发明提供了一种种基于二维平面成角的文件存储***,不再受制于文件索引数据,文件和存储节点的映射关系可以实时计算得出。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明。
本发明首先提供了一种基于二维平面成角的文件存储方法实施例,如图1所示,包括:
S101基于哈希算法计算待存储文件的唯一标识;
S102根据唯一标识建立待存储文件与平面直角坐标系的映射关系;
S103根据平面映射关系计算直角坐标系上的方向角大小;
S104建立待存储文件的方向角与存储节点映射关系。
进一步地,所述哈希算法包括: MD5哈希算法,SHA-1哈希算法,SHA-256哈希算法。
进一步地,基于MD5哈希算法计算待存储文件的唯一标识;所述根据唯一标识建立待存储文件与平面直角坐标系的映射关系具体为:
使用计算得到的MD5值前16个字节表示x坐标轴区间范围,使用后16个字节表示y坐标轴区间范围,并分别将前16个字节和后16个字节进行整数化,即可确定待存储文件在平面直角坐标系的映射关系为(FILEX,FILEY)。
进一步地,所述整数化的方法为采用函数STR2HEX进行整数化。
其中,定义变量MD5VAL_PRE16 = MD5 VALUE 前16个字节;
变量MD5VAL_SUF16 = MD5 VALUE 后16个字节;
则,前16个字节的最小值MIN(MD5VAL_PRE16) = 0000000000000000;
中心数为MID(MD5VAL_PRE16)=7FFFFFFFFFFFFFFF;
前16个字节的最大值MAX(MD5VAL_PRE16) = FFFFFFFFFFFFFFFF;
后16个字节的最小值MIN(MD5VAL_SUF16)=0000000000000000;
中心数为MID(MD5VAL_SUF16)=7FFFFFFFFFFFFFFF;
后16个字节的最大值MAX(MD5VAL_SUF16) = FFFFFFFFFFFFFFFF;
根据以上数据信息,约定XY轴正负区间范围
x正半轴区间范围:[MIN(MD5VAL_PRE16),MID(MD5VAL_PRE16)]
x负半轴区间范围:(-MAX(MD5VAL_PRE16)+ MID(MD5VAL_PRE16) ,0]
y正半轴区间范围:[MIN(MD5VAL_SUF16),MID(MD5VAL_SUF16)]
y负半轴区间范围:(-MAX(MD5VAL_SUF16)+ MID(MD5VAL_SUF16) ,0]
并设STR2HEX(MD5VAL_PRE16)为变量m,STR2HEX(MD5VAL_SUF16)为变量n;
判断m是否大于MID(MD5VAL_PRE16),如果是,则待存储文件在X坐标轴上的值FILEX=MIN(MD5VAL_PRE16),否则为m;
判断n是否大于MID(MD5VAL_SUF16),如果是,则待存储文件在Y坐标轴上的值FILEY =MID(MD5VAL_PRE16) - STR2HEX(MD5VAL_PRE16),否则为n;
进一步地,所述待存储文件的方向角为psi=arctan(FILEX/FILEY)且psi的取值范围为0~360度;且每个方向角是唯一的,所有方向角之和为360度。
本发明还提供了基于二维平面成角的文件存储***实施例,如图2所示,包括:
标识模块201,用于基于哈希算法计算待存储文件的唯一标识;
映射模块一202,用于根据唯一标识建立待存储文件与平面直角坐标系的映射关系;
计算模块203,用于根据平面映射关系计算直角坐标系上的方向角大小;
映射模块二204,用于建立待存储文件的方向角与存储节点映射关系。
进一步地,所述哈希算法包括: MD5哈希算法,SHA-1哈希算法,SHA-256哈希算法。
进一步地,基于MD5哈希算法计算待存储文件的唯一标识;所述根据唯一标识建立待存储文件与平面直角坐标系的映射关系具体为:使用计算得到的MD5值前16个字节表示x坐标轴区间范围,使用后16个字节表示y坐标轴区间范围,并分别将前16个字节和后16个字节进行整数化,即可确定待存储文件在平面直角坐标系的映射关系为(FILEX,FILEY)。
进一步地,所述整数化的方法为采用函数STR2HEX进行整数化。
其中,定义变量MD5VAL_PRE16 = MD5 VALUE 前16个字节;
变量MD5VAL_SUF16 = MD5 VALUE 后16个字节;
则,前16个字节的最小值MIN(MD5VAL_PRE16) = 0000000000000000;
中心数为MID(MD5VAL_PRE16)=7FFFFFFFFFFFFFFF;
前16个字节的最大值MAX(MD5VAL_PRE16) = FFFFFFFFFFFFFFFF;
后16个字节的最小值MIN(MD5VAL_SUF16)=0000000000000000;
中心数为MID(MD5VAL_SUF16)=7FFFFFFFFFFFFFFF;
后16个字节的最大值MAX(MD5VAL_SUF16) = FFFFFFFFFFFFFFFF;
根据以上数据信息,约定XY轴正负区间范围
x正半轴区间范围:[MIN(MD5VAL_PRE16),MID(MD5VAL_PRE16)]
x负半轴区间范围:(-MAX(MD5VAL_PRE16)+ MID(MD5VAL_PRE16) ,0]
y正半轴区间范围:[MIN(MD5VAL_SUF16),MID(MD5VAL_SUF16)]
y负半轴区间范围:(-MAX(MD5VAL_SUF16)+ MID(MD5VAL_SUF16) ,0]
并设STR2HEX(MD5VAL_PRE16)为变量m,STR2HEX(MD5VAL_SUF16)为变量n;
判断m是否大于MID(MD5VAL_PRE16),如果是,则待存储文件在X坐标轴上的值FILEX=MIN(MD5VAL_PRE16),否则为m;
判断n是否大于MID(MD5VAL_SUF16),如果是,则待存储文件在Y坐标轴上的值FILEY =MID(MD5VAL_PRE16) - STR2HEX(MD5VAL_PRE16),否则为n;
进一步地,所述待存储文件的方向角为psi=arctan(FILEX/FILEY)且psi的取值范围为0~360度;且每个方向角是唯一的,所有方向角之和为360度。
本发明提出的基于二维平面成角的文件存储方法具有以下优势:
1. 具有高度扩展性,存储节点数大于等于N(N>1),支持高扩展,实现了“即满即扩”;
2. 负载均衡只是针对单个存储节点,大大降低了数据迁移量级,降低了负载均衡所用时间,降低了网络IO消耗,从而保持了存储***的性能;
3. 存储***不再受制于文件索引数据,因为本存储***不再需要文件索引数据,待存储文件和存储节点的映射关系实时计算出来的。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明可用于众多通用或专用的计算***环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器***、基于微处理器的***、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何***或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。