在群资源环境中管理高速缓存的方法和装置的制作方法

文档序号:6553197阅读:189来源:国知局
专利名称:在群资源环境中管理高速缓存的方法和装置的制作方法
技术领域
本发明涉及在多用户环境中管理大型信息体的方法和装置。特别地,本发明涉及在集成开发环境(IDE)中管理高速缓存的方法和装置。
背景技术
大公司经常拥有非常大量的电子文档形式的信息。这些数据稳定增长并且单个软件项目能够很容易地利用成百上千的信息源。这些可能是设计文档、UML图表、白皮书或源代码以及非直接相关的信息-也许是来自相同小组的以前的产品、外部网页和参考指南。目前很少有软件支持将这些信息体组织成容易浏览的参考网络,更别提将其整合成公共使用的开发组件。
一个众所周知的用于组织大型信息体的框架是语义Web(Semantic Web)。Tim Berners-Lee等人在2001年第一次创制了该术语并且其含义是在以下列方式定义和链接的web上具有数据即能够被机器使用-不仅出于显示的目的,也能够在不同的应用中使用。语义Web是在W3C领导下的大量研究者和工业伙伴参与的合作产物。语义Web基于资源描述框架(RDF),该框架集成了多个使用XML进行句子构造以及使用URI进行命名的应用。语义Web团体采用的RDF框架用于开发本发明的优选实施例。
US 5,822,749公开了一种与高速缓存通信的询问优化器。
US 6,601,602公开了一种能够应答提出的问询的主动高速缓存。
这两种现有技术例子模型都没有描述能够优化高速缓存处理的主动高速缓存。

发明内容
根据本发明的第一方面提供了一种如权利要求1所述的方法。
下面描述其它方面并在权利要求中引用。
第一方面提供了管理信息的一般解决方法。该信息被模型化为网络,其中该网络的节点为信息源并根据它们的语义关系而被链接。这使用户能够通过仅查看与特定信息相关的实体而很容易地浏览文档。例如,当用户查看模块的源文件时,他/她能够直接浏览对其进行详细描述的设计文档,接下来可能是解释该模块如何被嵌入到高层系统架构中的文档。
由于可用信息的大数量和手动对其进行构造的困难,语义网络在很大程度上是自组织。它随时间动态地适应用途并学习文件之间的关系。在可能的时候自动地提取关于信息的元数据,但网络需要一些手动反馈和管理用以进一步的精选。
优选实施例(叫做神经键(Synapse))最初被提议用作软件开发项目的工具,但可以被用于组织任意类型的知识。为了进一步的灵活性,该网络被存储在服务器上并通过基于XML的协议与客户端通信,其中该基于XML的协议使集成到几乎任意类型的应用中成为可能。
起初,提议了用于Eclipse环境的客户端。这将允许开发者浏览该语义网络并在单一平台上操作他们的软件项目。


