用于管理对数据库中数据的访问的系统和方法

文档序号:6562940阅读:277来源:国知局
专利名称:用于管理对数据库中数据的访问的系统和方法
技术领域
本发明总体涉及数据处理,更具体地,涉及管理对数据库中的数据进行的访问。
背景技术
数据库是计算机化的信息存储和检索系统。关系型数据库管理系统是使用用于存储和检索数据的关系型技术的计算机数据库管理系统(DBMS)。最为普遍的类型的数据库是关系型数据库,其为一种表格式数据库,其中对数据进行定义以便可以采用多种不同的方式对其进行重组和访问。
不管具体的体系结构如何,在DBMS中,请求实体(例如应用或操作系统)通过发布数据库访问请求来要求对所指定的数据库的访问。例如,这类请求可包括简单的目录查找请求或用于在数据库中读取、改变和增加所指定的记录的事务及事务的组合。这些请求是采用诸如结构化查询语言(SQL)的高级查询语言构成的。例如,SQL用于进行交互式查询,以便从数据库中获得信息以及更新数据库,该数据库例如为国际商业机器公司(IBM)的DB2、微软的SQL Server以及Oracle,Sybase和ComputerAssociates的数据库产品。术语“查询”是对从所存储的数据库中检索数据的一组命令的命名。查询采用命令语言的形式,该命令语言允许程序员和程序选择、插入、更新、找出数据的位置等等。
包括应用、操作系统以及在最高级的用户在内的任何请求实体可发布针对数据库的查询,以便检索一个或多个所需的数据项。所需的数据项永久地存储在数据库中,且因此能够被每一授权的请求实体进行多次访问。然而。在特定的情况下,可能希望使特定的数据项仅可用于有限次数的访问。例如,假设一个给定公司,其对向客户提供投递状态信息的数据库进行维护。进一步假设该数据库的可用存储容量是有限的。就此来说,必须将该数据库的大小保持为小型,因此该公司的每一客户仅被允许对特定的投递状态信息访问一次。因此,当相应的客户已经访问过了该特定的投递状态信息时,便从数据库中删除该信息,以便节省存储容量。随后,当新的投递状态信息对于该相应的客户可用时,他/她可再次仅访问此信息一次。这样,可准确地管理该数据库的大小。
实现这样一种仅允许对存储在传统数据库中的数据项进行有限次访问的方案需要实现合适的编程逻辑。该编程逻辑需要监视对投递状态信息的访问并在对该信息的相应访问已经发生过时触发对该信息的删除。然而,这种编程逻辑的实现是一项复杂且耗时的任务,其需要对基础数据库(underlying database)的详尽了解。
因此,需要一种用于对数据库中应对于有限次数的访问可用的数据进行管理的有效技术。

发明内容
本发明总体涉及一种用于数据处理的方法、系统和制造物品,更具体地,涉及一种用于对数据库中应对于有限次数的访问可用的数据进行管理的方法、系统和制造物品。
一个实施例提供了一种管理对数据库中数据的访问的计算机实现的方法。该方法包括从请求实体接收针对具有消耗性数据的数据库的查询。该消耗性数据被配置为仅可访问预定义的访问次数。该查询被配置为访问该消耗性数据。针对该数据库执行该查询,以获得包括该消耗性数据的查询结果。该方法还包括作为针对该数据库的查询的执行结果,判断是否达到预定义的访问次数。如果达到,则使该消耗性数据不可访问。将所获得的查询结果返回给请求实体。
另一个实施例提供了一种包含程序的计算机可读介质,该程序在由处理器执行时执行用于管理对数据库中数据的访问的操作。该操作包括从请求实体接收针对具有消耗性数据的数据库的查询。该消耗性数据被配置为仅可访问预定义的访问次数。该查询被配置为访问该消耗性数据。针对该数据库执行该查询,以获得包括该消耗性数据的查询结果。该操作还包括作为针对该数据库的查询的执行结果,判断是否达到预定义的访问次数。如果达到,则使该消耗性数据不可访问。将所获得的查询结果返回给请求实体。


