CN103714091B - 一种生成对象识别符及从其中提取属性信息的方法及装置 - Google Patents
一种生成对象识别符及从其中提取属性信息的方法及装置 Download PDFInfo
- Publication number
- CN103714091B CN103714091B CN201210380146.4A CN201210380146A CN103714091B CN 103714091 B CN103714091 B CN 103714091B CN 201210380146 A CN201210380146 A CN 201210380146A CN 103714091 B CN103714091 B CN 103714091B
- Authority
- CN
- China
- Prior art keywords
- byte
- data block
- bit sequence
- attribute information
- character
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种生成对象识别符及从对象标识符中提取属性信息的方法及装置;其中,生成对象标识符的方法包括:获取客户端上传的、保存在存储服务器本地的数据块的属性信息;将所述数据块的属性信息按照比特序列和字符之间的一一对应关系转换为字符串,作为该数据块的对象标识符。本申请能使上传并保存到存储服务器中的文件访问和检查起来更加便利。
Description
技术领域
本发明涉及网络领域,尤其涉及一种生成对象识别符及从其中提取属性信息的方法及装置。
背景技术
在网络文件系统中,通常会运行存储服务器,该存储服务器负责将客户的上传数据保存下来,提供底层的存储服务。当客户端上传数据块(可以是一个文件或一块数据)到存储服务器时,存储服务器将这个文件或这块数据保存到本地一个文件中去,此时不可以直接使用客户端所看到的名字,因为,第一,客户端上传的可能是一块数据,而非一个文件,没有具体的文件名,第二,即使客户上传的是一个文件,有可能本地也存在这样的一个文件,就会发生文件名冲突。因此,存储服务器就会按照某种算法来给这个本地文件命名,而这个本地文件名被称为OBJID(对象识别符)。
最常见的OBJID生成算法,即使用UUID生成算法,然后在storage(存储器)中,存储一个小型KV数据库,维护一个用户的逻辑路径到OBJID的映射关系。UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API(Application Programming Interface,应用程序编程接口)。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。
由于常见的OBJID生成算法太简单,OBJID包含的信息太少,无法获得额外的信息,因此无法提供访问的便利。
发明内容
本申请要解决的技术问题是如何使上传并保存到存储服务器中的文件访问和检查起来更加便利。
为了解决上述问题,本申请提供了一种生成对象识别符的方法,包括:
获取客户端上传的、保存在存储服务器本地的数据块的属性信息;
将所述数据块的属性信息按照比特序列和字符之间的一一对应关系转换为字符串,作为该数据块的对象识别符。
进一步地,所述属性信息包括以下任一个或任几个:数据块的CRC32值、该数据块的最后一次修改时间、大小、所述存储服务器的主机名称。
进一步地,当所述属性信息包括所述存储服务器的主机名称时,所述获取客户端上传的、保存在存储服务器本地的数据块的属性信息的步骤包括:
获取所述存储服务器的主机名称,然后分别将主机名称中各偶数字节的字符最高位设置为1后,与位于本字节前的相邻奇数字节的字符进行或运算,将或运算的结果按照进行或运算的字节在主机名称中的顺序排列,得到的压缩后的主机名称,作为属性信息。
进一步地,所述将所述数据块的属性信息按照比特序列和字符之间的一一对应关系转换为字符串,作为该数据块的对象识别符的步骤包括:
将所述数据块的属性信息转换为该数据块的代码,该代码中各字节为N比特的比特序列;N为正整数;
根据2N种N比特的比特序列和字符的一一对应关系,将一个数据块的代码中第n个字节的比特序列所对应的字符,作为该数据块的对象识别符的第n位;其中n为小于或等于该数据块代码字节长度的各个正整数。
进一步地,所述N比特的比特序列中,N为小于或等于6的正整数。
进一步地,N为6;所述将数据块的属性信息转换为数据块的代码的步骤包括:
依序将数据块的属性信息每三个字节作为一组,如果最后剩余一个或两个字节则作为特定的一组;
对于每一组的三个字节,将其中第一个字节、与左移8位后的第二个字节、与左移16位后的第三个字节进行或运算,或运算结果作为本组的中间结果;对于所述特定的一组,如果包含一个字节,则将该字节本身作为本组的中间结果,如果包含两个字节,则将第一个字节和左移8位后的第二个字节进行或运算,或运算结果作为本组的中间结果;
对于各组的中间结果,将其低6位作为本组转换得到的第一个代码字节,将其和11001111的与运算结果右移6位后作为本组转换得到的第二个代码字节,将其和11110011的与运算结果右移12位后作为本组转换得到的第三个代码字节,将其和11111100的与运算结果右移18位后作为本组转换得到的第四个代码字节;各组转换得到的代码的排列顺序同各组原先的排列顺序。
进一步地,采用一字符表来记录2N种比特序列和字符的一一对应关系;其中,将2N种比特序列各采用该比特序列所代表的二进制数所转换成的的十进制数值表示;建立一个字符串数组作为所述字符表。
本申请还提供了一种生成对象识别符的装置,包括:
获取模块,用于获取客户端上传的、保存在存储服务器本地的数据块的属性信息;
转换模块,用于将所述数据块的属性信息按照比特序列和字符之间的一一对应关系转换为字符串,将转换得到的字符串作为该数据块的对象识别符。
进一步地,所述属性信息包括以下任一个或任几个:数据块的CRC32值、该数据块的最后一次修改时间、大小、所述存储服务器的主机名称。
进一步地,当所述属性信息包括所述存储服务器的主机名称时,所述获取模块获取客户端上传的、保存在存储服务器本地的数据块的属性信息是指:
所述获取模块获取所述存储服务器的主机名称,然后分别将主机名称中各偶数字节的字符最高位设置为1后,与位于本字节前的相邻奇数字节的字符进行或运算,将或运算的结果按照进行或运算的字节在主机名称中的顺序排列,得到的压缩后的主机名称,作为属性信息。
进一步地,所述转换模块包括:
第一转换模块,用于将所述数据块的属性信息转换为该数据块的代码,该代码中各字节为N比特的比特序列;N为正整数;
第二转换模块,用于根据2N种N比特的比特序列和字符的一一对应关系,将一个数据块的代码中第n个字节的比特序列所对应的字符,作为该数据块的对象识别符的第n位;其中n为小于或等于该数据块代码字节长度的各个正整数。
进一步地,所述N比特的比特序列中,N为小于或等于6的正整数。
进一步地,N为6;
所述第一转换模块包括:
分组子模块,用于依序将数据块的属性信息每三个字节作为一组,如果最后剩余一个或两个字节则作为特定的一组;
中间计算子模块,用于对于每一组的三个字节,将其中第一个字节、与左移8位后的第二个字节、与左移16位后的第三个字节进行或运算,或运算结果作为本组的中间结果;对于所述特定的一组,如果包含一个字节,则将该字节本身作为本组的中间结果,如果包含两个字节,则将第一个字节和左移8位后的第二个字节进行或运算,或运算结果作为本组的中间结果;
代码生成子模块,用于对于每一组的中间结果,将其低6位作为本组转换得到的第一个代码字节,将其和11001111的与运算结果右移6位后作为本组转换得到的第二个代码字节,将其和11110011的与运算结果右移12位后作为本组转换得到的第三个代码字节,将其和11111100的与运算结果右移18位后作为本组转换得到的第四个代码字节;各组转换得到的代码的排列顺序同各组原先的排列顺序。
进一步地,所述第二转换模块采用一字符表来记录2N种比特序列和字符的一一对应关系;其中,将2N种比特序列各采用该比特序列所代表的二进制数的十进制数值表示;建立一个字符串数组作为所述字符表。
本申请还提供了一种从对象识别符提取属性信息的方法,包括:
根据比特序列和字符之间的一一对应关系,分别将数据块的对象识别符中的每个字符转换为比特序列;
由所述转换得到的比特序列获得所述数据块的属性信息。
进一步地,所述转换得到的比特序列包括N比特;N为正整数;
根据比特序列和字符之间的一一对应关系,分别将数据块的对象识别符中的每个字符转换为比特序列的步骤包括:
所述根据2N种N比特的比特序列和字符的一一对应关系,将数据块的对象识别符中的第n位字符,转换为代码中第n个字节的比特序列;其中所述代码的各字节为N比特的比特序列,n为小于或等于该对象识别符的字符个数的各个正整数。
本申请还提供了一种从对象识别符提取属性信息的装置,包括:
第一转换单元,用于根据比特序列和字符之间的一一对应关系,分别将数据块的对象识别符中的每个字符转换为比特序列;
第二转换单元,用于由所述转换得到的比特序列获得所述数据块的属性信息。
进一步地,所述转换得到的比特序列包括N比特,N为正整数;
所述第一转换单元根据比特序列和字符之间的一一对应关系,分别将数据块的对象识别符中的每个字符转换为比特序列是指:
所述第一转换单元根据2N种N比特的比特序列和字符的一一对应关系,将数据块的对象识别符中的第n位字符,转换为代码中第n个字节的比特序列;其中所述代码的各字节为N比特的比特序列,n为小于或等于该对象识别符的字符个数的各个正整数。
本申请的至少一个实施例的技术方案可应用在网络文件系统中(如分布式文件系统或并行文件系统),将客户端上传的数据块(可以是一个文件,也可以是没有文件名的一块数据)存储在本地,用OBJID来标示,由于在OBJID中增加额外信息,因此可以为后续文件的访问或检查提供极大的便利,减少了元数据数据量,增加了系统的吞吐量。本申请的其它备选方案提供了详细的信息压缩算法,使OBJID能携带大量信息。当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有优点。
附图说明
图1是实施例一的流程示意图;
图2是实施例一中具体备选方案的流程示意图;
图3是实施例二中装置的示意框图;
图4是实施例三的流程示意图;
图5是实施例四的装置的示意框图。
具体实施方式
下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
实施例一,一种生成对象识别符的方法,如图1所示,包括:
S11、获取客户端上传的、保存在存储服务器本地的数据块的属性信息,可以但不限于将所获取的属性信息保存在buffer(缓冲区)中;本实施例中,所述属性信息可以但不限于包括以下任一个或任几个:CRC32值、该数据块的最后一次修改时间、大小、所述存储服务器的hostname(主机名称)等;
S12、将所述数据块的属性信息按照比特序列和字符之间的一一对应关系转换为字符串,作为该数据块的对象识别符。
本实施例的一种备选方案中,步骤S12具体可以包括:
将数据块的属性信息转换为该数据块的code(代码),code中各字节为N比特的比特序列;N为正整数;可以但不限于为小于或等于6的正整数;
根据2N种N比特的比特序列和字符(含数字、字母、各种符号等)的一一对应关系,将一个数据块的code中第n个字节的比特序列对应的字符,作为该数据块的OBJID的第n位;其中n为小于或等于该数据块code字节长度(也就是字节的个数)的各个正整数(即n=1,2,……,code字节长度)。
N为小于或等于6的正整数是为了保证OBJID中的字符是可打印的常规字符;有些备选方案中,并不将属性信息转换为N比特一个字节的code,而是保持8bit一个字节的原始模式,根据比特序列(8比特)和字符之间的一一对应关系将每个字节分别转换为字符,来得到OBJID,这样可能会使OBJID中包含一些不够常规的字符,但依然可以实现本方案。
比较优选的可以取N为6,因为N为6时只会有64种字符(因为每个比特可以有“0”,“1”两种取值,因此对于6比特的比特序列而言,共有26种比特序列),能保证是可打印字符,而且也不会因为N太小而导致最后的OBJID过长。当然,也可以视情况将N定为5、4、3、2、1。
本实施例的一种备选方案中,2N种比特序列和字符的一一对应关系具体可以是指:2N种比特序列所代表的二进制数所转换成的十进制数值(0~2N-1,比如N为6时,所述十进制数值包括0~63)和字符的一一对应关系。
该备选方案中,code中第n个字节的比特序列对应的字符即:该第n个字节的比特序列所表示的二进制数转换得到的十进制数值所对应的字符。比如字节的比特序列为000101,将其视为二进制数,转换得到的十进制数值为5,则找到5对应的字符即可。
在其它备选方案里,也可以直接将比特序列和字符对应,或采用别的形式来对应字符和比特序列。
本实施例及其备选方案可以得到包含数据块属性信息的OBJID,该OBJID加上该数据块存储的绝对路径,就可以唯一标识该数据块;绝对路径的算法可参照现有技术执行。
本实施例的一种备选方案中,所述方法还可以包括:
如果客户端上传了所述数据块的扩展文件名,则将该扩展文件名填补在OBJID的最后。
本实施例的一种备选方案中,当所述属性信息包括CRC32值时,所述步骤S11可以包括:
计算该数据块的CRC32值。
CRC32是CRC(循环冗余校验码)校验实用程序库。在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。在诸多检错手段中,CRC32是最著名的一种。CRC的特点是:检错能力极强,开销小,易于用编码器及检测电路实现。
本实施例的一种备选方案中,当所述属性信息包括所述存储服务器的hostname时,所述步骤S11可以包括:
获取所述存储服务器的hostname,然后分别将hostname中各偶数字节的字符最高位设置为1后,与位于本字节前的相邻奇数字节的字符进行或运算,将或运算的结果按照进行或运算的字节在hostname中的顺序排列,得到压缩后的hostname;压缩后的hostname为(全部或部分)属性信息。
在其它备选方案中,可采用别的方式压缩hostname,也可以借鉴上面的步骤,调整一些细节来实现,比如调整设置的位/数值、调整或运算的对象、增加或撤销与/或运算等。
根据RFC1034协议,hostname不允许超过64个字节并且使用的字符不会超过128,因此,上述步骤可通过下面的算法实现:
其中,0x80在计算机内部表示为10000000;这样可以得到32个字节的hostname;实际应用时也可以采用其它方式压缩hostname。
本实施例的一种备选方案中,存储所述数据块属性信息的buffer可以但不限于为52个字节,可以但不限于使用其中0~31字节存储压缩后的hostname,32~35字节存储该数据块的CRC32值,36~43字节存储该数据块的大小,44~51字节存储该数据块的最后一次修改时间。
实际应用时可根据需要来规定buffer的大小,及属性信息在buffer中的存放位置,且属性信息还可以包括其它的、代表数据块属性的信息。
本实施例的一种备选方案中,N为6,将数据块属性信息转换为数据块的code的步骤可以包括:
依序将buffer中的数据块属性信息每三个字节作为一组;如果最后剩余一个或两个字节则作为特定的一组;
对于每一组的三个buffer字节,将其中第一个字节、与左移8位后的第二个字节、与左移16位后的第三个字节进行或运算,或运算结果作为本组的中间结果;对于所述特定的一组,如果包含一个字节,则将该字节本身作为本组的中间结果,如果包含两个字节,则将第一个字节和左移8位后的第二个字节进行或运算,或运算结果作为本组的中间结果;
对于各组的中间结果,将其低6位作为本组转换得到的第一个code字节,将其和11001111的与运算结果右移6位后作为本组转换得到的第二个code字节,将其和11110011的与运算结果右移12位后作为本组转换得到的第三个code字节,将其和11111100的与运算结果右移18位后作为本组转换得到的第四个code字节;各组转换得到的代码的排列顺序同各组原先的排列顺序。
这样的做法是为了对属性信息进行加密,保证和字符对应的不是属性信息的明文;其它备选方案中,可以不加密,比如直接将属性信息分割为N比特的比特序列;还有的备选方案可以采用其它加密方法,或采用别的方式转换得到code,也可以借鉴上面的步骤,调整一些细节来实现,比如调整移动的方向和位数、调整与运算的对象、增加或撤销移动、增加或撤销与/或运算等。
本实施例的一种备选方案中,N为6,当存储一数据块属性信息的buffer为52字节时,该数据块得到的code为72字节;上述将buffer中保存的数据块属性信息转换为数据块的code的步骤可通过下面的算法实现:
其中,0x3f在计算机内部表示为00111111;实际应用时也可以采用其它方式将buffer中存储的数据块属性信息转换为数据块的code。
本实施例的一种备选方案中,可以但不限于采用一字符表来记录2N种比特序列和字符的一一对应关系,将2N种比特序列各采用该比特序列所代表的二进制数所转换成的十进制数值表示,所述十进制数值包括0~63;可建立一个字符串数组alphabet作为字符表,将code中第n个字节二进制数所表示数值对应的字符,作为OBJID中的第n位的步骤具体可认为是按照下面的算法:
其中,OBJID[0]为OBJID的第一位,code[0]为code的第一个字节二进制数所表示数值,依此类推。
下面介绍一个备选方案的具体例子,该例子如图2所示,包括以下步骤S201~S215,其它备选方案中的步骤顺序不限于此。
S201:客户端上传一个数据块,存储服务器将这个数据块写入本地文件;
S202:当存储服务器写完这个数据块时,因为所有数据都会经过内存,故可以算出这个数据块的CRC32值;
S203:获取这个数据块的状态,从而获得这个数据块的modify timestamp(数据块的最后一次修改时间);
S204:获取这个数据块的大小;
S205:获取存储服务器的hostname;
S206:申请一段52字节的内存buffer,并将这段内存buffer清空;
S207:buffer的0~31的32个字节存储压缩后的hostname,将hostname中各偶数字节的字符高位设置为1,然后与本字节前一个奇数字节的字符进行或运算得到压缩后的hostname;
S208,buffer的32~35字节存储数据块的CRC32值;
S209,buffer的36~43字节存储数据块的大小;
S210,buffer的44~51字节存储数据块的modify timestamp;
S211,申请一段72个字节的内存code,并将这段内存清0;
S212,将原本8个bit一个字节的buffer转化为6bit一个字节的code,算法见上文;
S213:创建字符表,可建立一个字符串数组alphabet作为字符表,其中各数值和不同字符一一对应,比如:数值[0~25]分别对应字符“A”~“Z”,数值[26~51]分别对应字符“a”~“z”,数值[52~61]分别对应字符“0”~“9”,数值[62]对应字符“-”,数值[63]分别对应字符“_”;
S214:申请一段内存81个字符,存储OBJID;根据code填充OBJID,OBJID中的第n位即为字符表中对应于code第n个字节所表示数值的字符;
S215:将客户端上传的扩展文件名填补在OBJID的最后。
本实施例中,当存储服务器生成一个客户端文件或客户端数据(均为客户端上传的、保存在存储服务器本地的数据块)的OBJID的时候,将字节的hostname,数据的上传时间,CRC32的校验码,文件的大小,文件的类型填入OBJID时,会给整个系统带来巨大的便利,具体如下:
(1)有了CRC32校验码,可用做大量的校验工作。
a、当客户端下载文件的时候,直接可用通过CRC32算法计算出一个字节的校验码,与OBJID中的CRC32值进行核对,如果发生不一致,即可表明,下载的数据有错;
b、当这块数据同步到其他机器时,其他机器也可以通过CRC校验,检测数据是否正确;
c、如果整个网络文件系统中运行数据校验模块,可用通过遍历文件,读取文件的内容,再生产校验码,与名字中的CRC校验码进行匹配,检测数据是否因磁盘磁性衰减而发生数据丢失问题。
(2)有了文件大小:
a、当客户端下载该文件的时候,如果该文件放置于内存,可用提前申请对应大小的内存;
b、当做一些监控或空间统计或计费时,直接反解析OBJID,得到文件的大小,避免了发送请求到存储服务器,降低存储服务器的负荷;
c、有了文件扩展名,当客户端下载这个文件后,可以很方便告诉客户端,这个文件的类型。
(3)有了hostname:
a、可以根据OBJID反解析出存储服务器的hostname,直接将请求下载、查询命令发送到该存储服务器,省略了查询资源管理器的步骤,提升了整个系统的处理能力;
b、如果资源管理器找不到其他的存储服务器上存储该数据时,至少可以确定该hostname机器上存储该数据。
(4)有了modify timestamp:
a、当其他节点通过了该数据后,会更新它的同步timestamp到资源管理器,如果同步的timestamp比OBJID的timestamp要新,则表示已经同步了该文件;
b、当下载或查询该OBJID对应的文件时,资源管理可以根据同步timestamp得出哪些存储节点含有该数据,从而可以做一个负载平衡。
实施例二,一种生成对象识别符的装置,如图3所示,包括:
获取模块31,用于获取客户端上传的、保存在存储服务器本地的数据块的属性信息,可以但不限于将所述属性信息保存在自带或外界的缓冲区中;
转换模块,用于将所述数据块的属性信息按照比特序列和字符之间的一一对应关系转换为字符串,作为该数据块的对象识别符。
本实施例的一个备选方案中,所述转换模块可具体包括:
第一转换模块32,用于将数据块的属性信息转换为该数据块的代码,该代码中各字节为N比特的比特序列;N为正整数;可以但不限于为小于或等于6的正整数。
第二转换模块33,用于根据2N种N比特的比特序列和字符的一一对应关系;将一个数据块的代码中第n个字节的比特序列所对应的字符,作为该数据块的对象识别符的第n位;其中n为小于或等于该数据块代码字节长度的各个正整数。
N为小于或等于6的正整数是为了保证OBJID中的字符是可打印的常规字符;有些备选方案中,并不将属性信息转换为N比特一个字节的code,而是保持8bit一个字节的原始模式,根据比特序列(8比特)和字符之间的一一对应关系将每个字节分别转换为字符,来得到OBJID,这样可能会使OBJID中包含一些不够常规的字符,但依然可以实现本方案。
比较优选的可以取N为6,因为N为6时只会有64种字符(因为每个比特可以有“0”,“1”两种取值,因此对于6比特的比特序列而言,共有26种比特序列),能保证是可打印字符,而且也不会因为N太小而导致最后的OBJID过长。当然,也可以视情况将N定为5、4、3、2、1。所述属性信息可以但不限于包括以下任一个或任几个:数据块的CRC32值、该数据块的最后一次修改时间、大小、所述存储服务器的主机名称。
本实施例的一种备选方案中,当所述属性信息包括所述存储服务器的主机名称时,所述获取模块获取客户端上传的、保存在存储服务器本地的数据块的属性信息可以是指:
所述获取模块获取所述存储服务器的主机名称,然后分别将主机名称中各偶数字节的字符最高位设置为1后,与位于本字节前的相邻奇数字节的字符进行或运算,将或运算的结果按照进行或运算的字节在主机名称中的顺序排列,得到的压缩后的主机名称,作为属性信息。
在其它备选方案中,可采用别的方式压缩hostname,也可以借鉴上面的步骤,调整一些细节来实现,比如调整设置的位/数值、调整或运算的对象、增加或撤销与/或运算等。
本实施例的一种备选方案中,N为6,所述第一转换模块32具体可以包括:
分组子模块321,用于依序将数据块的属性信息每三个字节作为一组,如果最后剩余一个或两个字节则作为特定的一组;
中间计算子模块322,用于对于每一组的三个字节,将其中第一个字节、与左移8位后的第二个字节、与左移16位后的第三个字节进行或运算,或运算结果作为本组的中间结果;对于所述特定的一组,如果包含一个字节,则将该字节本身作为本组的中间结果,如果包含两个字节,则将第一个字节和左移8位后的第二个字节进行或运算,或运算结果作为本组的中间结果;
代码生成子模块323,用于对于每一组的中间结果,将其低6位作为本组转换得到的第一个代码字节,将其和11001111的与运算结果右移6位后作为本组转换得到的第二个代码字节,将其和11110011的与运算结果右移12位后作为本组转换得到的第三个代码字节,将其和11111100的与运算结果右移18位后作为本组转换得到的第四个代码字节;各组转换得到的代码的排列顺序同各组原先的排列顺序。
这样的做法是为了对属性信息进行加密,保证和字符对应的不是属性信息的明文;其它备选方案中,可以不加密,比如直接将属性信息分割为N比特的比特序列;还有的备选方案可以采用其它加密方法,或采用别的方式转换得到code,也可以借鉴上面的步骤,调整一些细节来实现,比如调整移动的方向和位数、调整与运算的对象、增加或撤销移动、增加或撤销与/或运算等。
本实施例的一种备选方案中,所述第二转换模块可以但不限于采用一字符表来记录2N种比特序列和字符的一一对应关系;其中,将2N种比特序列各采用该比特序列所代表的二进制数的十进制数值表示(0~2N-1,N为6时所述十进制数值包括0~63);可以但不限于建立一个字符串数组alphabet作为所述字符表。
本实施例的其它实现细节和备选方案可参考上一实施例。
实施例三,一种从对象识别符提取属性信息的方法,如图4所示,包括:
S41、根据比特序列和字符之间的一一对应关系,分别将数据块的对象识别符中的每个字符转换为比特序列;
S42、由所述转换得到的比特序列获得所述数据块的属性信息。
所述属性信息可以但不限于包括以下任一个或任几个信息段:数据块的CRC32值、该数据块的最后一次修改时间、大小、所述存储服务器的主机名称。本实施例的一种备选方案中,在得到属性信息后,可以根据事先规定的属性信息中各信息的位置和大小,具体得到各信息段。如果主机名称曾经加密,则还需要对在相应位置得到的主机名称进行解密。
本实施例的一种备选方案中,所述转换得到的比特序列包括N比特,N为正整数;可以但不限于为小于或等于6的正整数;
所述步骤41可以包括:
根据2N种N比特的比特序列和字符的一一对应关系,将数据块的对象识别符中的第n位字符,转换为代码中第n个字节的比特序列;其中所述代码的各字节为N比特的比特序列,n为小于或等于该对象识别符的字符个数的各个正整数;
所述步骤42相应的可以包括:
将所述代码转换为8比特一个字节的数据,作为数据块的属性信息。
在有的备选方案中,也可以直接由OBJID的字符得到8比特一个字节的数据,将该数据直接作为数据块的属性信息。
在有的备选方案中,如果代码曾经加密,则将所述代码转换为8比特一个字节的数据的步骤中需要进行解密。
实施例四,一种从对象识别符提取属性信息的装置,如图5所示,包括:
第一转换单元51,用于根据比特序列和字符之间的一一对应关系,分别将数据块的对象识别符中的每个字符转换为比特序列;
第二转换单元52,用于由所述转换得到的比特序列获得所述数据块的属性信息。
所述属性信息可以但不限于包括以下任一个或任几个信息段:数据块的CRC32值、该数据块的最后一次修改时间、大小、所述存储服务器的主机名称。本实施例的一种备选方案中,在得到属性信息后,可以根据事先规定的属性信息中各信息的位置和大小,具体得到各信息段。如果主机名称曾经加密,则还需要对在相应位置得到的主机名称进行解密。
本实施例的一种备选方案中,所述转换得到的比特序列包括N比特,N为正整数;可以但不限于为小于或等于6的正整数;
所述第一转换单元51根据比特序列和字符之间的一一对应关系,分别将数据块的对象识别符中的每个字符转换为比特序列是指:
所述第一转换单元51根据2N种N比特的比特序列和字符的一一对应关系,将数据块的对象识别符中的第n位字符,转换为代码中第n个字节的比特序列;其中所述代码的各字节为N比特的比特序列,n为小于或等于该对象识别符的字符个数的各个正整数;
所述第二转换单元52由所述转换得到的比特序列获得所述数据块的属性信息相应的可以是指:
所述第二转换单元52将所述代码转换为8比特一个字节的数据,作为数据块的属性信息。
在有的备选方案中,也可以直接由OBJID的字符得到8比特一个字节的数据,将该数据直接作为数据块的属性信息。
在有的备选方案中,如果代码曾经加密,则所述第二转换单元将所述代码转换为8比特一个字节的数据的步骤中需要进行解密。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。
Claims (16)
1.一种生成对象识别符的方法,包括:
获取客户端上传的、保存在存储服务器本地的数据块的属性信息;所述属性信息包括:循环冗余校验CRC32值、最后一次修改时间、大小、所述存储服务器的主机名称;
将存储所述数据块的属性信息的字节转换为该数据块的代码,所述代码中各字节为N比特的比特序列,其中N为正整数;分别将代码中每个字节的比特序列,按照比特序列和字符之间的一一对应关系转换为字符,将得到的字符串作为该数据块的对象识别符。
2.如权利要求1所述的方法,其特征在于:
当所述属性信息包括所述存储服务器的主机名称时,所述获取客户端上传的、保存在存储服务器本地的数据块的属性信息的步骤包括:
获取所述存储服务器的主机名称,然后分别将主机名称中各偶数字节的字符最高位设置为1后,与位于本字节前的相邻奇数字节的字符进行或运算,将或运算的结果按照进行或运算的字节在主机名称中的顺序排列,得到的压缩后的主机名称,作为属性信息。
3.如权利要求1或2所述的方法,其特征在于:
所述分别将代码中每个字节的比特序列,按照比特序列和字符之间的一一对应关系转换为字符,将得到的字符串作为该数据块的对象识别符包括:
根据2N种N比特的比特序列和字符的一一对应关系,将一个数据块的代码中第n个字节的比特序列所对应的字符,作为该数据块的对象识别符的第n位;其中n为小于或等于该数据块代码字节长度的各个正整数。
4.如权利要求3所述的方法,其特征在于,所述N比特的比特序列中,N为小于或等于6的正整数。
5.如权利要求3所述的方法,其特征在于,N为6;所述将存储数据块的属性信息的字节转换为数据块的代码的步骤包括:
依序将数据块的属性信息每三个字节作为一组,如果最后剩余一个或两个字节则作为特定的一组;
对于每一组的三个字节,将其中第一个字节、与左移8位后的第二个字节、与左移16位后的第三个字节进行或运算,或运算结果作为本组的中间结果;对于所述特定的一组,如果包含一个字节,则将该字节本身作为本组的中间结果,如果包含两个字节,则将第一个字节和左移8位后的第二个字节进行或运算,或运算结果作为本组的中间结果;
对于各组的中间结果,将其低6位作为本组转换得到的第一个代码字节,将其和11001111的与运算结果右移6位后作为本组转换得到的第二个代码字节,将其和11110011的与运算结果右移12位后作为本组转换得到的第三个代码字节,将其和11111100的与运算结果右移18位后作为本组转换得到的第四个代码字节;各组转换得到的代码的排列顺序同各组原先的排列顺序。
6.如权利要求3所述的方法,其特征在于:
采用一字符表来记录2N种比特序列和字符的一一对应关系;其中,将2N种比特序列各采用该比特序列所代表的二进制数所转换成的十进制数值表示;建立一个字符串数组作为所述字符表。
7.一种生成对象识别符的装置,其特征在于,包括:
获取模块,用于获取客户端上传的、保存在存储服务器本地的数据块的属性信息;所述属性信息包括:循环冗余校验CRC32值、最后一次修改时间、大小、所述存储服务器的主机名称;
转换模块,用于将存储所述数据块的属性信息的字节转换为该数据块的代码,所述代码中各字节为N比特的比特序列,其中N为正整数;分别将代码中每个字节的比特序列,按照比特序列和字符之间的一一对应关系转换为字符,将得到的字符串作为该数据块的对象识别符。
8.如权利要求7所述的装置,其特征在于:
当所述属性信息包括所述存储服务器的主机名称时,所述获取模块获取客户端上传的、保存在存储服务器本地的数据块的属性信息是指:
所述获取模块获取所述存储服务器的主机名称,然后分别将主机名称中各偶数字节的字符最高位设置为1后,与位于本字节前的相邻奇数字节的字符进行或运算,将或运算的结果按照进行或运算的字节在主机名称中的顺序排列,得到的压缩后的主机名称,作为属性信息。
9.如权利要求7或8所述的装置,其特征在于,所述转换模块包括:
第一转换模块,用于将存储所述数据块的属性信息的字节转换为该数据块的代码;
第二转换模块,用于根据2N种N比特的比特序列和字符的一一对应关系,将一个数据块的代码中第n个字节的比特序列所对应的字符,作为该数据块的对象识别符的第n位;其中n为小于或等于该数据块代码字节长度的各个正整数。
10.如权利要求9所述的装置,其特征在于,所述N比特的比特序列中,N为小于或等于6的正整数。
11.如权利要求9所述的装置,其特征在于,N为6;
所述第一转换模块包括:
分组子模块,用于依序将数据块的属性信息每三个字节作为一组,如果最后剩余一个或两个字节则作为特定的一组;
中间计算子模块,用于对于每一组的三个字节,将其中第一个字节、与左移8位后的第二个字节、与左移16位后的第三个字节进行或运算,或运算结果作为本组的中间结果;对于所述特定的一组,如果包含一个字节,则将该字节本身作为本组的中间结果,如果包含两个字节,则将第一个字节和左移8位后的第二个字节进行或运算,或运算结果作为本组的中间结果;
代码生成子模块,用于对于每一组的中间结果,将其低6位作为本组转换得到的第一个代码字节,将其和11001111的与运算结果右移6位后作为本组转换得到的第二个代码字节,将其和11110011的与运算结果右移12位后作为本组转换得到的第三个代码字节,将其和11111100的与运算结果右移18位后作为本组转换得到的第四个代码字节;各组转换得到的代码的排列顺序同各组原先的排列顺序。
12.如权利要求9所述的装置,其特征在于:
所述第二转换模块采用一字符表来记录2N种比特序列和字符的一一对应关系;其中,将2N种比特序列各采用该比特序列所代表的二进制数的十进制数值表示;建立一个字符串数组作为所述字符表。
13.一种从对象识别符提取属性信息的方法,包括:
根据比特序列和字符之间的一一对应关系,分别将数据块的对象识别符中的每个字符转换为比特序列;
由所述转换得到的比特序列获得所述数据块的属性信息;所述属性信息包括:循环冗余校验CRC32值、最后一次修改时间、大小、存储服务器的主机名称。
14.如权利要求13所述的方法,其特征在于:
所述转换得到的比特序列包括N比特;N为正整数;
根据比特序列和字符之间的一一对应关系,分别将数据块的对象识别符中的每个字符转换为比特序列的步骤包括:
所述根据2N种N比特的比特序列和字符的一一对应关系,将数据块的对象识别符中的第n位字符,转换为代码中第n个字节的比特序列;其中所述代码的各字节为N比特的比特序列,n为小于或等于该对象识别符的字符个数的各个正整数。
15.一种从对象识别符提取属性信息的装置,其特征在于,包括:
第一转换单元,用于根据比特序列和字符之间的一一对应关系,分别将数据块的对象识别符中的每个字符转换为比特序列;
第二转换单元,用于由所述转换得到的比特序列获得所述数据块的属性信息;所述属性信息包括:循环冗余校验CRC32值、最后一次修改时间、大小、存储服务器的主机名称。
16.如权利要求15所述的装置,其特征在于:
所述转换得到的比特序列包括N比特,N为正整数;
所述第一转换单元根据比特序列和字符之间的一一对应关系,分别将数据块的对象识别符中的每个字符转换为比特序列是指:
所述第一转换单元根据2N种N比特的比特序列和字符的一一对应关系,将数据块的对象识别符中的第n位字符,转换为代码中第n个字节的比特序列;其中所述代码的各字节为N比特的比特序列,n为小于或等于该对象识别符的字符个数的各个正整数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210380146.4A CN103714091B (zh) | 2012-10-09 | 2012-10-09 | 一种生成对象识别符及从其中提取属性信息的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210380146.4A CN103714091B (zh) | 2012-10-09 | 2012-10-09 | 一种生成对象识别符及从其中提取属性信息的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103714091A CN103714091A (zh) | 2014-04-09 |
CN103714091B true CN103714091B (zh) | 2020-01-21 |
Family
ID=50407076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210380146.4A Active CN103714091B (zh) | 2012-10-09 | 2012-10-09 | 一种生成对象识别符及从其中提取属性信息的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103714091B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104363126B (zh) * | 2014-11-27 | 2018-06-19 | 上海斐讯数据通信技术有限公司 | 路由器功能状态的统计方法、系统及其路由器 |
CN106021583B (zh) * | 2016-06-02 | 2021-09-17 | 北京京东尚科信息技术有限公司 | 页面流量数据的统计方法及其系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101622595A (zh) * | 2006-12-06 | 2010-01-06 | 弗森多系统公司(dba弗森-艾奥) | 用于服务器内的存储区域网络的装置、系统和方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7114048B2 (en) * | 2001-07-06 | 2006-09-26 | Sony Corporation | Recording apparatus, recording method, storage medium, program and communication apparatus |
CN100527133C (zh) * | 2007-11-12 | 2009-08-12 | 深圳市迅雷网络技术有限公司 | 一种存储视频文件的描述信息和视频片段的方法及系统 |
US8170213B1 (en) * | 2007-12-27 | 2012-05-01 | Emc Corporation | Methodology for coordinating centralized key management and encryption keys cached through proxied elements |
CN102339216A (zh) * | 2010-07-15 | 2012-02-01 | 江苏国光信息产业股份有限公司 | 基于VxWorks操作系统的汉字显示方法 |
CN102298641B (zh) * | 2011-09-14 | 2013-05-01 | 清华大学 | 一种基于键值库的文件与结构化数据统一存储方法 |
-
2012
- 2012-10-09 CN CN201210380146.4A patent/CN103714091B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101622595A (zh) * | 2006-12-06 | 2010-01-06 | 弗森多系统公司(dba弗森-艾奥) | 用于服务器内的存储区域网络的装置、系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103714091A (zh) | 2014-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10778441B2 (en) | Redactable document signatures | |
CN109902071B (zh) | 业务日志存储方法、系统、装置及设备 | |
US8811611B2 (en) | Encryption/decryption of digital data using related, but independent keys | |
CN111683046B (zh) | 文件压缩以及获取的方法、装置、设备及存储介质 | |
US8369523B2 (en) | Surrogate key generation using cryptographic hashing | |
JP2021513141A (ja) | 2次元バーコードの生成及び識別 | |
US20050002531A1 (en) | Randomization-based encryption apparatus and method | |
WO2014137587A1 (en) | Managing operations on stored data units | |
CN106849956B (zh) | 压缩方法、解压缩方法、装置和数据处理系统 | |
CN112035857B (zh) | 数据保护方法、装置、设备及介质 | |
EP2965187A1 (en) | Managing operations on stored data units | |
AU2014226447B2 (en) | Managing operations on stored data units | |
US12079474B2 (en) | System and method for data compaction and encryption of anonymized data records | |
CN103607420A (zh) | 面向云存储的安全电子医疗系统 | |
CN105450712A (zh) | 一种数据传输方法及装置 | |
CN116015767A (zh) | 一种数据处理方法、装置、设备及介质 | |
CN103714091B (zh) | 一种生成对象识别符及从其中提取属性信息的方法及装置 | |
CN116842242A (zh) | 一种批量隐私信息检索方法及装置 | |
CN115698996A (zh) | 用于安全存储数据的数据存储服务器和客户端设备 | |
CN113051024B (zh) | 虚拟机热迁移方法、装置、电子设备及存储介质 | |
CN114025024A (zh) | 一种数据传输方法及装置 | |
CN109240849B (zh) | 数据备份方法、装置及用于视频会议系统的多点控制单元 | |
CN118277628B (zh) | 数据访问控制方法、装置、计算机设备及存储介质 | |
CN113452759B (zh) | websocket通信报文的发送方法、接收方法及装置 | |
US11138158B2 (en) | Binding a local data storage device to remote data storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20191212 Address after: P.O. Box 31119, grand exhibition hall, hibiscus street, 802 West Bay Road, Grand Cayman, Cayman Islands Applicant after: Innovative advanced technology Co., Ltd Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands Applicant before: Alibaba Group Holding Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |