CN1098501C - 用于sql关系数据库的仿真器及方法 - Google Patents

用于sql关系数据库的仿真器及方法 Download PDF

Info

Publication number
CN1098501C
CN1098501C CN96195530A CN96195530A CN1098501C CN 1098501 C CN1098501 C CN 1098501C CN 96195530 A CN96195530 A CN 96195530A CN 96195530 A CN96195530 A CN 96195530A CN 1098501 C CN1098501 C CN 1098501C
Authority
CN
China
Prior art keywords
function
sql
data
row
module
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
Application number
CN96195530A
Other languages
English (en)
Other versions
CN1191026A (zh
Inventor
罗德尔夫·本茨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alcatel Lucent NV
Original Assignee
Alcatel NV
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alcatel NV filed Critical Alcatel NV
Publication of CN1191026A publication Critical patent/CN1191026A/zh
Application granted granted Critical
Publication of CN1098501C publication Critical patent/CN1098501C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (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

一种方法和装置,用于将一个使用具有SQL界面的关系数据库的现存的应用程序向具有不包括一个SQL关系数据库简化了的硬件配置移植。本发明仿真一个SQL数据库,使能够节省硬件资源并能提供函数的子集,目的是:生成SQL表并定义字段;存储,修改并删除在生成的表上的数据,具有一个类型检查,通过使用SQL筛选程序检索这样的数据。函数能够被再分为若干层次(M1,M2,M3),目的是:将来自一个现存的用户应用程序(An)的SQL语句转化为一系列基本的接口函数(IF1IFn),使用所述的接口函数来读/写数据文件(F1Fn),处理所提供的输出数据给要求的用户应用程序(An)。

Description

用于SQL关系数据库的仿真器及方法
本发明涉及一种提供(结构化查询语言)关系数据库函数给现存的应用程序的方法。
现在仍然存在着大量的商业上可用的具有SQL界面的关系数据库,提供了详尽的函数集,但是,它们需要非常高的硬件资源消耗。
因此,为具有包括商业的SQL关系数据库在内的软件平台的某一计算机所编写的计算机程序,对于那些具有简化的硬件配置的计算机来说往往是不适合的。
在过去,许多现存的应用程序不得不被重写以使得它们能够与设备上存在的专有数据库相接口。
此外,专有数据库通常与设备相关,而且在其它设备上不能用于实现相同应用或其它的应用程序。
当将在不同的硬件和软件平台上开发的现存的应用程序移植到,具有简化的硬件配置的设备,例如通信服务器、其它网络设备等,并使用一个SQL关系数据库的时候,应用程序开发者所面对的主要问题之一是需要重写部分应用程序以使得它们能够与设备上存在的专有数据库相接口,否则应用程序不能被使用或者必须被完全重写。有时,目的设备的硬件资源的可用率减小,因为安装了其它消耗资源的应用程序(例如,象ISO/OSI栈协议,TCP/IP和其它的通讯软件),并且因为商用SQL关系数据库硬件资源消耗非常大,所以理想的是避免安装它,例如在向一个或多个通讯服务器移植一个应用程序的情况下。
应该认识到一个运行在具有任何配置的任何设备上的SQL数据库是必要的,以达到在没有安装一个商用数据库的时候、应用程序使用一个SQL数据库来被移植到一个设备上并且正确地工作。
本发明的一个目标是提供移植的一种方法和装置,提供一组SQL数据库函数给在任一设备上的一个存在的应用程序,而硬件资源无需大的消耗。
本发明提供一种向一个应用程序提供SQL关系数据库函数的方法,其包括以下的步骤:
将分配给SQL关系数据库函数的限定子集的SQL语句转换为接口函数,它根据各个SQL语句来调用一系列用于访问用户数据的预先定义的仿真库函数;
从所述的接口函数的模块集和各自的预先定义的仿真库函数来建立数据管理例程,以仅仅实现所述的SQL函数的限定的子集。
用于将一个使用具有SQL关系数据库的现存的应用程序向简化了的硬件配置设备移植的方法,包括以下的步骤:
将分配给SQL关系数据库函数的限定的子集的SQL语句转换为接口函数,它根据各个SQL语句来调用一系列用于访问用户数据的预先定义的仿真库函数。
从所述的接口函数的模块集和各自的预先定义的仿真库函数来建立数据管理例程,以仅仅实现所述的SQL函数的限定的子集。
在简化了的硬件配置上为所述的应用程序安装作为SQL仿真器的所述数据管理例程。
用于向应用程序提供SQL关系数据库函数的仿真器,包括:
一个接口模块,它由接口函数模块形成,其中每个接口函数模块由一个特定的SQL语句所启动,并且
一个仿真库,它由仿真库函数模块集形成,其中仿真库函数模块为访问用户数据提供预先定义的仿真库函数;其中
每个接口函数模块都被以这样的方式设计,它根据各个SQL语句调用一系列仿真库函数的执行,从而为各个SQL语句执行数据管理例程,并且其中
为了仅仅执行SQL函数的限定的子集,接口模块和仿真库分别包括限定数量的所述的接口函数模块和库函数模块。
要求保护的发明使应用一个SQL数据库的用户软件应用程序能够仅仅通过拷贝、再编译和执行应用程序文件,而无需任何源代码的修改就可移植到任何简化的硬件配置上,在该硬件配置上,不能安装商用的消耗资源的SQL关系数据库。
通过使用本发明,避免了修改已有的源代码所浪费的时间,在有些时候,这样的源代码是不容易修改的,而且浪费很大的精力。
此外,有些时候,节省硬件资源以用于其它运行时间的应用程序更为可取,在这些情况下,本发明的仿真器目标在配置阶段就能够节省资源。
此外,仿真器能够被定做以用在任何不同的设备上的不同平台上。
有利的是,用户数据的安全性能够被保证,在必要时,通过使用一个加密/解密模块来访问数据文件。
本发明将在下面通过例子,参考附图被详细的描述,其中:
图1显示了在一个移植阶段仿真器的使用;
图2列举了组成仿真器的软件体系结构的所有组成部分;
图3显示了如何将一句SQL语句转化为一个接口函数,然后再将接口函数翻译为一系列访问ASCII文件的仿真库函数;
图4显示了如何实现将一句SQL语句转化为一个接口函数,该接口函数然后被翻译为一系列访问ASCII文件的仿真库函数的;
图4-B是图4的一个特殊例子;
图5显示了用于管理电话网络的一个系统,该系统使用了包括了能够实现本发明的简化了硬件配置的通信服务器的LAN网络来实现;并且
本发明集中在一个数据库仿真方法,如图1所示。在下面,将把注意力特别集中在向需要数据库的应用程序所提供的服务,尽管应该理解,仿真器可能实现一个不同的函数集,它将是为了能够工作应用程序所要求的最小的数量。
根据本发明,给定了通过使用仿真器1,以一种不同的方式提供一个SQL商用数据库的性能的一种初始的方法。
所述的仿真器是一个模块数据库:为了减少硬件资源的消耗,特别是内存和CPU时间的消耗,仅仅那些为满足一个现存的用户应用程序An的要求所需要的函数才被配置和安装,以实现最大的灵活性。
仿真器通过使用函数的模块库和预定义的数据结构来管理配置和用户数据ASCII文件F1…Fn。简单的模块结构使配置的升级和维护较容易,以达到在考虑到应用程序的要求和设备的硬件配置后减小仿真器的大小的目的。
所述的应用程序An例如是在第一个硬件平台HW1上被开发的,HW1通过软件配置SW1将应用程序An与SQL关系数据库相接口,并且该应用程序被假定在第二个硬件平台HW2上使用,其中在HW2上不能得到SQL数据库,因此SW1也是不可用的。
仿真器1的软件体系结构如图2所示。
仿真器1包括下面几个部分:
一个接口模块M1,向应用程序提供SQL接口(它代替SW1平台)。这个模块程序与应用相关,并且应该依据所使用的SQL语句的类型,特别是具有复杂语法的查询语句,来定做。它包括一个函数集,每一个函数对应于应用程序An所使用的一个特定的SQL语句;
一个模块仿真器库M2,是可扩展的并且与应用程序无关,它包括一个函数集执行由M1所调用的在ASCII文件之上的基本操作,以实现应用An所使用的SQL语句;
-一个错误管理模块(图中未显示);
-一个加密模块(不是必须有的);
-配置ASCII文件,包括数据库和表定义F1…Fm-1;和
-ASCII用户数据文件Fm…Fn(它可能被加密),它包括依据表定义所插入的用户数据。
仿真器管理包括有表定义和用户应用数据的大量的ASCII文件。
出于安全性的原因可以选择将数据加密。
使用仿真器,与存在的SQL数据库相比,所指定的CPU时间、RAM的数量和所要求的硬盘的兆字节数都将大大的减少。
SQL关系数据库仿真器向用户应用程序提供了一个包含有一个函数集的模块库以:
-生成SQL表和定义字段;
-存储、修改并删除在已生成的表上的数据,其中依据字段定义进行类型检查;并且
-通过使用SQL筛选程序检索这样的数据;
仿真器以两种方式执行SQL指令:
1.定义数据库结构,能够通过使用一个编辑器更新配置文件以实现下面的表配置指令:
  ×生成表
  ×修改表配置
  ×撤消表
  ×描述
  ·插入行以预先集中表
2.使用定义的数据库,通过使用如图3所示的模块接口函数IF IFn来实现表内容的运行时间的修改:
  选择行;
  插入一个行;
  删除行;
  更新一个行。
这个描述将被继续作为一个SQL数据库的一个例子来采用,该数据库
的服务将被仿真。
在继续本发明的详细的描述之前,概括出表配置阶段的某些相关方面将
是有帮助的。
下面将描述以下的SQL语句被处理的方式:
生成表(II),
修改表配置(改变/撤消/生成)(I,III,II),
删除(改变/撤消)(I,III),
描述(IV),
  插入行以预先集中表(V)。
前面所说的语句的SQL语法如下:
I)修改一个数据库:
  ALERT DATABASE  数据库名;
II)定义一个新的表结构:
  CREATE TABLE  表名
  (字段名1 NUMBER(9),
   字段名2 CHAR(14));