参照附图所示的本发明实施例,作出在上文简短总结过的本发明的更为具体的描述,以便能够获得并详细理解本发明的上述特征、优点以及目的。
但是,应当指出,附图仅示出了本发明的典型实施例,其不应被认为是对本发明范围的限制,因为本发明允许其他等同有效的实施例。
图1是根据本发明所采用的计算机系统的一个实施例;图2是本发明一个实施例的软件组件的关系视图;图3是示出一个实施例中管理对数据库中的数据的访问的方法的流程图;以及图4是示出一个实施例中判断数据库中的消耗性数据的访问何时达到预定义次数的方法的流程图。
具体实施例方式
引言本发明总体涉及一种用于管理对数据库中的数据的访问的方法、系统和制造物品,更具体地,用于管理对数据库中的消耗性数据的访问。在本发明的背景下,消耗性数据是数据库中这样的数据其被配置为可访问预定义的访问次数。预定义的访问次数可由与数据库相关联的、合适的元数据来定义。采用与消耗性数据相关联的、合适的跟踪对象,可跟踪对消耗性数据的每次访问。
在一个实施例中,请求实体发布针对具有消耗性数据的基础数据库的查询。举例而言,消耗性数据是基础数据库的给定字段中的这种数据其被与数据库相关联的、合适的元数据指定为消耗性。查询被配置为从基础数据库中检索消耗性数据。因此,当该查询针对该数据库执行时,将获取包括消耗性数据在内的查询结果。所获得的查询结果被返回给请求实体。
由于消耗性数据被配置为仅可访问预定义的访问次数,所以在执行针对该数据库的查询之后判断是否达到了预定义的访问次数。如果达到了预定义的访问次数,则使消耗性数据不可访问。举例而言,使消耗性数据不可访问可通过删除该消耗性数据或通过用替代数据替代该消耗性数据来实现。该替代数据可随后由其他的消耗性数据来替代。
优选实施例下面,参照本发明的实施例。但是,应当理解,本发明并不限于具体描述的实施例。而是,可以预期以下特征和元素的任何组合来实现本发明,而无论其是否涉及不同的实施例。另外,在各实施例中,本发明提供优于现有技术的多个优点。然而,尽管本发明的实施例可获得优于其他可能的解决方案和/或优于现有技术的优点,但某一给定的实施例是否获得某一特定优点并不是对本发明的限制。因此,下面的方面、特征、实施例以及优点仅是说明性的,并且,除非明确说明,不应认为是所附权利要求的元素或限制。
本发明的一个实施例作为程序产品来实现,该程序产品用于计算机系统,例如图1所示且在下面描述的计算机系统110。该程序产品的程序定义了本实施例的功能(包括本文描述的方法),并可被包含在多种计算机可读介质中。示例性的计算机可读介质包括、但不限于(i)永久存储在不可写的存储介质(例如计算机内的只读存储设备,例如CD-ROM驱动器可读的CD-ROM盘)上的信息;(ii)存储在可写存储介质(例如盘驱动器或硬盘驱动器内的软盘)上的可更改信息;或者(iii)诸如通过包括无线通信在内的计算机网络或电话网络籍由通信介质传送到计算机的信息。后一实施例具体包括来自/传到互联网以及其他网络的信息。在承载指向本发明的功能的计算机可读指令时,这种计算机可读介质代表了本发明的实施例。
一般地,被执行以实现本发明实施例的例程可以是操作系统的一部分,或是特定应用、组件、程序、模块、对象或指令序列。本发明的软件典型地由多个指令组成,这些指令将由本地计算机翻译为机器可读的格式并由此成为可执行的指令。此外,程序由变量和数据结构组成,这些变量和数据结构或者本地驻留于程序内,或者可在存储器或存储设备中找到。另外,可根据应用来标识后面所描述的各程序,该应用是在本发明的具体实施例中为其实现了这些程序的应用。然而,应该理解,下面的任何特定命名仅是为了方便起见而采用的,因此,本发明不应限制为用于由这些命名所标识和/或暗示的任何特定应用内。
示例性计算环境图1示出了计算机100(其是计算机系统110的一部分),计算机100在具有本文所描述的特征和功能时成为根据本发明实施例的专用计算机。计算机100可代表任何类型的计算机、计算机系统或其他可编程电子设备,包括客户端计算机、服务器计算机、便携式计算机、个人数字助理(PDA)、嵌入式控制器、基于PC的服务器、微计算机、中型计算机、大型计算机以及适用于支持本发明的方法、装置以及制造物品的其他计算机。示例性地,计算机100是联网系统110的一部分。在这一点上,本发明可在分布式计算环境中实现,该分布式计算环境中任务由通过通信网络链接的远程处理设备所执行。在分布式计算环境中,程序模块可位于本地存储设备和远程存储设备中。在另一实施例中,计算机100为独立设备。为了解释权利要求,术语“计算机”意味着具有至少一个处理器的任何计算设备。该计算机可以是独立设备,也可以是网络的一部分,在作为网络的一部分的情况下,该计算机可通过通信手段(例如局域网或广域网)连接到另一设备(即另一计算机)。
无论怎样,可以理解,图1仅是计算机系统的一种配置。本发明的实施例可应用于任何相当的配置,而无论计算机100是复杂的多用户设备、单用户工作站、还是不具有自身的非易失性存储器的网络设备。
计算机100可包括多个操作器以及例如由可操作地连接到存储设备138的大容量存储器接口137、可操作地连接到显示器142的视频接口140以及经由适当的网络可操作地连接到多个联网设备146(其可代表互联网)的网络接口144所示出的外围系统。尽管存储器138被示为单个单元,但其可以是例如固定盘驱动器、软盘驱动器、磁带驱动器、可移动存储卡或光学存储器的固定和/或可移动存储设备的任意组合。显示器142可以是用于输出可视信息的任何视频输出设备。
计算机100被示为包括至少一个处理器112,其经由总线114从主存储器116获得指令和数据。处理器112可以是适用于支持本发明的方法的任何处理器。具体地,选择计算机处理器112以支持本发明的特征。例如,该处理器为纽约阿蒙克的国际商业机器公司所售的PowerPC处理器。
主存储器116是大到足够容纳必要的程序及数据结构的任何存储器。主存储器116可以是一个存储设备或存储设备的组合,存储设备包括随机存储器、非易失性或后备存储器(例如可编程存储器或快闪存储器、只读存储器等)。另外,可以认为,存储器116包括在物理上位于计算机系统110内的其他位置的存储器,例如,用作虚拟存储器、或存储于大容量存储设备(例如直接访问存储设备138)上、或存储于经由总线114连接到计算机100的另一计算机上的任何存储容量。因此,主存储器116和存储设备138可以是一个虚拟地址空间的一部分,该虚拟地址空间跨越多个主存储设备与辅助存储设备。
示例性数据库访问管理环境现在参照图2,其示出了一个实施例中的软件组件的关系视图。该软件组件示例性地包括用户接口210、DBMS 220以及一个或多个应用240(为简化起见仅示出一个应用)。DBMS 220示例性地包括数据库230和具有查询引擎234的查询执行单元236。
为简化起见,数据库230被示为单个数据库。然而,数据库230可由相对于彼此分布式的多个数据库来实现。另外,一个或多个数据库可分布在一个或多个联网设备(例如图1中的联网设备146)上。
数据库230代表任何数据的集合,无论该数据的特定物理意义如何。数据的物理意义定义了数据的组织模式。举例而言,数据库230可以按照关系型模式(可通过SQL查询访问)或按照XML模式(可通过XML查询访问)来组织。然而,本发明并不限于特定的模式,而是预期对当前未知模式的延伸。这里所用的术语“模式”一般地指数据库230中所包含的数据的特定布置。
例如,数据库230包括消耗性数据232。在一个实施例中,消耗性数据232是一个或多个字段的数据,其被适当的元数据235指定为消耗性,该元数据235是与数据库230相关联的。换言之,数据232仅在包括该数据的一个或多个字段被指定为消耗性时才是消耗性的。然而,应当指出的是,可以广泛地预期能够将数据232标识为消耗性数据的任何实现。例如,假设数据库230按照具有一个或多个数据库表的关系型模式进行组织,其中每一数据库表包括至少一列。在这种情况下,元数据235可包括消耗性列标识符237,其将至少一个数据库表的一个或多个中的一列或多列指定为消耗性。
在一个实施例中,消耗性数据232用于定义在需要时可被检索和使用的有限数量的安全密钥,由此,可使各密钥在其使用之后不可访问。相应地,可使用消耗性数据232来实现安全密钥生成器,由此,在消耗性列中使密钥仅对于有限次数的访问(即对应于各用户或同一用户对该密钥的单个使用)可用。在对消耗性列中的密钥进行了预定义的有限次数的访问之后,使该密钥不可访问。对于消耗性数据232的使用的另一示例是对工作流任务的排队。更具体地,在对工作流任务进行排队时,可将对应的功能调用添加到基础数据库中的消耗性列中。当给定的工作流任务应执行时,可使用适当的查询从消耗性列中检索其对应的功能调用。当开始该基础工作流任务时,可独立于该基础工作流任务的执行状态而使所检索到的功能调用自动地被删除。另外,消耗性列可用于以半永久性方式存储对象。换言之,当需要给定的对象时,其可被查询、响应于查询而从该列中被检索、以及然后自动地被从该消耗性列中移除。然而,应当指出的是,使用消耗性数据232的上述示例并不是为了定义穷举性清单。而是,这些示例仅是以举例的方式被描述的,并且对数据库表中的消耗性列的任何可能使用都是可以广泛地预期的。
根据一个方面,应用240(更一般地,包括最高级别的用户在内的任何请求实体)发布针对数据库230的查询,例如虚线箭头265所示的查询260。通常,可预先定义(即硬编码为应用240的一部分)由应用240发布的查询,或响应于输入(例如用户输入)而生成由应用240发布的查询。例如,由用户使用用户接口210来创建应用240所发布的查询,用户接口210可以是被配置为创建/提交查询的任何适合的用户接口。根据一个方面,用户接口210是图形用户接口。然而,应当指出的是,用户接口210仅是以示例的形式示出的;任何适合的请求实体(例如应用240、操作系统或终端用户)都可创建和提交针对数据库230的查询。因此,可广泛地预期所有这类实现。
在一个实施例中,请求实体访问适合的数据库连接工具,例如Web应用、开放数据库连接(Open Database Connectivity,ODBC)驱动器、Java数据库连接(Java Database Connectivity,JDBC)驱动器或Java应用编程接口(Java Application Programming Interface,Java API),以便创建查询。Web应用是这样一种应用其通过例如允许请求实体对数据库230进行查询,而可由Web浏览器访问并提供超出信息的静态显示之上的某一功能。ODBC驱动器是这样一种驱动器其提供一组标准应用编程接口,以执行诸如连接到数据库230、执行动态SQL功能、以及确认或重新进行数据库事务等数据库功能。JDBC驱动器是一种由数据库管理系统(例如DBMS 220)所包括的程序,其支持数据库230与Java应用之间的JDBC标准访问。Java API是一种基于Java的接口,其允许用高级语言编写的应用程序(例如请求实体、ODBC或JDBC)使用操作系统或另一程序(例如应用240)的特定数据或功能。
在一个实施例中,为了简化查询创建,使用抽象模型来创建查询260,该抽象模型对用户隐藏数据库230物理层的某些复杂性。抽象模型可包括具有可识别的名称的逻辑字段,其映射到基础数据库230的相应的物理字段。因此,可生成包含基于逻辑字段的条件的“抽象”查询。在发布之后,抽象查询的逻辑字段可被映射到相应的物理字段,以创建物理或“具体的”查询(例如查询260)。对于某些应用来说,可对抽象查询进行保存,允许随后的用户再次使用所保存的抽象查询而无需生成他们自己的抽象查询。数据抽象和抽象查询的概念在2002年2月26日提交的题为“Application Portability and Extensibility through Database Schema andQuery Abstraction”的共有未决申请10/083,075中被详细地描述,在此整体并入该申请作为参考。
例如,查询260从应用240被发布到对查询260进行处理的查询执行单元236。应当指出的是,为简化起见,查询执行单元236被示为仅包括查询引擎234。然而,查询执行单元236可包括其他组件,例如查询分析器和查询优化器。查询分析器通常被配置为接受来自例如应用240等请求实体的、所接收到的查询输入,并接着对所接收到的查询进行分析。然后,查询分析器可将分析过的查询传送到查询优化器进行优化。查询优化器是这样一种应用程序,其被配置为根据基础数据库(例如数据库230)的已知特性、在其上将执行搜索策略的基础系统(例如图1中的计算机系统110)和/或可选用户指定的优化目标,为给定的一组搜索参数构造接近于最优的搜索策略(也称为“访问计划”)。但是,并非所有的策略都是等同的,各种因素都可能影响最优搜索策略的选择。然而,通常,这种搜索策略仅确定对执行相应查询的可用硬件/软件组件的最优化使用。接着,查询优化器可将优化后的查询传送到查询引擎234进行执行。
查询引擎234执行针对数据库230的查询260,以确定对于查询260的查询结果270。查询结果270被返回给应用240。
在一个实施例中,查询260被配置为访问消耗性数据232。因此,查询结果270中包含消耗性数据232的至少一部分。在执行针对数据库230的查询260后,如果消耗性数据232的这至少一部分被访问了预定义的次数,则使消耗性数据232的这至少一部分不可访问。就此来说,将适合的跟踪对象239(例如计数器)配置为跟踪对消耗性数据232的这至少一部分的访问次数。对消耗性数据232的这至少一部分的每一新访问导致查询引擎234递增由跟踪对象239维护的计数值。于是,在一个实施例中,将更新后的实际访问次数与由元数据235定义的预定义访问次数进行比较。如果更新后的实际访问次数等于该预定义访问次数,则使消耗性数据232的这至少一部分不可访问,如下面参照图3所详细描述的那样。
下面,参照图3描述管理对基础数据库中的消耗性数据的访问的示例性方法。参照图4描述用于判断是否达到对基础数据库中的消耗性数据的预定义访问次数的示例性方法。
访问数据库中的消耗性数据现在参照图3,其示出了方法300的一个实施例,方法300用于管理对基础数据库(例如图2的数据库230)中的消耗性数据(例如图2的消耗性数据232)的访问。该消耗性数据被配置为仅可访问预定义的访问次数。在一个实施例中,由图2的查询引擎234执行方法300的至少部分步骤。另外,方法300的至少几个步骤可基于经由图2的用户接口210接收的用户输入来执行。方法300开始于步骤310。
在步骤320,从请求实体(例如图2的应用240或用户)接收针对基础数据库的查询(例如图2的查询260)。在一个实施例中,该接收到的查询被配置为访问数据库230中的至少部分消耗性数据。在一个实施例中,在用户使用图2的用户接口210编写查询之后,由应用240发布该查询。
在步骤330,针对基础数据库执行所接收到的查询,由此生成相应的查询结果(例如图2的查询结果270)。查询结果包括消耗性数据232的上述至少一部分。举例而言,假设现在图2的应用240发布了针对数据库的查询,该数据库具有表“任务表”,该表包括具有被指定为消耗性的任务信息的列。因此,“任务”列示意性地定义图2的消耗性数据232。示例性“任务表”如下面的表I所示。
表I-示例性数据库表“任务表”

