调和外键引用和表安全策略的制作方法

文档序号:16637196发布日期:2019-01-16 07:08阅读:169来源:国知局
调和外键引用和表安全策略的制作方法

本申请要求于2017年5月11日提交的美国临时专利申请no.15/592,780的优先权,该美国临时专利申请要求于2016年5月19日提交的美国临时专利申请no.62/339,084的优先权,通过引用将其两者都并入本文中。



背景技术:

在计算领域内,许多情景涉及提供对数据库的访问的系统。在许多这样的情景中,数据库包括分别表示一类数据对象的一组表,其中相应的表包括表示由表来表示的该类数据对象的各种性质的一组字段或列。相应的表还包括分别表示数据对象的实例的一组记录,其中相应的记录存储针对表的相应字段的值。许多种类的数据库一般可以以这种方式来构造,包括关系数据库、键/值存储库、分层数据集(诸如可扩展标记语言(xml)文档)、对象数据库、以及面向文档的存储系统。

在许多这样的情景中,数据库的一些记录可以相互关联,其中,针对第一表的特定字段,表的记录存储与不同表的记录的标识符相对应的值。例如,第一表可以包括外键关系字段,其中一些引用记录通过外键关系字段而与第二表的被引用记录相关。引用通常通过在针对相应记录的外键关系字段中存储与被引用的表的特定记录的标识符(诸如唯一或独特键)相对应的值来实现。许多这样的数据库备选地准许这样的记录将非引用值存储在外键关系字段中,诸如指示引用表的特定记录与被引用的表中的任何记录不相关的空值。

在许多这样的数据库情景中,系统允许一个或多个请求方(诸如实体、用户、设备、应用或过程)访问数据库。访问通常经由查询引擎来提供,其中请求方提交标识期望的记录的类型的查询。查询通常根据查询语言来形成和评估,查询语言诸如结构化查询语言(sql)的变体。通常,系统评估查询以形成响应,包括满足查询的细节的记录和/或其部分。附加地,许多系统可以使得数据库的特定部分能够被安全保护,使得数据只有在查询由授权的请求方提交时才响应于查询而被提供,并且由其他请求方提交的查询按照安全参数被拒绝。例如,大型企业可以包括分别被准许访问数据库的表、表字段和/或记录的特定子集的各种公司或单位。通常,系统利用指定数据库安全的细节的安全策略,诸如数据库的哪些部分被安全保护;被准许和/或限制访问这样的部分的请求方;请求方被授权以请求的访问类型,诸如读、更新、删除以及查询请求;以及这样的请求方可以由此认证身份的机制,诸如用户名和密码证书或密码安全令牌。



技术实现要素:

提供本发明内容从而以简化的形式介绍下面在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识要求保护的主题的关键因素或必要特征,也不旨在用于限制要求保护的主题的范围。

在涉及在数据库上实现查询的情景内,对查询的评估可以涉及考虑查询中包含的请求,诸如查询所标识的资源(例如,查询中涉及的特定表、属性以及数据库的记录);查询在这样的资源上所请求的操作的类型;以及对访问请求的资源的准许。例如,数据库可以评估标识的资源是否存在;指定的操作是否适用于资源;和/或是否准许用户访问请求的资源。

然而,在一些情况下,查询可以涉及包含引用数据库的第二表的外键值的关系字段。例如,第二表可以包括充当表的键的一个或多个字段,使得这些(一个或多个)字段的值对于第二表的每个记录是唯一的,并且第二表的特定记录可以根据这样的值的组合而被引用。第一表的记录可以包含包括充当外键引用的值的关系字段。尽管数据库可以验证对用户访问在查询中标识的资源(例如,第一表和第一表的属性)的准许,但是数据库可能不进一步标识和验证对用户访问关系字段所引用的第二表的准许。即,尽管用户可以被准许访问关系字段中的值,但是用户可能不能引用这样的值所标识的第二表的记录。

结果,为了实现请求而呈现的响应可能包括与第二表的记录的标识符相对应的值。请求方可以假定所提供的数据在数据库的安全策略内,并且可能作用于由系统提供的记录,其可以包括解引用所提供的外键值,诸如通过提交到系统的后续查询。因为请求方不被准许访问这样的被引用记录存在于其中的第二表,所以系统拒绝实现请求。这样的响应可能是请求方没有意料到的,请求方可能假定由系统提供的数据(包括外键引用值)包括连贯(coherent)数据集。由请求方利用的商业逻辑可能意料不到地失败,其可能涉及引起异常和/或使交易失败和回滚。这样的结果起因于请求方与系统之间的隐性通信缺口,其中请求方预料由系统返回的数据是有效的并且可用于由请求方使用(包括解引用),而系统有效地提供外键引用值而不验证第二表中的被引用记录对请求方的后续可访问性。

鉴于这样的情况,本公开内容提供了用于调和数据库表安全策略和外键关系的技术。根据这样的技术,系统可以存储第一表的关系字段,其包括引用数据库的第二表的值。系统可以从请求方接收包括涉及第一表的记录的查询的请求,其中记录包括针对关系字段的引用第二表的值。鉴于本文中呈现的考虑,系统可以评估请求的上下文,其中上下文是对查询的补充,并且其中上下文与关系字段相关。基于上下文,系统可以生成用不引用第二表的替代值来替代引用第二表的值的响应。系统可以之后呈现包括替代值的响应,以便实现请求。

关系字段的值的替代可以以各种方式来实现。第一种这样的技术可以涉及将第一表的相应记录表示为主记录,其响应于由非授权请求方进行的查询而提供针对关系字段的替代值。针对关系字段的值的替代可以通过利用替代值来覆写关系字段而实现,替代值之后响应于在表上的查询而被提供。在该第一示例的第二种这样的变型中,系统可以制止覆写记录中的非替代值。代替地,在查询时,可以评估查询的上下文,并且可以响应于查询而选择性地用替代值来替代现有值,甚至对于具有针对关系字段的非替代值的记录。作为一个这样的示例,系统可以将该选择性基于请求的上下文,其中上下文是对查询的补充。例如,上下文可以涉及请求的细节,诸如请求方的访问准许:对授权的请求方的响应可以包括相应记录中的默认值或非替代值。这些细节可以与请求有关,但是可以在查询中即不是指定的也不是隐式的,其可以简单地指定在数据库的指定资源上的选择和投影逻辑。对非授权的请求方的响应可以导致针对关系字段的替代值被替代,而不管记录的内容如何。在其他变型中,系统可以将对表的记录的外键字段的更新限制于特定上下文(例如,从占有如数据库管理员、用户的这种角色的用户和/或自动化过程接收到的请求)。系统可以通过在表的更新期间隐藏关系字段以便将对新值的写入限制于记录的关系字段来实现替代。以这种方式,根据作为对查询的补充的上下文,系统使非授权的上下文接收针对表的记录的关系字段的替代值。

用于实现对关系字段的值的替代的第二种这样的示例涉及复制表的记录,针对访问表的请求的每个上下文具有一个上下文特定副本。例如,如果包括关系字段的表在三个上下文中可访问,则系统可以自动地存储表的相应记录的上下文特定副本,其中,针对特定记录,每个上下文特定副本表示响应于特定上下文中的查询而要被提供的记录的版本。当请求被接收到时,系统可以检查请求的上下文,其中上下文是对查询的补充,并且其中上下文与关系字段相关。例如,检查可以涉及对第二表在该特定上下文中可访问的记录的上下文特定副本的标识,其中上下文特定副本可以指定关系字段的替代的(例如,默认)值或者非替代的(例如,原始)值。如果请求的上下文指示第二表在该特定上下文中不可访问,则记录的上下文特定副本可以仅仅指定针对关系字段的替代值。以这种方式,系统评估请求的上下文,其中上下文是对查询的补充,以向非授权的上下文呈现包括针对表的记录的关系字段的替代值的响应。根据本文中呈现的技术,系统配置的这些和许多其他变化可以以减少可能由于对外键引用的使用而引起的异常和意料不到的结果的方式支持对数据库的访问。