III)删除一个表:
  DROP TABLE  表名
IV)看表的定义:
  DESC  表名
V)数据插入作为缺省:
  INSERT INTO  表名
  (域名1,域名2)
  VALUES
  (‘域值1’,‘域值2’);
上面所提到的SQL语句能够通过使用一个ASCII配置文件来被仿真,该文件是通过使用一个编辑器来书写和修改。
对于每一个新表,生成一个ASCII文件。
每一个行定义一个表的列。
下面是在仿真器表配置ASCII文件上的表的例子,其中第一部分是表结构定义,第二部分是作为缺省插入的用户数据。
字符“|”,“-”和“*”用作分隔数据。
字符“#”表示有一个注释行。
在第一部分定义了表结构。
包含在H…H之间的数据表示表的定义,每一个以C开始的行都是定义的表的一个列。
为每一个表列定义的指定的参数为:
×类型,
×长度,
×是否字段能够为空,
×是否字段是唯一的访问记录的索引。
在这个例子的第二个部分具有数据的行被插入到表中。
依据以前的表定义,执行一个类型检查。
#

  #Table ASH_states

  #

  H This table has 4 columns|4|

  #

  C Application Service Id.|NUMBER|3|NOT NULL|UNIQUE
INDEX|

  C Application Entity Id.|CHAR|32|NOT NULL|UNIQUE INDEX 

  C Sequence Number|NUMBER|3|NONULL|UNIQUEINDEX
