CN1207669C - 将应用程序数据分配至不相似格式分布式数据库的方法 - Google Patents
将应用程序数据分配至不相似格式分布式数据库的方法 Download PDFInfo
- Publication number
- CN1207669C CN1207669C CNB011216549A CN01121654A CN1207669C CN 1207669 C CN1207669 C CN 1207669C CN B011216549 A CNB011216549 A CN B011216549A CN 01121654 A CN01121654 A CN 01121654A CN 1207669 C CN1207669 C CN 1207669C
- Authority
- CN
- China
- Prior art keywords
- data
- database
- dao
- databases
- storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99934—Query formulation, input preparation, or translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种分配应用程序数据至多个不相似格式数据库的方法,应用程序包括一个商业对象、一个存储对象和一个与数据库相关联的数据访问对象。由商业对象建立数据对象和发送数据库访问请求至存储对象。每个数据访问对象向存储对象登记,以及当收到数据访问请求时存储对象通知每个数据访问对象。存储对象然后发送数据对象至数据访问对象。包装于数据对象内的数据被转换为准备存储数据的每个数据库所用的格式。向每个数据库中写入一种格式。
Description
技术领域
本发明一般涉及分布式数据处理系统,更具体地涉及一种用于在不相似格式的分布式数据库之间分配应用程序数据的系统和方法。
背景技术
许多传统企业应用程序使用它们自己专有的数据库格式存储数据。随着商业用户需要的增长,应用程序的开发也随着发展,而这种发展的一条途径是离开专有数据库体系结构而过渡至标准的关系数据库或面向对象数据库的模型。
在关系数据库中,数据存于多维表格中。每个表格具有多行和多列,它们中布满用于描述数据元之间的关系的信息。使用关系数据库而不是专有数据库的明显优点是使数据向企业计算开发商之间广泛应用的关系数据库查询的广大阵列和数据操纵工具开放。它还允许商业用户和应用程序本身利用已经证实的商业企业数据库引擎的可靠性。关系数据库不是束缚于特定记录和文件格式的;当由应用程序开发商作出改变和附加时,顾客的与数据库接口的编写工具将会受到少得多的冲击。
许多现有应用软件仍然使用它们自己专有格式的数据,因此使大多数新软件工具无法访问这些数据。此外,许多用户并不关心他们传统软件的置换,因为他们已经对现有应用软件和有关工具给予很大投资。用户还对从已经运用得很好的传统数据库突然转换到可能出现未预见到的问题的崭新系统表示关心。因此,软件开发商不得不继续支持这些已经不再有效或灵活的传统数据库系统。
发明内容
考虑到以上所述,因此本发明的一个目的是提供一种系统和方法,用于使一个给定的应用软件同时支持多个数据库模型。
本发明的另一个目的是提供一种系统和方法,用于准备将一个传统数据库系统移植入新的具有不相似格式的应用软件数据库系统中。
为此,本发明提供了一种用于分配应用程序数据至多个不相似格式数据库的方法,所述方法包括:定义一个商业对象,以表示需要向所述多个数据库之一写入数据的软件应用程序;定义多个数据访问对象,每个数据访问对象都能以其各自的格式将数据写入所述多个数据库之一;定义一个存储对象,以表示所述商业对象和所述多个数据访问对象之间的接口;响应从所述商业对象发出的向所述多个数据库之一的写请求,为要向所述多个数据库之一写入的数据生成一个数据对象;由所述存储对象向所述多个数据访问对象中的每一个发送所述数据对象;由所述多个数据访问对象将所述数据对象中封装的数据转换成适合所述多个数据库中的每一个的各自的格式;以及由所述相应的数据访问对象根据封装数据各自的格式将所述封装数据存储在所述多个数据库中的每一个中。
此外本发明还提供了一种用于分配应用程序数据至多个不相似格式数据库的系统,所述系统包括:用于定义一个商业对象,以表示需要向所述多个数据库写入数据的软件应用程序的模块;用于定义多个数据访问对象的模块,每个数据访问对象都以其各自的格式将数据写入所述多个数据库之一;用于定义一个存储对象,以表示所述商业对象和所述多个数据访问对象之间的接口的模块;响应从所述商业对象发出的向所述多个数据库之一的写请求,为要向所述多个数据库之一写入的数据生成一个数据对象的模块;用于由所述存储对象向所述多个数据访问对象中的每一个发送所述数据对象的模块;用于由所述多个数据访问对象将所述数据对象中封装的数据转换成适合所述多个数据库中的每一个的各自的格式的模块;以及用于根据封装数据各自的格式将所述封装数据存储在所述多个数据库中的每一个中的模块。
以上目的由一个存储子系统所定义的分布式体系结构所完成,它从一个商业对象接收将准备存储的数据包装在内的数据对象。该存储子系统负责将数据对象分配至各转换器,后者将数据转换为存于给定类型数据库中的数据对象属性所需要的格式。
商业对象表示一种需要观看或操纵存于应用软件数据库中数据的应用软件。商业对象通过工厂对象建立数据对象。工厂对象是用于产生不同类型数据对象的抽象工厂。数据对象表示可供应用程序应用的信息的某些逻辑组合。例如,一个用于表示地址簿应用程序的个人的数据对象可能包含关于该地址簿追踪的该人的所有有关信息。存储对象表示对应用软件或商业对象的接口。数据访问对象或转换器有责任将数据对象的数据转换为可用于将数据对象的包装信息存入数据库的不同格式。数据库接口对象从数据访问对象接收数据并且将这些数据存入物理数据库。
商业对象具有定义为与应用软件接口的各方法。当应用软件准备将数据写入数据库时,商业对象请求从工厂对象中建立数据对象。建立数据对象后商业对象即将来自应用软件的信息填入数据对象中。在信息填入数据对象后,商业对象请求存储对象将此数据对象中的信息存入多个外部数据库中并且将此数据对象传送至存储对象。该存储对象将关于数据之事通知本地和远程数据访问对象,这些数据访问对象即通过数据库接口将数据对象存入它们的相应数据库中。这些数据以不同格式存入不同数据库中。
此系统在两个数据库模型之间提供一条平滑移植的途径,并且支持更多数量的数据库模型。不同格式的数据库可以平行地存在和得到更新,从而给予用户灵活性以便按照他们看来合适的方式来访问数据。用户然后能够从专有的格式移植至它们所需和规划允许的工业标准格式。该系统还能帮助开发队伍摆脱传统数据库格式的限制并且允许数据库在增加新特征和功能时得到进展。传统数据库系统能够在各特征附加至新关系数据库时保留其当今结构。这允许用户使用关系数据库的新特征而不必协调它们的现有工具。
附图说明
结合附图阅读优选实施例中的以下详细描述,将能更好地理解本发明,附图中:
图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和远程DAO 36是此描述中的“观察程序”。本地DAO 34通常位于与存储对象24相同的平台上。远程DAO 36能够位于地理上与存储对象24分开的平台上。此远程平台能够在与本地平台上的操作系统不同的操作系统上运行。远程DAO 36能够作为单独的服务器过程存在并且具有用于处理跨越网络11所作出请求的附加逻辑电路。DAO 34、36负责在数据对象形式与用于将数据对象的包装信息存入数据库的格式之间转换数据。DAO 36具有称为桩模块的发布的远程接口,可供存储对象24使用并且允许数据对象20串联化及传送至远程DAO 36。当远程DAO 36实例化时,其配置的一部分包括用于运行包含着商业对象12的主要应用程序的机器的地址。当它准备接收更新请求时,它向其存储对象24登记并且建立它通过其与数据库的接口来与其目标数据库通信所需的所有附加对象。在此说明中本地DAO 34和远程DAO 36两者都用以下方法定义:readAttributes()、storeAttributes()和format()。
如果数据准备存储在专有数据库文件内则在将它们传送至键控文件对象38或其他专有数据库接口之前,如果数据准备存储在关系数据库或面向对象数据库内则在将它们传送至数据库引擎对象40之前,DAO 34、36通过将信息转换为合适格式而使数据对象20“变平”(flatten)。专有数据库接口对象39是拥有和管理特定专有数据库文件的低层输入/输出(I/O)的对象。专有数据库接口对象39通常具有定义为处理由DAO 34提交的数据文件过程命令的read()和write()方法。数据库引擎对象40是表示用于处理由DAO 36提交的SQL(结构化查询语言)命令的实际数据库引擎应用程序的对象。SQL是用于访问来自数据库的信息和更新数据库的标准交互式编程语言。查询操作采取命令语言的形式,允许选择、插入、更新和寻找数据。数据库引擎对象40具有用于处理关系数据库的方法select()、insert()和update()。
图3是对数据库的写入方案的示例性UML交互操作图。为阐述目的而将对象名称普遍化。对于所阐述的方案,假设已经发生以下事件:
1.所有商业对象12、存储对象24和数据访问对象(DAO)34、36都已经成功地实例化;
2.本地DAO 34或远程DAO 36已经向正在管理数据库目标部分的存储对象24登记过;
3.正在请求写入数据对象数据库的商业对象12已经建立了一个合适的数据对象20,已经使用它从数据库中读取数据和操纵它包装的数据以使它们准备存储。
响应于写入数据请求而完成的以下步骤序列对应于图3中左侧所示步骤号码。
步骤1:商业对象12通过调用StorageObject::write(DO)和传送数据对象(DO)20来请求将数据对象的属性写入数据库。
步骤2:StorageObject::write(DO)调用StorageObject::notify(DO)以便再次传送DO 20。Notify方法的作业是将更新的DO 20发布至所有用户数据访问对象34、36。
步骤3:由于在现有情况下数据库的本地版本是主要版本,首先更新其数据库。Notify(DO)通过调用o->storeAttributes(DO)来作到这点,其中“o”是指向本地DAO对象34的指针。
步骤4:在此例中,本地DAO 34与用于操纵特定专有数据库文件的键控文件对象38接口。LocalDAO::storeAttributes(DO)调用LocalDAO::format(DO)来将DO的属性变平为包含一个键并且存于缓存内的记录。该缓存被返回至LocalDAO::storeAttributes(DO)。
步骤5:LocalDAO::storeAttributes(DO)然后调用LocalKeyedFileObject::write(buffer)并且传送格式化的缓存。写入方法自记录的前“n”个字节内读取键并且外插一个物理记录以便在键控文件中进行替代。写入缓存然后将记录写至该位置。如果该记录由另一个过程锁定或者出现某些其他误差,则建立一个误差对象并且将它返回至本地DAO 34。一旦完成操作,控制即回至StorageObject::notify(DO)。
步骤6:StorageObject::notify(DO)现在通过其发布的远程桩模块接口来调用远程DAO 36 storeAttributes方法并且再次传送DO 20。该桩模块将传送的数据对象串联化并且将串联化的数据流分配至远程DAO,其中将数据流去串联化为实例化的数据对象(DO)。
步骤7:RemoteDAO::storeAttributes(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也最好由工厂建立并且从两个虚基类进行多继承。第一基类定义对于本地DAO 34或远程DAO 36是公共的性能。第二基类定义对于与DAO 34、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)和DataObjectType1(21)实行继承。DAO2(31)自ProprietaryDatabase39和自DataObjectType1(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和传输型媒体例如模拟或数字通信线路。
附加地,以下任何一项权利要求中相应的结构、材料、操作和任何装置加上功能单元的等效内容应该包括如具体地权利要求的用于完成与其他权利要求的单元一起完成功能的任何结构、材料或操作。
虽然参照本发明的优选实施例和使用面向对象设计方案具体地显示和描述了本发明,但专业人员知道可以在不背离本发明的实质和范围的情况下在形式和细节上作出不同变动。
Claims (9)
1.一种用于分配应用程序数据至多个不相似格式数据库的方法,所述方法包括:
定义一个商业对象,以表示需要向所述多个数据库之一写入数据的软件应用程序;
定义多个数据访问对象,每个数据访问对象都能以其各自的格式将数据写入所述多个数据库之一;
定义一个存储对象,以表示所述商业对象和所述多个数据访问对象之间的接口;
响应从所述商业对象发出的向所述多个数据库之一的写请求,为要向所述多个数据库之一写入的数据生成一个数据对象;
由所述存储对象向所述多个数据访问对象中的每一个发送所述数据对象;
由所述多个数据访问对象将所述数据对象中封装的数据转换成适合所述多个数据库中的每一个的各自的格式;以及
由所述相应的数据访问对象根据封装数据各自的格式将所述封装数据存储在所述多个数据库中的每一个中。
2.根据权利要求1的方法,进一步包括,通过将每个数据访问对象附加于存储对象上而将每个数据访问对象向存储对象登记。
3.根据权利要求1的方法,进一步包括,由所述存储对象维护一个用户数据访问对象列表。
4.根据权利要求1的方法,其中所述生成步骤还包括,由所述商业对象向一个数据对象集合发出对所述数据对象的请求。
5.根据权利要求1的方法,其中所述生成步骤还包括响应所述请求,由所述数据对象集合生成所述数据对象。
6.根据权利要求1的方法,其中所述多个数据库包括一个专有数据库和一个关系数据库。
7.根据权利要求1的方法,其中所述多个数据库包括一个专有数据库和一个面向对象的数据库。
8.根据权利要求1的方法,其中所述多个数据库中的一个就地存储在一个计算机处理系统中。
9.根据权利要求8的方法,其中一个第二数据库从所述计算机处理系统远程地进行存储,并且能够通过通信网络进行访问。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/598,981 | 2000-06-21 | ||
US09/598,981 US6601072B1 (en) | 2000-06-21 | 2000-06-21 | Method and system for distribution of application data to distributed databases of dissimilar formats |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1329308A CN1329308A (zh) | 2002-01-02 |
CN1207669C true CN1207669C (zh) | 2005-06-22 |
Family
ID=24397708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB011216549A Expired - Fee Related CN1207669C (zh) | 2000-06-21 | 2001-06-20 | 将应用程序数据分配至不相似格式分布式数据库的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6601072B1 (zh) |
CN (1) | CN1207669C (zh) |
DE (1) | DE10128883A1 (zh) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6871140B1 (en) * | 2000-02-25 | 2005-03-22 | Costar Group, Inc. | System and method for collection, distribution, and use of information in connection with commercial real estate |
US7089256B2 (en) * | 2000-07-11 | 2006-08-08 | Knowledge Dynamics, Inc. | Universal data editor |
US20030097363A1 (en) * | 2000-07-17 | 2003-05-22 | Dorsey Paul R. | Method and computer system for storage of data structure business rules using UML class diagrams |
EP1182547A1 (de) * | 2000-08-24 | 2002-02-27 | Wincor Nixdorf GmbH & Co KG | Programmkopplungsmethode |
US7139821B1 (en) * | 2000-10-20 | 2006-11-21 | Sun Microsystems, Inc. | Method and apparatus for creating and deploying applications from a server application |
US20090132316A1 (en) * | 2000-10-23 | 2009-05-21 | Costar Group, Inc. | System and method for associating aerial images, map features, and information |
US6941291B1 (en) * | 2000-12-07 | 2005-09-06 | Cisco Technology, Inc. | Method and device for a user profile repository |
US6915520B2 (en) * | 2001-04-06 | 2005-07-05 | Hewlett-Packard Development Company, L.P. | Java C++ proxy objects |
US7257820B2 (en) * | 2001-04-14 | 2007-08-14 | Siebel Systems, Inc. | Method and system for using integration objects with enterprise business applications |
US7370272B2 (en) * | 2001-04-14 | 2008-05-06 | Siebel Systems, Inc. | Data adapter |
US6865607B1 (en) | 2001-06-28 | 2005-03-08 | Microsoft Corp. | Pluggable channels |
US7685562B2 (en) * | 2001-09-28 | 2010-03-23 | Siebel Systems, Inc. | Method and code generator for integrating different enterprise business applications |
EP1513076A1 (en) * | 2003-09-05 | 2005-03-09 | Sap Ag | Method and computer system for data conversion |
WO2006042202A2 (en) * | 2004-10-08 | 2006-04-20 | Approva Corporation | Systems and methods for monitoring business processes of enterprise applications |
US7720904B2 (en) * | 2005-05-27 | 2010-05-18 | Microsoft Corporation | Entity projection |
US8285817B1 (en) | 2006-03-20 | 2012-10-09 | Netapp, Inc. | Migration engine for use in a logical namespace of a storage system environment |
EP2013719A4 (en) * | 2006-05-01 | 2009-06-03 | Approva Corp | CONTROL MANAGEMENT IN A HETEROGEN ENTERPRISE ENVIRONMENT |
US7620526B2 (en) * | 2006-10-25 | 2009-11-17 | Zeugma Systems Inc. | Technique for accessing a database of serializable objects using field values corresponding to fields of an object marked with the same index value |
US7761485B2 (en) * | 2006-10-25 | 2010-07-20 | Zeugma Systems Inc. | Distributed database |
US8296198B2 (en) * | 2007-06-28 | 2012-10-23 | Sap Ag | Method and system for distribution of information |
US20090276754A1 (en) * | 2008-05-01 | 2009-11-05 | Kabira Technologies, Inc. | Java virtual machine having integrated transaction management system |
CN102141907B (zh) * | 2010-01-28 | 2014-03-26 | 国际商业机器公司 | 向应用的数据库注入数据的方法和设备 |
US9384202B1 (en) * | 2012-10-01 | 2016-07-05 | Amazon Technologies, Inc. | Gateway module to access different types of databases |
US20140279899A1 (en) * | 2013-03-15 | 2014-09-18 | Unisys Corporation | Data bus architecture for inter-database data distribution |
CN103778212B (zh) * | 2014-01-16 | 2017-04-05 | 国网山东省电力公司青岛供电公司 | 基于数据节点的并行海量数据处理方法 |
CN105095294B (zh) * | 2014-05-15 | 2019-08-09 | 中兴通讯股份有限公司 | 一种分布式存储系统中管理异构副本的方法及装置 |
CN108241626A (zh) * | 2016-12-23 | 2018-07-03 | 北京国双科技有限公司 | 查询脚本的生成方法及装置 |
CN111198917A (zh) * | 2020-01-06 | 2020-05-26 | 中国建设银行股份有限公司 | 数据处理方法、装置、设备及存储介质 |
CN111565168B (zh) * | 2020-03-02 | 2023-05-23 | 杭州云毅网络科技有限公司 | 一种对象存储方法、系统、存储介质及电子设备 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4943932A (en) | 1986-11-25 | 1990-07-24 | Cimflex Teknowledge Corporation | Architecture for composing computational modules uniformly across diverse developmental frameworks |
TW226047B (zh) * | 1990-03-27 | 1994-07-01 | Ibm | |
US5522066A (en) * | 1992-04-16 | 1996-05-28 | Industrial Technology Research Institute | Interface for accessing multiple records stored in different file system formats |
US5649190A (en) | 1994-06-14 | 1997-07-15 | Harris Corporation | Multi-model database system for dynamic creation and maintenance of complex objects in a real time environment |
JPH0822406A (ja) | 1994-07-05 | 1996-01-23 | Toshiba Corp | 分散データベースを持つ情報処理システム |
US5717924A (en) | 1995-07-07 | 1998-02-10 | Wall Data Incorporated | Method and apparatus for modifying existing relational database schemas to reflect changes made in a corresponding object model |
US5907837A (en) * | 1995-07-17 | 1999-05-25 | Microsoft Corporation | Information retrieval system in an on-line network including separate content and layout of published titles |
US5634053A (en) * | 1995-08-29 | 1997-05-27 | Hughes Aircraft Company | Federated information management (FIM) system and method for providing data site filtering and translation for heterogeneous databases |
US6401081B1 (en) | 1995-11-20 | 2002-06-04 | Schlumberger Resource Management Services, Inc. | Modular object-based architecture for extensible master station software |
US5881230A (en) | 1996-06-24 | 1999-03-09 | Microsoft Corporation | Method and system for remote automation of object oriented applications |
GB9702458D0 (en) * | 1997-02-06 | 1997-03-26 | British Telecomm | Adaptive distributed information network |
JP3734334B2 (ja) | 1997-05-07 | 2006-01-11 | 富士通株式会社 | データ移行システム、データ移行用プログラムを格納したコンピュータ読み取り可能な記録媒体、及びデータ移行方法 |
US5933837A (en) * | 1997-05-09 | 1999-08-03 | At & T Corp. | Apparatus and method for maintaining integrated data consistency across multiple databases |
US6199068B1 (en) * | 1997-09-11 | 2001-03-06 | Abb Power T&D Company Inc. | Mapping interface for a distributed server to translate between dissimilar file formats |
CA2220565A1 (en) | 1997-11-07 | 1999-05-07 | Crosskeys Systems Corporation | Database building system |
US6356946B1 (en) * | 1998-09-02 | 2002-03-12 | Sybase Inc. | System and method for serializing Java objects in a tubular data stream |
-
2000
- 2000-06-21 US US09/598,981 patent/US6601072B1/en not_active Expired - Fee Related
-
2001
- 2001-06-15 DE DE10128883A patent/DE10128883A1/de not_active Ceased
- 2001-06-20 CN CNB011216549A patent/CN1207669C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6601072B1 (en) | 2003-07-29 |
CN1329308A (zh) | 2002-01-02 |
DE10128883A1 (de) | 2002-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1207669C (zh) | 将应用程序数据分配至不相似格式分布式数据库的方法 | |
US6112304A (en) | Distributed computing architecture | |
US6996565B2 (en) | System and method for dynamically mapping dynamic multi-sourced persisted EJBs | |
US6976262B1 (en) | Web-based enterprise management with multiple repository capability | |
US7249131B2 (en) | System and method for dynamically caching dynamic multi-sourced persisted EJBs | |
US6922695B2 (en) | System and method for dynamically securing dynamic-multi-sourced persisted EJBS | |
US6738775B2 (en) | Database communication system and method for communicating with a database | |
US5845289A (en) | Methodology for generating object structures for accessing conventional, non-object-oriented business applications | |
US6016495A (en) | Object-oriented framework mechanism for providing persistent storage | |
US7620617B2 (en) | Abstraction layer for presenting configuration information to a caller | |
US7809768B2 (en) | Method and apparatus for object oriented storage and retrieval of data from a relational database | |
US7536409B2 (en) | Having a single set of object relational mappings across different instances of the same schemas | |
CN101430644B (zh) | 在结构化环境中执行动态程序的系统和方法 | |
US20020194267A1 (en) | Portal server that provides modification of user interfaces for access to computer networks | |
EP1637993A2 (en) | Impact analysis in an object model | |
CN1255215A (zh) | 在信息处理系统中存储和操作数据的系统和方法 | |
KR100538371B1 (ko) | 분산데이터처리환경에 레거시 어플리케이션을 통합시키기위한 방법 및 시스템 | |
JP4039800B2 (ja) | データ管理方法、オブジェクト統合管理システム | |
US6598037B1 (en) | Data table object interface for datastore | |
Dittrich et al. | Component database systems | |
US9373093B2 (en) | Gateway service manager for business object applications | |
WO2004023345A1 (en) | System and method for dynamically mapping dynamic multi-sourced persisted ejbs | |
WO2004023297A1 (en) | System and method for dynamically securing dynamic multi-sourced persisted ejbs | |
Bruneliere et al. | Towards scalable model views on heterogeneous model resources | |
Achard et al. | Ubiquitous distributed objects with CORBA |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20050622 Termination date: 20110620 |