为了完成前述和相关目的,以下描述和附图阐述了某些说明性方面和实现。这些仅仅指示可以采用一个或多个方面的各种方式中的几种。本公开内容的其他方面、优点和新颖特征当结合附图考虑时将从下面的详细描述中变得显而易见。

附图说明

图1是表征包括一组相关记录的数据库的示例情景的图示。

图2是表征针对图1的数据库形成的查询及其结果的示例情景的图示。

图3是根据本文中呈现的技术的表征系统配置的两个示例的示例情景的图示,系统配置将针对表的记录的关系字段的替代值提供给不准许访问相关的表的上下文。

图4是根据本文中呈现的技术提供对数据库的访问的示例系统的图示。

图5是根据本文中呈现的技术提供对由系统存储的数据库的访问的示例方法。

图6是根据本文中呈现的技术的存储使系统提供对数据库的访问的指令的示例计算机可读存储设备的图示。

图7是根据本文中呈现的技术的表征可以使系统呈现替代值而非引用第二表的第一表的关系字段的值的各种请求的一组上下文的示例情景的图示。

图8是根据本文中呈现的技术的表征对用于应用到数据库表的查询的修改的示例情景的图示。

图9是根据本文中呈现的技术的表征对在涉及数据库表的重复记录配置的上下文中提供的查询的参数化的示例情景的图示。

图10是根据本文中呈现的技术的表征将重复记录配置的表的字段的更新传播到表的其他上下文特定副本的触发的示例情景的图示。

图11是根据本文中呈现的技术的表征对在数据库表的重复记录配置中的记录的表示的示例情景的图示。

图12是本文中阐述的条款中的一个或多个可以被实现于其中的示例计算环境的图示。

具体实施方式

现在参考附图来描述要求保护的主题,其中类似的附图标记用于始终指代类似的元件。在下面的描述中,为了解释的目的,阐述了许多具体细节以提供对要求保护的主题的透彻理解。然而,可以显而易见的是,要求保护的主题可以在没有这些具体细节的情况下来实践。在其他实例中,结构和设备以框图形式示出以便支持描述要求保护的主题。

a.引言

图1是表征可以由系统存储的数据库102的示例情景100的图示。数据库102包括分别表示由数据库102存储的一类数据对象的一组表104(例如,第一表104存储表示个体的数据;第二表104存储表示这样的个体的身份的数据;并且第三表104存储所表示的个体的健康记录,诸如来自访问医师的医学记录)。相应表104继而包括限定由表来表示的数据对象的各种性质的一组字段106。例如,表示个体的身份的表104可以包括针对个体的名字和诸如电话号码的联系方式标识符的字段106,而表示个体的健康记录的表104可以包括针对访问医师办公室的数据和所提供的服务的类型的字段106。数据库102的相应表104还包括一组记录108,每个记录表示针对其而提供表104的数据对象类型的实例。相应记录108存储针对表104的相应字段106的值110,诸如布尔值、数字、字符串、文本的块、或者利用串行格式编码的嵌入的数据对象。

数据库102的结构还准许表104的记录108的相互关联。表104的特定字段106可以包括表示记录108与不同表104的对应记录108之间的关系112的引用值。例如,表示个体的第一表104不直接编码针对表示个体的身份的各个方面的字段106的值110。代替地,第一表104的字段106存储独特地标识表示个体的身份的身份表104的特定记录108的引用值110。这种类型的关系112通常被标识为外键关系,其中被引用的表104的相应记录108可由“键”(诸如一个字段106的值110、或者字段106的组合,其相对于表104的其他记录108是唯一的或至少独特的)标识,并且其中被引用的表104的记录108存储针对与“外”或被引用的表104的键相对应的引用字段106的值110。相应记录108的外键引用值110可以因此用于将记录108与外表104的对应记录108相关联。以这种方式,数据库102可以存储根据对数据库102表示的数据对象的汇集进行建模的专门设计结构而相互关联的记录108的集合。

图2是描绘对在图1的示例情景100中呈现的数据库102的访问的示例情景200的图示。在该示例情景200中,包括请求访问数据库102的各个部分的查询212的一组请求210被接收。这样的查询212可以根据诸如以下的查询语言来形成和/或评估:结构化查询语言(sql)的变体;针对xml结构化文档而提供的xpath查询语言;和/或针对面向非结构化文档的存储系统而指定的“twig”查询。数据库102可以评估查询212并且返回包括与查询212相匹配的一组记录108的响应218。

如在该示例情景200中进一步图示的,数据库102以实现在各种上下文中仅访问数据库102的特定部分的请求的方式被安全保护。例如,安全策略202可以指示相应表104被准许仅由所选择的实体204、仅在某些地理区域中、或者仅在某些计算环境中被查询。由其他实体204提交的查询212要被拒绝,并且可以导致各种行为。在图1-图2的示例情景100、200中呈现的示例数据库102表示关于各种个体的健康保险信息的数据库,其对以下两个实体204可访问:发票服务(其被准许访问全部三个表)以及个体的雇主(其被准许访问个体和身份,但是根据医疗隐私法被限制访问个体的实际健康记录)。安全策略202表示针对相应实体204的对相应表104的准许206和限制208。

在该示例情景100中,请求方216的身份被用作针对请求210的上下文,其中上下文214是对查询212的补充。即,同时查询212指示数据库102的在查询212中涉及的资源,诸如表104的名字、属性和存储的流程以及作为查询212的部分的应用到其的逻辑操作。如在图2的示例情景200中例示的,信息与请求210有关并且是对查询212的补充。上下文214的确定可以更改由系统提供的响应218以实现查询212。例如,安全策略202可以在通过以下来实现查询212时被应用:评估作为对查询212的补充的上下文214,并且具体地验证请求210的请求方216被准许访问数据库102的所查询的部分。

作为第一这样的示例,充当请求方216的发票实体204向数据库102提交包括查询212的第一请求210,数据库102将查询212中指定的表104与安全策略202进行比较,验证请求方216具有访问查询的表104中的全部的准许206,并且提供包括所请求的数据的响应218。作为第二示例,雇主实体204向数据库102提交涉及包含个体和健康记录表的查询212的请求210,并且因为安全策略202而禁止这样的访问。数据库102可以发现在查询212中标识的表104中的至少一个被指定在安全策略202的限制208中,并且响应218包括指示拒绝提供由查询212请求的记录108的安全异常。尤其地,在第一请求210和第二请求210两者中都提交的查询212可以是类似的或甚至相同的,但是可以基于每个请求210的不同上下文214而提示不同结果,其中上下文214与请求210和关系字段有关,并且其中上下文214是对查询212的补充。以这种方式,数据库102将安全策略202应用到对查询212的评估,并且据此提供响应218和与请求的上下文214一致响应218和所请求的记录108。

然而,在该示例情景200中,可能由于数据库102的结构与安全策略202之间的逻辑缺口而出现问题。在前两个示例中描述的模型中,请求方216可以预料两种类型的响应218中的一种:请求方216被准许访问和利用的记录108的提供,或者标识安全异常的对查询212的拒绝。然而,在图2的示例情景200中呈现的第三示例涉及由请求方216(即,雇主实体204)对仅涉及个体表104的查询212,对于该个体表,安全策略202指示针对雇主实体204的准许206。因此,数据库102提供个体表104的所请求的记录108,其包括包含到身份表104的相应记录108的外键引用值110的“身份”字段106。查询212的成功实现可以由请求方216解读为对使用提供的记录108的准许206,并且可以通过对返回的记录108应用进一步商业逻辑来进行。这样的商业逻辑可以包括例如解引用在响应218中提供的外键引用值110。然而,解引用所提供的值涉及访问数据库102的身份表104,对于该身份表,安全策略202指示当由雇主实体204请求时的限制208。因为将提供的外键引用值110解读为对使用由此标识的数据准许,这样的响应可以是请求方216没有意料到的。如果请求方216还没有预料到这种结果,则请求方216的商业逻辑可以以意料不到的方式表现,包括由于损坏的或拒绝的数据而发出异常,或者不正确地利用返回的错误消息作为损坏进一步处理的有效数据。