|

  C State Name|CHAR|20|NOT NULL|

  H

  #--------------------------------------------------------

  *1|dh_1|0|IDLE|

  *1|dh_1|1|START_INT_DIAL_PEND|

  *1|dh_1|2|INT_DIAL_EXP|

  *1|dh_1|3|INT_DIAL_PEND|

  *1|dh_1|4|WAIT_FOR_CONT|

  *1|dh_1|5|WAIT_FOR_LAST|

  *1|dh_1|998|PROVIDER_ABORT|

  *1|dh_1|999|SUCCESFUL_COMPLETED|

  #--------------------------------------------------------

  *2|bh_1|0|IDLE|

  *2|bh_1|1|COMMAND_EXPECTED|
				
				<dp n="d7"/>
  *2|bh_1|998|PROVIDER_ABORT|

  *2|bh_1|999|SUCCESFUL_COMPLETED|

  #--------------------------------------------------------
熟练的技术人员应意识到还存在其它的配置模式。
为了进一步的解释,直接参考图3,它是图解形式。
包括在用户应用程序中的一条SQL语句,激活了一个仿真器接口函数IFi,该函数依据特定的SQL语句,调用一系列用于访问包含有用户数据的ASCII文件AF1…AFk的仿真库函数LF1…LFm。
例如,当SQL语句
INSERT INTO Tab2
(字段名1,字段名2)
VALUES(‘字段值1’,‘字段值2’);被用户应用程序An调用时,激活了INSERT仿真器接口函数IF1;它调用一系列仿真库函数,这些仿真库函数访问包含有用户数据的Tab2 ASCII文件AF2,下面将详细的予以解释。
下面是另一个例子:当SQL语句
SELECT FROM Tab2被用户应用程序An调用时,激活了SELECTn仿真器接口函数IFn;它调用一系列仿真库函数的序列,这些仿真库函数用于访问Tab2 ASCII文件。
可以得到提供函数LF1…LFm集的一个模块仿真器库。
所述的函数的子集能够被组合以实现一个SQL语句。
下面是库函数的一个例子:
F1_get_table_descr

    F2_open_table

    F3_close_table

    F4_search_first_row

    F5_search_next_row

    F6_fetch_row_at_curr_pos

    F7_fetch_row_at_abs_pos

    F8_write_row
				
				<dp n="d8"/>
    F9_delete_row

    F10_refresh_table_file