为了促进更全面的理解本发明的这个和其它方面,下面将参考以下附图并仅通过示例的方式来描述本发明的优选实施例,附图中图1为synapse服务器、synapse客户端和外部资源数据库的示意图;图2为节点和节点数据库中的链接的实例synaptic web的示意图;图3为客户端的更详细的示意图;
图4为synaptic服务器的方法示意图;图5为反馈组件的示意图;图6为用户通过几个节点间进行浏览的示意图;图7为推荐器(recommender)的示意图;图8为投票历史实例的示意图;图9为推荐方法的示意图;图10为投票酬劳方法的示意图;图11为链接高速缓存的示意图;图12为在链接高速缓存中修改链接重要性的方法示意图;以及图13为整理(clean up)链接高速缓存中的链接的方法示意图。
具体实施例方式
参照图1,优选实施例包括synapse客户端10和synapse服务器12。synapse服务器12包括浏览器14、推荐器16、反馈组件18、链接高速缓存20和节点数据库22。可以从synapse客户端10访问不是优选实施例的一部分的资源数据库24。节点数据库22存储称为节点26和链接28的数据实体。节点26表示世界上的资源,链接28表示包含关系重要性值的两个资源间的关系。每个客户端10与浏览器14、推荐器16和反馈组件18接口连接。
推荐器16推荐用户可能接着访问的节点26;一些被推荐的节点可能之前没有被用户访问过而许多节点已经被访问了。如果客户端10选择了被推荐的资源,则发送新的资源请求并且所选节点的内容像先前一样从节点数据库22通过浏览器14被传输。
反馈组件18根据要素数量降低和提高链接28的重要性;重要性低于特定阈值的链接28将被删除。
由于链接修改执行的频率,改变慢速持久性存储器中的链接值是低效的。链接高速缓存20是快速非持久性高速缓存,其保持了持久性存储器中的合适链接的副本。对链接进行修改的数量是很高的,因为其是反馈组件中用户数量和代理数量的倍数。进一步地,在修改后仅仅写回所有链接28将会给数据库的负载造成重大影响,因为将具有过多的读写访问。因此,在下面讨论的链接高速缓存解决方案中控制链接28的访问。
图2所示为节点26A到26P和链接28A到28R的设置例子。节点数据库22以表示资源和其关系的数据结构的形式存储节点26和链接28;在此说明书中该数据结构有时是指语义Web。资源可以是作为系统用户的人。资源也可以是诸如程序文件或文档的共享资源节点26一般指向客户端服务器系统外部的资源。然而节点26也可以指向作为节点26一部分的内容或可以指向客户端服务器系统的内部文档;该节点26指向的是内部的内容资源。在本实施例中有三种不同类型的节点26表示个人资源的个人节点;表示诸如外部或内部文档或源代码的内容资源的内容节点;以及注释其它资源的注释节点。个人节点包含关于个人的信息。每个节点26包括唯一资源标识符(URI)和关于该资源的元数据。URI描述了(在大部分情况中)相关资源位于何处。例外情况是当该资源并非是共享数字资源时,例如,个人节点的URI可以仅是类似个人<username>,其中<username>是他们的用户名。元数据包括重要的关键字和简短摘要。节点不包含实际内容,该内容可以被存储在远程文件库中、互联网中或者甚至像数和文章一样存储为非数字形式。
在优选实施例中链接28表示两种特定资源间的关系。链接28包含各个资源的两个URI;这两个URI标识了相关的节点和资源。动态链接定义了表示链接系统内的链接优先级的重要性值。静态链接没有重要性值并且表示两种资源间的固定关系,如雇员/管理者关系。在本实施例中,动态链接包括进行参考的资源和被参考资源的URI,并且链接重要性被给定了一个0与1之间的值。优选实施例主要关注于动态链接。
初始以与常规语义web相似的方式创建节点数据库22。首先根据当前可用信息来标识和创建节点,其中元数据(主要是关键字)根据其表示的实体而存储在每个节点中。第二,标识相关节点26之间的链接28,这一处理包括向每个链接分配起始值以表示其重要级别。与重要性值一起,可以将更多的定性信息与每个链接28关联,以描述其所表示的关系的类型,例如,一个节点是否隶属或拥有其它节点或被包含在其它节点中。
一旦节点数据库被创建,则系统根据不同因素改变链接重要性,所述因素包括随后要描述的用户对节点的使用。关于此重要性改变因素的类型一般需要注意两点。首先是每个动作仅仅会产生链接权重的相对较小的改变。这意味着例如某人在节点间的随机浏览将不会显著影响他们的链接的强度,但随着时间推移许多人都这么做将会逐渐增强该链接的强度。其次这些动作修改该强度的数量不是固定的,而是依赖于其它因素,如链接的当前强度、web的全局特性,也可能是执行动作的用户。
为了抵消链接重要性的逐渐增长,所有链接的重要性将随着时间逐渐衰落,消除web中的噪声并建立与链接重要性的时间顺序关系。这不是简单的线性衰减,而是依赖于web的当前特性。当链接不存在时,这些动态处理可以包括新的弱链接的创建,该链接随着时间可以被逐渐加强。
对象和关系规划资源描述框架(RDF)是表示万维网中资源的相关信息的W3C标准语言。使用RDF作为节点26和链接28的基础是有利的。首先,它表示了主要的软件公司和研究机构间的合作,因此应该是在技术上健全的规范并且很有希望作为用于存储语义信息的理想形式。应用程序(utility)、库和其它资源也已经广泛可用。其次,在未来,语义Web可能能够“加入”到其它web(增加“已知”信息的数量)并且存储元数据的公共语言将有助于对此进行促进。
节点26是通过使用web标识符(URIref)来进行唯一标识的,并在特性和特性值方面进行了描述。采用这种方式,RDF提供了对Web资源进行声明的简单方法。RDF声明包含三部分·主语(该声明关于的资源,例如书)
·谓语(该声明指定的主语的特性或特征,例如“作者”)·宾语(特性或特征的值,例如作者的名称)一般来说,RDF中的声明表示了二进制关系,所以资源的描述可以包含任意数量的RDF声明以反映资源间的不同类型的语义链接。事实上URIref用于标识主语、谓语和宾语,因为这样允许对每个进行完全标识,这样消除了具有相同名称的人、具有相同标记但不同意义的谓语之间的模糊。也允许进一步指定实体。RDF的完整规范和相关技术可以在W3C RDF核心工作组的网站找到。“RDFPrimer”是一个很好的起点。
RDF中进行的声明可以可视化为图表,并通过RDF/XML处理用于存储或传输的该图表序列,其是用于表示信息的基于XML的语法。Synapse将使用RDF/XML存储其包含的信息,但要实现这一点首要的是证明前面已就Synaptic Web的格式和结构而讨论的概念可以使用RDF/XML来等效表示。这一分析的最终结果是RDF计划(Schema),其确切地描述存在哪些类以及应该针对每一个存储哪些元数据。RDF计划本身也是RDF/XML文档。参见相关的W3C规范能够得到更多的关于RDF计划的信息。
节点26和链接28是RDF中表示的Synaptic Web的概念性结构。节点直接等同于RDF资源,并且使用URIref来唯一地标识资源对于我们的实施而言是明显的约束。
有一些特性应该针对所有的节点来存储,所以可以定义“Synaptic节点(SynapticNode)”超类(super-class),从该超类中能够导出将要存储在Synaptic Web中的节点的所有其它类。表示“SynapticNode”的类定义如下