如在图2的第三示例中例示的由于外键引用和安全策略202的交叉而出现异常在数据处理领域中呈现重大问题。可能出现导致数据驱动的过程在意料不到的时间失败和/或以畸变的方式表现的异常。重写查询212以预料和/或减轻这样的响应可以消耗大量开发和/或数据库管理员资源,并且在一些情况下可能涉及数据库102的重新设计。备选地,一些提供方可以被强制在不期望地增加安全策略202(例如,限制一些实体204访问原本准许的表104(如果它与限制的表104相关的话))和/或不期望地放松安全策略202(例如,准许一些实体204访问它们原本不应当被准许访问的表104,以便减少意料不到的数据访问异常)之间进行选择。这些和其他缺点可能以图2的示例情景200中图示的方式由于外键引用和数据库安全策略202的交叉而出现。

b.呈现的技术

本文中呈现的技术涉及以如下的方式提供对数据库102的访问:减少或避免诸如在图2的示例情景200中图示的由于数据库102的外键引用和表安全策略202的交叉而出现的问题。

根据本文中呈现的技术,系统可以提供对数据库102的访问,数据库102包括第一表104,第一表104包含关系字段,该关系字段针对相应记录包括引用数据库102的第二表104的记录的值110。系统可以确定数据库102的第一表104的关系字段106包含引用数据库102的第二表104的值110。系统可以接收根据涉及第一表104的记录108的查询212来访问数据库102的请求210,其中记录108针对关系字段106包括引用第二表104的值110。系统可以标识请求210的上下文214,其中上下文214是对查询212的补充,并且其中上下文214与在查询212中指定的关系字段相关。基于上下文214,系统可以生成用不引用第二表104的替代值来替代引用第二表104的值110的响应218。系统可以之后提供响应218以便实现请求210。

图3是这样的技术可以被实现于其中的两个示例情景300的图示。图3的示例情景中的每一个涉及包括响应于一组请求210而可访问的表104的数据库102,其中对请求210的处理导致对表104的满足查询212的细节并且作为实现请求210的响应218被提供的记录108的标识。在图3的每个示例中,表104的至少一个字段106包括关系字段306,关系字段306包括分别表示对第二表104(未示出)的外键引用的值110,第二表104仅响应于一些请求210可访问。这样的确定指示问题的可能性可以出现,诸如在图2的第三示例中图示的那些,其中响应218被提供以按照安全策略202实现请求210,其中响应218包括在针对表104的相应字段106的存储在记录108中的值110,并且其中字段106中的一些表示引用第二表104的关系字段,其基于与关系字段306相关的一些请求210的上下文214被准许,但是基于与关系字段306相关的其他请求210的上下文214被禁止。因此,在图3的示例中,数据库102应用本文中呈现的技术以避免提供在请求210的上下文214中不准许被解引用的这样的外键值110。这样的技术涉及评估请求210的上下文214,其中上下文214是对查询212的补充,其中上下文214与关系字段306相关,并且确定代替提供引用第二表104的关系字段306的值,响应218可以代替地包括不引用第二表104的替代值。根据本文中呈现的技术,通过用替代值来替代关系字段306的值110并且呈现响应218以实现请求210,系统满足在数据库102上的请求210。

在图3中图示的第一示例情景302中,通过复制表104的记录108来实现对替代值304的提供,其中相应记录108被复制以产生记录108的一组上下文特定副本314。例如,图3的第一示例情景302中的表104被确定为包括关系字段306(即,“健康”字段106),其中一些记录108的关系字段306中的一些外键引用值110是指一些上下文214不被准许访问的“健康记录”表104中的对应记录108。因此,表104的个体记录108被表示为一组上下文特定副本314,其中记录108的一个上下文特定副本314被生成以用于针对记录108的请求210的相应上下文214。附加地,上下文字段308被添加到表104以指示相应上下文特定副本314相关联的上下文214。例如,因为第一示例情景302中的表104对三个上下文214可访问,所以个体记录108被复制成三个上下文特定副本314,各自针对上下文字段308标识当涉及记录108的请求在特定上下文214中被提交时该上下文特定副本314要被提供给的特定上下文214的上下文特定值310。附加地,对于关系字段306,针对记录108的相应上下文特定副本314而存储的值110可以被更新以指示要被提供的值110。例如,当发票实体204提交在个体表104上的查询212时,关系字段306的初始值110(引用健康记录表104的记录108)要被提供,反映对发票实体204访问健康记录表104的准许206。因此,初始值110被保留在记录108的特定于上下文214并且在该示例中特定于发票实体204的上下文特定副本314的关系字段306中。相反,当雇主实体204提交在个体表104上的查询212时,响应218排除关系字段306的初始值110,因为反映出发票实体204请求访问健康记录表104的上下文214的限制208。因此,针对其中雇主实体204请求访问健康记录表104的上下文214,在记录108的上下文特定副本314的关系字段306中,用替代值304覆写初始值110。针对表104的查询212还可以被参数化以标识上下文214(例如,请求方216),并且使得用于包括在响应218中的记录108的对应的上下文特定副本314能够被选择。

作为第二示例312,针对包括引用在这样的请求210的所有上下文214中不可访问的第二表104(对所有请求方216不可访问的第二表104)的关系字段306的第一表104,可以针对关系字段306提供替代值304。在该第一示例情景302中,替代值304被写入到针对第一表104的关系字段306的记录108中,从而覆写可能先前已经针对关系字段306存储的任何其他值110。备选地(尽管未示出),写入表104的记录108中的值110可以被保留,但是可以在响应218包括表104的关系字段306时针对记录108提供替代值304。作为另外的可选变型,表104可以包括上下文字段308,其包括标识其中记录108要作为响应218被提供的请求210的上下文214的上下文特定值310。此外,上下文字段308可以被设置为包括请求210的所有上下文214的主上下文值310,由此使得单个记录108能够在任何这样的上下文214中被包括在对请求210的响应218中。对上下文字段308和主上下文值310的包括促进数据库102的可配置性(例如,通过准许管理员在上下文特定的重复记录数据库配置与主记录数据库配置之间进行切换);在两种配置中对上下文字段308的包括使得特定解决方案能够被更改而无需更新表104的结构。根据本文中呈现的技术,这些和其他示例可以用于支持访问系统的数据库102。

c.技术效果

本文中呈现的技术用于使系统提供对数据库102的访问的各种使用可以得到各种技术效果。

可以通过本文中呈现的技术实现的第一个技术优点涉及减少并且可能避免在上下文214(其是对请求210的查询212的补充)中响应于请求210而提供外键引用值110,并且其中上下文214与关系字段306相关,其中关系字段306与之相关的表104在请求210的上下文214中不可访问。因为这样的情况可能在(诸如在图2的示例情景200中的第三示例中图示的)这样的上下文214中出现安全异常和/或引起意料不到的行为,所以使用本文中呈现的技术来在这样的情况下提供替代值304而非不能被解引用的初始值110促进对由此服务的系统和/或数据驱动的应用的功能。

