用于执行调和处理的方法、控制器、程序及数据存储系统的制作方法

文档序号:6504155阅读:183来源:国知局
用于执行调和处理的方法、控制器、程序及数据存储系统的制作方法
【专利摘要】一种用于执行在数据图中被表示为节点的资源的调和的方法、程序以及数据存储系统,该方法包括:选择图的节点的、待针对其执行与特定节点的调和处理的初始子集;执行该特定节点与节点的初始子集中的每个节点之间的调和处理;以及延迟该特定节点与图的节点的、待针对其执行与该特定节点的调和的另外子集之间的调和处理。
【专利说明】用于执行调和处理的方法、控制器、程序及数据存储系统
【技术领域】
[0001]本发明涉及数据存储和相关联的处理的领域。具体地,本发明的实施方式涉及数据集的图形表示中的资源的调和处理的执行。该调和处理意在对图中的在语义上对应的资源之间的异构性进行调和。
【背景技术】
[0002]大量的可用图数据为不仅能够显示统计趋势而且能够揭示隐含模式并提炼数据中的知识的自动化或半自动化分析创造了潜能。形式语义在自动化的计算密集型任务中发挥着重要作用。尽管关于如何最好地捕获语义存在长期的战役,但是仍广泛认为图形表示或类图形表示是模拟人类如何感知世界(如具有实体以及实体之间的关系的本体)的最佳工具。
[0003]图数据库因此提供了如下优点:自然地表示可以存储大量结构化和非结构化数据的基于“语义网络”的知识表示。
[0004]图数据库是如下一种数据表示:其采用节点和边(或弧)来表示实体以及采用节点之间的弧来表示这些实体之间的关系。图数据库被应用于各种不同的应用中,该各种不同的应用总体上可以被分组成两个主要种类。第一类包括具有概念描述的大集合的、复杂的基于知识的系统(被称为“基于知识的应用”),例如智能决策支持和自学习。第二类包括涉及对事务性数据执行图分析的应用(被称为“事务性数据应用”),例如社交数据和商业智倉泛。
[0005]格式化图数据库的核心处是资源描述框架,RDF, 一种提供数据的语义标记的简单的基于图的数据建模语言。使用RDF,数据孤岛可以开始被拼接在一起并且将当前群岛数据景观转换为被连接的数据图,基于该被连接的数据图,可以构造复杂的数据分析和商业智能应用。
[0006]数据集通常可能是高度异构性的且分布式的。这样的数据的分散性质导致通常众多数据资源使用不同的参考符号来表示同一真实世界对象的问题。朝向有效利用可用的图数据的必要且重要的步骤是:标识并调和多种参考符号,以用于语义一致性。下文中,术语“调和(reconciliation)”用于指示通过标识和定义在语义上彼此对应的资源之间的等价性链接来调和资源(如数据图中的节点,例如,如RDF三元组(triple)的主语或宾语)之间的异构性的过程。从而,“调和处理”是指为了实现调和而由处理器对算法和指令的执行。
[0007]数据调和的重要性是明显的。数据调和确保当异构的数据集被链接(导致数据的语义多样化)时的数据完整性。否则不能执行有意义的分析。同时,等价性允许应用能够彼此对准。应用之间的通信因而可以被自动化并委托给计算机。

【发明内容】

