数据操作方法、装置、存储介质和区块链系统与流程

文档序号:31335213发布日期:2022-08-31 08:34阅读:94来源:国知局
数据操作方法、装置、存储介质和区块链系统与流程

1.本公开涉及数据处理技术领域,具体地,涉及一种数据操作方法、装置、存储介质和区块链系统。


背景技术:

2.通过对数据中台的建设,能够对现有的各类信息资源进行有效整合,形成更加集中、有序以及共享的数据,打破信息孤岛,从而能够让行业和部门之间的信息进行有效共享,进而有效提升协作效率以及服务水平。在数据管理方面,数据中台能够将下属各部门的数据集中起来,并向上层应用统一地提供服务,但是,上层应用能够轻易读取、修改和操作数据中台所管理的数据,其数据安全性难以得到保证。


技术实现要素:

3.本公开的目的是提供一种数据操作方法、装置、存储介质和区块链系统,以解决上述技术问题。
4.为了实现上述目的,第一方面,本公开提供一种数据操作方法,应用于区块链网络中的区块链节点,所述方法包括:
5.响应于对所述区块链节点对应的数据库发起的操作请求,校验所述操作请求的发起方是否具有相应的数据库操作权限;
6.在权限校验通过的情况下,对所述数据库执行相应的数据库操作;
7.在所述数据库操作完成后,将本次数据库操作的操作记录封装到交易中,并向所述区块链网络中的其他区块链节点广播所述交易,以使其他区块链节点在共识所述交易后将所述交易记录到区块链上。
8.可选地,所述方法还包括:在所述交易共识失败的情况下,回滚对所述数据库执行的所述数据库操作。
9.可选地,所述对所述数据库执行相应的数据库操作,包括:
10.确定预设的冲突检测规则库,所述冲突检测规则库中包括多个禁止规则,所述禁止规则用于指示所述数据库中的数据表对应的被禁止操作;
11.将所述数据库操作分解为对所述数据库中的数据表的多个原子级操作;
12.根据所述冲突检测规则库对所述多个原子级操作进行冲突检测;
13.根据所述多个原子级操作中未与所述冲突检测规则库中的禁止规则发生冲突的原子级操作,生成线性操作流;
14.对所述区块链节点对应的数据库依次执行所述线性操作流中的每个原子级操作。
15.可选地,所述方法还包括:
16.确定预设的操作转移规则库,所述操作转移规则库中包括多个转移规则,每个所述转移规则用于指示当对应操作执行失败时的处理策略;
17.所述对所述区块链节点对应的数据库依次执行所述线性操作流中的每个原子级
操作,包括:
18.在执行所述线性操作流中的所述原子级操作失败的情况下,确定所述操作转移规则库中与所述原子级操作对应的目标转移规则;
19.响应所述目标转移规则中的所述处理策略。
20.可选地,所述方法还包括:
21.确定数据聚合计划,所述数据聚合计划用于指示数据聚合操作的触发条件、所述数据聚合操作对应的至少一个源数据表以及所述数据聚合操作对应的目标关系模式;
22.当确定所述触发条件满足时,从区块链上提取出对应所述源数据表的操作记录,并根据所述操作记录还原出对应的所述源数据表;
23.将还原出的所述至少一个源数据表聚合到所述目标关系模式下,得到聚合表;
24.向所述区块链网络中的其他区块链节点广播所述聚合表,以使其他区块链节点在共识所述聚合表后将所述聚合表记录到区块链上。
25.可选地,所述将还原出的所述至少一个源数据表聚合到所述目标关系模式下,得到聚合表,包括:
26.构建具有所述目标关系模式的聚合表,所述目标关系模式包括表结构和表字段,所述表字段包括主键和非主键属性;
27.建立每个源数据表的非主键属性与所述聚合表的非主键属性的映射关系;
28.确定主键调解表,所述主键调解表用于将每个源数据表的主键分别映射到所述主键调解表的主键;
29.针对每个源数据表,将所述源数据表与所述主键调解表进行自然连接,得到对应的中间数据表;
30.根据设置的第一投影条件和所述中间数据表,对所述源数据表进行对应的投影运算,并根据所述源数据表与所述聚合表之间的所述映射关系,将投影运算的结果映射为所述聚合表的表项,获得目标数据;
31.将每个源数据表对应的目标数据进行并操作,将并操作的结果写入到所述聚合表中。
32.可选地,所述方法还包括:
33.构建与所述聚合表具有相同关系模式的历史表;
34.根据设置的第二投影条件对所述聚合表进行对应的投影运算,获得待迁移数据;
35.将所述待迁移数据迁移到所述历史表中;
36.向所述区块链网络中的其他区块链节点广播所述历史表,以使其他区块链节点在共识所述历史表后将所述历史表记录到区块链上。
37.第二方面,本公开提供一种数据操作装置,配置于区块链网络中的区块链节点,所述装置包括:
38.权限校验模块,用于响应于对所述区块链节点对应的数据库发起的操作请求,校验所述操作请求的发起方是否具有相应的数据库操作权限;
39.数据库操作模块,用于在权限校验通过的情况下,对所述数据库执行相应的数据库操作;
40.记录上链模块,用于在所述数据库操作完成后,将本次数据库操作的操作记录封
装到交易中,并向所述区块链网络中的其他区块链节点广播所述交易,以使其他区块链节点在共识所述交易后将所述交易记录到区块链上。
41.第三方面,本公开提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面所述的方法。
42.第四方面,本公开提供一种区块链系统,包括由多个区块链节点组成的区块链网络,每个所述区块链节点上设有数据中台业务模块,所述数据中台业务模块中部署有智能合约,所述区块链节点用于执行所述数据中台业务模块中的所述智能合约,以实现第一方面所述的方法。
43.通过上述技术方案,由于对操作请求的发起方的相应数据库操作权限进行了权限校验,实现了数据访问的控制,且将对数据库执行的所有操作均记录到区块链上,使得上层应用无法轻易对数据库中的数据进行篡改,具有数据中台的数据可追溯、不可篡改的效果。而且,传统数据库存在灾备能力差的缺点,而上述方案中,由于对数据库的所有操作均存储在区块链上,因此所有区块链节点都可以从区块链上查询到对各个数据库中的所有数据表的操作记录,根据操作记录可得到所有入库的数据表,这样每个区块链节点都能获得全局一致的入库的数据表,从而提升数据库的容灾能力,且这种方式能够有效兼容异构的数据库。
44.此外,考虑到区块链网络对交易进行共识的效率较低,因此本方案采用的是先入库再共识的方式,优先保障区块链节点具有数据库级别的性能,让数据库操作能够及时完成,在此基础之上,再将操作记录进行共识上链,从而确保不会影响与数据库进行交互的其他外部业务系统。
45.本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
46.附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
47.图1示出了一示例性实施例提供的数据操作方法的流程图;
48.图2示出了图1中步骤s120对数据库执行相应的数据库操作的具体实施方式的流程图;
49.图3示出了一示例性实施例提供的数据操作方法的流程图;
50.图4示出了图3中步骤s330得到聚合表的具体实施方式的流程图;
51.图5示出了一示例性实施例提供的数据操作方法的流程图;
52.图6示出了基于区块链系统实现数据中台业务的示意图;
53.图7示出了一示例性实施例提供的数据操作装置的框图。
具体实施方式
54.以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
55.需要说明的是,本公开中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行
的。
56.本公开实施例提供一种数据操作方法,通过将区块链共识可信、去中心化和防篡改的特点引入到数据中台中,将对数据库的所有操作记录存储到区块链上,达到数据可追溯、不可篡改的目的。为实现上述目的,首先构建区块链网络,区块链网络中包括多个区块链节点,根据构建的区块链网络实施本公开实施例提供的以下数据操作方法。
57.图1示出了一示例性实施例提供的数据操作方法的流程图,该方法应用于区块链网络中的区块链节点,如图1所示,该方法包括:
58.s110,响应于对该区块链节点对应的数据库发起的操作请求,校验该操作请求的发起方是否具有相应的数据库操作权限。
59.其中,区块链网络中的每个区块链节点分别具有自己对应的数据库,用于存储数据,不同区块链节点之间使用的数据库可能相同,也可能不同,例如,某个区块链节点使用的数据库为mysql,另一个区块链节点使用的数据库为文档类数据库。在上述步骤中,响应于对区块链节点本地的数据库发起的操作请求,首先校验该操作请求的发起方是否具有相应的数据库操作权限。
60.在具体实现时,在区块链节点上部署有智能合约,通过智能合约完成校验该操作请求的发起方是否具有相应的数据库操作权限的操作。
61.可选地,相应的数据库操作权限包括:发起方是否具有对数据库进行对应操作的服务权限,以及发起方是否具有对待操作的数据表进行操作的数据权限。在发起方同时具有相应的服务权限和数据权限的情况下,确定发起方对数据库具有相应的数据库操作权限。
62.示例性地,该操作请求用于请求向数据库中的数据表a写入一条数据,在上述步骤中,需要校验发起方是否具有对数据库进行写操作的服务权限,以及是否具有对数据表a进行操作的数据权限。
63.在具体实现时,在区块链节点上部署有服务权限校验智能合约和数据权限校验智能合约,通过服务权限校验智能合约来校验发起方是否具有对数据库进行对应操作的服务权限,通过数据权限校验智能合约来校验发起方是否具有对待操作的数据表进行操作的数据权限。
64.本公开中,权限校验的方式需要与区块链相结合,可以使用适用于区块链网络的权限校验方式,例如采用基于ca(certificate authority,证书颁发机构)的权限校验方式,和/或,基于分布式数字身份的权限校验方式。
65.基于ca的权限校验方式,将授权方的公钥证书注册到区块链上,收到的操作请求中会附加私钥签名结果,由相应的权限校验智能合约,根据私钥签名结果进行权限校验。
66.基于分布式数字身份的权限校验方式,将授权方的数字身份信息保存到区块链上,发起方以分布式数字身份凭证的方式发起对数据库的操作请求,该凭证中包括请求内容,发起方的身份信息,时间戳,签名,验签算法信息。收到操作请求后,由相应的权限校验智能合约,根据发起方的身份信息和验签算法信息从链上的分布式数字身份信息中找到应使用的验签公钥,验证签名,并结合时间戳进行权限校验。
67.服务权限校验智能合约可以采用上述任一种权限校验方式来校验发起方的服务权限,相应的,数据权限校验智能合约也可以采用上述任一种权限校验方式来校验发起方
的服务权限。
68.s120,在权限校验通过的情况下,对数据库执行相应的数据库操作。
69.在校验该操作请求的发起方具有相应的数据库操作权限的情况下,对该区块链节点对应的数据库执行该操作请求所请求执行的数据库操作。
70.s130,在数据库操作完成后,将本次数据库操作的操作记录封装到交易中,并向区块链网络中的其他区块链节点广播该交易,以使其他区块链节点在共识该交易后将该交易记录到区块链上。
71.在上述数据库操作完成后,将本次数据库操作的操作记录封装到交易中,并向区块链网络中的其他区块链节点广播该交易,区块链网络中的所有区块链节点对该交易进行共识,在共识后将该交易记录到区块链上,从而完成操作记录的上链。在操作记录上链以后,所有区块链节点都可以从区块链上查询到每个区块链节点对各自数据库的所有操作记录。
72.示例性地,假设区块链节点1的本次数据库操作是:向本地的数据库中的数据表a写入一条“姓名为张三,身份证号为xxxx”的数据。在本次数据库操作完成后,数据库中的数据表a中新增一条“张三,xxxx”的数据,同时,本次数据库操作的操作记录将记录到区块链上,其他区块链节点都能够从区块链上读取到“在数据表a中写入一条数据,这条数据是

姓名为张三,身份证号为xxxx
’”
的操作记录。
73.需要说明的是,在该交易共识失败的情况下,需要回滚对该数据库执行的上述数据库操作,从而确保对数据库的操作与区块链上保存的操作记录的一致性。
74.可以理解的,在上述方案中,由于对操作请求的发起方的相应数据库操作权限进行了权限校验,实现了数据访问的控制,且将对数据库执行的所有操作均记录到区块链上,使得上层应用无法轻易对数据库中的数据进行篡改,具有数据中台的数据可追溯、不可篡改的效果。而且,传统数据库存在灾备能力差的缺点,而上述方案中,由于对数据库的所有操作均存储在区块链上,因此所有区块链节点都可以从区块链上查询到对各个数据库中的所有数据表的操作记录,根据操作记录可得到所有入库的数据表,这样每个区块链节点都能获得全局一致的入库的数据表,从而提升数据库的容灾能力,且这种方式能够有效兼容异构的数据库。
75.此外,考虑到区块链网络对交易进行共识的效率较低,因此本方案采用的是先入库再共识的方式,优先保障区块链节点具有数据库级别的性能,让数据库操作能够及时完成,在此基础之上,再将操作记录进行共识上链,从而确保不会影响与数据库进行交互的其他外部业务系统。
76.可选地,图2示出了上述步骤s120中对数据库执行相应的数据库操作的具体实施方式的流程图,如图2所示,步骤s120包括:
77.s210,确定预设的冲突检测规则库,该冲突检测规则库中包括多个禁止规则,每个禁止规则分别指示数据库中的数据表对应的被禁止操作。
78.预先建立冲突检测规则库,该冲突检测规则库中包括多个禁止规则,每个禁止规则分别指示数据库中的数据表对应的被禁止操作,该被禁止操作表示的是对数据表的原子级操作,原子级操作包括:表建立、表连接、投影操作、并操作、数据写入、数据删除、数据更新、数据读取。
79.示例性地,定义冲突检测规则库p={p1,p2,

,pn},pi表示一个禁止规则,例如p1对应的禁止规则为“数据表a禁止被写入”。
80.s220,将该数据库操作分解为对数据库中的数据表的多个原子级操作。
81.示例性地,该操作请求所请求的相应的数据库操作是:将数据表b的其中一条数据写入到数据表a中。其中,将该数据库操作分解为针对数据库中的数据表的多个原子级操作,得到多个原子级操作包括:原子级操作1,读取数据表b中的一条数据;原子级操作2,将读取的数据表b中的数据写入到数据表a中。
82.s230,根据该冲突检测规则库对该多个原子级操作进行冲突检测。
83.s240,根据该多个原子级操作中未与该冲突检测规则库中的禁止规则发生冲突的原子级操作,生成线性操作流。
84.其中,根据冲突检测规则库对分解出的多个原子级操作进行冲突检测,当分解出的某个原子级操作属于该冲突检测规则库中某个禁止规则所禁止的操作时,则确定该原子级操作与冲突检测规则库中的禁止规则发生冲突。在完成对每个原子级操作的冲突检测后,将该多个原子级操作中与冲突检测规则库中的禁止规则发生冲突的原子级操作筛除,将剩余未与冲突检测规则库中的禁止规则发生冲突的原子级操作,组合成线性操作流。
85.示例性地,冲突检测规则库中的禁止规则p1为“数据表a禁止被写入”,分解出的某个原子级操作包括“将读取的数据表b中的数据写入到数据表a中”,则确定该原子级操作与冲突检测规则库中的禁止规则p1发生冲突。
86.s250,对数据库依次执行该线性操作流中的每个原子级操作。
87.在获得线性操作流后,对该区块链节点对应的数据库依次执行该线性操作流中的每个原子级操作。
88.可选地,考虑到上述步骤中,在执行每个原子级操作的过程中可能存在操作失败的情况,预先建立操作转移规则库,该操作转移规则库中包括多个转移规则,每个转移规则分别指示当对应操作执行失败时的处理策略。
89.示例性地,该操作转移规则库中的转移规则包括但不限于:(1)表建立失败

中断操作;(2)表连接失败

中断操作;(3)投影操作失败

保存操作记录为待处理状态,跳过本步操作并进行线性操作流中的下一步操作;(4)并操作失败

保存操作记录为待处理状态,跳过本步操作并进行线性操作流中的下一步操作;(5)数据写入失败

回滚该操作,并进行线性操作流中的下一步操作;(6)数据删除失败

回滚该操作;(7)数据更新失败

回滚该操作;(8)数据读取失败

跳过本步操作并进行线性操作流中的下一步操作。当然,上述列举的转移规则仅是一种示例,并不表示实际情况中必须按照这样的规则进行设置。
90.在对该区块链节点对应的数据库依次执行该线性操作流中的每个原子级操作的过程中,在执行该线性操作流中的原子级操作成功的情况下,继续往下执行该线性操作流中的下一个原子级操作,而在执行该线性操作流中的原子级操作失败的情况下,根据上述操作转移规则库,确定该操作转移规则库中与执行失败的该原子级操作对应的目标转移规则,然后响应该目标转移规则中的处理策略。例如,在执行该线性操作流中对数据表b的数据读取操作时,数据读取操作失败,则响应其对应的处理策略,跳过本步操作并进行线性操作流中的下一步操作。
91.在该线性操作流执行完毕后,区块链节点将本次对数据库的操作记录封装到交易
中,并存储到区块链上。
92.可选地,在收到操作请求后,区块链节点首先检查本地的数据表是否与区块链上记录的数据表一致,如果不一致,则需要通过区块链上的对应区块恢复数据表,如果区块链节点本地缺失对应的区块,则从区块链网络中的其他区块链节点上同步区块。
93.进一步的,考虑到不同区块链节点所有方,可能具有较大的业务差异,即不同区块链节点使用的数据库不同,例如,某个区块链节点使用的数据库为mysql,另一个区块链节点使用的数据库为文档类数据库,将会导致数据的多源异构,进而难以实现对数据进行统一的操作和管理,对上层应用的开发造成了困难。
94.为解决数据的多源异构问题,图3示出了一示例性实施例提供的数据操作方法的流程图,如图3所示,该方法包括:
95.s310,确定数据聚合计划,该数据聚合计划用于指示数据聚合操作的触发条件、数据聚合操作对应的至少一个源数据表以及数据聚合操作对应的目标关系模式。
96.预先建立数据聚合计划,该数据聚合计划用于指示数据聚合操作的触发条件、数据聚合操作对应的至少一个源数据表以及数据聚合操作对应的目标关系模式。其中,触发条件可以是事件型触发条件或时间型触发条件。
97.对于时间型触发条件,例如某数据聚合计划为:每隔一周的时间(触发条件),对源数据表a和源数据表b进行一次数据聚合操作。
98.对于事件型触发条件,例如某数据聚合计划为:每当源数据表a一更新或者源数据表a每增加十万条数据(触发条件),对源数据表a和源数据表b进行一次数据聚合操作。
99.s320,当确定触发条件满足时,从区块链上提取出对应源数据表的操作记录,并根据提取的操作记录还原出对应的源数据表。
100.下面以数据聚合计划中至少一个源数据表分别为源数据表a和源数据表b为例进行说明。由于区块链上存储有对所有数据表的操作记录,包括源数据表a的若干操作记录,源数据表b的若干操作记录,源数据表c的若干操作记录等,当确定数据聚合计划中的触发条件满足时,从区块链上提取出源数据表a的操作记录和源数据表b的操作记录,根据源数据表a的操作记录还原出对应的源数据表a,根据源数据表b的操作记录还原出对应的源数据表b。
101.s330,将还原出的源数据表聚合到目标关系模式下,得到聚合表。
102.s340,向区块链网络中的其他区块链节点广播该聚合表,以使其他区块链节点在共识该聚合表后将该聚合表记录到区块链上。
103.可以理解的,在未采用本方案前,数据表分别存储在各个不同的数据库中,由于数据库的不同,无法对这些数据表进行统一操作,在采用本方案后,按照数据聚合计划将相关源数据表聚合到统一的目标关系模式下,得到聚合表,因此所有区块链节点只需使用统一的操作指令就可以操作聚合表,实现了操作上的统一性。
104.可选地,图4示出了一示例性实施例提供的上述步骤s330中得到聚合表的具体实施方式的流程图,如图4所示,步骤s330包括:
105.s410,构建具有目标关系模式的聚合表,该目标关系模式包括表结构和表字段,表字段包括主键和非主键属性。
106.构建具有目标关系模式的聚合表,此时构建出的聚合表为初始聚合表。目标关系
模式包括表结构和表字段,表字段包括主键和非主键属性,各属性字段是根据数据中台需要提供的业务服务进行定义。
107.可选地,聚合表的表字段包括主键、非主键属性和时间字段,时间字段可用于表示对应数据的最后更新时间或者其他时间信息。同样的,各源数据表的表字段也包括主键和非主键属性,可选地,还可包括时间字段。
108.将聚合表记为current,将源数据表a记为sourcea,将源数据表b记为sourceb,则有:
109.sourcea={akey,z1,z2,z3,

,time};
110.sourceb={bkey,g1,g2,g3,

,time};
111.current={key,att1,att2,att3

time};
112.其中,akey为源数据表a的主键,z1、z2、z3为源数据表a的非主键属性,bkey是源数据表b的主键,g1、g2、g3为源数据表b的非主键属性,key为聚合表的主键,att1、att2、att3为聚合表的非主键属性,time是时间字段。
113.s420,建立每个源数据表的非主键属性与聚合表的非主键属性的映射关系。
114.可以理解的,需要建立起每个源数据表的非主键属性与聚合表的非主键属性的映射关系,才能够确定应该把源数据表的哪个表项填充到聚合表的哪个表项上。根据上述的示例,可建立如下映射关系:
115.att1

(z1,g1);
116.att2

(z2,g2);
117.att3

(z3,g3)。
118.s430,确定主键调解表,该主键调解表用于将每个源数据表的主键分别映射到主键调解表的主键。
119.从源数据表a和源数据表b中提取的数据主键不同会影响关系模式的统一,而数据调解是统一数据主键形式的过程,因此需要建立针对各个源数据表的主键调解表。通过定义主键调解表将各个源数据表的原关系模式的主键映射到聚合表的目标关系模式的主键。
120.示例性地,根据上述的示例,主键调解表为:
121.conc={ckey,akey,bkey};
122.其中,ckey为主键调解表的主键。
123.s440,针对每个源数据表,将源数据表与主键调解表进行自然连接,得到对应的中间数据表。
124.示例性地,根据上述的示例,针对源数据表a,将源数据表a与主键调解表进行自然连接,得到源数据表a对应的中间数据表,记为tempa;针对源数据表b,将源数据表b与主键调解表进行自然连接,得到源数据表b对应的中间数据表,记为tempb。
125.其中,tempa

sourcea∞conc;
126.其中,tempb

sourceb∞conc;
127.其中,∞为自然连接符。
128.s450,根据设置的第一投影条件和对应的中间数据表,对源数据表进行对应的投影运算。
129.s460,根据该源数据表与聚合表之间的映射关系,将投影运算的结果映射为聚合
表的表项,获得目标数据。
130.针对每个源数据表,根据设置的第一投影条件和该源数据表对应的中间数据表,对该源数据表进行投影运算,并根据该源数据表与聚合表之间的映射关系,将投影运算的结果映射为聚合表的表项,获得该源数据表对应的目标数据。
131.示例性地,根据上述的示例,将源数据表a对应的目标数据记为dataa,将源数据表b对应的目标数据记为datab,则有:
132.dataa

