数据处理方法、装置、存储介质以及电子设备与流程
未命名
07-14
阅读:139
评论:0
1.本技术涉及数据处理领域,具体而言,涉及一种数据处理方法、装置、存储介质以及电子设备。
背景技术:
2.网络设备的高可靠性(high availability),简称为ha,通常由多个软硬件相同的设备组合而成,当一个设备发生故障不能处理网络流量时,可以及时将流量切换到其他可用的设备来处理,这样就保证了网络通信的不间断进行,极大地提高通信的可靠性。
3.配置数据的多设备间同步是ha的基本功能。图1是现有技术中使用的数据同步方法的示意图,如图1所示,网络设备中,存在一些配置对象(下文中称为一级配置对象)以名称作为索引的情况,一级配置对象下还存在多个二级配置对象。二级配置对象进行ha同步时,需要携带一级配置对象的名称,以便接收同步配置的设备能够正确处理和存储同步过来的配置,保证ha设备间的配置一致性。
4.由于配置对象的名称一般情况下会是一个比较长的字符串,可能有数十字节,也可能有数百字节,当二级配置对象进行ha同步要携带所属一级配置对象的名称时,会导致不必要的网络带宽占用以及ha配置同步效率的降低。
5.除了配置同步,当ha设备之间存在大量需要携带关联配置对象名称索引的动态数据(比如会话)的同步时,对网络带宽占用以及ha配置同步效率的影响会更加明显。
6.针对相关技术中在对配置对象进行同步时携带的信息较多,导致同步效率低并且占用网络带宽的问题,目前尚未提出有效的解决方案。
技术实现要素:
7.本技术提供一种数据处理方法、装置、存储介质以及电子设备,以解决相关技术中在对配置对象进行同步时携带的信息较多,导致同步效率低并且占用网络带宽的问题。
8.根据本技术的一个方面,提供了一种数据处理方法。该方法包括:获取添加在主设备中的第一对象,并获取第一对象的初始名称,并根据初始名称生成第一数值,并将第一数值确定为第一对象的初始关键字;计算初始关键字在主设备中的哈希表中的哈希地址,得到第一哈希地址,并判断第一哈希地址指示的第一存储节点中是否存储有第三对象,其中,第三对象是指关键字与初始关键字相同的对象;在第一存储节点中未存储第三对象的情况下,将初始关键字与初始名称关联存储至第一存储节点中,得到更新后的哈希表;在第一存储节点中存储有第三对象的情况下,根据初始名称变更初始关键字,得到目标关键字;计算目标关键字在哈希表中的第二哈希地址,并将目标关键字与初始名称关联存储至第二哈希地址指示的第二存储节点中,得到更新后的哈希表;将更新后的哈希表发送至从设备中,并接收同步指令,解析同步指令,得到第二对象,并在哈希表中确定第二对象对应的第一对象的关键字,得到当前关键字,并将第二对象和当前关键字发送至从设备中,其中,同步指令用于将第二对象同步至从设备,第二对象为第一对象的子对象。
9.可选地,在第一存储节点中存储有第三对象的情况下,根据初始名称变更初始关键字,得到目标关键字包括:获取第三对象的第一预设名称,并判断第一预设名称对应的预设值是否大于初始名称对应的预设值;在第一预设名称对应的预设值大于初始名称对应的预设值的情况下,将初始关键字设置为目标关键字;在第一预设名称对应的预设值小于初始名称对应的预设值的情况下,将初始关键字加1,得到更新后的初始关键字,并重新执行计算初始关键字在主设备中的哈希表中的哈希地址,得到第一哈希地址的步骤,直至第一预设名称对应的预设值大于初始名称对应的预设值,并将更新后的初始关键字确定为目标关键字。
10.可选地,在将目标关键字与初始名称关联存储至第二哈希地址指示的第二存储节点中,得到更新后的哈希表之前,该方法还包括:获取第二哈希地址中关键字与目标关键字相同的第四对象,并将第四对象从第二哈希地址指示的第二存储节点中删除;将第四对象的关键字加1,并将调整后的第四对象添加至第二哈希地址的下一地址,得到更新后的哈希表。
11.可选地,在将目标关键字与初始名称关联存储至第二哈希地址指示的第二存储节点中,得到更新后的哈希表之后,该方法还包括:主设备接收删除指令,根据删除指令中的第一关键字确定第五对象的第三哈希地址,并根据第三哈希地址确定第五对象所在的存储节点,并根据第一关键字从第五对象所在的存储节点中删除第五对象,其中,删除指令中包括第五对象的第一关键字;将第一关键字加1,得到第二关键字,并将第三哈希地址加1,得到第四哈希地址,并根据第四哈希地址指示的第四存储节点中的对象存储情况确定当前哈希表的变更情况。
12.可选地,根据第四哈希地址指示的第四存储节点中的对象存储情况确定当前哈希表的变更情况包括:判断第四存储节点中是否存储第二关键字关联的第六对象;在第四存储节点中未存储第二关键字关联的第六对象的情况下,将当前哈希表确定为更新后的哈希表;在第四存储节点中已存储第二关键字关联的第六对象的情况下,获取第六对象的第二预设名称,并根据第二预设名称生成第二数值;判断第二数值是否小于等于第一关键字;在第二数值大于第一关键字的情况下,将当前哈希表确定为更新后的哈希表;在第二数值小于等于第一关键字的情况下,将第六对象从第四存储节点中移动至第三存储节点中,并将第六对象的第二关键字修改为第一关键字,其中,第三存储节点的哈希地址为第三哈希地址。
13.可选地,在将第二对象和当前关键字发送至从设备中之后,该方法还包括:从设备根据当前关键字在从设备中的哈希表中获取第二对象的第一对象的初始名称。
14.可选地,计算初始关键字在主设备中的哈希表中的哈希地址,得到第一哈希地址包括:获取哈希表的表长,得到初始长度;将初始关键字与初始长度相除,得到余数;将余数确定为第一哈希地址。
15.根据本技术的另一方面,提供了一种数据处理装置。该装置包括:第一获取单元,用于获取添加在主设备中的第一对象,并获取第一对象的初始名称,并根据初始名称生成第一数值,并将第一数值确定为第一对象的初始关键字;第一计算单元,用于计算初始关键字在主设备中的哈希表中的哈希地址,得到第一哈希地址,并判断第一哈希地址指示的第一存储节点中是否存储有第三对象,其中,第三对象是指关键字与初始关键字相同的对象;
存储单元,用于在第一存储节点中未存储第三对象的情况下,将初始关键字与初始名称关联存储至第一存储节点中,得到更新后的哈希表;第一变更单元,用于在第一存储节点中存储有第三对象的情况下,根据初始名称变更初始关键字,得到目标关键字;第二计算单元,用于计算目标关键字在哈希表中的第二哈希地址,并将目标关键字与初始名称关联存储至第二哈希地址指示的第二存储节点中,得到更新后的哈希表;同步单元,用于将更新后的哈希表发送至从设备中,并接收同步指令,解析同步指令,得到第二对象,并在哈希表中确定第二对象对应的第一对象的关键字,得到当前关键字,并将第二对象和当前关键字发送至从设备中,其中,同步指令用于将第二对象同步至从设备,第二对象为第一对象的子对象。
16.根据本发明实施例的另一方面,还提供了一种计算机存储介质,计算机存储介质用于存储程序,其中,程序运行时控制计算机存储介质所在的设备执行一种数据处理方法。
17.根据本发明实施例的另一方面,还提供了一种电子设备,包含一个或多个处理器和存储器;存储器中存储有计算机可读指令,处理器用于运行计算机可读指令,其中,计算机可读指令运行时执行一种数据处理方法。
18.通过本技术,采用以下步骤:获取添加在主设备中的第一对象,并获取第一对象的初始名称,并根据初始名称生成第一数值,并将第一数值确定为第一对象的初始关键字;计算初始关键字在主设备中的哈希表中的哈希地址,得到第一哈希地址,并判断第一哈希地址指示的第一存储节点中是否存储有第三对象,其中,第三对象是指关键字与初始关键字相同的对象;在第一存储节点中未存储第三对象的情况下,将初始关键字与初始名称关联存储至第一存储节点中,得到更新后的哈希表;在第一存储节点中存储有第三对象的情况下,根据初始名称变更初始关键字,得到目标关键字;计算目标关键字在哈希表中的第二哈希地址,并将目标关键字与初始名称关联存储至第二哈希地址指示的第二存储节点中,得到更新后的哈希表;将更新后的哈希表发送至从设备中,并接收同步指令,解析同步指令,得到第二对象,并在哈希表中确定第二对象对应的第一对象的关键字,得到当前关键字,并将第二对象和当前关键字发送至从设备中,其中,同步指令用于将第二对象同步至从设备,第二对象为第一对象的子对象。解决了相关技术中在对配置对象进行同步时携带的信息较多,导致同步效率低并且占用网络带宽的问题。通过在主设备中设置哈希表,并在对第二对象进行同步之前,将第二对象所属的第一对象的信息存储至哈希表中,并将哈希表同步至从设备中,进而可以通过第一对象对应的关键字将第二对象同步至从设备中,此时,可以在从设备中的哈希表中通过关键字确定第一对象的名称,进而达到了在进行对象同步的时候无需携带大量名称数据,提高了传输效率的效果,并且在设备间存在大量需要携带关联配置对象名称索引的动态数据的同步时,使用上述方法还可以减小对网络带宽占用以及配置同步效率的影响。
附图说明
19.构成本技术的一部分的附图用来提供对本技术的进一步理解,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
20.图1是现有技术中使用的数据同步方法的示意图;
21.图2是根据本技术实施例提供的数据处理方法的流程图;
22.图3是根据本技术实施例提供的对象存储流程的流程图;
23.图4是根据本技术实施例提供的可选地哈希表的示意图;
24.图5是根据本技术实施例提供的对象删除流程的流程图;
25.图6是根据本技术实施例提供的数据处理装置的示意图。
具体实施方式
26.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
27.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
28.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
29.需要说明的是,本公开所涉及的相关信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。例如,本系统和相关用户或机构间设置有接口,在获取相关信息之前,需要通过接口向前述的用户或机构发送获取请求,并在接收到前述的用户或机构反馈的同意信息后,获取相关信息。
30.根据本技术的实施例,提供了一种数据处理方法。
31.图2是根据本技术实施例提供的数据处理方法的流程图。如图2所示,该方法包括以下步骤:
32.步骤s201,获取添加在主设备中的第一对象,并获取第一对象的初始名称,并根据初始名称生成第一数值,并将第一数值确定为第一对象的初始关键字。
33.具体的,本技术对图1中的二级配置对象的同步方法进行了变更,第一对象可以为图1中的一级配置对象,在将第一对象从主设备备份至从设备之前,需要先确定第一对象的名称,也即初始名称,将该初始名称进行字符串哈希变换,生成一个数值,并将该数值确定为第一对象的初始关键字。
34.步骤s202,计算初始关键字在主设备中的哈希表中的哈希地址,得到第一哈希地址,并判断第一哈希地址指示的第一存储节点中是否存储有第三对象,其中,第三对象是指关键字与初始关键字相同的对象。
35.具体的,在得到初始关键字后,可以通过初始关键字计算第一对象在主设备中的哈希表中的哈希地址,从而可以将第一对象和初始关键字关联存储至对应的哈希地址中。
36.需要说明的是,在第一哈希地址指示的第一存储节点中如果存在关键字与初始关键字相同的第三对象,则需要确定第三对象与第一对象是否相同,如果第三对象和第一对
象的名称完全相同,则直接使用第三对象的关键字和哈希地址作为第二对象的携带信息发送至从设备即可。在第三对象和第一对象不同的情况下,则表征第三对象和第一对象的名称生成的初始关键字恰好相同,此时,需要将第一对象存储至其余哈希地址指示的存储节点中,从而保证根据关键字确定的对象的名称的准确性。
37.步骤s203,在第一存储节点中未存储第三对象的情况下,将初始关键字与初始名称关联存储至第一存储节点中,得到更新后的哈希表。
38.具体的,在第一存储节点中不存在第三对象的情况下,可以直接将初始关键字与初始名称关联存储至第一存储节点中,第一存储节点中也不会产生关键字相同的两个对象。
39.图3是根据本技术实施例提供的对象存储流程的流程图,如图3中的步骤1所示,key为对象的关键字,对象1的关键字为22,则可以通过关键字计算得到存储的哈希地址为2,则将其存储至哈希地址为2的存储节点中。同样的,可以将对象2和对象3存储至哈希地址为3和4的存储节点中。
40.步骤s204,在第一存储节点中存储有第三对象的情况下,根据初始名称变更初始关键字,得到目标关键字。
41.具体的,在第一存储节点中存储有第三对象的情况下,表征无法将第一对象存储至第一存储节点中,此时,需要确定将第一对象存储至其他存储节点,或是将第一对象存储至第一存储节点中,并将第三对象存储至其他节点中。
42.需要说明的是,可以通过确定第一对象和第三对象的名称内容确定移动对象是第一对象还是第三对象,其中,名称内容可以为根据组成名称的字母的大小确定是否进行关键字变更,例如,第一对象的名称为bcd,第三对象的名称为abc,则第一对象的名称的第一位为b,则第三对象的名称的第一位为a,此时,由于b的ascii码大于a,因此第一对象的名称的值大于第三对象的名称的值,此时将第一对象存储至其他存储节点,在第一对象的名称对应的值小于第三对象的情况下,将第一对象存储至第一存储节点,并将第三存储对象存储至其他存储节点。
43.步骤s205,计算目标关键字在哈希表中的第二哈希地址,并将目标关键字与初始名称关联存储至第二哈希地址指示的第二存储节点中,得到更新后的哈希表。
44.具体的,在第一对象的名称的值大于第三对象的情况下,可以将初始关键字更新为目标关键字,并计算目标关键字对应的第二哈希地址,并通过上述流程再次判断第一对象能否存储至第二哈希地址指示的第二存储节点中,并在可以存储至第二存储节点的情况下,将第一对象与目标关键字关联存储至第二存储节点中,从而完成哈希表的更新。
45.步骤s206,将更新后的哈希表发送至从设备中,并接收同步指令,解析同步指令,得到第二对象,并在哈希表中确定第二对象对应的第一对象的关键字,得到当前关键字,并将第二对象和当前关键字发送至从设备中,其中,同步指令用于将第二对象同步至从设备,第二对象为第一对象的子对象。
46.需要说明的是,第二对象可以为图1中第一对象下属的多个二级配置对象中的一个,在完成哈希表的更新后,可以通过将哈希表发送至从设备中的方式进行哈希表的更新,由于从设备中存在与主设备中相同的哈希表,因此,在由主设备向从设备同步二级配置对象的时候,可以直接将二级配置对象携带第一对象在哈希表中对应的当前关键字,并在从
设备中通过当前关键字确定第一对象的初始名称,进而达到了在同步第二对象的时候,无需携带数据量较大的第一对象的初始名称,而是可以直接通过初始关键字在哈希表中确定第一对象的初始名称的效果。
47.具体的,在主设备接收到同步指令后,并从同步指令中获取第二对象,并通过第二对象与第一对象之间的关联关系确定第一对象的初始名称,并根据初始名称在哈希表中确定哈希表中的当前关键字,并将当前关键字与第二对象一同发送至从设备,从而可以在从设备中的哈希表中根据当前关键字获取到第一对象的名称。
48.进一步的,在主设备中的哈希表发生变化的时候,可以将变化后的整个哈希表同步发送至从设备中,从而完成从设备中的哈希表变化,也可以将添加在主设备中的第一对象发送至从设备中,并在从设备中执行上述步骤,使得从设备中的哈希表与主设备中的哈希表发生相同的变更。
49.本技术实施例提供的数据处理方法,通过获取添加在主设备中的第一对象,并获取第一对象的初始名称,并根据初始名称生成第一数值,并将第一数值确定为第一对象的初始关键字;计算初始关键字在主设备中的哈希表中的哈希地址,得到第一哈希地址,并判断第一哈希地址指示的第一存储节点中是否存储有第三对象,其中,第三对象是指关键字与初始关键字相同的对象;在第一存储节点中未存储第三对象的情况下,将初始关键字与初始名称关联存储至第一存储节点中,得到更新后的哈希表;在第一存储节点中存储有第三对象的情况下,根据初始名称变更初始关键字,得到目标关键字;计算目标关键字在哈希表中的第二哈希地址,并将目标关键字与初始名称关联存储至第二哈希地址指示的第二存储节点中,得到更新后的哈希表;将更新后的哈希表发送至从设备中,并接收同步指令,解析同步指令,得到第二对象,并在哈希表中确定第二对象对应的第一对象的关键字,得到当前关键字,并将第二对象和当前关键字发送至从设备中,其中,同步指令用于将第二对象同步至从设备,第二对象为第一对象的子对象。解决了相关技术中在对配置对象进行同步时携带的信息较多,导致同步效率低并且占用网络带宽的问题。通过在主设备中设置哈希表,并在对第二对象进行同步之前,将第二对象所属的第一对象的信息存储至哈希表中,并将哈希表同步至从设备中,进而可以通过第一对象对应的关键字将第二对象同步至从设备中,此时,可以在从设备中的哈希表中通过关键字确定第一对象的名称,进而达到了在进行对象同步的时候无需携带大量名称数据,提高了传输效率的效果,并且在设备间存在大量需要携带关联配置对象名称索引的动态数据的同步时,使用上述方法还可以减小对网络带宽占用以及配置同步效率的影响。
50.可选地,在本技术实施例提供的数据处理方法中,在第一存储节点中存储有第三对象的情况下,根据初始名称变更初始关键字,得到目标关键字包括:获取第三对象的第一预设名称,并判断第一预设名称对应的预设值是否大于初始名称对应的预设值;在第一预设名称对应的预设值大于初始名称对应的预设值的情况下,将初始关键字设置为目标关键字;在第一预设名称对应的预设值小于初始名称对应的预设值的情况下,将初始关键字加1,得到更新后的初始关键字,并重新执行计算初始关键字在主设备中的哈希表中的哈希地址,得到第一哈希地址的步骤,直至第一预设名称对应的预设值大于初始名称对应的预设值,并将更新后的初始关键字确定为目标关键字。
51.需要说明的是,名称对应的值可以名称对应的ascii码,例如,第一对象的名称为
bcd,第三对象的名称为abc,则第一对象的名称的第一位为b,则第三对象的名称的第一位为a,此时,由于b的ascii码大于a,因此第一对象的名称的值大于第三对象的名称的值。
52.具体的,如图3所示,其中,str_1的值《str_4的值《str_2的值。
53.对象1的名称:str_1,通过名称计算的字符串hash值:22;
54.对象2的名称:str_2,通过名称计算的字符串hash值:23;
55.对象3的名称:str_3,通过名称计算的字符串hash值:24;
56.对象4的名称:str_4,通过名称计算的字符串hash值:22;
57.在将对象1-对象3进行存储后的步骤2中,由于对象4的初始关键字为22,与对象1相同,在当前场景下,图中的对象4即为第一对象,图中的对象1即为第三对象,此时,需要确定并对比对象4的名称str_4与对象1的名称str_1的长度,由于对象4的名称str_4大于对象1的名称str_1,则将对象4的初始关键字22加1,得到更新后的初始关键字为23,并根据更新后的初始关键字重新计算哈希地址为3,此时,需要将对象4与对象2进行对比,由于对象4的更新后的初始关键字仍与对象2的关键字相同,均为23,则需要对比对象4的名称str_4与对象2的名称str_2的长度,由于对象4的名称str_4小于对象2的名称str_2,则将对象4存储至哈希地址为3的存储节点中。
58.由于将图3中的对象4进行存储的时候,需要将存储节点中的与对象4的关键字相同的对象进行移动,因此,可选地,在本技术实施例提供的数据处理方法中,在将目标关键字与初始名称关联存储至第二哈希地址指示的第二存储节点中,得到更新后的哈希表之前,该方法还包括:获取第二哈希地址中关键字与目标关键字相同的第四对象,并将第四对象从第二哈希地址指示的第二存储节点中删除;将第四对象的关键字加1,并将调整后的第四对象添加至第二哈希地址的下一地址,得到更新后的哈希表。
59.需要说明的是,图4是根据本技术实施例提供的可选地哈希表的示意图,在第一预设名称对应的预设值大于初始名称对应的预设值的情况下,也即对象4的名称str_4小于对象1的名称str_1,则将对象4存储在哈希地址为2的存储单元中,此时,需要将对象1进行重新存储,此时,对象1则为第四对象,并将对象1的关键字加1,并将对象1的哈希地址加1,也即由之前的22和2变更为23和3,并重新进行存储,此时,在进行存储的时候,则将对象1与哈希地址相同的对象2进行对比,此时,由于对象1的名称的长度小于对象2,则将对象1添加至哈希地址为3的存储单元中,并将对象2进行移动,重复上述方法,将对象2移动至哈希地址为4的存储节点中,并将对象3移动至哈希地址为5的存储节点中,从而得到如图4所示的哈希表。
60.可选地,在本技术实施例提供的数据处理方法中,在将目标关键字与初始名称关联存储至第二哈希地址指示的第二存储节点中,得到更新后的哈希表之后,该方法还包括:主设备接收删除指令,根据删除指令中的第一关键字确定第五对象的第三哈希地址,并根据第三哈希地址确定第五对象所在的存储节点,并根据第一关键字从第五对象所在的存储节点中删除第五对象,其中,删除指令中包括第五对象的第一关键字;将第一关键字加1,得到第二关键字,并将第三哈希地址加1,得到第四哈希地址,并根据第四哈希地址指示的第四存储节点中的对象存储情况确定当前哈希表的变更情况。
61.具体的,在完成哈希表的更新后,还可以将哈希表中存储的对象以及该对象的信息进行删除,例如,在接收到删除指令后,可以根据删除指令中的第一关键字确定需要删除
的对象,例如,图5是根据本技术实施例提供的对象删除流程的流程图,图5中的对象4的关键字为22,哈希地址为2,对象1的关键字为23,哈希地址为3,对象2的关键字为24,哈希地址为4,对象3的关键字为25,哈希地址为5,此时,在第一关键字为22的情况下,应将对象4进行删除,并确定第一关键词的第三哈希地址为2,并将第一关键字加1,得到第二关键字,并将第三哈希地址加1,得到第二关键字为23,第四哈希地址为3,从而可以找到对应的对象为对象1,并根据对象1的名称确定是否需要移动对象1。
62.进一步的,为了确定是否需要移动对象1,可选地,在本技术实施例提供的数据处理方法中,根据第四哈希地址指示的第四存储节点中的对象存储情况确定当前哈希表的变更情况包括:判断第四存储节点中是否存储第二关键字关联的第六对象;在第四存储节点中未存储第二关键字关联的第六对象的情况下,将当前哈希表确定为更新后的哈希表;在第四存储节点中已存储第二关键字关联的第六对象的情况下,获取第六对象的第二预设名称,并根据第二预设名称生成第二数值;判断第二数值是否小于等于第一关键字;在第二数值大于第一关键字的情况下,将当前哈希表确定为更新后的哈希表;在第二数值小于等于第一关键字的情况下,将第六对象从第四存储节点中移动至第三存储节点中,并将第六对象的第二关键字修改为第一关键字,其中,第三存储节点的哈希地址为第三哈希地址。
63.具体的,首先,在确定了第四哈希地址后,需要确定第四哈希地址指示的第四存储节点中是否存储第二关键字关联的第六对象,在未存储第六对象的情况下,表征当前哈希表中存储的对象无需进行存储节点的移动,则完成哈希表的更新;在存储第六对象的情况下,需要确定通过计算第六对象的名称得到的第二数值与第一关键字是否相同,在第二数值大于第一关键字的情况下,则表征在将第六对象添加至哈希表中的时候,添加的位置即为当前所在的第四哈希地址,也即第六对象并未被移动,则无需进行调整,在第二数值小于等于第一关键字的情况下,表征第六对象本应存储至第四哈希地址之前的哈希地址中,但是由于之前的哈希地址中存储有数值与第二数值相同的对象,因此将第六对象向后移动至当前的第四哈希地址中进行存储,所以需要将第六对象向前移动,也即将第六对象从第四存储节点中移动至第三存储节点中,并将第六对象的第二关键字修改为第一关键字,从而将第六对象移动至更准确的存储节点中。
64.例如,如图5所示:
65.对象4通过名称计算的字符串hash值:22,当前关键字为22;
66.对象1通过名称计算的字符串hash值:22,当前关键字为23;
67.对象2通过名称计算的字符串hash值:23,当前关键字为24;
68.对象3通过名称计算的字符串hash值:25,当前关键字为25;
69.在删除对象4后,由于对象4的地址为2,关键字为22,则首先确定哈希地址为3的存储节点中是否存在关键字为23的对象,由于存在对象1符合上述条件,则需要确定对象1通过名称计算的字符串hash值为22,等于第一关键字,也即对象4的关键字22,则需要向前进行移动,也即将对象1移动至地址为2的存储单元中,并将关键字由23调整为22,从而得到更新后的信息为对象1通过名称计算的字符串hash值:22,当前关键字为22;同样的,在完成对象1的移动后,需要继续向下一个哈希地址中继续确认,通过同样的方法将对象2移动至地址为3的存储单元中,在进行对象3的确定的时候,此时,在判断对象3是否需要移动的时候,相当于删除对象2,则第一关键字即为对象2的关键字,也即24,由于对象3通过名称计算的
字符串hash值:25大于24,则无需进行移动,从而得到图5中序号为4的步骤中的哈希表,也即完成全部对象的位置更新后得到的最终的哈希表。
70.可选地,在本技术实施例提供的数据处理方法中,在将第二对象和当前关键字发送至从设备中之后,该方法还包括:从设备根据当前关键字在从设备中的哈希表中获取第二对象的第一对象的初始名称。
71.具体的,在主设备同步二级配置对象的时候,由于在主设备中确定了哈希表中存在一级配置对象的名称,因此,可以将第二对象和当前关键字发送至从设备中,从而可以在从设备中的哈希表中确定当前关键字对应的初始名称,从而可以在不传输初始名称的情况下在从设备中获取第二对象对应的第一对象的初始名称。
72.可选地,在本技术实施例提供的数据处理方法中,计算初始关键字在主设备中的哈希表中的哈希地址,得到第一哈希地址包括:获取哈希表的表长,得到初始长度;将初始关键字与初始长度相除,得到余数;将余数确定为第一哈希地址。
73.需要说明的是,哈希表可以为哈希链表,哈希链表中的每个哈希地址指示的存储节点中包括多个存储空间,每个存储空间中存储的对象均不相同,但是每个存储空间的哈希地址相同。
74.具体的,在计算哈希地址的时候,可以采用相除取余的方法进行确定,例如,在哈希表的表长为10,第一对象的初始关键字为22的情况下,将初始关键字与表长相除,得到的余数为2,则第一对象对应的第一哈希地址则为地址为2的存储节点。
75.需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
76.本技术实施例还提供了一种数据处理装置,需要说明的是,本技术实施例的数据处理装置可以用于执行本技术实施例所提供的用于数据处理方法。以下对本技术实施例提供的数据处理装置进行介绍。
77.图6是根据本技术实施例提供的数据处理装置的示意图。如图6所示,该装置包括:第一获取单元61,第一计算单元62,存储单元63,第一变更单元64,第二计算单元65,同步单元66。
78.第一获取单元61,用于获取添加在主设备中的第一对象,并获取第一对象的初始名称,并根据初始名称生成第一数值,并将第一数值确定为第一对象的初始关键字。
79.具体的,第一对象可以为图1中的一级配置对象,在将第一对象从主设备备份至从设备之前,需要先确定第一对象的名称,也即初始名称,将该初始名称进行字符串哈希变换,生成一个数值,并将该数值确定为第一对象的初始关键字。
80.第一计算单元62,用于计算初始关键字在主设备中的哈希表中的哈希地址,得到第一哈希地址,并判断第一哈希地址指示的第一存储节点中是否存储有第三对象,其中,第三对象是指关键字与初始关键字相同的对象。
81.具体的,在得到初始关键字后,可以通过初始关键字计算第一对象在主设备中的哈希表中的哈希地址,从而可以将第一对象和初始关键字关联存储至对应的哈希地址中。
82.需要说明的是,在第一哈希地址指示的第一存储节点中如果存在关键字与初始关键字相同的第三对象,则需要确定第三对象与第一对象是否相同,如果第三对象和第一对
象的名称完全相同,则直接使用第三对象的关键字和哈希地址作为第二对象的携带信息发送至从设备即可。在第三对象和第一对象不同的情况下,则表征第三对象和第一对象的名称生成的初始关键字恰好相同,此时,需要将第一对象存储至其余哈希地址指示的存储节点中,从而保证根据关键字确定的对象的名称的准确性。
83.存储单元63,用于在第一存储节点中未存储第三对象的情况下,将初始关键字与初始名称关联存储至第一存储节点中,得到更新后的哈希表。
84.具体的,在第一存储节点中不存在第三对象的情况下,可以直接将初始关键字与初始名称关联存储至第一存储节点中,第一存储节点中也不会产生关键字相同的两个对象。
85.图3是根据本技术实施例提供的对象存储流程的流程图,如图3中的步骤1所示,key为对象的关键字,对象1的关键字为22,则可以通过关键字计算得到存储的哈希地址为2,则将其存储至哈希地址为2的存储节点中。同样的,可以将对象2和对象3存储至哈希地址为3和4的存储节点中。
86.第一变更单元64,用于在第一存储节点中存储有第三对象的情况下,根据初始名称变更初始关键字,得到目标关键字。
87.具体的,在第一存储节点中存储有第三对象的情况下,表征无法将第一对象存储至第一存储节点中,此时,需要确定将第一对象存储至其他存储节点,或是将第一对象存储至第一存储节点中,并将第三对象存储至其他节点中。
88.需要说明的是,可以通过确定第一对象和第三对象的名称内容确定移动对象是第一对象还是第三对象,其中,名称内容可以为根据组成名称的字母的大小确定是否进行关键字变更,例如,第一对象的名称为bcd,第三对象的名称为abc,则第一对象的名称的第一位为b,则第三对象的名称的第一位为a,此时,由于b的ascii码大于a,因此第一对象的名称大于第三对象,此时将第一对象存储至其他存储节点,在第一对象的名称对应的值小于第三对象的情况下,将第一对象存储至第一存储节点,并将第三存储对象存储至其他存储节点。
89.第二计算单元65,用于计算目标关键字在哈希表中的第二哈希地址,并将目标关键字与初始名称关联存储至第二哈希地址指示的第二存储节点中,得到更新后的哈希表。
90.具体的,在第一对象的名称的值大于第三对象的情况下,可以将初始关键字更新为目标关键字,并计算目标关键字对应的第二哈希地址,并通过上述流程再次判断第一对象能否存储至第二哈希地址指示的第二存储节点中,并在可以存储至第二存储节点的情况下,将第一对象与目标关键字关联存储至第二存储节点中,从而完成哈希表的更新。
91.同步单元66,用于将更新后的哈希表发送至从设备中,并接收同步指令,解析同步指令,得到第二对象,并在哈希表中确定第二对象对应的第一对象的关键字,得到当前关键字,并将第二对象和当前关键字发送至从设备中,其中,同步指令用于将第二对象同步至从设备,第二对象为第一对象的子对象。
92.需要说明的是,第二对象可以为图1中第一对象下属的多个二级配置对象中的一个,在完成哈希表的更新后,可以通过将哈希表发送至从设备中的方式进行哈希表的更新,由于从设备中存在与主设备中相同的哈希表,因此,在由主设备向从设备同步二级配置对象的时候,可以直接将二级配置对象携带第一对象在哈希表中对应的当前关键字,并在从
设备中通过当前关键字确定第一对象的初始名称,进而达到了在同步第二对象的时候,无需携带数据量较大的第一对象的初始名称,而是可以直接通过初始关键字在哈希表中确定第一对象的初始名称的效果。
93.具体的,在主设备接收到同步指令后,并从同步指令中获取第二对象,并通过第二对象与第一对象之间的关联关系确定第一对象的初始名称,并根据初始名称在哈希表中确定哈希表中的当前关键字,并将当前关键字与第二对象一同发送至从设备,从而可以在从设备中的哈希表中根据当前关键字获取到第一对象的名称。
94.进一步的,在主设备中的哈希表发生变化的时候,可以将变化后的整个哈希表同步发送至从设备中,从而完成从设备中的哈希表变化,也可以将添加在主设备中的第一对象发送至从设备中,并在从设备中执行上述步骤,使得从设备中的哈希表与主设备中的哈希表发生相同的变更。
95.本技术实施例提供的数据处理装置,通过第一获取单元61,用于获取添加在主设备中的第一对象,并获取第一对象的初始名称,并根据初始名称生成第一数值,并将第一数值确定为第一对象的初始关键字;第一计算单元62,用于计算初始关键字在主设备中的哈希表中的哈希地址,得到第一哈希地址,并判断第一哈希地址指示的第一存储节点中是否存储有第三对象,其中,第三对象是指关键字与初始关键字相同的对象;存储单元63,用于在第一存储节点中未存储第三对象的情况下,将初始关键字与初始名称关联存储至第一存储节点中,得到更新后的哈希表;第一变更单元64,用于在第一存储节点中存储有第三对象的情况下,根据初始名称变更初始关键字,得到目标关键字;第二计算单元65,用于计算目标关键字在哈希表中的第二哈希地址,并将目标关键字与初始名称关联存储至第二哈希地址指示的第二存储节点中,得到更新后的哈希表;同步单元66,用于将更新后的哈希表发送至从设备中,并接收同步指令,解析同步指令,得到第二对象,并在哈希表中确定第二对象对应的第一对象的关键字,得到当前关键字,并将第二对象和当前关键字发送至从设备中,其中,同步指令用于将第二对象同步至从设备,第二对象为第一对象的子对象。解决了相关技术中在对配置对象进行同步时携带的信息较多,导致同步效率低并且占用网络带宽的问题。通过在主设备中设置哈希表,并在对第二对象进行同步之前,将第二对象所属的第一对象的信息存储至哈希表中,并将哈希表同步至从设备中,进而可以通过第一对象对应的关键字将第二对象同步至从设备中,此时,可以在从设备中的哈希表中通过关键字确定第一对象的名称,进而达到了在进行对象同步的时候无需携带大量名称数据,提高了传输效率的效果,并且在设备间存在大量需要携带关联配置对象名称索引的动态数据的同步时,使用上述方法还可以减小对网络带宽占用以及配置同步效率的影响。
96.可选地,在本技术实施例提供的数据处理装置中,第一变更单元64包括:第二获取模块,用于获取第三对象的第一预设名称,并判断第一预设名称对应的预设值是否大于初始名称对应的预设值;设置模块,用于在第一预设名称对应的预设值大于初始名称对应的预设值的情况下,将初始关键字设置为目标关键字;第二确定模块,用于在第一预设名称对应的预设值小于初始名称对应的预设值的情况下,将初始关键字加1,得到更新后的初始关键字,并重新执行计算初始关键字在主设备中的哈希表中的哈希地址,得到第一哈希地址的步骤,直至第一预设名称对应的预设值大于初始名称对应的预设值,并将更新后的初始关键字确定为目标关键字。
97.需要说明的是,名称对应的值可以名称对应的ascii码,例如,第一对象的名称为bcd,第三对象的名称为abc,则第一对象的名称的第一位为b,则第三对象的名称的第一位为a,此时,由于b的ascii码大于a,因此第一对象的名称的值大于第三对象的名称的值。
98.具体的,如图3所示,其中,str_1的值《str_4的值《str_2的值。
99.对象1的名称:str_1,通过名称计算的字符串hash值:22;
100.对象2的名称:str_2,通过名称计算的字符串hash值:23;
101.对象3的名称:str_3,通过名称计算的字符串hash值:24;
102.对象4的名称:str_4,通过名称计算的字符串hash值:22;
103.在将对象1-对象3进行存储后的步骤2中,由于对象4的初始关键字为22,与对象1相同,在当前场景下,图中的对象4即为第一对象,图中的对象1即为第三对象,此时,需要确定并对比对象4的名称str_4与对象1的名称str_1的长度,由于对象4的名称str_4大于对象1的名称str_1,则将对象4的初始关键字22加1,得到更新后的初始关键字为23,并根据更新后的初始关键字重新计算哈希地址为3,此时,需要将对象4与对象2进行对比,由于对象4的更新后的初始关键字仍与对象2的关键字相同,均为23,则需要对比对象4的名称str_4与对象2的名称str_2的长度,由于对象4的名称str_4小于对象2的名称str_2,则将对象4存储至哈希地址为3的存储节点中。
104.由于将图3中的对象4进行存储的时候,需要将存储节点中的与对象4的关键字相同的对象进行移动,因此,可选地,在本技术实施例提供的数据处理方法中,在将目标关键字与初始名称关联存储至第二哈希地址指示的第二存储节点中,得到更新后的哈希表之前,该方法还包括:获取第二哈希地址中关键字与目标关键字相同的第四对象,并将第四对象从第二哈希地址指示的第二存储节点中删除;将第四对象的关键字加1,并将调整后的第四对象添加至第二哈希地址的下一地址,得到更新后的哈希表。
105.需要说明的是,图4是根据本技术实施例提供的可选地哈希表的示意图,在第一预设名称对应的预设值大于初始名称对应的预设值的情况下,也即对象4的名称str_4小于对象1的名称str_1,则将对象4存储在哈希地址为2的存储单元中,此时,需要将对象1进行重新存储,此时,对象1则为第四对象,并将对象1的关键字加1,并将对象1的哈希地址加1,也即由之前的22和2变更为23和3,并重新进行存储,此时,在进行存储的时候,则将对象1与哈希地址相同的对象2进行对比,此时,由于对象1的名称的长度小于对象2,则将对象1添加至哈希地址为3的存储单元中,并将对象2进行移动,重复上述方法,将对象2移动至哈希地址为4的存储节点中,并将对象3移动至哈希地址为5的存储节点中,从而得到如图4所示的哈希表。
106.可选地,在本技术实施例提供的数据处理装置中,该装置还包括:删除单元,用于主设备接收删除指令,根据删除指令中的第一关键字确定第五对象的第三哈希地址,并根据第三哈希地址确定第五对象所在的存储节点,并根据第一关键字从第五对象所在的存储节点中删除第五对象,其中,删除指令中包括第五对象的第一关键字;第一确定单元,用于将第一关键字加1,得到第二关键字,并将第三哈希地址加1,得到第四哈希地址,并根据第四哈希地址指示的第四存储节点中的对象存储情况确定当前哈希表的变更情况。
107.具体的,在完成哈希表的更新后,还可以将哈希表中存储的对象以及该对象的信息进行删除,例如,在接收到删除指令后,可以根据删除指令中的第一关键字确定需要删除
的对象,例如,图5是根据本技术实施例提供的对象删除流程的流程图,图5中的对象4的关键字为22,哈希地址为2,对象1的关键字为23,哈希地址为3,对象2的关键字为24,哈希地址为4,对象3的关键字为25,哈希地址为5,此时,在第一关键字为22的情况下,应将对象4进行删除,并确定第一关键词的第三哈希地址为2,并将第一关键字加1,得到第二关键字,并将第三哈希地址加1,得到第二关键字为23,第四哈希地址为3,从而可以找到对应的对象为对象1,并根据对象1的名称确定是否需要移动对象1。
108.进一步的,为了确定是否需要移动对象1,可选地,在本技术实施例提供的数据处理装置中,第一确定单元包括:第一判断模块,用于判断第四存储节点中是否存储第二关键字关联的第六对象;第三确定模块,用于在第四存储节点中未存储第二关键字关联的第六对象的情况下,将当前哈希表确定为更新后的哈希表;生成模块,用于在第四存储节点中已存储第二关键字关联的第六对象的情况下,获取第六对象的第二预设名称,并根据第二预设名称生成第二数值;第二判断模块,用于判断第二数值是否小于等于第一关键字;第四确定模块,用于在第二数值大于第一关键字的情况下,将当前哈希表确定为更新后的哈希表;修改模块,用于在第二数值小于等于第一关键字的情况下,将第六对象从第四存储节点中移动至第三存储节点中,并将第六对象的第二关键字修改为第一关键字,其中,第三存储节点的哈希地址为第三哈希地址。
109.具体的,首先,在确定了第四哈希地址后,需要确定第四哈希地址指示的第四存储节点中是否存储第二关键字关联的第六对象,在未存储第六对象的情况下,表征当前哈希表中存储的对象无需进行存储节点的移动,则完成哈希表的更新;在存储第六对象的情况下,需要确定通过计算第六对象的名称得到的第二数值与第一关键字是否相同,在第二数值大于第一关键字的情况下,则表征在将第六对象添加至哈希表中的时候,添加的位置即为当前所在的第四哈希地址,也即第六对象并未被移动,则无需进行调整,在第二数值小于等于第一关键字的情况下,表征第六对象本应存储至第四哈希地址之前的哈希地址中,但是由于之前的哈希地址中存储有数值与第二数值相同的对象,因此将第六对象向后移动至当前的第四哈希地址中进行存储,所以需要将第六对象向前移动,也即将第六对象从第四存储节点中移动至第三存储节点中,并将第六对象的第二关键字修改为第一关键字,从而将第六对象移动至更准确的存储节点中。
110.例如,如图5所示:
111.对象4通过名称计算的字符串hash值:22,当前关键字为22;
112.对象1通过名称计算的字符串hash值:22,当前关键字为23;
113.对象2通过名称计算的字符串hash值:23,当前关键字为24;
114.对象3通过名称计算的字符串hash值:25,当前关键字为25;
115.在删除对象4后,由于对象4的地址为2,关键字为22,则首先确定哈希地址为3的存储节点中是否存在关键字为23的对象,由于存在对象1符合上述条件,则需要确定对象1通过名称计算的字符串hash值为22,等于第一关键字,也即对象4的关键字22,则需要向前进行移动,也即将对象1移动至地址为2的存储单元中,并将关键字由23调整为22,从而得到更新后的信息为对象1通过名称计算的字符串hash值:22,当前关键字为22;同样的,在完成对象1的移动后,需要继续向下一个哈希地址中继续确认,通过同样的方法将对象2移动至地址为3的存储单元中,在进行对象3的确定的时候,此时,在判断对象3是否需要移动的时候,
相当于删除对象2,则第一关键字即为对象2的关键字,也即24,由于对象3通过名称计算的字符串hash值:25大于24,则无需进行移动,从而得到图5中序号为4的步骤中的哈希表,也即完成全部对象的位置更新后得到的最终的哈希表。
116.可选地,在本技术实施例提供的数据处理装置中,该装置还包括:第四获取单元,用于从设备根据当前关键字在从设备中的哈希表中获取第二对象的第一对象的初始名称。
117.具体的,在主设备同步二级配置对象的时候,由于在主设备中确定了哈希表中存在一级配置对象的名称,因此,可以将第二对象和当前关键字发送至从设备中,从而可以在从设备中的哈希表中确定当前关键字对应的初始名称,从而可以在不传输初始名称的情况下在从设备中获取第二对象对应的第一对象的初始名称。
118.可选地,在本技术实施例提供的数据处理装置中,第一计算单元62包括:第一获取模块,用于获取哈希表的表长,得到初始长度;计算模块,用于将初始关键字与初始长度相除,得到余数;第一确定模块,用于将余数确定为第一哈希地址。
119.需要说明的是,哈希表可以为哈希链表,哈希链表中的每个哈希地址指示的存储节点中包括多个存储空间,每个存储空间中存储的对象均不相同,但是每个存储空间的哈希地址相同。
120.具体的,在计算哈希地址的时候,可以采用相除取余的方法进行确定,例如,在哈希表的表长为10,第一对象的初始关键字为22的情况下,将初始关键字与表长相除,得到的余数为2,则第一对象对应的第一哈希地址则为地址为2的存储节点。
121.上述数据处理装置包括处理器和存储器,上述第一获取单元61,第一计算单元62,存储单元63,第一变更单元64,第二计算单元65,同步单元66等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
122.处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决了相关技术中在对配置对象进行同步时携带的信息较多,导致同步效率低并且占用网络带宽的问题。
123.存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram),存储器包括至少一个存储芯片。
124.本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现所述数据处理方法。
125.本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述数据处理方法。
126.本发明实施例提供了一种电子设备,包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现上述数据处理步骤。本文中的设备可以是服务器、pc、pad、手机等。
127.本技术还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有上述数据处理方法步骤的程序。
128.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机
可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
129.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
130.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
131.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
132.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
133.存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。存储器是计算机可读介质的示例。
134.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
135.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
136.以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
技术特征:
1.一种数据处理方法,其特征在于,包括:获取添加在主设备中的第一对象,并获取所述第一对象的初始名称,并根据所述初始名称生成第一数值,并将所述第一数值确定为所述第一对象的初始关键字;计算所述初始关键字在主设备中的哈希表中的哈希地址,得到第一哈希地址,并判断所述第一哈希地址指示的第一存储节点中是否存储有第三对象,其中,所述第三对象是指关键字与所述初始关键字相同的对象;在所述第一存储节点中未存储所述第三对象的情况下,将所述初始关键字与所述初始名称关联存储至所述第一存储节点中,得到更新后的哈希表;在所述第一存储节点中存储有所述第三对象的情况下,根据所述初始名称变更所述初始关键字,得到目标关键字;计算所述目标关键字在所述哈希表中的第二哈希地址,并将所述目标关键字与所述初始名称关联存储至所述第二哈希地址指示的第二存储节点中,得到更新后的哈希表;将所述更新后的哈希表发送至从设备中,并接收同步指令,解析所述同步指令,得到第二对象,并在所述哈希表中确定所述第二对象对应的第一对象的关键字,得到当前关键字,并将所述第二对象和所述当前关键字发送至从设备中,其中,所述同步指令用于将所述第二对象同步至所述从设备,所述第二对象为所述第一对象的子对象。2.根据权利要求1所述的方法,其特征在于,在所述第一存储节点中存储有所述第三对象的情况下,根据所述初始名称变更所述初始关键字,得到目标关键字包括:获取所述第三对象的第一预设名称,并判断所述第一预设名称对应的预设值是否大于所述初始名称对应的预设值;在所述第一预设名称对应的预设值大于所述初始名称对应的预设值的情况下,将所述初始关键字设置为所述目标关键字;在所述第一预设名称对应的预设值小于所述初始名称对应的预设值的情况下,将所述初始关键字加1,得到更新后的初始关键字,并重新执行所述计算所述初始关键字在主设备中的哈希表中的哈希地址,得到第一哈希地址的步骤,直至所述第一预设名称对应的预设值大于所述初始名称对应的预设值,并将更新后的初始关键字确定为所述目标关键字。3.根据权利要求2所述的方法,其特征在于,在将所述目标关键字与所述初始名称关联存储至所述第二哈希地址指示的第二存储节点中,得到更新后的哈希表之前,所述方法还包括:获取所述第二哈希地址中关键字与所述目标关键字相同的第四对象,并将所述第四对象从所述第二哈希地址指示的第二存储节点中删除;将所述第四对象的关键字加1,并将调整后的第四对象添加至所述第二哈希地址的下一地址,得到更新后的哈希表。4.根据权利要求1所述的方法,其特征在于,在将所述目标关键字与所述初始名称关联存储至所述第二哈希地址指示的第二存储节点中,得到更新后的哈希表之后,所述方法还包括:主设备接收删除指令,根据所述删除指令中的第一关键字确定第五对象的第三哈希地址,并根据所述第三哈希地址确定第五对象所在的存储节点,并根据所述第一关键字从所述第五对象所在的存储节点中删除所述第五对象,其中,所述删除指令中包括所述第五对
象的第一关键字;将所述第一关键字加1,得到第二关键字,并将所述第三哈希地址加1,得到第四哈希地址,并根据所述第四哈希地址指示的第四存储节点中的对象存储情况确定当前哈希表的变更情况。5.根据权利要求4所述的方法,其特征在于,根据所述第四哈希地址指示的第四存储节点中的对象存储情况确定当前哈希表的变更情况包括:判断所述第四存储节点中是否存储所述第二关键字关联的第六对象;在所述第四存储节点中未存储所述第二关键字关联的第六对象的情况下,将当前哈希表确定为更新后的哈希表;在所述第四存储节点中已存储所述第二关键字关联的第六对象的情况下,获取所述第六对象的第二预设名称,并根据所述第二预设名称生成第二数值;判断所述第二数值是否小于等于所述第一关键字;在所述第二数值大于所述第一关键字的情况下,将当前哈希表确定为更新后的哈希表;在所述第二数值小于等于所述第一关键字的情况下,将所述第六对象从所述第四存储节点中移动至第三存储节点中,并将所述第六对象的第二关键字修改为所述第一关键字,其中,所述第三存储节点的哈希地址为所述第三哈希地址。6.根据权利要求1所述的方法,其特征在于,在将所述第二对象和所述当前关键字发送至从设备中之后,所述方法还包括:所述从设备根据所述当前关键字在所述从设备中的哈希表中获取所述第二对象的所述第一对象的初始名称。7.根据权利要求1所述的方法,其特征在于,计算所述初始关键字在主设备中的哈希表中的哈希地址,得到第一哈希地址包括:获取所述哈希表的表长,得到初始长度;将所述初始关键字与所述初始长度相除,得到余数;将所述余数确定为所述第一哈希地址。8.一种数据处理装置,其特征在于,包括:第一获取单元,用于获取添加在主设备中的第一对象,并获取所述第一对象的初始名称,并根据所述初始名称生成第一数值,并将所述第一数值确定为所述第一对象的初始关键字;第一计算单元,用于计算所述初始关键字在主设备中的哈希表中的哈希地址,得到第一哈希地址,并判断所述第一哈希地址指示的第一存储节点中是否存储有第三对象,其中,所述第三对象是指关键字与所述初始关键字相同的对象;存储单元,用于在所述第一存储节点中未存储所述第三对象的情况下,将所述初始关键字与所述初始名称关联存储至所述第一存储节点中,得到更新后的哈希表;第一变更单元,用于在所述第一存储节点中存储有所述第三对象的情况下,根据所述初始名称变更所述初始关键字,得到目标关键字;第二计算单元,用于计算所述目标关键字在所述哈希表中的第二哈希地址,并将所述目标关键字与所述初始名称关联存储至所述第二哈希地址指示的第二存储节点中,得到更
新后的哈希表;同步单元,用于将所述更新后的哈希表发送至从设备中,并接收同步指令,解析所述同步指令,得到第二对象,并在所述哈希表中确定所述第二对象对应的第一对象的关键字,得到当前关键字,并将所述第二对象和所述当前关键字发送至从设备中,其中,所述同步指令用于将所述第二对象同步至所述从设备,所述第二对象为所述第一对象的子对象。9.一种计算机存储介质,其特征在于,所述计算机存储介质用于存储程序,其中,所述程序运行时控制所述计算机存储介质所在的设备执行权利要求1至7中任意一项所述的数据处理方法。10.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任意一项所述的数据处理方法。
技术总结
本申请公开了一种数据处理方法、装置、存储介质以及电子设备。该方法包括:获取添加在主设备中的第一对象的初始名称,并根据初始名称生成第一数值,将第一数值确定为初始关键字;计算初始关键字的哈希地址,得到第一哈希地址,判断第一哈希地址中是否存储有第三对象;在第一哈希地址中未存储第三对象的情况下,将初始关键字与初始名称关联存储至第一哈希地址;在第一哈希地址中存储有第三对象的情况下,根据初始名称变更初始关键字,得到目标关键字;计算目标关键字的第二哈希地址,将目标关键字与初始名称存储至第二哈希地址中。通过本申请,解决了相关技术中在对配置对象进行同步时携带的信息较多,导致同步效率低并且占用网络带宽的问题。用网络带宽的问题。用网络带宽的问题。
技术研发人员:张作涛 庞帆栋 江雪峰 万腾飞
受保护的技术使用者:山石网科通信技术股份有限公司
技术研发日:2023.04.17
技术公布日:2023/7/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
