识别码生成方法和系统的制作方法

文档序号:6332674阅读:411来源:国知局
专利名称:识别码生成方法和系统的制作方法
技术领域
本发明涉及识别码处理技术,尤其涉及一种识别码生成方法和系统。
背景技术
在基于关系型数据库技术的软件系统中,通常,每个数据表需要用一个ID来唯一 的标识某行记录,比如ERP系统中每个生产订单都会有一个唯一的标识。目前市场上的软件产品中主要存在两大类产生系统内唯一 ID的方法(1)采用 UUID(Universally Unique Identifier,通用唯一识别码)的方式产生 一个全球唯一的识别码。该方法的优点是已经有公开的算法,很多高级的开发语言本身已 经提供了相应的工具包,能够保证在分布式环境中产生的ID具有唯一性,运行效率也比较 高。缺点是UUID由36个字符组成,长度过大,占用存储空间较多,在大型的数据库系统中 会影响数据存取的效率,对于WEB系统来讲,网络上传递大量的此类ID所产生的流量也较 大,进而影响到网站响应的速度。(2)应用程序根据软件运行环境的特定信息,运用一定的算法,自己产生一个依赖 于特定运行环境的唯一识别码。该方法的优点是产生的ID长度可控,缺点是很难保证产生 的ID在整个系统尤其是分布式系统中唯一性,运行时通常需要考虑一些相关信息,往往运 行效率也较低。因此,需要一种识别码生成方式,既能够保证在分布式系统产生的ID具有唯一 性,又能够有效的降低ID所占的字节数,节约存储空间,保证数据存储的效率,不至于增加 太多的网络流量。

发明内容
鉴于以上,本发明的技术方案所要解决的技术问题在于,提供一种识别码生成方 法和系统,既能够保证在分布式系统产生的ID具有唯一性,又能够有效的降低ID所占的字 节数,节约存储空间,保证数据存储的效率,不至于增加太多的网络流量。本发明提供了一种识别码生成方法,包括步骤S102,根据通用唯一识别码通用 算法生成第一长度的第一字符串;步骤S 104,去除所述第一字符串中的链接符,将所述第 一长度的所述第一字符串变为第二长度的第二字符串;步骤S106,将所述第二长度的所述 第二字符串中的字符进行分组、压缩,并将压缩后的字符进行拼接,生成第三长度的第三字 符串,其中,所述第三字符串为识别码。通过该技术方案,可以生成既有唯一性又节约存储 空间的识别码,保证数据存储的效率。在上述技术方案中,优选地,在所述步骤S102中,所述第一长度为36个字符。在上述技术方案中,优选地,在所述步骤S104中,所述链接符为“_”。 在上述技术方案中,优选地,所述第二长度为32个字符,第三长度为22个字符,所 述步骤S106具体为步骤S1062,将所述32个字符分成11组,其中,第1组为2个字符,其 余10组分别为3个字符;步骤S1064,将第2组至第11组的字符串分别进行压缩,使用压
4缩算法将每组由3个字符压缩为2个字符;步骤S1066,将所述第1组的2个字符与所述第 2组至第11组的压缩后的字符进行拼接,生成长度为22个字符的第三字符串。通过该技术 方案,可以减小字符串的长度,节约了存储空间。在上述技术方案中,优选地,所述压缩算法具体为将3位16进制的字符串转化为 2位64进制的字符串,所述步骤S1064具体为使用64个字符来描述64进制数值,其中所 述 64 个字符包括#$0123456789ABCDEFGHIJKLMN0PQRSTUVWXYZabcdefghi jklmnopqrstuvw xyz,所述64个字符按照ASCII码的顺序进行排列;将16进制的三个字符传化成10进制的 数字,转化后的数值范围为0至163 ;根据上述10进制的数字,产生长度为2个字符的64进 制的字符串。本发明还提供了一种识别码生成系统,包括第一字符串生成模块,根据通用唯一 识别码通用算法生成第一长度的第一字符串;第二字符串生成模块,去除所述第一字符串 中的链接符,将所述第一长度的所述第一字符串变为第二长度的第二字符串;第三字符串 生成模块,将所述第二长度的所述第二字符串中的字符进行分组、压缩,并将压缩后的字符 进行拼接,生成第三长度的第三字符串,其中,所述第三字符串为识别码。通过该技术方案, 可以生成既有唯一性又节约存储空间的识别码,保证数据存储的效率。在上述技术方案中,优选地,所述第一长度为36个字符,所述链接符为“_”;所述 第二长度为32个字符,第三长度为22个字符。在上述技术方案中,优选地,第三字符串生成模块包括分组模块,将所述32个字 符分成11组,其中,第1组为2个字符,其余10组分别为3个字符;压缩模块,将第2组至 第11组的字符串分别进行压缩,使用压缩算法将每组由3个字符压缩为2个字符;拼接模 块,将所述第1组的2个字符与所述第2组至第11组的压缩后的字符进行拼接,生成长度 为22个字符的第三字符串。通过该技术方案,可以减小字符串的长度,节约了存储空间。在上述技术方案中,优选地,所述压缩算法具体为将3位16进制的字符串转化为 2位64进制的字符串。通过上述技术方案,可以实现一种识别码生成方法和系统,既能够保证在分布式 系统产生的ID具有唯一性,又能够有效的降低ID所占的字节数,节约存储空间,保证数据 存储的效率,不至于增加太多的网络流量。