从表I可以看出,“任务表”示意性地包含“处理器”、“时间片#”和“任务”列,这些列包含了对应的处理器、时间片编号和任务信息。例如,根据行002,任务“查询1”可被检索,以便由处理器“10001”的时间片编号“1”来执行。在本发明的背景下,时间片是与给定处理器相关联的工作单位。另外,如上所述,仅有“任务”列被指定为消耗性。然而,应当指出的是,示例性“任务表”中的任意给定数量的列都可被指定为消耗性的。在一个实施例中,“任务”列由创建该列和/或“任务表”的开发人员或管理员以及相应的元数据(例如图2的元数据235)指定为消耗性的。
假设现在图2的应用240针对表I的示例性“任务表”发布了下表II中所示的示例性查询,且该查询在步骤320被接收。例如,在执行工作流的背景下,进一步假设下表II中的示例性查询被发布以便从“任务表”中识别接下来将由相应的处理器执行的任务。举例而言,表II的示例性查询以SQL示出,并假设表I的示例性“任务表”包含在关系型数据库中。然而,本领域的技术人员可以容易地认识到其他可能的实现,例如对应的XML查询以及按照XML模式布置的数据库。因此,应当指出,该示例性查询的实现并不限于特定的机器可读语言,而是可以广泛地预期以任何已知的或是未知的机器可读语言的实现。
表II-查询示例

