CN100595764C - 利用连接表压缩数据图的方法和设备 - Google Patents
利用连接表压缩数据图的方法和设备 Download PDFInfo
- Publication number
- CN100595764C CN100595764C CN200810055809A CN200810055809A CN100595764C CN 100595764 C CN100595764 C CN 100595764C CN 200810055809 A CN200810055809 A CN 200810055809A CN 200810055809 A CN200810055809 A CN 200810055809A CN 100595764 C CN100595764 C CN 100595764C
- Authority
- CN
- China
- Prior art keywords
- node
- data
- key
- tuple
- external key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种利用连接表来压缩数据图的方法和设备。所述方法包括:识别连接表;生成非连接表元组对应的数据图节点;对于不属于连接表的外键生成对应数据图节点的边;以及根据所识别的连接表,将其所引用的两个主键节点连接在一起,在通过连接表所关联的每对元组所对应的两个数据图节点之间生成一条新边。通过利用本发明可以删除数据图中来自连接表的节点,合并相应的边,通过减少数据图的节点和边来减少数据图的存储空间,同时保证了数据图中的信息不丢失,即保证了在从数据库中检索数据的过程中,所得到的检索结果与数据图压缩之前所得到的检索结果相同,但是大大地缩短了检索时间并提高了检索效率。
Description
技术领域
本发明涉及一种利用连接表来对数据图进行压缩的方法及用于实现该方法的设备。
背景技术
数据图(Data Graph)是关系数据库支持关键词检索的一个重要数据模型。基于数据图,目前已经开发出许多关系数据库关键词搜索(Keyword Search OverRational Databases,KSORD)系统,这些基于数据图的KSORD系统,都是假设数据图可以完全装入内存中,实现基于内存的数据图搜索算法。但是,一方面,许多大规模数据库对应的数据图可能太大而不能被装入内存中,那些基于内存的数据图搜索算法可以处理的数据库规模也因此受到限制。另一方面,数据图越大,不但消耗的内存越多,基于该数据图的搜索算法查询效率也会越低,而且搜索过程中消耗的内存也越多。
关系数据库通常是用SQL或者RQI来访问的,而KSORD使得普通用户可以通过关键词查询方式来访问关系数据库,就像使用Web搜索引擎来检索Web信息一样。近年来,KSORD成为一个热点研究领域,许多技术人员提出各种各样的方法来实现KSORD,并且研制出相应的原型系统。下面将对KSORD技术进行进一步的阐述:
●KSORD属于数据库(Database)和信息检索(Information Retrieval,IR)的交叉研究,研究在关系数据库管理系统(Relational Database ManagementSystem,RDBMS)中实现IR的功能,如关键词查询、返回前k个结果的Top-k查询、相关性反馈、结果排序和结果分类等功能。
●KSORD使得普通用户使用简单的关键词查询就可以访问关系数据库,而不用知道或理解数据库模式。
●KSORD一般基于RDBMS的全文索引(Full-text Index)机制实现。RDBMS的全文检索采用SQL查询,需要指明查询表名、字段名等模式信息。
●KSORD返回的结果是单个元组(Tuple)或元组连接树(Join Tree of Tuples,JTT),可以把由于关系规范化而分散到多个表、多个元组中的信息重新组装成完整的信息呈现给用户。其中元组即为表中的记录;关系是指表。(本申请中提到的元组、关系等都指什么、它们与记录、表之间的关系请在此处加以说明。)
通过对现有技术中的SQL技术及关键词查询技术进行比较,可以发现SQL访问方式最难用、而关键词查询访问方式相对简单、灵活方便。关键词查询可以表达丰富的查询语义,如“Vagelis Hristidis VLDB Keyword Search”可以表达:
●Vagelis Hristidis在VLDB国际会议上发表的关于Keyword Search论文;
●Vagelis Hristidis关于Keyword Search方面的论文引用哪些VLDB论文;
●Vagelis Hristidis的VLDB论文引用哪些Keyword Search方面的论文;
●Vagelis Hristidis的论文引用哪些Keyword Search方面的VLDB论文。
同一个关键词查询可以表达丰富多彩的查询语义,这是关键词查询的优点,同时也是关键词查询的缺点,更是关键词查询的难点。这是因为关键词查询不能准确表达用户指定的查询语义,不像SQL和RQI访问方式可以明确指定查询语义。但是目前已经开发出了许多技术来弥补关键词查询这个缺点,使得用户可以快速准确地找到需要的信息,例如Top-k查询、相关性反馈、结果排序、结果分类和语义检索等技术。
对于SQL及ROI等查询方式,由于已经为本领域技术人员的熟知,此处不再赘述。
发明内容
基于上述问题,本发明中提出了一种利用连接表来压缩数据图的方法以及实现该方法的设备。
根据本发明的利用连接表来压缩数据图的方法,其特征在于包括以下步骤:识别连接表;生成非连接表元组对应的数据图节点;对于不属于连接表的外键生成对应数据图节点的边;根据所识别的连接表,将其所引用的两个主键节点连接(JOIN)在一起,从而在通过连接表所关联的每对元组所对应的两个数据图节点之间生成一条新边。
根据本发明的利用连接表来压缩数据图的设备,其特征在于包括:识别模块,用于识别连接表;节点生成模块,用于生成非连接表元组对应的数据图节点;边生成模块,对于不属于连接表的外键生成对应数据图节点的边;连接模块,用于根据所识别的连接表将其所引用的两个主键节点连接(JOIN)在一起,在通过连接表所关联的每对元组所对应的两个数据图节点之间生成一条新边。
通过采用本发明的压缩数据图的方法,可以实现删除数据图中来自连接表的节点,合并相应的边,通过减少数据图的节点和边来减少数据图的存储空间,同时也不丢失信息。本发明的压缩数据图的方法不但使得更大规模数据库对应的数据图可以存放在内存中,同时也能很大地提高现有的数据图搜索算法执行效率。
附图说明
图1是现有技术中的一种DBLP论文数据库的表及各个表之间关系的简要示意图;
图2是图1所示数据库的一个更具体的示例;
图3基于图2所示数据库来进行检索所产生的数据图;
图4是根据本发明的压缩数据图的方法的流程图;
图5显示了生成非连接表的元组对应的数据图节点的进一步的流程图;
图6显示了生成对应数据图节点的边的进一步的流程图;
图7显示了根据连接表而把两个主键节点连接在一起的进一步的流程衅;以及
图8是实施了根据本发明的压缩数据图的方法后所产生的数据图。
具体实施方式
现在参考附图具体地描述根据本发明的利用连接表来压缩数据图的方法及用于实现所述方法的设备。
图1中显示了一种DBLP论文数据库。从图中可以看出DBLP数据库有6个表,其中表101(YearConfs)中记录了国际会议每年召开的信息,在该表中,字段yid中记录了年份信息的编号、字段year中记录了会议召开的年份、字段whereheld中记录了会议举行地点、而字段cid中记录的则是相关国际会议信息的编号;表102(Papers)中记录了在所召开的国际会议上发表的论文信息,字段pid记录的是论文的编号、字段title为论文名称的、而字段yid中记录的则是相关年份信息的编号;表103(Cites)中记录了论文之间的引用关系,其中字段citing pid与字段cited pid是某篇论文引用另一篇论文的论文引用信息;表104(Confs)记录了国际会议信息,字段cid是国际会议邻长的编号,字段name是国际会议的名称;表105(Writes)中记录了作者与所写的论文之间的对应关系,其中字段aid是作者的编号、字段pid是论文的编号;表106(Authors)中记录了论文作者信息,其中aid字段记录的是作者的编号、name字段记录了作者的姓名。
在图1的各个表中,用于表示当前表的各个记录的编号的字段作为当前表的主键,例如在表101中字段yid为主键,在表102中字段pid作为主键,而在当前表中用于表示与其它表中的记录之间的引用关系的字段作为当前表的外键,例如在表101中cid是外键,在表102中yid是外键。对于一个表来说,可以既包含作为主键的字段,又包含作为外键的字段,例如表101、102、104、106都是这样的表。然而,也可以存在仅包含外键的表,例如表103和105就是仅包含两个外键的表,其中的字段citing pid、cited pid、aid、pid都是相应的表中的外键。图1中在各个表之间采用有向线来显示了“主键被外键引用”的关系,例如表Authors和表Writes之间的有向线表示Authors的主键aid被Writes的外键aid引用。
图2中显示了DBLP论文数据库的一个具体的示例。下面参考图2采用一个具体的例子来说明采用关键词来查询访问数据库所需要进行的操作。除了rowid字段外,图2中显示的表201-表206的各个字段的含义与图1中所示的各个表相同,此处不再重复。而字段rowid表示每条记录的唯一标识id并且该字段对用户来说是不可见的,其作用只是仅仅标示一条记录。
例如:查询Vagelis Hristidis在VLDB国际会议上发表的关于“KeywordSearch”方面的论文。在查询的过程中,用户只需要提交形如“Vagelis HristidisVLDB Keyword Search”的关键词查询。在默认的情况下,各个关键词之间是AND(逻辑与)的关系,也就是说每个查询关键词都必须在结果中出现。对于上述关键词,KSORD系统就自动检索出查询结果,即元组连接树(Joining Tree ofTuples,JTT):“a1→w7←p1←y4←c2”和“a1→w5←p6←y3←c2”。所述元组即为表中的记录。上述元组连接树中的有向箭头表示数据库中的元组之间的引用关系。所谓元组连接树就是KSORD技术自动发现关系数据库元组之间的主外键JOIN(连接)关系而生成的查询结果。
图3中显示了根据上述示例而产生的数据图的示意图。简单地说,数据图是一个由数据库生成的有向图,数据库中每个元组(也就是表中的每个记录)对应于数据图中的一个节点。对于一个特定的表来说,由主键所在的元组来生成的节点被称为主键节点。此外,由外键所在元组生成的节点称为外键节点。例如在图3中,对于表202来说,由于pid字段被用作主键,所以此时对应的rowidp1、p2……pn是主键节点;在表205中,aid和pid都是外键,因此,表205的rowid所生成的节点就是外键节点。在数据图中,一个节点可以同时作为主键节点和外键节点。表现在数据图中,就是根据主键与外键之间的引用关系来生成相应节点之间的有向边,其方向为主键节点指向外键节点。
数据图的节点对应数据库的元组,但是并不存储整个元组信息,所以在有限的内存中也可以存放一个中等规模数据库的数据图。数据图中只有主外键关系对应生成的边,因此,外键节点与主键节点之间的映射关系只有一种:n:1(即n个外键对应一个主键),即给定外键节点,根据其连接模式(或者外键)可以唯一确定主键节点。
以DBLP数据库为例。假设Papers有1百万条记录,Authors有20万条记录,进一步假设平均每篇文章有3个作者14个引用,则包括Writes和Cites记录在内,DBLP数据库将有1.8亿条记录。假设数据图每个节点占10个字节(每个节点存储表id、行id和边指针等信息),每条边占8个字节(每条边存储外键类型、表id和行id等信息),该DBLP数据库对应的数据图将占用6.7GB内存。我们可以想象更大规模数据库的数据图需要多少内存来存储。
基于上述问题本发明中提出了一种对数据图中的连接表进行压缩的方法。
当一个数据库具有s个表,其中每个表Ri中的外键为fi个,其中1≤i≤s时,并且|Ri|表示Ri中的元组个数,|V|和|E|分别表示数据图Gd的顶点数和边数,则在所生成的数据图中顶点数|V|应该是数据库中所有表的所有元组数之和,即而数据中的边数应该等于与每条记录有关的所有外键数目之和,即成立。
数据库内所有表中外键最多的表的外键fmax=max(f1,f2,...,fs),在大多数数据库模式中,fmax通常比较小,例如,它可能不超过4,这就是说,一个表通常有不超过4个外键。所以,对于数据图中的总边数|E|来说成立,|E|≤fmax×|V|成立。如果一个图的边数与节点数成线性关系,则该图为稀疏图。
在数据库模式中,如果表R只有两个外键并且R的主键由其外键组成以及R不被任何表引用,则表R称为连接表R只有两个外键并且R不被任何表引用保证了R只与两个表相关,R的主键由其外键构成并且R不被任何表引用保证了R只是一个实体联系表而不会是实体表。例如,图2中的表203和205就是这样的实体联系表。
DBLP论文数据库模式是一个典型的具有纯连接表的数据库模式,例如表203和205。通常,数据库模式具有的连接表一般是半连接表,具有纯连接表的数据库模式比较少。连接表一般具有如下特点:
(1)连接表具有大量元组,而每个元组占的存储空间比较少;
(2)连接表元组数增幅比其他表的元组增幅要大得多;
(3)频繁的查询关键词很少出现在连接表元组上,因为连接表主要起连接作用,没有文本属性,或者即使有文本属性也很少被查询使用。
通过数据图的结构可知,在数据图中并不存储真正的元组数据,主要存储元组rowid,所以影响数据图大小的是元组数量,而不是元组大小。连接表的上述三个特点说明连接表对数据图存储大小起着至关重要的作用,利用连接表可以有效地压缩数据图。
观察发现,许多数据库模式存在一些只具有两个外键的实体-联系表,我们称之为连接表(Connection Relation)。特别是这些连接表通常具有大量的元组,其对应生成的数据图节点像一座桥梁一样连接着两个由相应主键所在元组生成的主键节点。从数据图上可以直观地看出,可以把连接表元组所生成的数据图节点删除,从而是使其连接的两条边合并成一条边,通过这样的方式可以大大地简化数据图,使得大规模的数据图得以被压缩。
因此,本发明中提出了一种利用连接表来压缩数据图的方法CodCor(Compressing Data Graph by Connection Relation)。图4显示了根据本发明的利用连接表来压缩数据图的方法的数据流程。在步骤S401,识别连接表;在步骤S402生成非连接表元组对应的数据图节点;在步骤S403对于不属于连接表的外键生成对应数据图节点的边;在步骤S404根据所识别的连接表,将其所引用的两个主键节点连接(JOIN)在一起,从而在通过连接表所关联的每对元组所对应的两个数据图节点之间生成一条新边。这条新边的有向线方向可以任意地进行指定。
图4所示的流程可以采用以下的程序代码来实现,但是需要指出的是,以下基于SQL语言代码只是示意性地给出了一种实现的例子,但是本发明不应被限定于这一个固定的代码示例中,本领域技术人员所知的任何可实现本功能的程序代码均应包括在本发明之内。
算法CodGA:压缩数据图生成算法
上述计算机可执行代码中,GraphNode(a.tableid,t.rowid)函数是利用表id和行id创建该元组对应的数据图节点;而fRel(f)和pRel(f)分别获得外键f对应的引用关系名(或称外键关系名)和被引用关系名(主键关系名);fAttr(f)和pAttr(f)分别获得单个引用关系属性和单个被引用关系属性,但是外键f也可以是由多个属性构成的组合外键。
参考图5来描述步骤S402的进一步实现方法。在步骤S501中,找出所有的属于数据库模式S并且不属于集合的关系表,设为R1,则在步骤502中判断R1是否不为空,如果R1不空,则在步骤S503中从R1中取出一个元素,即表B;然后,进行到步骤S504,判断表B中是否有记录,如果有记录,则在步骤S505中从表B中取出一条记录;然后在步骤S506中利用表B的id和记录的rowid来创建节点n;最后在步骤S507中把所生成的节点n添到数据图中。
下面参考图6来进一步描述步骤S403的进一步实现流程。其中步骤S600,初始化集合G.ET为空集;然后在步骤S601,从数据库模式S中找到所有的外键关联,创建一个新集合G..FK,将找到的外键关联添加到这个集合中;在步骤S602,判断集合G.FK是否不为空;如果集合不为空,则进行到步骤S603,从集合中取出一个元素,即外键f;然后进行到步骤S604,判断f引用的外键关系表是否是一个连接表;如果判断为否,则在步骤S605并把f添加到G.ET中;如果在S602时判断结果为空,则转入到步骤S606,判断集合G.ET是否为不空;如果集合G.ET为空,则结束处理流程,否则如果该集合不空,则在步骤S607从该集合中取出一个元素,即外键关联f;然后在步骤S608,对于G.ET中的每一个外键关联f,创建一个新的数据库视图v,其中把f引用的主键关系表作为A,把f引用的外键关系表作为B,所创建的视图v包含了两个字段,分别是表A中的rowid和表B中的rowid,其中,A和B对应的主外键字段的值相等;然后在S609中判断视图是否不空,如果视图为空则结束处理,否则进入到步骤S610;在步骤S610中,取出视图v中的下一条记录t;在S611中定位此条记录t对应的数据图中的两个节点n1、n2,所述节点也就是与表A的rowid和表B的rowid相对应的节点;最后在步骤S612中创建一条边e,连接节点n1、n2。
参考图7对步骤S404进行进一步的描述。在步骤S404中把每个连接表及其引用的两个主键关系JOIN在一起,为主键关系中可以JOIN在一起的每对元组对应的两个数据图节点生成一条新边。
步骤S701,判断连接表集合是否不空;如果该集合不空,则在步骤S702,取中的下一个元素,也就是关系表设为R;在步骤S703,创建视图v2,其中把R中的外键f1引用的主键关系表作为A,把R中的外键f2引用的主键关系表作为B,其中A表中主键值等于R表中的外键f1的值,而B表中的主键值等于R表中的外键f2的值,此时视图v2中包含的两个字段就分别是表A中的rowid所构成的字段以及表B中的rowid所构成的字段;S704判断视图是否不空,如果视图为空则结束处理,否则进入到步骤S705;在步骤S705中,取出视图v中的下一条记录t;在S706中定位此条记录t对应的数据图中的两个节点n1、n2,所述节点也就是与表A的rowid和表B的rowid相对应的节点;最后在步骤S707中创建一条边e,连接节点n1、n2。此时,由于边e是通过压缩原数据图中的连接表而生成的,在原数据图中边e相连的两个节点n1、n2都是指向外键节点的,所以在新生成的图形中对于边e的方向采用双向,或者也可以采用任一方向。
实验表明,CodCor方法压缩数据图是非常有效的,不但数据图占用的存储空间大大减少,而且改进后的数据图搜索算法大大提高了执行效率。
压缩数据图的思想很简单,但是该算法实现并不是等生成数据图之后再压缩,而是直接生成压缩数据图。对于CodGA算法的四个步骤进行分析可以得出,如果第一步识别出来的连接表是空集,第二步就会为数据库中所有的元组生成数据图节点,第三步为所有外键生成对应数据图节点的边,而第四步不会被执行,这个算法也就退化为非压缩数据图的生成算法了。实验表明,有连接表的数据库压缩数据图生成效率比非压缩数据图生成效率要高。目前有大量的在线论文数据库提供论文检索服务,如中国期刊全文数据库、万方数据库、ACM数字图书馆等等,CodCor方法可以有效解决这一类数据库的数据图压缩问题。
composite(f1,f2)是把连接表的两个外键合并成一个新的边类型,即该连接表所表达的实体-联系。由于数据图是有向图,边一般是从主键元组对应的节点(简称主键节点)指向外键元组对应的节点(简称外键节点),那么composite(f1,f2)函数合并的新边类型的方向可以任意选定一个方向,也可以是采用无向的边(也就是双向)。从用户角度来说,压缩数据图和非压缩数据图语义上是等价的,只是压缩数据图中增加了n个主键对应m个外键映射的新类型的边,而不再是单纯1个主键对应n个外键的映射的类型的边。
如果数据图节点个数是n,数据图边数是e,那么根据本发明的压缩方法的时间复杂性n+e的函数,即O(n+e)。而由于数据图中e为n的线性关系,所以O(n+e)等价于O(n)。
下面采用三种方式来检验本发明的方法在进行数据图压缩后所得到的技术效果。这三种方式分别是:节点压缩率(Node Compression Rate)、边压缩率(Edge Compression Rate)和存储压缩率(Storage CompressionRate)。
假设数据库D对应的数据图为Gd(V,E)。|V|和|E|分别表示节点数和边数,每个节点占v字节存储空间,而每条边占e字节。则D中的元组总数也等于|V|。进一步假设D中连接表集合为并且具有个连接元组。Gd压缩后,记为Gcd。按照压缩算法CodGA,压缩数据图Gcd有个节点,条边。
根据前面所述的数据图稀疏性可知|E|=k×|V|其中,k通常比较小,反映数据图Gd的稀疏程度。k越小,Gd越稀疏。如果k等于零,则Gd没有边,只有一个个孤立的节点,Gd最稀疏。
由于数据图的邻接链表存储方法中,任意边随着其两个端点存储两次。因此,在其存储过程中,Gd的存储空间sizeof(Gd)=|V|×v+|E|×2e=|V|×(v+2ek),而Gcd的存储空间 由此可以得出数据图的存储压缩率(Storage Compression Rate)(γ)。其中γ可采用以下公式来计算:即在按照CodCor方法压缩数据图Gd生成Gcd时,减少的存储空间与Gd总的存储空间之比。
通过以上分析可知,α、β和γ的取值范围为[0,1),并且α和β越大,γ也越大,CodCor方法也会越有效。下面来对CodCor方法存储压缩率的理论上界进行验证。
数据图Gd(V,E)按照算法压缩后,其存储压缩率γ的理论上界如下所示:
因为数据图Gd为稀疏图,所以去掉其中的连接表所对应的节点和边,剩下的数据图G’d依然是符合数据图定义的,通过前面的分析可知G’d也是稀疏图。按照对连接表的描述,连接表中的每个元组对应的节点都有两条边,因此G’d有个节点,条边,所以公式|E|-2|R|=m×(|V|-|R|)也成立,其中m为正的较小实数。结合公式可知,|E|=k×|V|和节点压缩率可得出:k=2α+m×(1-α)。
根据存储压缩率的计算可知,当α等于0时,存储压缩率γ也等于0;当α大于0时,将上述得出的k代入存储压缩率的计算,可以得出:
根据上述计算方式可知,只有当α等于1时,达到最小值v,而达到最小值0,从而使得γ达到最大值:因为α取值范围为0到1。实际上,α可以趋近1,但不可能等于1,因为关系数据库不可能只有连接表的元组,而没有其引用关系的元组,即总是要小于|V|,所以α总是要小于1。因此也只可能是γ理论上能达到的最大值。
CodCor方法可删除数据图中来自连接表的节点,合并相应的边,通过减少数据图的节点和边来减少数据图的存储空间,同时保证了数据图中的信息不丢失,即保证了在从数据库中检索数据的过程中,所得到的检索结果与数据图压缩之前所得到的检索结果相同,但是大大地缩短了检索时间并提高了检索效率。同时,CodCor压缩策略与Web图通过减少节点和边存储空间的压缩策略不同。CodCor不但使得更大规模数据库对应的数据图可以存放在内存中,而且CodCor压缩后的数据图也不需要解压缩,已经存在的数据图搜索算法几乎不用修改,或者只需要少量修改就可以在压缩后的数据图上运行,同时数据图搜索算法执行效率也能得到很大提高,因为在一个更小的数据图上搜索更少的节点就可以得出查询结果了。例如,图2中所示的DBLP数据库,经过CodCor压缩后,只需要2.6GB内存就可以了,存储压缩率达到了61.2%,即压缩数据图一大半的存储空间。
假设数据图每个节点由表id(table id)、元组行id(rowid)和边指针(EdgePointer)组成,分别占2、4和4字节,则一个节点占10字节;而每条边由外键类型(Foreign Key Type)、表id和元组行id组成,分别占2、2和4字节,则一条边占8个字节,按照可以计算该数据图理论上可以压缩61.9%,即压缩掉数据图一大半的存储空间。而当采取其他类似Web图的方法尽可能压缩每个节点和边的存储空间,再结合CodCor压缩方法,数据图压缩效果会更好。我们还可以分析,当v和e减少,数据图存储压缩率的理论上界将有所减少,但是即使是节点存储空间v趋近0,边存储空间e也趋近0,根据可算出来,存储压缩率的理论上界也可以接近50%。
基于压缩数据图,现有的数据图搜索算法不用修改,或者经过比较少的修改就可以运行了,并且执行效率也能得到较大提高。原因有两方面,一是压缩数据图占用存储空间大大减少了,数据图搜索算法有更多可以利用的系统内存资源,就会提高算法执行效率;另一方面,更主要的原因是搜索算法可以通过匹配更少的数据图节点就可以得出查询结果了。例如,根据图2所示的DBLP数据库,假设“a3→w13←p3←q7←p8←q8←p1”是某个关键词查询的一个结果,则基于相应的压缩数据图(如),相应的查询结果为“a3→p3←p8←p1”,前者有7个节点,而后者只有4个节点,查询结果减小了,需要匹配的节点数也减少了,数据图执行效率当然也提高了。因为这个原因,数据图执行所消耗的内存也会有所减少。这些通过后续实验也可以得到验证。
下面对基于CodCor方法来进行压缩的数据图如何应用于现有的数据图搜索算法来进行讨论:
当连接表是纯连接表时,并且当压缩数据图的composite(f1,f2)函数组合的边类型是单向的,则不用修改数据图搜索的算法,就可以在压缩数据图上运行,但由于主键节点的入度或出度比未压缩的数据图中相应节点的入度或出度减少,所以打分函数对查询结果的打分发生变化了,同样的关键词查询采用同样的搜索算法在压缩数据图和未压缩数据图上会得出不同的Top-k查询结果;当压缩数据图的composite(f1,f2)函数组合的边类型是双向的,只需简单修改算法的节点和边权值计算方法,Top-k查询结果就会与在未压缩数据图上的结果一致。
当连接表是没有文本属性的半连接表时,数据图搜索算法修改情况与连接表是纯连接表的情况相同。
连接表是有文本属性的半连接表时,又分两种情况,一种是关键词查询生成的元组集不包含连接表元组集时,数据图搜索算法的修改情况与连接表是纯连接表的情况相同。另一种情况是关键词查询生成的元组集包含了连接表元组集,则数据图搜索算法的修改可以分为三步:首先,生成连接表与其两个引用关系的JOIN元组集,JOIN元组过滤条件是只需要连接表的文本属性包含查询关键词就可以了。然后,利用数据图搜索算法搜索来自连接表的节点,可以转换成通过第一步生成的JOIN元组集搜索其对应的两个主键节点操作。最后,得出最终查询结果时,隐含的连接表节点元组信息又可以通过其对应的两个主键节点从数据库中检索出来,和其他节点元组信息组装成一个完整的查询结果呈现给用户。
以上通过一些示例来对本文明的方法进行了详细描述,但是需要说明的是,本发明不限于以上所描述的特定示例,在不脱离权利要求所定义的范围下,本领域的普通技术人员可以进行任何的修改和改进。
Claims (6)
1.一种利用连接表来生成压缩数据图的方法,其特征在于包括以下步骤:
识别连接表,当数据库模式S中的表A包含且仅包含两个外键字段并且没有其他关系表引用表A时,表A是一个连接表;
生成非连接表元组对应的数据图节点,其中,非连接表中的每个元组对应于数据图中的一个节点,所述元组即为表中的记录;
对于不属于连接表的外键生成对应数据图节点的边,其中,为所述不属于连接表的外键f创建视图,对视图中的一个记录,定位所述记录所对应的数据图中的两个节点,所述两个节点为所述外键f引用的主键关系表的元组行id相对应的节点和外键f引用的外键关系表的元组行id相对应的节点,连接所述两个节点以生成一条边;以及
根据所识别的连接表,将其所引用的两个主键节点连接在一起,在通过连接表所关联的每对元组所对应的两个数据图节点之间生成一条新边,所述主键节点是指对于一个特定的表来说由主键所在的元组来生成的数据图节点。
4.如权利要求1所述的生成压缩数据图的方法,其中所述生成对应数据图节点的边的步骤进一步包括:
初始化集合GET为空集;
从数据库模式S中找到所有的外键,创建一个新集合GFK,将找到的外键添加到这个集合GFK中;
判断集合GFK是否不为空;如果集合GFK不为空,则从集合GFK中取出一个元素,即外键f;
判断外键f引用的外键关系表是否是一个连接表,如果判断为否,则把外键f添加到集合GET中;
如果集合GFK为空,判断集合GET是否为不空;
如果该集合GET不空,则从该集合GET中取出一个元素,即外键f;
对于G.ET中的每一个外键f,创建一个新的数据库视图v,其中把外键f引用的主键关系表作为A,把外键f引用的外键关系表作为B;
判断视图v是否为不空,若视图v不空则取出视图v中的下一条记录t,定位此条记录t所对应的数据图中的两个节点n1、n2,所述节点也就是与表A的元组行id和表B的元组行id相对应的节点;
创建一条边e,连接节点n1、n2。
6.一种实现权利要求1中所述方法的设备,其特征在于包括:
识别模块,用于识别连接表,当数据库模式S中的表A包含且仅包含两个外键字段并且没有其他关系表引用表A时,表A是一个连接表;
节点生成模块,用于生成非连接表元组对应的数据图节点,其中,非连接表中的每个元组对应于数据图中的一个节点,元组即为表中的记录;
边生成模块,对于不属于连接表的外键生成对应数据图节点的边,其中,为所述不属于连接表的外键f创建视图,对视图中的一个记录,定位所述记录所对应的数据图中的两个节点,所述两个节点为所述外键f引用的主键关系表的元组行id相对应的节点和外键f引用的外键关系表的元组行id相对应的节点,连接所述两个节点以生成一条边;
连接模块,用于根据所识别的连接表将其所引用的两个主键节点连接在一起,在通过连接表所关联的每对元组所对应的两个数据图节点之间生成一条新边,所述主键节点是指对于一个特定的表来说由主键所在的元组来生成的数据图节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810055809A CN100595764C (zh) | 2008-01-09 | 2008-01-09 | 利用连接表压缩数据图的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810055809A CN100595764C (zh) | 2008-01-09 | 2008-01-09 | 利用连接表压缩数据图的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101196933A CN101196933A (zh) | 2008-06-11 |
CN100595764C true CN100595764C (zh) | 2010-03-24 |
Family
ID=39547345
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810055809A Expired - Fee Related CN100595764C (zh) | 2008-01-09 | 2008-01-09 | 利用连接表压缩数据图的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100595764C (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663114B (zh) * | 2012-04-17 | 2013-09-11 | 中国人民大学 | 面向并发olap的数据库查询处理方法 |
US8959119B2 (en) * | 2012-08-27 | 2015-02-17 | International Business Machines Corporation | Context-based graph-relational intersect derived database |
CN103164514B (zh) * | 2013-02-25 | 2017-05-03 | 用友网络科技股份有限公司 | 数据引用关系检测装置和数据引用关系检测方法 |
WO2015027412A1 (zh) * | 2013-08-28 | 2015-03-05 | 华为技术有限公司 | 一种复杂图的处理方法和设备 |
CN106326249B (zh) * | 2015-06-23 | 2021-08-03 | 中兴通讯股份有限公司 | 数据整合处理方法及装置 |
CN111512303B (zh) | 2017-12-29 | 2023-10-27 | 电子技术公司 | 分层图形数据结构 |
CN108920367B (zh) * | 2018-06-28 | 2022-02-15 | 广东工业大学 | 一种数据结构可视化调试方法 |
CN109255055B (zh) * | 2018-08-06 | 2020-10-30 | 四川蜀天梦图数据科技有限公司 | 一种基于分组关联表的图数据存取方法和装置 |
CN110874465B (zh) * | 2018-08-31 | 2022-01-28 | 浙江大学 | 基于半监督学习算法的移动设备实体识别方法及装置 |
CN110532091B (zh) * | 2019-08-19 | 2022-02-22 | 中国人民解放军国防科技大学 | 基于图形处理器的图计算边向量负载平衡方法及装置 |
CN110719106B (zh) * | 2019-09-27 | 2021-08-31 | 华中科技大学 | 一种基于节点分类排序的社交网络图压缩方法及系统 |
CN111046002B (zh) * | 2019-12-06 | 2022-08-02 | 浪潮(北京)电子信息产业有限公司 | 图数据的数据压缩方法、解压缩方法、系统及相关装置 |
CN114528444B (zh) * | 2022-02-25 | 2023-02-03 | 北京百度网讯科技有限公司 | 图数据处理方法、装置、电子设备和存储介质 |
-
2008
- 2008-01-09 CN CN200810055809A patent/CN100595764C/zh not_active Expired - Fee Related
Non-Patent Citations (4)
Title |
---|
"BANKS:Browsing and Keyword Searching in RelationalDatabasees". B.Aditya等.Proceedings of the 28th VLDB Conference. 2002 |
"BANKS:Browsing and Keyword Searching in RelationalDatabasees". B.Aditya等.Proceedings of the 28th VLDB Conference. 2002 * |
"DETECTOR:基于关系数据库通用的在线关键词查询系统". 蔡宏艳等.计算机研究与发展. 2007 |
"DETECTOR:基于关系数据库通用的在线关键词查询系统". 蔡宏艳等.计算机研究与发展. 2007 * |
Also Published As
Publication number | Publication date |
---|---|
CN101196933A (zh) | 2008-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100595764C (zh) | 利用连接表压缩数据图的方法和设备 | |
CN102163218B (zh) | 基于图索引的图数据库关键词邻近搜索方法 | |
CN108369587B (zh) | 创建用于交换的表 | |
CN103646032B (zh) | 一种基于本体和受限自然语言处理的数据库查询方法 | |
US20160055233A1 (en) | Pre-join tags for entity-relationship modeling of databases | |
EP2843567B1 (en) | Computer-implemented method for improving query execution in relational databases normalized at level 4 and above | |
WO2009089190A2 (en) | Multiple dimensioned database architecture | |
CN105930388B (zh) | 一种基于函数依赖关系的olap分组聚集方法 | |
Suciu et al. | Foundations of probabilistic answers to queries | |
CN106326387A (zh) | 一种分布式数据存储架构及数据存储方法和数据查询方法 | |
US20060161525A1 (en) | Method and system for supporting structured aggregation operations on semi-structured data | |
CN103678589A (zh) | 一种基于等价类的数据库内核查询优化方法 | |
Astrova | Rules for mapping SQL relational databases to OWL ontologies | |
Zeng et al. | A semantic approach to keyword search over relational databases | |
Hafez et al. | The item-set tree: A data structure for data mining | |
KR100984976B1 (ko) | 이질적인 2차원 테이블의 데이터를 통합하여 검색하는 방법 | |
Srikanth et al. | Data Warehousing Concept Using ETL Process For SCD Type-1 | |
Zollmann | Nosql databases | |
Zeng et al. | Efficient xml keyword search: from graph model to tree model | |
Bin-Thalab et al. | TMIX: Temporal model for indexing XML documents | |
Qin et al. | Computing structural statistics by keywords in databases | |
Mahboubi et al. | Materialized view selection by query clustering in XML data warehouses | |
Zhang et al. | Exploiting Connection Relation to Compress Data Graph | |
Kantabutra | A New Type of Database Systems: Intentionally-Linked Entities-a Detailed Suggestion for a Direct Way to Implement the Entity-Relationship Data Model. | |
Ghige et al. | Relational keyword search system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100324 Termination date: 20160109 |
|
CF01 | Termination of patent right due to non-payment of annual fee |