通过结构化查询语言输入提供对分层数据存储器的访问的方法和装置制造方法及图纸

技术编号:2883401 阅读:232 留言:0更新日期:2012-04-11 18:40
一种开放式数据库连接性(ODBC)驱动程序,允许通过SQL输入查询来访问分层数据存储器中存储的数据。根据SQL输入,该驱动程序将分层数据存储器变换为关系数据库表。优选地,这些表保持指向分层数据存储器中存储的实际数据的指针。(*该技术在2019年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术要求1998年10月16日提交的名称为“建模工具的系统和方法”的美国临时申请No.60/104,682的优先权,在此包括其全部内容作为参考。本专利技术涉及在同日提交的名称为“用于建模工具的装置和方法”的共同待审美国专利申请No._(代理人卷号#22074661-25535),在此包括其全部内容作为参考。本专利技术涉及在同日提交的名称为“用于模型效果分析的方法”的共同待审美国专利申请No._(代理人卷号#22074661-25532),在此包括其全部内容作为参考。本专利技术涉及在同日提交的名称为“确定两个或多个模型之间的区别的方法”的共同待审美国专利申请No._(代理人卷号#22074661-25531),在此包括其全部内容作为参考。本专利技术涉及在同日提交的名称为“可扩展宏语言的方法和系统”的共同待审美国专利申请No._(代理人卷号#22074661-25533),在此包括其全部内容作为参考。本专利技术涉及数据库管理系统,具体涉及一种允许应用程序访问各种数据库管理系统的应用编程接口(API)。开放式数据库连接性(ODBC)是一种应用编程接口(API),提供用于访问各种基于结构化查询语言(SQL)的数据库管理系统的公用接口。大多数厂商在它们的关系数据库中加入了ODBC接口。常规ODBC的一个主要缺点是,其被设计为访问在查询时使用标准SQL语言的关系数据库管理系统,并且由于SQL假定了数据库的关系性质,ODBC在关系数据库以外的使用遇到了很大问题。因此希望提供一种系统和方法,用来提供一种ODBC接口或驱动程序,以便允许访问诸如分层对象/属性模型的非关系数据存储器。本专利技术提供一种驱动程序,允许通过SQL输入查询访问分层数据存储器中存储的数据。基于SQL输入,该驱动程序将分层数据存储器变换为关系数据库表。优选地,这些表保存指向分层数据存储器中存储的实际数据的指针。然后使用所变换的表执行SQL输入。附图说明图1是显示根据本专利技术在SQL报告生成程序和分层数据存储器之间连接的ODBC驱动程序的方框图;图2是根据本专利技术的ODBC驱动程序的流程图;图3表示分层数据存储器和等价关系数据库。分层数据存储器被表示为对象和属性的图表。对象可以由其它对象拥有或者概念性地集合到其它对象。对象可以通过引用属性保持对其它对象的引用。属性由对象所拥有并且被集合到对象中。图3包括这种分层数据存储器和等价关系数据库的表示。图3中的分层数据存储器是客户和他们的订单信息的模型。该数据存储器包括称为“客户”的一个对象或一组对象,每个对象具有唯一的内部标识号,“int_id”。“客户”对象具有三个属性一个标量属性和两个矢量属性。一个标量属性是“Name”类型,其根据定义仅可以保持一个值。第一矢量属性是“Phone_number”类型,其根据定义可以保持很多值。第二矢量属性是“Order_ref”类型,其也可以保持很多值。“Order_ref”的每个值是一个引用称为“订单”的另一个对象的指针。“订单”对象具有“DateOrdered”类型的属性,其存储下订单的日期。关系数据库中的等价数据存储器可以表示为图3右侧所示的三个单独的表。“客户”表具有名为“Id”和“Name”的两列,“订单”表具有名为“Order_id”,“DateOrdered”和“Cust”的三列,“电话”表具有名为“Cust”,“Seq”和“Phone_number”的三列。通过具有相同值的“客户”表的“Id”,“电话”表的“Cust”和“订单”表的“Cust”将这三个表相互链接。图1是显示SQL报告生成程序2和分层数据存储器4之间连接的ODBC驱动程序6的方框图。如上所述,常规ODBC被设计为使用标准SQL语言查询来访问关系数据库。根据图2的步骤,本专利技术的ODBC驱动程序6允许对诸如分层数据存储器4的信息的标准对象/属性模型,使用来自SQL报告生成程序2的标准SQL语言查询。在步骤10,驱动程序6接收来自生成程序2的SQL输入。在步骤12,驱动程序6根据接收的SQL输入识别所要处理的对象类和它们的属性。在步骤14,将分层数据存储器4变换为具有各种列的关系数据库表,使得分层数据存储器4对于SQL报告生成程序2表现为一个关系数据库。在优选实施例中,步骤14包括以下操作以使得分层存储的数据库被变换为关系数据库表1.将对象的每个类变换为一个表。每个该类型的表具有两个伪列“Id”,包含该实例的唯一标识符并且是主关键字;“Owner”,包含回引到拥有对象的外关键字;2.对象的每个非引用标量属性变成该对象的类表中的一列;3.将每个非引用矢量属性变换为一个表。每个该类型的表具有两个伪列“Sequence”列,包含该矢量的每个元素的序列值并且是该表的主关键字的一部分;“Owner”列,包含返回到拥有对象的外关键字并且是主关键字的一部分;4.每个引用属性(包括标量和矢量)可以用于计算从被引用对象到拥有该引用属性的对象的外关键字关系。在产生/变换必要的表和列时,它们最好具有指向分层数据存储器中驻留的实际数据的指针,并且不存储数据自身。然后在步骤16,在变换的表上执行SQL输入中包含的查询。在步骤18,将执行结果传送到发送该SQL输入的报告生成程序2。下面参考几个SQL输入的例子对图2中的步骤提供更详细的解释。作为一个例子,假设ODBC驱动程序6接收从SQL报告生成程序2发送的以下SQL输入查询Select DateOrdered from Order a,Customer b where a.Cust=b.Id andb.Name=“Doe”.以上SQL输入表示生成程序希望接收“Doe”所下的所有订单的DateOrdered。在关系术语中,客户表和订单表相互连接或结合是指订单表的“Cust”列中的值应该与客户表的Id列中的值匹配。“Id”是客户表的主关键字,“Cust”是订单表的外关键字。本领域技术人员可以理解,图3中的分层数据存储器没有被设置为易于由常规ODBC接口使用的形式。这正是根据本专利技术的ODBC驱动程序6所解决的一个问题。ODBC驱动程序6分析所接收的SQL输入并识别需要处理的对象类。然后,ODBC驱动程序6将每个对象类变换为一个表。换句话说,因为对象类映射到表,为每个识别的对象类生成一个数据库表。在上述例子中,仅有两个对象,“客户”和“订单”。因此,产生两个名为“客户”和“订单”的表。作为变换过程的一部分,部分地通过分析所接收的SQL语言中引用了什么列和通过分析对象类的属性(由于列映射到属性)来生成这些表的列。此外,将内部标识号“int_id”映射到对应表的一列。如图3所示,作为变换的结果,ODBC驱动程序生成一个具有“Id”和“Name”列的“客户”表,和一个具有“Order_id”,“DateOrdered”和“Cust”列的“订单”表。客户对象的“int_id”和“Name”映射到“客户”表的“Id”和“Name”列,订单对象的“iht_id”和“DateOrdered”映射到“订单”表的“Order_id”和“DateOrdered”列。此时,我们需要合成的唯一一个列是订单表的“Cust”列。但是,“订单”对象中不存在分层数据存储器中的客户属性。换句话说,订单对象中没有回指本文档来自技高网...

【技术保护点】
一种通过使用SQL输入来访问分层数据存储器中存储的数据的方法,包括以下步骤:接收SQL输入;根据所接收的SQL输入将分层数据存储器变换为关系数据库表;和使用变换的表执行SQL输入。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:塔德德弗勒阿卡迪巴里
申请(专利权)人:联合想象计算机公司
类型:发明
国别省市:US[美国]

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

1