下面将提供每一个函数的详细的描述。
在图4中详细的显示了前面所列出的并在图3中显示的接口函数IF1IFn中一个的实现的过程。
所述的函数被转换为一系列访问ASCII文件的仿真库函数LF1LFm。
在函数IFi的数据区内定义了表描述A和访问描述B;它们被作为一个记录的数组来实现,其中对于每一个数据库表列都有一个元素。
表描述A由下面的配置数据组成:
1=列类型,
2=列长度,
3=字段是否能为空,
4=字段是否为访问记录的索引。
访问描述B包括依据初始的SQL语句类型的访问类型和方式。
它包括下面的数据,由仿真器接口函数Ifi依据SQL语句使用哪一列来
填充。
1=使用标记来指示是否该列被使用(T=是,F=否),
2=串大小,
下面的字段读/写操作的结果(由_fetch_row写或由_write_row读):
3=一个标记用于指示是否该字段能够为空(T=true是,F=false否),
4=一个标记用于指示是否该字段包括一个数字值,
5=一个标记用于指示是否该字段包括一个数字字母值(char=字符/ptr=指针)。
第一个在RAM存储器中执行的操作是_get_table_description函数激活以从数据文件中检索用户表定义并将它拷贝到表描述A中。
接下来,所有的仿真器库函数将使用表描述A来读/写访问描述B。
图5显示了用于管理电话网络的一个系统,该系统使用了包括了能够实现本发明的简化了硬件配置的通信服务器的LAN网络来实现。
系统包括两个应用服务器AS1和AS2,一台工作而另一台处于备用状态,用于执行网络的管理功能;这些设备具有包括重复的磁盘HD在内的完全的硬件和软件配置。
操作员通过使用所谓的X_Terminal与管理系统相接口,X_Terminal与提供图形的操作员接口的X_Terminal服务器相连接。
安装了大量的具有简化了的硬件配置的可能的通信服务器CS1CSn,它们能够完成本发明。在以后具有不同硬件配置的通信服务器CS1CSn的数目能够增加网络的升级。应用程序应该能够被安装到通信服务器CS上,该应用程序是在具有包括一个商用数据库在内全部的软件平台的不同的硬件配置设备上被开发的。作为简化的通信服务器CS软件平台还应包括通信软件,并且由于商用SQL关系数据库非常耗费硬件资源,所以仿真方式能够共享内存和CPU时间。
根据图5的网络管理系统的电话网络管理系统的体系结构的例子包括了能够完成本发明的设备。
从以后的网络的扩展的角度来看,仿真器的方法是有用的,扩展是通过插入多个具有不同硬件配置的设备,在不同的硬件配置上应该能够执行需要一个SQL关系数据库的应用程序。
随着网络拓扑复杂性的增加,网络管理系统应该在安装的设备和运行在所述上的应用的数量方面被升级。
图5中所示的网络管理系统的结构能够被分解为大量的通过网络互连的协同操作的子系统。
具有不同配置的设备的网络管理系统被互连为一个网络来管理,目的是协同操作交换管理信息。
仿真器方法能够使在所有硬件和软件平台上开发的应用程序移植到任何网络设备上。
上面曾经提过,以上在图3中列出并显示的每一个接口函数IF1…IFn被翻译为一系列访问ASCII文件的仿真库函数IF1…IFm。
通过进一步的解释,用户应用程序中的一个SQL语句被转化为一个IF函数,每个IF函数与仿真库中的函数序列相关联,其中该序列取决于SQL语句,SQL命令的输出被返回到用户应用,如以上的描述。下面将更加详细地解释以下内容:
IF函数
仿真库
ASCII文件下面将是IF函数集的一个例子:-insert;-delete;-update;-select1;
;and-selectn.依据一个SQL语法,一个SELECT语句可能具有一个不同的WHERE子句。这里有一些具有不同的复杂度的例子。字符*意为ALL。
  SELECT f1,f2 FROM tab1;
  SELCET*FROM tab1;
  SELECT f1,f5 FROM tab1 WHERE(f1=0 AND f2=‘string’);
  SELECT f1,f5 FROM tab1
  WHERE(F1=0 AND f2 NOT IN

  (SELECT f3,f4 FROM TAB2

    WHERE(f1=10 AND f2=‘string1’)));
  ((SELECT f1,f5 FROM tab1

    WHERE(F1=0 AND f2 NOT IN

      (SELECT f3,f4 FROM tab2 WHERE(F1=10 AND f2=
‘string1’)))
  )
  UNION
  (SELECT f1,f5 FROM tab1
				
				<dp n="d11"/>
  WHERE(F1=0 AND f2 NOT IN

    (SELECT f3,f4 FROM tab2 WHERE(f1=10 AND F2=
‘string1’)));

    )

  );
用户应用程序An通过使用SQL语句和传递参数(指向包含被送到数据库的数据的数据结构的指针和指向在其中包含SQL指令的输出将被返回的数据结构的指针)来与数据库相接口。
下面将描述前面所述的IF函数中的一个,它对应于SQL语句SELECT,它的实现为大家所关心。
TAB1是具有被定义为C1…C6的6列的数据库表的一个例子。
两个数据行已经被插入到TAB1中;仅仅与例子相关的数据被写了出来,其余的字段可以为任何值。
TAB1:
  C1    C2    C3   C4     C5     C6
    5      70      0      string
    10     100     200        string
下面的SQL语句可能来源于用户应用程序An:
SELECT c2,c4,c5 FROM tab1 WHERE(c2=10 AND c6=‘string’);
下面将讨论仿真器是如何工作的以获得结果。
在这个SELECT语句中具有WHERE这个子句,
图4中所定义的访问描述表B被复制在
-访问描述Select B1(图中未显示),
-访问描述Where B2(图中未显示)。
在这种情况下,通过使用两个访问描述表来实现对用户数据两种不同的访问。
如上面所解释的,表描述A和访问描述B或者B1和B2中的每一行都对应于在生成阶段定义的数据库表的一列。
通过将感兴趣的字段标记为T,在本例中为c1,c4和c5,访问描述SelectB1定义了对于TAB1中现存的行中所选择的每一个数据行,在C1C6之中哪些字段将被检索并且应该送至应用程序An:
1    2    3    4    5useC1  FC2  T              10C3  FC4  T              100C5  T              200C6  F
通过将在WHERE(c2=10 AND C6=string)子句中引用的字段标记为T,访问描述Where B2定义了子句来识别在TAB1中现存的哪些行应该被选择:
1    2    3    4    5useC1  FC2  T              10C3  FC4  FC5  FC6  T         5         string
在一个不同的SELECT语句中,例如SELECT f1,f2 FROM tab1,另外的一个解决方法能够通过使用一个单个的访问和一个单个的访问描述B来实现。
图4-B是图4的一个特殊情况。这是下面的SQL语句实现的情况。
((SELECT f1,f5 FROM tab1

      WHERE(F1=0 AND f2 NOT IN

          (SELECT f3,f4 FROM tab2 WHERE(f1=10 AND
				
				<dp n="d13"/>
‘string1’)))

  )

  UNION

  ((SELECT f1,f5 FROM tab1

      WHERE(F1=0 AND f2 NOT IN

          (SELECT f3,f4 FROM tab2 WHERE(f1=10 AND F2=
‘string1’)));

  )

  );
它可以通过使用以下的来执行:
-一个多表描述A1和A2
-一个多访问描述B1和B2。
下面的段落将解释IFn SELECT函数怎样通过调用一个确定的仿真器库函数序列来执行不同的步骤。
当用户应用程序An要求IFn从数据库中检索数据时,它向仿真器发送一个指向包含有SQL语句SELECT的参数的数据结构的指针,并且在操作的最后,指向查询的检索的数据结果的指针将被返回。
IFn执行前面所说的任务的一种方法如下:
根据从包含配置数据的ASCII文件中读取的表描述来初始化图4中的数据区中的表描述A,特别是通过调用仿真器库函数_get_table_descr()LF,表描述A的结构的数组被填充,每一个表列对应一行;
Figure C9619553000172
包含有与以前访问的表配置相关的用户数据的ASCII文件被打开,函数识别文件以前是否被打开过。如果文件是第一次被打开的话:
-打开文件
-通过调用函数_search_next_row()移至第一行。
如果文件不是第一次被打开的话,通过调用函数_search_next_row()将指向文件的指针移至某行,并且返回指向该行的指针,循环直至:
··文件的结尾,或
··指定数量的行已经被读完;
3)对于每一行,通过调用函数_fetch_row_at_curr_pos()在当前位置读取该行,并检验在B2中写入的WHERE子句是否满足该行,在这种情况下,将用户数据行所要求的字段拷贝到B1(SELECT访问描述)中,依据数据类型填充最后三列(null,long/int,char/ptr)。
4)在最后关闭用户数据表文件。
作为这个函数的结果,SELECT子句的输出将在访问描述表(B1的最后三列)中获得,并且返回到应用程序An。
上面所列的仿真库的一个例子能够如以下描述。
函数的子集能够联合起来来实现一个SQL语句。
在下面,将给出每个函数更加详细的描述。
F1
名字:_get_table_descr
描述:对于一个特定的表(输入参数_table_name),它取得表的描述,填充“行描述”结构(输出参数_row_desc)。
正确的表文件被打开,并且在完成了表描述读取之后被关闭。
当出现错误时,它记录一个消息。
F2
名字:_open_table
描述:它为一个特定的表(输入参数_table_name)打开一个表文件。依据指定的动作类型(输入参数_action_type所指定的SELECT,DELETE和INSERT)文件能够被打开,以用于读,修改和追加。它返回调用函数,指针指向打开的文件(输出参数_file_ptr)。当出现错误时,它记录一个消息。
F3
名字:_close_table
描述:对于一个特定的表名(输入参数_table_name),它关闭一个表文件。
通过调用函数(输入参数_file_ptr)来给定文件指针。
当出现错误时,它记录一个消息。
F4
名字:_search_first_row
描述:它在一个表中寻找第一个行。这意味着:表描述行被作为注释行而跳过,直到第二个标题行(关闭表描述)被发现。从调用的函数中获得文件指针(输入参数_file_ptr)和被插入在错误信息中的表名(输入参数_table_name)。
如果行能够正确的被发现的话,那将返回调用函数到表文件中行的位置(输出参数_file_pos):它是行类型字符的位置。
假定文件指针的初始值是指向文件行的第一个字节,否则搜索失败。
从文件中得到的最后的字符为:
-行的第一个字符(当它被正确发现的时候)
-在一行的开始处发现了文件结束(在表中没有行)
-一个未预期的行第一个字符
-一个未预期的文件结束。
当出现错误时,它记录一个消息。
F5
名字:_search_next_row
描述:它在表中寻找下一行。这意味着:如果发现了表描述行则认为其是“未预期的行”。
从调用的函数中获得文件指针(输入参数_file_ptr)和被插入在错误信息中的表名(输入参数_table_name)。
如果行能够被正确的发现的话将调用函数返回到表文件中行的位置(输出参数_file_pos):它是行类型字符的位置。
假定文件指针的初始值是指向文件行的第一个字节,否则搜索失败。
从文件中得到的最后的字符为:
-行的第一个字符(当它被正确发现的时候)
-在一行的开始处发现了文件结束(在表中没有更多的行)
-一个未预期的行第一个字符
-一个未预期的文件结束。
当出现错误时,它记录一个消息。
F6
名字:_fetch_row_at_curr_pos
描述:它从表文件的当前位置(位置由调用函数在文件指针_file_ptr中给定)开始取回一个表的行。
为了搜索行,它使用调用函数在输入参数_row_desc中所给定的行描述。
它填充在调用函数的内存区的“访问结构”(参数_row_access)。
若要得到更多的细节,参看内部函数_fetch_row。
当出现错误时,它记录一个消息。
F7
名字:_fetch_row_at_abs_pos
描述:它从由调用函数以输入参数_file_pos(除文件指针_file_ptr以外)显式给定的位置开始取回一个表的行。
为了搜索行,它使用由调用函数在输入参数_row_desc中所给定的行描述。
它填充在调用函数的内存区的“访问结构”(参数_row_access)。
若要得到更多的细节,参看内部函数_fetch_row。
当出现错误时,它记录一个消息。
F8
名字:_write_row
描述:当出现错误时,它记录一个消息。
输入:A和B。它在一个表中插入一个行(行被追加在文件表的底部)。
它使用调用函数给定的行描述作为输入参数。
它采用调用函数给定的从访问描述结构B写入的数据作为输入参数。
它打开并关闭表文件。
它检查在表中是否已经存在一个具有唯一的索引的行。
F9
名字:_delete_row
描述:它在逻辑上删除表中的一个行。
调用函数必须给出在表中行的位置。
它修改删除行的计数器。
F10
名字:_refresh_table_file
描述:对于一个特定的行,它检查是否删除行的计数器已经达到了阈
值。
如果是的话,它重写表文件,但不包括以前已经在逻辑上被删除的所有
行。
当超过阈值时,计数器被置位为0,当它小于阈值时,计数器保持值不
变。
F11
名字:_fetch_row
描述:它从表文件的当前位置(位置由调用函数在文件指针_file_ptr中给定)开始取回一个表的行。
为了搜索行,它使用调用函数在输入参数_row_desc中所给定的行描述。
它填充在调用函数的内存区的“访问结构”(参数_row_access)。
它从调用函数获得被插入到错误信息中的表名字(参数_table_name)和行号(参数_row_nbr)。
如果没有错误发生,则在最后一列后在行结束处搜索结束。
否则,当发现第一个错误时,检索被异常终止。
假定文件指针的初始值正指向紧接在初始化行的特定字符之后的字符。
最后的字符从文件中获得:
-终止组成行的最后(或唯一的)行的行结束(取过程成功终止),
-取回的最后一列的列终止符或初始化一个行的坏字符或未预期的行结束或未预期的文件结束(取过程被异常终止)。
当出现错误时,它记录一个消息。
为了简化一个现存的应用程序向目标设备的移植,仿真所描述的一个SQL关系数据库的方法被认为在节省内存和CPU时间方面具有很大的优越性。