应当指出,表II的示例性查询被配置为访问表I的“任务表”的行003中的数据记录(根据表II的行002)。具体而言,表II的示例性查询被配置为对指示处理器10001且时间片编号为2的(根据表II的行003)的数据记录中的各列(根据表II的行001)进行数据检索。因此,获得下表III中所示的查询结果。
表III-示例性查询结果

从表III的行002可以看出,如上面所指出的,该示例性查询结果包含表I的行003。另外,应当指出的是,仅检索出了上面表I的示例性“任务表”的消耗性“任务”列的任务“查询2”(行002)。换言之,仅访问了表I的“任务”列-即消耗性“任务”列-的消耗性数据的一部分。
于是,在步骤340,判断是否达到对该消耗性数据的上述至少一部分的预定义访问次数。下面参照图4描述判断是否达到预定义的访问次数的示例性方法。
在一个实施例中,如果该消耗性数据的所述至少一部分被访问了给定的次数,则便达到了预定义的访问次数。在另一实施例中,如果预定义数量的用户已访问过了该消耗性数据的所述至少一部分,则便达到了预定义的访问次数。例如,相应的元数据可定义将允许四个不同的用户对该消耗性数据的所述至少一部分进行访问。换言之,仅在四个不同的用户中的每一个均已对该消耗性数据的所述至少一部分访问了至少一次时,才使该消耗性数据的所述至少一部分不可访问。因此,这四个用户中给定的一个可对该消耗性数据的所述至少一部分访问多次,而不会影响到该数据对其他用户的可用性。在又一实施例中,对应的元数据可规定当四个特定的用户(例如Larry、Joe、Bob和John)对该消耗性数据的所述至少一部分进行了访问时便达到预定义的访问次数。在这种情况下,这四个用户中的一个或第五用户(例如Richard)也可对该消耗性数据的所述至少一部分访问多次。根据一个方面,只要这四个特定用户一次都未对该消耗性数据的所述至少一部分进行过访问,这便不会影响到该数据对其他用户的可用性。然而,在这种情况下,可对该消耗性数据的所述至少一部分设置安全限制,以便仅有这四个特定用户有权对该消耗性数据的所述至少一部分进行访问。可广泛地预期所有这样的不同实现。
如果在步骤340判断为达到了预定义的访问次数,则方法300前进到步骤350。否则,方法300前进到步骤360。
在步骤350,使该消耗性数据的所述至少一部分不可访问。在一个实施例中,使该消耗性数据的所述至少一部分不可访问包括用替代数据来替代该消耗性数据的所述至少一部分。该替代数据可随后用其他的消耗性数据来替代。举例而言,假设用空值来替代表I的消耗性“任务”列中的任务“查询2”。因此,得到下表IV中所示的示例性修改后的“任务表”。
表IV-示例性修改后的数据库表“任务表”

