一种对象克隆的方法、系统、设备及介质技术方案

技术编号:25396630 阅读:22 留言:0更新日期:2020-08-25 23:01
本发明专利技术公开了一种对象克隆的方法、系统、设备和存储介质,方法包括:基于被克隆对象创建父对象,并建立父对象与被克隆对象的键值对数据的关联;基于父对象创建多个子对象,并建立多个子对象与父对象的键值对数据的关联;响应于在子对象中增加键值对数据,将待增加的键值对数据保存在子对象;以及响应于在子对象中删除键值对数据,基于子对象与父对象的关联将待删除的键值对数据及排在待删除的键值对数据后面的连续预定数量的键值对数据从父对象拷贝到子对象,并删除待删除的键值对数据。本发明专利技术提出的方案通过建立父对象来避免数据的拷贝,节省存储空间,并在删除键值对数据时只拷贝部分数据,降低了拷贝过程中产生的数据量。

【技术实现步骤摘要】
一种对象克隆的方法、系统、设备及介质
本专利技术涉及数据处理领域,更具体地,特别是指一种对象克隆的方法、系统、计算机设备及可读介质。
技术介绍
克隆操作要求创建一个kv(key-value,键值对)数据与被克隆对象完全相同的全新对象,当被克隆对象包含的kv数据很多时,克隆操作会存在相同的数据被保存两份甚至多份的问题造成存储空间的浪费,而且在拷贝过程中需要较长时间与本地数据库进行交互,并且需要进行大批量的数据读取与写入以处理全部kv数据,在这个过程中可能对程序性能造成影响。一种优化的方法的是采用写时复制机制,在克隆操作时不进行真正的拷贝而是在克隆对象内部保存一份被克隆对象的引用,这样两个对象可以共享同一份数据以避免和数据库产生交互,待到需要对克隆对象kv数据进行修改时再把数据真正拷贝过来,这种方法能够一定程度上避免空间浪费,但是当只需要对克隆对象的少量kv数据进行修改时,依然会将全部数据从被克隆对象拷贝过来,这样还是无法避免上述的空间浪费和影响程序性能的问题。
技术实现思路
有鉴于此,本专利技术实施例的目的在于提出一种对象克隆的方法、系统、计算机设备及计算机可读存储介质,基于被克隆对象新创建一个父对象,从而避免数据的拷贝,节省存储空间,并在删除键值对数据时只拷贝部分数据而不是一次全部拷贝,避免了全部拷贝造成的空间浪费和大量数据拷贝造成的性能影响。基于上述目的,本专利技术实施例的一方面提供了一种对象克隆的方法,包括如下步骤:基于被克隆对象创建父对象,并建立所述父对象与所述被克隆对象的键值对数据的关联;基于所述父对象创建多个子对象,并建立多个所述子对象与所述父对象的键值对数据的关联;响应于在所述子对象中增加键值对数据,将待增加的键值对数据保存在所述子对象;以及响应于在所述子对象中删除键值对数据,基于所述子对象与所述父对象的关联将待删除的键值对数据及排在所述待删除的键值对数据后面的连续预定数量的键值对数据从所述父对象拷贝到所述子对象,并删除所述待删除的键值对数据。在一些实施方式中,所述基于所述子对象与所述父对象的关联将待删除的键值对数据及排在所述待删除的键值对数据后面的连续预定数量的键值对数据从所述父对象拷贝到所述子对象,并删除所述待删除的键值对数据包括:判断所述待删除的键值对数据是否已被拷贝到所述子对象;以及响应于所述待删除的键值对数据已被拷贝到所述子对象,将所述待删除的键值对数据删除,并继续上次拷贝的顺序将连续预定数量的键值对数据从所述父对象拷贝到所述子对象。在一些实施方式中,还包括:判断所有的子对象是否将父对象的键值对数据拷贝或删除完成;以及响应于所有的子对象将父对象的键值对数据拷贝或删除完成,删除所述父对象。在一些实施方式中,所述判断所有的子对象是否将父对象的键值对数据拷贝或删除完成包括:建立完成列表,将已完成拷贝或删除的键值对数据写入所述完成列表,并判断所述完成列表中的键值对数据与所述父对象的键值对数据是否存在差异。本专利技术实施例的另一方面,还提供了一种对象克隆的系统,包括:第一创建模块,配置用于基于被克隆对象创建父对象,并建立所述父对象与所述被克隆对象的键值对数据的关联;第二创建模块,配置用于基于所述父对象创建多个子对象,并建立多个所述子对象与所述父对象的键值对数据的关联;增加模块,配置用于响应于在所述子对象中增加键值对数据,将待增加的键值对数据保存在所述子对象;以及删除模块,配置用于响应于在所述子对象中删除键值对数据,基于所述子对象与所述父对象的关联将待删除的键值对数据及排在所述待删除的键值对数据后面的连续预定数量的键值对数据从所述父对象拷贝到所述子对象,并删除所述待删除的键值对数据。在一些实施方式中,所述删除模块还配置用于:判断所述待删除的键值对数据是否已被拷贝到所述子对象;以及响应于所述待删除的键值对数据已被拷贝到所述子对象,将所述待删除的键值对数据删除,并继续上次拷贝的顺序将连续预定数量的键值对数据从所述父对象拷贝到所述子对象。在一些实施方式中,还包括执行模块,配置用于:判断所有的子对象是否将父对象的键值对数据拷贝或删除完成;以及响应于所有的子对象将父对象的键值对数据拷贝或删除完成,删除所述父对象。在一些实施方式中,所述执行模块还配置用于:建立完成列表,将已完成拷贝或删除的键值对数据写入所述完成列表,并判断所述完成列表中的键值对数据与所述父对象的键值对数据是否存在差异。本专利技术实施例的又一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现如上方法的步骤。本专利技术实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。本专利技术具有以下有益技术效果:基于被克隆对象新创建一个父对象,从而避免数据的拷贝,节省存储空间,并在删除键值对数据时只拷贝部分数据而不是一次全部拷贝,避免了全部拷贝造成的空间浪费和大量数据拷贝造成的性能影响。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。图1为本专利技术提供的对象克隆的方法的实施例的示意图;图2为本专利技术提供的对象克隆的计算机设备的实施例的硬件结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本专利技术实施例进一步详细说明。需要说明的是,本专利技术实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本专利技术实施例的限定,后续实施例对此不再一一说明。基于上述目的,本专利技术实施例的第一个方面,提出了一种对象克隆的方法的实施例。图1示出的是本专利技术提供的对象克隆的方法的实施例的示意图。如图1所示,本专利技术实施例包括如下步骤:S1、基于被克隆对象创建父对象,并建立父对象与被克隆对象的键值对数据的关联;S2、基于父对象创建多个子对象,并建立多个子对象与父对象的键值对数据的关联;S3、响应于在子对象中增加键值对数据,将待增加的键值对数据保存在子对象;以及S4、响应于在子对象中删除键值对数据,基于子对象与父对象的关联将待删除的键值对数据及排在待删除的键值对数据后面的连续预定数量的键值对数据从父对象拷贝到子对象,并删除待删除的键值对数据。基于被克隆对象创建父对象,并建立父对象与被克隆对象的键值对数据的关联。例如,被克隆对象为Kvobj1,Kvobj1的键值对数据存储在数据库kvdb中,Kvobj1内部的sequence(序列)变量唯一标识该对象,其中parent变量为0表示该对象不存在父对象,nums_child变量为0表本文档来自技高网...