节点的以下特性在RDF中被定义为内部标识符;名称;关键字;摘要。
1、定义了Synaptic节点标识符(SynapticNodeIdentifier)的资源A类的内部标识符,所以该标识符可以以某种方式来构成。

2、名称资源的描述性名称,因此简单的字符串将可以实现。

3、关键字节点的关键字应该是简单字符串。在实践中,资源应定义包含所有应用到其的关键字的包(Bag)。进一步的,字面上的关键字不应被存储在特性中但应被链接到包含该关键字的资源。当新的文档被添加到Synaptic Web“节点”,应创建新的关键字,但之前使用的任何关键字都应被链接(也就是不应该有复制的关键字节点)。

4、摘要节点的描述性的摘要,所以简单的字符串就足够了。

同样使用RDF模型定义链接。首要的和最初的RDF声明(主语、谓语、宾语三部分)表达了主语的单个特性或特征。所以如果两个资源以多于一种方式语意相关,则在它们之间将存在多个“链接”。使一个链接具有多个属性(如在概念设计中)与具有多个单独的链接基本上是一样的。主要的例外是在概念设计中(仅有一个链接)可以存在在单个链接表示的特征问“共享”的属性。通过多个链接,这些共享的属性可以被冗余地复制。甚至这一问题可以通过定义存储这些属性的新的链接类而回避(如果其曾经发生),这可以被认为是其它链接的根源。目前,没有必须存储在每个链接上的特性,但为了进一步的扩展性,方便的是定义类似“SynapticNode”类的链接超类,其中所有的链接类都从该“SynapticNode”类中导出。

具有动态方面的链接的概念是Synapse解决方法的中心。必须定义特性以体现该链接的重要性。这一重要性的值是“Synaptic链接权重(SynapticLinkWeight)”类。最终,意味着源和目标的谓语的一般超类动态相关定义如下。

因此,任意动态链接应该延伸“synaptic相关(SynapticRelatedTo)”类。
分等级的链接用于记录一个资源是另一资源的“根源”。

目录链接和节点用作针对其它链接和节点的目录。目录分枝内的顺序通过使用目录节点内的次序存储器来处理。