[0008]本发明的实施方式提供了一种用于执行在数据图中被表示为节点的资源的调和的方法,该方法包括:选择所述图的节点的、待针对其执行与特定节点的调和处理的初始子集;执行所述特定节点与节点的所述初始子集中的每个节点之间的调和处理;延迟所述特定节点与所述图的节点的、待针对其执行与所述特定节点的调和的另外子集之间的调和处理。
[0009]可以在创建图期间或创建图之后创建等价性链接。在现有的调和处理中,针对整个数据集来(在单个例程中)同时执行找寻等价性链接的处理。如果考虑大量数据(数十亿节点的规模),则这可能是效率低下的重要来源。调和是一种复杂、冗长以及耗时的过程,并且通常是昂贵的。调和算法通常执行相当耗时的计算密集型操作。这对真实复杂任务的实用性提出了挑战,并且对最佳地迎合数据需求以获得最大性能和可缩放性的计算结构的有效利用提出了挑战。可用的数据量正在逐渐增长,并且因此常常无法通过现有的方法和工具来管理待调和的可用数据量。为了能够调和大量数据,期望高度重视可缩放性问题。
[0010]图中的数据可以被称为“被连接的数据”、“图数据”、“被链接的数据”或“相关数据”以及所有意在将图的概念结构反映为由弧互连的多个节点的其它短语。在某些实施中,图中的数据可以是如在其被设置为“开放式的被链接的数据(L0D)”倡议的一部分的数据中那样的“被链接的数据”,但是本发明的实施方式并不限于这样的实施,而且术语“被链接的数据”可以被更广义地解释,而不是仅被解释为被设置作为LOD倡议的一部分的数据。
[0011]通过提供一种执行调和处理但调和处理不是必须全部在单个例程中执行的方法,能够实现可缩放性。也就是说,一些调和处理可以基于向图中添加新节点或添加具有作为主语的节点的新数据项(例如三元组)来执行,但是不必须执行与图中的节点的整个集合的调和处理,而是仅针对子集来执行。初始子集的大小不是必需随着图的大小增加而增加,因此初始调和处理所需要的处理不随着图的增长而变得不可行。
[0012]另外,通过降低在一个道次或一个例程中针对整个图来执行调和处理的需要,可以减轻由对新节点进行调和处理所引起的瓶颈。这从整体上改进了系统的特性,并且还使得系统操作者能够趋向于更加复杂并从而潜在地更加有效的调和算法,而无需担心对系统特性的不利影响。
[0013]资源的调和可以是如下过程:通过标识和产生在语义上彼此对应的资源(由图中的节点表示)之间的等价性链接来调和图中的资源之间的异构性。例如,在具有不同名称的两个资源指代同一个真实世界对象(即,这两个资源是在语义上等价的/在含义上等价的)的情况下,向图中添加链接以表示这两个资源是等价的将是适当的。资源调和可以包括:标识在资源(图节点是资源)之间何处存在等价性;以及向图中添加等价性的指示。多个资源的标识或同一真实世界实体的表示还被称为本体映射、本体匹配或本体对准。
[0014]资源可以是通过URI可去参考的网络资源,并且可以是正由图中的数据描述的实体的表示(描述)。特定实体可以由一个或多个资源来表示。
[0015]延迟调和处理可以包括:停止执行对资源之间的语义等价性进行标识的处理以及向图中添加链接以表示这些语义等价性的处理;然后,在恢复所述处理之前,等待预定触发事件组中的一个触发事件,或者等待由任务调度器响应于系统中的计算资源的状态(例如使用量/工作负荷)而作出的决定。
[0016]在本发明的实施方式中,选择初始子集可以包括:确定所述节点中的哪些节点在图遍历操作中具有最高被读取访问次数,并将这些节点作为被最多访问的节点包括在初始子集中。[0017]初始子集的大小可以由系统管理者控制,或者可以是预设的,并且可以例如是在图中的设定数量的节点或设定比例的节点。图遍历操作可以包括以特定方式访问/读取图节点,最终可以访问所有节点,其中这种访问方法会影响遍历算法的效率。有利地,通过在初始子集中选择被最多访问的节点,完成在特定节点与这些最可能被查询的节点之间的调和处理。因此,很可能是作为对图的查询的一部分而被读取的节点已执行了与图中的其它节点的调和处理。
[0018]此外,选择初始子集还可以包括:确定所述节点中的哪些节点具有最高被读取访问概率,作为在图遍历操作中所述被最多访问的节点之一之后的下一个节点。
[0019]有利地,在该特定方法中,还使用与被最多访问的节点的共现性(co-occurrence)作为选择初始子集的基础。这扩展了当查询时将会已与高比重的其它节点执行了调和处理的节点的范围,并且该扩展以赞同对节点进行读取访问的机制的方式来被引导。通过使用共现性关联原则来标识在图遍历操作中的被最多访问的节点之一之后的最可能被访问的这些节点,针对被最多访问的节点执行的调和处理还可以针对作为初始子集的一部分的已标识的节点来执行(传播)。
[0020]在替代的实施中,可以将作为在图遍历操作中的被最多访问的节点之一之后的下一个节点的具有最高被读取访问概率的节点标识为针对其延迟调和处理的另外子集。例如,另外的子集每个可以与作为在图遍历操作中的被最多访问的节点之一之后的下一个节点的被读取访问节点的概率范围相关联,所述节点可以取决于所述概率被分配给另外的子集。
[0021]在已确定在一个或另一个时间每个节点必须具有在自身与每个其它节点之间执行的调和处理的实施中,节点的另外子集是在图中的不属于初始子集的成员的所有节点。然而,节点的所述另外子集可以不必一定全部在单个例程中在其自身与特定节点之间执行了调和,而是所述另外子集可以被分成其它的另外子集,在针对每个其它的另外子集的调和处理之间存在延迟。
[0022]期望的是在每个节点与其它节点中的每一个之间执行调和处理,这是因为其允许利用或分析图中的数据的若干个应用彼此对准并且有利于所述应用之间的通信。例如,数据采集机可以遵循由调和处理产生的等价性链接以通过潜在的无穷的网络数据来导航。
[0023]可选地,节点的另外子集的调和处理可以被延迟并且在当计算资源的监视表明计算资源不然将空闲时的时隙内被执行。
[0024]可以仅在系统空闲时间执行调和处理。可选地,可以在由图中的事件确定的时间(例如在向图插入新数据项(例如RDF三元组)时)来执行特定节点与初始子集的调和处理,并且另外的子集与特定节点之间的调和处理被延迟至直到系统空闲时间。在此使用的系统空闲时间被用作如下操作状态的范围的方便表示:在所述操作状态下,有能力处理由调和处理在负责所述调和处理的资源处所施加的额外的处理负担。例如,当在处理器中没有其它未决任务时,可以由处理器执行另外子集的调和处理。这样的决定可以由集中式工作负荷调度器(具有调和处理控制模块的功能)来作出,或由处理器本身在本地作出。也就是说,可以取决于负责执行所述处理的计算资源的操作状态,来作出何时执行特定节点与另外子集的节点之间的调和处理的决定。
[0025]实施本发明的方法还可以包括:将特定节点的标识添加到列表;在列表中保持特定节点的标识直到已执行了与图的节点的另外子集的处理为止,此时,将特定节点的标识从列表中去除;并且当接收到标识一个或多个待被读取的节点的对图的查询时,检查所述一个或多个待被读取的节点中的哪些节点被标识在列表上,并且,针对所述一个或多个待被读取的节点中的被标识在列表上的每个节点,执行与图的每个节点的调和处理。
[0026]这样的列表可以由具有调和控制器(例如调和处理控制模块)或系统控制器的功能的实体来集中保持。替代地,所述列表可以在分布式结构内实现,通过分布式系统中的多于一个的节点彼此配合工作来实现。在一些实施中,期望的是,针对特定节点的调和处理在其作为对查询的响应的一部分被返回之前或在作为对查询的响应的一部分被读取之前完成。有利地,保持仍未被执行完整调和处理(即与图中的每个其它节点的调和处理)的这些节点的列表使得需要在返回对查询的响应之前被执行的调和处理能够被容易地标识。节点的在列表上的标识可以是例如名称或URI。特定节点的标识可以保持在列表上,直到与节点的另外子集中的调和处理已开始或完成(取决于实施)为止。
[0027]另外地或替代地,针对图中的不包括在与其执行调和处理的初始子集中的每个节点,实施本发明的方法可以包括:将特定节点的标识以关联元数据的形式添加到未被调和的节点的列表中,并在所述列表中保持所述标识直到执行了与特定节点的调和处理为止,此时,将特定节点的标识从所述列表中去除;当接收到标识一个或多个待被读取的节点的对图的查询时,针对每个待被读取的节点,执行所述节点与以关联元数据的形式标识在未被调和的节点列表中的每个节点之间的调和处理。
[0028]存在如下实施:其中每个节点均具有关联元数据,该关联元数据可以被存储在节点处或可以被存储在从所述节点所链接至的位置或能够基于节点的标识定位到的位置。每个节点具有其自身的单独的关联元数据。所述元数据可以包括已与节点的初始子集进行了调和(与初始子集的节点执行了调和处理)但仍未与所讨论的节点进行调和的节点的列表。有利地,这使得能够将与另外子集的节点的调和处理控制成基于在节点处可用的信息或可从节点直接得到的信息而局部执行。
[0029]尽管在本发明的实施方式中并非必要,但实施可以包括其中图被存储在计算资源的分布式网络中的系统。该计算资源的分布式网络(存储节点)可以包括由相互通信的多于一个的不同存储单元构成的系统。示例性通信范例是对等(P2P)网络,因此计算资源的分布式网络可以是存储节点的对等网络。P2P是在对等体之间划分任务或工作负荷的分布式结构。对等体(个体存储节点或处理)是在应用中具有同样权限的对等参与者。每个对等体被配置成使得自身的资源的一部分(例如处理能力、磁盘存储器或网络带宽)能够被其它网络参与者直接获得,而不需要由服务器或固定主机进行集中协作。与其中服务器进行提供而客户端进行消费的传统的客户端-服务器模型不同,对等体既可以被视为资源的供应者又可以被视为资源的消费者。有利地,P2P系统可以以对数通信成本来保持交换消息的大的存储节点组。
[0030]关于执行两个节点之间的调和的实际处理,在本发明的实施方式中,特定节点与另外的节点的调和处理可以包括:通过对由执行多个不同的相似度计算产生的值进行合计来获得相似度值,或者获得由执行相似度计算产生的单个值,其中,相似度计算是生成表示特定节点与另一个节点在语义上等价的似然度的值;如果相似度值超过预定的相似度阈值,则向图添加表示特定节点与另一个节点之间的等价性关系的等价性链接。[0031]有利地,本发明的实施方式降低了对一次性或在单个例程中针对特定节点执行所有调和处理的需要。借助于在本发明的实施方式中采用的进行调和处理的递增法的增加的灵活性,在调和处理时可以采用更加健壮的算法或算法组而不会对整体系统性能造成不利影响。为此,本发明的实施方式可以运行每个算法给出相似度值的多个算法,或运行给出相似度值的单个健壮的算法,并且对所述值进行合计以获得用于与阈值进行比较的整体相似度值。可以是如下情况:关于两个节点是否语义等价,每个算法(或相似度计算)给出是/否(1/0),阈值是在执行相似度计算的总数中“是”结果所需占的比例。替代地,可以使用许多相似度计算的加权平均来获得相似度值。
[0032]取决于实施本发明的实施方式的方式,可以在计算资源的分布式网络中的多于一个的计算资源上同时执行特定节点与存储在该计算资源上的如下节点之间的调和处理:所述节点属于正针对其执行与所述特定节点的调和处理的节点子集。
[0033]分布式存储系统(例如被采用以存储数据图的分布式存储系统)根据其性质对数据进行分段。有利地,本发明的实施方式可以通过针对特定节点执行并行调和来利用该分段,所述并行调和是通过在特定节点与存储在该计算资源上的图节点之间、在用于存储节点的每个计算资源处执行调和处理来执行的。可以对数据执行一些正交分段,以使得:每个计算资源在一个例程中不执行特定节点与存储在该计算资源中的每个节点之间的调和处理,而是例如基于在图遍历操作中节点被访问的频繁度来将节点分裂。所述正交分段提供了在并行处理实施中的进一步的灵活性。可以集中执行特定节点与初始子集之间的调和处理,然后执行特定节点与另外子集之间的调和处理,并且还可以进行局部调度。
[0034]本发明的实施方式可以通过存储以每个节点为基础作为元数据存储的某些统计数据/值/属性/参数/测量结果来增强或提供其功能性。本发明的实施方式可以包括:针对每个节点,作为关联元数据,存储表示所述节点在图遍历操作中被进行读取访问的次数的值以及表示在所述图中与所述节点链接的每个节点在图遍历操作中作为下一个节点被读取的次数的值。
[0035]在本发明的实施方式中,通过节点和边的图来表示知识、事实和/或陈述,其中节点是所描述或表示的实体,边是这些实体之间的关系。本发明的实施方式可以被配置成将图数据直接存储为节点和边。然而,还可以采用一些其它基础数据结构。
[0036]作为示例性基础数据存储结构,图中的数据可以被编码为每个包括主语、谓语和宾语的三元组,并且图中的节点是三元组的主语和宾语,三元组的谓语表示三元组的主语与宾语之间的链接。
[0037]可选地,三元组可以是资源描述框架(RDF)三元组。贯穿本说明书,应当理解:在对“RDF三元组”进行具体引用的地方,RDF三元组是符合RDF标准的三元组的示例性形式。另外,对“三元组”的引用包括所提及的三元组可能是RDF三元组。相似地,在本说明书的其它地方讨论的RDF处理器是用于在API封装与存储的数据项之间的交互的处理器的示例。
[0038]资源描述框架是一种用于对作为用于语义网络的标准的信息进行概念描述或建模的通用方法。对语义网络的信息的建模进行标准化允许对共同语义网络上进行操作的应用之间的互操作性。通过将RDF Schema (RDFS)提供为用于描述RDF中词汇表的语言,RDF保持具有明确的形式语义的词汇表。
[0039]可选地,三元组中的一个或多个元素(元素是谓语、宾语或主语)中的每个是统一资源标识符(URI)。RDF和其它三元组格式以以下设想为前提:使用网络标识符例如URI来标识事物(即对象、资源或实例)以及使用简单的属性和属性值来描述所标识的“事物”。就所述三元组而言,在其网络资源具体体现中,主语可以是对描述实体的网络资源进行标识的URI,谓语可以是标识属性(例如颜色)的类型的URI,宾语可以是指定归属于所讨论的实体的属性类型的特定实例的URI。使用URI使得三元组能够将简单的陈述、涉及的资源表示为图中的节点和弧,所述节点和弧表示资源以及其相应的属性和值。可以使用SPARQL协议和RDF查询语言(SPARQL)来查询RDF图。由万维网联盟的RDF数据访问工作小组(DAWG)标准化SPARQL,SPARQL被认为是关键的语义网络技术。SPARQL允许查询包括三元组模式、逻辑乘法、逻辑加法以及可选模式。
[0040]三元组通过将图数据表征为多个主语-谓语-宾语的表达来提供对图数据的编码。在上下文中,主语和宾语是图数据的图节点,例如是实体、对象、实例或概念,谓语是对主语和宾语之间的关系的表示。谓语通过提供至宾语的规定类型的链接来声明关于主语的某事。例如,主语可以表示万维网资源(例如通过URI),谓语表示资源的特定特征、特性或方面,宾语表示所述特征、特性或方面的实例。换言之,三元组陈述的集合从本质上表示有向图的数据。RDF标准提供用于这样的三元组的格式化结构。
[0041]当向图中输入了新三元组时,发起节点与节点的初始子集之间的调和处理。另外,调和处理可以是有条件的,其取决于新三元组的主语本身是新的(在这种情况下,针对所述“特定节点”,发起调和处理)或不是新的(在这种情况下,确定不需要调和处理)。
[0042]本发明的特定方面的实施方式提供了一种用于执行在图数据中被表示为节点的资源的调和的数据库控制器;该数据库控制器包括:选择模块,其被配置成选择图的节点的、待针对其执行与特定节点的调和处理的初始子集;调和处理模块,其被配置成执行特定节点与节点的初始子集中的每个节点之间的调和处理;以及调和处理控制模块,其被配置成延迟图的节点的、待针对其执行与特定节点的调和的另外子集的调和处理。
[0043]数据库控制器可以被实现为在单个计算资源上的集中控制器,被实现为由许多计算资源配合的集中控制器,或者被实现为其中每个处于分布式存储系统中的相应计算资源上的多个等价控制器中的控制器。例如,可以是:由在存储系统中的计算资源上运行的程序来提供数据库控制器;以及一个或多个其它计算资源还运行等价程序以使得可以通过多个数据库控制器来访问数据库。
[0044]本发明的另一方面的实施方式提供了 一种用于存储数据图的数据存储系统,在数据图中,资源被表示为数据图的节点,该数据存储系统包括:多个存储单元,所述多个存储单元每个都被配置成存储来自数据图的数据段;以及作为本发明的实施方式如上所述和/或其它地方所述的数据库控制器。当然,数据存储单元是计算资源的示例,其可以具有除了存储之外的处理功能和控制/管理功能。
[0045]存储单元可以每个均是计算资源,例如,除了包括处理器、存储器和/或附加部件(例如网络接口卡、主板、输入/输出装置)之外,计算资源可以每个均包括存储单元。
[0046]本发明的又一方面的实施方式提供了一种计算机程序,该计算机程序当被计算机执行时使得计算机执行实施本发明的方法。另外,本发明的又一方面的实施方式包括如下一种计算机程序,该计算机程序当被一个或多个计算机执行时使得所述一个或多个计算机担当用于实施本发明的数据库控制器。可以将实施本发明的计算机程序存储在计算机可读存储介质上,例如非暂时性存储介质,并且所述计算机程序还可以被设置为单个计算机程序或设置为一套子程序。
[0047]本发明的实施方式实现了一种执行调和处理的方法,其具有以下有益效果中的一项或更多项:降低了调和的计算工作负荷;将处理分成较小的块以使得能够更好地调度调和任务;利用分布式数据存储以使得能够正交分段数据从而改善并行性能以及改进可缩放性;使得能够在分散的计算机资源上同时执行若干个相似度测量;由概率模型进行引导以执行调和。
【专利附图】