【技术保护点】
1.一种对象克隆的方法,其特征在于,包括以下步骤:/n基于被克隆对象创建父对象,并建立所述父对象与所述被克隆对象的键值对数据的关联;/n基于所述父对象创建多个子对象,并建立多个所述子对象与所述父对象的键值对数据的关联;/n响应于在所述子对象中增加键值对数据,将待增加的键值对数据保存在所述子对象;以及/n响应于在所述子对象中删除键值对数据,基于所述子对象与所述父对象的关联将待删除的键值对数据及排在所述待删除的键值对数据后面的连续预定数量的键值对数据从所述父对象拷贝到所述子对象,并删除所述待删除的键值对数据。/n

【技术特征摘要】
1.一种对象克隆的方法,其特征在于,包括以下步骤:
基于被克隆对象创建父对象,并建立所述父对象与所述被克隆对象的键值对数据的关联;
基于所述父对象创建多个子对象,并建立多个所述子对象与所述父对象的键值对数据的关联;
响应于在所述子对象中增加键值对数据,将待增加的键值对数据保存在所述子对象;以及
响应于在所述子对象中删除键值对数据,基于所述子对象与所述父对象的关联将待删除的键值对数据及排在所述待删除的键值对数据后面的连续预定数量的键值对数据从所述父对象拷贝到所述子对象,并删除所述待删除的键值对数据。


2.根据权利要求1所述的方法,其特征在于,所述基于所述子对象与所述父对象的关联将待删除的键值对数据及排在所述待删除的键值对数据后面的连续预定数量的键值对数据从所述父对象拷贝到所述子对象,并删除所述待删除的键值对数据包括:
判断所述待删除的键值对数据是否已被拷贝到所述子对象;以及
响应于所述待删除的键值对数据已被拷贝到所述子对象,将所述待删除的键值对数据删除,并继续上次拷贝的顺序将连续预定数量的键值对数据从所述父对象拷贝到所述子对象。


3.根据权利要求1所述的方法,其特征在于,还包括:
判断所有的子对象是否将父对象的键值对数据拷贝或删除完成;以及
响应于所有的子对象将父对象的键值对数据拷贝或删除完成,删除所述父对象。


4.根据权利要求3所述的方法,其特征在于,所述判断所有的子对象是否将父对象的键值对数据拷贝或删除完成包括:
建立完成列表,将已完成拷贝或删除的键值对数据写入所述完成列表,并判断所述完成列表中的键值对数据与所述父对象的键值对数据是否存在差异。


5.一种对象克隆的系统,其特征在于,包括:
第一创建模块,配置用于基于被克隆对象创建父对象,并建立所述父对象与所述被克隆对象的键值...

【专利技术属性】
技术研发人员:张洪鑫孟祥瑞
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1