1.本技术涉及计算机
技术领域:
:,尤其涉及一种数据同步方法、装置、设备以及存储介质。
背景技术:
::2.主键(primarykey)用于引用行存储数据库中的行条目,也可以称作主键约束或者主键索引,主键可以唯一确定数据库表中每一数据行记录,便于查找数据库表中的内容。对于设置有主键的数据库表,可以基于主键实现高效的数据同步;而对于未设置主键的数据库表(也称作无主键表),则需要通过全表扫描定位增量数据的位置,导致数据同步的效率较低。技术实现要素:3.本技术提供一种数据同步方法、装置、设备以及存储介质,以期提高无主键表的数据同步的效率。4.第一方面,本技术实施例提供一种数据同步方法,应用于第一设备,包括:响应于数据同步的触发事件,获取增量数据在第一数据库表中的第一主键,该第一主键的值位于第一数据库表的隐藏列;根据该第一主键的值,从该第二数据库表的至少一个主键中确定第二主键,该第一主键的值与该第二主键的值相同;根据该第二主键,确定第二数据库表中同步该增量数据的位置;在该位置同步该增量数据。5.第二方面,本技术实施例提供一种数据同步方法,应用于第二设备,包括:响应于数据同步的触发事件,向第一设备发送增量数据在第一数据库表中的第一主键,该第一主键的值位于第一数据库表的隐藏列,且该第一主键的值用于确定该增量数据在第二数据库表中的位置。6.第三方面,本技术实施例提供一种数据同步装置,包括:获取单元,用于响应于数据同步的触发事件,获取增量数据在第一数据库表中的第一主键,该第一主键的值位于第一数据库表的隐藏列;处理单元,用于根据该第一主键的值,从该第二数据库表的至少一个主键中确定第二主键,该第一主键的值与该第二主键的值相同;该处理单元还用于根据该第二主键,确定第二数据库表中同步该增量数据的位置;该处理单元还用于在该位置同步该增量数据。7.第四方面,本技术实施例提供一种数据同步装置,包括:发送单元,用于响应于数据同步的触发事件,向第一设备发送增量数据在第一数据库表中的第一主键,该第一主键的值位于第一数据库表的隐藏列,且该第一主键的值用于确定该增量数据在第二数据库表中的位置。8.第五方面,本技术实施例提供一种电子设备,包括存储器和处理器;所述存储器存储计算机执行指令;所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如第一方面以及第二方面的方法。9.第六方面,本技术实施例提供一种存储介质,包括:可读存储介质和计算机程序,所述计算机程序用于实现第一方面以及第二方面的方法。10.本技术实施例提供的数据同步方法、装置、设备以及存储介质,通过第一数据库表中的第一主键的值确定第二数据库表中的第二主键,进而根据第二主键确定第二数据库表中同步增量数据的位置,并在该位置同步增量数据。对上层应用而言为一种无主键表的第一数据库表,本技术对其进行数据同步时提高了数据同步效率。附图说明11.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。12.图1为本技术实施例提供的一种数据同步系统100的示意图;13.图2为本技术实施例提供的一种数据同步方法200的流程示意图;14.图3为本技术实施例提供的一种数据同步方法300的流程示意图;15.图4为本技术实施例提供的一种数据同步装置400的结构示意图;16.图5为本技术实施例提供的一种数据同步装置500的结构示意图;17.图6为本技术实施例提供的一种电子设备600示意性结构图。具体实施方式18.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。19.图1为本技术实施例提供的一种数据同步系统100的示意图。如图1所示,该数据同步系统100包括源端同步模块110和目的端同步模块120,源端同步模块110和目的端同步模块120通过有线或者无线的方式连接。20.源端同步模块110和目的端同步模块120均可以是一段软件程序,或者部署有软件程序的电子设备。源同步模块110和目的端同步模块120可以独立部署或者分布式部署,例如源同步模块110和目的端同步模块120可以分别部署于两个独立的电子设备,或者源同步模块110和目的端同步模块120部署于一个电子设备中。上述电子设备例如可以是服务器、终端设备、芯片等,其中终端设备例如可以是智能手机、笔记本电脑、平板电脑、个人台式电脑等,服务器可以是普通服务器/服务器集群,或者云服务器/服务器集群。21.可选的,源端同步模块110可以与源数据库111连接,或者源端同步模块110可以部署于源数据库111所在的服务器/服务器集群中;与之类似的,目的端同步模块120可以与目的数据库121连接,或者目的端同步模块120可以部署于目的数据库121所在的服务器/服务器集群中。22.源端同步模块110与目的数据库121之间通过信息交互,可以将源数据库111中的数据库表(如下文中的第一数据库表)同步至目的数据库121中的数据库表(如下文中的第二数据库表)。23.其中,源数据库111和目的数据库121可以是异构数据库。例如源数据库111是oracle数据库,目的数据库121是非oracle数据库;或者源数据库111是关系型数据库(如mysql、sqlserver、oracle数据库),目的数据库121是非关系型数据库。当然,本技术并不排除源数据库111和目的数据库121是同构数据库的情况。24.需要说明的是,本技术仅以将源数据库111中的数据库表与目的数据库121中的数据库进行数据同步为例进行说明,但并不对本技术构成任何限定。例如,源端同步模块110与目的数据库121之间通过信息交互,可以将同一数据库中的第一数据库表和第二数据库表进行数据同步。25.数据实时同步时分为三个阶段,第一阶段进行存量数据的初始化装载,获得数据同步的基础点;第二阶段以初始化数据装载建立的同步基础点为基准进行增量数据同步;第三阶段定期对数据同步的源端数据和目标数据进行比对校验,以确认在数据同步过程中没有丢失数据。其中第二阶段和第三阶段会处于长时间并行状态。26.在第二阶段增量数据同步时,目的端同步模块120可以使用sql语句的形式进行增量数据的入库,在遇到更新(update)或者删除(deelte)形式的增量数据时,可以封装update和deelte语句,这两种语句都含有where条件来定位需要更新或者删除的数据。27.举例而言,假设第一数据库表(table1)为有主键表,其结构如表1所示:28.列名称类型是否主键列c1varcharyc2varcharc3varcharc4varchar29.表130.针对第一数据库表(table1)上的更新或删除操作,目的端同步模块120在执行数据同步的过程中,以主键c1列为检索条件,通过where语句可以在第二数据库表中快速定位至增量数据的数据行,并进行数据同步。目的端同步模块120可以通过执行如下结构化查询语言(structuredquerylanguage,sql)语句,实现更新或删除的数据同步过程:31.updatetable1setc2=x1,c3=x2,c4=x3wherec1=x'1;32.deletefromtable1wherec1=x'1;33.其中,x'1为主键的值,x1至x3为数据行更新后的数据。34.假设第一数据库表(table2)为无主键表,其结构如表2所示:35.列名称类型是否主键列c1varcharc2varcharc3varcharc4varchar36.表237.针对第一数据库表(table2)上的更新或删除操作,目的端同步模块120在执行数据同步的过程中,以数据行中的所有列(c1至c4)为检索条件,通过where语句可以在第二数据库表中进行全表扫描。目的端同步模块120可以通过执行如下sql语句,实现更新或删除的数据同步过程:38.updatetable2setc1=x1,c2=x2,c3=x3,c4=x4wherec1=x'1andc2=x'2andc3=x'3andc4=x'4;39.deletefromtable2wherec1=x'1andc2=x'2andc3=x'3andc4=x'4;40.其中,x'1至x'4为数据行更新前的数据,x1至x4为数据行更新后的数据。41.由此可见,无主键表进行数据同步时存在同步效率较低的问题,为了解决该问题,本技术通过第一数据库表的隐藏列上的主键,实现第一数据库表和第二数据库表之间的数据同步,使得第一数据库表在用户层面仍是保持无主键表,不对上层应用的执行带来影响的情况下,提高数据同步效率。42.需要说明的是,本技术尤其适用无主键表的数据同步场景,但是也仍适用于有主键表的数据同步场景,例如可以将有主键表的主键设置于隐藏列。43.下面将结合附图对本技术实施例提供的数据同步方法做详细说明。44.图2为本技术实施例提供的一种数据同步方法200的流程示意图。该方法200的执行主体可以是第一设备,该第一设备例如可以是图1所示的通信系统中的目的端同步模块120,或者部署有目的端同步模块120的芯片、芯片系统或电子设备。在一些实施例中,第一设备需要与第二设备进行交互以实现数据同步,该第二设备例如可以是图1所示的通信系统中的源端同步模块110,或者部署有源端同步模块110的芯片、芯片系统或电子设备。该方法200可以包括如图2所示的s210至s240中的部分或者全部过程。45.s210,响应于数据同步的触发事件,获取增量数据在第一数据库表中的第一主键,该第一主键的值位于第一数据库表的隐藏列;46.s220,根据第一主键的值,从第二数据库表的至少一个主键中确定第二主键,该第一主键的值与该第二主键的值相同;47.s230,根据第二主键,确定第二数据库表中同步增量数据的位置;48.s240,在该位置同步增量数据。49.其中,增量数据是指数据库表中在插入、更新、删除等数据处理时,发生变化的数据。例如,第一数据库表中的数据发生变化时,触发器将插入、更新或删除的数据写入数据库日志或者临时表。50.在上述s210中,数据同步的触发事件可以是第一设备或第二设备触发的数据同步请求。例如第一设备检测到第一数据库表存在增量数据,则生成数据同步请求,并向第二设备发送该数据同步请求,以使第一设备和第二设备之间通过交互实现数据同步;又例如,第二设备存在一定量的增量数据时,可以生成数据同步请求,并向第一设备发送该数据同步请求,以使第一设备和第二设备之间通过交互实现数据同步。除此之外,第一设备或第二设备还可以在预设时间生成数据同步请求,或者按照预设时长生成数据同步请求。51.数据同步的触发事件或者可以是预设的同步时机。例如,第一设备和第二设备在预设时间进行交互以实现数据同步,又例如,第一设备和第二设备按照预设时长进行周期性的交互以实现数据同步。52.示例性的,上述s210中,第一设备可以接收第二设备发送的第一主键,或者第一设备可以接收第二设备发送的数据库日志,并从数据库日志中获取第一主键,或者第一设备可以接收第二设备发送的数据同步请求,并从数据同步请求中获取第一主键。本技术对此不作限定。53.如前所述,第一数据库表可以是无主键表,对于无主键表而言,初始的第一数据库中并未设置主键,而为了提高数据同步效率,可以在第一数据库表设置隐藏列,并在隐藏列上创建第一数据库表的一行或多行各自的主键,而主键的值位于隐藏列。54.举例而言,初始的第一数据库表的结构参见如上表2。建立隐藏列的主键后,第一数据库表(table3)的结构可以参见如下表3,第一数据库表(table3)可以参见如下表4:[0055][0056]表3[0057]c1c2c3c4c5x1x2x3x4m1y1y2y3y4m2z1z2z3z4m3[0058]表4[0059]其中,c5列为隐藏列,c5列中填入的目标数据(如m1至m3)为主键的值。对于上层应用而言,table3中的隐藏列不可见,也即table3仍为无主键表,不影响上层应用的执行。而对于第一设备和第二设备而言,可以基于隐藏列上创建的主键进行数据同步,提高了数据同步的效率。[0060]一般来说,第一数据库表作为第二数据库表的源端,与第二数据库表具有相同的表结构,也即第二数据库表也设置有隐藏列,且隐藏列上也创建有对应的主键。当然,本技术也不排除,第二数据库表不通过隐藏列设置主键的情况,此种情况下,第二数据库表中仍存在与第一数据库表对应的主键,但是主键并不建立于隐藏列。[0061]需要说明的是,第一数据库表和第二数据库表均包括至少一个数据行,每个数据行中的隐藏列中具有唯一的目标数据(如m1至m3)用于标识不同的数据行。且在触发增量数据之前,第一数据库表中m1标识的数据行与第二数据库表中m1标识的数据行中的各数据相同。[0062]还应理解的是,前述增量数据可以包括一个数据行的数据或多个数据行的数据。例如,第一数据库表中m1标识的数据行执行的数据更新,m2标识的数据行执行的数据删除。则m1标识的数据行和m2标识的数据行所发生变化的数据均为增量数据。当增量数据包括多个数据行的数据时,第一主键包括该多个数据行分别对应的主键。[0063]在上述s220中,第一设备可以根据获取的第一数据库表中增量数据的第一主键的值,确定第二数据库表中的第二主键,该第二主键的值与第一主键的值相同。例如,第一数据库表中增量数据的第一主键的值为m1,则将第二数据库表中值为m1的主键确定为第二主键。[0064]在上述s230中,第一设备根据第二主键的值,索引至第二数据库表中同步增量数据的位置。例如,第一设备将c5=m1作为检索条件,通过where语句定位至m1标识的数据行,其更新和删除语句分别可以是:[0065]updatetable2setc2=值1,c3=值2,c4=值3wherec5=uuid1;[0066]deletefromtable2wherec5=uuid1;[0067]进而,第一设备可以在确定的同步增量数据的位置同步该增量数据。当增量数据包括多个数据行的数据时,第一设备可以对多个数据行的数据进行并行或者串行的数据同步,本技术对此不做限定。[0068]图3为本技术实施例提供的一种数据同步方法300的流程示意图。如图3所示,该方法300包括s301至s310中的部分或者全部过程。[0069]在s307中,第二设备向第一设备发送第一主键,可以是响应于数据同步的触发事件,该数据同步的触发事件的说明可以参见前文,此处不再赘述。[0070]如前所述,第二设备可以直接向第一设备发送第一主键,或者第二设备可以向第一设备发送数据同步请求,该数据同步请求携带第一主键,或者第二设备可以向第一设备发送数据库日志,该数据库日志中携带第一主键。该数据库日志包括但不限于数据库在线日志或数据库归档日志。当然,第二设备向第一设备发送的数据同步请求还可以携带上述数据库日志。[0071]第二设备向第一设备发送数据库日志的情况下,第一设备在接收第二设备发送的数据库日志后,对数据库日志进行解析,得到第一主键,例如数据库日志中记录了增量数据所在的数据行的隐藏列为上述表4中的m1。[0072]可选的,增量数据可以是第二设备以临时表或数据库日志的形式发送至第一设备的。[0073]图3中的s308至s310分别与图2中的s220至s240对应,具有相同或者相似的实现方式,此处不再赘述。[0074]参见图3,在第一设备和第二设备通过交互实现第一数据库表与第二数据库表的数据同步之前,可以先对第一数据库表和/或第二数据库表基于隐藏列建立主键。[0075]需要说明的是,在第一数据库表产生增量数据之前,第一数据库表和第二数据库表应是数据同步的,此种情况下,第一数据库表和第二数据库表均包括n个数据行,n为正整数,也即,第一数据库表包括的n个数据行与第二数据库表包括的n个数据行是相同的。此时,第二设备可以为第一数据库表中的n个数据行创建n主键,第一设备可以为第二数据库表中的n个数据行创建n个主键,且第一数据库表中的n个主键中的各主键,在第二数据库表中均存在与之主键值相同的主键,且主键的值相同的两个主键在各自的数据库表中所表征的数据行也相同,[0076]示例性的,第二设备对第一数据库表,基于隐藏列建立主键的过程包括:[0077]s301,生成n个数据行分别对应的n个目标数据。[0078]s302,将n个目标数据分别填入第一数据库表的n个数据行的隐藏列。[0079]s303,将第一数据库表的隐藏列中的n个目标数据分别作为第一数据库表的n个主键的值,创建第一数据库表的n个主键。[0080]在上述s301中,第二设备可以为每个数据行生成一个目标数据,且不同数据行的目标数据不同。[0081]示例性的,为了保持目标数据的唯一性,该目标数据可以为通用位移识别码(universallyuniqueidentifier,uuid)。第二设备可以通过uuid函数生成该n个目标数据。uuid函数可以满足如下举例:[0082][0083]该uuid函数在生成uuid后,可以对uuid进行符号转换,例如将uuid转换为十进制数、字符等,并将符号转换后的uuid返回,以完成uuid函数的调用。[0084]可选的,除了可以通过调用uuid函数生成目标数据之外,还可以将隐藏列设置为自增列,使隐藏列填入的目标数据为自增数据。[0085]在上述s302中,第二设备可以在每生成一个目标数据后将其填入隐藏列对应的数据行,或者可以在生成多个目标数据后,依次将其填入隐藏列对应的数据行,本技术对此不作限定。[0086]示例性的,第二设备可以将隐藏列的默认值设置为uuid的返回值。在一些数据库(如postgresql、金仓数据库)中可以将uuid函数的返回值作为隐藏列字段的默认值,如金仓数据库可以通过如下语法实现设置:[0087]altertable表名aaltercolumn列名setdefaultuuid();[0088]在另一些数据库(如oracle、mysql)中,不支持将函数的返回值作为字段的默认值,第二设备可以建立触发器将uuid函数的返回值设置为隐藏列的默认值,其中oracle数据库可以通过如下举例的触发器实现默认值的设置:[0089][0090]在一些实施例中,对于已经存在数据的表,在增加隐藏列后,针对已有的数据,保证其上的隐藏列的目标数据唯一性的方法为,使用不加条件直接更新整表的方式,修改已有的存量数据,具体sql语句可以是:[0091]update表名set列名=uuid();[0092]其中uuid()为自定义的函数。当然,本技术并不限定uuid函数的名称。[0093]在上述s303中,第二设备将第一数据库表中隐藏列中的每个目标数据作为一个主键的值,创建该目标数据对应的数据行的主键。[0094]可以理解的是,上述第一主键可以是第一数据库表的n个主键中的一个,也即第一主键可以用于索引第一数据库表的n个数据行中的一个。[0095]示例性的,第一设备对第二数据库表,基于隐藏列建立主键的过程包括:[0096]s304,接收第二设备发送的n个目标数据。[0097]s305,将n个目标数据分别填入第二数据库表的n个数据行的键值列。[0098]s306,将第二数据库表的键值列中的n个目标数据分别作为第二数据库表的n个主键的值,创建第二数据库表的n个主键。[0099]其中,s305和s306分别与上文中s302和s303具有相同或者相似的实现方式,其区别仅在于:s302和s303是第二设备创建第一数据库表的主键的过程,s305和s306是第一设备创建第二数据库表的主键的过程。[0100]在上述s304中,第二设备在创建第一数据库表的主键的过程中,或者在创建第一数据库表之后,可以向第一设备发送n个目标数据,使第一设备可以根据第一数据库表的主键,对应创建第二数据库表的主键,保持第一数据库表和第二数据库表的主键的一致性。[0101]在一些实施例中,第一设备可以生成n个数据行分别对应的n个目标数据,并在创建第二数据库表的主键的过程中或者在创建第二数据库表的主键之后,将n个目标数据发送至第二设备,使第二设备可以根据第二数据库表的主键,对应创建第一数据库表的主键,保持第一数据库表和第二数据库表的主键的一致性。[0102]在一些实施例中,增量数据可以是执行插入后,第一数据库表发生变化的数据。此种情况下,如果插入的位置在第一数据库表的新增的数据行中,第二设备可以针对新增的数据行生成唯一的目标数据,并将目标数据填入该数据行的隐藏列,在第二设备与第一设备交互的过程中,第一设备将该数据行的键值列填入相同的目标数据,并根据该目标数据创建主键。[0103]应理解,上述第二主键为第二数据库表创建的n个主键中的一个。[0104]键值列即为用于创建主键的、填有主键值的列。且第二数据库表的键值列可以是隐藏列,也可以是正常列(非隐藏列),本技术对此不作限定。在一些实施例中,第一数据库表也可以不通过隐藏列建立主键,而通过正常列(非隐藏列)建立主键。在第一数据库表和/或第二数据库表通过正常列(非隐藏列)创建主键的情况下,主键对上层应用可见,那么可以通过上层应用避免使用select*的方式取数据,避免无主键表创建主键后对上层应用的执行带来的影响。此方案的适用于除oracle和kes外关系型数据库。[0105]因此,本技术实施例通过第一数据库表中的第一主键的值确定第二数据库表中的第二主键,进而根据第二主键确定第二数据库表中同步增量数据的位置,并在该位置同步增量数据。对上层应用而言为一种无主键表的第一数据库表,本技术对其进行数据同步时提高了数据同步效率。[0106]图4为本技术实施例提供的一种数据同步装置400的结构示意图,如图4所示,该数据同步装置400包括:[0107]获取单元410,用于响应于数据同步的触发事件,获取增量数据在第一数据库表中的第一主键,该第一主键的值位于第一数据库表的隐藏列;[0108]处理单元420,用于根据该第一主键的值,从该第二数据库表的至少一个主键中确定第二主键,该第一主键的值与该第二主键的值相同;[0109]该处理单元420还用于根据该第二主键,确定第二数据库表中同步该增量数据的位置;[0110]该处理单元420还用于在该位置同步该增量数据。[0111]在一种可能的设计中,该第二主键的值位于该第二数据库表的隐藏列。[0112]在一种可能的设计中,该获取单元410具体用于:接收第二设备发送的该第一数据库表的数据库日志;对该数据库日志进行解析,得到该第一主键。[0113]在一种可能的设计中,该第一数据库表和该第二数据库表均包括n个数据行;该获取单元410具体用于:获取该n个数据行分别对应的n个目标数据,该n个目标数据中各目标数据均不相同;处理单元420具体用于:将该n个目标数据分别填入该第二数据库表的n个数据行的键值列;处理单元420具体用于:将该第二数据库表的隐藏列中的n个目标数据分别作为该第二数据库表的n个主键的值,创建该第二数据库表的n个主键,该第二数据库表的n个主键包括该第二主键。[0114]在一种可能的设计中,该获取单元410具体用于:接收第二设备发送的该n个目标数据。[0115]在一种可能的设计中,该目标数据为通用位移识别码uuid。[0116]上述实施例提供的数据同步装置,可以执行上述方法实施例中第一设备侧的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。[0117]图5为本技术实施例提供的一种数据同步装置500的结构示意图,如图5所示,该数据同步装置500包括:[0118]发送单元510,用于响应于数据同步的触发事件,向第一设备发送增量数据在第一数据库表中的第一主键,该第一主键的值位于第一数据库表的隐藏列,且该第一主键的值用于确定该增量数据在第二数据库表中的位置。[0119]在一种可能的设计中,发送单元510具体用于:向该第一设备发送数据库日志,该数据库日志携带该第一主键。[0120]在一种可能的设计中,该第一数据库表和该第二数据库表均包括n个数据行,数据同步装置500还包括:处理单元520,用于:生成该n个数据行分别对应的n个目标数据,该n个目标数据中各目标数据均不相同;将该n个目标数据分别填入该第一数据库表的n个数据行的隐藏列;将该第一数据库表的隐藏列中的n个目标数据分别作为该第一数据库表的n个主键的值,创建该第一数据库表的n个主键,该第一数据库表的n个主键包括该第一主键。[0121]在一种可能的设计中,该目标数据为uuid,该处理单元520具体用于:通过uuid函数生成该n个目标数据;针对该n个数据行中的每个数据行,在该数据行的隐藏列为空值的情况下,通过触发器将该uuid函数的返回值填入该数据行的隐藏列。部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(staticram,sram)、动态随机存取存储器(dynamicram,dram)、同步动态随机存取存储器(synchronousdram,sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,esdram)、同步连接动态随机存取存储器(synchlinkdram,sldram)和直接内存总线随机存取存储器(directrambusram,drram)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。[0134]应理解,上述存储器为示例性但不是限制性说明,例如,本技术实施例中的存储器还可以是静态随机存取存储器(staticram,sram)、动态随机存取存储器(dynamicram,dram)、同步动态随机存取存储器(synchronousdram,sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,esdram)、同步连接动态随机存取存储器(synchlinkdram,sldram)以及直接内存总线随机存取存储器(directrambusram,drram)等等。也就是说,本技术实施例中的存储器旨在包括但不限于这些和任意其它适合类型的存储器。[0135]本技术实施例还提供了一种计算机可读存储介质,用于存储计算机程序。[0136]可选的,该计算机可读存储介质可应用于本技术实施例中的电子设备,并且该计算机程序使得计算机执行本技术实施例的各个方法中由第一设备或第二设备执行的相应流程,为了简洁,在此不再赘述。[0137]本技术实施例还提供了一种计算机程序产品,包括计算机程序指令。[0138]可选的,该计算机程序产品可应用于本技术实施例中的电子设备,并且该计算机程序指令使得计算机执行本技术实施例的各个方法中由第一设备或第二设备执行的相应流程,为了简洁,在此不再赘述。[0139]本技术实施例还提供了一种计算机程序。[0140]可选的,该计算机程序可应用于本技术实施例中的电子设备,当该计算机程序在计算机上运行时,使得计算机执行本技术实施例的各个方法中由第一设备或第二设备执行的相应流程,为了简洁,在此不再赘述。[0141]本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。[0142]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。[0143]在本技术所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。[0144]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0145]另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。[0146]所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。针对这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。[0147]以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域:
:的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。当前第1页12当前第1页12