可以通过本文中呈现的技术实现的第二个技术优点涉及数据库102和/或数据库服务器的管理。例如,图3中的示例情景302、312图示了保护关系字段306和存储在其中的参考值110的自动化方法。即,对关系字段306的标识和从响应218中去除引用值110的任务既不需要在指定表104的定义期间数据库设计方的关注、设计适用于表104的查询的查询设计方的关注、指定数据库102的准许206和/或限制208的安全策略设计方的关注;也不需要提交查询212并且接收响应218的请求方216的关注。相反,用替代值304来替代关系字段306的值110可以在配置时通过指令数据库102应用诸如本文中呈现的技术来实现。数据库102能够实现配置选项(例如,使用图3中的示例情景302、312中的技术)而无需进一步涉及数据库102的管理员和/或用户(例如,无需涉及数据库102的重组,查询212的重新设计,和/或在各种上下文214中调整商业逻辑以预料包括打破的引用值110的响应218)。

可以通过本文中呈现的技术实现的第三个技术优点涉及数据库102的扩展性和/或性能。本文中呈现的技术的一些变型(诸如图3的示例情景302、312中的技术)提供通过更改数据库102的记录108,例如通过创建和存储相应记录108的上下文特定副本314和/或用主记录情景中的关系字段306的替代值304来替代初始值110,来完全地或主要地完成替代。因此,查询的实现可以利用这样预先配置的信息来仅提供在请求210的上下文214中对于其准许解引用的引用110,而不应用在查询期间被执行的显著的附加逻辑以完成对这样的内容的呈现。通过减少完成查询212的处理复杂度,本文中呈现的技术的一些这样的变型可以减少所完成的请求的延时,和/或以促进数据库102的扩展性的方式增加对响应218的请求210的数目和/或吞吐量。

可以通过本文中呈现的技术实现的第四个技术优点涉及促进对数据库102的安全策略202的一致应用。例如,如先前所指出的,寻求避免这样的打破的外键引用情景的数据库管理员有时被迫在过度应用安全策略202(例如,将对表104的访问限制于原本具有访问的准许206的一些上下文214)与应用安全策略202不足(例如,放松对应当在一些上下文214中禁止访问的表104的约束208)之间进行选择。对本文中呈现的技术的使用提供使得数据库102的安全策略202能够更精确且一致应用的附加配置选项。

可以通过本文中呈现的技术实现的第四个技术优点涉及以减少不利安全漏洞的方式对安全策略202的更忠实应用。例如,在安全策略202中包括对特定表104的限制208表示特定实体204不应当被准许接收关于表104的内容的信息的指示。当有必要实现这样的安全策略202时阻挡对所标识的表104的访问可能是不够的,其中然而,关于表104的内容的一些信息可用于实体204被准许访问的另一表104的关系字段306中的实体204。例如,对个体表104的关系字段306中与数据库102的第二表104中的记录相对应的引用值110的检查可能揭示第二表104的记录108的总数目;第二表104中与第一表104中的相应记录108相关联的记录108的数目;和/或其之间的关系的本质,诸如第二表104中与第一表104的其他字段106的值110中的特定模式相对应的记录108的数目。例如,即使上下文214不准许访问存储了特定个体的健康记录的表104,请求方216也可以检查个体表104的引用值110以确定特定个体具有健康表104中的对应记录108,以及在一些情景中,健康表104中指示个体已经对医师做出的访问的数目的这样的记录108的数目。这样的信息可以表示与安全策略202相反的安全信息的重大泄漏,甚至当安全策略202直接如所指定的被应用时。许多这样的技术效果可以从本文中呈现的技术的各种实施例中出现。

d.示例实施例

图4呈现本文中呈现的技术的第一示例实施例,其被图示为响应于对包括查询212的请求210来提供对数据库102的访问的示例数据库服务器402。在该示例情景400中,数据库服务器402包括处理器404和存储指令的存储器406,指令当由处理器404执行时实现根据本文中呈现的技术操作的示例系统408。存储器406还可以存储数据库服务器402的其他组件,诸如数据库102和/或安全策略202,或者数据库服务器402的不同存储器可以存储这些附加组件中的一些或全部(例如,第一存储器可以存储数据库102;第二存储器可以存储安全策略202,并且第三存储器406可以存储系统408的一个或多个组件)。

示例系统408包括请求响应器410,其接收包括涉及第一表104的记录108的查询212的请求210,其中记录108针对关系字段306包括引用第二表414的值110。示例系统408还包括上下文评估器412,其评估请求210的上下文214,其中上下文214是对查询212的补充,并且其中上下文214与关系字段306相关。例如,数据库服务器402可以确定在请求210的上下文214内第二表414是否可访问。如果第二表414在请求210的上下文214内不可访问,则基于请求210的上下文214,对查询212的处理可以生成用替代值304来替代结果集合的记录108中的关系字段306的值110的响应218。数据库服务器402可以在实现请求210中返回响应218。以这种方式,示例系统408使得图4的示例情景400中的数据库服务器402能够根据本文中呈现的技术提供对数据库102的访问。

图5是本文中呈现的技术的第二示例实施例的图示,其被图示为提供对数据库102的访问的示例方法500,数据库102包括至少两个表104,其分别包括字段106和包括针对相应字段106的值110的一组记录108。示例方法500可以被实现为例如存储在数据库服务器402的存储器组件中并且被组织以使得当在设备的处理器上被执行时使数据库服务器402根据本文中呈现的技术来操作的指令集,存储器组件例如为存储器电路、硬盘驱动器的盘片、固态存储设备、或者磁盘或光盘。

示例方法500在502处开始并且包括接收504包括涉及第一表104的记录108的查询212的请求210,其中记录108针对关系字段306包括引用数据库102的第二表414的值110。示例方法500还包括标识506请求210的上下文214,其中上下文214是对查询212的补充,并且其中上下文214与关系字段306相关。示例方法500还涉及基于请求210的上下文214,生成508对请求210的响应210,该响应用不引用第二表414的替代值304来替代引用第二表104的值110。示例方法500还涉及提供510响应于请求210的响应218。以这种方式,示例方法500使得数据库服务器402能够根据本文中呈现的技术提供对数据库102的访问,并且因此在512处结束。

又一实施例涉及一种计算机可读介质,其包括被配置为应用本文中呈现的技术的处理器可执行指令。这样的计算机可读介质可以包括各种类型的通信介质,诸如可以通过各种物理现象并且在各种有线情景(例如,经由以太网或光纤线缆)和/或无线情景(例如,诸如wifi的无线局域网(wlan)、诸如蓝牙的个人局域网络(pan)、或蜂窝或无线电网络)中传播的信号(例如,电磁信号、声波信号、或光学信号),并且其编码一组计算机可读指令,该组计算机可读指令当由设备的处理器执行时使设备实现本文中呈现的技术。这样的计算机可读介质还可以包括(作为不包括通信介质的技术的类别)计算机可读存储器设备,诸如存储器半导体(例如,利用静态随机存取存储器(sram)、动态随机存取存储器(dram)和/或同步动态随机存取存储器(sdram)技术的半导体)、硬盘驱动器的盘片、闪存设备、或磁盘或光盘(例如cd-r、dvd-r、或软盘),计算机可读存储器设备编码一组计算机可读指令集,该组计算机可读指令当由设备的处理器执行时使设备实现本文中呈现的技术。

可以以这些方式设想的示例计算机可读介质在图6中被图示,其中实现600包括计算机可读存储器设备602(例如,cd-r、dvd-r或硬盘驱动器的盘片),其上编码了计算机可读数据604。该计算机可读数据604又包括一组计算机指令606,其当在诸如数据服务器402的设备610的处理器608上被执行时使设备610根据本文中阐述的原理来操作。在第一这样的示例中,计算机可读存储设备602的处理器可执行指令606可以产生根据本文中呈现的技术提供对数据库102的访问的数据库服务器,诸如图4的示例情景400中的示例数据库服务器402。在第二这样的示例中,计算机可读存储设备602的处理器可执行指令606可以产生使数据库服务器402根据本文中呈现的技术操作的示例系统,诸如图4的示例系统408。在第三这样的示例中,处理器可执行指令606可以使诸如数据库服务器402的设备执行根据本文中呈现的技术的提供对数据库102的访问的方法,诸如图5的示例方法500。被配置为根据本文中呈现的技术来操作的许多这样的计算机可读介质可以由本领域普通技术人员设想。

