用于自动修改数据存取方法的方法技术

技术编号:2890294 阅读:238 留言:0更新日期:2012-04-11 18:40
用于将存取主存中存储的目标的编译程序自动转换为存取并更新持续存储的目标的程序的系统和方法。初始程序包括一些原始指令。该原始指令系统来自动修改初始计算机程序。当一个持续存储的目标第一次被存取时,目标装入指令将其一个备份装入主存的一个相应目标中。目标存储指令只将主存中包含新的或更新后的数据的目标复制到相应的持续存储目标中。该系统产生修改的计算机程序,做法是在原始指令中加入无效目标标记指令,该指令跟踪主存中哪些目标包含新的和/或更新的数据。(*该技术在2017年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术一般涉及采用面向目标的计算机程序来处理数据库中存储的数据的系统和方法,特别涉及自动修改存取数据库中数据的目标分类方法的系统和方法,以便插入用于从数据库中检索数据、并且在适当的时间将修改后的新数据存储到数据库中的指令。面向目标的DBMS(数据库管理系统)提供对程序设计语言目标的持续存储,并且它们支持对程序设计语言中实际上是任何数据结构的存储。相反,常规记录结构的DBMS需要嵌入的数据库语言(例如SQL)语句或过程调用,用于在数据库和程序设计语言表示之间来回复制数据,并且它们只支持对记录的存储。某些新的产品允许传统的面向记录的数据库被自动地映像到程序设计语言目标上,从而使程序员可以将其同样看作是面向目标的DBMS。对与目标相关的映像和面向目标的DBMS来说,本专利技术都是一项创新的应用技术。为方便起见,我们将用后者来代表二者。面向目标的数据库的一个引人注目的方面,是用于操纵该数据库的计算机程序相比于传统的数据库存取程序而言更易于理解。面向目标的数据库的一个更重要的优点是“静态数据类型实施”可以适用于存取该数据库的计算机程序。这意味这种程序的编译程序可以保证存储在一个特定数据库区段的所有数据与为该区段定义的数据类型相匹配。因此,一个试图将整数放到雇员姓名区段中的程序会被面向目标的系统中的编译程序拒绝。遗憾的是,编写面向目标的程序来存取存储在DBMS(数据库管理系统)中的磁盘或其它辅助存储器中的数据,起初一看似乎很容易,其实是很困难的。编写将存取目标区段翻译为数据库询问程序的目标分类方法是比较直接的,而编写代码来持续确定什么时候需要从数据库读出数据和什么时候需要将数据写入数据库则要复杂一些,原因在于采用了目标参考(即目标中对其它目标的引用)用的方式。例如,不要因疏忽而在存储器中产生代表相同数据库目标的两个目标,这一点是很重要的。为了本说明书描述方便起见,“存储器”和“主存储器”用于指随机存取存储器或计算机系统的主存储器,“辅存储器”和“持久存储器”指相对于主存储器而言将数据保留更持久或更长时间的磁盘存储器或其它存储形式。本专利技术的一个目的是使程序员在编写面向目标的数据库应用程序时,就象他们在简单地处理主存储器中的数据库目标一样,而不必关心从/向实际的持续存储数据库读出/写入数据的机理。更详细地说,本专利技术的一个目的是提供一个系统和方法,用于“后处理”被编译的面向目标的数据库程序,以便自动插入在将数据库中的数据复制到存储器中的目标之时所需要的额外代码,并且在适当的时候将修改后的新数据从存储器中的目标复制到数据库中。程序员可以以这种方式编写面向目标的数据库程序,其中代表持久存储的数据的目标可以被处理,对初始源代码程序来说,与存储非持续数据的目标没有不同之处。总之,本专利技术是用于将存取主存储器中存储的目标的编译程序自动转换为存取并更新持续存储的目标的程序的系统和方法。初始计算机程序包括用于存取并更新在至少第一目标类中的目标的原始指令。该原始指令存取并更新计算机主存储器中的目标。本专利技术的系统和方法通过向原始指令加入目标装入指令和目标存储指令,来自动修改初始计算机程序,以产生修改后的计算机程序。在执行修改后的计算机程序时,当一个持续存储的目标第一次被存取时,目标装入指令将该持续存储的目标的一个备份装入计算机主存储器的一个相应目标中。目标存储指令在出现预定事件(如完成一事项)时将计算机主存中包含新的或修改后的数据的目标复制到相应的持续存储目标中。本专利技术的系统和方法进一步修改初始计算机程序来产生修改的计算机程序,做法是在原始的指令中加入无效目标标记指令(dirty object markinginstruction),该指令在执行修改的计算机程序时对计算机主存中哪些目标包含新的和/或更新的数据予以跟踪。目标存储指令只复制计算机主存中包含新的和/或更新的数据的那些目标。下面结合附图对本专利技术进行详细的描述,由此可以清楚了解本专利技术的其它目的和特性。其中附图说明图1是采用数据库程序的一个计算机系统的概念性方框图,所述数据库程序采用本专利技术最佳实施例的方法作了修改;图2是本专利技术方法的最佳实施例的概念性方框图;图3是包含本专利技术最佳实施例的一个计算机系统的方框图;图4是在本专利技术最佳实施例中采用的数据库目标分类的方框图;图5是在本专利技术最佳实施例中采用的方法的流程图;图6A和6B是在本专利技术的另一实施例中使用的零指示字例外处理程序的流程图。在本文中,“数据库使用程序”指对持续存储在数据库或在持续存储文件中存储的数据进行存取的任何程序。在最佳实施例中,数据库使用程序的作者在写程序时就好象被用到的所有程序被存储在主存中一样。因此,数据库使用程序的源代码不包含确定何时目标要从持续存储数据库中复制到主存中、跟踪记录主存中哪些目标包含在进行当前事项时将最终需要被写回到数据库中的新的或修改的数据、以及将带有新的或修改的数据的目标写回到数据库时需要的所有程序代码。因此,与包含在数据库和主存之间来传送信息所需要的所有代码的一个源代码程序相比,该源代码程序更便于读出和修改。在最佳实施例中,数据库使用程序的源代码是用Java程序设计语言编写的,该语言是由太阳微系统公司(Sun Microsystem Inc.)销售的一种“机器平台独立”的程序设计语言。该数据库使用程序的源代码200(见图2和图3)采用传统的Java编译程序202编译成java字节码程序204,从而产生通常包含一些目标类别的字节码文件。Java字节码程序是与构成一个虚拟机的字节码程序解释程序176一起执行的。Java字节码程序的设计使得任何计算机只要安装了Java字节码程序的解释程序,无论该计算机的操作系统和计算机硬件平台如何,Java字节码程序都可以在该计算机上执行。然而,数据库使用程序的初始编译字节码程序版本并不是一个真正的功能程序,因为它在编写时基于这样一个错误的假设,即所使用的全部数据库是存储在主存中的,而实际上该数据库是存储在持续存储器中的。根据本专利技术,用修正编译程序中的目标类别的一个“后处理器”程序206来对数据库使用程序的初始编译字节码程序版本进行修改。该后处理器206对目标类别的目标数据结构进行修正,这些目标类将被用于存储持续存储目标的主存备份,以启动对管理目标指示字并且跟踪记录将需要被存储在持续存储数据库中的“无效(dirty)”目标所需要的额外信息的存储。后处理器也修正编译程序中的目标分类方法,做法是增加额外的指令,来确定目标应该在什么时候从持续存储的数据库中复制到主存、复制数据库的目标到主存、跟踪记录主存中的哪些目标包含在进行当前事项时最终需要被写入到数据库中的新的或修正的数据、以及将带有新的或修正的数据的目标写入到数据库。参考图1,图中示出了与数据库使用程序的操作有关的主数据结构。为了解释方便起见,假定采用本专利技术的计算机系统100包括主存102,它通常由高速随机存取存储器构成,和持久数据存储器104(也称为辅存储器),它通常是磁盘存储器或即使在设备断电时也能保持存储在其中的信息的其它存储装置。持久数据存储器104存储一个数据库106,在这种情况下下它被假定为存储多个目标108的一个面向目标的数据库。所有或大多数被存储的目标108包括对数据库中其它目标的指示本文档来自技高网...

【技术保护点】
产生面向目标的计算机程序来存取和更新持久存储的目标的方法,包括以下步骤:接收一个初始计算机程序,该程序包括原始指令,用于存取和更新存储在计算机主存中的目标;自动修改所述初始计算机程序,通过下述操作来产生修改的计算机程序:加入目标 装入指令,该指令在执行所述修改的计算机程序时,当每个所述相应目标被第一次存取时,将所述目标的相应的几个目标从持久存储器装入到所述主存中;加入目标存储指令,该指令在执行所述修改的计算机程序时,在出现预定事件时将所述计算机主存中的相应几个所 述目标存储到所述持久存储器中。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:西伦D托克罗德里克GG卡特尔
申请(专利权)人:太阳微系统有限公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1