具体实施方式
下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请涉及到区块链的相关技术。其中,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。区块链中包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链***中节点提交的记录数据。本申请中,可以将最终获取到的目标存储数据同步到区块链节点上,以保证该目标存储数据的安全性。
本申请还涉及到云技术。其中,云技术(Cloud Technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络***的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台***进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的***后盾支撑,只能通过云计算来实现。
本申请中所涉及到的云技术主要指可以通过“云”来对目标存储数据进行同步,如通过“云”对目标存储数据进行分布式存储。
首先,对本申请所涉及到的相关技术概念进行描述:
(1)数据同步:不同存储设备或终端与终端,终端与服务器之间的备份操作,使数据保持完整性和统一性。
(2)数据更新:数据更新是以新数据项或记录、替换数据文件或数据库中与之相对应的旧数据项或记录的过程,通过删除、修改、再***的操作来实现。
(3)数据分区:一种物理数据库设计技术,其主要目的是为了在特定的SQL操作(一种结构化查询操作)中减少数据读写的总量以缩减响应时间。
(4)分布式存储:一种数据存储技术,通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。
请参见图1,图1是本申请实施例提供的一种网络架构的结构示意图。如图1所示,网络架构可以包括服务器200和终端设备集群,终端设备集群可以包括一个或者多个终端设备,这里将不对终端设备的数量进行限制。如图1所示,多个终端设备具体可以包括终端设备100a、终端设备101a、终端设备102a、…、终端设备103a;如图1所示,终端设备100a、终端设备101a、终端设备102a、…、终端设备103a均可以与服务器200进行网络连接,以便于每个终端设备可以通过网络连接与服务器200之间进行数据交互。
如图1所示的服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备可以是:智能手机、平板电脑、笔记本电脑、桌上型电脑、智能电视、以及车载终端等智能终端。下面以终端设备100a与服务器200之间的通信为例,进行本申请实施例的具体描述。
请一并参见图2,图2是本申请提供的一种数据同步的场景示意图。如图2所示,在第一时刻的源数据库中可以包含M个存储数据,该M个存储数据可以是存储1~存储数据M,源数据库在第一时刻可以具有第一更新参数,该第一更新参数可以包含该M个存储数据中各个存储数据分别对应的更新参数,具体可以包括存储数据1对应的更新参数1~存储数据M对应的更新参数M。
在第二时刻的源数据库中可以包含N个存储数据,该N个存储数据可以是存储1~存储数据N,源数据库在第二时刻可以具有第二更新参数,该第二更新参数可以包含该N个存储数据中各个存储数据分别对应的更新参数,具体可以包括存储数据1对应的更新参数1~存储数据N对应的更新参数N。
其中,第一时刻早于第二时刻。
因此,服务器200可以对第一更新参数和第二更新参数进行比对,若第一更新参数和第二更新参数不一致,则服务器200可以确定第二时刻的N个存储数据中在第一时刻和第二时刻之间更新过的存储数据,并将该存储数据作为目标存储数据。该目标存储数据也就是在M个存储数据的基础上更新得到的存储数据。其中,通过对比第一更新参数和第二更新参数从N个存储数据中确定目标存储数据的具体过程还可以参见下述图3对应实施例中的相关描述。
继而,服务器200可以将该目标存储数据分区同步到目标数据库,分区同步到目标数据库的目标存储数据携带分区标识,该分区标识可以时间分区的标识,如该分区标识可以是上述第二时刻对应的时间戳。
其中,终端设备100a中可以包括数据客户端,该数据客户端的后台服务器可以是服务器200,因此,终端设备100a可以根据用户操作在数据客户端中生成数据查询请求,该数据查询请求可以携带上述分区标识,终端设备100a可以将该数据查询请求发送给服务器200,进而,服务器200可以根据该数据查询请求中的分区标识查询到上述所同步的目标存储数据,并将查询到的该目标存储数据返回给终端设备100a,终端设备100a就可以在数据客户端的客户端页面中展示该目标存储数据,以供用户查看。
采用本申请所提供的方法,可以在各个数据同步时刻(如上述第二时刻)对源数据库中的增量数据(即发生更新的存储数据,如目标存储数据)进行同步,无需对源数据库中全量的存储数据进行同步,因此,提高了对存储数据进行同步的效率。
请参见图3,图3是本申请提供的一种数据处理方法的流程示意图。本申请实施例中的执行主体可以是一个计算机设备或者多个计算机设备所构成的计算机设备集群。该计算机设备可以是服务器,也可以终端设备。因此,本申请实施例中的执行主体可以是服务器,也可以是终端设备,还可以是由服务器和终端设备共同构成,此处以本申请中的执行主体为服务器为例进行说明。如图3所示,该方法可以包括:
步骤S101,获取源数据库在第一时刻的第一更新参数;源数据库在第一时刻包含M条存储数据,M为正整数;第一更新参数包含M条存储数据在第一时刻分别对应的更新参数。
可选的,源数据库包含了所有可以同步的数据,即源数据库用于提供进行同步的数据。源数据库中的数据可以持续不断地进行更新(即时时更新),源数据库中就可以包含各个数据的最终态的数据,换句话说,源数据库中所包含的数据是覆盖更新,对一个数据进行更新后,只会保留该数据更新后的结果,不会保留该数据更新前的结果。其中,对源数据库中的数据进行更新可以指对源数据库中的数据进行删除、修改和新增等操作,因此,可以理解的是,对源数据库中进行同步的数据可以是源数据库所包含的进行修改或者新增的数据,源数据库中进行删除的数据就可以不进行同步了。其中,对数据进行同步可以理解为是对数据进行备份存储。
举个例子,若源数据库在第一时刻包含数据a,在第二时刻对该数据a进行了更新,更新后的数据a可以记为数据b,那么数据b就覆盖掉了源数据库中的数据a,即源数据库在第二时刻就包含数据b,而不包含数据a。
其中,需要进行说明的是,源数据库中的数据通常是没有进行分区的数据。
因此,服务器可以获取源数据库在第一时刻的更新参数,可以将源数据库在第一时刻的更新参数称之为第一更新参数。
可选的,源数据库可以根据实际的业务场景进行确定,如源数据库所包含的数据可以是用户数据或者可以是***数据等,可以将源数据库中所包含的数据称之为存储数据。源数据库在第一时刻可以共包含M条存储数据,M的具体数值可以根据实际应用场景确定,对此不作限制。该第一时刻可以是当前时刻之前的一个历史时刻。
因此,可以理解的是,第一更新参数可以包含M条存储数据中各条存储数据在第一时刻分别对应的更新参数。
可选的,M条存储数据中各条存储数据在第一时刻分别对应的更新参数,可以是该M条存储数据中各条存储数据在第一时刻分别对应的更新时间戳,该更新时间戳可以是存储数据截止到第一时刻最后进行更新的时间对应的时间戳。或者,各个存储数据的更新参数还可以不是更新时间戳而是其他参数,只要该参数可以表征存储数据发生了更新即可。对此不作限制,具体可以根据实际业务需求进行设置。
步骤S102,获取源数据库在第二时刻的第二更新参数;源数据库在第二时刻包含N条存储数据,N为正整数;第二更新参数包含N条存储数据在第二时刻分别对应的更新参数;第一时刻早于第二时刻。
可选的,服务器还可以获取源数据库在第二时刻的更新参数,可以将源数据库在第二时刻的更新参数称之为第二更新参数。该第二时刻晚于第一时刻,即第一时刻早于第二时刻,该第二时刻可以是当前时刻,即该第二时刻可以是当前需要进行数据同步的最新时刻。
可选的,服务器可以获取针对源数据库的数据同步周期,该数据同步周期可以根据实际业务场景进行设置。该数据同步周期可以是检测源数据库中的存储数据是否发生了更新以及哪些存储数据发生了更新的周期,进而可以对发生了更新的存储数据进行数据同步。
因此,服务器可以根据第一时刻以及数据同步周期来确定第二时刻,该第一时刻和第二时刻之间就可以相隔一个数据同步周期。举个例子,该数据同步周期可以是1天,因此,若第一时刻是第1天的起始时刻,则第二时刻就可以是第2天的起始时刻。
同理,源数据库在第二时刻可以共包含N条存储数据,N的具体数值可以根据实际应用场景确定,对此不作限制。N和M的数值可以相同,也可以不相同。
因此,可以理解的是,第二更新参数可以包含N条存储数据中各条存储数据在第二时刻分别对应的更新参数。
可选的,N条存储数据中各条存储数据在第二时刻分别对应的更新参数,可以是该N条存储数据中各条存储数据在第二时刻分别对应的更新时间戳(可以理解的是,存储数据在第一时刻和第二时刻间的任意时刻都有可能发生更新),该更新时间戳可以是存储数据截止到第二时刻最后进行更新的时间对应的时间戳。或者,各个存储数据的更新参数还可以不是更新时间戳而是其他参数,只要该参数可以表征存储数据发生了更新即可。对此不作限制,具体可以根据实际业务需求进行设置。
因此,N条存储数据可能包含M条存储数据中未进行更新的存储数据、对M条存储数据中的部分或者全部存储数据进行修改后所得到的存储数据或者在M条存储数据的基础上进行新增的存储数据。
步骤S103,若第一更新参数与第二更新参数之间不一致,则从N条存储数据中确定基于M条存储数据更新得到的目标存储数据。
可选的,服务器可以对第一更新参数和第二更新参数进行对比,若第一更新参数和第二更新参数之间不一致,那么,服务器可以从N条存储数据中确定基于M条存储数据更新得到的存储数据,可以将该存储数据称之为目标存储数据。换句话说,目标存储数据可以包括对M条存储数据中的部分或者全部存储数据进行修改后所得到的存储数据或者在M条存储数据的基础上进行新增的存储数据。
该目标存储数据属于源数据库从第一时刻到第二时刻的增量数据。
其中,根据对比第一更新参数和第二更新参数从N条存储数据中确定目标存储数据的具体过程可以是:
此处,以各个存储数据的更新参数为在对应时刻(如第一时刻或第二时刻)的更新时间戳为例进行说明。
上述N条存储数据和M条存储数据中每条存储数据均具有对应的数据标识,更新后的存储数据与更新前的该存储数据所对应的数据标识相同。举个例子,N条存储数据包含存储数据a,M条存储数据包含存储数据b,存储数据b是对存储数据a进行更新得到,那么,存储数据b具有与存储数据a相同的数据标识,一条存储数据可以有一个数据标识,该数据标识用于标识对应的存储数据。
可以将M条存储数据中的任一条存储数据表示为第i条存储数据,i为小于或者等于M的正整数,可以将N条存储数据中的任一条存储数据表示为第j条存储数据,j为小于或者等于N的正整数。
因此,服务器可以对比第一更新参数中第i条存储数据在第一时刻对应的更新时间戳与第二更新参数中第j条存储数据在第二时刻对应的更新时间戳;若第i条存储数据与第j条存储数据具有相同的数据标识,并且,服务器对比出第i条存储数据在第一时刻对应的更新时间戳与第j条存储数据在第二时刻对应的更新时间戳不一致,该不一致可以是第j条存储数据在第二时刻对应的更新时间戳晚于第i条存储数据在第一时刻对应的更新时间戳,那么可以确定该第j条存储数据是对第i条存储数据进行更新得到,可以将该第j条存储数据作为目标存储数据。
请参见图4,图4是本申请提供的一种确定目标存储数据的场景示意图。如图4所示,第一时刻的源数据库中的任意一条存储数据可以表示为第i条存储数据,第二时刻的源数据库中的任意一条存储数据可以表示为第j条存储数据,第i条存储数据在第一时刻对应的更新参数可以是更新时间戳1,第j条存储数据在第二时刻对应的更新参数可以是更新时间戳2。因此,若第i条存储数据与第j条存储数据具有相同的数据标识y,并且,更新时间戳2在时间轴上位于更新时间戳1之后,即更新时间戳2晚于更新时间戳1,则表明第j条存储数据是对第i条存储数据进行修改得到,因此,可以将此时的第j条存储数据作为目标存储数据。
更多的,可以将第j条存储数据的数据标识称之为目标数据标识,若服务器对比出M条存储数据中不包含具有目标数据标识的存储数据在第一时刻的更新时间戳,即M条存储数据中不包含具有目标数据标识的存储数据,则可以认为第j条存储数据是在M条存储数据之上新增的存储数据,此时也可以将第j条存储数据作为目标存储数据。
请参见图5,图5是本申请提供的一种确定目标存储数据的场景示意图。如图5所示,第一时刻的源数据库中的任意一条存储数据可以表示为第i条存储数据,第二时刻的源数据库中的任意一条存储数据可以表示为第j条存储数据,第i条存储数据的数据标识可以是数据标识x,第j条存储数据的数据标识可以是数据标识y。那么,若第一时刻的源数据库中不存在具有数据标识y的存储数据,则第j条存储数据就是在M条存储数据的基础上新增的存储数据,此时也可以将该第j条存储数据作为目标存储数据。
此外,若第i条存储数据与第j条存储数据具有相同的数据标识,并且,服务器对比出第i条存储数据在第一时刻对应的更新时间戳与第j条存储数据在第二时刻对应的更新时间戳一致,则表明第j条存储数据就是第i条存储数据,第i条存储数据并未在第一时刻和第二时刻之间发生更新,因此此时第j条存储数据就不是目标存储数据。
可选的,源数据库还可以包含多个子数据库,上述第一更新参数还可以包含各个子数据库在第一时刻分别对应的数据量,一个子数据库可以对应一个数据量,一个子数据库在第一时刻对应的一个数据量就为该子数据库在第一时刻所包含的存储数据的条数。因此,第二更新参数还可以包含各个子数据库在第二时刻分别对应的数据量,一个子数据库在第二时刻对应的一个数据量就为该子数据库在第二时刻所包含的存储数据的条数。
因此,对于某些数据量只会增加不会减少的子数据库而言(即子数据库中的数据量只会不断增加,即使删除该子数据库中的部分存储数据,该删除的部分存储数据的数据量也会一直包含在该子数据库的数据量中),可以直接对该子数据库在第二时刻的数据量与该子数据库在第一时刻的数据量进行对比,即可对比出该子数据库中的存储数据是否有更新,通过对比各个子数据库在不同时刻(如第一时刻和第二时刻)的数据量,可以快速定位明显发生数据更新的子数据库(如在第二时刻的数据量大于在第一时刻的数据量的子数据库,该子数据库中就明显新增了存储数据),进而,再通过对比该子数据库中各个存储数据分别在不同时刻(如第一时刻和第二时刻)对应的更新时间戳(即更新参数),即可快速确定该子数据库中具体是哪些存储数据发生了更新,进而即可将该子数据库中发生更新的存储数据作为上述目标存储数据。
其中,可以理解的是,当某个子数据库在第二时刻对应的数据量等于第一时刻对应的数据量,那么也可以继续通过该子数据库中各个存储数据在第二时刻以及在第一时刻分别对应的更新时间戳,进一步判断各个存储参数是否有发生更新(如是否发生修改)。
其中,具体上述第一更新参数和第二更新参数包含什么参数可以根据实际应用场景确定,只要通过该第一更新参数和第二更新参数能够确定源数据库中的存储数据在第一时刻和第二时刻之间是否发生了更新、以及哪些存储参数发生了更新即可。
步骤S104,将目标存储数据分区同步至目标数据库中。
可选的,对目标存储数据进行分区同步的方式可以是对目标存储数据添加分区标识(分区ID)。可选的,该分区标识可以是目标存储数据在当前的同步时间戳,如该同步时间戳可以是第二时刻对应的时间戳。或者,可选的,该分区标识也可以是其他标识,如存储集群标识等,该分区标识具体可以根据实际业务场景确定,对此不作限制。
具体的,服务器可以对目标存储数据添加分区标识,进而将添加有分区标识的目标存储数据同步至目标数据库中。其中,服务器获取目标存储数据的分区标识的方式可以是:服务器可以获取第二时刻对应的时间戳,并可以将该第二时刻对应的时间戳作为目标存储数据的分区标识。
服务器可以是数据客户端的后台服务器,该数据客户端可以是任意可以查询服务器所同步的存储数据的客户端。后续,服务器还可以获取到该数据客户端发送的数据查询请求,该数据查询请求就可以携带上述分区标识,服务器可以根据该数据查询请求查询添加有该分区标识的目标存储数据,继而将查询到的该目标存储数据返回给数据客户端,数据客户端即可在客户端页面展示该目标存储数据,以供用户查看。
可选的,源数据库可以包含多个子数据库,该多个子数据库的具体数量可以根据实际应用场景确定,对此不作限制。
因此,上述用于分区存储目标存储数据的目标数据库可以是服务器重新生成的,或者也可以是在该多个子数据库中所选取的,若目标数据库是从该多个子数据库中选取的,则目标数据库可以是该多个子数据库中所选取的任意一个子数据库。
可选的,若目标数据库是服务器重新生成的,则生成目标数据库的方式可以是:服务器可以获取到分布式存储集群中的目标存储地址,该分布式存储集群可以包含多个存储集群,每个存储集群分别具有对应的存储地址,目标存储地址可以是根据相应的数据同步策略所选取的,例如目标存储地址可以是检测到的存储压力比较小的存储集群的地址。
因此,服务器可以将分布式存储集群中多个存储集群的目标存储地址所指示的存储集群作为目标存储集群,该目标存储集群的存储地址就可以是该目标存储地址。
因此,服务器可以在目标存储集群中生成上述目标数据库。
通过上述可以知道的是,由于源数据库中的数据可以实时进行更新,因此,源数据库中的各个存储数据均会对应有当前最新的更新时间戳,即上述第二更新时间戳可以实时直接获取到。在对当前时刻(如第二时刻)的更新数据(如目标存储数据)进行同步之后,就可以记录该目标存储数据最新的更新参数,即上述第一更新参数可以是由服务器预先记录的,每次发生数据同步之后,服务器都可以通过所同步的数据(如目标存储数据)的最新的更新参数(如最新的更新时间戳)来更新所记录的第一更新参数,使得更新后的第一更新参数可以作为下一次数据同步时的第一更新参数。或者,服务器也可以直接将当前的第二更新参数重新作为第一更新参数,并将当前的第二时刻重新作为第一时刻,以在再下一次(如在下一个周期节点)对源数据库中的增量数据进行数据同步。
采用本申请所提供的方法,在对源数据库中的存储数据进行数据同步时,可以只对源数据库中的增量数据(如上述目标存储数据)进行同步,而无需对源数据库中所有的存储数据进行同步,提高了对存储数据进行同步的准确性以及效率。
并且,本申请在对存储数据进行同步时,可以将无分区的存储数据(如源数据库中的目标存储数据)同步为带分区的存储数据(如添加了分区标识的目标存储数据),如分区标识可以是发生数据同步时的时间戳(如上述第二时刻对应的时间戳),则数据就是按照时间分区进行同步,一个数据同步的时刻可以理解为是一个时间分区,一个数据同步的时刻可以同步该时刻发生更新的存储数据,因此,最后,服务器可以同步备份有各个时间分区(如各个数据同步的时刻)所更新的存储数据,一个数据同步时刻(如上述第二时刻)可以对应于一个时间分区,因此,通过同步备份的在各个时间分区所更新的存储数据后续可以查询到各个存储数据的更新历史记录,如在某个时间分区的数据到后一个时间分区进行更新后的数据以及再后一个时间分区进行更新后的数据分别都是什么数据等,并且,通过对存储数据进行分区存储,可以使得后续用户可以按照分区标识快速查询到对应时间分区所同步的有更新的存储数据,数据查询更便捷准确。
此外,本申请在存储目标存储数据时,可以采取分布式的存储方式进行存储(如采用分布式存储集群对每个数据同步周期的每个周期节点的目标存储数据进行分布式存储,各个周期节点的目标存储数据可以存储在分布式存储集群中的不同存储集群),这提升了存储资源的使用合理性。
请参见图6,图6是本申请提供的一种数据查询的场景示意图。如图6所示,假设可以在3个连续的时间分区对源数据库中的存储数据进行同步,该3个时间分区依次可以包括时间分区1、时间分区2和时间分区3,一个时间分区就是对应的数据同步时刻所对应的分区。
如图6所示,在时间分区1可以同步有若干存储数据,该若干存储数据可以包括存储数据c1;在时间分区2可以同步有若干存储数据,该若干存储数据可以包括存储数据c2;在时间分区3可以同步有若干存储数据,该若干存储数据可以包括存储数据c3。存储数据c1、存储数据c2和存储数据c3之间各不相同(表明存储数据c1、存储数据c2和存储数据c3所对应的更新时间戳各不相同),但是存储数据c1、存储数据c2和存储数据c3具有相同的数据标识x,那么可以知道,存储数据c2是对存储数据c1进行修改得到,存储数据c3是对存储数据c2进行修改得到。因此,通过同步各个时间分区进行更新的存储数据,可以查询到数据变更的过程。如此处,可以查询到的具有数据标识x的存储数据的数据变更状态就为由存储数据c1修改为存储数据c2再修改为存储数据c3。便于相关数据人员得知各个存储数据的变更情况。
本申请获取源数据库在第一时刻的第一更新参数;源数据库在第一时刻包含M条存储数据,M为正整数;第一更新参数包含M条存储数据在第一时刻分别对应的更新参数;获取源数据库在第二时刻的第二更新参数;源数据库在第二时刻包含N条存储数据,N为正整数;第二更新参数包含N条存储数据在第二时刻分别对应的更新参数;第一时刻早于第二时刻;若第一更新参数与第二更新参数之间不一致,则从N条存储数据中确定基于M条存储数据更新得到的目标存储数据;将目标存储数据分区同步至目标数据库中。由此可见,本申请提出的方法可以通过第一更新参数和第二更新参数获取源数据库中的增量数据(如目标存储数据),该增量数据即为发生更新的数据,进而只需要对该增量数据进行同步,因此,数据同步的效率高。另外,通过将目标存储数据进行分区同步(如按照时间分区进行同步),也提高了对存储数据进行同步的准确性。
请参见图7,图7是本申请提供的一种数据处理方法的流程示意图。本申请实施例中的执行主体可以是一个计算机设备或者多个计算机设备所构成的计算机设备集群。该计算机设备可以是服务器,也可以终端设备。因此,本申请实施例中的执行主体可以是服务器,也可以是终端设备,还可以是由服务器和终端设备共同构成,此处以本申请实施例的执行主体为服务器为例进行说明。如图7所示,该方法可以包括:
步骤S201,获取源数据库在第一时刻的第一更新参数;源数据库在第一时刻包含M条存储数据,M为正整数;第一更新参数包含M条存储数据在第一时刻分别对应的更新参数。
步骤S202,获取源数据库在第二时刻的第二更新参数;源数据库在第二时刻包含N条存储数据,N为正整数;第二更新参数包含N条存储数据在第二时刻分别对应的更新参数;第一时刻早于第二时刻。
步骤S203,若第一更新参数与第二更新参数之间不一致,则从N条存储数据中确定基于M条存储数据更新得到的目标存储数据。
可选的,步骤S201-步骤S203的具体描述可以参见上述图3对应实施例中对步骤S101-步骤S103的具体描述。
步骤S204,对多条目标存储数据中具有相同数据结构的目标存储数据进行归类,得到L个存储数据集合;一个存储数据集合包含至少一条目标存储数据。
可选的,目标存储数据可以有多个,具有相同字段结构的目标存储数据可以认为其具有相同的数据结构,其中具有相同字段结构的目标存储数据可以是指具有相同字段类型的目标存储数据。
因此,服务器可以识别各个目标存储数据的字段结构,并可以将具有相同字段结构的目标存储数据分组(即归类)到相同的存储数据集合,进而分组得到L个存储数据集合,L为正整数,L的具体数值根据实际应用场景决定,一个存储数据集合包含至少一个目标存储数据。一个存储数据集合所包含的至少一个目标存储数据均具有相同的数据结构。
请参见图8,图8是本申请提供的一种数据归类的场景示意图。如图8所示,多个目标存储数据可以包括目标存储数据1~目标存储数据n,服务器可以识别各个目标存储数据的字段结构,并将具有相同字段结构的目标存储数据归类到相同的存储数据集合,最终归类得到L个存储数据集合,一个存储数据集合可以包含至少一个目标存储数据,一个存储数据集合所包含的目标存储数据的数据结构相同。
步骤S205,分别对每个存储数据集合中的目标存储数据进行数据合并,得到每个存储数据集合分别对应的合并数据表。
可选的,服务器可以分别对每个存储数据集合中的目标存储数据进行数据合并(即进行并表),得到各个存储数据集合分别对应的合并数据表,一个存储数据集合对应一个合并数据表,一个存储数据集合对应的合并数据表就是对该存储数据集合所包含的目标存储数据进行并表得到。
步骤S206,将每个存储数据集合分别对应的合并数据表分区同步到目标数据库。
可选的,服务器可以对每个存储数据集合分别对应的合并数据表分区同步到目标数据库,例如,服务器可以对每个存储数据集合分别对应的合并数据表添加分区标识,进而将添加有分区标识的各个合并数据表同步存储到目标数据库。
本申请中,通过对具有相同数据结构的目标存储数据进行并表之后再分区同步,可以实现对所同步的存储数据的归类,后续,可以通过某个指定的字段,查询到所同步的包含该字段的所有存储数据,这也提升了数据查询的效率以及准确性。
请参见图9,图9是本申请提供的一种的数据同步的框架示意图。本申请中可以提供7个数据处理模块来实现对存储数据的同步,该7个数据处理模块可以包括主数据库模块、数据监控模块、数据更新模块、单库表数据更新模块、多库表数据更新数据模块、数据同步模块以及目标数据库模块。
具体的,主数据库模块可以用于提供主数据库,该主数据库就是上述源数据库,主数据库模块也可以称为数据源模块,是数据同步的初始数据源,包含数据库、各个数据库(如上述各个子数据库)下的数据表,用于数据库/表的存储、变更等操作。主数据库模块通常按类型、用途、功能等方式将所包含的数据库/表分布式存放在多个数据集群中。对于存储量比较大的数据库表,通常采用分库分表的形式存放到多个集群中,以减缓数据存储的压力。主数据库主要为不带分区的数据库,如mysql(一种关系型数据库管理***)数据库、Oracle(一种关系数据库管理***)数据库等。主数据库模块主要输出原始数据,该原始数据也就是主数据库所包含的存储数据。
主数据库模块可以将源数据库中的存储数据输入数据监控模块,数据监控模块可以用于根据输入的存储数据监控主数据库的数据更新情况,当出现数据更新的时候(如在第一时刻和第二时刻之间存在发生更新的存储数据),该数据监控模块可以存储数据变更数据的时间,还可以分集群统计并存储变更数据(并更数据也就是发生更新的存储数据,如上述目标存储数据)的数量(如条数),存储变更数据所在的数据库、数据表和所在的集群id(如存储集群的标识)、集群地址(如存储集群的存储地址)等等。
数据更新模块可以用于输入t+1期(如第t+1个周期节点)主数据库的数据(如上述N个存储数据)。数据更新模块完成对主数据库的监控,获取t+1期变更数据的记录(该记录可以包含上述第二更新参数,更具体的,可以包含数据变更数据的时间,分集群统计并存储变更数据的数量,存储变更数据所在的数据库、数据表和所在的集群id、集群地址,日志等等参数),数据监控模块可以与第t期的变更数据记录(可以包含第一更新参数)进行自动对比,如果出现变更,则可以通知数据更新模块根据变更的数据时间(如更新时间戳)、所在集群地址、数据库、数据表,从N个存储数据中提取对应的变更数据(如提取目标存储数据)。提取方法可以是根据t期存储的最大变更时间至t+1期出现的变更时间形成的时间区间,将该部分时间区间的变更数据提取出来。
单库表数据更新模块,可以用于输入数据更新模块所提取的变更数据,若该变更数据来源于单数据库单数据表,则表明所提取的变更数据之间没有数据结构相同的变更数据,直接将各个变更数据给到数据同步模块即可。
多库表数据更新模块,可以用于输入数据更新模块所提取的变更数据,若该变更数据来源于多数据库多数据表,则可以将具有相同数据结构的变更数据合并生成对应的数据表(如上述合并数据表),再将所合并生成的数据表给到数据同步模块。
数据同步模块可以对获取到的变更数据(如单个变更数据或者对变更数据进行合并生成的数据表)添加分区标识,进而在目标存储集群中生成目标数据库,将添加有分区标识的变更数据同步到目标数据库。
目标数据库模块可以包含同步有携带分区标识的变更数据的目标数据库,目标数据库模块可以将针对变更数据的更新参数(如当前最新的更新时间戳)回传给数据监控模块,还可以将分集群统计并存储的变更数据的数量,存储变更数据所在的数据库、数据表和所在的集群id(存储集群的标识)、集群地址,日志等等参数回传给数据监控模块,让数据监控模块记录下变更数据最新的这些参数,使得数据监控模块可以根据变更数据最新的这些参数以及所记录的其他未发生更新的存储数据的相关参数,继续在下一次对源数据库中的变更数据进行同步。
采用本申请所提供的方法,可以实现多个数据库多个数据表的数据更新同步及并表问题,能够有效提高数据人员数据同步、数据分析工作的效率。
本申请可以适用于mysql、Oracle、hive(一种数据仓库工具)、hbase(一种分布式的、面向列的开源数据库)等单个数据库之间的增量同步,也可以实现从mysql数据库到Oracle数据库、Oracle数据库到hive数据库、或者mysql数据库到hive数据库等跨数据库类型的增量同步。对数据库的数据的同步场景更广泛。
本申请获取源数据库在第一时刻的第一更新参数;源数据库在第一时刻包含M条存储数据,M为正整数;第一更新参数包含M条存储数据在第一时刻分别对应的更新参数;获取源数据库在第二时刻的第二更新参数;源数据库在第二时刻包含N条存储数据,N为正整数;第二更新参数包含N条存储数据在第二时刻分别对应的更新参数;第一时刻早于第二时刻;若第一更新参数与第二更新参数之间不一致,则从N条存储数据中确定基于M条存储数据更新得到的目标存储数据;将目标存储数据分区同步至目标数据库中。由此可见,本申请提出的方法可以通过第一更新参数和第二更新参数获取源数据库中的增量数据(如目标存储数据),该增量数据即为发生更新的数据,进而只需要对该增量数据进行同步,因此,数据同步的效率高。另外,通过将目标存储数据进行分区同步(如按照时间分区进行同步),也提高了对存储数据进行同步的准确性。
请参见图10,图10是本申请提供的一种数据处理装置的结构示意图。该数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据处理装置为一个应用软件,该数据处理装置可以用于执行本申请实施例提供的方法中的相应步骤。如图10所示,该数据处理装置1可以包括:获取模块11、确定模块12和同步模块13。
获取模块11,用于获取源数据库在第一时刻的第一更新参数;源数据库在第一时刻包含M条存储数据,M为正整数;第一更新参数包含M条存储数据在第一时刻分别对应的更新参数;
获取模块11,用于获取源数据库在第二时刻的第二更新参数;源数据库在第二时刻包含N条存储数据,N为正整数;第二更新参数包含N条存储数据在第二时刻分别对应的更新参数;第一时刻早于第二时刻;
确定模块12,用于若第一更新参数与第二更新参数之间不一致,则从N条存储数据中确定基于M条存储数据更新得到的目标存储数据;
同步模块13,用于将目标存储数据分区同步至目标数据库中。
可选的,N条存储数据和M条存储数据中的每条存储数据均具有对应的数据标识,更新后的存储数据与更新前的该存储数据所对应的数据标识相同;第一更新参数所包含的M条存储数据分别对应的更新参数,是M条存储数据在第一时刻分别对应的更新时间戳;第二更新参数所包含的N条存储数据分别对应的更新参数,是N条存储数据在第二时刻分别对应的更新时间戳。
可选的,M条存储数据中的任一条存储数据表示为第i条存储数据,i为小于或等于M的正整数,N条存储数据中的任一条存储数据表示为第j条存储数据,j为小于或等于N的正整数;
若第一更新参数与第二更新参数之间不一致,则确定模块12从N条存储数据中确定基于M条存储数据更新得到的目标存储数据的方式,包括:
对第i条存储数据在第一时刻对应的更新时间戳与第j条存储数据在第二时刻对应的更新时间戳进行比对;
若第i条存储数据与第j条存储数据具有相同的数据标识,且比对出第i条存储数据在第一时刻对应的更新时间戳与第j条存储数据在第二时刻对应的更新时间戳不一致,则将第j条存储数据确定为目标存储数据;
将第j条存储数据的数据标识确定为目标数据标识,若比对出M条存储数据中不包含具有目标数据标识的存储数据在第一时刻的更新时间戳,则将第j条存储数据确定为目标存储数据。
可选的,同步模块13将目标存储数据分区同步至目标数据库中的方式,包括:
对目标存储数据添加分区标识;
将添加有分区标识的目标存储数据同步至目标数据库中。
可选的,同步模块13对目标存储数据添加分区标识的方式,包括:
获取第二时刻对应的时间戳;
将第二时刻对应的时间戳确定为目标存储数据的分区标识。
可选的,上述装置1还用于:
获取数据客户端发送的数据查询请求;数据查询请求携带分区标识;
根据数据查询请求查询添加有分区标识的目标存储数据;
将查询到的目标存储数据返回给数据客户端,以使数据客户端在客户端页面展示目标存储数据。
可选的,源数据库包含多个子数据库;
同步模块13将目标存储数据分区同步至目标数据库中的方式,包括:
生成目标数据库,将目标存储数据分区同步至目标数据库;或者,
从多个子数据库中选取目标数据库,将目标存储数据同步到目标数据库。
可选的,同步模块13生成目标数据库的方式,包括:
获取分布式存储集群中的目标存储地址;分布式存储集群包含多个存储集群;每个存储集群分别具有对应的存储地址;
将多个存储集群中目标存储地址所指示的存储集群确定为目标存储集群;
在目标存储集群中生成目标数据库。
可选的,目标存储数据的数量为多条;
同步模块13将目标存储数据分区同步至目标数据库中的方式,包括:
对多条目标存储数据中具有相同数据结构的目标存储数据进行归类,得到L个存储数据集合;L为正整数;一个存储数据集合包含至少一条目标存储数据;
分别对每个存储数据集合中的目标存储数据进行数据合并,得到每个存储数据集合分别对应的合并数据表;
将每个存储数据集合分别对应的合并数据表分区同步到目标数据库。
可选的,具有相同字段结构的目标存储数据具有相同的数据结构;
同步模块13对多条目标存储数据中具有相同数据结构的目标存储数据进行归类,得到L个存储数据集合的方式,包括:
识别多条目标存储数据中每条目标存储数据的字段结构;
将多条目标存储数据中具有相同字段结构的目标存储数据归类到相同的存储数据集合,得到L个存储数据集合。
可选的,上述装置1还用于:
获取针对源数据库的数据同步周期;
根据数据同步周期和第一时刻确定第二时刻;第一时刻和第二时刻之间相隔数据同步周期。
根据本申请的一个实施例,图3所示的数据处理方法所涉及的步骤可由图10所示的数据处理装置1中的各个模块来执行。例如,图3中所示的步骤S101可由图10中的获取模块11来执行,图3中所示的步骤S102可由图10中的获取模块11来执行;图3中所示的步骤S103可由图10中的确定模块12来执行,图3中所示的步骤S104可由图10中的同步模块13来执行。
本申请获取源数据库在第一时刻的第一更新参数;源数据库在第一时刻包含M条存储数据,M为正整数;第一更新参数包含M条存储数据在第一时刻分别对应的更新参数;获取源数据库在第二时刻的第二更新参数;源数据库在第二时刻包含N条存储数据,N为正整数;第二更新参数包含N条存储数据在第二时刻分别对应的更新参数;第一时刻早于第二时刻;若第一更新参数与第二更新参数之间不一致,则从N条存储数据中确定基于M条存储数据更新得到的目标存储数据;将目标存储数据分区同步至目标数据库中。由此可见,本申请提出的装置可以通过第一更新参数和第二更新参数获取源数据库中的增量数据(如目标存储数据),该增量数据即为发生更新的数据,进而只需要对该增量数据进行同步,因此,数据同步的效率高。另外,通过将目标存储数据进行分区同步(如按照时间分区进行同步),也提高了对存储数据进行同步的准确性。
根据本申请的一个实施例,图10所示的数据处理装置1中的各个模块可以分别或全部合并为一个或若干个单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个子单元,可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述模块是基于逻辑功能划分的,在实际应用中,一个模块的功能也可以由多个单元来实现,或者多个模块的功能由一个单元实现。在本申请的其它实施例中,数据处理装置1也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本申请的一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算机设备上运行能够执行如图3中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图10中所示的数据处理装置1,以及来实现本申请实施例的数据处理方法。上述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
请参见图11,图11是本申请提供的一种计算机设备的结构示意图。如图11所示,计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图11所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及设备控制应用程序。
在图11所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取源数据库在第一时刻的第一更新参数;源数据库在第一时刻包含M条存储数据,M为正整数;第一更新参数包含M条存储数据在第一时刻分别对应的更新参数;
获取源数据库在第二时刻的第二更新参数;源数据库在第二时刻包含N条存储数据,N为正整数;第二更新参数包含N条存储数据在第二时刻分别对应的更新参数;第一时刻早于第二时刻;
若第一更新参数与第二更新参数之间不一致,则从N条存储数据中确定基于M条存储数据更新得到的目标存储数据;
将目标存储数据分区同步至目标数据库中。
可选的,N条存储数据和M条存储数据中的每条存储数据均具有对应的数据标识,更新后的存储数据与更新前的该存储数据所对应的数据标识相同;第一更新参数所包含的M条存储数据分别对应的更新参数,是M条存储数据在第一时刻分别对应的更新时间戳;第二更新参数所包含的N条存储数据分别对应的更新参数,是N条存储数据在第二时刻分别对应的更新时间戳。
在一种可行的实施方式中,M条存储数据中的任一条存储数据表示为第i条存储数据,i为小于或等于M的正整数,N条存储数据中的任一条存储数据表示为第j条存储数据,j为小于或等于N的正整数,处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
对第i条存储数据在第一时刻对应的更新时间戳与第j条存储数据在第二时刻对应的更新时间戳进行比对;
若第i条存储数据与第j条存储数据具有相同的数据标识,且比对出第i条存储数据在第一时刻对应的更新时间戳与第j条存储数据在第二时刻对应的更新时间戳不一致,则将第j条存储数据确定为目标存储数据;
将第j条存储数据的数据标识确定为目标数据标识,若比对出M条存储数据中不包含具有目标数据标识的存储数据在第一时刻的更新时间戳,则将第j条存储数据确定为目标存储数据。
在一种可行的实施方式中,处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
对目标存储数据添加分区标识;
将添加有分区标识的目标存储数据同步至目标数据库中。
在一种可行的实施方式中,处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取第二时刻对应的时间戳;
将第二时刻对应的时间戳确定为目标存储数据的分区标识。
在一种可行的实施方式中,处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取数据客户端发送的数据查询请求;数据查询请求携带分区标识;
根据数据查询请求查询添加有分区标识的目标存储数据;
将查询到的目标存储数据返回给数据客户端,以使数据客户端在客户端页面展示目标存储数据。
在一种可行的实施方式中,源数据库包含多个子数据库;处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
生成目标数据库,将目标存储数据分区同步至目标数据库;或者,
从多个子数据库中选取目标数据库,将目标存储数据同步到目标数据库。
在一种可行的实施方式中,处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取分布式存储集群中的目标存储地址;分布式存储集群包含多个存储集群;每个存储集群分别具有对应的存储地址;
将多个存储集群中目标存储地址所指示的存储集群确定为目标存储集群;
在目标存储集群中生成目标数据库。
在一种可行的实施方式中,目标存储数据的数量为多条;处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
对多条目标存储数据中具有相同数据结构的目标存储数据进行归类,得到L个存储数据集合;L为正整数;一个存储数据集合包含至少一条目标存储数据;
分别对每个存储数据集合中的目标存储数据进行数据合并,得到每个存储数据集合分别对应的合并数据表;
将每个存储数据集合分别对应的合并数据表分区同步到目标数据库。
在一种可行的实施方式中,具有相同字段结构的目标存储数据具有相同的数据结构;处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
识别多条目标存储数据中每条目标存储数据的字段结构;
将多条目标存储数据中具有相同字段结构的目标存储数据归类到相同的存储数据集合,得到L个存储数据集合。
在一种可行的实施方式中,处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取针对源数据库的数据同步周期;
根据数据同步周期和第一时刻确定第二时刻;第一时刻和第二时刻之间相隔数据同步周期。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3对应实施例中对上述数据处理方法的描述,也可执行前文图10所对应实施例中对上述数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的数据处理装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3所对应实施例中对数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
作为示例,上述程序指令可被部署在一个计算机设备上执行,或者被部署位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行,分布在多个地点且通过通信网络互连的多个计算机设备可以组成区块链网络。
上述计算机可读存储介质可以是前述任一实施例提供的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital, SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前文图3对应实施例中对上述数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。