前述RDF定义形成了一般框架的基础,Synaptic Web可在此基础上建立并针对特定应用来定制。
客户端图3图示了优选实施例的客户端10。每个客户端10包含图形用户界面(GUI)30,用于显示推荐资源列表32;资源查看器34,用于显示选定资源;以及元数据查看器36,用于显示选定节点的元数据。在推荐资源列表32中的资源可以按照资源的重要性顺序来显示。在推荐资源列表32中的资源能够被分成类别,例如资源类型如个人资源和文档资源。用户能选择所显示类别的类型。客户端呈现从推荐器代理接收到的推荐节点列表的子集。这很可能是全部的集合,但在以下情况下可能是子集例如如果该客户端没有空间来显示所有的推荐节点。
推荐资源列表32是推荐器所推荐的资源的列表。
浏览器14接收URI请求。获得选定的节点元数据并将其从浏览器14发送回客户端10。
参考图4,系统的处理包括以下步骤在步骤40中,用户操作客户端选择节点26A以显示在客户端10上;在步骤41中,客户端10向服务器发送节点26A请求;在步骤42中,服务器获得节点26A并将节点26A传递回客户端。在步骤43中,客户端10使用包含在节点26A中的URI向资源数据库24发送资源请求。在步骤44中,客户端10给资源请求加时间戳并将加了时间戳的URI发送到反馈组件18和推荐器16。在步骤45中,反馈组件18使用加了时间戳的URI以在链接高速缓存中调节链接28的重要性。在步骤46中,链接高速缓存从节点数据库获取链接;修改相关链接(如28T、28A、28B、28D)的重要性,并且如果该新的重要性超过了阈值则将其保存回节点数据库。在步骤47中,推荐器16使用加了时间戳的URI为用户创建推荐节点列表32。
反馈组件参考图5,反馈组件18包括一般衰减代理50;公开衰减代理51;基本代理52;时间代理53;个人代理54;个人时间代理55;转换代理56;合作代理57;以及用户浏览历史58。
本发明的优选实施例使用前述所有代理。然而本发明的其它实施例可以使用两个或多个代理工作。例如,使用一般衰减代理50和基本代理52允许链接28根据用户的活动性增长和衰减。但是其它的每个代理都有其自身的优点。
用户浏览历史58针对每个用户进行存储和更新。每个用户浏览历史58被第一次创建,特定用户选择节点26并发送来自客户端10的具有时间戳的URI。每个浏览历史58是一个历史条目的列表-节点标识符(URI)和时间戳(以毫秒为单位)。每次用户选择新资源,则在反馈代理处接收具有时间戳的URI并将其作为历史条目添加到相应的用户浏览历史58中。如果在web中资源没有相应的节点26,则发送一般的“非神经键(non-synapse)”标识符。每个历史有最大的(可定制)大小。当用户浏览历史58已满并添加了新的条目时,最旧的条目被丢弃。
在向给定用户的浏览历史58添加新接收的条目后,反馈组件18使用户浏览历史58和用户标识符二者对于反馈代理可用。用户标识符是用户用来登入系统的用户名,并形成用户个人节点URI的基础。这些代理中的每一个可以使用资源请求和用户浏览历史58来修改链接28。单个“浏览历史存储(navigation history store)”类包括每个用户的浏览历史。所以浏览历史对象可以通过调用NavigationHistoryStore.getInstance().getNavigationHistory(username)而获得。
出于解释反馈代理的操作的目的,图6图示了来自图2的特定情况的示例节点和链接。节点26F是用户节点而节点26G是另一个个人节点。节点26A、26B、26C和26D是内容节点,并且箭头指示了用户P的浏览路径以及从节点26A到节点26B(链接28A)到节点26C(链接28B)然后到节点26D(链接28C)的链接方向。链接28F和链接28H分别是从用户节点26F到内容节点26C和26D的链接。链接28I链接了目的地节点26D到个人节点26G,而链接28G链接了两个个人节点。用户浏览历史58包括节点和时间戳。用户的最后转换是到作为目的地节点的节点26D;这是在反馈组件18接收到资源请求之后在浏览历史记录58中最后记录的转换。该资源请求包含目的地节点的名称和转换的时间。图6所示仅为将作为最后资源请求消息(用户节点26F请求内容节点26D)的结果而改变的链接。链接的当前重要性并未示出,因为这将随着实施例的不同而不同。节点26A和节点26C间的链接是链接J。
一般衰减代理50根据用户活动性的一般水平来衰减所有的动态链接。通过询问所有用户在最后的时间间隔内的浏览历史,每隔一段时间计算活动性因子。所有动态链接在web中的衰减量基于该活动性因子。
我们的实现中的公式为newImportance=oldImportance-(entries*0.05+1)*0.0001其中entries是在最后20分钟内所有用户的用户历史中条目的总数量。
公开衰减代理51根据到浏览链接源节点的用户的节点公开数量来衰减动态链接。公开的节点是在特定用户的客户端GUI上针对用户选择的每个节点显示的来自推荐节点列表的节点。每次生成新的推荐列表,则使其对于客户端可用并且该客户端显示称为公开的推荐节点的子集。公开的推荐节点的列表被发送到公开衰减代理并且该公开衰减代理随后衰减从用户节点到公开推荐节点的所有链接。一般来说,相比链接重要性而言,每个链接重要性被降低的数量要小,并且依赖于被公开的节点总数和用户因子(user factor)。
公式-对于每个被公开的节点,改变了两个链接强度1、当前显示的节点和公开节点间的链接newWeight=oldWeight-delta2、用户的个人节点和公开节点间的链接newWeight=oldWeight-1.5*delta其中delta=0.00008*(1+1/numLinks+0.4*log(1+userfactor))而numLinks=一起公开的节点数量用户因子被衰减代理用于衰减和增长链接并通过对所有用户节点链接的强度求和而计算得出。用户因子是用户浏览web所花费的时间量的指示,特别是最近当所有链接随时间衰减时,并且对代表该用户的链接进行的修改作为其百分比。
基本代理52提高了两个横穿(traversed)节点间的横穿链接的重要性。该增长基于用户因子。我们使用(其中log是自然对数函数)的公式为Let modified=0.0065+0.0025*log(1+userFactor)case(oldImportance<0.8)newImportance=modified+oldImportancecase(oldImportance>=0.8)newImportance=0.5*modified+oldImportanceif(newImportance>1)let newImportance=1例如,基本增长代理查看浏览历史中的最后两个节点(C和D)并由用户因子递增地加强它们之间的链接(链接C)。
时间代理53提高倒数第二个链接的重要性,该链接是在横穿从源节点到目的地节点的最后链接之前横穿的链接。增加的大小基于倒数第二个节点花费的时间。例如,时间增长代理使浏览历史中两个最近的时间(D=20000ms,C=136000ms)相减从而得到用户停留在倒数第二个节点的时间,200000ms-136000ms=64秒。根据该时间随后修改对应于用户选择首先移动到C时的链接,也就是从B到C的链接,链接b。64秒被用于指示节点C在此上下文中对用户有用,因此可以加强链接b。如果这一时间非常短,如5秒,则链接b的强度将会被降低。优选实施例的增长公式为newImportance=oldImportance+delta*0.5*(0.65+0.25*log(userFactor))其中delta确定如下case(T<30seconds)delta=0.00002*(T/30-1)case(30seconds<=T<300seconds)delta=(0.0005/270)*Tcase(T>=300seconds)delta=0.0005个人代理54提高了用户的个人节点和目的地节点间的链接。增加的大小基于用户因子的对数。使用对数标度以使得小的用户因子不会支配小的用户因子。例如,个人代理加强了用户了个人节点和他们刚才已经浏览到的节点之间的链接,在此例中为链接e。
个人时间代理55根据用户在目的地节点花费多长时间以及用户因子来修改用户个人节点26F和他们已经浏览的节点间的链接的重要性。例如,个人时间增长代理以与时间代理相同的方式来计算出用户在节点26C停留了多久(在此例中为64秒)-这给了在此次访问中节点对于用户有何用处的指示。用户节点26F和节点26C之间的链接28F的重要性被相应改变-在此例中略微增加。
转换代理56在转换中增加了链接或创建了开始节点和最终节点间的链接,其中在开始节点和最终节点间有一个或多个中间节点。转换处于作为用户浏览的一部分的两个或多个节点之间。用户浏览客户端中的节点所花费的时间是节点时间。中间节点是节点时间低于转换阈值时间的节点。开始和最终节点是节点时间高于转换阈值时间的节点。如果节点时间低于转换阈值时间,则该用户被假定已经“跳过”了中间节点。例如,当节点时间大于转换阈值时间时,转换代理被触发,在此例中,节点26C的节点时间时64秒,其大于优选的10秒转换时间。转换代理沿用户历史移动回去,查看时间差别。26B的节点时间是136-130=6秒,其低于10秒转换阈值时间,所以其继续执行。26A的节点时间是130-10=120秒,其高于转换阈值时间,所以该代理停止在这里并假定用户从26A到26C,并跳过了26B。因此26A和26C之间的链接(链接J)被创建或根据进行横穿所花费的总时间而增强。在此例中6秒时间很快所以强度的增长将大于平均值。
合作代理57修改在目的地资源上工作的用户间链接的重要性。该合作代理由增加用户节点和目的地节点间的链接的个人代理所触发。该合作代理增加了用户节点和链接的个人节点间的链接。该增加依赖于相应的链接重要性以及用户节点与目的地的增加。double weightFrom=link.getWeight();double weightIncrease=(1+weightFrom)*0.5*0.0001;if(weightFrom<0.3){weightIncrease*=0.25;}例如,在图5中,合作代理查看链接到目的地节点26D的除了用户节点26F外的个人节点。在此例中,找到了个人节点26G。用户节点26F和个人节点26G之间的链接,即链接28G,随后被创建或增强根据个人节点26G和目的地节点26D之间的链接28I的强度的数量。
其它代理能够被用于改变链接重要性,例如人们之间的电子邮件或即时消息收发通信能够影响人员节点之间的链接的重要性。
推荐代理服务器中的浏览为浏览器接收的每个节点请求产生推荐节点列表。推荐器16包括节点投票器(voter)70;用户投票器71;提名(nomination)列表72;推荐列表73;投票器等级表74;投票历史表75;推荐方法76;以及投票酬劳(reward)方法77。
节点投票器70提名具有来自被请求节点的链接28的每个节点26。节点投票器70根据被提名节点和被请求节点之间的链接的重要性而利用一个值来对被提名节点进行投票。
在优选实施例中用户投票器71不提名任何节点。给定一个被提名节点的简短列表,检查以查看用户节点(例如26F)是否具有到任意被提名节点的链接,并根据用户节点与被提名节点间的链接重要性进行投票。如果没有这样的链接存在则投票零。
投票器等级表74根据权重并针对每个用户来排列每个投票器(在优选实施例中仅是节点投票器70和用户投票器71)的等级。投票器等级表74是一组针对投票器的每用户权重,在这种方式中一些投票器比其它的具有更大的影响力。特别是一个投票器对于一些用户可以具有比其它用户更大的权重。根据用户从推荐节点中实际选择了哪个节点来调整该组针对每个用户的投票器等级。
投票历史表75,(也参见图8),收集投票器的投票模式,该模式被投票酬劳方法用来维护投票器等级表。
图9所示为推荐方法的示意图。推荐方法76包括两个过程(pass)。第一个过程在步骤91中,要求投票器代理提名将被包含在提名列表中的节点。在优选实施例中,仅节点投票器提名节点,但在其它实施例中,一个或多个其它投票器可以提名节点用于合并成一个提名列表。第二个过程在步骤92中,要求每个投票器为提名表中所提名的每个节点进行投票。每个投票器指配每个节点在0到1之间的分数。投票器可以不优选一些节点并给该节点零投票。在步骤93中,对提名列表中每个节点的投票根据投票器等级表被加权并结合起来以给该节点一个整体分数。在步骤94中,组合起来的推荐节点按照整体分数和选择的最高分数节点的顺序排序。在这个实施例中选择前五个。在步骤95中,这些节点连同它们的分数一起,包括要被发送回用户的最终推荐列表。
参考图10描述了投票酬劳方法77。在步骤101中,对于最终推荐列表中的每个节点,识别投票器的每个投票。在步骤102中,通过将识别的投票除以所有投票器投票之和而将该识别的投票进行归一化。在步骤103中,将该归一化的投票与被请求节点URI和将它们发送至的用户的用户节点URI一起而存储在历史表中。在步骤104,当推荐器接收到来自该用户的节点请求时,推荐器针对该用户和节点检查历史表。如果找到,则为被请求节点进行了投票的投票器根据它们的(归一化的)投票的幅度而为该用户增加其投票权重(步骤105)。
在优选实施例中,节点投票器和用户投票器是唯一的两个投票器。然而,在其它实施例中,还有其它的包含团队投票器和节点类型投票器的实施例。团队投票器提名具有通往个人节点的强链接的节点。节点类型投票器根据其类型来提名节点。例如,程序员会对源代码节点感兴趣。
链接高速缓存细节“主动高速缓存”参考图11,链接高速缓存控制器包括高速缓存表111;修改高速缓存内的链接重要性的方法112;从高速缓存中清除链接的清除链接方法113。高速缓存表111包括多个链接条目。每个链接条目包括链接标识符(基于到节点以及来自节点);链接重要性;链接进入高速缓存的时间和标记。在此实施例中,链接进入高速缓存的时间用于跟踪该链接但是也可以用其它信息代替。
修改链接重要性的方法112包括以下步骤。步骤121,当代理想要修改链接时,其请求链接高速缓存锁定该链接。步骤122,如果链接高速缓存当前具有用于被请求链接的条目,则该链接高速缓存检查(步骤123)该链接是否被另一线程锁定,并且如果锁定了则通知(步骤124)该线程。在步骤125,请求线程可以选择等待或在没有该链接的情况继续进行(到步骤128)。如果其等待,则该处理停止(步骤126),并且当请求线程变为可用时或当其它线程完成或链接锁定超时时,链接被检出(check out)到该请求线程。如果高速缓存没有用于被请求链接的条目,则该链接高速缓存尝试从数据库中得到(步骤127)该链接。如果成功,则将该链接添加到该高速缓存并将该链接检出到请求线程中。如果失败,也就是数据库中不包含两个节点间的动态链接(在特定方向),则在高速缓存中(不是数据库)创建零权重链接并将该零权重链接检出到请求线程。在链接被检出的任何情况下,都将该链接的副本给予以唯一的ID做标签的请求线程。然后,高速缓存中该链接的条目被链接高速缓存锁定,从而其不能被其它线程所检出。在读取该链接的重要性(步骤128)之后,该线程可以或可以不选择对其修改。如果其不想修改该链接的强度,则链接高速缓存释放其对该链接的锁定,这使得其可用于被其他线程锁定。如果其修改(步骤129)该链接,则其可以将该链接“提交(commit)”回链接高速缓存,由此该链接高速缓存进行检查以确保该ID标签有效,并且如果这样的话,则使用线程已经提交的链接来更新高速缓存中的链接的条目。该链接的高速缓存条目也被解除锁定。
在规则的时间间隔调用链接高速缓存的清除链接方法113。10-30分钟之间的时间间隔针对十二个用户是典型的。在具有更多数量用户和链接的其它实施例中,将会更为频繁地或当链接高速缓存的大小达到一确定限制的任何时候即调用清除功能。除了那些自最后一次清除起后已经被添加的链接之外,其它所有链接都受清除功能的支配。以下步骤针对每个链接来执行在高速缓存中获取链接(步骤131),并且如果(步骤132)该链接重要性低于或等于一个较低阈值(A)则从数据库中移除该链接(步骤133)。如果(步骤134)该链接重要性低于一个较高阈值(B),则清除例程移动到(步骤135)下一个链接条目而不是移除或更新。如果该链接重要性高于一个较高阈值(B)则链接高速缓存使用该链接重要性来添加或更新(步骤136)数据库。如果“新的”链接低于较高阈值(B),则高速缓存不会将其添加到数据库中。这是因为将创建许多弱链接,而这随后将会衰减并被删除。毫无必要在数据库中创建这些很快就要被删除的链接-由于“不必要”的数据库操作而增加开销。
在优选实施例中,链接重要性的阈值范围定义是否将特定链接从高速缓存中移除或高速缓存是否对数据库进行更新。在另一实施例中,链接重要性变化的幅度可以确定是否对该链接进行移除或刷新。在另一实施例中,对链接重要性进行修改的频率可以确定是否对该链接进行移除或刷新。然而,在所有的实施例中,是通过链接重要性值来确定高速缓存的移除或刷新的。
断开连接的资源如果网络中的资源变成不连接的,则没有办法浏览到该资源。明显重要的是这一情况是不发生的,服务器实现应当确保这一情况不可能发生。但是,即使最好的设计也可能会犯错误或发生数据损坏(corrupt),所以检查连接性的处理看起来是很重要的。在这里存在进一步的复杂化,因为就不可能对其任何资源进行浏览的意义而言,断开连接的资源可能仍然具有通往其余网络的不可浏览的链接。所以一些对于该链接类型的理解应被建立到算法中。因为这一问题基本上与无用数据收集器面对的问题相同,所以应当相对直截了当地实现该用途。
应用在建立具有大量资源的大型软件开发项目的优选实施例中,它们中的很多都以某种方式相关。这些资源包括研究文档、规范文档、测试计划、源文件,以及雇员。该实施例可以通过将节点与所有这类资源进行关联而应用于此环境中。我们已经识别了两个顶层节点类型内容节点和个人节点。内容节点可以包括所有的源文件、文档以及外部API参考,但是也可以是与参与该项目的每个雇员相关联的个人节点。
可以开发用于访问这些资源(例如Eclipse IDE)的工具插件,其通过一些已定义好的接口与存储web信息的中心服务器通信。然后用户可以在他们自己的工作站上浏览web,并且当访问一个特定文档时,可以根据来自web中相应节点的任意语义链接的存在和强度而生成和提供相关文档的列表。跟随任意这些链接的用户将会使得客户端插件向用于调节链接强度的服务器发送该信息。
用户在文档间移动的动作不仅会影响这些文档间链接的强度而且会影响用户自身节点与他们所浏览的文档之间的链接的强度。也会较小影响该用户和与第二文档具有强链接的任何其他用户之间的链接的强度。客户端也能够记录附加信息,如用户修改或仅查看该文档所花费的时间长度。这随后将影响链接强度的变化程度。
用于其它系统(如内部即时消息收发服务器)的插件将监控其它类型的相互作用(例如用户相互间通信)并向服务器发送该使用数据(以提高两个用户间链接的强度)。也可以使用内部的因子-例如当文件间存在高过渡性(transitive)的强度时出现的直接链接。链接衰落的方式可能会根据所期望的时间关联的数量而改变。包括具有“静态”属性的链接是很便利的,从而有组织的结构与动态语义结构一起被给予web;例如将管理类型层级中的人链接起来。
进一步的应用包括可以创建新闻题材间的语义网络,这允许用户通过相关的文章来浏览。包括百科全书和指南在内的教育和参考材料可以使用Synapse来构造,可能具有通往WWW上的信息的相关链接实现。电子商务的卖主可以使用Synapse来构造其在线目录中的产品描述。律师团队可以组织案件数据并使用群组环境来定位关键数据项间的关键关系。
权利要求
1.一种管理高速缓存中的数据的方法,包括将数据项从持久性存储器复制到高速缓冲存储器;改变所述数据项;以及根据改变标准和所述数据项来更新在持久性存储器中的所述数据项。
2.一种管理资源的方法,所述资源包含内容资源和个人资源,该方法包括管理表示资源的多个节点,所述节点包括内容节点和个人节点,其中所述节点包括用于参考所述资源的资源参考;管理一个或多个表示所述资源间的一个或多个关系的链接,所述链接包括内容节点间的链接、个人节点间的链接和内容节点与个人节点间的链接,每个链接包括用于识别关系中所述节点的节点参考以及用于识别所述关系的重要性的重要性值;提供用于在所述多个内容节点或个人节点中选择一个的接口;以及将要被调节的链接从持久性存储器复制到高速缓存存储器中,并根据改变标准和所述链接的更新而从高速缓存存储器中更新持久性存储器中的所述链接。
3.根据权利要求2所述的方法,进一步包括响应于所选定的节点,根据具有后继选择可能性的节点通往所述选定节点的链接的所述重要性值而估计该具有后继选择可能性的节点;以及,提供用于选择所述估计节点的接口。
4.根据权利要求3所述的方法,其中所述估计节点进一步根据通往所述用户节点的所述链接的重要性和通往所述选定节点的所述链接的重要性而进行估计。
5.根据权利要求3或4所述的方法,其中所述估计步骤包括使用第一提名器建立提名列表并使用第一投票器和第二投票器在所述提名列表上进行投票。
6.根据权利要求5所述的方法,其中所述投票步骤包括编译来自所述第一投票器的加权投票和来自所述第二投票器的加权投票。
7.根据权利要求6所述的方法,其中对加权投票的加权是根据投票器等级表。
8.根据权利要求6或7所述的方法,其中所编译的节点按照整体投票和选择的最高投票节点顺序进行排序。
9.根据权利要求5至8中任意一项所述的方法,其中所述第一提名器提名具有来自所述第一选定节点的链接的每个节点。
10.根据权利要求5至9中任意一项所述的方法,其中所述第一投票器使用基于所述被提名节点和所述第一选定节点间的所述链接的重要性的值来为所述被提名节点投票。
11.根据权利要求5至10中任意一项所述的方法,其中所述第二投票器根据所述用户节点和所述被提名节点间的所述链接的重要性进行投票。
12.根据权利要求11所述的方法,其中所述调节包括根据用户活动性来衰低所述链接同时根据那些链接的横穿而提高特定链接。
13.根据权利要求12所述的方法,其中用户活动性是在一个时间间隔内所有用户的所有链接的链接重要性值的平均值。
14.根据权利要求12或13所述的方法,其中所述链接的衰减同样基于特定用户的所有用户链接的所述重要性值的平均值(用户因子)。
15.根据权利要求12至14中任意一项所述的方法,进一步包括根据向浏览所述链接的源节点的用户公开的所述节点的数量来衰减链接。
16.根据权利要求12至15中任意一项所述的方法,进一步包括为每个用户更新时间戳和节点标识符(URI)的用户浏览历史。
17.根据权利要求12至16中任意一项所述的方法,进一步包括增加倒数第二个链接的重要性值,该倒数第二个链接是在横穿从原始节点到目的地节点的最后链接之前所横穿的链接。
18.根据权利要求12至17中任意一项所述的方法,进一步包括增加所述用户的节点与所述目的地节点间链接的重要性。
19.根据权利要求12至18中任意一项所述的方法,进一步包括根据用户在所述目的地节点花费的时间和所述用户因子来修改所述用户的个人节点与他们所浏览的节点间的链接的重要性。
20.根据权利要求12至19中任意一项所述的方法,进一步包括增加转换中开始节点与最终节点间的链接的重要性,其中在所述开始和最终节点间有一个或多个中间节点。
21.根据权利要求12至20中任意一项所述的方法,进一步包括修改工作于所述选定节点的用户间的链接的重要性。
22.根据权利要求21所述的方法,进一步包括如果所述链接重要性低于第一阈值,则移除来自高速缓冲存储器的所述链接。
23.根据权利要求21或22所述的方法,进一步包括如果所述链接重要性的幅度高于第二阈值,则更新持久性存储器中的所述链接。
24.根据权利要求21或22所述的方法,进一步包括如果所述链接重要性的变化大于第三阈值,则更新持久性存储器中的所述链接。
25.根据权利要求23所述的方法,进一步包括将标记与所述高速缓存中的每个链接相关联,并根据链接的重要性值的变化来更新每个标记,以及,根据所述标记的状态为所述高速缓存周期性地执行所述更新步骤。
26.一种用于管理资源的系统,所述资源包括内容资源和个人资源,该系统包括用于执行权利要求2至25所述的步骤的装置。
27.一种用于处理一组或多组数据处理任务的计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序指令,当所述计算机程序指令被装载到计算机中并执行时,用于使计算机执行权利要求2至25所述的方法的步骤。
全文摘要
一种用于管理针对多用户的集成开发环境中的资源的系统、方法和计算机程序。该资源包括内容资源和个人资源二者。该方法包括管理多个表示资源的节点,所述节点包括内容节点和个人节点,其中节点包括用于参考该资源的资源参考;管理一个或多个表示资源间的一个或多个关系的链接,所述链接包括内容节点间的链接、个人节点间的链接以及内容节点与个人节点间的链接,每个链接包括用于识别该关系中的节点的节点参考和用于识别该关系的重要性的重要性值;提供用于在多个内容节点或个人节点中选择一个的接口;将要被调节的链接从持久性存储器复制到高速缓冲存储器并根据标准改变和链接的重要性值而从高速缓冲存储器中更新持久性存储器中的链接。
文档编号G06F17/30GK101069199SQ200580041158
公开日2007年11月7日 申请日期2005年12月22日 优先权日2004年12月30日
发明者C·L·伯德, A·康尼克, N·J·希尔, M·J·希斯科克, S·斯坦, S·伍利 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1