e.变型

本文中讨论的技术可以利用在许多方面中的变型来被设想,并且一些变型可以呈现附加的优点和/或减少关于这些和其他技术的其他变型的缺点。此外,一些变型可以被组合实现,并且一些组合可以通过协同合作来表征附加的优点和/或减少的缺点。变型可以被并入在各种实施例中(例如,图4的示例数据库服务器402;图4的示例系统408;图5的示例方法500;和/或图6的示例计算机可读存储设备602)以赋予这样的实施例上的个体和/或协同优点。

el.情景

可以在这些技术的实施例间变化的第一方面与其中可以利用这样的技术的情景相关。

作为该第一方面的第一变型,本文中呈现的技术可以用于实现各种设备作为以本文中呈现的方式配置的数据库服务器402的配置,诸如工作站、膝上型计算机、平板计算机、移动电话、游戏控制台、便携式游戏设备、便携式或非便携式媒体播放器、诸如电视的媒体显示设备、家用电器、家庭自动设备、与集成了诸如眼镜或手表的可穿戴设备集成的计算组件、以及监控和数据采集设备。

作为该第一方面的第二变型,本文中呈现的技术可以用于许多类型的数据库102,诸如关系数据库;键/值存储库;分层数据集(诸如可扩展标记语言(xml)文档);对象数据库;以及面向文档的存储系统。可以认识到,尽管本文中的示例利用关系数据库作为熟悉的示例,但是这样的关系数据库的各种元素通常在其他数据库类型中具有功能等价要件。例如,在对象数据库中,表104的记录108可以对应于特定对象类型的对象的实例;字段106和记录108的值110可以对应于字段和对象实例的值110;并且不同表104中的相关记录108之间的关系112可以对应于存储在一个对象实例中的并且引用不同对象实例的指针或引用。鉴于各种类型的数据库间的这样的功能等价要件,本文中呈现的技术适用于各种各样的数据库以解决可能在其中出现的类似类型的问题。类似地,针对这样的数据库102而指定的查询212可以使用诸如以下的各种查询语言来实现:结构化查询语言(sql)的变体;针对xml结构化文档而提供的xpath查询语言;和/或针对面向非结构化文档的存储系统指定的“twig”查询。

作为该第一方面的第三变型,本文中呈现的技术可以用于许多类型的安全策略202可能已经被应用于其的数据库102。这样的安全策略202可以包括例如指定其中对数据库102的相应表104的访问被准许和/或被限制的上下文214的表级安全策略202;指示针对各种上下文214对数据库的准许206和/或限制208的上下文级安全性;和/或指示适用于数据库102的查询212的类型的查询级安全性。许多这样的情景可以是本文中呈现的技术可以适用于其的设备。

e2.上下文和上下文确定

可以在本文中呈现的技术的实施例间变化的第二方面涉及请求210的上下文214,其中相应上下文214是对查询212的补充,并且其中查询指定数据库102的第一表104,并且其中相应上下文214与第一表104中的关系字段306相关,其中关系字段306包括与数据库102的第二表104相关的值。

如先前所指出的,上下文214与请求210相关,并且是对查询212的补充。例如,查询212可以标识要在数据库102上执行的逻辑操作以检索一些数据,诸如数据库102的一组表和字段的标识;指定要在指定的表和字段上应用的准则以标识满足准则的子集的where(其中)操作符;以及select(选择)子句,其投影要作为响应而被递送的子集的某些属性,诸如子集的记录的某些属性,或者要在子集上执行的计算,诸如对子集进行排序、计数以及将子集限制于特定数目的记录。然而,作为对查询212的补充,请求210可以包括影响查询212要如何被处理以及结果要如何被返回的各种信息。这样的信息可以包括:请求210被提交给系统的时间、地点和/或方式;由该请求方216或其他请求方216提交给系统和数据库102的先前的、同时的和/或随后的请求210的历史;和/或关于系统的细节,诸如在评估请求210中涉及的其当前处理负载或时间量。请求210的这些附加属性可能影响请求210的处理,同时不由查询212指定和/或隐含在由查询212指定的逻辑操作中;实际上,指定相同查询212的各种请求210可以由于每个这样的请求210被呈现在其中的不同的上下文214而得到不同的响应。此外,这些细节可以与第一表104中引用数据库的第二表104的关系字段306相关。上下文214可以因此基于请求210的作为对查询212的补充的细节来支持针对数据库102的查询212的处理。

如先前所指出的,请求210的上下文214可以涉及请求方216(例如,请求方216的身份,和/或由请求方216占有的角色)。图7是提供上下文214的各种附加示例的一些示例情景700的图示,上下文214的各种附加示例与第一表104的关系字段306相关的并且针对一些请求210可以产生表征用替代值304替代关系字段306的值110的响应218,其中替代值304不引用数据库102的第二表104。尤其地,在这些示例情景700中,对不同请求210的响应218关于对替代值304的替代而变化,即使在每个请求210中呈现相同的查询212。

在第一示例情景702中,对数据库102的第二表104的访问取决于请求210所源自的位置704。例如,数据库102可以包括第一表104,第一表104包括关于医学研究的记录,第一表104包括引用包含标识每个研究中涉及的人的记录的第二表104的关系字段306。此外,医疗隐私法可以指示关于人的记录要在特定国家内被保留,并且因此可能仅响应于在特定位置704中发起的请求210(例如,源自美国的请求)而被公开,而源自其他位置704的请求210要被阻止访问包括对人的这样的引用的研究。在该示例情景702中,上下文214(即响应218要被递送到的地理位置)与数据库102的第一表104的关系字段308相关,即,针对个体研究的患者数据是否可以被包括在响应218中。

因此,请求210的位置704可以被评估为上下文214,其中请求210被发起的位置704确定提交请求210的请求方216是否被准许访问数据库102的人员表104。对于与包括源自美国内的位置704的第一上下文214相关联的第一请求210,数据库102可以评估第一上下文214并且确定请求210被准许访问研究表104和人员表104两者,并且可以因此返回包括引用针对每个研究的人员表的值110的响应218。对于与包括源自英国内的位置704的第二上下文214相关联的第二请求210,数据库102可以评估第二上下文214并且确定请求210不被准许访问人员表104,并且可以因此返回用替代值304(诸如空)来替代响应218的每个记录中的关系字段306的部分的响应218。

在第二示例情景706中,公司的数据库102可以包括由各个客户持有的账户的列表,并且尽管账户可以是公共知识,但是持有这样的账户的客户可以是私人的。安全策略202可以根据请求210的逻辑位置来实现,其中私人客户仅针对由公司的私有局域网(lan)内的设备发起的请求210才被披露。因此,请求210的上下文214可以被评估为请求设备的ip地址708。即使禁止公共请求210访问客户表104,但是针对账户表104的关系字段308而存储的值110的提供可以不利地公开一些这样的信息(例如,针对关系字段308具有相匹配的值110的两个账户由相同客户持有)。在该示例情景706中,请求210的逻辑位置表示与账户表104的关系字段308相关的上下文214,关系字段308仅针对如由ip地址708指示的公司内的请求210要包括关于与账户相关联的客户的信息。

因此,可以接收第一请求210,其包括在数据库102的账户表104上的查询212,其可以评估请求设备的ip地址708并且确定第一请求210的上下文214准许公开关系字段308中存储的引用数据库102的客户表104的值110。因此,为实现请求210而返回的响应218可以包括针对数据库102的账户表104的关系字段308而存储的值110。相反,在局域网外部(例如,未知的公共地址,或者不同私有lan内的设备)发起的第二请求210可以被确定为呈现不被准许访问客户表104的上下文214,因此诸如“私人”指示符的替代值304可以在第二响应218中替代关系字段308的值110。以这种方式,每个请求210可以呈现相同查询,例如在都被准许访问的账户表上的请求,但是请求210的不同的上下文214可以产生不同的响应218。