Claims (7)

1.一种向一个应用程序(An)提供SQL关系数据库函数的方法,其包括以下的步骤:
将分配给SQL关系数据库函数的限定子集的SQL语句转换为接口函数(IF1到IFn),它根据各个SQL语句来调用一系列用于访问用户数据的预先定义的仿真库函数(LF1到LFm);
从所述的接口函数(LF1到LFn)的模块集和各自的预先定义的仿真库函数(LF1至LFm)来建立数据管理例程,以仅仅实现所述的SQL函数的限定的子集。
2.如权利要求1所要求的方法,其中所述的仿真库函数(LF1到LFm)提供在ASCII文件之上(AF1到AFk)的基本操作。
3.如权利要求2所要求的方法,其中所述的仿真库函数访问包括有数据库和表定义的配置ASCII文件和包括有用户数据的ASCII用户数据文件。
4.如权利要求1所要求的方法,其中对用户数据的访问由加密/解密模块(M3)来处理。
5.用于将一个使用具有SQL关系数据库的现存的应用程序(An)向简化了的硬件配置设备(HW2)移植的方法,包括以下的步骤:
将分配给SQL关系数据库函数的限定的子集的SQL语句转换为接口函数(LF1到IFn),它根据各个SQL语句来调用一系列用于访问用户数据的预先定义的仿真库函数(LF1到LFm)。
从所述的接口函数(LF1到LFn)的模块集和各自的预先定义的仿真库函数(LF1到LFm)来建立数据管理例程,以仅仅实现所述的SQL函数的限定的子集。
在简化了的硬件配置(HW2)上为所述的应用程序(An)安装作为SQL仿真器的所述数据管理例程。
6.用于向应用程序(An)提供SQL关系数据库函数的仿真器(1),包括:
一个接口模块(M1),它由接口函数模块(IF1到IFn)形成,其中每个接口函数模块由一个特定的SQL语句所启动,并且
一个仿真库(M2),它由仿真库函数模块集(LF1到LFm)形成,其中仿真库函数模块为访问用户数据提供预先定义的仿真库函数;其中
每个接口函数模块(IF1到IFn)都被以这样的方式设计,它根据各个SQL语句调用一系列仿真库函数的执行,从而为各个SQL语句执行数据管理例程,并且其中
为了仅仅执行SQL函数的限定的子集,接口模块(M1)和仿真库(M2)分别包括限定数量的所述的接口函数模块(IF1到IFn)和库函数模块(LF1到LFn)。
7.如权利要求6中所要求的仿真器,其中仿真库(M2)包含库函数模块(LF1到LFn)
用于生成SQL表和定义字段,
用于存储,修改和删除在已生成的表上的数据,其中依据字段定义进行类型检查,并且
用于通过使用SQL筛选器检索这样的数据。
CN96195530A 1995-07-14 1996-07-13 用于sql关系数据库的仿真器及方法 Expired - Fee Related CN1098501C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
ITMI95A001510 1995-07-14
ITMI951510A IT1275529B (it) 1995-07-14 1995-07-14 Emulatore per un database relazionale in linguaggio sql

