专利名称:将应用程序数据分配至不相似格式分布式数据库的方法和系统的制作方法
技术领域:
本发明一般涉及分布式数据处理系统,更具体地涉及一种用于在不相似格式的分布式数据库之间分配应用程序数据的系统和方法。
许多传统企业应用程序使用它们自己专有的数据库格式存储数据。随着商业用户需要的增长,应用程序的开发也随着发展,而这种发展的一条途径是离开专有数据库体系结构而过渡至标准的关系数据库或面向对象数据库的模型。
在关系数据库中,数据存于多维表格中。每个表格具有多行和多列,它们中布满用于描述数据元之间的关系的信息。使用关系数据库而不是专有数据库的明显优点是使数据向企业计算开发商之间广泛应用的关系数据库查询的广大阵列和数据操纵工具开放。它还允许商业用户和应用程序本身利用已经证实的商业企业数据库引擎的可靠性。关系数据库不是束缚于特定记录和文件格式的;当由应用程序开发商作出改变和附加时,顾客的与数据库接口的编写工具将会受到少得多的冲击。
许多现有应用软件仍然使用它们自己专有格式的数据,因此使大多数新软件工具无法访问这些数据。此外,许多用户并不关心他们传统软件的置换,因为他们已经对现有应用软件和有关工具给予很大投资。用户还对从已经运用得很好的传统数据库突然转换到可能出现未预见到的问题的崭新系统表示关心。因此,软件开发商不得不继续支持这些已经不再有效或灵活的传统数据库系统。
考虑到以上所述,因此本发明的一个目的是提供一种系统和方法,用于使一个给定的应用软件同时支持多个数据库模型。
本发明的另一个目的是提供一种系统和方法,用于准备将一个传统数据库系统移植入新的具有不相似格式的应用软件数据库系统中。
以上目的由一个存储子系统所定义的分布式体系结构所完成,它从一个商业对象接收将准备存储的数据包装在内的数据对象。该存储子系统负责将数据对象分配至各转换器,后者将数据转换为存于给定类型数据库中的数据对象属性所需要的格式。
商业对象表示一种需要观看或操纵存于应用软件数据库中数据的应用软件。商业对象通过工厂对象建立数据对象。工厂对象是用于产生不同类型数据对象的抽象工厂。数据对象表示可供应用程序应用的信息的某些逻辑组合。例如,一个用于表示地址簿应用程序的个人的数据对象可能包含关于该地址簿追踪的该人的所有有关信息。存储对象表示对应用软件或商业对象的接口。数据访问对象或转换器有责任将数据对象的数据转换为可用于将数据对象的包装信息存入数据库的不同格式。数据库接口对象从数据访问对象接收数据并且将这些数据存入物理数据库。
商业对象具有定义为与应用软件接口的各方法。当应用软件准备将数据写入数据库时,商业对象请求从工厂对象中建立数据对象。建立数据对象后商业对象即将来自应用软件的信息填入数据对象中。在信息填入数据对象后,商业对象请求存储对象将此数据对象中的信息存入多个外部数据库中并且将此数据对象传送至存储对象。该存储对象将关于数据之事通知本地和远程数据访问对象,这些数据访问对象即通过数据库接口将数据对象存入它们的相应数据库中。这些数据以不同格式存入不同数据库中。
此系统在两个数据库模型之间提供一条平滑移植的途径,并且支持更多数量的数据库模型。不同格式的数据库可以平行地存在和得到更新,从而给予用户灵活性以便按照他们看来合适的方式来访问数据。用户然后能够从专有的格式移植至它们所需和规划允许的工业标准格式。该系统还能帮助开发队伍摆脱传统数据库格式的限制并且允许数据库在增加新特征和功能时得到进展。传统数据库系统能够在各特征附加至新关系数据库时保留其当今结构。这允许用户使用关系数据库的新特征而不必协调它们的现有工具。
结合附图阅读优选实施例中的以下详细描述,将能更好地理解本发明,附图中
图1阐述具有两个可能具有不相似格式和位于不同存储设备上的数据库的系统。
图2是示例性统一模型化语言(UML)类图,用于阐述根据本发明优选实施例的应用程序数据分配系统的不同对象之间的关系。
图3是示例图,用于阐述根据本发明优选实施例的应用程序数据分配系统的不同对象之间的交互作用。
图4是示例图,用于阐述根据本发明优选实施例的应用程序数据分配系统的物理数据库、派生数据访问对象和抽象基类之间的关系。
由于本发明优选地使用面向对象编程语言来实施,以下的说明使用面向对象设计中通常使用的名词。现在更详细地参照附图,其中相同数字系指数个视图中的相同部件,图1阐述具有准备由单个计算机应用软件维护的两个不相似数据库的系统2。系统2包括一个计算机3,它具有一个中央处理单元(CPU)4、一个存储设备5和一个访问逻辑电路6。它还包括一个具有本地数据库8的本地存储设备7、一个服务器设备10和一个具有远程数据库9的远程存储设备7′。远程数据库9能够位于与本地数据库8相同的存储设备上,以及远程存储设备7′也能直接连至计算机3而不必通过网络11。
计算机数据库应用软件在计算机3上运行并且访问存于本地数据库8中的数据;位于服务器10中的相似数据库软件访问存于远程数据库9中的数据。本地应用软件程序能够跨越网络11访问远程数据库。本地数据库8能够具有与远程数据库9不同的格式。对于本说明,本地数据库8考虑为专有数据库,而远程数据库9则考虑为关系数据库或面向对象数据库。通常使用面向对象设计方案来开发计算机访问应用软件,以及它使用对象来表示不同计算元和包装它们的接口功能。
图2是示例性统一模型化语言(UML)类图,用于阐述根据本发明优选实施例的不同对象之间的关系。UML具有两个主要部分——一个元模型和一个符号表示法。该元模型用于描述在应用软件内表示UML概念所需的对象、属性和关系。有一个符号表示法用于将设计的动态元件例如对象、消息和有限状态机加以模型化。
在面向对象应用程序中,各类具有属性(成员变量)、操作(成员函数)和关系。UML中的类图的基本元素是表示类的图标。UML中的类图标由分为三格的矩形框表示。顶格包含类名称。中格包含属性表和底格包含操作(函数)表。在许多图中下面两格是省略的。如果它们存在的话,则用于显示对特定图有用的属性和操作。
黑色斜矩形表示组成部分。关系的另一端上的箭头标示该关系可在一个方向内行进。在UML中,如果不用箭头表示来限制关系,则认为关系是双向的。组成部分关系是约束或聚集的强形式。聚集是全部/部分关系。聚集的弱形式由一个开口斜矩形表示。关系标示聚集类在某些方面是全部,而关系中的其他类则多少是该全部的一部分。在UML中,关系的末端称为它的作用。如果关系的末端标以*,则它标示处于聚集类(客户)端的类在箭头末端处包含类的许多实例(聚集对象)。在关系线的任何一端出现的数字标示基数。基数规定一个类的多少个实例可以与另一个类的单个实例相关联。
三角箭头阐述UML中的继承关系。箭头指向基类。可以从连至派生类的箭头的底部伸出一条或多条线。当类名称用斜字体显示时,这标示该类是一个抽象类。如果操作用斜字体显示,则这标示它们是虚操作。
关联关系用于阐述不具有全部/部分蕴含的约束形式。在两个参与的类之间所画的线表示一个关联。如果该关联具有一个箭头,则这标示箭头末端的类一点都不知道关于所附类的情况。有时候两个类之间的关系很弱。虚线箭头表示客户类与供应商类之间的依赖关系,以便显示该客户类依赖于供应商类来提供某些服务。
现在参照图2,商业对象12是包含于要求访问存于数据库中的信息的应用程序中的一个对象。商业对象12通常完成某些与商业相关的用途,例如管理财务记帐、检查词的拼写或完成某些其他形式的应用程序分析。应用程序可以检索存于本地数据库中的数据、操纵它们和将它们存回本地数据库和远程数据库两者之中。为阐述目的,考虑本地数据库为专有数据库,及考虑远程数据库为关系数据库或面向对象数据库。可能有多个远程数据库,这些远程数据库可以位于运行不同操作系统的平台上。
商业对象12可以具有多个定义的方法,在这些方法中有例如read()、write()和createDataObject()。商业对象12能够通过其createDataObject()方法请求由数据对象工厂22建立数据对象20。商业对象12能够处理数据对象20的多个实例。它是商业对象12与数据对象20之间的“一个对多个”(1∶*)关系。数据对象20表示可供应用程序应用的信息的逻辑组合。例如,地址簿应用程序的个人的数据对象包含关于该地址簿追踪的该人的所有有关信息。数据对象20由数据对象工厂22根据商业对象12的需要来建立。
数据对象工厂22是一个单独对象。单独对象只是为一个给定应用程序只实例化一次的一个类。数据对象工厂22的作业是为了等待要求生成对象的请求并且将这些对象送回至请求者。使用数据对象工厂22的createDataObject()方法来建立数据对象20。通常将工厂具体化及只建立一种类型的对象。如果它建立多种类型的对象,则通常这些对象类型是密切相关的。例如,单个财务总帐工厂对象可以建立各对象来存储财务总帐对象和终端财务总帐对象。
存储对象24提供对存储子系统的接口。存储子系统负责将数据分配至转换器,这些转换器将数据转换为适合于存于给定类型数据库中的合适格式。存储对象24也负责维护用户数据访问对象的表并且当商业对象12要求时负责发布数据更新请求至这些对象中的每一个。当商业对象12需要访问数据库时,它与存储对象24进行交互操作。存储对象24具有以下定义的示例性方法attach()、detach()、notify()、write()和read()。存储对象24也是一个单独对象。
数据访问对象(DAO)需要通过将它们本身“附加于”存储对象24来将它们本身向存储对象24“登记”。DAO是数据观察程序。该观察程序模式定义为对象之间的一个对多个依赖关系,以便当一个对象改变状态时自动地通知和更新它的所有依赖者。当用于本发明时,这意味着当存储对象24自商业对象12收到从数据库读取或向数据库写入的请求时,存储对象24通知不同DAO。它通过发布数据库更新请求至其用户DAO来作到这点,这意味着已经收到请求并且将数据对象20传送至DAO以使它们能够相应地作出响应。注意到,当存储对象24收到写请求时,图2中的框32是由存储对象24所作通知的简单描述。
本地数据访问对象(DAO)34和远程DAO36是此描述中的“观察程序”。本地DAO34通常位于与存储对象24相同的平台上。远程DAO36能够位于地理上与存储对象24分开的平台上。此远程平台能够在与本地平台上的操作系统不同的操作系统上运行。远程DAO36能够作为单独的服务器过程存在并且具有用于处理跨越网络11所作出请求的附加逻辑电路。DAO34、36负责在数据对象形式与用于将数据对象的包装信息存入数据库的格式之间转换数据。DAO36具有称为桩模块的发布的远程接口,可供存储对象24使用并且允许数据对象20串联化及传送至远程DAO36。当远程DAO36实例化时,其配置的一部分包括用于运行包含着商业对象12的主要应用程序的机器的地址。当它准备接收更新请求时,它向其存储对象24登记并且建立它通过其与数据库的接口来与其目标数据库通信所需的所有附加对象。在此说明中本地DAO34和远程DAO36两者都用以下方法定义readAttributes()、storeAttributes()和format()。
如果数据准备存储在专有数据库文件内则在将它们传送至键控文件对象38或其他专有数据库接口之前,如果数据准备存储在关系数据库或面向对象数据库内则在将它们传送至数据库引擎对象40之前,DAO 34、36通过将信息转换为合适格式而使数据对象20“变平”(flatten)。专有数据库接口对象38是拥有和管理特定专有数据库文件的低层输入/输出(I/O)的对象。专有数据库接口对象38通常具有定义为处理由DAO34提交的数据文件过程命令的read()和write()方法。数据库引擎对象40是表示用于处理由DAO36提交的SQL(结构化查询语言)命令的实际数据库引擎应用程序的对象。SQL是用于访问来自数据库的信息和更新数据库的标准交互式编程语言。查询操作采取命令语言的形式,允许选择、插入、更新和寻找数据。数据库引擎对象40具有用于处理关系数据库的方法select()、insert()和update()。
图3是对数据库的写入方案的示例性UML交互操作图。为阐述目的而将对象名称普遍化。对于所阐述的方案,假设已经发生以下事件1.所有商业对象12、存储对象24和数据访问对象(DAO)34、36都已经成功地实例化;2.本地DAO34或远程DAO36已经向正在管理数据库目标部分的存储对象24登记过;3.正在请求写入数据对象数据库的商业对象12已经建立了一个合适的数据对象20,已经使用它从数据库中读取数据和操纵它包装的数据以使它们准备存储。
响应于写入数据请求而完成的以下步骤序列对应于图3中左侧所示步骤号码。
步骤1商业对象12通过调用StorageObjectwrite(DO)和传送数据对象(DO)20来请求将数据对象的属性写入数据库。
步骤2StorageObjectwrite(DO)调用StorageObjectnotify(DO)以便再次传送DO 20。Notify方法的作业是将更新的DO20发布至所有用户数据访问对象34、36。
步骤3由于在现有情况下数据库的本地版本是主要版本,首先更新其数据库。Notify(DO)通过调用o→storeAttributes(DO)来作到这点,其中“o”是指向本地DAO对象34的指针。
步骤4在此例中,本地DAO34与用于操纵特定专有数据库文件的键控文件对象38接口。LocalDAOstoreAttributes(DO)调用LocalDAOformat(DO)来将DO的属性变平为包含一个键并且存于缓存内的记录。该缓存被返回至LocalDAOstoreAttributes(DO)。
步骤5LocalDAOstoreAttributes(DO)然后调用LocalKeyedFileObiectwrite(buffer)并且传送格式化的缓存。写入方法自记录的前“n”个字节内读取键并且外插一个物理记录以便在键控文件中进行替代。写入缓存然后将记录写至该位置。如果该记录由另一个过程锁定或者出现某些其他误差,则建立一个误差对象并且将它返回至本地DAO34。一旦完成操作,控制即回至StorageObjectnotify(DO)。
步骤6StorageObjectnotify(DO)现在通过其发布的远程桩模块接口来调用远程DAO36 storeAttributes方法并且再次传送DO20。该桩模块将传送的数据对象串联化并且将串联化的数据流分配至远程DAO,其中将数据流去串联化为实例化的数据对象(DO)。
步骤7RemoteDAOstoreAttributes(DO)调用其格式化方法来将DO的属性变平为一个或多个SQL更新命令,该更新命令被返回至缓存阵列中的storeAttributes。
步骤8然后storeAttributes(DO)通过缓存的阵列进行迭代以及调用每条SQL更新命令以使数据库引擎40能够处理该请求和更新数据库。
专业人员知道可以容易地将更多DAO加至此过程中。当多于一个DAO时,将给定的数据对象类型的一个DAO 20指定为主要DAO。任何未指定为主要DAO的DAO被定义为辅助DAO。只将商业对象12发送的及由存储对象24接收的read()请求单独地通知主要DAO,因为自多个数据库中读取相同数据没有逻辑意义。而将write()请求通知包括主要和辅助在内的所有DAO。
在优选实施例中,使用线程来更新辅助DAO,因为它们更新操作的完成对于系统整体性并不重要,而且串联地更新辅助DAO还可能非常费时,对于远程DAO尤其如此,因此对系统性能有很大的负面效应。这与主要DAO的更新操作相反,必须串联地更新主要DAO以便保证事件驱动的系统中的数据库整体性,其中接收给定事件的对象顺序不必是确定性的。
对于辅助DAO而言,可以大量产生线程以便启动和监视对辅助DAO调用的结果。这允许在考虑到辅助DAO的处理时间和远程位置的同时继续进行主应用程序中的处理操作。大量产生的线程所遇到的误差可能使事件发生和应用程序事件得到记录。
虽然对本发明并不重要,但存储对象24最好由工厂建立并且具有用于定义它们的公共性能的虚基类。数据访问对象34、36也最好由工厂建立并且从两个虚基类进行多继承。第一基类定义对于本地DAO34或远程DAO36是公共的性能。第二基类定义对于与DAO34、36接口的数据库类型是公共的性能。
数据访问对象主要具有两个定义特性——它负责操纵的数据库以及它编程以便接收和处理的数据对象的各类型。对于给定的应用程序而言,可能有多个DAO,它们之中的每一个负责更新一个数据库“X”,而其中的每一个具有自不同数据对象“Y”中派生的不同类型的数据。此外,可能有多个DAO负责处理数据对象“Y”,其中的每一个负责更新不同数据库“X”。因此,将对象模型设计为在数据库“X”或数据库类型的基类中声明和定义数据库“X”的公共性能是合适的。定义一个描述用于处理一定类型数据对象的公共性能的基类也是合适的。这建立用于定义性能的两维矩阵并且描述存储子系统的多继承设计。一个准备处理一定数据对象及更新一定数据库的给定DAO将会自数据对象类中和自适用于其任务的数据库基类中继承,然后确定新子类中的所需附加性能。
图4阐述存储子系统的物理数据库、派生的数据访问对象和抽象基类的示例性关系图。本说明中显示于括弧中的数字系指图4中阐述的数字。这极大地简化的图只显示两种类型的数据对象21、23和两种类型的数据库37、39(通过它们相应的数据库接口与物理关系数据库43和物理专有数据库41相关联)。所阐述的还有数据访问对象——DAO1(29)、DAO2(31)、DAO3(33)和DAO4(35)。DAO之间的带有三角箭头的实线和数据库类型和数据对象类型标示继承。因此在所阐述的情况下,DAO1(29)自RelationalDatabase(37)和DataObiectTypel(21)实行继承。DAO2(31)自ProprietaryDatabase39和自DataObjectTypel(21)实行继承。DataAccessObject 3(33)自RelationalDatabase 37和自DataObjectType2(23)实行继承。最后,DAO4(35)自ProprietaryDatabase 39和自DataObjectType2(23)实行继承。如图4中进一步阐述的,DAO1(29)和DAO3(33)通过数据库接口(未示出)与物理关系数据库43相关联。相似地,DAO2(31)和DAO4(35)通过专有数据库接口(未示出)与物理专有数据库41相关联。
以下的讨论属于使用C++或Java方法学的对远程数据访问对象的使能操作。当今C++语言在本机上不像远程方法调用(RMI)/Jini向Java语言提供的那样地提供简单远程方法调用环境。Jini技术基本结构是围绕寻找服务的客户的模型制作的。服务的概念包括对信息的访问,计算,用于完成具体任务的软件,以及一般而言任何用于帮助用户完成某些目标的部件。Jini体系结构要求一个服务能够使用由不同服务实例以不同方式来实施的Java编程语言的数据类型来定义。Jini系统是以Java技术为中心的。Jini体系结构由于假设Java编程语言是各部件的实施语言而获得很大的简单性。能够动态地下载和运行代码的能力是Jini体系结构的一系列特征的中心,然而Jini体系结构的以Java技术为中心的特性取决于Java应用环境而不是Java编程语言。如果任何一个编程语言具有一个能够产生与Java编程语言兼容的字节代码,则它可以由Jini系统支持。
Jini系统包含能够为完成具体任务而一起聚集的服务。各服务可以使用其他服务,以及一个服务的客户自己可以是具有它自己的客户的服务。Jini系统中的服务是使用服务协议彼此进行通信的,该服务协议是一组用Java编程语言编写的接口程序。该组这类协议是可扩展的。能够使用Java远程方法调用(RMI)以便完成服务之间的通信。用于支持服务之间的通信的基本结构本身并不是一个被发现和使用的服务;相反它是Jini技术基本结构的一部分。RMI提供用于将对象组寻找、激活和收集归类的机制。RMI基本上是一个对传统远程过程调用机制的Java编程语言使能操作的扩展。RMI不但允许将数据而且允许将包括代码在内的全对象围绕网络从一个对象传送至另一个对象。Jini系统的以包装为对象的形式将代码围绕网络传送的能力使该系统大为简化。
考虑到以上讨论,有两个用于运行远程DAO的可能的实施策略1.小的DAO接口对象能够位于用作远程DAO代理的本地子系统处。本地代理DAO能够设置与远程DAO连接的TCP/IP插口(socket)连接并且将数据对象的属性串联化及在该连接上传送它们。
2.远程DAO可以实施为Java小应用程序,以及小JNI(Java本机接口)型接口层可以在主应用程序之下编写以便将C++数据对象转换为Java小程序或其他基于Java的对象类型。自存储对象传送至远程DAO中本地桩模块的数据对象被串联化并且连同远程方法调用一起在网上发送至远程DAO。
如果包含商业对象的应用程序是用C++编写的,则第一策略的优点是本地应用程序和远程DAO仍然都完全是C++对象。其缺点是很可能数量相当大的远程DAO中的每一个都需要一个新的本地代理DAO对象,并且必须增加代码以便管理和协调它们之间的插口连接。
就第二实施策略而言,此方案的缺点是该方案可能需要用两种语言编写应用程序。然而,为将Java整合入C++应用程序,具体地建立了Java本机接口(JNI)。使用Java的实际优点是Jini/RMI实施,它是Java开发包(JDK)的一部分并且提供用于将数据对象串联化和在主应用程序和小应用程序之间进行通信所需网络管理代码。附加地,Java提供本机能力以便在多个平台上运行而不需为每个平台编译可执行程序。总之,这些因素能够简化本发明设计的完全实施。由于RMI的可用性和Java语言的多平台能力,最简明和最有效的实施策略是Java实施。
已经将用于将应用程序数据分配至本发明的不相似格式的分布式数据库的系统描述为位于计算机系统上的应用程序,该计算机系统具有一个或多个相关联的本地数据库和一个或多个远程数据库,后者可以通过公共非信任(non-trusted)网络例如因特网进行访问。然而重要的是注意到专业人员知道本发明的机制能够以不同形式作为程序产品进行分配以及应用本发明时不必考虑用于执行分配操作的信号携带媒体的具体类型。信号携带媒体的例子包括但不限于可记录型媒体例如软盘或CD-ROM和传输型媒体例如模拟或数字通信线路。
附加地,以下任何一项权利要求中相应的结构、材料、操作和任何装置加上功能单元的等效内容应该包括如具体地权利要求的用于完成与其他权利要求的单元一起完成功能的任何结构、材料或操作。
虽然参照本发明的优选实施例和使用面向对象设计方案具体地显示和描述了本发明,但专业人员知道可以在不背离本发明的实质和范围的情况下在形式和细节上作出不同变动。
权利要求
1.一种用于分配应用程序数据至多个不相似格式数据库的方法,该应用程序包括一个商业对象、一个存储对象和多个数据访问对象,其中每个对象与单个数据库相关联,该方法包括以下操作由商业对象建立一个数据对象;由存储对象自商业对象接收一个数据库访问请求;由存储对象将数据库访问请求通知每个数据访问对象;由存储对象发送数据对象至每个数据访问对象;将数据对象中包装的数据转换为适合于每个数据库的格式,其中准备由数据访问对象通过数据库接口来存储数据;及将数据存入每个与数据访问对象相关联的数据库中。
2.权利要求1的用于分配应用程序数据的方法还包括通过将每个数据访问对象附加于存储对象上而将每个数据访问对象向存储对象登记。
3.权利要求1的用于分配应用程序数据的方法还包括由存储对象维护用户数据访问对象的表格。
4.权利要求1的用于分配应用程序数据的方法,其中通知操作包括当由商业对象要求时,由存储对象发布数据库访问请求至数据访问对象。
5.权利要求1的用于分配应用程序数据的方法还包括以下操作由数据访问对象发布存储对象可用的接口;由数据访问对象桩模块将数据对象串联化及允许将数据对象传送至多个远程数据库访问对象中的至少一个以供处理。
6.权利要求1的用于分配应用程序数据的方法,其中多个数据库包括一个专有数据库和一个关系数据库。
7.权利要求1的用于分配应用程序数据的方法,其中多个数据库包括一个专有数据库和一个面向对象数据库。
8.权利要求6的用于分配应用程序数据的方法,其中专有数据库由数据库接口对象处理。
9.权利要求6的用于分配应用程序数据的方法,其中关系数据库由数据库引擎对象处理。
10.权利要求7的用于分配应用程序数据的方法,其中面向对象数据库由数据库引擎对象处理。
11.权利要求8的用于分配应用程序数据的方法,其中键控文件对象包括用于处理专有数据库的读写过程。
12.权利要求9的用于分配应用程序数据的方法,其中数据库引擎对象包括用于处理关系数据库的选择、插入和更新过程。
13.权利要求10的用于分配应用程序数据的方法,其中数据库引擎对象包括用于处理面向对象数据库的检索对象、存储对象和更新对象过程。
14.权利要求9的用于分配应用程序数据的方法,其中数据库引擎对象处理由至少一个数据访问对象提供的结构化查询语言(SQL)命令。
15.权利要求1的用于分配应用程序数据的方法,其中一个数据库就地存于计算机处理系统中。
16.权利要求1的用于分配应用程序数据的方法,其中每个数据库就地存于计算机处理系统中。
17.权利要求15的用于分配应用程序数据的方法,其中第二数据库从计算机处理系统远程地进行存储并且能够通过通信网络进行访问。
18.权利要求17的用于分配应用程序数据的方法,其中本地数据访问对象存于与存储对象相同的平台上。
19.权利要求17的用于分配应用程序数据的方法,其中远程数据访问对象存于物理上与存储对象隔开的平台上,但由数据访问对象桩模块就地表示。
20.权利要求1的用于分配应用程序数据的方法,其中存储对象包括附加、脱开、通知、写入和读取过程。
21.权利要求1的用于分配应用程序数据的方法,其中商业对象包括读取、写入和建立数据对象过程。
22.权利要求1的用于分配应用程序数据的方法,其中数据访问对象包括读取属性、存储属性和格式化过程。
23.权利要求1的用于分配应用程序数据的方法,其中将多个数据访问对象中的一个指定为一种数据对象类型的主要数据访问对象。
24.权利要求23的用于分配应用程序数据的方法,其中主要数据访问对象用于对数据对象的数据库读取请求而不是从多个数据库中读取相同数据。
25.权利要求24的用于分配应用程序数据的方法,其中该数据对象类型的所有数据访问对象用于对数据对象的数据库写入请求。
26.权利要求23的用于分配应用程序数据的方法,其中未指定为主要数据访问对象的数据访问对象称为辅助数据访问对象。
27.权利要求26的用于分配应用程序数据的方法还包括大量产生线程以便更新辅助数据访问对象。
28.一种包含程序产品的计算机可读媒体,该程序产品用于分配程序数据至多个不相似格式数据库并且包括一个商业对象、一个存储对象和多个数据访问对象,其中每个对象与单个数据库相关联,该程序产品包括当商业对象请求时用于建立一个数据对象的程序指令;用于自商业对象接收一个数据库访问请求的程序指令;用于将数据库访问请求通知每个数据访问对象的程序指令;用于发送数据对象至每个数据访问对象的程序指令;用于将数据对象中包装的数据转换为适合于每个数据库的格式的程序指令,其中准备由数据访问对象通过数据库接口来存储数据;及用于将数据存入每个与数据访问对象相关联的数据库中的程序指令。
29.权利要求28的用于提供对程序数据的分配的程序产品还包括通过允许每个数据访问对象附加于存储对象上而用于将每个数据访问对象向存储对象登记的程序指令。
30.权利要求28的用于提供对程序数据的分配的程序产品还包括用于由存储对象维护用户数据访问对象的表格的程序指令。
31.权利要求28的用于提供对程序数据的分配的程序产品,其中用于通知的程序指令包括当由商业对象要求时,用于发布数据库访问请求至数据访问对象的程序指令。
32.权利要求28的用于提供对程序数据的分配的程序产品还包括用于由数据访问对象发布存储对象可用的接口的程序指令;用于由数据访问对象桩模块将数据对象串联化及允许将数据对象传送至多个远程数据库访问对象中的至少一个以供处理的程序指令。
33.权利要求28的用于提供对程序数据的分配的程序产品,其中多个数据库包括一个专有数据库和一个关系数据库。
34.权利要求28的用于提供对程序数据的分配的程序产品,其中多个数据库包括一个专有数据库和一个面向对象数据库。
35.权利要求33的用于提供对程序数据的分配的程序产品,其中专有数据库由数据库接口对象处理。
36.权利要求33的用于提供对程序数据的分配的程序产品,其中关系数据库由数据库引擎对象处理。
37.权利要求34的用于提供对程序数据的分配的程序产品,其中面向对象数据库由数据库引擎对象处理。
38.权利要求35的用于提供对程序数据的分配的程序产品,其中键控文件对象包括用于为专有数据库读取和写入数据的程序指令。
39.权利要求36的用于提供对程序数据的分配的程序产品,其中数据库引擎对象包括用于为关系数据库选择、插入和更新数据的程序指令。
40.权利要求37的用于提供对程序数据的分配的程序产品,其中数据库引擎对象包括用于为面向对象数据库检索对象、存储对象和更新对象的程序指令。
41.权利要求36的用于提供对程序数据的分配的程序产品,其中数据库引擎对象包括用于处理由至少一个数据访问对象提供的结构化查询语言(SQL)命令的程序指令。
42.权利要求28的用于提供对程序数据的分配的程序产品,其中一个数据库就地存于计算机处理系统中。
43.权利要求28的用于提供对程序数据的分配的程序产品,其中每个数据库就地存于计算机处理系统中。
44.权利要求42的用于提供对程序数据的分配的程序产品,其中第二数据库从计算机处理系统远程地进行存储并且能够通过通信网络进行访问。
45.权利要求44的用于提供对程序数据的分配的程序产品,其中本地数据访问对象存于与存储对象相同的平台上。
46.权利要求44的用于提供对程序数据的分配的程序产品,其中远程数据访问对象存于物理上与存储对象隔开的平台上,但由数据访问对象桩模块就地表示。
47.权利要求28的用于提供对程序数据的分配的程序产品,其中存储对象包括为多个数据库附加、脱开、通知、写入和读取数据的程序指令。
48.权利要求28的用于提供对程序数据的分配的程序产品,其中商业对象包括读取、写入和建立数据对象的程序指令。
49.权利要求28的用于提供对程序数据的分配的程序产品,其中数据访问对象包括为它们的相关联数据库读取属性、存储属性和将数据格式化的程序指令。
50.权利要求28的用于提供对程序数据的分配的程序产品包括将多个数据访问对象中的一个指定为一个数据对象类型的主要数据访问对象的程序指令。
51.权利要求50的用于提供对程序数据的分配的程序产品,其中主要数据访问对象用于对数据对象的数据库读取请求而不是从多个数据库中读取相同数据。
52.权利要求51的用于提供对程序数据的分配的程序产品,其中该数据对象类型的所有数据访问对象用于对数据对象的数据库写入请求。
53.权利要求50的用于提供对程序数据的分配的程序产品,其中未指定为主要数据访问对象的数据访问对象称为辅助数据访问对象。
54.权利要求53的用于提供对程序数据的分配的程序产品还包括用于大量产生线程以便更新辅助数据访问对象的程序指令。
55.一种用于分配程序数据至多个不相似格式数据库的系统,包括一个用于执行多条程序指令的处理器;多个用于存储多个数据库的存储设备,它们之中至少两个具有不相似格式;及一个用于访问不相似格式数据库的应用程序,包括一个商业对象、一个存储对象和多个数据访问对象,每个对象与单个数据库相关联。
56.权利要求55的用于分配程序数据的系统,其中该应用程序包括当商业对象请求时用于建立一个数据对象的模块;用于自商业对象接收一个数据库访问请求的模块;用于将数据库访问请求通知每个数据访问对象的模块;用于发送数据对象至每个数据访问对象的模块;用于将数据对象中包装的数据转换为适合于每个数据库的格式的模块,其中准备由数据访问对象通过数据库接口来存储数据;及用于将数据存入每个与数据访问对象相关联的数据库中的模块。
57.权利要求55的用于分配程序数据的系统,其中该应用程序还包括通过允许每个数据访问对象附加于存储对象上而用于将每个数据访问对象向存储对象登记的模块。
58.权利要求55的用于分配程序数据的系统,其中该应用程序还包括用于由存储对象维护用户数据访问对象的表格的模块。
59.权利要求55的用于分配程序数据的系统,其中用于通知的模块包括当由商业对象提出要求时,用于发布数据库访问请求至数据访问对象的子模块。
60.权利要求55的用于分配程序数据的系统,其中应用程序还包括用于由数据访问对象发布存储对象可用的接口的模块;用于由数据访问对象桩模块将数据对象串联化及允许将数据对象传送至多个远程数据库访问对象中的至少一个以供处理的模块。
61.权利要求55的用于分配程序数据的系统,其中多个数据库包括一个专有数据库和一个关系数据库。
62.权利要求55的用于分配程序数据的系统,其中多个数据库包括一个专有数据库和一个面向对象数据库。
63.权利要求61的用于分配程序数据的系统,其中专有数据库由数据库接口对象处理。
64.权利要求61的用于分配程序数据的系统,其中关系数据库由数据库引擎对象处理。
65.权利要求62的用于分配程序数据的系统,其中面向对象数据库由数据库引擎对象处理。
66.权利要求63的用于分配程序数据的系统,其中键控文件对象包括用于为专有数据库读取和写入数据的模块。
67.权利要求64的用于分配程序数据的系统,其中数据库引擎对象包括用于为关系数据库选择、插入和更新数据的模块。
68.权利要求65的用于分配程序数据的系统,其中数据库引擎对象包括用于为面向对象数据库检索对象、存储对象和更新对象的模块。
69.权利要求64的用于分配程序数据的系统,其中数据库引擎对象包括用于处理由至少一个数据访问对象提供的结构化查询语言(SQL)命令的模块。
70.权利要求55的用于分配程序数据的系统,其中每个数据库就地存于直接连至处理器的存储设备中。
71.权利要求55的用于分配程序数据的系统,其中一个数据库存于远距处理器的存储设备中并且能够通过通信网络进行访问。
72.权利要求71的用于分配程序数据的系统,其中本地数据访问对象存于与存储对象相同的平台上。
73.权利要求71的用于分配程序数据的系统,其中远程数据访问对象存于物理上与存储对象隔开的平台上,但由数据访问对象桩模块就地表示。
74.权利要求55的用于分配程序数据的系统,其中存储对象包括为多个数据库附加、脱开、通知、写入和读取数据的模块。
75.权利要求55的用于分配程序数据的系统,其中商业对象包括读取、写入和建立数据对象的模块。
76.权利要求55的用于分配程序数据的系统,其中数据访问对象包括为它们的相关联数据库读取属性、存储属性和将数据格式化的模块。
77.权利要求55的用于分配程序数据的系统,其中应用程序还包括将多个数据访问对象中的一个指定为一个数据对象类型的主要数据访问对象的模块。
78.权利要求77的用于分配程序数据的系统,其中主要数据访问对象用于对数据对象的数据库读取请求而不是从多个数据库中读取相同数据。
79.权利要求78的用于分配程序数据的系统,其中该数据对象类型的所有数据访问对象用于对数据对象的数据库写入请求。
80.权利要求77的用于分配程序数据的系统,其中未指定为主要数据访问对象的数据访问对象称为辅助数据访问对象。
81.权利要求80的用于分配程序数据的系统,其中该应用程序还包括用于大量产生线程以便更新辅助数据访问对象的模块。
全文摘要
一种分配应用程序数据至多个不相似格式数据库的方法,应用程序包括一个商业对象、一个存储对象和一个与数据库相关联的数据访问对象。由商业对象建立数据对象和发送数据库访问请求至存储对象。每个数据访问对象向存储对象登记,以及当收到数据访问请求时存储对象通知每个数据访问对象。存储对象然后发送数据对象至数据访问对象。包装于数据对象内的数据被转换为准备存储数据的每个数据库所用的格式。向每个数据库中写入一种格式。
文档编号G06F17/30GK1329308SQ0112165
公开日2002年1月2日 申请日期2001年6月20日 优先权日2000年6月21日
发明者约翰·K·杰尔肯三世 申请人:国际商业机器公司