本文描述的实施例一般涉及数据库技术,更具体地涉及索引技术和方法。
背景技术:
基于关系数据库的至少一些公知应用提供了使得数据库对象能通过一个或多个关系连接至其它数据库对象的建模能力。更具体来说,这种应用使得人们能通过类型和根据连接数据库对象的关系类型来描述数据库对象。而且,一些这种应用使得能检索标准化数据。但是,标准化数据检索通常需要过多利用处理器和/或存储器。其它应用能基于索引来执行检索。但是,由于在数据库内添加、修改和/或删除节点和/或节点关系,这些索引会频繁变得过时。
技术实现要素:
在一个方案中,提供了一种用于维持多个数据库对象的投影索引的当前性(currency)的计算机实施方法。该计算机实施方法包括创建代表第一数据库对象和至少第二数据库对象之间的连接的投影索引,确定第一数据库对象和至少第二数据库对象之间的实体依赖,确定第一数据库对象和至少第二数据库对象之间的路径依赖,以及响应于对实体依赖和路径依赖两者中的一个或两个的修改来更新投影索引。在另一方案中,计算机系统包括存储区,该存储区被配置为存储多个数据库对象,所述多个数据库对象包括通过实体依赖和路径依赖连接的至少第一数据库对象和第二数据库对象。存储区还存储数据库对象的投影索引,使得第一数据库对象和至少第二数据库对象之间的关系以关联第一数据库对象的方式存储。计算机系统还包括可操作地耦合至存储区的处理器。处理器被配置为确定第一数据库对象和至少第二数据库对象之间的实体依赖,确定第一数据库对象和至少第二数据库对象之间的路径依赖,以及响应于对实体依赖和路径依赖两者中的一个或两个的修改来更新投影索引。在另一方案中,提供了用于维持多个数据库对象的投影索引的当前性的计算机程序产品,所述计算机程序产品包括具有计算机可执行部件的一个或多个计算机可读存储介质。所述部件包括索引部件,当其由处理器执行时引起该处理器进行以下操作:在存储区中存储数据库对象,数据库对象包括通过实体依赖和路径依赖连接的至少第一数据库对象和第二数据库对象;以及在存储区中存储数据库对象的投影索引,使得第一数据库对象和至少第二数据库对象之间的关系以关联第一数据库对象的方式存储。所述部件还包括:实体依赖部件,当其由处理器执行时引起该处理器确定第一数据库对象和至少第二数据库对象之间的实体依赖;以及路径依赖部件,当其由处理器执行时引起该处理器确定第一数据库对象和至少第二数据库对象之间的路径依赖。索引部件还引起处理器响应于对实体依赖和路径依赖两者中一个或两个的修改来更新投影索引和第一数据库对象。附图说明在附图和以下说明中指出本发明的一个或多个实施例的细节。根据说明书、附图和权利要求,本发明的其它特征、目的和优势将变得明显。图1是图示了两个数据库对象之间的实体依赖和路径依赖的简单框图。图2图示了如何利用投影扁平化(flat)关系数据库。图3是图示了用于维持投影索引的当前性的示例性计算机实施方法的流程图。图4是示例性计算机系统的示意框图。图5是与图4所示的计算机系统一起使用的示例性计算机体系结构的示意框图。图6-图13是图示出本文描述的实施例的各种使用情况的框图。具体实施方式在本文描述的实施例中,术语“数据库对象”通常指的是数据库中用来存储、查询或者引用数据的任何限定对象。数据库对象的示例性类型包括表、视图、簇、序列、索引、存储过程及同义词。上述例子仅是示例性性的,因而,并不旨在以任何方式限制术语“数据库对象”的定义和/或内涵。本文描述用于维持当前数据库对象值和/或路径的系统、方法、装置和计算机程序产品的示例性实施例。本文描述的实施例利于通过识别与投影数据相关联的两种类型依赖来减少数据库中的过期数据。第一类型依赖是实体依赖,其中数据被存储为一些数据库对象的一部分,从而那些数据库对象的改变会影响对另一数据库对象的投影值。实体依赖识别单个数据库对象,并且实体依赖是使用例如对象标识符来进行描述的。第二类型依赖是路径依赖。当两个数据库对象之间的一个或多个关系被修改时,投影可以导致不同的实体集。路径依赖是能够使用例如实体标识符、关系类型和关系方向来进行描述的。图1是图示了两个数据库对象之间的实体依赖和路径依赖的简单框图。具体地,图1示出了多个数据库对象100,包括第一数据库对象(Objl)102、第二数据库对象(Obj2)104和具有值“foo”的第三数据库对象(Obj3)106。图1还示出了数据库对象100之间的多个关系108。具体地,第一关系(Rel1)110存在于第一数据库对象102和第二数据库对象104之间,第二关系(Rel2)112存在于第二数据库对象104和第三数据库对象106之间。每个关系108与关系类型相关联。例如,第一关系110与关系类型REL1相关联,第二关系112与关系类型REL2相关联。而且,每个关系108与指示两个相关数据库对象之间的依赖的方向的关系方向(诸如“朝向(to)”或者“来自(from)”)相关联。在图1的例子中,第一数据库对象102是依赖实体,因为第三数据库对象106的任何改变会潜在地改变对第一数据库对象102和/或第二数据库对象104的投影值。相应地,实体依赖114存在于第三数据库对象106和至少第一数据库对象102之间。而且,第一路径依赖116存在于第一数据库对象102和第二数据库对象104之间。如上所述,可以使用实体标识符(诸如第一数据库对象102的标识符)、关系类型以及关系方向(诸如从第一数据库对象102至第二数据库对象104)来识别第一路径依赖116。因此,如图1所示,第一路径依赖116可以识别为Obj1/REL1/from。类似地,第二路径依赖118存在于第二数据库对象104和第三数据库对象106之间。如上所述,可以使用实体标识符(诸如第二数据库对象104的标识符)、关系类型以及关系方向(诸如从第三数据库对象106至第二数据库对象104)来识别第二路径依赖118。因此,如图1所示,第二路径依赖118可以识别为Obj2/REL2/to。每个数据库对象100和关系108可以包含元数据120。当检索这种元数据120时,通常期望的是,关于所连接的数据库对象100(诸如第一数据库对象102)检索特定数据库对象100(诸如第三数据库对象106)。例如,检索可以构造为确定连接至另一数据库对象100的所有数据库对象100,而该另一数据库对象100中的其它数据库对象100具有给定元数据值。可以对标准化数据执行这种检索,对于标准化数据,保持了现存的数据库对象结构从而查询遍历所连接的数据库对象100以查看是否每个匹配给定标准。在至少一些已知的关系数据库系统中,诸如那些具有大数据集的系统中,这需要昂贵的存储器和/或处理资源。因此,本发明的实施例使得数据库对象结构“扁平化”。在这种方法中,每个数据库对象100以不同形式存储,其中其它连接的数据库对象100的元数据120投影到原始数据库对象100上,就好像连接的数据库对象100直接存在于原始数据库对象100上。这种“投影”通常称为使数据“扁平化”。而且,这种投影能够存储为可更新的索引以利于更快和更低资源密集的检索。图2图示了如何利用投影扁平化关系数据库。具体地,图2是数据库200(例如关系数据库)的框图,如上所述该数据库200包括数据库对象100和数据库对象100之间的关系108。图2的右侧是代表投影索引202的框图。具体地,图2图示了一个数据库对象(诸如第三数据库对象106)的元数据值120如何投影到另一数据库对象(诸如第一数据库对象102)上。图3是图示了用于维持数据库对象100(示于图1)的投影索引202(示于图2)的当前性的示例性计算机实施方法的流程图300。在该示例性实施例中,投影索引202被创建302,以代表第一数据库对象102和至少第二数据库对象104(两者都示于图1中)之间的连接。如图2所示,可以创建投影索引202以代表第一数据库对象102和第三数据库对象106(示于图1)之间的连接。将投影索引202存储在存储区中。而且,如以下更详细描述的,可以更新投影索引202以反映对一个或多个数据库对象100的值的修改和/或对数据库对象100之间的关系108的修改。在一些实施例中,投影索引202是这样创建的:将数据库对象100存储于存储区,使得第一数据库对象102和至少第二数据库对象104之间的实体依赖和/或路径依赖以与第一数据库对象102关联的方式存储在存储区中。在示例性实施例中,计算机处理304数据库对象100之间的一个或多个实体依赖,例如第一数据库对象102和另一数据库对象100之间的实体依赖。例如,在第一数据库对象102和第三数据库对象106之间检测实体依赖114。计算机确定306被修改或者删除的数据库对象100的列表。基于投影索引202,计算机检索存储区以确定308当第二数据库对象104和/或第三数据库对象106已经被修改或者删除时受影响的实体依赖。例如,基于投影索引202,计算机确定第一数据库对象102和第二数据库对象104和/或第三数据库对象106之间的实体依赖114是否受第二数据库对象104和/或第三数据库对象106的修改所影响。响应于确定出第一数据库对象102和第二数据库对象104和/或第三数据库对象106之间的受影响的实体依赖,计算机在存储区中指示310第一数据库对象102是非当前的。而且,计算机还处理312数据库对象100之间的一个或多个路径依赖,例如第一数据库对象102和另一数据库对象100之间的路径依赖。例如,在第一数据库对象102和第二数据库对象104之间检测第一路径依赖116(示于图1),在第二数据库对象104和第三数据库对象106之间检测第二路径依赖118(示于图1)。计算机确定314数据库对象100之间被修改或者删除的关系108的列表。基于投影索引202,计算机检索存储区以确定316当关系(诸如第一数据库对象102和第二数据库对象104之间的第一路径依赖116)已经被修改时受影响的路径依赖。类似地,计算机检测出第二数据库对象104和第三数据库对象106之间的第二路径依赖118已经被修改。响应于确定出受影响的路径依赖,计算机在存储区中指示318第一数据库对象102是非当前的。在示例性实施例中,响应于检测到的对实体依赖和路径依赖两者中的至少一种的修改,当第一数据库对象102被标注或者指示为非当前的时,计算机对投影索引202进行编索引或者更新320。例如,计算机通过更新第一数据库对象102以反映受影响的实体依赖和/或受影响的路径依赖的修改,来更新320投影索引202。图4是示例性计算机系统400的示意框图,该计算机系统400用于维持当前数据库对象值和/或路径,以及用于执行上述处理和/或与上述处理相关的额外处理。在示例性实施例中,存储区402包括一个或多个存储设备404,存储设备404用于存储:数据,例如元数据;数据库对象;数据库对象之间的关系;数据库对象之间的实体依赖;数据库对象之间的路径依赖;或者任何合适的信息或者数据。在一些实施例中,存储区402耦合至服务器系统406,服务器系统406接着经由网络410耦合至客户端系统408(例如管理员系统和/或用户系统)。存储设备404可以具体实施为一个或多个数据库,可以位于单个或者多个地址,或者可以与服务器系统406集成在一起。可以理解的是,网络410可以是诸如因特网的公共网络,或者是诸如LAN或者WAN网络的专用网络,或者它们的任意组合;网络410还能够包括PSTN或者ISDN子网络。网络410可以是有线的,诸如以太网;或者可以是无线的,诸如包括EDGE、3G和4G无线蜂窝系统的蜂窝网络。无线网络还可以是Wifi、蓝牙或者已知的任何其它无线形式的通信。因此,网络410仅仅是示例性的,而决不是要限制本公开的范围。如本领域的普通技术人员认识到的,客户端系统408可以是任何合适的计算机系统,诸如下述参考图5描述的系统,或者任何其它公知的计算系统。而且,应该理解的是,服务器系统406被配置为执行上述处理和/或与上述处理相关的任何额外处理。服务器系统406存储非瞬时性的计算机可读指令以执行上述处理,并且经由网络410将这些指令提供至客户端系统408。而且,服务器系统406还能够根据需要将来自存储区402的数据提供至客户端系统408。这样,图4包括经由云计算、分布式计算等实施计算机系统400。图5是与服务器系统406和/或客户端系统408(均示于图4)一起使用的示例性计算机体系结构500的示意框图。在示例性实施例中,计算机体系结构500包括一个或多个处理器502(CPU),处理器502执行上述处理和/或与上述处理相关的任何额外处理。应该理解的是,术语“处理器”通常指的是任何可编程系统,包括系统和微控制器、精简指令集电路(RISC)、专用集成电路(ASIC)、可编程逻辑电路和/或任何其它能够实施本文描述的功能的电路或者处理器。上述例子仅是示例性性的,因而并不旨在以任何方式限制术语“处理器”的定义和/或内涵。上述处理和/或与上述处理相关的任何额外处理的步骤可以在例如存储区504中存储为计算机可执行指令,存储区504通过系统总线506可操作地和/或通信地耦合至处理器502。在本文中所使用的“存储区”通常指的是存储程序代码和指令的任意模块,这些程序代码和指令能够由一个或多个处理器执行以帮助维持当前数据库对象值和/或路径。存储区504可以包括一种形式或者多于一种形式的存储器。例如,存储区504可以包括随机存取存储器(RAM)508,其能够包括非易失性RAM、磁性RAM、铁电RAM和/或其它形式的RAM。存储区504还可以包括只读存储器(ROM)510和/或闪存和/或电可编程只读存储器(EEPROM)。任何其它合适的磁性、光学和/或半导体存储器(诸如硬盘驱动器(HDD)512)本身或者与其它形式的存储器组合可以包括在存储区504中。HDD512还可以耦合至磁盘控制器514,磁盘控制器514用于传递消息到处理器502和从处理器502接收消息。而且,存储区504还可以是或者可以包括可拆卸的或者可移除的存储器516,例如合适的盒式磁盘、CD-ROM、DVD或者USB存储器。上述例子仅是示例性的,因而并不旨在以任何方式限制术语“存储区”的定义和/或内涵。此外,在一些实施例中,存储区504包括数据库。如本文使用的,术语“数据库”通常指的是数据的任意集合,包括层次数据库、关系数据库、平面文件数据库、对象关系数据库、面向对象数据库以及存储于计算机系统中的记录或者数据的任何其它结构化集合。上述例子仅是示例性的,因而并不旨在以任何方式限制术语“数据库”的定义和/或内涵。数据库的例子包括但不限于仅包括数据库、MySQL、DB2、SQLServer、和PostgreSQL。然而,可以使用任何实现本文所描述的系统和方法的数据库。(Oracle是加州红木海岸的Oracle公司的注册商标;IBM是纽约州阿蒙克市的国际商业机器公司的注册商标;Microsoft是华盛顿州雷德蒙德市的微软公司的注册商标;Sybase是加州都柏林市的Sybase公司的注册商标。)计算机体系结构500还包括显示设备518,显示设备518耦合至(诸如可操作地耦合至)显示控制器520。显示控制器520经由系统总线506接收数据用于由显示设备518显示。显示设备518可以是,但不限于,监控器、电视显示器、等离子显示器、液晶显示器(LCD)、发光二极管(LED)显示器、有机LED(OLED)显示器、聚合物LED显示器、表面传导电子发射显示器、包括投影和/或反射图像的显示器,或者任何其它合适的电子设备或者显示机构。而且,显示设备518可以包括具有相关联的触屏控制器的触屏。上述例子仅是示例性的,因而并不旨在以任何方式限制术语“显示设备”的定义和/或内涵。另外,计算机体系结构500包括用于与网络(图5未示出)通信的网络接口522。而且,计算机体系结构500包括一个或多个输入设备,例如键盘524和/或诸如滚球、鼠标、触摸板等的定点设备526。输入设备耦合至输入/输出(I/O)接口528并且由输入/输出(I/O)接口528控制,输入/输出(I/O)接口528进一步耦合至系统总线506。此处为了简化而省略了对显示设备518、键盘524、定点设备526以及显示控制器520、磁盘控制器514、网络接口522和I/O接口528的一般特征和功能的描述,因为这些特征是公知的。图6-图11是图示出本文描述的实施例的各种使用情况的框图。更具体来说,图6-图11图示了如何使用本文描述的实施例来解决现有技术未解决的若干问题。在图6-图11的每幅图中,假定已经创建了投影索引202。而且,下述每个例子可以由服务器系统406或者客户端系统408(两者均在图4中示出)实施。此外,图6-图11所示的每个数据库对象之间的原始关系已经参考图1进行了描述。应该理解的是,这并不是可以使用本文描述的实施例的排他性的情况集。它们仅是示意性地用来区分所描述的实施例与公知的系统和方法。图6图示了当第三数据库对象106的元数据值被修改时,上述实施例如何更新第一数据库对象102。首先,生成被修改或者删除的数据库对象100的列表。如图6所示,第三数据库对象106的值120已经从“foo”改变成“bar”。然后生成数据库对象100的列表,包括对第三数据库对象106具有实体依赖的数据库对象100。如以上所解释的,因为第三数据库对象106的任何改变都会潜在地改变对第一数据库对象102的投影值,所以第一数据库对象102具有第三数据库对象106的实体依赖114。因此,第一数据库对象102被标注为受影响对象(即,其被标注为“过时”或者非当前的)。接下来,生成被修改或者删除的关系108的列表。因为在该方案中不存在被修改或者删除的关系108,所以不存在由于受影响关系/路径依赖而被标注为“过时”或者非当前的数据库对象100。然后为标注的对象编索引以反映修改。例如,将重新创建投影索引202,使得第三数据库对象106值的投影被投影于第一数据库对象102上。图7图示了当中间数据库对象100被删除时上述实施例如何更新第一数据库对象102。首先,生成被修改或者删除的数据库对象100的列表。如图7所示,第二数据库对象104已经被删除。于是生成数据库对象100的列表,包括第二数据库对象104对其具有实体依赖的数据库对象100。因为在该方案中不存在这种数据库对象100,所以不存在标注为“过时”或者非当前的数据库对象100。接下来,生成被修改或者删除的关系108的列表。如图7所示,第一关系110存在于第一数据库对象102和第二数据库对象104之间,第二关系112存在于第二数据库对象104和第三数据库对象106之间。删除第二数据库对象104导致也删除了第一关系110和第二关系112。然后根据被修改或者删除的关系108的列表来确定受影响的路径依赖。在该情形下,删除第一关系110影响第一数据库对象102和第二数据库对象104之间的路径依赖。类似地,删除第二关系112影响第二数据库对象104和第三数据库对象106之间的路径依赖。因此,第一数据库对象102被标注为受影响对象(即,其被标注为“过时”或者非当前的)。然后为标注对象编索引以反映修改。例如,将重新创建投影索引202,使得第三数据库对象106值的投影被投影于没有路径依赖的第一数据库对象102上。图8图示了当叶子数据库对象100被删除时上述实施例如何更新第一数据库对象102。首先,生成被修改或者删除的数据库对象100的列表。如图8所示,第三数据库对象106已经被删除。然后生成数据库对象100的列表,包括对第三数据库对象106具有实体依赖的数据库对象100。如以上所解释的,因为删除第三数据库对象106会改变对第一数据库对象102的投影值,所以第一数据库对象102具有第三数据库对象106的实体依赖114。因此,第一数据库对象102被标注为受影响对象(即,其被标注为“过时”或者非当前的)。接下来,生成被修改或者删除的关系108的列表。因为在该方案中不存在被修改或者删除的关系108,所以不存在标注为“过时”或者非当前的数据库对象100。然后为标注对象编索引以反映删除。例如,将重新创建投影索引202,使得第三数据库对象106值不再投影到第一数据库对象102上。图9图示了当中间关系108被删除时或者当中间数据库对象100断开连接时,上述实施例如何更新第一数据库对象102。首先,生成被修改或者删除的数据库对象100的列表。如图9所示,第一数据库对象102和第二数据库对象104之间的第一关系110已经被删除。于是生成数据库对象100的列表,包括第二数据库对象104对其具有实体依赖的数据库对象100。因为在该方案中不存在这种数据库对象100,所以不存在标注为“过时”或者非当前的数据库对象100。接下来,生成被修改或者删除的关系108的列表。如图9所示,第一数据库对象102和第二数据库对象104之间的第一关系110已经被删除。然后根据被修改或者删除的关系108的列表来确定受影响的路径依赖。在该情形下,删除第一关系110会影响第一数据库对象102和第二数据库对象104之间的路径依赖。因此,第一数据库对象102被标注为受影响对象(即,其被标注为“过时”或者非当前的)。然后为标注对象编索引以反映修改。例如,将重新创建投影索引202,使得第三数据库对象106值不再投影到第一数据库对象102上。图10图示了上述实施例如何添加新的叶子数据库对象100。首先,生成被修改(例如,添加)的数据库对象100的列表。如图10所示,第四数据库对象(Obj3a)122已经添加,其具有元数据值124“foo2”。图10还示出了第四数据库对象122和第二数据库对象104之间的第三关系(rel2a)126。如上所描述的,每个关系108与关系类型相关联。此处,第三关系126与关系类型REL2相关联。在添加了第四数据库对象122的情况下,第三路径依赖存在于第二数据库对象104和第四数据库对象122之间。如上所述,可以使用实体标识符(诸如第二数据库对象104的标识符)、关系类型以及关系方向(诸如从第四数据库对象122至第二数据库对象104)来识别第三路径依赖。因此,第三路径依赖可以识别为Obj2/REL2/to。接下来,生成数据库对象100的列表,包括第四数据库对象122对其具有实体依赖的数据库对象100。因为在该方案中不存在这种数据库对象100,所以不存在标注为“过时”或者非当前的数据库对象100。然后生成被修改或者删除的关系108的列表。如图10所示,已经添加了第二数据库对象104和第四数据库对象122之间的第三关系126。然后根据被修改或者删除的关系108的列表来确定受影响的路径依赖。在该情形下,添加第三关系126会影响第一数据库对象102和第二数据库对象104之间的路径依赖。因此,第一数据库对象102被标注为受影响对象(即,其被标注为“过时”或者非当前的)。然后为标注对象编索引以反映修改。例如,将重新创建投影索引202,使得第四数据库对象122值现在投影到第一数据库对象102上。图11图示了上述实施例如何添加新的叶子数据库对象100和新的中间数据库对象100。首先,生成被修改(例如,添加)的数据库对象100的列表。如图11所示,已经添加了第四数据库对象(Obj3a)122,其具有元数据值124“foo2”。图11还示出了第四数据库对象122和第二数据库对象104之间的第三关系(rel2a)126。如上所描述的,每个关系108与关系类型相关联。此处,第三关系126与关系类型REL2相关联。在添加第四数据库对象122的情况下,第三路径依赖存在于第二数据库对象104和第四数据库对象122之间。如上所述,可以使用实体标识符(诸如第二数据库对象104的标识符)、关系类型以及关系方向(诸如从第四数据库对象122至第二数据库对象104)来识别第三路径依赖。因此,第三路径依赖可以识别为Obj2/REL2/to。图11还示出了已经添加的第五数据库对象(Obj2a)128。第四关系(rel1a)130存在于第一数据库对象102和第五数据库对象128之间。如上所描述的,每个关系108与关系类型相关联。此处,第四关系130与关系类型REL1相关联。在添加第五数据库对象128的情况下,第四路径依赖存在于第一数据库对象102和第五数据库对象128之间。可以使用实体标识符(诸如第一数据库对象102的标识符)、关系类型以及关系方向(诸如从第一数据库对象102至第五数据库对象128)来标识第四路径依赖。因此,第四路径依赖可以识别为Obj1/REL1/from。接下来,生成数据库对象100的列表,包括第五数据库对象128对其具有实体依赖的数据库对象100。因为在该方案中不存在这种数据库对象100,所以不存在标注为“过时”或者非当前的数据库对象100。然后生成被修改或者删除的关系108的列表。如图11所示,已经添加了第一数据库对象102和第五数据库对象128之间的第四关系130。然后根据被修改或者删除的关系108的列表来确定受影响的路径依赖。在该情形下,添加第四关系130会创建第一数据库对象102和第五数据库对象128之间的第四路径依赖。而且,已经添加了第二数据库对象104和第四数据库对象122之间的第三关系126。添加第三关系126会影响第一数据库对象102和第二数据库对象104之间的路径依赖。因此,第一数据库对象102被标注为受影响对象(即,其被标注为“过时”或者非当前)。然后为标注对象编索引以反映修改。例如,将重新创建投影索引202,使得第四数据库对象122和第五数据库对象128现在投影到第一数据库对象102上。图12图示了上述实施例如何添加第一新的叶子数据库对象100。更具体而言,图12图示了当第二数据库对象104初始不具有连接第二数据库对象104到另一数据库对象100的关系时,上述实施例如何添加第一新的叶子数据库对象。换句话说,图12图示了如何建立从新添加的叶子数据库对象到第二数据库对象104的初始关系。首先,生成被修改(例如,添加)的数据库对象100的列表。如图12所示,已经添加了第六数据库对象(Obj3a)132,其具有元数据值134“foo2”。图12还示出了第六数据库对象132和第二数据库对象104之间的第五关系(rel2a)136。如上所描述的,每个关系108与关系类型相关联。此处,第五关系136与关系类型REL2相关联。在添加第六数据库对象132的情况下,第五路径依赖存在于第二数据库对象104和第六数据库对象132之间。如上所述,可以使用实体标识符(诸如第二数据库对象104的标识符)、关系类型以及关系方向(诸如从第六数据库对象132至第二数据库对象104)来识别第五路径依赖。相应地,第五路径依赖可以识别为Obj2/REL2/to。接下来,生成数据库对象100的列表,包括第六数据库对象132对其具有实体依赖的数据库对象100。因为在该方案中不存在这种数据库对象100,所以不存在标注为“过时”或者非当前的数据库对象100。然后生成被修改或者删除的关系108的列表。如图12所示,已经添加了第二数据库对象104和第六数据库对象132之间的第五关系136。然后根据被修改或者删除的关系108的列表来确定受影响的路径依赖。在该情形下,添加第五关系136会影响第一数据库对象102和第二数据库对象104之间的路径依赖。因此,第一数据库对象102被标注为受影响对象(即,其被标注为“过时”或者非当前的)。然后为标注对象编索引以反映修改。例如,将重新创建投影索引202,使得第六数据库对象132值现在投影到第一数据库对象102上。图13图示了上述实施例如何添加第一新的叶子数据库对象100和第一新的中间数据库对象100。更具体而言,图13图示了当第一数据库对象102初始不具有连接第一数据库对象102到另一数据库对象100的关系时,上述实施例如何添加第一新的叶子数据库对象和第一新的中间数据库对象。换句话说,图13图示了如何建立从新添加的叶子数据库对象和中间数据库对象到第一数据库对象102的初始关系。首先,生成被修改(例如,添加)的数据库对象100的列表。如图13所示,已经添加第七数据库对象(Obj2a)138作为中间数据库对象100。第六关系(rel1a)140存在于第一数据库对象102和第七数据库对象138之间。如上所描述的,每个关系108与关系类型相关联。此处,第六关系140与关系类型REL1相关联。在添加第七数据库对象138的情况下,第六路径依赖存在于第一数据库对象102和第七数据库对象138之间。可以使用实体标识符(诸如第一数据库对象102的标识符)、关系类型以及关系方向(诸如从第一数据库对象102至第七数据库对象138)来识别第六路径依赖。因此,第六路径依赖可以识别为Obj1/REL1/from。图13还示出了已经添加第八数据库对象(Obj3a)142,其具有元数据值144“foo2”。图13还示出了第七数据库对象138和第八数据库对象142之间的第七关系(rel2a)146。如上所描述的,每个关系108与关系类型相关联。此处,第七关系146与关系类型REL2相关联。接下来,生成数据库对象100的列表,包括第七数据库对象138和第八数据库对象142对其具有实体依赖的数据库对象100。因为在该方案中不存在这种数据库对象100,所以不存在标注为“过时”或者非当前的数据库对象100。然后生成被修改、删除或者添加的关系108的列表。如图13所示,已经添加了第一数据库对象102和第七数据库对象138之间的第六关系140,以及第七数据库对象138和第八数据库对象142之间的第七关系146。然后根据被修改或者删除的关系108的列表来确定受影响的路径依赖。在该情形下,添加第六关系140和第七关系146会创建第一数据库对象102和第七数据库对象138之间的第六路径依赖。因此,第一数据库对象102被标注为受影响对象(即,其被标注为“过时”或者非当前的)。然后为标注对象编索引以反映修改。例如,将重新创建投影索引202,使得第七数据库对象138和第八数据库对象142现在投影到第一数据库对象102上。以上详细描述了用于维持当前数据库对象值和/或路径的系统、方法、装置和计算机程序产品的示例性实施例。但是,系统、方法、装置和计算机程序产品不限于此处描述的具体实施例,相反,可以独立地且与本文描述的其它操作和/或部件分离地利用所述方法的操作和/或所述系统和/或装置的部件。进一步地,所描述的操作和/或部件还可以限定在其它系统、方法和/或装置中,或者与其它系统、方法和/或装置结合使用,而不限于仅与本文描述的系统、方法和存储介质一起实践。计算机(例如本文所描述的计算机)包括至少一个处理器或者处理单元以及系统存储器。计算机典型地具有至少一些形式的计算机可读介质。作为例子而不是限制,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以任意方法或者技术实现的非瞬时性的、易失和非易失的、可移动的和不可移动的介质,用于存储诸如计算机可读指令、数据结构、程序模块的信息或者其它数据。通信介质典型地具体体现为计算机可读指令、数据结构、程序模块或者在诸如载波或者其它传送机构的调制数据信号内的其它数据,并且包括任意信息输送介质。本领域的技术人员熟悉调制数据信号,其具有一个或多个特性集或者以关于信号内的编码信息的方式改变。上述的任意组合也包含于计算机可读介质的范围内。虽然结合示例性计算机系统环境描述了本发明,但是本发明的实施例可与多种其它通用或者专用计算机系统环境或者配置一起操作。计算机系统环境并不意图对本发明的任何方案的使用或者功能的范围进行任何限制。而且,计算机系统环境不应该被解释为对示例性操作环境中图示的任何一个部件或部件的组合具有任何依赖或者需求。可以适用于本发明方案的公知计算机系统、环境和/或配置的例子包括但不限于个人计算机、服务器计算机、手持式或者膝上式设备、多处理器系统、微处理器系统、机顶盒、可编程消费类电子、移动电话、网络PC、小型计算机、大型计算机、包括任何上述系统或者设备等的分布式计算环境。可以在由一个或多个计算机或者其它设备执行的计算机可执行指令(诸如程序成分或者模块)的一般环境下描述本发明的实施例。本发明的方案可以用任何数量和组织的部件或者模块来实现。例如,本发明的方案不限于附图中图示的以及本文所描述的具体计算机可执行指令或者具体部件或模块。本发明的替换实施例可以包括不同的计算机可执行指令或者部件,它们具有比图示的以及本文所描述的功能更多或更少的功能。本文所描述的系统、方法、装置和计算机程序产品的示例性技术效果包括以下至少一个:(a)创建代表第一数据库对象和至少第二数据库对象之间的连接的投影索引;(b)确定第一数据库对象和至少第二数据库对象之间的实体依赖;(c)确定第一数据库对象和至少第二数据库对象之间的路径依赖;以及(d)响应于对实体依赖和路径依赖中的一个或两者的修改来更新投影索引。本文图示和描述的本发明实施例中的操作的实施或执行的顺序不是必须的,除非另有规定。也即,除非另有规定,可以以任意顺序执行操作,并且本发明的实施例可以包括比本文公开的操作更多的或者更少的操作。例如,可以想到的是,在另一操作之前、同时或之后实施或者执行特定操作也落入本发明方案的范围内。当介绍本发明方案或其实施例的元件时,冠词“一(a)”、“一(an)”、“上述(the)”和“所述(said)”意图表示存在一个或多个元件。术语“包括”、“包含”以及“具有”表示包括在内的,意味着除了列出的元件外还可以存在额外元件。该书面说明书使用包括最佳模式的例子公开了本发明,还使得本领域的技术人员能够实践本发明,包括制造和使用任何设备或者系统以及执行任何并入的方法。本发明的专利范围由权利要求限定,并且可以包括本领域的技术人员可以想到的其它例子。如果其它例子具有的结构元件与权利要求的书面语言并无不同,或者如果其它例子包括与权利要求的书面语言没有实质差别的等同结构元件,则这种其它例子落入权利要求的范围内。