在该第三示例情景710中,查询212包括检查社交网络中的一组人员的请求。数据库102可以包括针对社交网络中的人员的表以及指示相应人员所属的社交群组的关系字段306,使得在人员表上的查询212可以返回对社交群组表中的对应记录的引用。然而,社交群组中的至少一些可以是私人的,使得每个社交群组中的人员的成员关系仅被准许被暴露给相同社交群组中的其他人。因此,准许在人员表上的查询212返回针对关系字段308而存储的值110可能是有问题的,即使人员表不可访问;例如,查看这样的响应218的用户可以通过比较存储值110来推断群组的存在以及其成员的数目和身份,即使社交群组表保持不可访问。在该示例情景710中,上下文214(即,请求210所隶属的社交群组712)与数据库102的第一表104的关系字段308相关,即,人员表104中的相应人员的社交群组成员关系在对请求210的响应218中是要被披露还是要被保留。

代替地,并且根据当前呈现的技术,第一请求210可以在私人的第一社交群组712的上下文214内接收,但是不在也是私人的第二社交群组712的上下文214内接收。数据库102可以根据上下文214来评估请求210,并且可以确定社交群组隶属仅对于在上下文214内的第一社交群组712而言要被包括在响应218中。对于在表中列出但是隶属于也是私人的但是不在第一请求210的上下文214内的第二社交群组712的人员,响应218也可以标识人员,但是可以用替代值304(例如,指示“无群组成员关系”)来替代针对与第一请求210的上下文214一致的那些特定记录的关系字段306。相反,对于在第二社交群组712的上下文214内但是不在第一社交群组712的上下文214内接收的第二请求210,响应218可以仅在这样的值110与涉及第二社交群组712的社交群组表104的记录相关联的情况下包括针对人员表104的记录的关系字段308的值110,并且可以在存储值110指示第一社交群组712的情况下包括针对关系字段308的替代值304。以这种方式,基于每个请求210的上下文214的替代值304的替代可以根据数据库102的安全策略210通过将这样的信息仅披露给相同社交群组的成员来促进社交群组的私密性。再次指出,由于考虑到不同的上下文214,即使请求210包括相同查询212,请求210得到不同的响应218,其中上下文214是对查询212的补充,并且上下文214与请求210有关。该示例情景710可以非常适合于如在图3的第一示例情景302中图示的上下文特定的重复记录技术,其中人员记录被复制并且补充有(例如,基于请求上下文214而参数化的)上下文字段308,使得特定上下文214内的请求210可以通过根据上下文214来参数化查询212以检索与请求210的上下文214匹配的上下文特定的重复记录来实现。

可以标识如下的另外的其他上下文214:是对查询212的补充,但是与在查询212中标识的表104的关系字段308相关的,并且产生甚至对于相同查询212的可能不同的响应218。例如,上下文214可以涉及关于以下项的细节:请求方216(例如,名字、角色和组织隶属);请求210(例如,地理或物理位置、一天中的时间、以及语言);关于先前的、同时的和/或随后的请求210的关系(例如,详细的响应218可以针对第一请求210被呈现,而具有相同查询212的第五十个请求210可以产生具有移除了第二表104的细节的响应218);和/或关于数据库102的细节(例如,当数据库102处于高计算负载时呈现的请求210可以包括针对关系字段308的空值,其不鼓励在第二表104上的进一步查询212,而当数据库102处于中等计算负载时呈现的请求210可以包括针对关系字段308的存储值110,其可以提示在数据库102的第二表104上的进一步查询212)。

作为该第二方面的第二变型,许多技术可以用于确定特定请求210的上下文214。作为第一这样的示例,请求方216可以与请求210一起包括作为对查询212的补充的附加信息(例如,标识请求方216的证书,或者发起请求210的设备的ip地址),并且附加信息可以被分析以确定请求210的上下文214。作为第二个这样的示例,数据库102可以寻求关于请求210的附加信息,其中附加信息是对查询212的补充,并且其中附加信息使得请求210的上下文214能够确定;例如,请求210可以从具有媒体访问控制(mac)地址的设备接收,并且数据库102可以寻求关于对这样的设备已经被注册的用户的准许的信息,其中用户(大概是请求方216或其代理)的身份和准许可以被推测为请求210的上下文214。作为第三个这样的示例,数据库102可以检查其他信息源以确定请求210的上下文214;例如,数据库可以检查当前日期和时间、和/或系统的当前计算负载,并且可以利用这样的信息作为请求210的上下文214。根据本文中呈现的技术,利用上下文214以及其关于数据库102的关系字段308和对相应请求210的查询212的补充的确定的许多这样的情景可以被设想。

e3.替代值

可以在本文中呈现的技术的实施例间变化的第三方面涉及基于请求210的上下文214对替代值304的替代。

作为该第三方面的第一变型,替代值304可以包括空值,诸如值零或空白字符串,其可以指示不存在由第一表104的记录108的关系字段306标识的第二表104中的相关记录108。该变型可以有助于例如否定在第二表104中存在这样的记录108,其中揭示记录108的存在可能是有问题的。对空值的使用还可以用于将第一表104的与第二表104的私人记录108相关联的记录108与第一表104的实际上不与任何这样的记录相关联的记录108整合,例如,断言属于私人社交群组的个体不被分配给任何社交群组。

作为该第三方面的第二变型,替代值304可以包括默认值。该变型可以有助于例如表明针对第一表104的一些或所有记录108中的关系字段306的值110尚未被简单地更新,例如,第一表104的关系字段306简单地未处于使用中,或者没有数据可用于第一表104的一些或所有记录108。相比于第一变型,该变型不提供关于针对其存储值110已经被替代值304替代的记录108的肯定信息。

作为该第三方面的第三变型,针对第一表104的特定记录108而替代的替代值304可以包括第一表104和/或第二表104的与实际的存储值110不同的值110。在该变型中,请求210的上下文214针对其被授权访问第二表104的被引用记录108的第一表104的记录108可以包括针对关系字段308的准确信息,而请求210的上下文214针对其被禁止访问第二表104的被引用记录108的第一表104的记录108可以包括不准确的和/或虚假的信息。

作为该第三方面的第四变型,替代值304可以包括随机值,其可以不与第二表104的任何记录相关。因此,对于请求210的上下文214针对其被授权访问第二表104的被引用记录108的第一表104的记录108,后续的解引用请求可以产生第二表104的有效记录108;并且对于请求210的上下文214针对其被禁止访问第二表104的被引用记录108的第一表104的记录108,后续的解引用请求可以产生解引用错误(例如,没有这样的外键)和/或垃圾数据作为结果。根据本文中呈现的技术,许多这样的变型可以被用于基于请求210的上下文214而被选择性地替代关系字段308的值110的替代值304的类型。

e4.主记录变型

可以在本文中呈现的技术的实施例间变化的第四方面涉及诸如在图3的第二示例312中图示的数据库102的主记录配置的变型。在这样的变型中,被提供以用于任何上下文214中的请求210的单个记录108被保留,其中替代值304被指定以用于引用在各种请求210的所有上下文中不可访问的表104的关系字段306。

在该第四方面的第一变型中,表104还包括指示针对其提供记录108的上下文214的上下文字段。执行指令还使数据库102针对相应记录将在所有请求210的所有上下文214中提供的主上下文值310存储在来自表104的记录108的上下文字段308中。即,上下文字段308被包括在表104中,但是被设置为标识任何这样的上下文214的值。备选地,一组两个或更多个上下文特定的值310可以被提供以用于上下文字段308,其中每个上下文特定的值310在访问表104的请求210的上下文214间标识其中访问该特定记录108被授权的一个或多个特定上下文214。

