CN103051480B - 一种dn的存储方法及dn存储装置 - Google Patents
一种dn的存储方法及dn存储装置 Download PDFInfo
- Publication number
- CN103051480B CN103051480B CN201210572100.2A CN201210572100A CN103051480B CN 103051480 B CN103051480 B CN 103051480B CN 201210572100 A CN201210572100 A CN 201210572100A CN 103051480 B CN103051480 B CN 103051480B
- Authority
- CN
- China
- Prior art keywords
- character
- value
- system number
- mentioned
- encoded
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种DN的存储方法及DN存储装置,其中,一种DN的存储方法包括:获取DN;对DN的各个元素分别进行编码,得到编码后的DN;存储编码后的DN;其中,在对DN的各个元素分别进行编码的步骤中,对DN的第一元素的编码,包括:将第一元素的整数部分取值编码为N进制数,其中,上述N不小于16;根据预存的编码表,将所述N进制数的每位N进制值编码为字符,其中,所述预存的编码表包含一位N进制数的N种可能取值与N个字符的一一对应关系,且N种可能取值的大小关系与N种可能取值所对应的N个字符在美国标准信息交换码中的大小关系一致。本发明提供的技术方案能够有效解决按照DN的元素大小排序不准的问题。
Description
技术领域
本发明涉及通讯领域,尤其涉及一种DN的存储方法及DN存储装置。
背景技术
可辨别名称(DN,Distinguished Name)是电信领域的一种通用标准。国际电信联盟远程通信标准化组织(ITU-T,International TelecommunicationUnion Telecommunication Standardization Sector)对DN有如下定义:DN用一系列的名值唯一定义一个网络管理对象(MO,Managed Object)。在网络管理系统中,广泛的使用DN作为网元/资源信息、告警信息、安全授权对象等的定位信息。
网络管理系统的业务应用也广泛使用DN来定位、计算资源的层次关系,以告警系统为例,当某个网络资源产生告警后,用户希望根据告警快速定位到发生故障的物理资源,因此,在网络资源产生告警时上报的告警信息中会携带DN,以便根据DN计算出告警源。举例说明,假设告警系统的数据库中存储了如表1所示的多个DN,每个DN包含至少一个元素,以便通过DN可以唯一定位到一个MO,如DN为“NE=1,SLOT=1,PORT=1”即包含NE、SLOT和PORT三个元素,该DN所定位的MO为:网元1的插槽1的端口1。当端口1出现故障时,告警系统将从数据库中查找端口1的DN,并将端口1的DN携带在上报的告警信息中以作为端口1的定位信息,处理该告警信息的设备由接收到的告警信息中携带的DN即可定位到出现故障的端口1,从而对端口1进行故障检修。
表1
告警名称 | DN |
端口1告警 | NE=1,SLOT=1,PORT=1 |
端口12告警 | NE=1,SLOT=1,PORT=12 |
端口2告警 | NE=1,SLOT=1,PORT=2 |
…… | …… |
DN存储在数据库中,支持排序以满足用户快速查看自己关注的设备告警。
现有的DN表示方式存在如下两个问题:
(1)DN排序结果不符合预期。例如表1所示的DN,用户期望按照端口号的大小进行排序,期望的排序结果应该是“PORT2”排在“PORT12”的前面,然而,由于现有排序方法都是借助数据库提供的排序能力,数据库在进行排序时,会按照字符的美国标准信息交换码(ACSII,American Standard Code forInformation Interchange)进行排序,导致“PORT12”排在“PORT2”的前面。
(2)对于细粒度对象(即网元以下的物理资源对象,如单板、端口、连接、通道等等),为了能够唯一定位到该细粒度对象,必然需要更长的DN来指向该细粒度对象,这使得一个DN可能需要占用几十个字节甚至几百个字节。随着网络管理系统的网络资源越来越多,需要存储的DN也越来越多,这导致网络管理系统需要较大的数据库容量保存这些DN,某些业务场景需要使用DN进行关联运算时,也会占用很高的内存容量和输入/输出(I/O,Input/Output)负担。
发明内容
本发明各个方面提供了一种DN的存储方法及DN存储装置,用于降低数据库容量、内存容量以及I/O的负担,解决按照DN的元素大小排序不准的问题。
为解决上述技术问题,提供以下技术方案:
本发明第一方面提供了一种DN的存储方法,包括:
获取DN;
对上述DN的各个元素分别进行编码,得到编码后的DN;
存储上述编码后的DN;
其中,在上述对上述DN的各个元素分别进行编码的步骤中,对上述DN的第一元素的编码,包括:
将上述第一元素的整数部分取值编码为N进制数,其中,上述N不小于16;
根据预存的编码表,将上述N进制数的每位N进制值编码为字符,其中,上述预存的编码表包含一位N进制数的N种可能取值与N个字符的一一对应关系,且上述N种可能取值的大小关系与上述N种可能取值所对应的N个字符在美国标准信息交换码中的大小关系一致;
若上述N进制数的位数大于1,则在与上述N进制数的最高位N进制值对应的字符之前或者在与上述N进制数的最低位N进制值对应的字符之后插入位宽标识,其中,上述位宽标识用于指示与上述N进制数对应的字符个数;
其中,上述第一元素为上述DN的各个元素中的任意一个。
基于本发明第一方面,在第一种可能的实现方式中,
若上述第一元素的整数部分取值小于M,则,上述将上述第一元素的整数部分取值编码为N进制数之前,还包括:
将上述第一元素的整数部分取值加一,将加一后的结果作为上述第一元素的整数部分取值;
其中,上述M大于0且小于N。
基于本发明第一方面的第一种可能的实现方式,在第二种可能的实现方式中,若上述第一元素的整数部分取值大于上述M,且上述N进制数的位数为1,则,在将上述N进制数的每位N进制值编码为字符之后,还包括:
在与上述N进制数对应的字符之前或者之后插入上述位宽标识。
基于本发明第一方面,或者本发明第一方面的第一种可能的实现方式,或者本发明第一方面的第二种可能的实现方式,在第三种可能的实现方式中,
若上述第一元素的取值中包含:字符串,则上述对上述DN的第一元素的编码,还包括:
在上述字符串的第一个字符之前插入字符串起始符,以指示上述字符串的开始位置;
在上述字符串的最后一个字符之后插入字符串结束符,以指示上述字符串的结束位置。
基于本发明第一方面,或者本发明第一方面的第一种可能的实现方式,或者本发明第一方面的第二种可能的实现方式,或者本发明第一方面的第三种可能的实现方式中,在第四种可能的实现方式中,
上述对上述DN的第一元素的编码,还包括:
根据预存的元素名与key值的一一对应关系表,将上述第一元素的元素名编码为key值。
基于本发明第一方面,或者本发明第一方面的第一种可能的实现方式,或者本发明第一方面的第二种可能的实现方式,或者本发明第一方面的第三种可能的实现方式中,或者本发明第一方面的第四种可能的实现方式中,在第五种可能的实现方式中,
上述N取32或者64。
本发明第二方面提供了一种DN存储装置,包括:
获取单元,用于获取DN;
编码单元,用于对上述获取单元获取到的上述DN的各个元素分别进行编码,得到编码后的DN;
存储单元,用于存储经上述编码单元编码后的DN;
其中,上述编码单元包括:
第一编码子单元,用于将第一元素的整数部分取值编码为N进制数,其中,上述N不小于16,上述第一元素为上述DN的各个元素中的任意一个;
第二编码子单元,用于根据预存的编码表,将上述第一编码子单元编码得到的N进制数的每位N进制值编码为字符,其中,上述预存的编码表包含一位N进制数的N种可能取值与N个字符的一一对应关系,且上述N种可能取值的大小关系与上述N种可能取值所对应的N个字符在美国标准信息交换码中的大小关系一致;
位宽指示单元,用于当上述第一编码子单元编码得到的N进制数的位数大于1时,在与上述N进制数的最高位N进制值对应的字符之前或者在与上述N进制数的最低位N进制值对应的字符之后插入位宽标识,其中,上述位宽标识用于指示与上述N进制数对应的字符个数。
基于本发明第二方面,在第一种可能的实现方式中,
上述DN存储装置还包括:
小整数处理单元,用于当上述第一元素的整数部分取值小于M时,将上述第一元素的整数部分取值加一,将加一后的结果作为上述第一元素的整数部分取值,其中,上述M大于0且小于N。
基于本发明第二方面的第一种可能的实现方式,在第二种可能的实现方式中,上述位宽指示单元,还用于:当上述第一元素的整数部分取值大于上述M,且上述第一编码子单元编码得到的N进制数的位数为1时,在与上述N进制数对应的字符之前或者之后插入上述位宽标识。
基于本发明第二方面,或者本发明第二方面的第一种可能的实现方式,或者本发明第二方面的第二种可能的实现方式,在第三种可能的实现方式中,
上述DN存储装置还包括:
字符串处理单元,用于在上述第一元素的取值中包含字符串时,在上述字符串的第一个字符之前插入字符串起始符,以指示上述字符串的开始位置;在上述字符串的最后一个字符之后插入字符串结束符,以指示上述字符串的结束位置。
基于本发明第二方面,或者本发明第二方面的第一种可能的实现方式,或者本发明第二方面的第二种可能的实现方式,或者本发明第二方面的第三种可能的实现方式,在第四种可能的实现方式中,
上述DN存储装置还包括:
元素名编码单元,用于根据预存的元素名与key值的一一对应关系表,将上述第一元素的元素名编码为key值。
由上可见,本发明实施例中在存储DN之前先对DN的各个元素进行编码,一方面,在对DN的各个元素进行编码的过程中,将各个元素的整数部分取值编码为N进制数,由于N不小于16,通过不小于16进制的高进制编码方式,压缩了各个元素的取值的数据量,因此,通过存储编码后的DN有效降低了数据库容量、内存容量以及I/O的负担;另一方面,根据预存的编码表,将N进制数的每位N进制值编码为字符,由于在编码表中,一位N进制数的N种可能取值的大小关系与该N种可能取值所对应的N个字符在ACSII中的大小关系一致,使得在按照编码后的DN的某个元素进行大小排序时,能够保证排序结果与上述某个元素实际取值的大小排序一致,从而解决按照DN的元素大小排序不准的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1-a为本发明提供的一种DN的存储方法一个实施例流程示意图;
图1-b为本发明提供的在DN的存储方法中,对DN的第一元素分进行编码的一个实施例流程示意图;
图2为本发明提供的一种DN存储装置一个实施例结构示意图;
图3为本发明提供的一种DN存储装置另一个实施例结构示意图。
具体实施方式
本发明实施例提供了一种DN的存储方法及DN存储装置。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的各个其他实施例,都属于本发明保护的范围。
下面对本发明实施例提供的一种DN的存储方法进行描述,请参与图1-a,本发明实施例中的DN的存储方法,包括:
101、获取DN;
在本发明实施例中,DN存储装置获取的DN可以是原数据库中已存储的DN,或者,也可以是新增的DN,此处不作限定。
102、对获取的DN的各个元素分别进行编码,得到编码后的DN;
本发明实施例中,一个DN通常包含多个元素,而每个元素都有固定的取值,例如“NE=1,SLOT=1,PORT=1”表示的是包含元素NE、SLOT和PORT这三个元素的DN。
DN存储装置对步骤101获取的DN的各个元素分别进行编码,为便于理解,下面以对DN的第一元素的编码进行描述,其中,第一元素是上述DN的各个元素中的任意一个,即,DN的每个元素的编码方式都如第一元素的编码方式,如图1-b所示,对上述DN的第一元素的编码包括:
S1、将第一元素的整数部分取值编码为N进制数;
其中,上述N不小于16。
在一种实现方式中,N取32,则将第一元素的整数部分取值编码为32进制数,其中,将第一元素的整数部分取值编码为32进制数的方式可以是:先将第一元素的整数部分取值转化为二进制数,对转化得到的二进制数,从低位到高位按5位字节分组,得到一个或者多个二进制数分组,再将每个二进制数分组中的二进制数转化为十进制数,即可得到一位或者多位32进制值,该一位或者多位32进制值即表示一个32进制数。举例说明,假设第一元素NE的值为123456,则将第一元素的整数部分取值转化为二进制数,即为:11110001001000000,从低位到高位按5位字节分组,得到a1 a2 a3 a4,其中,a1等于二进制数分组11,a2等于二进制数分组11000,a3等于二进制数分组10010,a4等于二进制数分组00000,将每个二进制数分组中的二进制数转化为十进制数,即得到32进制数b1 b2b3 b4,其中,b1、b2、b3和b4分别为该32进制数由高位到低位的各位32进制值,且b1等于3,b2等于24,b3等于18,b4等于0。
在另一种实现方式中,N取64,则将第一元素的整数部分取值编码为64进制数,其中,将第一元素的整数部分取值编码为64进制数的方式可以是:先将第一元素的整数部分取值转化为二进制数,对转化得到的二进制数,从低位到高位按6位字节分组,得到一个或者多个二进制数分组,再将每个二进制数分组中的二进制数转化为十进制数,即可得到一位或者多位64进制值,该一位或者多位64进制值即表示一个64进制数。举例说明,假设第一元素NE的值为123456,则将第一元素的整数部分取值转化为二进制数,即为:11110001001000000,从低位到高位按6位字节分组,得到a1 a2 a3,其中,a1等于二进制数分组11110,a2等于二进制数分组001001,a3等于二进制数分组000000,将每个二进制数分组中的二进制数转化为十进制数,即得到64进制数b1 b2b3,其中,b1、b2和b3分别为该64进制数由高位到低位的各位64进制值,且b1等于30,b2等于9,b3等于0。
当然,本发明实施例中的N也可以取除32和64以后的其它大于16的值,其具体实现方式可以参照上述两种实现方式具体实现,此处不作限定。
由于第一元素的整数部分取值有可能取负数1,因此,本发明实施例中进一步将整数类型划分为小整数和长整数,即,令M取大于0且小于上述N的值,当一个整数小于M时,该整数即为小整数,当一个整数不小于M时,该整数即为长整数。当第一元素的整数部分取值小于M(即为小整数时),则本发明实施例在执行步骤S1之前,先将第一元素的整数部分取值加一,将加一后的结果作为第一元素的整数部分取值。举例说明,假设当N为64,M为36时,当第一元素的整数部分取值为24时,将24加1后的结果即25作为第一元素的整数部分取值,之后再将25编码为64进制数。其中,上述M的具体取值可以结合实际需求(如结合计算机所能支持的N进制数的最大位数以及用作标识的字符个数等)进行设定,此处不对M的具体取值进行限定。
S2、根据预存的编码表,将上述N进制数的每位N进制值编码为字符;
其中,上述预存的编码表包含一位N进制数的N种可能取值与N个字符的一一对应关系,且上述N种可能取值的大小关系与上述N种可能取值所对应的N个字符在ACSII中的大小关系一致。
由于在某些报文(如通用资源标识符(URI,Uniform Resource Identifier)报文和超文本传输协议(HTTP,Hypertext transfer protocol)报文)中,报文中的转义字符(如“空格”、“/”、“问号”、“#”和“&”等)会被进行特殊的转换,考虑到DN可能会在这些报文中出现,因此,在编码表中尽量使用不需要转义的字符。
在一种实现方式中,当N取32时,上述预存的编码表可以如表1所示。
表1
0 - | 8 7 | 16 F | 24 N |
1 0 | 9 8 | 17 G | 25 O |
2 1 | 10 9 | 18 H | 26 P |
3 2 | 11 A | 19 I | 27 Q |
4 3 | 12 B | 20 J | 28 R |
5 4 | 13 C | 21 K | 29 S |
6 5 | 14 D | 22 L | 30 T |
7 6 | 15 E | 23 M | 31 U |
其中,表1中每个方格左边的数值表示一位32进制数的32种可能取值,方格右边为与该可能取值对应的字符,由表1可见,32种可能取值的大小关系与32种可能取值所对应的32个字符在ACSII中的大小关系一致,即取值越大,该取值对应的字符在ACSII中越大。DN存储装置根据表1,将步骤S1得到的32进制数的每位32进制值编码为字符,以步骤S1中的举例进一步说明,则将32进制数b1 b2b3 b4编码为4个字符2NH-。
在另一种实现方式中,当N取64时,上述预存的编码表可以如表2所示。
表2
0 - | 8 7 | 16 F | 24 N | 32 V | 40 d | 48 l | 56 t |
1 0 | 9 8 | 17 G | 25 O | 33 W | 41 e | 49 m | 57 u |
2 1 | 10 9 | 18 H | 26 P | 34 X | 42 f | 50 n | 58 v |
3 2 | 11 A | 19 I | 27 Q | 35 Y | 43 g | 51 o | 59 w |
4 3 | 12 B | 20 J | 28 R | 36 Z | 44 h | 52 p | 60 x |
5 4 | 13 C | 21 K | 29 S | 37 a | 45 i | 53 q | 61 y |
6 5 | 14 D | 22 L | 30 T | 38 b | 46 j | 54 r | 62 z |
7 6 | 15 E | 23 M | 31 U | 39 c | 47 k | 55 s | 63 _ |
其中,表2中每个方格左边的数值表示一位64进制数的64种可能取值,方格右边为与该可能取值对应的字符,由表2可见,64种可能取值的大小关系与64种可能取值所对应的64个字符在ACSII中的大小关系一致,即取值越大,该取值对应的字符在ACSII中越大。DN存储装置根据表2,将步骤S1得到的64进制数的每位64进制值编码为字符,以步骤S1中的举例进一步说明,则将64进制数b1 b2b3编码为3个字符T8-。
S3、若上述N进制数的位数大于1,则在与上述N进制数的最高位N进制值对应的字符之前或者在与上述N进制数的最低位N进制值对应的字符之后插入位宽标识;
其中,上述位宽标识用于指示与上述N进制数对应的字符个数。
当步骤S1得到的N进制数的位数大于1时,在步骤S2中编码得到的字符个数也将大于1,为了识别哪些字符属于上述N进制数,本发明实施例中需要插入位宽标识,以指示与上述N进制数对应的字符个数。
在一种实现方式中,当N进制数的位数大于1时,可以在预存的编码表中取若干个字符作为位宽标识,将该位宽标识插入到上述N进制数的最高位N进制值对应的字符之前。由于计算机所能处理的最大整数长度与计算机的数据处理能力有关,因此,本发明实施例可以根据计算机实际的数据处理能力以及N的取值确认需要作为位宽标识的字符个数,并且,在确定出作为位宽标识的字符个数之后,应确定小整数的范围(即上述M)至多不大于(32-作为位宽标识的字符个数),并且应该避免作为位宽标识的字符与小整数所对应的字符相冲突。举例说明,假如N取32,确定作为位宽标识的字符个数为16,预存的编码表如表1所示,则可以从编码表中选取F至T个字符作为位宽标识,分别指示字符个数为2至16。
在另一种实现方式中,当N进制数的位数大于1时,也可以在上述N进制数的最低位N进制值对应的字符之后插入一个整数结束符作为位宽标识,则在该位宽标识之前的若干个字符即为上述N进制数对应的所有字符。在此场景下,位宽标识的选取应确保足够生僻和冷门,并且该位宽标识在URL协议和HTTP协议中不需要做转义(即可以直接进行处理),且在ACSII中的排序位于预存的编码表中数值“0”所对应的字符之前。
进一步,由于上述M的取值必然小于N,因此,当上述第一元素的整数部分取值大于上述M,且上述第一元素的整数部分取值转化得到的N进制数的位数为1时,也在上述N进制数对应的字符之前或者之后插入位宽标识。如以上述在N等于32时,在预存的编码表中取若干个字符作为位宽标识为例,则可以从编码表中选取E至T个字符作为位宽标识,分别指示字符个数为1至16。
进一步,为了进一步缩小DN的数据量,本发明实施例还可以对第一元素的元素名进行编码,本发明实施例提供如下实现方式,即预存DN的各种可能的元素名与key值的一一对应关系表,在对第一元素进行编码的过程中,根据预存的元素名与key值的一一对应关系表,将上述第一元素的元素名编码为key值。例如,表3为一种场景下元素名与key值的一一对应关系表:
表3
元素名 | key值 | 类型 |
NE | 1 | 数字 |
SHELF | 2 | 数字 |
… | … | … |
INTERFACE | 9 | IPV4 |
TUNNEL | 10 | 数字+字串 |
SERVICE | 11 | IPV4+数字 |
其中,表中的NE、SHELF、INTERFACE、TUNNEL和SERVICE分别指代网元、机架、接口、通道和服务。
在一种应用场景下,第一元素的取值中也可能包含字符串,对于字符串的编码,本发明在字符串的第一个字符之前插入字符串起始符,以指示上述字符串的开始位置;在上述字符串的最后一个字符之后插入字符串结束符,以指示上述字符串的结束位置。本发明实施例中的字符串起始符的选取应避免与上述预存的编码表中的某些已被占用的字符冲突,如应避免字符串起始符与小整数所对应的字符、作为位宽标识的字符和网际互联协议(IP,InternetProtocol)保留字符冲突。对于上述字符串结束符的选取,则应确保字符串结束符足够生僻和冷门,并且该字符串结束符在URL协议和HTTP协议中不需要做转义(即可以直接进行处理),且在ACSII中的排序位于预存的编码表中数值“0”所对应的字符之前,例如可以选取感叹号“!”作为上述字符串结束符。
103、存储上述编码后的DN;
DN存在装置将步骤102编码后的DN存入数据库中。其中,若步骤101获取的DN为数据库中原有的DN,则将编码后的DN替换原有的DN。
由上可见,本发明实施例中在存储DN之前先对DN的各个元素进行编码,一方面,在对DN的各个元素进行编码的过程中,将各个元素的整数部分取值编码为N进制数,由于N不小于16,通过不小于16进制的高进制编码方式,压缩了各个元素的取值的数据量,因此,通过存储编码后的DN有效降低了数据库容量、内存容量以及I/O的负担;另一方面,根据预存的编码表,将N进制数的每位N进制值编码为字符,由于在编码表中,一位N进制数的N种可能取值的大小关系与该N种可能取值所对应的N个字符在ACSII中的大小关系一致,使得在按照编码后的DN的某个元素进行大小排序时,能够保证排序结果与上述某个元素实际取值的大小排序一致,从而解决按照DN的元素大小排序不准的问题。
下面对本发明实施例中的一种DN存储装置进行描述,请参阅图2,本发明实施例中的DN存储装置200包括:
获取单元201,用于获取DN;
在本发明实施例中,取单元201获取的DN可以是原数据库中已存储的DN,或者,也可以是新增的DN,此处不作限定。
编码单元202,用于对获取单元201获取到的DN的各个元素分别进行编码,得到编码后的DN。
存储单元203,用于存储经编码单元202编码后的DN。
本发明实施例中,一个DN通常包含多个元素,而每个元素都有固定的取值,例如“NE=1,SLOT=1,PORT=1”表示的是包含元素NE、SLOT和PORT这三个元素的DN。
其中,编码单元202包括:
第一编码子单元2021,用于将第一元素的整数部分取值编码为N进制数,其中,上述N不小于16,上述第一元素为上述DN的各个元素中的任意一个;
第二编码子单元2022,用于根据预存的编码表,将第一编码子单元2021编码得到的N进制数的每位N进制值编码为字符,其中,上述预存的编码表包含一位N进制数的N种可能取值与N个字符的一一对应关系,且上述N种可能取值的大小关系与上述N种可能取值所对应的N个字符在ACSII中的大小关系一致;
位宽指示单元2023,用于当第一编码子单元2021编码得到的N进制数的位数大于1时,在与上述N进制数的最高位N进制值对应的字符之前或者在与上述N进制数的最低位N进制值对应的字符之后插入位宽标识,其中,上述位宽标识用于指示与上述N进制数对应的字符个数。
在一种实现方式中,当N进制数的位数大于1时,可以在预存的编码表中取若干个字符作为位宽标识,将该位宽标识插入到上述N进制数的最高位N进制值对应的字符之前。由于计算机所能处理的最大整数长度与计算机的数据处理能力有关,因此,本发明实施例可以根据计算机实际的数据处理能力以及N的取值确认需要作为位宽标识的字符个数,并且,在确定出作为位宽标识的字符个数之后,应确定小整数的范围(即上述M)至多不大于(32-作为位宽标识的字符个数),并且应该避免作为位宽标识的字符与小整数所对应的字符相冲突。举例说明,假如N取32,确定作为位宽标识的字符个数为16,预存的编码表如表1所示,则可以从编码表中选取F至T个字符作为位宽标识,分别指示字符个数为2至16。
在另一种实现方式中,当N进制数的位数大于1时,也可以在上述N进制数的最低位N进制值对应的字符之后插入一个整数结束符作为位宽标识,则在该位宽标识之前的若干个字符即为上述N进制数对应的所有字符。在此场景下,位宽标识的选取应确保足够生僻和冷门,并且该位宽标识在URL协议和HTTP协议中不需要做转义(即可以直接进行处理),且在ACSII中的排序位于预存的编码表中数值“0”所对应的字符之前。
由于第一元素的整数部分取值有可能取负数1,因此,本发明实施例中进一步将整数类型划分为小整数和长整数,即,令M取大于0且小于上述N的值,当一个整数小于M时,该整数即为小整数,当一个整数不小于M时,该整数即为长整数。则本发明实施例中的DN存储装置200还可以包括:小整数处理单元,用于当上述第一元素的整数部分取值小于M时,将上述第一元素的整数部分取值加一,将加一后的结果作为上述第一元素的整数部分取值,其中,上述M大于0且小于N。
进一步,由于上述M的取值必然小于N,因此,当上述第一元素的整数部分取值大于上述M,且上述第一元素的整数部分取值转化得到的N进制数的位数为1时,也在上述N进制数对应的字符之前或者之后插入位宽标识。因此,位宽指示单元2023,还用于:当上述第一元素的整数部分取值大于上述M,且第一编码子单元2021编码得到的N进制数的位数为1时,在与上述N进制数对应的字符之前或者之后插入上述位宽标识。
为了进一步缩小DN的数据量,本发明实施例中的DN存储装置200还包括:元素名编码单元,用于根据预存的元素名与key值的一一对应关系表,将上述第一元素的元素名编码为key值。
在一种应用场景下,第一元素的取值中也可能包含字符串,因此,本发明实施例中的DN存储装置200还可以包括:
字符串处理单元,用于在上述第一元素的取值中包含字符串时,在上述字符串的第一个字符之前插入字符串起始符,以指示上述字符串的开始位置;在上述字符串的最后一个字符之后插入字符串结束符,以指示上述字符串的结束位置。
需要说明的是,本发明实施例中的DN存储装置200可以如上述方法实施例中的DN存储装置,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
由上可见,本发明实施例中在存储DN之前先对DN的各个元素进行编码,一方面,在对DN的各个元素进行编码的过程中,将各个元素的整数部分取值编码为N进制数,由于N不小于16,通过不小于16进制的高进制编码方式,压缩了各个元素的取值的数据量,因此,通过存储编码后的DN有效降低了数据库容量、内存容量以及I/O的负担;另一方面,根据预存的编码表,将N进制数的每位N进制值编码为字符,由于在编码表中,一位N进制数的N种可能取值的大小关系与该N种可能取值所对应的N个字符在ACSII中的大小关系一致,使得在按照编码后的DN的某个元素进行大小排序时,能够保证排序结果与上述某个元素实际取值的大小排序一致,从而解决按照DN的元素大小排序不准的问题。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质存储有程序,该程序执行包括上述方法实施例中记载的部分或全部技术方案。
下面对本发明实施中的另一种DN存储装置进行描述,请参与图3,本发明实施例中的DN存储装置300包括:
输入装置301、输出装置302、存储器303以及处理器304(DN存储装置300中的处理器304的数量可以是一个或者多个,图3以一个处理器为例)。在本发明的一些实施例中,输入装置301、输出装置302、存储器303以及处理器304可以通过总线或其它方式连接,如图3所示以通过总线连接为例。
其中,处理器304执行如下步骤:
获取DN,其中,上述N不小于16;
在本发明实施例中,处理器304获取的DN可以是原数据库中已存储的DN,或者,也可以是新增的DN,此处不作限定。
对获取的DN的各个元素分别进行编码,得到编码后的DN;
存储上述编码后的DN。
其中,在上述对获取的DN的各个元素分别进行编码的过程中,处理器对DN的第一元素的编码过程如下:
将第一元素的整数部分取值编码为N进制数,其中,上述N不小于16;
根据预存的编码表,将上述N进制数的每位N进制值编码为字符,其中,上述预存的编码表包含一位N进制数的N种可能取值与N个字符的一一对应关系,且上述N种可能取值的大小关系与上述N种可能取值所对应的N个字符在ACSII中的大小关系一致;
当上述N进制数的位数大于1时,在与上述N进制数的最高位N进制值对应的字符之前或者在与上述N进制数的最低位N进制值对应的字符之后插入位宽标识。
由于第一元素的整数部分取值有可能取负数1,因此,本发明实施例中进一步将整数类型划分为小整数和长整数,即,令M取大于0且小于上述N的值,当一个整数小于M时,该整数即为小整数,当一个整数不小于M时,该整数即为长整数。当第一元素的整数部分取值小于M(即为小整数时),则本发明实施例在执行步骤S1之前,先将第一元素的整数部分取值加一,将加一后的结果作为第一元素的整数部分取值。上述M的具体取值可以结合实际需求(如结合计算机所能支持的N进制数的最大位数以及用作标识的字符个数等)进行设定,此处不对M的具体取值进行限定。
进一步,由于上述M的取值必然小于N,因此,当上述第一元素的整数部分取值大于上述M,且上述第一元素的整数部分取值转化得到的N进制数的位数为1时,也在上述N进制数对应的字符之前或者之后插入位宽标识。如以上述在N等于32时,在预存的编码表中取若干个字符作为位宽标识为例,则可以从编码表中选取E至T个字符作为位宽标识,分别指示字符个数为1至16。
进一步,为了进一步缩小DN的数据量,处理器304还用于:对第一元素的元素名进行编码,即,通过预存DN的各种可能的元素名与key值的一一对应关系表,在处理器304对第一元素进行编码的过程中,根据预存的元素名与key值的一一对应关系表,将上述第一元素的元素名编码为key值。
在一种应用场景下,第一元素的取值中也可能包含字符串,因此,处理器304还用于:对字符串编码,即,在上述第一元素的取值中包含字符串时,在上述字符串的第一个字符之前插入字符串起始符,以指示上述字符串的开始位置;在上述字符串的最后一个字符之后插入字符串结束符,以指示上述字符串的结束位置。
需要说明的是,上述第一元素是上述DN的各个元素中的任意一个,即,处理器204对DN的每个元素的编码过程都与对第一元素的编码过程一样。
需要说明的是,本发明实施例中的DN存储装置300可以如上述方法实施例中的DN存储装置,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
由上可见,本发明实施例中在存储DN之前先对DN的各个元素进行编码,一方面,在对DN的各个元素进行编码的过程中,将各个元素的整数部分取值编码为N进制数,由于N不小于16,通过不小于16进制的高进制编码方式,压缩了各个元素的取值的数据量,因此,通过存储编码后的DN有效降低了数据库容量、内存容量以及I/O的负担;另一方面,根据预存的编码表,将N进制数的每位N进制值编码为字符,由于在编码表中,一位N进制数的N种可能取值的大小关系与该N种可能取值所对应的N个字符在ACSII中的大小关系一致,使得在按照编码后的DN的某个元素进行大小排序时,能够保证排序结果与上述某个元素实际取值的大小排序一致,从而解决按照DN的元素大小排序不准的问题。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以理解上述实施例中的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质例如可以包括:只读存储器、随机存储器、磁盘或光盘等。
以上对本发明所提供的一种DN的存储方法及DN存储装置进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种可辨别名称DN的存储方法,其特征在于,包括:
获取DN;
对所述DN的各个元素分别进行编码,得到编码后的DN;
存储所述编码后的DN;
其中,在所述对所述DN的各个元素分别进行编码的步骤中,对所述DN的第一元素的编码,包括:
将所述第一元素的整数部分取值编码为N进制数,其中,所述N不小于16;
根据预存的编码表,将所述N进制数的每位N进制值编码为字符,其中,所述预存的编码表包含一位N进制数的N种可能取值与N个字符的一一对应关系,且所述N种可能取值的大小关系与所述N种可能取值所对应的N个字符在美国标准信息交换码中的大小关系一致;
若所述N进制数的位数大于1,则在与所述N进制数的最高位N进制值对应的字符之前或者在与所述N进制数的最低位N进制值对应的字符之后插入位宽标识,其中,所述位宽标识用于指示与所述N进制数对应的字符个数;
其中,所述第一元素为所述DN的各个元素中的任意一个。
2.根据权利要求1所述的方法,其特征在于,
若所述第一元素的整数部分取值小于M,则,所述将所述第一元素的整数部分取值编码为N进制数之前,还包括:
将所述第一元素的整数部分取值加一,将加一后的结果作为所述第一元素的整数部分取值;
其中,所述M大于0且小于N。
3.根据权利要求2所述的方法,其特征在于,
若所述第一元素的整数部分取值大于所述M,且所述N进制数的位数为1,则,在将所述N进制数的每位N进制值编码为字符之后,还包括:
在与所述N进制数对应的字符之前或者之后插入所述位宽标识。
4.根据权利要求1至3任一项所述的方法,其特征在于,
若所述第一元素的取值中包含:字符串,则所述对所述DN的第一元素的编码,还包括:
在所述字符串的第一个字符之前插入字符串起始符,以指示所述字符串的开始位置;
在所述字符串的最后一个字符之后插入字符串结束符,以指示所述字符串的结束位置。
5.根据权利要求1至3任一项所述的方法,其特征在于,
所述对所述DN的第一元素的编码,还包括:
根据预存的元素名与key值的一一对应关系表,将所述第一元素的元素名编码为key值。
6.根据权利要求1至3任一项所述的方法,其特征在于,
所述N取32或者64。
7.一种可辨别名称DN存储装置,其特征在于,包括:
获取单元,用于获取DN;
编码单元,用于对所述获取单元获取到的所述DN的各个元素分别进行编码,得到编码后的DN;
存储单元,用于存储经所述编码单元编码后的DN;
其中,所述编码单元包括:
第一编码子单元,用于将第一元素的整数部分取值编码为N进制数,其中,所述N不小于16,所述第一元素为所述DN的各个元素中的任意一个;
第二编码子单元,用于根据预存的编码表,将所述第一编码子单元编码得到的N进制数的每位N进制值编码为字符,其中,所述预存的编码表包含一位N进制数的N种可能取值与N个字符的一一对应关系,且所述N种可能取值的大小关系与所述N种可能取值所对应的N个字符在美国标准信息交换码中的大小关系一致;
位宽指示单元,用于当所述第一编码子单元编码得到的N进制数的位数大于1时,在与所述N进制数的最高位N进制值对应的字符之前或者在与所述N进制数的最低位N进制值对应的字符之后插入位宽标识,其中,所述位宽标识用于指示与所述N进制数对应的字符个数。
8.根据权利要求7所述的DN存储装置,其特征在于,
所述DN存储装置还包括:
小整数处理单元,用于当所述第一元素的整数部分取值小于M时,将所述第一元素的整数部分取值加一,将加一后的结果作为所述第一元素的整数部分取值,其中,所述M大于0且小于N。
9.根据权利要求8所述的DN存储装置,其特征在于,
所述位宽指示单元,还用于:当所述第一元素的整数部分取值大于所述M,且所述第一编码子单元编码得到的N进制数的位数为1时,在与所述N进制数对应的字符之前或者之后插入所述位宽标识。
10.根据权利要求7至9任一项所述的DN存储装置,其特征在于,
所述DN存储装置还包括:
字符串处理单元,用于在所述第一元素的取值中包含字符串时,在所述字符串的第一个字符之前插入字符串起始符,以指示所述字符串的开始位置;在所述字符串的最后一个字符之后插入字符串结束符,以指示所述字符串的结束位置。
11.根据权利要求7至9任一项所述的DN存储装置,其特征在于,
所述DN存储装置还包括:
元素名编码单元,用于根据预存的元素名与key值的一一对应关系表,将所述第一元素的元素名编码为key值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210572100.2A CN103051480B (zh) | 2012-12-25 | 2012-12-25 | 一种dn的存储方法及dn存储装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210572100.2A CN103051480B (zh) | 2012-12-25 | 2012-12-25 | 一种dn的存储方法及dn存储装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103051480A CN103051480A (zh) | 2013-04-17 |
CN103051480B true CN103051480B (zh) | 2015-09-30 |
Family
ID=48063985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210572100.2A Active CN103051480B (zh) | 2012-12-25 | 2012-12-25 | 一种dn的存储方法及dn存储装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103051480B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105450232A (zh) * | 2014-08-28 | 2016-03-30 | 华为技术有限公司 | 编码、解码方法以及编码装置和解码装置 |
CN105589878A (zh) * | 2014-10-23 | 2016-05-18 | 中兴通讯股份有限公司 | 一种数据存储方法、数据读取方法及设备 |
CN110046331A (zh) * | 2019-03-20 | 2019-07-23 | 北京品友互动信息技术股份公司 | 数据编码方法及装置、存储介质、电子装置 |
CN111428442B (zh) * | 2020-03-25 | 2023-04-21 | 北京思特奇信息技术股份有限公司 | 一种无需字典表的数据转换方法、系统及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101282251A (zh) * | 2008-05-08 | 2008-10-08 | 中国科学院计算技术研究所 | 一种应用层协议识别特征挖掘方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100853933B1 (ko) * | 2006-10-17 | 2008-08-25 | 삼성에스디에스 주식회사 | 메인프레임 시스템의 응용프로그램을 개방형 시스템에적합한 응용프로그램으로 변환하는 마이그레이션 장치 및그 방법 |
-
2012
- 2012-12-25 CN CN201210572100.2A patent/CN103051480B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101282251A (zh) * | 2008-05-08 | 2008-10-08 | 中国科学院计算技术研究所 | 一种应用层协议识别特征挖掘方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103051480A (zh) | 2013-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107733972A (zh) | 一种短链接解析方法、装置及设备 | |
CN105335310A (zh) | 一种接口定义方法和数据传输方法及装置 | |
CN103051480B (zh) | 一种dn的存储方法及dn存储装置 | |
CN102402558A (zh) | 一种提供包含网页地址的消息的方法和系统 | |
CN109697278B (zh) | 将根据模式以人类可读的文本格式化的数据编码为二进制 | |
CN110471903B (zh) | 异构系统节点信息汇总、贸易数据库生成方法和装置 | |
US9529932B2 (en) | XML node labeling and querying using logical operators | |
CN109714249A (zh) | 一种小程序消息的推送方法及相关装置 | |
CN110334103B (zh) | 推荐服务的更新方法、提供装置、访问装置和推荐系统 | |
CN104636432B (zh) | 一种日志文件压缩和解压的方法及装置 | |
US8201106B2 (en) | Method for transforming a tree structure into a more human-comprehensible document | |
CN111078773A (zh) | 一种数据处理方法及装置 | |
CN117391596A (zh) | 物料和工序匹配方法、装置、通信设备及存储介质 | |
CN103646015A (zh) | 发送、接收以及传输xml报文的方法和系统 | |
CN111866134A (zh) | 区块链交易哈希值和地址的生成方法、系统及存储介质 | |
CN113377813B (zh) | 全局唯一标识码生成方法、设备、系统和计算机可读介质 | |
CN115967604A (zh) | 报文传输方法、装置、电子设备及计算机可读存储介质 | |
CN115470241A (zh) | 一种基于映射字典表的聚合数据更新方法及装置 | |
CN104239307A (zh) | 用户信息存储方法和系统 | |
CN112445800A (zh) | 一种数据流水号的生成方法、系统及电子设备 | |
CN107562562B (zh) | 一种描述故障事件的额外信息的设置方法及系统 | |
CN111813769A (zh) | 数据加工方法与装置 | |
CN109743188A (zh) | 日志数据处理方法和装置 | |
US9281994B2 (en) | Processing algebraic expressions for keyed data sets | |
CN112711480B (zh) | 数据链路解析方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |