基于区块链和机器学习的跨系统数据共享方法与流程

文档序号:24193242发布日期:2021-03-09 15:51阅读:116来源:国知局
基于区块链和机器学习的跨系统数据共享方法与流程

1.本发明属于区块链网络技术领域,具体涉及一种基于区块链和机器学习的跨系统数据共享方法。


背景技术:

2.数据库系统(data base system,简称dbs),是由数据库及其管理软件组成的系统。数据库系统是为适应数据处理的需要而发展起来的一种较为理想的数据处理系统,也是一个为实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质 、处理对象和管理系统的集合体。
3.数据库系统通常由软件、数据库和数据管理员组成。其软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行。数据管理员负责创建、监控和维护整个数据库,使数据能被任何有权使用的人有效使用。数据库管理员一般是由业务水平较高、资历较深的人员担任。
4.数据库系统的个体含义是指一个具体的数据库管理系统软件和用它建立起来的数据库;它的学科含义是指研究、开发、建立、维护和应用数据库系统所涉及的理论、方法、技术所构成的学科,是为适应数据处理的需要而发展起来的一种较为理想的数据处理的核心机构,为计算机的高速处理能力和大容量存储器提供了实现数据管理自动化的条件。
5.数据库研究跨越于计算机应用、系统软件和理论三个领域,其中应用促进新系统的研制开发,新系统带来新的理论研究,而理论研究又对前两个领域起着指导作用。由于对数据库的操作都由数据库管理系统完成,所以数据库就可以独立于具体的应用程序而存在,从而数据库又可以为多个用户所共享,因此,数据的独立性和共享性是数据库系统的重要特征。但是,由于技术指标、运用场景、运行要求等环境因素的差异,不同组织都有着属于自己的独立的数据库系统,而各个数据库系统也都独立进行使用与维护。在当下很多应用场景都需要不同的组织共享各自的数据库,跨组织协作完成任务,传统的处理方法是设置第三方数据中心对来自各个组织的数据库数据进行专门的管理和维护,但是这样的数据中心缺少信任,数据存在被篡改和丢失的风险。
6.而现在新兴的区块链技术,由于其保密和不可逆以及去第三方的特性,能够消除现有数据库共享所存在的这些风险。共享数据库首先需要解决一个问题是,不同的组织对自己的数据库内容有着自己的命名规则和风格,同样含义的字段在不同数据库中可能有着不同的命名规则,比如某一个数据库中对其一张表的某一个属性命名是“姓名”,而在另一个数据库中对这个属性的命名却是“name”,要实现不同数据库共享彼此数据,就需要解决命名差异带来的冲突,消除上述对同一数据的属性命名歧义。
7.机器学习技术是对数据进行分析,获得规律,然后利用规律在对未知数据进行预测和分类,机器学习技术是现行的、用于自动化智能化对数据进行识别、处理、矫正、归集的技术,用机器学习的技术则可以很好的解决上述对同一数据的属性命名歧义进行自动、智
能矫正统一的工作,机器学习技术是对数据进行分析,获得规律,比如可以通过机器学习学习标准数据特征,用于识别具有相同语义的文本,实现具有相同含义但命名不同的数据的融合、共享,然后利用规律在对未知数据进行预测和分类。
8.但是,在现有技术中,还没有一种技术方案能够将机器学习的技术运用在区块链数据共享的体系中。


技术实现要素:

