专利名称:管理多用户存取预定义查询的系统与方法
技术领域:
总体上讲,本发明涉及一种查询处理,更具体地讲,本发明涉及对多个用户存取永久性存储的查询的管理。
背景技术:
数据库是计算机化的信息存储和提取系统。关系数据库管理系统是一种使用了用于存储和提取数据的关系技术的计算机数据库管理系统(DBMS)。最流行的数据库类型是关系数据库、表格数据库,其中,对数据加以定义,以致于可以按多种不同的方式重组和存取。分布式数据库是一种可以在网络中的不同点之中加以传布或复制的数据库。面向对象的编程数据库是一种适合于按对象类和子类定义的数据的数据库。
不管具体的体系结构如何,均可以对DBMS进行构造,以支持各种不同类型的操作。可以对这样的操作进行配置,以提取、添加、修改以及删除由DBMS所存储和所管理的信息。标准的数据库存取方法使用诸如结构查询语言(SQL)的高级查询语言,支持这些操作。术语“查询”是对一组命令的称谓,这组命令可导致对用于对来自所存储的数据库的数据进行处理的操作的执行。例如,SQL支持4种查询操作,即选择、插入、更新以及删除。选择操作从数据库提取数据,插入操作把新的数据添加于数据库,更新操作修改数据库中的数据,以及删除操作从数据库去除数据。
任何发出请求的实体,包括应用、操作系统以及处于最高级的用户,可以针对一或多个数据库中的数据发布查询。可以把查询硬编码为应用的一部分,也可以响应于输入(例如,用户输入)生成查询。给定的发出请求的实体可以执行多个不同的查询。当针对一或多个数据库执行每一查询时,把相应的查询结果返回至发出请求的实体。可以永久性地存储任何查询与/或一或多个相应的查询结果。
永久性存储的查询与/或查询结果可以由多个用户加以共享。换句话说,可永久性地存储由给定用户所创建的查询,并且可使查询对其他用户可用。甚至,该给定用户还可以创建仅旨在为一或多个其他用户加以使用的查询。例如,数据库管理员可以以某种特定的查询语言,为那些需要从一或多个基础数据库提取信息,但不熟悉该种特定的查询语言的用户创建预定义查询。从而,这些用户简单地需要执行这些预定义查询,以从一或多个基础数据库提取所要求的信息。
然而,在多个用户之间共享永久性存储的查询的一个困难在于,特定的预定义查询不能精确地满足不同用户的需求。例如,假设某公司中的数据库管理员已使用某种特定的查询语言,创建了旨在由该公司的销售经理所使用的预定义查询。这些预定义查询可以是适合于提取那些与不同目标组的个体相关的数据的相当复杂的查询。还假设某一给定的销售经理开始销售该公司的一种新的产品。因此,该给定的销售经理可以使用相应的预定义查询,标识新产品的相应的目标组,并且收集关于该目标组中的个体的信息。
然后,该给定的销售经理可以使用所收集的信息,精确地向所标识的目标组中的个体展开广告运动。现在假设所标识的目标组由14~25岁的少年和年轻成年人组成,这些少年和年轻的成年人满足各种条件,例如,具有特定的嗜好。还假设存在预定义查询,该预定义查询适合于提取满足相同的各种条件的18~25岁的少年和年轻成年人的信息。该给定的销售经理可以使用该预定义查询,但为了也能够请求与那些14~17岁的人相关的所要求的信息,必须修改该预定义查询。
然而,在修改之后,不再把该预定义查询指向最初的18~25岁的目标组。换句话说,该修改改变了该预定义查询的总体意图。该改变可能影响由仅要求与最初目标组相关的信息的其他用户对该预定义查询的随后的执行。另外,在某些情况下,在修改期间,可能会无意地破坏预定义查询,特别是,如果销售经理不熟悉特定的查询语言。
因此,存在着对用于在多个用户之间共享永久性存储的查询,而且不允许对这些永久性存储的查询进行不希望的修改的有效技术的需求。
发明内容
总体上讲,本发明涉及一种用于管理存取查询的方法、系统以及制造物件(article),更具体地讲,本发明涉及一种用于管理多个用户对永久性存储的查询的存取。
一个实施例提供了一种管理由多个用户存取对数据库中的数据进行的预定义查询的方法。该方法包括把一或多个存取权与该预定义查询的至少某部分相关联。当接收到第一用户存取该预定义查询的请求时,根据存取权,限制该第一用户对该预定义查询的存取。
另一个实施例提供了一种管理由多个发出请求的实体存取对数据库中的数据进行的预定义查询的方法。该方法包括创建存取权,配置存取权以限制对该预定义查询的存取,并且把存取权与该预定义查询相关联。根据存取权,准予发出请求的实体对预定义查询的某部分或全部进行存取。
另一个实施例提供了一种计算机可读媒体,该计算机可读媒体包括程序,当处理器执行该程序时,该程序执行管理由多个用户存取对数据库中的数据进行的预定义查询的处理。该处理包括把一或多个存取权与该预定义查询的至少某部分相关联。当接收到第一用户存取该预定义查询的请求时,根据存取权,限制该第一用户对该预定义查询的存取。
另一个实施例提供了一种系统,该系统包括预定义查询、一或多个存取权以及查询管理器。把一或多个存取权与该预定义查询的至少某部分相关联。对查询管理器进行配置,以接收第一用户存取该预定义查询的请求,并根据存取权,限制该第一用户对该预定义查询的存取。
通过参照附图所说明的本发明的实施例,可以获得,并且能够详尽了解本发明上述特性、优点以及目的,可以得到以上简要概括的本发明的更具体的描述。
然而,应该加以注意的是,附图仅说明了本发明的典型的实施例,因此不应该将它们视为对本发明范围的限制,因为本发明可支持其它等效的实施例。
图1A是用于创建一个实施例中永久性存储的查询的软件部件的关系图;图1B是用于管理对一个实施例中永久性存储的查询的存取的图1A的软件部件的关系图;图1C是用于管理对另一个实施例中永久性存储的查询的存取的图1A的软件部件的一个关系图;图2~3为流程图,说明了用于管理对一个实施例中永久性存储的查询的存取的方法;以及图4是表,说明了一个实施例中永久性存储的查询和相关的存取权。
具体实施例方式
引言总体上讲,本发明涉及一种用于管理存取查询的方法、系统以及制造物件,更具体地讲,本发明涉及一种用于管理由多个用户对永久性存储的预定义查询的存取的方法、系统以及制造物件。根据一个方面,允许多个用户使用预定义查询改变和考察一或多个数据库的数据。还允许多个用户对预定义查询进行至少某种程度的操作,从而可避免对预定义查询的某种形式的总体意图的任何破坏。为此,把存取权与预定义查询的一或多个部分相关联。例如,这些存取权可以类似于数据库列的存取权。在一个实施例中,把给定预定义查询中的每一个查询条件与存取权(也称为“特权”)相关联。对关于具体查询条件的特权进行配置,以规定什么样的相应的查询工具将允许具体用户处理这种查询条件。
数据处理环境把本发明的一个实施例作为随计算机系统一起使用的程序产品加以实现。该程序产品的一或多个程序定义了各实施例(包括此处所描述的方法)的功能,并且可以将该程序产品的一或多个程序包含在各种信号承载媒体上。仅说明性地把信号承载媒体描述为包括,但不局限于(i)永久性地存储在非可写存储媒体(例如,计算机中的只读存储设备,诸如CD-ROM驱动器可读的CD-ROM盘等)上的信息;(ii)存储在可写存储媒体(例如,软盘驱动器中的软盘或硬盘驱动器)上的可更改信息;或者(iii)通过通信媒体传送给计算机的信息,例如通过计算机或电话网络,包括无线通信。特别是,后一个实施例包括从因特网和其它网络上下载的信息。当执行指导本发明的功能的计算机可读的指令时,这样的信号承载媒体代表了本发明的实施例。
总体上讲,为实现本发明实施例所执行的例程,可以作为操作系统、或具体应用、部件、程序、模块、对象或指令序列的一部分。通常,本发明的软件由大量指令构成,本地计算机将把这些指令翻译成机器可读的格式,从而翻译成可加以执行的指令。而且,程序由变量和数据结构构成,变量和数据结构或者本地驻留于程序中,或者出现在存储器中或存储设备上。另外,还可以根据某一应用,标识以下所描述的各种程序,将针对该应用在本发明的某一具体实施例中实现这些程序。然而,应该认识到,使用随后的任何一种具体的命名法,仅仅是为了方便,因此不应把本发明局限于在任何通过这样的命名法所标识与/或所意指的特定应用中单独使用。
可以以包括至少一个网络客户计算机和至少一个服务器计算机在内的硬件/软件配置,实现本发明的实施例。而且,还可以把本发明的实施例施加于任何可比较的硬件配置,而不管计算机系统是复杂的、多用户计算装置、单用户工作站、还是不具有其自身的非易失存储器的网络设备。另外,还应该认识到,尽管可以参照具体的查询语言,包括SQL,但本发明并不局限于某一特定的语言、标准或版本。因此,本技术领域中的技术人员将会意识到,本发明也适用于其它查询语言,并且本发明还适用于某一特定查询语言今后的变化以及当前未知的其它查询语言。
优选实施例以下,参照本发明的实施例。然而,应该认识到,本发明不局限于具体描述的实施例。相反,为了实现和实践本发明,无论是否与不同的实施例相关,可以考虑下列特性和元素的任意组合。另外,在各实施例中,本发明还提供了优于现有技术的众多优点。然而,尽管本发明的实施例可以实现优于其它可能的方案与/或优于现有的技术的优点,但某一给定实施例是否实现了某一具体的优点并不构成对本发明的限制。因此,以下的方面、特性、实施例以及优点仅为说明性的,如无特别说明,不应把它们视为所附权利要求的元素或对所附权利要求的限制。
现在参照图1A,图1A说明了一个实施例中的软件部件的关系图。根据一个方面,对这些软件部件进行配置,以从使用查询的数据源得到数据的子集。还可以对软件部件进一步地加以配置,以永久性地存储查询,以及创建存取权与/或把存取权与永久性存储的查询相关联。
仅说明性地把软件部件描述为包括发出请求的实体110、查询管理器140以及用户接口190。根据一个方面,发出请求的实体110针对数据源130的数据132发布查询,例如查询120。数据源130代表任何一个数据集合,而不管具体的物理表示。在一个实施例中,数据源130包括一或多个数据库。可根据关系方案(可由SQL查询加以存取)或根据XML方案(可由XML查询加以存取),对该一个或多个数据库中的每一个数据库加以组织。然而,本发明并不局限于某一特定的方案,并可以考虑向当前尚不知晓的方案扩展。如此处所使用的术语“方案”总体地指数据的具体的排布。
可以预定义发出请求的实体110所发布的查询120,也可以响应于所接收的输入,例如经由用户接口190所接收的输入(例如,用户输入),生成发出请求的实体110所发布的查询120。查询管理器140执行针对数据源130的数据132的查询120,以获得查询结果170。接下来,把查询结果170提交给发出请求的实体110。
在一个实施例中,查询120为SQL查询。最普遍执行的SQL查询之一为选择语句。选择语句通常具有这样的格式“SELECT<子句>FROM<子句>WHERE<子句>GROUP BY<子句>HAVING<子句>ORDER BY<子句>”。子句通常必须遵循该顺序。只有SELECT(选择)和FROM(从)子句是必需的,所有其它子句都是可选的。一般情况下,选择语句的结果为从存储于关系数据库(例如,图1的数据源130)中的一或多个现存的表中所提取的数据的子集(例如,数据132),其中,FROM子句识别将从中选择数据的一或多个表的名称。把数据的该子集作为新的表加以对待,并将其命名为结果表。WHERE(在如下条件下)子句确定应把哪些行返回于结果表中。通常,WHERE子句包含一或多个必须由结果表中所返回的每一行所满足的查询条件。这些一或多个查询条件通常为一或多个谓词,每一个谓词使用适当的比较操作符,例如“=”、“>”以及“<”,指定来自某些列的两个值、常数或相关的值之间的比较。通常,由布尔操作符,例如布尔AND(与)与/或OR(或)操作符连接WHERE子句中的多个谓词。
在另一个实施例中,查询120为抽象查询。使用由数据抽象模型所定义的逻辑字段来构成抽象查询。把每一个逻辑字段映射至数据源130中所使用的基础数据表示(例如XML、SQL可其它类型的表示)的数据的一或多个物理实体。另外,在数据抽象模型中,独立于基础数据表示定义逻辑字段,从而允许形成松散耦合至基础数据表示的查询。可以对抽象查询加以配置,以存取数据132以及返回查询结果,或修改(即,删除或更新)数据132。为了针对数据132加以执行,把抽象查询转换成与数据132的基础数据表示相一致的形式(此处将其称为具体查询)。2002年2月26日提交的同一申请人的待审的标题为“Application Protability And Extensibility Through DatabaseSchemaAnd QueryAbstraction(通过数据库方案及查询抽象的应用便携性和可扩展性)”的美国专利申请10/083,075中详细地描述了把抽象查询转换成具体查询的过程,现将该申请全部内容并入此处,以作参考。
在一个实施例中,查询管理器140把查询120作为查询存储库150中的永久数据对象156“查询(QUERY)N”加以存储。仅说明性地把查询存储库150描述为已包括多个查询152“查询1”和154“查询2”(为了简洁起见,仅描述了两个),并且把它们作为永久数据对象加以存储。但应该加以注意的是,具有查询152,154以及156的查询存储库150,仅仅是说明性的,因此,不旨在对本发明加以限制。例如,可以由不同的发出请求的实体创建查询152,154以及156,并且分别把它们存储在相应数据处理系统中的不同的位置。
在一个实施例中,根据存取权134,限制对查询152,154以及156的存取。仅说明性地把存取权134描述为存储在数据源130中。例如,存取权134可以针对多个发出请求的实体中的每一个发出请求的实体规定相应的发出请求的实体是否被授权存取一或多个查询152,154以及156中的某个或全部查询。存取权134还可以针对一或多组发出请求的实体规定相应的一或多个组是否被授权存取一或多个查询152,154以及156中的某个或全部查询。另外,存取权134也可以针对一或多个查询152,154以及156中的不同部分与/或不同的发出请求的实体或发出请求的实体组规定不同类型的存取。更具体地讲,根据附于给定查询的存取权,可以通过仅把给定查询的受限制部分提交于相应的发出请求的实体,来限制对给定查询的存取。还可以根据附于给定查询的存取权,通过禁止相应的发出请求的实体对给定查询的至少一部分的修改,来限制对给定查询的存取。
在一个实施例中,使用用户接口190创建存取权134。根据一个方面,由被授权的发出请求的实体,诸如数据库管理员,创建存取权134。另外,可以由创建了查询152,154以及156中的给定的一个查询的相应的发出请求的实体在创建时创建查询152,154以及156中给定的该查询的存取权。以下,参照图1B~C,更详细地解释用于限制对查询152,154以及156的存取的查询管理器140的操作。
图1B描述了用于管理对查询152,154以及156的存取的实施例中图1A的软件部件的关系图。仅说明性地把多个发出请求的实体1101~110N描述为发布用于获得与查询152,154以及156相关的数据的数据请求160。例如,假设发出请求的实体1101~110N中的一个发出请求的实体(以下将其称为“发出请求的实体110”)发布用于存取查询152“查询1”的数据请求160中的一个数据请求(以下将其称为“数据请求160”)。查询管理器140接收数据请求160,并且确定是否授权发出请求的实体110存取查询152的全部或至少某些部分。为此,查询管理器140存取数据源130中的存取权134。现在,假设存取权134授权发出请求的实体110仅存取查询152的一或多个部分,而不是整个查询152。因此,根据存取权134,查询管理器140从查询152中识别一或多个部分。然后,查询管理器140把来自查询152的一或多个部分作为受限的查询172提交于发出请求的实体110。可以根据存取权134,随同指出对所提交的查询进行了限制的指示,把受限的查询172提交于发出请求的实体110。
在一个实施例中,针对多个潜在的发出请求的实体,包括发出请求的实体1101~110N,定义存取权134。如以上所提到的,为了针对查询152,154以及156规定允许发出请求的实体1101~110N中的哪一个发出请求的实体存取该查询,可以实施存取权134。而且,还可以向存取权134提供用户或应用特定(application-specific)的粒度。例如,可以对存取权134进行配置,以限制对整个查询或查询的成份,例如查询条件,的存取。因此,可能出现不同的情况,其中根据存取权134针对不同的发出请求的实体确定对查询152,154以及156之一的不同的存取权。换句话说,尽管所有这些发出请求的实体操作于同一查询,即查询152,但可以向这些发出请求的实体中的每一发出请求的实体提交不同的查询数据。例如,可以把查询152的第一部分提交于第一发出请求的实体,以及把查询152的第二部分提交于第二发出请求的实体,从而第一部分包括未提交于第二部分的一或多个数据对象。
以下,参照表II~V描述示例性的情况,其中,仅说明性地描述,由用户所代表的不同的发出请求的实体,试图存取单个的预定义查询。下面,参照表I描述示例性的预定义查询。
表I示例性的预定义查询001 SELECT*
002 FROM表-x003 WHERE(条件1AND条件2AND条件3)如从表I中所看到的,预定义了示例性查询以针对数据库表“表-x”执行(行002)。具体地讲,可以使用该示例性查询以确定满足具体查询条件“条件1”与“条件2”与“条件3”(行003)的数据库表“表-x”(行001)的所有行。
表II示例性情况1001 可以由约翰·史密斯修改的条件“条件1”002 仅可以读条件“条件2”003 可以由组“研究人员”添加条件在表II的示例性情况1中,规定了表I的示例性查询的存取权134,以致于仅用户“约翰·史密斯”可以修改查询条件“条件1”(行001)。换句话说,根据行001,用户“约翰·史密斯”可以改变参数,例如查询条件“条件1”的操作符和值。根据行002,规定存取权134,以致于所有用户仅可以读取,但不可以修改查询条件“条件2”。而且,把表I的完整的查询与根据行003所规定的存取权相关联。更具体地讲,根据行003,规定存取权134,以致于只有组“研究人员”的用户可以把一或多个查询条件添加于表I的示例性查询。当没有为情况1中的查询条件“条件3”指定存取权时,根据一个方面,当希望时,所有用户都可以对该查询条件进行操作。
表III示例性情况2001 可以补充条件“条件1”002 隐藏条件“条件3”在表III的示例性情况2中,规定了针对表I的示例性查询的存取权134,以致于任何用户均可以补充查询条件“条件1”(行001)。根据一个方面,如果可以补充查询条件,则用户可以不修改查询条件的谓词,而仅把一或多个附加的谓词添加于查询条件。例如,假设配置查询条件“条件1”以标识至少18岁的个人。因此,可以把查询条件“条件1”定义如下“Age>=18”。现在假设用户希望确定至少18岁、但不老于25岁的个人。在该情况下,用户可以通过添加相应的补充查询条件,例如“Age<=25”,补充查询条件“条件1”。因此,所补充的条件将相应于查询条件“条件1”和补充查询条件的组合,即“Age>=18 AND Age<=25”。根据行002,规定存取权134,以致于针对所有用户隐藏了查询条件“条件3”。因此,可以把表I中所定义的查询提交给用户,以致于不向该用户显示查询条件“条件3”。然而,对于某些实施例来说,在该情况下,可以把某一指示向用户加以显示,以指出隐藏了表III中的查询的一部分,该部分不加以显示。另外,当没有为情况2中的查询条件“条件2”指定存取权时,根据一个方面,当希望时,所有用户可以对该查询条件进行操作。
表IV示例性情况3001 使能静态拷贝在表IV的示例性情况3中,规定了表I的示例性查询的存取权134,以致于任何用户均可以进行示例性查询的个人拷贝(行001)。然后,当把个人拷贝定义成“静态”(表IV的行001)时,把该个人拷贝与除表I的示例性查询之外的相同的存取权(即,存取权134)相关联。
例如,图1B的发出请求的实体110已对查询152进行了个人拷贝114,仅说明性地把个人拷贝114描述为存储在与发出请求的实体110(如虚线箭头116所表明的)相关联的本地数据源112中。当根据存取权134限制对查询152的存取时,也通过存取权134限制对个人拷贝114的存取(如虚线箭头136所表明的)。因此,当发出请求的实体110存取查询152的个人拷贝114时,将把受限的查询172有效地提交给用户(如虚线箭头174所表明的)。
表V示例性情况4001 使能动态拷贝在表V的示例性情况4中,规定了表I的示例性查询的存取权134,以致于任何用户均可以进行示例性查询的动态个人拷贝(行001)。可以根据用户的要求,修改动态个人拷贝。换句话说,将不把存取权134与动态个人拷贝相关联。
现在,参照图1C,图1C描述了用于管理对查询152,154以及156的存取的另一个实施例中图1A的软件部件的关系图。仅说明性地把多个发出请求的实体1101~110N描述为发布针对多个查询180的数据请求160,其中把查询180作为永久数据对象存储在查询存储库150中。每一个查询180包括查询数据182和相关联的存取权184。根据一个方面,查询数据182相应于预定义查询(例如,图1A的查询152~156之一)的数据。
例如,现在假设,查询管理器140接收数据请求160(以下将其称为“数据请求160”)中给定的数据请求,其中数据请求160来自希望对查询180中的给定的查询180(以下将其称为“查询180”)进行存取的用户。以下参照图4描述查询180的示例性实施例。
当接收到数据请求160时,查询管理器140确定是否授权该用户存取查询180的全部或至少某些查询数据182。为此,查询管理器140确定来自用户的属性。所确定的一或多个属性适合于对用户进行标识。例如,所确定的一或多个属性可以为用户名、用户的标识符、用户的角色或者与用户相关的授权级别。查询管理器140还确定针对查询数据182的用户的存取权。根据存取权184确定用户的存取权。
在一个实施例中,根据图1A的存取权134创建存取权184。因此,存取权184可适合于查询数据182的多个潜在的用户。换句话说,对于某些或全部查询数据182,存取权184可适合于每个潜在的用户。或者,存取权184也可以定义至存取权134的链路。在该情况下,把存取权134用于确定是否授权一或多个潜在的用户存取某些或全部查询数据182。或者,可以在创建查询数据182时,创建存取权184,并且将存取权184随查询数据182一起加以存储,作为永久数据对象180。
具体地讲,在图1C中所说明的例子中,查询管理器140根据随查询数据182一起存储的存取权184,确定是否授权发出请求的实体110存取查询数据182。更具体地讲,查询管理器140使用存取权184标识允许用户存取的查询数据182的部分。然后,查询管理器140把所标识的部分作为受限的查询176提交于用户。以下参照图2更详细地描述查询管理器140的操作。
现在,参照图2,图2描述了一种用于管理由多个用户对预定义查询(例如,图1A的查询152,154以及156之一)进行的存取的方法200的一个实施例。可以使用查询管理器(例如,图1A的查询管理器140)和用户接口(例如,图1A的用户接口190),实现方法200的至少部分步骤。方法200开始于步骤210。
在步骤220,从第一发出请求的实体(例如,图1A的发出请求的实体110)接收针对数据源(例如,图1A的数据源130)的查询(例如,图1A的查询120)。在步骤230,创建针对该查询的存取权。根据一个方面,第一发出请求的实体使用用户接口创建存取权。对存取权进行配置,以限制对该查询的存取。在一个实施例中,创建存取权包括把存取权(例如,图1A的存取权134)存储在数据源中。因此,当接收到用于存取查询的请求时,查询管理器可以在运行时间把查询与存取权(例如,图1B的存取权134)加以链接。在另一个实施例中,创建存取权包括准备存取权(例如,图1C的存取权184),以随永久数据对象(例如,图1C的查询180)中的查询一起加以存储。或者,永久数据对象中的存取权可以定义至存储在数据源中的存取权的链路。
在步骤240,把存取权与查询相关联。在一个实施例中,在步骤250,把存取权作为永久数据对象(例如,图1C的查询180)随查询一起加以存储。或者,当把存取权存储在数据源中时,可以仅存储查询,作为永久数据对象(例如,图1B的查询152)。
应该加以注意的是,多个发出请求的实体可以根据相关联的存取权随后存取已在步骤250存储的永久数据对象。仅说明性地把描述为,在步骤260,从第二发出请求的实体(例如,图1B~C的发出请求的实体110)接收数据请求(例如,图1B~C的数据请求160),以存取已在步骤250作为永久数据对象加以存储的查询。
在步骤270,根据存取权,准予或拒绝存取永久数据对象的至少一或多个部分。以下参照图3描述准予存取永久数据对象的示例性方法。然后,方法200在步骤280退出。
现在,参照图3,图3描述了根据图2的步骤270准予存取永久数据对象(例如,图1B的查询152或图1C的查询180)的示例性方法300。可以使用查询管理器(例如,图1B~C的查询管理器140)执行方法300的至少部分步骤。方法300开始于步骤310,在步骤310,该方法确定永久数据对象是否包括存取权(例如,图1C的存取权184)。
如果存取权包含在永久数据对象(例如,图1C的查询180)中,则在步骤320,确定发出请求的实体的一或多个属性。然后,在步骤330,根据包含在永久数据对象中的存取权以及确定的一或多个属性针对发出请求的实体标识对永久数据对象的实体特定的存取权。换句话说,分析包含在永久数据对象中的存取权,以判别是否可以从中获得专门针对发出请求的实体的存取权。例如,可以分析包含在永久数据对象中的存取权,以标识其中特别授权存取具有所确定的一或多个属性的发出请求的实体的一些部分。另外,还可以分析包含在永久数据对象中的存取权,以标识其中非特别排除具有所确定的一或多个属性的发出请求的实体的存取的一些部分。然而,应该加以注意的是,可以按各种不同的方式实现存取权。如以上所提到的,可以把存取权与特定的用户与/或用户组相关联。然而,也可以针对永久数据对象的部分查询数据,例如查询条件,而不参照任何特定的用户或用户组,来规定存取权。因此,本发明不局限于存取权的具体的实现,而是考虑到向其它实现的扩展,包括向当前未知的一些实现的扩展。
在步骤340,根据所标识的实体特定的存取权,把永久数据对象的零、一或多个部分、或者整个永久数据对象作为受限的查询(例如,图1C的受限的查询176),提交于发出请求的实体。然后,处理在图2的步骤280继续。
然而,如果在步骤310确定存取权不包含在永久数据对象(例如,图1B的查询152)中,则在步骤350,根据存储在相应的数据源中的存取权(例如,图1B的存取权134),确定针对发出请求的实体的相应的实体特定的存取权。然后,处理在步骤340继续。
现在,参照图4,图4描述了包括示例性永久数据对象(例如,图1C的永久数据对象180)的数据结构400的一个实施例。例如,按具有多个列410~440和行450~480的表格的形式描述数据结构400。
行450展示列410~440的标题。然而,应该认识到,仅说明性地展示了行450,因此,行450是可选的。如从行450可看出的,列410~420包括查询数据(例如,图1C的查询数据182)。列430~440包括存取权(例如,图1C的存取权184)的说明。更具体地讲,仅说明性地把列410描述为包括预定义查询的标识。仅说明性地把列420描述为包括查询条件。仅说明性地把列430描述为包括与不同查询条件相关联的存取权。仅说明性地把列440描述为包括对其施加了包含在列430中的存取权的用户/用户组的指示。
例如,把行460~464与第一查询“查询1”相关联,其中,第一查询“查询1”具有3个查询条件,即“条件1”、“条件2”以及“条件3”。在行460~464中,规定了针对这3个查询条件的存取权。更具体地讲,根据行460,针对查询条件“条件1”所规定的存取权为“只读”型(列430)。该存取权施加于所有用户,因为没有针对列440中的“条件1”规定具体的用户或用户组。换句话说,允许所有用户只读地存取查询条件“条件1”。
根据行462,针对查询条件“条件2”所规定的存取权为“修改”型(列430)。该存取权施加于用户组“研究人员”(列440)的所有用户。换句话说,允许用户组“研究人员”的所有用户修改查询条件“条件2”。根据一个方面,当所规定的存取权为“修改”时,并且当未针对其他用户或用户组规定对“条件2”的存取权时,可以通过默认,把查询条件“条件2”对其他用户/用户组隐藏,或允许只读地存取。为此,在一个实施列中,可以定义用户特定的或应用特定的默认存取权。
根据行464,针对查询条件“条件3”所规定的存取权为“只读”型(列430)。该存取权施加于两个用户,第一用户“管理员”,例如,数据库管理员,以及第二用户“约翰·史密斯”(列440)。换句话说,仅允许“管理员”和“约翰·史密斯”读取查询条件“条件3”。例如,假设公司X的“约翰·史密斯”已创建了“查询1”。“查询1”允许存取“约翰·史密斯”的本地数据,例如与“约翰·史密斯”所详细阐述的研究项目相关的数据。
根据“查询1”,“约翰·史密斯”允许该公司中所有用户存取本地数据,但不允许使用查询条件“条件3”存取敏感数据。为了避免被其自己无意识地修改查询条件“条件3”,“约翰·史密斯”已把其存取权设置为“只读”。还假设,根据公司X的内部规程,必须允许数据库管理员存取公司X中任何预定义查询的所有部分。例如,数据库管理员必须能够验证给定的查询条件是否不是非必须地限制数据的存取。因此,在该给定的例子中,允许数据库管理员读取,但不能修改查询条件“条件3”。另外,当所规定的存取权为针对两个特定用户,即针对“管理员”和“约翰·史密斯”的“只读”,且当未针对其他用户或用户组规定对“条件3”的存取权时,可以通过默认,把查询条件“条件3”对所有其他用户/用户组隐藏。
把行470与第二查询“查询2”相关联。然而,在列420中,没有针对第二查询“查询2”指示具体的查询条件。因此,列430中针对第二查询“查询2”所规定的存取权施加于该查询的所有成份。更具体地讲,根据列430,针对查询“查询2”所规定的存取权为“添加条件”。由于在列440中没有针对“查询2”规定特定的用户或用户组,所以该存取权施加于所有用户。换句话说,任何用户可以把一或多个查询条件添加于第二查询“查询2”。
把行480与第三查询“查询N”相关联。然而,在列420中,没有针对第三查询“查询N”指示具体的查询条件。而且,在列430中没有规定针对第三查询“查询N”的存取权。因此,当希望时,任何用户都可以对第三查询“查询N”进行操作。
应该加以注意的是,已通过举例的形式,参照图4,描述了不同类型的存取,即“只读”、“修改”以及“添加条件”。然而,也可以提供其它类型的存取,例如,允许补充给定预定义查询的一或多个查询条件的存取(例如,表III的情况2)。而且,其它类型的存取还可允许对预定义查询进行静态或动态的拷贝(例如,分别为表IV和V的情况3和4)。因此,此处所描述的所有类型的存取和存取权,仅为说明性的,而不是对本发明的限制。相反,广泛地考虑了适合于提供查询与/或基于查询条件的安全的任何存取类型。
尽管以上的描述针对的是本发明的实施例,然而,在不背离本发明的基本范围的情况下,可以设计本发明的其它和进一步的实施例,本发明的范围由权利要求加以确定。
对相关申请的交叉参照本申请涉及2002年2月26日提交的同一申请人的待审的标题为“Application Portability And Extensibility Through Database Schema And QueryAbstraction(通过数据库方案及查询抽象的应用便携性和可扩展性)”的美国专利申请10/083,075,现将其全部内容并入此处,以作参考。
权利要求
1.一种管理由多个用户存取对数据库中的数据进行的预定义查询的方法,包括把一或多个存取权与所述预定义查询的至少某部分相关联;接收第一用户存取所述预定义查询的请求;以及根据存取权,限制所述第一用户对所述预定义查询的存取。
2.根据权利要求1所述的方法,其中,使用由抽象描述数据库中的数据的数据抽象模型所定义的逻辑字段,来构成预定义查询。
3.根据权利要求2所述的方法,其中,把每个逻辑字段映射至数据库中所使用的基础数据表示的数据的一或多个物理实体。
4.根据权利要求1所述的方法,还包括确定第一用户的一或多个属性;以及根据第一用户的存取权和一或多个属性,限制第一用户对预定义查询的存取。
5.根据权利要求4所述的方法,其中,根据第一用户的存取权和一或多个属性来限制第一用户对预定义查询的存取,包括使用一或多个所确定的属性,根据存取权,标识针对第一用户的用户特定的存取权;以及其中,根据用户特定的存取权,准予第一用户存取预定义查询的某部分或全部。
6.根据权利要求4所述的方法,其中,一或多个属性为下列中的至少之(i)用户名;(ii)用户角色;以及(iii)用户授权级别。
7.根据权利要求1所述的方法,其中,一种类型的存取权允许第一用户读取,但不能修改预定义查询的第一部分。
8.根据权利要求7所述的方法,其中,一种类型的存取权防止第二用户读取预定义查询的第一部分。
9.根据权利要求7所述的方法,其中,一种类型的存取权允许第二用户读取和修改预定义查询的第一部分。
10.根据权利要求1所述的方法,其中,一种类型的存取权防止第一用户读取预定义查询的某部分。
11.根据权利要求1所述的方法,其中,一种类型的存取权允许第一用户把查询条件附于所述查询的某部分,但不能修改所述部分。
12.根据权利要求1所述的方法,其中,根据第一用户的存取权和一或多个属性限制第一用户对预定义查询的存取,此过程包括允许所述用户对预定义查询进行个人拷贝。
13.根据权利要求12所述的方法,其中,根据第一用户的存取权和一或多个属性限制第一用户对预定义查询的存取,此过程包括允许所述用户修改个人拷贝的某受限部分。
14.根据权利要求12所述的方法,其中,还把与预定义查询相关联的存取权与个人拷贝相关联。
15.一种管理由多个发出请求的实体存取对数据库中的数据进行的预定义查询的方法,包括创建存取权,所述存取权被配置以限制对所述预定义查询的存取;把存取权与所述预定义查询相关联;以及根据存取权,准予发出请求的实体对预定义查询的某部分或全部进行存取。
16.根据权利要求15所述的方法,其中,根据存取权,准予发出请求的实体对预定义查询的某部分或全部进行存取,包括允许发出请求的实体拷贝预定义查询;以及把存取权与所拷贝的预定义查询相关联。
17.根据权利要求16所述的方法,还包括允许发出请求的实体修改与所拷贝的预定义查询相关联的存取权。
18.根据权利要求15所述的方法,其中,根据存取权,准予发出请求的实体对预定义查询的某部分或全部进行存取,包括允许发出请求的实体把一或多个查询条件添加至预定义查询。
19.根据权利要求15所述的方法,还包括从具体的发出请求的实体接收存取预定义查询的请求;根据存取权,把预定义查询提交于所述具体的发出请求的实体;以及向所述具体的发出请求的实体显示所述具体的发出请求的实体的存取权的指示。
20.根据权利要求15所述的方法,还包括从具体的发出请求的实体接收存取预定义查询的请求;以及根据存取权,把预定义查询提交于所述具体的发出请求的实体,其中,预定义查询的至少一个查询条件未出现在所述预定义查询中。
21.根据权利要求15所述的方法,其中所述预定义查询至少包括一个查询条件;以及根据存取权,准予发出请求的实体存取预定义查询的某部分或全部,此过程包括下列的至少之一(i)允许所述发出请求的实体读取,但不能修改至少一个查询条件;以及(ii)允许所述发出请求的实体修改至少一个查询条件。
22.根据权利要求15所述的方法,其中,把存取权与预定义查询相关联,包括把预定义查询和存取权作为永久数据对象加以存储。
23.一种计算机可读媒体,所述计算机可读媒体包括程序,当处理器执行所述程序时,所述程序执行管理由多个用户存取对数据库中的数据进行的预定义查询的处理,所述处理包括把一或多个存取权与所述预定义查询的至少某部分相关联;接收第一用户存取所述预定义查询的请求;以及根据存取权,限制所述第一用户对所述预定义查询的存取。
24.根据权利要求23所述的计算机可读媒体,其中,使用由抽象描述数据库中的数据的数据抽象模型所定义的逻辑字段,来构成预定义查询。
25.根据权利要求24所述的计算机可读媒体,其中,把每个逻辑字段映射至数据库中所使用的基础数据表示的数据的一或多个物理实体。
26.根据权利要求23所述的计算机可读媒体,还包括确定第一用户的一或多个属性;以及根据第一用户的存取权和一或多个属性,限制第一用户对预定义查询的存取。
27.根据权利要求26所述的计算机可读媒体,其中,根据第一用户的存取权和一或多个属性来限制第一用户对预定义查询的存取,包括使用一或多个所确定的属性,根据存取权,标识关于第一用户的用户特定的存取权;以及其中,根据用户特定的存取权,准予第一用户存取预定义查询的某部分或全部。
28.根据权利要求26所述的计算机可读媒体,其中,一或多个属性为下列的至少之一(i)用户名;(ii)用户角色;以及(iii)用户授权级别。
29.根据权利要求23所述的计算机可读媒体,其中,一种类型的存取权允许第一用户读取,但不能修改预定义查询的第一部分。
30.根据权利要求29所述的计算机可读媒体,其中,一种类型的存取权防止第二用户读取预定义查询的第一部分。
31.根据权利要求29所述的计算机可读媒体,其中,一种类型的存取权允许第二用户读取和修改预定义查询的第一部分。
32.根据权利要求23所述的计算机可读媒体,其中,一种类型的存取权防止第一用户读取预定义查询的某部分。
33.根据权利要求23所述的计算机可读媒体,其中,一种类型的存取权允许第一用户把查询条件附于所述查询的某部分,但不能修改所述部分。
34.根据权利要求23所述的计算机可读媒体,其中,根据第一用户的存取权和一或多个属性来限制第一用户对预定义查询的存取,此过程包括允许所述用户对预定义查询进行个人拷贝。
35.根据权利要求34所述的计算机可读媒体,其中,根据第一用户的存取权和一或多个属性来限制第一用户对预定义查询的存取,此过程包括允许所述用户修改个人拷贝的某受限部分。
36.根据权利要求34所述的计算机可读媒体,其中,还把与预定义查询相关联的存取权与个人拷贝相关联。
37.一种系统,包括预定义查询;一或多个存取权,与所述预定义查询的至少某部分相关联;以及查询管理器,被配置,从而接收第一用户存取所述预定义查询的请求;以及根据存取权,限制所述第一用户对所述预定义查询的存取。
全文摘要
一种用于管理存取查询的方法、系统以及制造物件,更具体地讲,一种用于管理由多个用户对永久性存储的查询进行的存取的方法、系统以及制造物件。一个实施例提供了一种管理由多个用户存取对数据库中的数据进行的预定义查询的方法。该方法包括把一或多个存取权与该预定义查询的至少某部分相关联。当接收到第一用户存取该预定义查询的请求时,根据存取权,限制该第一用户对该预定义查询的存取。
文档编号G06F17/30GK1725219SQ200510087418
公开日2006年1月25日 申请日期2005年7月22日 优先权日2004年7月22日
发明者理查德·D·德廷杰, 丹尼尔·P·科尔兹 申请人:国际商业机器公司