在该第四方面的第二变型中,表104针对表104的相应记录108存储关系字段306的替代值304,由此覆写针对关系字段306而存储的任何先前值110。备选地,表104的相应记录108可以维护记录108的针对关系字段306的存储值110,并且数据库102可以通过在响应于查询212的记录108中提供针对关系字段306的替代值304而非存储值110来对针对其中访问第二表414不被准许的上下文214的查询做出响应。该备选方案可以是有利的,例如通过在安全策略202的未来改变准许所有上下文214访问第二表414的情况下保留记录的引用,使得存储值110而非替代值304之后被包括在响应416的记录108中。

作为该第四方面的第三变型,数据库102可以将关系字段306的替代值304标识为上下文特定的替代值304。例如,当在第一上下文214中接收到第一请求210时,其中第一上下文214是对第一查询212的补充,数据库102可以在响应416中提供针对关系字段306的适合于第一上下文214的第一替代值304;并且当在作为对第二查询212的补充的第二上下文214中接收到第二请求210时,数据库102可以在响应416中提供针对关系字段306的适合于第二上下文214的不同的第二替代值304。即,数据库102可以通过标识针对请求210的上下文214的关系字段306的上下文特定的替代值304来实现这样的请求210,其中上下文214是对查询212的补充并且还与关系字段306相关,并且响应于请求210提供具有针对关系字段306的上下文特定的替代值304的记录108。

作为该第四方面的第四变型,数据库102可以禁止将新值110分配给针对表104的记录108的关系字段306。例如,响应于将表104标识为包括表示关系字段306的字段106,数据库服务器402可以针对表104的任何记录108禁用对关系字段306的写入,例如以便保留写入其中的替代值304。在这样的变型中,数据库服务器402可以将关系字段306以被禁用的视觉状态显示给数据库管理员,和/或可以从表104对数据库管理员的呈现中完全隐藏关系字段306。这样的数据库102的主记录配置的许多这样的变型可以被包括在本文中呈现的技术的实施例中。

e5.重复记录变型

可以在本文中呈现的技术的实施例间变化的第五方面涉及诸如图3的第一示例情景302中的数据库102的表104的重复记录配置。在该组实施例中,针对表104的相应记录108和访问数据库102的各种请求210的相应上下文214,数据库102可以在表104中存储记录108的、响应于特定上下文214中的请求210而被提供的上下文特定副本314。针对其中对第二表414的访问不被准许的相应上下文214,数据库102可以在记录108的上下文特定副本314中存储针对关系字段306的替代值304;并且数据库102可以通过提供记录108的、响应于请求210的上下文特定副本314来对上下文214中的请求210做出响应。

作为该第五方面的第一变型,数据库102可以通过以下来提供记录108的上下文特定副本314:根据上下文214来参数化查询212,以及提供记录108的、响应于针对在查询212中参数化的上下文214的查询212的上下文特定副本314。例如,在图8的示例情景800中,原始查询802利用以下被参数化:标识请求210的上下文214的上下文标识符,以及还有要被提供以用于表104中与请求210的上下文214相对应的关系字段306的替代值304。

图9呈现另一这样的示例900,其中查询212被转换成参数化查询902,其标识请求210的上下文214并且可以与表104的上下文字段308的上下文特定的值310进行比较,使得相应记录108的与针对记录108的请求210的相应上下文214相对应的上下文特定副本314连同关系字段306的值110一起被包括在响应416中。

作为该第五方面的第二变型,数据库服务器402可以针对第二表414不可访问的请求210的相应上下文214来禁止将新值110分配给针对记录108的上下文特定副本314的关系字段306。这样的禁止可以例如保留被写入记录108的上下文特定副本314中的替代值304。

作为该第五方面的第三变型,各种技术可以用于维护记录108的上下文特定副本314的其他字段106间的同步。例如,响应于更新由至少两个上下文特定副本314表示的记录108的非关系字段106的更新值110,数据库102可以将非关系字段106的更新值110传播到相同记录108的所有上下文特定副本314。

图10呈现了表征一个这样的变型的示例情景1000的图示,其中更新触发1002与记录108的上下文特定副本314相关联以便传播更新。通过将更新触发1002与上下文特定副本314相关联,数据库102通过检测对指示对记录108的上下文特定副本314的非关系字段106的更新值1004的写入的更新触发1002的调用来传播更新值1004。数据库102之后将针对非关系字段106的更新值1004传播1006到相同记录108的所有上下文特定副本314。

作为该第五方面的第四变型,数据库102可以以各种方式存储上下文特定副本314。可以认识到,尽管将相应记录108复制到上下文特定副本314中可以促进在表104上的查询实现的性能(例如,通过降低查询处理的复杂度),但是这样的重复还可能消耗大量存储资源;例如,重复1000000条记录的数据库102以服务四十个上下文214使对应的表104增长到40000000条记录108。图11呈现了表征可以降低这样的存储复杂度的变型的示例情景1100的图示,其中重复的记录108被划分成被存储一次的非保护部分1102、以及包括关系字段306和标识与每个上下文特定副本314相关联的请求210的上下文214的上下文字段308的部分1104。记录108被存储为记录108的非保护部分1102的一个副本、以及针对相应上下文214的关系字段306的上下文特定副本314。数据库102通过将记录108的非保护部分1102的一个副本和针对请求210的上下文214的关系字段306的上下文特定副本314聚集1106而响应于特定上下文214中的请求210来提供记录108。许多这样的变型可以被包括在本文中呈现的技术的重复记录配置中。

e6.数据库配置

可以在本文中呈现的技术的实施例间变化的第六方面是对指定这样的技术的实现的使用和细节的数据库102的配置的表示。即,本文中呈现的技术可以针对特定数据库102被选择为配置选项的集合,数据库102可以在数据库102的设计、填充、更新和访问的各种阶段期间利用配置选项的集合。

作为该第六方面的第一变型,数据库102的配置可以指示针对相应关系字段306和/或表104的访问模式。这样的访问模式可以从包括例如单记录主上下文访问模式(诸如图3的第二示例312)和/或重复记录访问模式(诸如图3的第一示例情景302)的访问模式集合中选择。响应于针对表104的关系字段306的访问模式的配置选择,数据库可以在其配置中存储并且应用针对表104的关系字段306的访问模式。

作为该第六方面的第二变型,数据库102可以在配置内存储包括分别标识针对数据库102的相应表104的相应关系字段306的访问模式的至少一个模板的模板集。响应于对模板集中的所选择模板的选择,数据库102根据所选择模板来选择和应用针对数据库102的相应表104的相应关系字段306的访问模式。

作为该第六方面的第三变型,数据库102可以将一些配置选项限制于满足某些条件、访问模式条件的表104,并且可以仅在验证所选择的表104满足访问模式的访问模式条件之后将针对关系字段306的访问模式存储在数据库配置中。作为第一个这样的示例,针对重复记录访问模式的访问模式条件可以包括重复记录访问模式被选择以用于的表104的最大表尺寸。作为第二个这样的示例,针对重复记录访问模式的访问模式条件可以包括禁止由利用单记录主上下文访问模式被配置的表104引用的表的重复记录访问模式的应用的限制。可以认识到,调整单个主记录(其被利用在任何上下文214中)以引用存储上下文特定副本314的第二表414(其中相关联的记录108的选择取决于请求210的上下文214)的困难可以产生不期望的配置复杂度。许多这样的变型可以被包括在本文中呈现的技术的实施例中。

f.计算环境

图12和以下讨论提供对用于实现本文中阐述的规定中的一个或多个的实施例的适当的计算环境的简单的总体描述。图12的操作环境仅是适当的操作环境的一个示例并且不旨在暗示对操作环境的使用或功能的范围的任何限制。示例计算设备包括但不限于个人计算机、服务器计算机、手持或膝上型设备、移动设备(例如移动电话、个个数字助理(pda)、媒体播放器等)、多处理器系统、消费电子、微型计算机、大型计算机、包括以上系统或设备中的任何的分布式计算环境等。