图1是根据本发明的一个实施例的识别码生成方法的流程图;图2是根据本发明的又一实施例的识别码生成系统的框图;以及图3是根据本发明的又一实施例的识别码生成方法的处理流程图。
具体实施例方式为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实 施方式对本发明进行进一步的详细描述。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可 以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实 施例的限制。
图1是根据本发明的一个实施例的识别码生成方法的流程图。如图1所示,根据 本发明的实施例的识别码生成方法包括步骤S102,根据通用唯一识别码通用算法生成第 一长度的第一字符串;步骤S104,去除所述第一字符串中的链接符,将所述第一长度的所 述第一字符串变为第二长度的第二字符串;步骤S106,将所述第二长度的所述第二字符串 中的字符进行分组、压缩,并将压缩后的字符进行拼接,生成第三长度的第三字符串,其中, 所述第三字符串为识别码。通过这样的技术方案,可以生成既有唯一性又节约存储空间的 识别码,保证数据存储的效率。在上述技术方案中,在所述步骤S102中,所述第一长度为36个字符。在上述技术方案中,在所述步骤S104中,所述链接符为“_”。在上述技术方案中,所述第二长度为32个字符,第三长度为22个字符,所述步骤 S106具体为步骤S1062,将所述32个字符分成11组,其中,第1组为2个字符,其余10组 分别为3个字符;步骤S1064,将第2组至第11组的字符串分别进行压缩,使用压缩算法将 每组由3个字符压缩为2个字符;步骤S1066,将所述第1组的2个字符与所述第2组至第 11组的压缩后的字符进行拼接,生成长度为22个字符的第三字符串。这样,就可以减小字 符串的长度,节约了存储空间。在上述技术方案中,所述压缩算法具体为将3位16进制的字符串转化为2位64 进制的字符串,所述步骤S1064具体为使用64个字符来描述64进制数值,其中所述64个 字符包括#$0123456789ABCDEFGHIJKLMN0PQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,所 述64个字符按照ASCII码的顺序进行排列;将16进制的三个字符传化成10进制的数字, 转化后的数值范围为0至163 ;根据上述10进制的数字,产生长度为2个字符的64进制的 字符串。通过上述技术方案,可以实现一种识别码生成系统,既能够保证在分布式系统产 生的ID具有唯一性,又能够有效的降低ID所占的字节数,节约存储空间,保证数据存储的 效率,不至于增加太多的网络流量。图2示出了根据本发明的又一实施例的识别码生成系统的框图。如图2所示,根 据本发明的实施例的识别码生成系统200包括第一字符串生成模块202,根据通用唯一识 别码通用算法生成第一长度的第一字符串;第二字符串生成模块204,去除所述第一字符 串中的链接符,将所述第一长度的所述第一字符串变为第二长度的第二字符串;第三字符 串生成模块206,将所述第二长度的所述第二字符串中的字符进行分组、压缩,并将压缩后 的字符进行拼接,生成第三长度的第三字符串,其中,所述第三字符串为识别码。通过这样 的技术方案,可以生成既有唯一性又节约存储空间的识别码,保证数据存储的效率。在上述技术方案中,所述第一长度为36个字符,所述链接符为“_”;所述第二长度 为32个字符,第三长度为22个字符。 在上述技术方案中,第三字符串生成模块206包括分组模块,将所述32个字符分 成11组,其中,第1组为2个字符,其余10组分别为3个字符;压缩模块,将第2组至第11 组的字符串分别进行压缩,使用压缩算法将每组由3个字符压缩为2个字符;拼接模块,将 所述第1组的2个字符与所述第2组至第11组的压缩后的字符进行拼接,生成长度为22 个字符的第三字符串。这样,就可以减小字符串的长度,节约了存储空间。
在上述技术方案中,所述压缩算法具体为将3位16进制的字符串转化为2位64
6进制的字符串。通过上述技术方案,可以实现一种识别码生成系统,既能够保证在分布式系统产 生的ID具有唯一性,又能够有效的降低ID所占的字节数,节约存储空间,保证数据存储的 效率,不至于增加太多的网络流量。图3是根据本发明的又一实施例的识别码生成方法的处理流程图。首先介绍一下通用唯一识别码的相关信息,通用唯一识别码(UniversalIy Unique Identifier, UUID)是一个软件建构的标准,亦为自由软件基金会(Open Software Foundation, 0SF)的组织在分布式计算环境(Distributed Computing Environment, DCE) 领域的一部份。UUID能够保证对在同一时空中的所有机器都是唯一的,它主要由三部分构成(1)当前的日期和时间;(2)时钟序列;(3)全局唯一的IEEE机器识别号。UUID 是一个包含 36 个字符的字符串,格式为 χχχχχχχχ-χχχχ-χχχχ-χχχχχχ-χχχχχ XXXXX (8-4-4-4-12),其中每个χ是0-9或a-f范围内的一个十六进制的数字。本实施例的识别码生成方法基于UUID技术,以保证分布式系统中产生的ID具有 唯一性。为了降低ID的长度,本实施例的识别码生成方法提供一种压缩的方法,使长度为 36个字符的UUID转化为等价的22个字符的ID。下面详细描述本发明的实施例的识别码生成方法的流程,如图3所示在步骤S302 根据UUID通用算法产生长度为36个字符的字符串A ;在步骤S304 去掉字符串A中固定位置的4个链接符“_”,使字符串A的长度变为 32个字符;在步骤S306 把字符串A中的32个字符分成11组,其中第一组为2个字符,其余 10组为3个字符;在步骤S308 把第二组到第十一组的字符串分别进行压缩,每组由3个字符压缩 为2个字符;在步骤S310 把第一组的2个字符和第二到第11组的压缩后的字符进行拼接,产 生长度为22个字符的ID字符串。其中,步骤S308的压缩算法主要是把3位16进制的字符串转化为2位64进制的 字符串,转化原理基于下面的公式16~3 = 4096 = 64~2。步骤S304的具体压缩算法为(1)首先用64个字符来描述64进制数值,这64个字符为“#$0123456789ABCDEre HIJKLMNOPQRSTUVWXYZabcdefghizklmnopqrstuvwxyz”,这 64 个字符按照 ASCII 码的顺序进 行排列,以保证产生的ID排序结果跟UUID —致;(2)把16进制的三个字符转化为10进制的数字,转化后的数值范围是0 16~3, 即0 4096。(3)根据第(2)步产生的数字,产生长度为2个字符的64进制的字符串。下面通过一个例子来说明这个算法的具体实现过程步骤1 :JAVA语言的JDK1. 5版本提供了一个通用的产生UUID的工具类,我们通过这个方法java. util. UUID. randomUUID (). toString ()来产生一个ID字符串,假如生成的 ID 为a3797f94-4428-4a4f-b9f3-290c3dc05d7e ;步骤2 将第一步产生的字符串去掉“-”,产生中间结果字符串a3797f9444284a4 fb9f3290c3dc05d7e ;步骤3 将第二步产生的字符串分成十一组,分组结果为
权利要求
一种识别码生成方法,其特征在于,包括步骤S102,根据通用唯一识别码通用算法生成第一长度的第一字符串;步骤S104,去除所述第一字符串中的链接符,将所述第一长度的所述第一字符串变为第二长度的第二字符串;步骤S106,将所述第二长度的所述第二字符串中的字符进行分组、压缩,并将压缩后的字符进行拼接,生成第三长度的第三字符串,其中,所述第三字符串为识别码。
2.根据权利要求1所述的识别码生成方法,其特征在于,在所述步骤S102中,所述第一 长度为36个字符。
3.根据权利要求2所述的识别码生成方法,其特征在于,在所述步骤S104中,所述链接 符为“_”。
4.根据权利要求3所述的识别码生成方法,其特征在于,所述第二长度为32个字符,第 三长度为22个字符,所述步骤S106具体为步骤S1062,将所述32个字符分成11组,其中,第1组为2个字符,其余10组分别为3 个字符;步骤S1064,将第2组至第11组的字符串分别进行压缩,使用压缩算法将每组由3个字 符压缩为2个字符;步骤S1066,将所述第1组的2个字符与所述第2组至第11组的压缩后的字符进行拼 接,生成长度为22个字符的第三字符串。
5.根据权利要求4所述的识别码生成方法,其特征在于,所述压缩算法具体为将3位 16进制的字符串转化为2位64进制的字符串,所述步骤S1064具体为使用64个字符来描述64进制数值,其中所述64个字符包括#$0123456789ABCDEFGH IJKLMNOPQRSTUVWXYZabcdefghi jklmnopqrstuvwxyz,所述 64 个字符按照 ASCII 码的顺序进 行排列;将16进制的三个字符传化成10进制的数字,转化后的数值范围为0至163 ;根据上述10进制的数字,产生长度为2个字符的64进制的字符串。
6.一种识别码生成系统,其特征在于,包括第一字符串生成模块,根据通用唯一识别码通用算法生成第一长度的第一字符串;第二字符串生成模块,去除所述第一字符串中的链接符,将所述第一长度的所述第一 字符串变为第二长度的第二字符串;第三字符串生成模块,将所述第二长度的所述第二字符串中的字符进行分组、压缩,并 将压缩后的字符进行拼接,生成第三长度的第三字符串,其中,所述第三字符串为识别码。
7.根据权利要求6所述的识别码生成系统,其特征在于,所述第一长度为36个字符,所 述链接符为“_” ;所述第二长度为32个字符,第三长度为22个字符。
8.根据权利要求7所述的识别码生成系统,其特征在于,第三字符串生成模块包括分组模块,将所述32个字符分成11组,其中,第1组为2个字符,其余10组分别为3个字符;压缩模块,将第2组至第11组的字符串分别进行压缩,使用压缩算法将每组由3个字 符压缩为2个字符;拼接模块,将所述第1组的2个字符与所述第2组至第11组的压缩后的字符进行拼接,生成长度为22个字符的第三字符串。
9.根据权利要求8所述的识别码生成系统,其特征在于,所述压缩算法具体为将3位 16进制的字符串转化为2位64进制的字符串。
全文摘要
本发明提出了一种识别码生成方法,包括步骤S102,根据通用唯一识别码通用算法生成第一长度的第一字符串;步骤S104,去除所述第一字符串中的链接符,将所述第一长度的所述第一字符串变为第二长度的第二字符串;步骤S106,将所述第二长度的所述第二字符串中的字符进行分组、压缩,并将压缩后的字符进行拼接,生成第三长度的第三字符串,其中,所述第三字符串为识别码。本发明还提出了一种识别码生成系统。根据本发明的技术方案,可以实现一种识别码生成方法和系统,既能够保证在分布式系统产生的识别码具有唯一性,又能够有效的降低识别码所占的字节数,节约存储空间,保证数据存储的效率,不至于增加太多的网络流量。
文档编号G06F17/30GK101976241SQ201010291998
公开日2011年2月16日 申请日期2010年9月26日 优先权日2010年9月26日
发明者王云波 申请人:用友软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1