π(sourcea)(tempa);
133.datab

π(sourceb)(tempb);
134.其中,π为投影运算符。
135.作为一种示例,dataa

π(sourcea)(tempa)所表示的投影运算为:
136.根据第一投影条件确定tempa中满足条件的字段,并确定sourcea中的针对tempa中满足条件的字段的数据投影,得到所需的数据。
137.s470,将每个源数据表对应的目标数据进行并操作,将并操作的结果写入到聚合表中。
138.在经过以上步骤后,得到的目标数据dataa和datab是在同一关系模式下的数据,因此只需将目标数据dataa和datab进行简单的并操作,再将并操作的结果写入到聚合表中。得到的聚合表为:
139.current

dataa∪datab
140.或者,得到的聚合表为:
141.current

current∪dataa∪datab
142.在可选的实施例中,上述步骤s410~s470中,仅执行针对新的目标关系模式的数据聚合操作时,才新构建一个聚合表,如果针对同一目标关系模式发起多次数据聚合操作,则之后的数据聚合操作不必构建一个新的聚合表,而是直接将聚合的结果更新到原本构建的聚合表中。
143.随着数据聚合操作的不断进行,聚合表中的数据会越来越多,因此需要将聚合表中价值不高的旧数据及时迁移到其他表中,进行数据归档。
144.可选地,图5示出了一示例性实施例提供的数据操作方法的流程图,如图5所示,该方法包括:
145.s510,构建与聚合表具有相同关系模式的历史表。
146.其中,相同关系模式表示历史表与聚合表具有相同的表结构和相同的表字段。步骤s510可以与步骤s410同时执行,即同时构建具有相同的目标关系模式的聚合表和历史表。
147.s520,根据设置的第二投影条件对聚合表进行对应的投影运算,获得待迁移数据。
148.其中,根据设置的第二投影条件对聚合表进行对应的投影运算,获得待迁移数据dataold。
149.其中,dataold

π(current)(time)。
150.可以理解的,哪些数据被定义为需要迁移的旧数据是由第二投影条件定义的,例如,一年前的数据为旧数据,或者一个月前的数据为旧数据。
151.作为一种示例,dataold

π(current)(time)所表示的投影运算为:
152.根据第二投影条件和current中的时间字段time,确定current中的时间信息满足第二投影条件的数据,得到所需的数据。
153.s530,将该待迁移数据迁移到历史表中。
154.在确定待迁移数据dataold后,将待迁移数据dataold从聚合表current迁移到历史表history,则有:
155.current

current

dataold;
156.history

dataold;
157.或者,则有:
158.history

history∪dataold。
159.s540,向区块链网络中的其他区块链节点广播该历史表,以使其他区块链节点在共识该历史表后将该历史表记录到区块链上。
160.通过上述步骤,能够及时将旧数据迁移到历史表history中,起到数据归档的作用。
161.在本公开一示例性实施例中,还提供一种区块链系统,该区块链系统包括由多个区块链节点组成的区块链网络,每个区块链节点上设有数据中台业务模块,该数据中台业务模块中部署有智能合约,每个区块链节点用于执行数据中台业务模块中的智能合约,以实现前述方法实施例提供的数据操作方法的各个步骤。
162.可以理解的,数据中台的业务由智能合约实现,即通过部署在每个区块链节点上的智能合约,能够在区块链系统上实现数据中台的业务。
163.图6示出了基于上述区块链系统实现数据中台业务的示意图。如图6所示,区块链系统包括由多个区块链节点组成的区块链网络,每个区块链节点分别具有自己对应的数据库,用于存储数据,不同区块链节点之间使用的数据库可能相同或者不同,例如,某个区块链节点使用的数据库为mysql,另一个区块链节点使用的数据库为文档类数据库。
164.数据中台的业务包括但不限于:数据授权管理、服务授权管理、数据开发计划和数据聚合计划。
165.在具体实现时,每个区块链节点上设有数据中台业务模块,该数据中台业务模块中部署有对应的数据权限校验智能合约,服务权限校验智能合约,数据开发智能合约和数据聚合智能合约。
166.服务权限校验智能合约用于在收到操作请求后,校验操作请求的发起方是否具有对数据库进行对应操作的服务权限,数据权限校验智能合约用于在收到操作请求后,校验发起方是否具有对待操作的数据表进行操作的数据权限,数据开发智能合约用于管理冲突检测规则库和操作转移规则库,在确定服务权限校验智能合约与数据权限校验智能合约的权限校验通过后,根据冲突检测规则库和操作转移规则库对数据库执行相应的数据库操作,数据聚合智能合约用于管理数据聚合计划,在确定数据聚合计划中的触发条件满足后,对数据聚合计划中的相关源数据表进行相应的数据聚合操作。
167.需要说明的是,在上述区块链系统中,利用区块链技术实现数据汇聚,将区块链与数据库相结合,在链上存储对数据库的操作,并使用智能合约实现中台业务,在链上进行数据访问的控制和计划任务,将区块链共识可信、去中心化、不可篡改的特点引入到数据中台当中,有效提升数据安全性。
168.关于上述实施例中的区块链系统,其中每个区块链节点执行智能合约所实现的数据操作方法的详细步骤已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
169.在本公开一示例性实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述实施例中提供的数据操作方法的步骤。
170.在本公开一示例性实施例中,还提供一种数据操作装置,该装置配置于区块链网络中的区块链节点。图7示出了该数据操作装置的框图,如图7所示,该装置600包括:
171.权限校验模块610,用于响应于对所述区块链节点对应的数据库发起的操作请求,校验所述操作请求的发起方是否具有相应的数据库操作权限;
172.数据库操作模块620,用于在权限校验通过的情况下,对所述数据库执行相应的数据库操作;
173.记录上链模块630,用于在所述数据库操作完成后,将本次数据库操作的操作记录封装到交易中,并向所述区块链网络中的其他区块链节点广播所述交易,以使其他区块链节点在共识所述交易后将所述交易记录到区块链上。
174.可选地,该装置600还包括:共识失败处理模块,用于在所述交易共识失败的情况下,回滚对所述数据库执行的所述数据库操作。
175.可选地,数据库操作模块620包括:
176.冲突规则确定模块,用于确定预设的冲突检测规则库,所述冲突检测规则库中包括多个禁止规则,所述禁止规则用于指示所述数据库中的数据表对应的被禁止操作;
177.操作分解模块,用于将所述数据库操作分解为对所述数据库中的数据表的多个原子级操作;
178.冲突检测模块,用于根据所述冲突检测规则库对所述多个原子级操作进行冲突检测;
179.操作流生成模块,用于根据所述多个原子级操作中未与所述冲突检测规则库中的禁止规则发生冲突的原子级操作,生成线性操作流;
180.操作执行模块,用于对所述区块链节点对应的数据库依次执行所述线性操作流中的每个原子级操作。
181.可选地,该装置600还包括:转移规则确定模块,用于确定预设的操作转移规则库,所述操作转移规则库中包括多个转移规则,每个所述转移规则用于指示当对应操作执行失败时的处理策略。
182.其中,操作执行模块用于,在执行所述线性操作流中的所述原子级操作失败的情况下,确定所述操作转移规则库中与所述原子级操作对应的目标转移规则;响应所述目标转移规则中的所述处理策略。
183.可选地,该装置600还包括:
184.聚合计划确定模块,用于确定数据聚合计划,所述数据聚合计划用于指示数据聚合操作的触发条件、所述数据聚合操作对应的至少一个源数据表以及所述数据聚合操作对应的目标关系模式;
185.数据表还原模块,用于当确定所述触发条件满足时,从区块链上提取出对应所述源数据表的操作记录,并根据所述操作记录还原出对应的所述源数据表;
186.数据聚合模块,用于将还原出的所述至少一个源数据表聚合到所述目标关系模式下,得到聚合表;
187.聚合表上链模块,用于向所述区块链网络中的其他区块链节点广播所述聚合表,以使其他区块链节点在共识所述聚合表后将所述聚合表记录到区块链上。
188.可选地,数据聚合模块包括:
189.聚合表构建模块,用于构建具有所述目标关系模式的聚合表,所述目标关系模式包括表结构和表字段,所述表字段包括主键和非主键属性;
190.属性映射模块,用于建立每个源数据表的非主键属性与所述聚合表的非主键属性的映射关系;
191.主键调解模块,用于确定主键调解表,所述主键调解表用于将每个源数据表的主键分别映射到所述主键调解表的主键;
192.数据调解模块,用于针对每个源数据表,将所述源数据表与所述主键调解表进行自然连接,得到对应的中间数据表;
193.第一投影模块,用于根据设置的第一投影条件和所述中间数据表,对所述源数据表进行对应的投影运算,并根据所述源数据表与所述聚合表之间的所述映射关系,将投影运算的结果映射为所述聚合表的表项,获得目标数据;
194.聚合表获得模块,用于将每个源数据表对应的目标数据进行并操作,将并操作的结果写入到所述聚合表中。
195.可选的,该装置600还包括:
196.历史表构建模块,用于构建与所述聚合表具有相同关系模式的历史表;
197.第二投影模块,用于根据设置的第二投影条件对所述聚合表进行对应的投影运算,获得待迁移数据;
198.数据迁移模块,用于将所述待迁移数据迁移到所述历史表中;
199.历史表上链模块,用于向所述区块链网络中的其他区块链节点广播所述历史表,以使其他区块链节点在共识所述历史表后将所述历史表记录到区块链上。
200.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
201.以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
202.另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
203.此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1