9.本发明针对上述的不同数据库在共享数据时,因为数据库表的属性命名不同而产生的命名冲突问题、已经传统数据中心管理数据时,数据存在被篡改和丢失风险的问题,提供了一种利用机器学习技术、通过机器学习学习标准数据特征,用于识别具有相同语义的文本,从而实现通过区块链网络去第三方的进行多数据库安全共享的方法。
10.基于区块链和机器学习的跨系统数据共享方法,包括语义网数据库建立步骤、标准属性值库建立步骤和智能合约数据共享步骤;语义网数据库建立步骤,一般来说区块链中每一个区块为了保存交易记录,都建立了一个merkle树的结构,其中区块头保存的是merkle树的树根,区块体保存下面相应的树根以下的部分,可以采用类似的merkle树结构来构建一个语义网数据库,在区块链中建立了一个用于记录所有参与共享的数据库中各类数据的属性名以及该属性名下的子属性名的merkle树结构作为语义网数据库;所述merkle树结构中的所有叶节点代表属性名下的子属性名,通过自底向上进行哈希递归,最终返回一个根哈希值作为语义网数据库的树根。
11.所述属性名下的子属性名中均包含它们各自属于哪张表的信息,比如有一个属性名为“姓名”的分支,则该分支下面子属性名的分支,如“name”、“名字”等,同时子属性名的分支“name”中还应包含该属性名原本属于的数据库名字,方便对其进行数据库的一些操作,该语义网结构存放在区块中。
12.标准属性值库建立步骤,标准属性值库,用于通过机器学习进行差异对比以及分类,通过已有的标准属性值数据训练机器学习模型,比如神经网络,设定好各种初始化参数后,将标准属性值库的数据输入神经网络,训练模型,将所述语义网数据库建立步骤中得到的用于共享数据的语义网数据库输入至训练好的机器学习模型中进行机器学习,得到标准语义网数据库;所述标准属性值库建立步骤中,通过已有的标准属性值数据训练机器学习模型,具体的,语义网数据库需要共享数据:首先,将所述语义网数据库建立步骤中得到的用于共享数据的语义网数据库中每列数据输入至训练好的机器学习模型中进行机器学习;然后,选择机器学习模型的输出结果中输出概率最高的属性名作为语义网数据库中每列数据的属性名。
13.进一步的,得到机器学习模型的输出结果中输出概率最高的属性名后,还要首先查找当前作为语义网数据库的merkle树结构中对应列的属性名是否与机器学习模型的输出结果中输出概率最高的属性名相同,若不相同则用机器学习模型的输出结果中输出概率最高的属性名作为对应列的属性名入到merkle树结构中。
14.若用于共享数据的语义网数据库中的某一列数据经过机器学习模型机器学习后输出的结果中所有属性名的输出概率值都很低,低于设定阈值,则判断该列为新属性,则在当前作为语义网数据库的merkle树结构下新增一个属性分支,并将该列数据加入标准语义网数据库中,作为新属性的标准值。
15.即通过该机器学习模型,将每列数据库数据作为输入,然后选择输出概率最高的属性名,作为该列的属性名。
16.智能合约数据共享步骤,上述区块中新构建的树结构也就是使用机器学习将分好类的属性组织成语义网的结构,将标准语义网数据库存放到区块链中,用户通过查看区块链中的标准语义网数据库,找到目标数据的属性名在其存储位置的数据库中的命名,然后进行访问,这样区块链中某个用户想要访问其他数据库中的数据,就查看当前区块链中最新构建的语义网,从里面可以查看到当前操作指令中的属性名在目标数据库中的命名,从而实现跨系统数据访问。
17.所述智能合约数据共享步骤中,当用户访问数据库时要加入自己的数据库或者对数据进行操作,则用户向区块链的智能合约发送操作请求,智能合约接收所述操作请求并进行解析,判断操作请求类型;若操作请求为用户要将自己的数据库加入至本共享网络中,则智能合约将待加入的数据库中所包含的数据输入至所述语义网数据库建立步骤中,并根据加入的数据库中各类数据的属性名以及该属性名下的子属性名更新至作为语义网数据库的merkle树结构中,还可以在语义网对应的属性名中添加该数据库名称,以方便对该数据库中数据进行操作,如:增、删、查、改等;若操作请求为用户将对某一数据库中的数据进行操作,如:增、删、查、改等,则根据目标数据的属性名在其存储位置的数据库中的命名,调取并返回具有该数据库名的全部属性名,然后用户再对具体属性名的数据进行操作。
18.与现有技术相比,本发明所达到的有益效果如下:本发明利用区块链、机器学习来解决跨系统的数据共享问题,区块链技术能保证数据不可篡改和数据的安全,并利用自动化脚本代码组成的智能合约实现数据处理和相关业务的操作。区块链在存储上保证了数据的安全性,解决了传统第三方数据中心存储数据时,数据有被恶意篡改或者丢失的数据安全问题。使用机器学习,对同义词属性能正确的分类,解决了用户因无法正确的使用对应数据库的属性名,而访问失败的问题。所以本发明阐述的系统适合系统的数据共享,能保证每一个贡献自己数据的组织即能共享数据,也能参与维护数据,整个操作过程高效、透明、安全。
19.将基本操作单元中的对应列属性值数据与标准属性值库中数据集合做匹配,获得匹配度最高的标准属性值集合,该标准属性值集合对应的名字就是基本操作单元中属性名所属的分类。语义网是一种智能网络,它不但能够理解词语和概念,而且还能够理解它们之间的逻辑关系,可以使交流变得更有效率,树是一种数据结构,每个树节点可以链接多个孩子节点,本发明使用树结构来作为语义网的基本结构,存储分好类的属性名。
附图说明
20.本发明的前述和下文具体描述在结合以下附图阅读时变得更清楚,附图中:
图1是本发明同义词识别同步步骤示意图;图2是本发明使用机器学习训练同义词识别模型示意图;图3是树结构建立以及新数据库更新过程示意图。
具体实施方式
21.下面通过具体的实施例来进一步说明实现本发明目的技术方案,需要说明的是,本发明要求保护的技术方案包括但不限于以下实施例。
22.本实施例公开了基于区块链和机器学习的跨系统数据共享方法,包括语义网数据库建立步骤、标准属性值库建立步骤和智能合约数据共享步骤。
23.所述语义网数据库建立步骤,一般来说区块链中每一个区块为了保存交易记录,都建立了一个merkle树的结构,其中区块头保存的是merkle树的树根,区块体保存下面相应的树根以下的部分,可以采用类似的merkle树结构来构建一个语义网数据库,在区块链中建立了一个用于记录所有参与共享的数据库中各类数据的属性名以及该属性名下的子属性名的merkle树结构作为语义网数据库,所述merkle树结构中的所有叶节点代表属性名下的子属性名,通过自底向上进行哈希递归,最终返回一个根哈希值作为语义网数据库的树根。
24.进一步的,所述属性名下的子属性名中均包含它们各自属于哪张表的信息,比如有一个属性名为“姓名”的分支,则该分支下面子属性名的分支,如“name”、“名字”等,同时子属性名的分支“name”中还应包含该属性名原本属于的数据库名字,方便对其进行数据库的一些操作。该语义网结构存放在区块中。相关操作如下图3所示。
25.所述标准属性值库建立步骤,标准属性值库用于通过机器学习进行差异对比以及分类,通过已有的标准属性值数据训练机器学习模型,比如神经网络,设定好各种初始化参数后,将标准属性值库的数据输入神经网络,训练模型,将所述语义网数据库建立步骤中得到的用于共享数据的语义网数据库输入至训练好的机器学习模型中进行机器学习,得到标准语义网数据库。
26.而在所述标准属性值库建立步骤中,通过已有的标准属性值数据训练机器学习模型,具体的,包括以下步骤:首先,将所述语义网数据库建立步骤中得到的用于共享数据的语义网数据库中每列数据输入至训练好的机器学习模型中进行机器学习;然后,选择机器学习模型的输出结果中输出概率最高的属性名作为语义网数据库中每列数据的属性名。
27.进一步的,得到机器学习模型的输出结果中输出概率最高的属性名后,还要首先查找当前作为语义网数据库的merkle树结构中对应列的属性名是否与机器学习模型的输出结果中输出概率最高的属性名相同,若不相同则用机器学习模型的输出结果中输出概率最高的属性名作为对应列的属性名入到merkle树结构中。
28.若用于共享数据的语义网数据库中的某一列数据经过机器学习模型机器学习后输出的结果中所有属性名的输出概率值都很低,低于设定阈值,则判断该列为新属性,则在当前作为语义网数据库的merkle树结构下新增一个属性分支,并将该列数据加入标准语义网数据库中,作为新属性的标准值。
29.即通过该机器学习模型,将每列数据库数据作为输入,然后选择输出概率最高的属性名,作为该列的属性名。
30.所述智能合约数据共享步骤,上述区块中新构建的树结构也就是使用机器学习将分好类的属性组织成语义网的结构,将标准语义网数据库存放到区块链中,用户通过查看区块链中的标准语义网数据库,找到目标数据的属性名在其存储位置的数据库中的命名,然后进行访问,这样区块链中某个用户想要访问其他数据库中的数据,就查看当前区块链中最新构建的语义网,从里面可以查看到当前操作指令中的属性名在目标数据库中的命名,从而实现跨系统数据访问。
31.优选地,所述智能合约数据共享步骤中,当用户访问数据库时要加入自己的数据库或者对数据进行操作,则用户向区块链的智能合约发送操作请求,智能合约接收所述操作请求并进行解析,判断操作请求类型;若操作请求为用户要将自己的数据库加入至本共享网络中,则智能合约将待加入的数据库中所包含的数据输入至所述语义网数据库建立步骤中,并根据加入的数据库中各类数据的属性名以及该属性名下的子属性名更新至作为语义网数据库的merkle树结构中,还可以在语义网对应的属性名中添加该数据库名称,以方便对该数据库中数据进行操作,如:增、删、查、改等;若操作请求为用户将对某一数据库中的数据进行操作,如:增、删、查、改等,则根据目标数据的属性名在其存储位置的数据库中的命名,调取并返回具有该数据库名的全部属性名,然后用户再对具体属性名的数据进行操作。
32.本方案的具体技术可以分为两个核心的部分,其一,共享数据首先需要的是消除不一致的标记,为跨系统准确共享提供可能,需要通过机器学习消除属性命名冲突,其二,共享数据时使用区块链和智能合约技术存储数据和对共享数据进行操作。
33.首先,通过机器学习消除属性命名冲突,具体的,数据库以表的形式存放数据,在数据库中每一张表的每一列分别由属性名和属性值组成,一个数据库中的用户想要访问另一个数据库中的数据,却不知道对方对数据库表属性的命名是什么,就无法实现访问,本方案中机器学习的基本思想是:首先建立标准属性值库,标准数据库由一个个数据集合组成,每一个集合中的数据能全面描述其代表的数据的特征;然后将待数据共享的数据库表的数据按列划分,每一列作为一个基本操作单元,基本操作单元的形式是<对应列的属性名,对应列的属性值>。
34.这里以一个具体案例来进行阐释,先创建两个数据库db1和db2,两个数据库中各有一张表分别是user1,user2,数据库db1的表user1中有属性姓名、性别、年龄,在db2的表user2中有属性名字、gender、年龄。
35.步骤1:查看两个数据库中数据表的属性名,首先要为其规定一个统一的标准属性名,在本案例中,标准属性名依次是name,gender,age,并在区块链上创建3个树节点,依次存放标准属性名name,gender,age;步骤2:构建本案例的机器学习模型,本案例中标准集合共3个,百家姓姓氏对应name属性值的标准值,男、女集合对应gender的标准属性值集合,1至150的整数对应age标准属性值集合;步骤3:数据库db1管理员发起请求,智能合约接受请求并解析判断,判断出是新增
用户请求,就将db1中数据交由机器学习模型处理;步骤4:将数据库db1中的表user1作为输入,系统将表中每个属性名和其对应的属性值抽取出来作为一个操作单元;步骤5:对于每个操作单元,模型提取出其中的属性值集合,将属性值集合与所有标准属性值集合进行匹配,本例中db1的user1表,姓名属性值最后必然会和百家姓标准集合匹配度最高,所以在区块链的标准属性名树节点name节点下创建一个child树节点,将操作单元中存放的属性名,在本案例中就是姓名,作为child树节点的值存放起来,再处理表user1剩下的数据,同样将每一个属性名和其对应的属性值提取出来,作为一个基本操作单元,与标准属性值集合进行匹配,在案例中,user1表剩下的两个属性性别,年龄,会依次匹配到标准属性名gender和age,在age节点下面创建child节点存放性别属性名,在age节点下创建child树节点存放年龄属性名;步骤6:对另一个新加入的数据库db2的数据都重复以上步骤,进行歧义消除。
36.其次,共享数据时使用区块链和智能合约技术存储数据和对共享数据进行操作,具体的,首次设计智能合约用于数据共享操作,主要用于处理用户发起的操作请求,比如对数据的增、删、改、查操作。智能合约的代码功能主要分为三部分:操作权限判断、操作信息解析、执行操作。因为系统中有些数据只有特定的用户才能访问,所以当用户发起对数据的操作请求时,需要判断用户是否有权限访问数据;系统中的部分数据的命名是存在歧义的,比如发起操作的用户所属数据库中,字段命名为”姓名”,在用户欲操作的目标数据库中,该字段命名为“name”,所以需要对用户发起的操作信息进行解析,通过第一部分机器学习模块构建的语义网络,找到字段在目标数据库中的正确命名(即“name”),替换用户原始操作请求中的命名(即“姓名”);通过前两步,获得目标的正确命名,且有权操作,就可以对目标数据进行操作了。
37.具体的,这里接着以前述通过机器学习消除属性命名冲突中具的数据例子来进行阐释:步骤7:用户想对数据进行操作,发送请求给智能合约,智能合约接收请求并解析,在本例中,db1中的普通用户a1欲查询db2的user2表中姓名叫做张三的用户的年龄,向智能合约发送请求select age from db2.user2 where name ==
ꢀ‘
张三’;步骤8:智能合约判断用户类型,根据其操作权限确认该条操作在其权限范围内,就解析该条操作语句,去区块链上检索属性名树,查找到name根节点,根据数据库和表定位出name的child节点名字即是数据库db2的user2对name的命名,修改sql语句为select age from db2.user2 where 名字 ==
ꢀ‘
张三’,对应的数据库表db2.user2执行该sql语句,将查询返回给用户;步骤9:db1中的管理员用户对数据库db2的user2表进行修改数据的操作,发送请求,智能合约接收请求并解析,在本例中,db1中的用户欲查询db2的user2表中姓名叫做张三的用户的年龄,向智能合约发送请求select age from db2.user2 where name ==

张三’;步骤10:智能合约解析基本操作语句,去区块链上检索属性名树,查找到name根节点,根据数据库和表定位出name的child节点名字即是数据库db2的user2对name的命名,修
改sql语句为select age from db2.user2 where 名字 ==
ꢀ‘
张三’,对应的数据库表db2.user2执行该sql语句,将查询返回给用户;步骤11:db1中的数据库管理员用户root1修改db2的user2中的数据,在本案例中修改db2的表user2中姓名为张三的年龄,修改为30,数据库管理员用户向智能合约发送请求update db2.user2 set age= 30 where name ==
ꢀ‘
张三’;步骤12:智能合约判断用户类型为数据库管理员,其权限可以对数据库数据做修改操作,就解析该条操作语句,去区块链上检索属性名树,查找到age根节点,根据数据库和表定位出age的child节点年龄,即是数据库db2的user2对年龄的命名,修改sql语句为update db2.user2 set 年龄= 30 where name ==
ꢀ‘
张三’,对应的数据库表db2.user2执行该sql语句,将修改成功的提示返回给用户;步骤13:db1中的数据库管理员用户root1增加db2的user2中的数据,在本案例中向db2的表user2中增加一条数据(“wangxi”,女,25),数据库管理员用户向智能合约发送请求insert into db2.user2 value(“wangxi”,女,25);步骤14:智能合约判断用户类型为数据库管理员,其权限可以对数据库数据做删除操作,就解析该条操作语句,对应的数据库表db2.user2执行该sql语句,将插入成功的提示返回给用户;步骤15:db1中的数据库管理员用户root1删除db2的user2中的数据,在本案例中删除db2的表user2中姓名为张三的数据,数据库管理员用户向智能合约发送请求delete from db2.user2 where name =
ꢀ‘
张三’;步骤16:智能合约判断用户类型为数据库管理员,其权限可以对数据库数据做删除操作,就解析该条操作语句,去区块链上检索属性名树,查找到age根节点,根据数据库和表定位出name的child节点名字,即是数据库db2的user2对name的命名,修改sql语句为delete from db2.user2 where 名字 =
ꢀ‘
张三’,对应的数据库表db2.user2执行该sql语句,将删除成功的提示返回给用户。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1