从表IV可以看出,表I的行003中的任务“查询2”被空值“NULL”所替代(行003)。如上所述,该空值可随后用其他的消耗性数据—例如“查询N”—来替代,该其他的消耗性数据也可以是仅可访问给定的访问次数的。
在步骤360,将所获得的查询结果返回给表2的应用240。接着,方法300在步骤370退出。
应当指出,图3的方法300仅是为了例示管理对基础数据库中的消耗性数据的访问的一个实施例而被描述的。然而,本发明并不限于所描述的实施例,而是可以实现各种变形。因此,在不同的实施例中,示例性方法300的步骤的执行顺序可以改变。例如,根据步骤360返回查询结果可在判断(根据步骤340)是否达到预定义的访问次数之前进行。或者,在根据步骤330执行查询之前,可判断(根据步骤340)是否达到预定义的访问次数。在这种情况下,当在执行前已经达到了预定义的次数时可阻止该查询的执行。另外,可广泛地预期特定方法步骤的任何可能的实现。例如,可删除消耗性数据而不是用替代值替代该消耗性数据。举例而言,假设基础数据库具有表“密钥表”,该表包含被指定为消耗性的单个“密钥”列。下表V中示出了示例性“密钥表”。
表V-示例性数据库表“密钥表”

由表V可以看出,“密钥”列包含五个示例性的安全密钥(行002-006)。假设表V的“密钥表”被配置为实现安全密钥生成器,其中当给定请求实体已检索过各密钥时,该密钥便从“密钥”列中被删除。进一步假设表V的行002中的安全密钥被图2的应用240使用下表VI中示出的示例性查询所检索。举例而言,表VI的示例性查询以SQL示出。然而,应当指出,该示例性查询的实现并不限于特定的机器可读语言,而是可以广泛地预期以已知或未知的任何机器可读语言来实现。
表VI-查询示例