Publications (2)

Publication Number Publication Date
CN1191026A CN1191026A (zh) 1998-08-19
CN1098501C true CN1098501C (zh) 2003-01-08

Family

ID=11371969

Family Applications (1)

Application Number Title Priority Date Filing Date
CN96195530A Expired - Fee Related CN1098501C (zh) 1995-07-14 1996-07-13 用于sql关系数据库的仿真器及方法

Country Status (10)

Country Link
US (1) US6003026A (zh)
EP (1) EP0839358B1 (zh)
JP (1) JPH11509349A (zh)
CN (1) CN1098501C (zh)
AT (1) ATE187565T1 (zh)
CA (1) CA2223490A1 (zh)
DE (2) DE69605553T4 (zh)
ES (1) ES2140116T3 (zh)
IT (1) IT1275529B (zh)
WO (1) WO1997004407A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102467534A (zh) * 2010-11-12 2012-05-23 上海宝信软件股份有限公司 多字段数据库的显示方法与显示装置

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6301477B1 (en) * 1998-04-02 2001-10-09 Lucent Technologies Inc. Method for creating and modifying similar and dissimilar databases for use in GSM wireless network configurations for telecommunication systems
CA2279028C (en) * 1999-07-29 2002-09-10 Ibm Canada Limited-Ibm Canada Limitee Dropped database table recovery
CA2307155A1 (en) 2000-04-28 2001-10-28 Ibm Canada Limited-Ibm Canada Limitee Execution of database queries including filtering
US7325129B1 (en) * 2000-11-16 2008-01-29 Protegrity Corporation Method for altering encryption status in a relational database in a continuous process
US7421427B2 (en) * 2001-10-22 2008-09-02 Attachmate Corporation Method and apparatus for allowing host application data to be accessed via standard database access techniques
CA2382712A1 (en) * 2002-04-19 2003-10-19 Ibm Canada Limited-Ibm Canada Limitee Detection and prevention of writing conflicts within nested query statements
US7634460B2 (en) * 2002-06-28 2009-12-15 Sas Institute Inc. Computer-implemented data replacement graphical user interface system and method
US7363313B2 (en) 2003-08-07 2008-04-22 International Business Machines Corporation Method, system, and program product for rebasing an application
US7664795B2 (en) * 2003-09-26 2010-02-16 Microsoft Corporation Apparatus and method for database migration
US20070198729A1 (en) * 2006-02-07 2007-08-23 Yechuri Sitaramarao S SQL network gadget
US7840601B2 (en) * 2006-05-12 2010-11-23 Sap Ag Editable table modification
KR100928382B1 (ko) * 2006-10-17 2009-11-23 삼성에스디에스 주식회사 메인프레임 시스템의 데이터베이스를 개방형 시스템에적합한 데이터베이스로 변환하는 마이그레이션 장치 및 그방법
IL187707A0 (en) 2007-11-27 2008-11-03 Univ Ben Gurion Alginate scaffold in hepatectomy
US20110055246A1 (en) * 2009-09-01 2011-03-03 Yann Le Biannic Navigation and visualization of relational database
US8843893B2 (en) * 2010-04-29 2014-09-23 Sap Ag Unified framework for configuration validation
IN2013MU02853A (zh) * 2013-09-02 2015-07-03 Tata Consultancy Services Ltd

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1989004013A1 (en) * 1987-10-09 1989-05-05 Nucleus International Corporation A relational database representation with relational database operation capability
EP0459683A2 (en) * 1990-05-30 1991-12-04 Texas Instruments Incorporated A system and method for database management supporting object-oriented programming
EP0560543A2 (en) * 1992-03-09 1993-09-15 International Business Machines Corporation Computer user interface for relating key and index properties to database table columns

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4205371A (en) * 1975-11-03 1980-05-27 Honeywell Information Systems Inc. Data base conversion system
US5640550A (en) * 1994-04-15 1997-06-17 Coker; Drake Computer system for generating SQL statements from COBOL code
US5717911A (en) * 1995-01-23 1998-02-10 Tandem Computers, Inc. Relational database system and method with high availability compliation of SQL programs

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1989004013A1 (en) * 1987-10-09 1989-05-05 Nucleus International Corporation A relational database representation with relational database operation capability
EP0459683A2 (en) * 1990-05-30 1991-12-04 Texas Instruments Incorporated A system and method for database management supporting object-oriented programming
EP0560543A2 (en) * 1992-03-09 1993-09-15 International Business Machines Corporation Computer user interface for relating key and index properties to database table columns

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102467534A (zh) * 2010-11-12 2012-05-23 上海宝信软件股份有限公司 多字段数据库的显示方法与显示装置