【附图说明】
[0048]现在,将参照附图,仅作为示例来描述本发明的优选特征,在附图中:
[0049]图1是对实施本发明的数据存储系统中的服务器上所部署的软件的示意性说明;
[0050]图2示出了本发明的实施方式的系统结构,其中控制功能中的某些控制功能被集中化;
[0051]图3是示出了在本发明的实施方式中向基础数据存储区中添加新三元组所执行的处理的流程图;
[0052]图4是示出了在本发明的实施方式中对扩展图进行更新并执行调和处理所执行的处理的流程图;
[0053]图5是示出了在本发明的实施方式中用于执行调和处理的示例性过程的流程图;
[0054]图6是示出了在本发明的实施方式中用于接收并处理查询的示例性过程的流程图;
[0055]图7是示出了在本发明的实施方式中用于对节点执行穷举调和的示例性过程的流程图;
[0056]图8是示出了在本发明的实施方式中用于执行“按节点(on-node)”调和处理的示例性过程的流程图;
[0057]图9是对调和处理的并行化的概念性说明;以及
[0058]图10是对通过数据的物理分配和利用被存储为元数据的值进行数据分段的概念性说明。
【具体实施方式】
[0059]图1示出了在每个服务器10上部署的软件的结构。在该特定示例中,存储系统由通过消息传递系统进行通信的服务器组构成。在图1所示的示例中,服务器实施多层模型,其中每层利用并使用下面层的容量。所述结构包括:从最顶端起,语义层11、RDF层12、三元组适配器层14、KVS层15以及通信层16,其中故障检测器13位于三元组适配器层14和KVS层15的侧面。当然,如在下面的描述中将会更加清楚的,本文中讨论的实施方式使用RDF三元组作为用于存储数据图的基础数据结构。这绝不是本发明的实施方式中仅有的可以使用的基础数据结构,而是在此被选中是为了呈现本发明的实施方式的示例性实施。此夕卜,采用KVS (键值存储)格式,其中将RDF三元组本身用作访问关联值存储区中的另外数据(包括元数据)的键。再次,选择KVS格式是为了呈现本发明实施方式的示例性实施,对于本领域的技术人员明显的是本发明的实施方式并不限于这种特定格式。[0060]以下段落描述每个层的作用以及它们的交互。
[0061]I)语义层:语义层11是到与终端用户交互的客户端应用的接口,并被配置成向RDF处理器中继用户的查询。在该层中,数据不被视作各个RDF三元组而是处于概念级别或者甚至模型级别(作为相关RDF三元组的组)。在该层执行语义处理操作,例如数据调和处理和属性遍历。当需要深度语义分析时,还可以进行更加复杂的本体分析,例如基于规则的推理和基于描述逻辑的推理。在示例性实施中,可以通过Jena和0WL2RL/RDF实现高水平的推理。然而,语义层11并不限制于特定的实施,并且允许其它推理引擎容易地插入。语义层11提供了在该说明书的其它地方提及的选择模块、调和处理模块以及调和处理控制模块的控制功能。
[0062]2)RDF层:RDF层12桥接基础数据层和语义层。这可以通过API例如Jena GraphAPI来实现。
[0063]RDF层12被配置成使用直接对三元组进行作用的方法,例如添加/去除三元组以及使用RDF SPARQL查询来检索三元组。此外,在RDF层12存在SPARQL引擎,其负责将基于文本的查询转换为一组操作。这些操作包括低水平搜索操作以及过滤和加入机制。这些功能中的一些被实施在该层的SPARQL引擎内,而低水平数据搜索便于由基础三元组适配器层14进行。
[0064]3)三元组适配器层:三元组适配器层14负责将三元组转换为在KVS层15中存储的键。该键应当是唯一的,还可以与其它键相比较以加强关于键的顺序(其中每个键高于、低于或等于从三元组生成的任何其它键)。三元组适配器层14向上层提供三个简单操作:添加新三元组、去除现有的三元组以及根据特定标准寻找一组三元组。该寻找操作是RDF特定的,其接收三个参数,该三个参数可以是特定值或空值。例如,求得(主语;空值;空值)返回具有特定(限定)主语的所有三元组。该层使用基础KVS接口来存储、去除和查询数据。
[0065]4)KVS层:KVS层15实现分布式的、有序的键值存储。KVS层15提供了规则有序的哈希映射接口,以添加键值对,获得或去除键值(给定的某个键),以及另外地在有序的KVS上执行范围查询。范围查询方法接收前缀最小键以及前缀最大键,并且返回包含在给定范围内的所有键值对的迭代值。该层负责对来自其它服务器的数据的分配和检索。该层使用基础通信层16通过传递消息来与其它服务器进行通信。
[0066]5)故障检测器:故障检测器13负责看门狗的执行,所述看门狗将会检测服务器故障并且向存储层通知依然存在的(未发生故障的)服务器。该层还使用通信层16在其它服务器之间交换消息并产生一组活动的处理,其还被称为系统的视图。当该视图变化时,通知KVS层15以使得它例如可以触发从故障恢复。在本发明的实施方式的上下文中,故障检测器13完全是可选的,并且提供扩展本发明的实施方式的功能性的功能。
[0067]6)通信层:通信层16是一种通过其在服务器(例如在本说明书的其它地方提及的存储单元或计算装置)之间传递消息的机构。例如,通信层16可以被配置成输出基元以向其它服务器发送消息以及接收来自其它服务器的消息。本领域的技术人员将理解:许多替代性实施可以用于该目的。
[0068]图2示出了替代性结构,其中客户端应用30通过集中式RDF处理器22与单个集中式接触点进行通信。RDF处理器22具有RDF层12的功能,但在图2的示例中,它以集中式水平实施而不是以局部水平实施。调和处理器21 (其组合了在本说明书的其它地方提及的选择模块、调和处理模块以及调和处理控制模块的功能)在图2的示例中也在集中式水平上实施。调和处理器21被配置成对存储在多个数据存储单元23中的图进行控制并执行调和处理。所述多个数据存储单元23被至少配置成存储数据图的一部分。此外,数据存储单元23可以被配置成执行上述三元组适配器层14、KVS层15、通信层16以及故障检测器13中的一个或多个的功能。图1和图2示出了:取决于实施所述实施方式的系统的需求,可以在局部水平或集中式的水平上执行本发明实施方式的各种功能。
[0069]在图1的示例性实施方式中,采用KVS作为向外缩放RDF数据存储(即数据图的存储)的方法(同样适用于图2)。然而,RDF三元组本身不是KVS准备好的。第一步骤是定义标准KVS可以方便利用的键值元组。下面,陈述用于数据的分布式存储(图)的示例性格式化数据结构。
[0070]定义1:RDF三元组。RDF三元组t,s,p,O (表示为SP0)限定了主语(S)与宾语(O)之间的关系。该关系指使用谓语(P)。主语(S)与宾语(O) 二者均是图中的节点,而谓语是弧。
[0071]三元组是RDF中的基本数据结构。如此,三元组是在本发明的实施方式中用于存储图数据库(其可以被视作图的存储形式)的示例性基础数据结构。然而,本发明还可以被实施至或应用于采用除了 RDF三元组以外的基础数据结构的实施方式中。三元组的宾语反过来可以是其它三元组的主语或具体数据类型(例如字符串、整数等)的主语。图是RDF三元组的自然呈现。RDF图是有向的、加标记的图。图的顶点(节点)是三元组的主语或宾语,而边是谓语。在RDF图中,节点和边两者也均被称为RDF资源。
[0072]定义2:RDF图。令T为一组RDF三元组。T的图形表示是G =〈V,E>,其中
V = (v I 3? G r.(v e subject{t) kj O^Zea1(Z))丨且E = {(vs, v0) | (s, p, o) G T} J被定义为作为 RDF
三元组的主语或宾语的一组节点(或顶点),而E是通常规定为一对节点〈V” v2>, V1, v2 G V的节点之间的一组边(或弧)。
[0073]—般而言,KVS是允许存储无模式数据的非关系数据模型。KVS的关键益处是简单性和可缩放性。在KVS中的数据项是键值元组<k,V〉,其中,k是唯一标识符,V是k所标识的有效载荷。
[0074]定义3:三元组化K/V (键值)元组。给定三元组t,三元组KN元组是{〈kt,metadata> I kt G {〈s, p, o>} U {<p, o, s>} U {〈o, s, p>}},其中元数据将三元组元数据存储为键值元组的值。
[0075]作为用于本发明的实施方式的基础数据格式的存储的三元组的示例,通过生成语义相同但语法不同的形式是〈P, O,s> (表示为P0S)与〈O, S,P〉(表示为0SP)的两个变量来复制每个SPO形式的三元组。这考虑了查询性能和故障恢复,并且为了提供用于存储在本发明的特定实施方式中利用的各种形式的元数据的机制。
[0076]通过范围查询来正常完成查询RDF数据,使用通配符来代替在三元组中的元素。例如SELECT〈?,?,?>检索在数据存储区中的所有三元组,而SELECT〈?,?,o>返回使用o作为宾语的所有三元组。复制三元组允许根据不仅主语而且根据谓语和宾语来对数据进行排序。这增强了查询执行。
[0077]三元组被存储在分布式的KVS中,在该具体实施中,每个三元组及其变量作为键,而相关元数据作为值。这样的方法有利于灵活的元数据建模和管理。如在本说明书中之前提及的,可以使用任何其它基于图的存储装置,以如下方式实施本发明的优选实施方式:通过基于图的存储装置来存储以及访问元数据。在本发明的实施方式中,可以如以下解释的那样使用元数据来记录节点访问频繁度和节点对的共现性。反过来,使用元数据来选择将哪些图节点包括在节点的初始子集中,以及哪些图节点具有特定节点被延迟的调和处理。
[0078]形式是SPO的原三元组以及形式是POS和OSP的复制三元组的组被排序并分成n段,其中n是用于存储数据的服务器(或存储单元)的数量,其中每个服务器负责一个数据段。可以使用哈希函数将数据段映射至服务器。
[0079]为了有效地定位特定三元组或其变量之一被置于的段,可以使用Trie (具有受限于待索引的字符串的大小的搜索复杂度的排序树),其中Trie的每个叶子对应于数据段。例如,可以实施从数据项到服务器的两级映射。使用Trie来对所有现有的三元组进行组织和排序,其中整个三元组集合按字母顺序排列。然后,通过跟随与Trie中的每个节点关联的前缀来完成寻找正确的数据段。在检索段ID之后,将一致哈希用作工具,将段映射至服务器机器。将所述两个映射级联在一起,能够找到每个三元组的目的地存储机器的函数(Y ):通过实施 Y =consistent-hashing (trie-search (t)) , Y:t — IDmachine0 该函数使用Trie结构将数据项映射为段ID,并且然后使用一致哈希将段ID映射为机器ID。如以下段落中将要描述的,使用所述方法来存储所有的三元组版本。
[0080]添加三元组包括以下步骤:在有序的数据空间中定位数据段;以及将键值元组插入至相应的机器(使用¥()映射)。以下在算法I中详细描述用于三元组插入的示例性算法。
[0081]算法1:addTriple (t)
[0082]需要:Y0
[0083]In1 ^ y (t.SP0),m2 — Y (t.P0S),m3 — Y (t.0SP)
[0084]以 Hi1,存储(<t.SPO, metadata〉,In1, m2, m3)
[0085]以 m2,存储(<t.POS, metadata〉,In1, m2, m3)
[0086]以m3,存储(〈t.0SP, metadata〉,In1, m2, m3)
[0087]向机器传递的变元包括:三元组或三元组的变量以及被保持在服务器局部存储索引表中以用于故障恢复的所有所涉及的机器(针对变量)的标识符(ml,m2,m3)。这些程序确保每个三元组SP0、P0S和OSP以允许使用三元组数据的子集的任意组合作为前缀来进行范围查询的方式被存储在系统中。
[0088]对三元组进行定位的机制与用于检索和删除的机制相同。由于数据通常是有序的,因此可以检索处理RDF范围查询所需的段ID。定义5陈述了如何在本具体实施中执行范围查询。
[0089]定义5:范围查询。给定两个三元组tl和t2以及数据分段D0,…,Dn,范围查询检索出tl与t2之间的所有三元组包括性地为:
[0090]{t 11 G D^t1 G Dj'key (t) ^ key (t:)}
[0091]U {t,11,G Dj't2 G Dj'key (t') ^ key (t2)}
[0092]U {t,,11,,G Dk" (i < k < j)}
[0093]其中key ()将三元组转换为在KVS中的键。
[0094]需要被访问的段是:包含tl的段、包含t2的段以及所有中间段。[0095]删除操作通过在每个服务器上使用“删除”来代替在算法I中的“存储”指令来以相似方式进行处理。“删除”指令去除对应于三元组的行并更新相应的索引表(如果需要)。
[0096]可以以“事件驱动”方式来实施本发明的实施方式的调和的递增法。当“某事”改变了数据存储的状态(例如插入新三元组或检索现有的三元组)时,产生事件,其中数据存储是图的存储版本。为了数据调和,两个基本事件被认为能够触发调和处理的相关事件:addEvent和readEvent。通过三元组的插入操作发出addEvent,通过图查询发出readEvent。作为对这两个事件的反应,调和被触发。可以引起数据调和的其它类型的事件可以被表示为一系列addEvent和readEvent,因此不再分别定义。当然,addEvent与readEvent是高度相关的。当向非空图添加三元组时,将访问并且评估相关三元组,以检测应当被调和的任何数据,引起向数据存储待发出的一系列readEvent。这样紧密的关系以示例性方式被反映,用于选择与以下陈述的特定节点之间执行调和处理的节点的初始子集。readEvent被认为是图遍历操作。采用遍历历史来建立初始子集,该初始子集包括被最多访问的节点以及与被最多访问的节点具有强共现性关系的节点。用于选择初始子集的算法是用于选择初始子集的示例性机制,并且基于如下假设:如果两个节点是强相关的(即在图遍历操作中在访问节点A之后访问节点B的概率非常高),则非常可能在同一例程中对A执行的调和处理也应当对B执行,而不是延迟执行。遵循使用共现性关系的这样的相关节点的路径,可以选择其调和比其它节点的调和更迫切的节点的初始子集。
[0097]这样的选择机制的可取之处是显著的。即使图被跨存在多个服务器上,单个机器上的数据的大小可能会非常大,从而否定了实时的穷举调和动作。可以使用两个任意节点之间的共现性概率来将图划分为:被频繁访问的节点以及与被最频繁访问的节点具有强相关性的节点的子图(初始子集);以及包含被较少访问的节点的子图(另外子集)。对于后者,调和检查被推迟,直到执行了直接读取操作为止。因此,递增法使得能够进行关于大数据图的调和。
[0098]通过将图划分为初始子集和另外子集,还可以将数据图的分段叠加在已经就位的物理数据分段之上。该基于使用的分段还增强了数据调和的并行处理。
[0099]本发明的实施方式可以采用或创建扩展图,其通过以下将详细阐述的一些特定元数据字段/值来扩展。所述特定元数据字段提供如下信息:该信息可以用于将节点的初始子集与节点的另外子集区分开。
[0100]定义4:扩展的RDF图。
[0101]扩展的RDF图是Ge =〈V’,E’>,其使用节点和边的元数据来扩展RDF图G =〈V,E>:
[0102]V,= {〈V, mv| V G V〉},E,= {<e, me> | e G E},
[0103]其中V和E如在定义2:RDF图中所定义的。
[0104]在该特定实施中,三元组被视为基础数据结构,以上定义的扩展RDF图需要节点局部元数据和边局部元数据。由于该实施存储了每个三元组的三个变量,因而可以如下存储元数据:
[0105]?存储节点和边的元数据:针对分别表示三元组主语和三元组宾语的节点,mv被局部地存储在每个SPO三元组和每个OSP三元组中。me被局部存储至每个PSO中。更新现有的三元组的元数据包括:读取三元组数据;重新计算值;以及返回该值。[0106]?查询节点和边的元数据:当查询关于特定节点或边的元数据时,检索所有的相关三元组并且根据需要将元数据进行合计。
[0107]例如,可以使用简单的键值元组kt, number_of_visits来保持关于特定三元组(t)被读取多少次的指示。如果需要功能模块来估计对节点s的访问总次数,则应当检索将<s,?,?>作为键(其中?匹配任意字符串)的所有键值元组。相应的number_0f_ViSitS (访问次数)然后被求和,以给出最终答案。
[0108]用元数据记录节点访问频繁度和节点对的共现性来扩展正常的RDF图。使用频繁度和共现性是为了减少调和处理需要最初访问的节点的数目,并从而降低在三元组插入时的计算成本。这使得能够实现将非紧急操作推迟至当该非紧急操作变得必要时的点的递增调和技术。节点和边的元数据被用作用信号表示所述节点在其它节点当中如何显著以及所述节点如何彼此紧密地连接的机制。
[0109]作为readEvent (由数据查询触发的)的结果,数值被递增地添加到标准图。在下文中,标准数据图(RDF图)被表不为G,而扩展图被表不为G’ i,其中i表不向原图施加了多少次迭代(由readEvent和addEvent触发的)以产生递增图变换。
[0110]定义6:频繁度、共现性、未决请求。
[0111]令t为三元组〈S, P,O〉, s和O是由t的图形表示所产生的两个节点。频繁度f(s)





jyi
是访问主语节点S的总次数。共现性为⑶仏0) = ^,其中m是特定三元组〈S,P,0>被用s作为主语进行访问/查询的总次数。
[0112]Lt=[t0; --?, ti ,…,tn]是包含在所述节点处仍待调和的所有三元组的三元组列表。Lt可以为空。
[0113]节点s与节点O之间的共现性被近似为:在对节点s的所有访问中多少访问导致了对节点O的访问。在基础存储水平上,元数据与形成键值元组的三元组相关联,其中频繁度和未决请求被实施为节点的元数据(即〈V,f:Lt>),而共现性则通过边的元数据被实现为<e, Co〉。当然,这些仅仅是用于存储标识被最多访问的节点以及在图遍历操作中在被最多访问的节点之后访问的节点而所需的元数据的示例性技术。本领域的技术人员将会理解:可以将在不同位置中作为元数据所存储的各种不同值用于该同一目的。
[0114]addEvent和readEvent被系统不同地处理。由于向图添加三元组会通常导致:一系列的查询被发出并且潜在地生成并添加新三元组,所以addEvent的实例可以被认为是对频繁度和共现性值进行更新的序列。理论上,只有不再有节点需要被处理时,这样的涟漪效应(ripple-off effect)才会终止。
[0115]令t为与从主语节点到宾语节点的有向边等价的三元组S,P,O。对图的每次读取操作递增地改变已被访问的节点的频繁度值f (S)和在G' i中的相邻节点之间的共现性关系CO (S,O)。基本原理如下:通过使用共现性关联原则,可作出关于相对于节点s执行的调和处理是否将/应当被传播至与s连接的相邻节点或者这些相邻节点的调和处理是否应当被延迟的决定。
[0116]图3示出了向图添加新三元组的处理中的控制的流程。
[0117]当向空图添加三元组时,不需要调和,S101-S103,即在S102处为“是”。然后,在步骤S104中,将扩展图初始化为简单的RDF图。当向现有图添加三元组时,即在S102处为“否”,在S105处更新扩展图,将主语节点的相应频繁度以及连接三元组主语和宾语的边的共现性增加I。如果需要,在S105处执行调和处理。在该阶段,可以是如下情况:选择节点的初始子集,并且在节点的初始子集与新三元组的主语节点之间执行调和处理。在图4中示出了用于S105中的处理的控制的示意性流程(如以下讨论并在算法2中进行格式化的)。在许多情况下,调和处理可能导致产生新三元组(在S106处的“是”),这反过来又导致元数据更新以及新的调和处理。这将继续,直到没有新知识(三元组)生成为止。在算法2中将所述处理进行格式化。应当注意,由于KVS的性质,添加到现有键值对仅仅更新元组的值。
[0118]关于执行特定程序的设备,可以通过选择模块来执行初始子集的选择。可以通过调和处理模块来执行包括调和处理,该调和处理包括:相似度计算、相似度合计以及必要时创建新的等价性链接。通过调和处理控制模块来执行对另外(延迟)的调和处理的标识和调度,所述另外(延迟)的调和处理包括:对特定触发事件进行响应;以及对响应于触发事件而应当被执行的调和处理进行标识。每个模块可以被实现为如下数据库控制器的一部分:该数据控制器可以相对于分布式系统中的存储单元/服务器/计算资源是局部的,或者可以是集中式的并且设置在集中式硬件上,或者通过与分布式硬件/计算资源/服务器相配合以创建有效的集中式控制器。模块可以被实现为硬件,或者可以为在计算资源/服务器/存储单元上工作的软件模块,例如作为数据库管理系统的一部分。
[0119]数据/语义调和主要发生在宣称新实例数据时。当添加三元组t=〈s,p,o>时,addEvent实例触发待对照整个图中执行的插入三元组t的主语s的调和。在实践中,需要对照其处理的图的大小会容易地达到数百万节点并且变得过大而不能进行穷举遍历。通过将重点放于选择特定节点(在该情况下,为新三元组的主语)将要与之初始执行调和的初始子集,前面的处理负担被降低,并且获得较廉价的初始调和近似。
[0120]算法2doAddEvent (t = s, p, o?
[0121]需要:G=〈V,E> 作为 RDF 图
[0122]需要:addTripleQ (算法 I)if G =Othen
//不需要调和
addTriple(0
初始化G0其中=F且£

G0 <-G0 u {(s,f0(s) = O),((s,o),co0(s,o) = O〉}
return
end if
if s e Ff then
f,⑷+ 1
if〈5,o〉G E then

COj(SJ)) = CO1.{.SJ))+1 [0123]end if else

a;;(.v,*v) = 0

end if

else
f: = 0
end if
G <- Gl1 u {〈'/.(5)), {(s, o), Coi (s, o)〉}
addTriplc(,)
对照 Gi,reconcile(0
if生成了新二元组then
new addEvent.HrcQ
[0124]算法 3reconcile (t) t=〈s,p,o>
[0125]需要:a and P作为预定的阈值
[0126]
【权利要求】
1.一种用于执行在数据图中被表示为节点的资源的调和的方法,所述方法包括: 选择所述图的节点的、待针对其执行与特定节点的调和处理的初始子集; 执行所述特定节点与节点的所述初始子集中的每个节点之间的调和处理;以及 延迟所述特定节点与所述图的节点的、待针对其执行与所述特定节点的调和的另外子集之间的调和处理。
2.根据权利要求1所述的方法,其中, 选择所述初始子集包括:确定所述节点中的哪些节点在图遍历操作中具有最高被读取访问次数,并将这些节点作为被最多访问的节点包括在所述初始子集中。
3.根据权利要求2所述的方法,其中, 选择所述初始子集还包括:确定所述节点中的哪些节点具有最高被读取访问概率,作为在图遍历操作中的所述被最多访问的节点之一之后的下一个节点。
4.根据权利要求1所述的方法,其中, 节点的所述另外子集是所述图中的不是所述初始子集的成员的所有节点。
5.根据权利要求1所述的方法,其中, 节点的所述另外子集的所述调和处理被延迟、并且在当对计算资源的监视表明所述计算资源不然将会空闲时的时隙内被执行。
6.根据权利要求1所述的方法,进一步包括: 将所述特定节点的标识添加到列表; 在所述列表中保持所述特定节点的标识直到已执行了与所述图的节点的所述另外子集的处理为止,此时,将所述特定节点的标识从所述列表中去除;以及 当接收到标识一个或多个待被读取的节点的对所述图的查询时,检查所述一个或多个待被读取的节点中的哪些节点被标识在所述列表上,并且,针对所述一个或多个待被读取的节点中的被标识在所述列表上的每个节点,执行与所述图的每个节点的调和处理。
7.根据权利要求1所述的方法,进一步包括: 针对所述图的不包括在与其执行调和处理的所述初始子集中的每个节点,将所述特定节点的标识以关联元数据的形式添加到未被调和的节点的列表,并在所述列表中保持所述标识直到执行了与所述特定节点的调和处理为止,此时,将所述特定节点的标识从所述列表中去除;以及 当接收到标识一个或多个待被读取的节点的对所述图的查询时,针对每个所述待被读取的节点,执行该节点与以关联元数据的形式标识在未被调和的节点的列表中的每个节点之间的调和处理。
8.根据权利要求1所述的方法,其中, 所述图被存储在计算资源的分布式网络中。
9.根据权利要求1所述的方法,其中, 所述特定节点与另一个节点的调和处理包括: 通过对由执行多个不同的相似度计算产生的值进行合计来获得相似度值,或者获得由执行相似度计算产生的单个值,其中,相似度计算是生成表示所述特定节点与所述另一个节点在语义上等价的似然度的值的计算;以及 如果所述相似度值超过预定的相似度阈值,则向所述图添加表示所述特定节点与所述另一个节点之间的等价性关系的等价性链接。
10.根据权利要求8或9所述的方法,其中, 在计算资源的所述分布式网络内的多于一个的计算资源上同时执行所述特定节点与存储在该计算资源上的如下节点之间的调和处理:所述节点属于正针对其执行与所述特定节点的调和处理的节点子集。
11.根据权利要求1所述的方法,进一步包括: 针对每个节点,作为关联元数据,存储表示所述节点在图遍历操作中被进行读取访问的次数的值以及表示在所述图中与所述节点链接的每个节点在图遍历操作中作为下一个节点被读取的次数的值。
12.根据权利要求1所述的方法,其中,所述图中的数据被编码为三元组,每个三元组包括主语、谓语和宾语,并且所述图的节点是所述三元组的主语和宾语,并且三元组的谓语表示所述三元组的主语与宾语之间的链接。
13.一种用于执行在数据图中被表示为节点的资源的调和的数据库控制器,所述数据库控制器包括: 选择模块,所述选择模块被配置成选择所述图的节点的、待针对其执行与特定节点的调和处理的初始子集; 调和处理模块,所述调和处理模块被配置成执行所述特定节点与节点的所述初始子集中的每个节点之间的调和处理;以及 调和处理控制模块,所述调和处理控制模块被配置成延迟所述图的节点的、待针对其执行与所述特定节点的调和的`另外子集的调和处理。
14.一种用于存储数据图的数据存储系统,在所述数据图中,资源被表示为所述数据图的节点,所述数据存储系统包括: 多个存储单元,所述多个存储单元每个都被配置成存储来自所述数据图的数据段;以及 根据权利要求13所述的数据库控制器。
15.一种计算机程序,所述计算机程序当被计算机执行时使得所述计算机执行根据权利要求I至12中的任一项所述的方法,或者使得所述计算机担当根据权利要求13所述的数据库控制器。
【文档编号】G06F17/30GK103488673SQ201310231665
【公开日】2014年1月1日 申请日期:2013年6月9日 优先权日:2012年6月11日
【发明者】胡波, 洛雷达纳·拉埃拉 申请人:富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1