尽管不要求,但是在由一个或多个计算设备执行的“计算机可读指令”的总体上下文下描述实施例。计算机可读指令可以经由(下面讨论的)计算机可读介质被分布。计算机可读指令可以被实现为执行特定任务或实现特定抽象数据类型的程序模块,例如功能、对象、应用编程接口(api)、数据结构等。通常,计算机可读指令的功能可以在各种环境中根据期望来组合或分布。

图12图示了包括被配置为实现本文中提供的一个或多个实施例的计算设备1202的系统1200的示例。在一个配置中,计算设备1202包括至少一个处理单元1206和存储器1208。取决于计算设备的精确配置和类型,存储器1208可以是易失性的(诸如例如ram)、非易失性的(诸如例如rom、闪存等)、或以上两者的某种组合。这种配置在图12中通过虚线1204来图示。

在其他的一些实施例中,设备1202可以包括附加的特征和/或功能。例如,设备1202还可以包括附加的存储装置(例如,可移除的和/或不可移除的),包括但不限于磁性存储装置、光学存储装置、等等。这样的附加的存储装置在图12中通过存储装置1210来图示。在一个实施例中,用于实现本文中提供的一个或多个实施例的计算机可读指令可以处于存储装置1210中。存储装置1210还可以存储用于实现操作系统、应用程序等的其他计算机可读指令。例如,计算机可读指令可以被加载到存储器1208中以用于由处理单元1206执行。

如本文中所使用的术语“计算机可读介质”包括排除包括诸如信号的通信介质的其他形式的计算机可读介质的计算机可读存储设备。这样的计算机可读存储设备可以是易失性的和/或非易失性的、可移除的和/或不可移除的,并且可以包含存储计算机可读指令或其他数据的各种类型的物理设备。存储器1208和存储装置1210是计算机存储介质的示例。计算机可读存储设备包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多用盘(dvd)或其他光学存储装置、磁性盒、磁带、以及磁盘存储装置或其他磁性存储设备。

设备1202还可以包括允许设备1202与其他设备进行通信的通信连接1216。通信连接1216可以包括单不限于调制解调器、网络接口卡(nic)、集成网络接口、射频发射器/接收器、红外端口、usb连接、或用于将计算设备1202连接到其他计算设备的其他接口。通信连接1216可以包括有线连接或无线连接。通信连接1216可以发射和/或接收通信介质。

术语“计算机可读介质”可以包括通信介质。通信介质通常实施计算机可读指令或诸如载波或其他传输机制的“经调制的数据信号”中的其他数据并且包括任何信息递送介质。术语“经调制的数据信号”可以包括具有以使得在信号中编码信息的方式设置或改变的特性中的一个或多个的信号。

设备1202可以包括输入设备1214,例如键盘、鼠标、笔、语音输入设备、触摸输入设备、红外相机、视频输入设备、和/或任何其他输入设备。诸如一个或多个显示器、扬声器、打印机和/或任何其他输出设备的输出设备1212也可以被包括在设备1202中。输入设备1214和输出设备1212可以经由有线连接、无线连接、或其任何组合而连接到设备1202。在一个实施例中,来自另一计算设备的输入设备或输出设备可以被用作用于计算设备1202的输入设备1214或输出设备1212。

计算设备1202的组件可以通过诸如总线的各种互连来连接。这样的互连可以包括外围组件互连(pci),例如pciexpress(快速)、通用串行总线(usb)、火线(ieee1394)、光学总线结构等。在另一实施例中,计算设备1202的组件可以通过网络来相互连接。例如,存储器1208可以包括位于通过网络连接的不同物理位置中的多个物理存储器单元。

本领域技术人员将意识到用于存储计算机可读指令的存储设备可以跨网络而分布。例如,可经由网络1218访问的计算设备1220可以存储用于实现本文中提供的一个或多个实施例的计算机可读指令。计算设备1202可以访问计算设备1220并下载计算机可读指令的部分或全部以用于执行。备选地,计算设备1202可以在需要时下载计算机可读指令的片段,或者一些指令可以在计算设备1202处被执行并且一些指令可以在计算设备1220处被执行。

g.术语的使用

尽管已经以特定于结构特征和/或方法动作的语言描述了本技术方案,但是应理解在权利要求中限定的技术方案不一定限于以上描述的特定特征或动作。相反,以上描述的特定特征和动作被公开为实施权利要求的示例形式。

如在本申请中所使用的,术语“组件”、“模块”、“系统”、“接口”等一般旨在指代计算机相关实体,硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以为但不限于运行在处理器上的过程、处理器、对象、可执行件、执行线程、程序、和/或计算机。通过说明的方式,运行在控制器上的应用和控制器两者都能够为组件。一个或多个组件可以驻留在过程和/或执行线程内,并且组件可以被定位在一个计算机上和/或分布在两个或更多个计算机之间。

另外,要求保护的技术方案可以使用标准编程和/或工程技术而被实现为方法、装置、或制品,以产生软件、固件、硬件、或其任何组合来控制计算机实现所公开的技术方案。如本文中所使用的术语“制品”旨在包含可从任何计算机可读设备、载体或介质访问的计算机程序。当然,本领域技术人员将意识到可以对这种配置进行许多修改而不脱离要求保护的技术方案的范围或精神。

本文中提供了实施例的各种操作。在一个实施例中,所描述的操作中的一个或多个可以包括存储在一个或多个计算机可读介质上的计算机可读指令,其在由计算设备执行时,将使计算设备执行所描述的操作。描述操作中的一些或全部的次序不应当被解释为暗示这些操作必需是次序依赖的。受益于本说明书的本领域技术人员将认识到备选次序。另外,将理解,不是所有操作都必需存在于本文中提供的每个实施例中。

本文中描述为“示例”的任何方面或设计不一定被解释为优于其他方面或设计。相反,对词语“示例”的使用旨在呈现可能与本文中呈现的技术有关的一个可能方面和/或实现方式。这样的示例不一定针对这样的技术或者不必旨在为限制性的。这样的技术的各种实施例可以单独地或者与其他特征组合地包括这样的示例,和/或可以改变和/或省略图示的示例。

如本申请中所使用的,术语“或者”旨在意指包含性的“或者”而非排他性的“或者”。也就是说,除非另行说明,或者从上下文很清楚,否则“x采用a或b”旨在意指自然包含性排列中的任何。即,如果x采用a;x采用b;或者x采用a和b两者,则在前述实例中的任何下满足“x采用a或b”。另外,如在本申请和随附权利要求中使用的词语“一”和“一个”可以一般地被理解为意指“一个或多个”,除非另行说明或者从上下文很清楚指向单数形式。

此外,尽管已经关于一个或多个实现示出和描述了本公开内容,但是本领域技术人员基于对本说明书和附图的阅读和理解将会进行等价的更改或修改。本公开内容包括所有这样的修改和更改并且仅受以下权利要求书的范围限定。特别是关于由上述组件(例如,元件、资源等)执行的各种功能,除非另行指示,否则用于描述这样的组件的术语旨在对应于执行所描述的组件的指定功能(例如,功能上等价)的任何组件,即使在结构上不等价于执行本文中说明的本公开内容的示例实现方式中的功能的所公开的结构。另外,尽管可能已经关于若干实现中的仅一种公开了本公开内容的特定特征,但是这样的特征可以与其他实现的一个或多个其他特征组合,如针对任何给定或特定应用期望的和有利的。另外,在术语“包括”、“具有”、“有”、“带有”、或其变型被使用在具体实施方式或权利要求书中的意义上,这样的术语旨在以与术语“包括”类似的方式为包含性的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1