Also Published As

Publication number Publication date
CA2223490A1 (en) 1997-02-06
JPH11509349A (ja) 1999-08-17
IT1275529B (it) 1997-08-07
ATE187565T1 (de) 1999-12-15
CN1191026A (zh) 1998-08-19
US6003026A (en) 1999-12-14
ITMI951510A1 (it) 1997-01-14
EP0839358A1 (en) 1998-05-06
WO1997004407A1 (en) 1997-02-06
EP0839358B1 (en) 1999-12-08
DE69605553D1 (de) 2000-01-13
ES2140116T3 (es) 2000-02-16
ITMI951510A0 (it) 1995-07-14
DE69605553T4 (de) 2002-05-08
DE69605553T2 (de) 2000-05-04

Similar Documents

Publication Publication Date Title
CN1098501C (zh) 用于sql关系数据库的仿真器及方法
CN1146786C (zh) 用于自动修改数据库存取方法的方法
CN1097795C (zh) 结构式文件处理方法和装置
CN1273888C (zh) 成像装置、信息处理装置、程序执行方法及程序生成方法
CN1677365A (zh) 通过属性控制的测试实例继承
CN1601483A (zh) 一种基于脚本解释工具的自动化软件测试系统
CN1558348A (zh) 将基于模式的分级数据结构转换成平面数据结构的方法以及系统
CN1271545C (zh) 语言翻译系统
CN1573759A (zh) 公共查询运行期系统以及应用编程接口
CN1498367A (zh) 信息处理装置、存储器管理装置、存储器管理方法及信息处理方法
CN1276575A (zh) 数据库存取系统
CN1781078A (zh) 硬件加速器个性编译器
CN1568458A (zh) 无需修改现有代码即可增加新软件特征的方法
CN1190477A (zh) 修改现有数据库以反映相应对象模型变化的方法和装置
CN1722170A (zh) 内容系统、内容终端、参考服务器、内容程序和参考程序
CN1758221A (zh) 程序处理装置
CN1881903A (zh) 文件版本管理装置及方法和程序
CN1578949A (zh) 数据对象导向的储存系统
CN1200514A (zh) 信息处理方法和装置及存储服务器控制程序的存储器媒体
CN1302401A (zh) 可视数据集成系统和方法
CN1074319A (zh) 电信交换系统的软件结构
CN1542584A (zh) 程序电子水印处理装置
CN1862538A (zh) 一种数据配置系统及实现数据配置的方法
CN1705934A (zh) 文件更新设备
CN1892593A (zh) 与对象建模形式体系兼容的数据处理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee