用于优化针对垂直存储式数据库的查询的方法和设备技术

技术编号:2914011 阅读:282 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种用于优化针对垂直存储式数据库的查询的方法和设备。数据库中的条目被分成若干分区,每个分区具有表示所述分区中的条目的分区签名。该方法包括:将从用户接收的第一查询分解为多个第一子查询;按照与产生所述分区签名的方式相对应的方式,为每个第一子查询产生签名;通过将每个第一子查询的签名分别与所有分区的分区签名进行比较,获得与该第一子查询匹配的所有分区;基于所述匹配的分区,重写由第一子查询转换而来的第二子查询,以得到重写的第二子查询;以及组合针对所有第一子查询的重写的第二子查询来形成第二查询,以便利用该第二查询执行对所述数据库的查询。利用本发明专利技术,可以极大地提高数据库的查询效率。

【技术实现步骤摘要】

本专利技术总体涉及数据库管理领域,并且具体地,本专利技术涉及一种用于优化针对垂直存储式数据库的查询的方法和设备
技术介绍
已经提出了资源描述框架(RDF:Resources DescriptionFramework)作为一种用于描述元数据(信息)的语言,尤其是用于描述针对万维网页上的资源的元数据。通常,可使用统一资源描述符(URI:Universal Resource Identifier)来标识万维网页上的资源。随着语义网络技术的发展,W3C(万维网联盟)已经推荐将RDF作为一种用于在语义网络应用中的多种资源之间交换信息的标准。图1示出了RDF数据存储表的一个例子。如图1所示,在RDF数据存储结构中,RDF数据通常是三元组,包括主语、谓词(也称为属性)和宾语。例如,在图1所示的存储表中的第二行的三元组表示了这样一个事实,即“SXZ是一个教授”,其中“SXZ”是主语,“typeOf(是)”是谓词,以及“Professor(教授)”是宾语。在图1所示的存储表中的第五行的三元组表示了另一个事实,即“SXZ教课程1”,其中“SXZ”是主语,“Teach(教)”是谓词,以及“Course1(课程1)”是宾语。在当前的RDF中,主语和谓词的值都应该最终解析为统一资源描述符(URI),而宾语的值既可以是统一资源描述符又可以是文字(literal)值,例如数字或者字符串。这种RDF数据存储结构实质上是一种垂直式数据存储结构,即,每个条目只表示一个简单的事实,例如,条目“SXZ是一个教授”,以及条目“SXZ教课程1”。相反,传统的关系数据库是一种水平式数-->据存储结构,即每个条目表示主语的所有关系,例如,条目“SXZ是一个教授,并且教授课程1”。RDF三元组也可以被表示为一张图,其中主语可以被表示为图中的源节点,表示统一资源描述符的宾语可以被表示为图中的宿节点,以及谓词可以被表示为连接源节点和宿节点的有向连接。当然,主语可以与多个宾语相关联。例如,图1中的三元组可以被表示为如图2所示的有向图。关于RDF的完整描述,可参见Frank Manola和Eric Miller的“RDF primer.W3C recommendation,Feb 2004”,该文件可以通过网址www.w3.org/TR/rdf-primer/获得。在此引入该文件作为参考。无疑,RDF正在成为语义网络的里程碑。为了在企业的广泛异质数据源之上执行语义查询,需要将现有数据转换成为RDF三元组数据。同时,针对RDF三元组数据,已经开发了例如SPARQL的语义网络查询语言,用以描述用户的查询条件。关于SPARQL的详细描述,可参见E.Prud’hommeaux和A.Seaborne的“SPARQL querylanguage for RDF.W3C candidate recommendation,April 2006”,在此引入该文件作为参考。经过数十年,已经广泛接受了成熟的关系数据库(RDB:Relational Database)技术来管理各种应用数据。当前,存在两种常规方法来使用成熟的关系数据库技术管理RDF数据。一种方法是使用抽取-转换-装载(ETL:Extract-transform-load)方法将现有数据移植到特定的基于RDB的RDF三元组存储库中,其中用户可以查询和管理按照RDF三元组形式存储的数据。另一种方法是在传统的关系数据库上创建虚拟RDF视图,由此将RDF查询转换成为在传统系统中可执行的结构化查询语言(SQL:Structured Query Language)。本专利技术关注于第一种方式,即管理和优化在关系数据库上建立的RDF三元组存储库中的RDF数据。根据基于RDB的RDF三元组存储库的存储设计,可以进一步将三元组存储库划分成为3个类型:即:1)通用RDF三元组存储-->库,2)改进的RDF三元组存储库;3)水平/二元表存储库。对于通用RDF三元组存储库,直接以具有主语、谓词和宾语三个列的通用表存储三元组,其中创建多个组合索引来改进其查询性能。例如,Oracle 10gR2空间数据库和Jana2,两者都采用了典型的通用三元组存储。相对于通用三元组存储库,改进的三元组存储库可以管理更富于表达的RDFS(RDF Schema)/OWL(Web本体语言)及其相应的实例。类似于RDF,W3C建议RDFS和OWL支持本体表示。通过扩展RDF,RDFS提供定义域/范围的基本设施和类继承的能力。OWL允许定义更丰富的属性和关系,并相对于RDFS提供更多的约束。除了三元组表,改进的三元组存储还提供附加的方案(schema),例如“类/属性表”以及“someValueFrom/allValueFrom表”,来保持富于表达的RDFS/OWL本体,相应地,可将存储在三元组表中的实例移植到RDFS/OWL本体中。考虑这些附加表以进一步促进RDF数据上的本体的推理。改进的RDF三元组存储的特定例子包括:IBMWebify、IBM SOR以及MySQL上的Sesame。不同于上述这两类三元组存储库,水平/二元表存储库将RDF数据分成多个水平/二元表,其中谓词可以看作为表名,而每个列分别是三元组的主语和宾语。代表性例子是DLDB-OWL和PosteGre上的Sesame。水平/二元表存储库的方案总是与存储的本体模型一致。一旦本体变化,则方案必须相应地改变。这是代价昂贵的。因而,关于RDF存储库的多数研究兴趣已经转移到三元组存储库。本专利技术适合于通用三元组存储库和改进三元组存储库两者。当前,在三元组存储库上已经实现了许多优化以改进查询性能。例如,为了节省空间开销,大多数三元组存储库在内部给URI和文字值赋予唯一ID(唯一标识符),并且将其单独存储在一个映射表中,其中将从三元组表中进一步参考该映射表。为了提高在文字值上建立的索引有效性,某些三元组存储库将文字值映射表物理地划分成为具有不同数据类型的多个表。为了使查询范围变窄,某些三-->元组存储库区分关系谓词和数据类型谓词,并且在不同的表中保存它们。此外,利用在IBM DB2中支持的例如多维集群(MDC:Multi-Dimensional Clustering)表的某些特定数据库特征,某些三元组存储库根据它们的谓词将三元组本地化,这有助于对满足查询条件的三元组进行快速定位和高速缓存。尽管在三元组存储库中已经使用了许多优化,但是查询性能都不甚理想。为此,本领域特别需要一种能够提高针对垂直存储式数据库的查询性能的方案。
技术实现思路
本专利技术的目的在于提供一种用于优化针对垂直存储式数据库的查询的方法和设备,其可以针对垂直存储式数据库结构的查询进行优化,以实现更高的查询效率。根据本专利技术的一方面,提供一种用于优化针对垂直存储式数据库的查询的方法。所述数据库中的条目可以被分成若干分区,每个分区具有表示所述分区中的条目的分区签名。该方法可以包括:将从用户接收的第一查询分解为多个第一子查询;按照与产生所述分区签名的方式相对应的方式,为每个第一子查询产生签名;通过将每个第一子查询的签名分别与所有分区的分区签名进行比较,获得与该第一子查询匹配的所有分区;基于所述匹配的分区,重写由第一子查询转换而来的本文档来自技高网
...

【技术保护点】
一种用于优化针对垂直存储式数据库的查询的方法,其中所述数据库中的条目被分成若干分区,每个分区具有表示所述分区中的条目的分区签名,该方法包括: 将从用户接收的第一查询分解为多个第一子查询; 按照与产生所述分区签名的方式相对应的方式,为每个第一子查询产生签名; 通过将每个第一子查询的签名分别与所有分区的分区签名进行比较,获得与该第一子查询匹配的所有分区; 基于所述匹配的分区,重写由第一子查询转换而来的第二子查询,以得到重写的第二子查询;以及 组合针对所有第一子查询的重写的第二子查询来形成第二查询,以便利用该第二查询执行对所述数据库的查询。

【技术特征摘要】
1.一种用于优化针对垂直存储式数据库的查询的方法,其中所述数据库中的条目被分成若干分区,每个分区具有表示所述分区中的条目的分区签名,该方法包括:将从用户接收的第一查询分解为多个第一子查询;按照与产生所述分区签名的方式相对应的方式,为每个第一子查询产生签名;通过将每个第一子查询的签名分别与所有分区的分区签名进行比较,获得与该第一子查询匹配的所有分区;基于所述匹配的分区,重写由第一子查询转换而来的第二子查询,以得到重写的第二子查询;以及组合针对所有第一子查询的重写的第二子查询来形成第二查询,以便利用该第二查询执行对所述数据库的查询。2.根据权利要求1所述的方法,其中所述第一查询和第一子查询是SPARQL查询,以及第二子查询和第二查询是SQL查询。3.根据权利要求1所述的方法,其中所述数据库是RDF存储库,所述RDF存储库中的每个条目包含RDF三元组,该RDF存储库包含其值表示RDF三元组主语的主语列、其值表示RDF三元组谓词的谓词列以及其值表示RDF三元组宾语的宾语列,以及其中该RDF存储库还包含其值表示对应的RDF三元组所在分区的唯一标识符列。4.根据权利要求3所述的方法,其中所述RDF存储库中的所有条目被映射为一张表示所有RDF三元组的图,RDF三元组主语被表示为图中的源节点,RDF三元组宾语被表示为图中的宿节点,RDF三元组谓词被表示为从源节点到宿节点的有向连接,以及其中该图被分成若干子图,每个子图对应于一个分区。5.根据权利要求4所述的方法,其中子图内的连接是较密的,跨越子图之间的连接是较稀疏的,以及其中对于跨越子图之间的连接,在相关子图的每一个子图内制作该连接的副本,以使得分割后的子图能够反映所述RDF存储库中的所有数据关系。6.根据权利要求1所述的方法,其中所述分区的签名是通过利用哈希函数为分区中的每个条目生成签名并且对每个条目的签名进行“或”操作得到的。7.根据权利要求1所述的方法,所述分解步骤进一步包括:将所述第一查询映射为一个查询图,以及枚举所述查询图中的2可达子图,其中每个2可达子图对应于一个第一子查询。8.根据权利要求1所述的方法,通过与产生分区的签名相同的哈希函数来产生针对每个第一子查询的签名。9.根据权利要求6或8所述的方法,其中所述哈希函数为MD5哈希函数。10.根据权利要求9所述的方法,其中当在针对第一子查询产生的签名中为1的位置在分区的签名中也都被置1时,则该第一子查询与该分块相匹配。11.根据权利要求1所述的方法,其中如果在所述获得步骤没有得到与该子第一查询匹配的分区,则提前结束查询处理。12.根据权利要求1所述的方法,其中所述分区具有唯一标识符,以及所述重写步骤进一步包括:创建一个临时表,用于存储与该第一子查询相匹配的所有分区的唯一标识符,以及利用与存储有唯一标识符的该临时表相关的附加连接条件,来重写该第二子查询。13.根...

【专利技术属性】
技术研发人员:王晨闫莺马力潘越
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1