从行003可以看出,表VI的示例性查询请求包含在表V的示例性“密钥表”中“密钥”列的第一行中的安全密钥。如上所述,当该密钥被返回给图2的应用240时,其便被从“密钥”列删除,使得表V的示例性表成为如下表VII所示。
表VII-示例性修改后的数据库表“密钥表”

从表VII的修改后的“密钥表”可以看出,具有密钥“123432432”的、表V的示例性“密钥表”的第一行(行002)已被删除,所有剩余的行(行003-006)各自上移一行。然而,可简单地用空值来替代被检索密钥“123432432”(表V的行001),如上面参照表I-IV所描述的示例所示,而不是将剩余行上移。因此,随后可用新的密钥来替代该空值。就此来说,在一个实施例中,更新触发器可被配置为监视表V与表VII的“密钥”列中的可用密钥数,以便判断可用个数何时达到预定的较低阈值,例如“0”。更新触发器可进一步被配置为当监视指示达到了预定的较低阈值时生成新的安全密钥。因此,可实现有效的密钥生成器,其被配置为动态地生成安全密钥。
参照图4,其示出了示例性方法400,方法400用于判断是否达到了对基础数据库(例如图2的数据库230)中消耗性数据(例如图2的消耗性数据232)的预定义访问次数。根据一个方面,从图3的步骤330进入方法400。在一个实施例中,由图2的查询引擎234执行方法400的至少部分步骤。方法400开始于步骤410。
在步骤420,对跟踪对象(例如图2的跟踪对象239)进行访问,该跟踪对象包含对消耗性数据的实际访问次数。因此,可确定对该消耗性数据的实际访问次数。在一个实施例中,实际访问次数表示对基础数据库中被指定为消耗性的表列的访问次数。
在步骤430,更新实际访问次数。在给定示例中,响应于被配置为访问消耗性列的查询(例如图2的查询260)的接收,更新实际访问次数。在一个实施例中,每当消耗性列被访问时,实际访问次数便递增1。
在步骤440,判断更新后的实际访问次数是否等于预定义的访问次数,即是否达到预定义的访问次数。如果没有达到预定义的访问次数,则方法400在步骤460退出。否则,方法400前进到步骤450。
在步骤450,删除跟踪对象。然后,方法400在步骤460退出。
然而,应当指出,删除跟踪对象只是一种可能的实现,并且,可以考虑其他的实现。具体而言,如果通过删除消耗性数据使消耗性数据不可访问,则可以假设不再需要该跟踪对象,因此可将其删除。但是,如果仅用适合的替代数据—其可被其他的消耗性数据所替代—来替代该消耗性数据,则该跟踪对象仍然可用。在这种情况下,可简单地将跟踪对象中的实际访问次数重置为“0”以便随后使用,而不是删除该跟踪对象。可广泛地预期所有这样的实现。
尽管上述内容针对的是本发明的实施例,但在不脱离本发明的基本范围的情况下,可设计出本发明的其他实施例以及进一步的实施例,本发明的范围由所附权利要求确定。
权利要求
1.一种管理对数据库中数据的访问的计算机实现的方法,包括从请求实体接收针对数据库的查询,该数据库具有被配置为仅可访问预定义的访问次数的消耗性数据,所述查询被配置为访问该消耗性数据;针对该数据库执行所述查询,以获得包括所述消耗性数据的查询结果;作为针对该数据库的所述查询的执行结果,判断是否达到所述预定义的访问次数;如果达到,则使所述消耗性数据不可访问;以及将所述获得的查询结果返回给所述请求实体。
2.根据权利要求1的方法,其中使所述消耗性数据不可访问包括删除该消耗性数据。
3.根据权利要求1的方法,其中使所述消耗性数据不可访问包括用替代数据替代该消耗性数据。
4.根据权利要求3的方法,其中所述替代数据包括一个或多个空值,该方法还包括随后用适合的消耗性数据替代该一个或多个空值中的至少一个。
5.根据权利要求1的方法,其中所述预定义的访问次数是一,由此仅允许对所述消耗性数据访问一次。
6.根据权利要求1的方法,其中所述预定义的访问次数是由多个授权用户定义的,该授权用户中的每一个被允许对所述消耗性数据进行指定次数的访问。
7.根据权利要求1的方法,其中所述预定义的访问次数是由与所述消耗性数据相关联的元数据定义的。
8.根据权利要求1的方法,其中判断是否达到所述预定义的访问次数包括访问跟踪对象,该跟踪对象包括所述消耗性数据的实际访问次数;更新所述跟踪对象中的实际访问次数,以反映所执行的查询对所述消耗性数据的访问;以及将所述跟踪对象中更新后的实际访问次数与所述预定义的访问次数进行比较,其中当该更新后的实际访问次数等于该预定义的访问次数时,便达到该预定义的访问次数。
9.根据权利要求8的方法,还包括如果所述更新后的实际访问次数等于所述预定义的访问次数,则删除所述跟踪对象。
10.根据权利要求1的方法,其中所述消耗性数据存储在数据库表的列中,该列根据包括所述预定义的访问次数的元数据被定义为消耗性列。
11.根据权利要求1的方法,其中所述消耗性数据在所述预定义的访问次数之后变为不可访问,作为被存储在数据库表列中的结果,该数据库表列根据包括所述预定义的访问次数的元数据被定义为消耗性列。
12.一种用于管理对数据库中数据的访问的系统,包括用于执行上述方法权利要求中的任意一种方法的装置。
全文摘要
本发明提供一种方法、系统和制造物品,用于数据处理,更具体地,用于管理对数据库中应对于有限次数的访问可用的数据的访问。一个实施例提供了一种方法,包括从请求实体接收针对数据库的查询,该数据库具有被配置为仅可访问预定义的访问次数的消耗性数据。该查询被配置为访问该消耗性数据,并针对该数据库被执行,以获得包括该消耗性数据的查询结果。该方法还包括作为针对该数据库的查询的执行结果,判断是否达到预定义的访问次数。如果达到,则使该消耗性数据不可访问。将所获得的查询结果返回给请求实体。
文档编号G06F17/30GK1975731SQ20061014708
公开日2007年6月6日 申请日期2006年11月14日 优先权日2005年11月30日
发明者R·D·德廷格, R·J·斯蒂芬斯, D·P·科尔兹 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1