利索能及
我要发布
收藏
专利号: 2017101878680
申请人: 浙江工业大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-08-12
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于数据服务依赖图的高校数据组合视图自动生成方法,包括以下步骤:(1)将高校各部门的数据集划分为原子数据服务;

(1.1)建立高校各部门数据集的数据依赖图;

根据属性间的函数依赖和连接依赖,建立高校各部门数据集的数据依赖图DDG;

定义1数据依赖图,数据依赖图表示为一个扩展的有向图DDG=(U,E),其中U={a1,a2,…,an}是单个属性的集合;E={e1,e2,…,em}是属性间依赖关系的集合,ei=X→aj表示属性aj完全依赖于属性集X,建立属性间数据依赖图的步骤为:

输入:基本表及其属性,函数依赖集合,连接依赖集合

输出:数据依赖图

步骤a1:确定每个基本表的所有候选键;

步骤a2:根据函数依赖,确定每个基本表内属性之间的依赖关系;

步骤a3:根据连接依赖,确定所有基本表间的依赖关系;

步骤a4:建立属性间的数据依赖图,其节点为属性,有向边为依赖关系;(1.2)基于数据依赖图将高校各部门数据集划分原子数据服务;

基于所构建的数据依赖图,将高校各部门的数据集划分为原子数据服务ADS,其定义如下:定义2原子数据服务,将可独立访问且语义不可再分的数据服务称为原子数据服务,表示为一个八元组ADS=,其中Id是ADS的唯一标识;Name是ADS的名称;Fields是ADS的属性列表;

Description是ADS的语义描述;Input是ADS的输入,有一个或多个;Output是ADS的输出,是一个关系;Operations是对ADS可执行的操作,包括查询、修改和删除;Publisher是ADS的发布者;

基于步骤(1.1)中生成的数据依赖图将高校各部门的数据集划分为原子数据服务的算法如下:输入:数据依赖图DDG

输出:原子数据服务集合

步骤b1:从DDG的任意结点开始访问,设初始访问结点为v;

步骤b2:访问结点v,做已访问标记,按照广度优先策略访问;

步骤b3:查找结点v的任一邻接结点w,判断结点w是否存在,若不存在,转步骤b8;若邻接结点w存在且未访问,访问结点w,做已访问标记;

步骤b4:判断结点v的前驱结点是否存在且未访问,若否,则确定v结点为前驱结点,w结点为后继结点,以v结点为输入,以w结点为输出,封装为ADS,执行步骤b5;若存在且未访问过,转步骤b7;

步骤b5:查找结点v的下一个邻接结点wn,若存在且未访问,访问该结点,并将该结点标记为已访问,然后以v结点为输入,该邻接结点为输出,封装为ADS,转步骤b5;若不存在,执行步骤b6;

步骤b6:确定v结点先访问到的邻接结点w1,后访问到的邻接结点wn,分别以w1结点,wn结点为新的初始访问结点v,并使w1结点的邻接结点先于wn的邻接结点被访问,转步骤b3;

步骤b7:判断v结点的前驱结点是否唯一,若唯一,则访问前驱结点,做已访问标记,并以前驱结点为输入,以v结点为输出,封装为ADS,转步骤b5;若不唯一,则访问所有的前驱结点,做已访问标记,首先把v结点所有的前驱结点分别封装为一个ADS,再把v结点和它所有的前驱结点封装为一个ADS,转步骤b5;

步骤b8:输出原子数据服务集合;

(2)基于REST技术对原子数据服务进行封装;

高校各部门的数据集,包括结构化与非结构化数据,包括图片、视频和文件,都当作资源被封装成基于REST风格的服务,且REST风格服务的封装设计需要包含3个层面:①每一种资源通过唯一的URI来访问;②客户端通过HTTP协议的GET,POST,PUT,DELETE四个操作方式对服务器资源进行创建、读取、更新和删除操作;③服务器与客户端之间传递着资源的某种表述形式;

将各部门数据集封装成基于REST的原子数据服务,注册并统一管理,用唯一的URI进行统一访问;

(3)构建高校各部门的数据服务依赖图;

由于原子数据服务是通过封装数据集的属性得到的,因此原有属性间的数据依赖关系直接转换为数据服务之间的依赖关系,根据属性间的依赖得到数据服务之间的以下三种依赖关系:定义3顺序依赖:对于两个原子数据服务ADSi与ADSj,若ADSi的属性值确定,ADSj上的属性值也相应确定,即ADSi→ADSj,则称ADSi与ADSj之间为顺序依赖;

定义4合并依赖:对于原子数据服务ADS1、ADS2、…、ADSm以及ADSj,若{ADS1∪ADS2∪ADS3∪…∪ADSm}→ADSj,则称为合并依赖;

定义5并发依赖:对于原子数据服务ADSi以及ADS1、ADS2、…、ADSm,若ADSi→{ADS1∧ADS2∧ADS3∧…∧ADSm},则称为并发依赖;

根据数据服务的依赖关系,构建出高校各部门的数据服务依赖图,简称服务依赖图DSDG,定义如下:定义6服务依赖图,将原子数据服务间的依赖关系描述为一个扩展的有向图,表示为一个二元组DSDG=(D,E),其中D={ADS1,ADS2,…,ADSn}是原子数据服务集合;E={e1,e2,…em}是原子数据服务间依赖关系集合,ei=A→ADSj表示原子数据服务ADSj依赖于原子数据服务集合A,(4)根据用户数据需求将原子数据服务组合为复合数据服务;

(4.1)用户数据需求描述;

数据服务组合过程是在用户数据需求驱动下进行的,用数据需求DR表示用户所需要操作的数据对象,其定义如下:定义7数据需求,用户所需要的属性列表、约束条件以及执行的操作称为数据需求,表示为一个三元组DR=,其中Requires表示数据需求的属性列表;Conditions={|Field表示属性名,Value表示属性值>}表示数据需求的约束条件,如果值为Null,则表示没有约束条件;Operations={get,delete,update}表示需要执行的操作;

(4.2)基于数据服务依赖图生成复合数据服务;

将用户数据需求作为输入,在数据服务依赖图上自动搜索相关的原子数据服务,并将原子数据服务组合的结果称为复合数据服务CDS,其定义如下:定义8复合数据服务,由若干原子数据服务组成且可被独立访问的数据服务称为复合数据服务,它表示为一个八元组CDS=,其中Id是CDS的唯一标识;Name是CDS的名称;Sub-DSDG是DSDG的子图;Description是ADS的语义描述;Input是CDS的输入,有一个或多个;Output是CDS的输出,是一个关系;Operations是对ADS可执行的操作;Publisher是ADS的发布者;

基于数据服务依赖图组合生成复合数据服务的算法如下:

输入:数据服务依赖图DSDG,数据需求DR

输出:复合数据服务CDS

步骤c1:从原子数据服务库中检索出包含DR中Requires属性列表和Conditions属性列表的所有的ADS;

步骤c2:任选其中一个ADS作为初始访问结点v,做已访问标记,按照深度优先策略访问;

步骤c3:查找DSDG中v结点的第一个邻接结点w,判断结点w是否存在,若不存在,转步骤c5;若邻接结点w存在且未访问,访问结点w,做已访问标记;

步骤c4:判断v结点,w结点之间是否包含DR属性列表中所有的ADS,若包含,则把v结点和w结点之间单链条所有访问结点封装为一个CDS,结束算法;若不包含,确定w结点为新的初始访问结点v,转步骤c3;

步骤c5:确定v结点排在w结点后的下一个邻接结点为初始访问结点v,转步骤c3;

该算法会产生多个组合方案,将包括ADS数量最少以及包括的属性个数最少的通路作为最终输出,得到最优的数据服务组合结果,该结果即是需要的CDS,此外,该算法假设DSDG的所有节点是联通的,如果不是联通的,则分别对DSDG的所有子图循环使用该算法,并输出每个子图的CDS;

(5)执行复合数据服务自动生成数据组合视图;

复合数据服务CDS包含了与数据需求相关的原子数据服务及其依赖关系,其执行的结果称为数据组合视图,其定义如下:定义9数据组合视图,执行复合数据服务后生成的结果称为数据组合视图,其形式上是一张二维表格;

以查询操作为例,执行CDS生成数据组合视图的步骤如下:

步骤d1:分别执行CDS的所有ADS,并根据Conditions条件对ADS的执行结果进行筛选;

步骤d2:对具有服务依赖关系的ADS的结果执行连接操作;

步骤d3:根据DR中的Requires属性列表对连接的结果执行投影操作;

步骤d4:若存在多个CDS,则反复执行步骤d1和步骤d4,得到多个满足DR的数据子集;

步骤d5:对得到的多个数据子集执行并操作;

执行复合数据服务所涉及的操作包括选择、连接、并和投影。