用于数据存储与检索的方法与装置的制作方法

文档序号:6408524阅读:381来源:国知局
专利名称:用于数据存储与检索的方法与装置的制作方法
技术领域
本发明提供本质上与已知的概念不同的且对传统计算相关联的许多缺点实现改进的计算方法的基础。
传统的计算方法系统通常从准备需求什么及如何实现这一需求的详细规范开始。这一初始阶级通常充满着困难。在见到至少一部分系统已经操作以前,通常并不了解实际上需要的是什么。此外,许多系统是如此之大与复杂,甚至极难提出一个内部完全一致的系统规范。
建立一个传统的计算机系统的第二阶段是将系统规范传达给专业程序员,在这一阶段中通常会遇到进一步的困难。撇开在解释或单纯实现规范中所提出的需求不说,面对传统的计算的最大问题之一便是生成说明该系统干什么与如何干以及该计算机程序的后续维护的文档。在需要将一个附加的域加到一个现有的记录结构上时便会出现在维护现有系统中所经常遇到的问题。通常必须修正该计算机系统内访问包含该记录的文件的所有程序。
已有许多研究显示甚至高达80%的现代编程工作是花在维护现有系统上的。从而只允许20%的可利用的编程工作是花在开发新的应用上的。
即使在最基本的级上也会出现困难。例如,当将数据存储在磁性介质上时,通常是以固定长度或可变长度记录两者之一存储的。尤其是当需要分类所存储的数据与/或希望快速存取时,所存储的数据是加索引的并且最好是固定长度记录。索引可作为原数据的一部分存储或与之分开存储。索引是固定长度的。固定长度记录具有明显的缺点,即必须剪裁该数据以符合所选择的记录长度。
非常可观的人力资源已经花费在设计计算机数据库系统上。这种系统的费用与普及表明现代社会中对这种系统的潜在需求。系统需求变得越来越复杂,并且其一个方面已成为对记录与处理多对多关系(relationship)的需求。有些系统声称已符合这些要求。但迄今所知,它们都呈现为具有一定局限性与/或非常复杂的处理要求。
本发明力求采用与作为基础的传统计算系统不同的概念性途径减少所有上述缺点。
按照本发明的一个方面,提供了一种数据存储与检索方法,包括形成具有一个关键域的记录,该关键域包含两个数,一个标识实体类型而一个则标识所标识的类型的一个实体的一种属性。
按照本发明的另一方面,提供了数据存储与检索的一种方法,包括形成具有一个关键域的记录,该关键域包含三个数,一个标识实体类型、一个标识所标识的类型的一个实体,而一个则标识该实体的一种属性。
按照本发明的另一方面,提供了一种数据存储与检索的方法,包括形成具有一个关键域的记录,该关键域包含从一个将数字分配给字的查找表或文件导出的数字。
按照本发明的另一方面,提供了一种数据存储与检索的方法,包括形成数据记录与控制数据处理流的记录,及将所述记录一起存储在一个公用文件中。
按照本发明的另一方面,提供了一种数据存储与检索的方法,包括作为(该记录具有一个包含信息的关键域)记录存储的数据之间的关系的细节,这些信息能够标识包含所存储的关系的细节的数据记录的关键域。
按照本发明的另一方面,提供了实现前面五段中任何一段中所描述的方法的装置。
下面只是以示例的方式并参照附图描述本发明的一个实施例及其类型;附图中

图1示出按照本发明的一个实施例形成的一个典型记录,图2示出按照本发明的一个实施例形成的一个典型记录的关键域,图3示出利用部分关键域来以数字形式存储压缩的字母数字信息,图4a与4b示出按照本发明所描述的实施例形成的实际记录的示例,图5a与5b示出语义网络,在一个事例中描绘实体类型与属性间的关系,在另一事例中描绘实体类型与应用间的关系,图6示出描绘应用与操作员之间的关系的语义网络,以及图7示出描绘实体类型与主题词项之间的关系的语义网络。
首先,必须说明选择来形成关键域的信息,由于这本身是本发明的概念的一个重要方面。为了便于引用,在下面的说明中采用了一定的命名法。这一命名法的基础如下在首先考虑一个信息项时,考虑该项的类型。即考虑“实体类型(entity type)”。
其次考虑该特定的项本身,即考虑“实体”(entity)。
接着考虑关于该实体的已知或想要知道的事物。即考虑一个实体的“属性”。
下面给出一个简单的实例;根据一个称作ABCLimited(有限公司)的假想的公司,-实体类型为“公司”-实体为“ABC Limited”-ABC Limited的一种属性为其实际“营业地址”-ABC Limited的另一属性为其实际“营业电话号码”。
显然,在一个系统中可记录许多不同的实体类型,在一个实体类型中可存在许多实体,而任一实体可存在许多属性。如果将实体类型认为是一个实体,则实体类型本身可具有属性,例如,特征“营业地址”可认为是实体类型“公司”的一种属性,即所有公司都有营业地址。
同时,任何一个实体可属于若干不同的实体类型,并且任何一种属性可以是一个以上实体类型的属性。例如,考虑既是客户又是供应商的公司。实体类型客户与供应商的实体值两者是相同的,即该公司的实际名称。类似地,客户地址与供应商地址的属性值两者是相同的。然而,供应商与客户的联系名称的属性值很可能是互相不同的。
如果有人试图维护这些复杂的交叉关系,在传统的系统中便会出现困难,在一个实体属于若干不同的实体类型时出现这些困难。这便是,当人们打算避免分开记录各种关系时。且不说数据存储所需的空间,由于在必须更新数据时会产生的困难,存在着强烈的愿望要避免分开存储各关系。最好公用的数据只存储一次。这样便不存在同一数据的不同表项中出现差异的危险。只需要更新一个表项,并且减少了数据项。但是在传统的系统中难以得到这种好处。
考虑另一个简单的例子ABC Limited有十名雇员将“公司”作为实体类型,“ABC Limited”作为实体,“雇员名”作为属性描述,而诸如“Kevin Smith”作为属性值。然而“雇员名”本身可认为是一个实体(它可认为是实体“ABC Limited”的一个子实体)。即,实体(或子实体)“雇员名”可具有“营业电话号码”作为其属性描述。如果分开存储各关系,相同的电话号码存储了十次,每一雇员一次。再者如果电话号码改变了,便存在着电话号码的全部十个实例没有一致地更新的相当大的危险性。当然,最好是将电话号码只存储一次。然而,属性描述“营业电话号码”的属性值实际上是公司与雇员之间的关系的一种属性。如果这一关系断开了,即Kevin Smith停止作为ABC Limited的一名雇员,则显然该属性值(即实际电话号码)不再有效。实体“KevinSmith”完全可能采用一个新值作为属性描述“营业电话号码”,但与ABC Limited的关系断开了,结果,显然该关系的属性(营业电话号码)不再有效。解除关系同时消除了属性。按照这些概念的数据存储是传统的系统所不能达到的。反之,本发明是以按照这种概念的数据存储为基础的。
如上关于“雇员名”的值所指出的,实体可具有子实体。从所描述的认识中应理解,即使由于作为解除了关系(即受ABC Limited雇用)的结果而消除了该属性,同时消除了以前的属性值(即实际号码)“Kevin Smith”很可能保留一个“营业电话号码”。“Kevin Smith”保留带有描述“营业电话号码”的属性这一事实表明“KevinSmith”实际上是作为一个独立的实体考虑的。这一特定的实体原来是实体“ABC Limited”的一个子实体。该子实体“Kevin Smith”将具有带“家庭住址”描述的一种属性。然而“家庭住址”本身可具有一种属性。一个例子可能是带有描述“应纳税值”的一种属性。从而,具有描述“家庭住址”的属性的值本身是作为一个实体考虑的。这里,我们得到“Kevin Smith”作为“ABC Limited”的一个子实体,而“家庭住址”作为“Kevin Smith”的一个子实体。这可认为是实体的两个递降级。在描述的本发明的实施例中,可利用高达109个值来标识独立的实体值。通过递降一级,即考虑第一级子实体,又能利用109个值。如果最高级的实体值各有与之关联的一个独立的子实体级,则能够看出可以存储109×109个值,并且对于实体的各子级依此类推。
通常,人们还必须考虑记录在磁性介质上的物理位置。这很可能是已经采用一个散列例程选定了的,从而对该记录的指针直接与磁性介质上存储该记录的物理位置的地址相关。结果,对传统系统中的记录的存取通常包含磁性介质上的物理位置之间的可观的移动。采用本发明可以避免这一点,最终得到存取与处理时间的改进。
回到实际存储的信息以及实际上与该信息相关的或从其产生的知识的一般性考虑;如果单纯地观察数据库内的一个记录,便没有关于数据的意义的指示。这便是,记录并不存储数据的上下文。在使用本发明的系统中,人们用提出问题来检索存储在一个记录中的数据,对问题的回答利用关键域高效地导航通过这些记录。从而,在检索某一记录时,对该记录的分析或导航已定义了正在考虑的数据的上下文。由于上下文是这样定义的,不需要将它存储在记录本身中。这是严格地与传统的数据存储系统对立的。再者,具有最重大的意义。即,能够改变数据库的任何一个独立部分而无须考虑该系统的其余部分上的潜在后果。这便是,只须保证各独立关系是正确地记录的便能保证整个系统的完整性。这是与传统的系统极端严格对立的。
在传统的系统中,对系统的任何部分的改变必须考虑对该系统的整个其余部分的潜在的后果性影响。通常,这事实上是超出负责了解与充分地处理由系统的一部分的改变所引发的所有后果的人员的现实能力的。至少,这种传统的系统中的改变单纯在维护该系统中便招致巨大的开销。花费在维护系统中的时间与人力当然不能花费在提高生产力上,即在扩充该系统或建立新系统上。
这一特征的一个重要方面便是确认是在数据库内而不是在一个独立的程序内进行的。
从而,很明显,本发明所达到的是将传统上在计算机程序中编码的规则与过程真正地作为所存储的数据本身的一部分有效地存储。同时,数据的上下文不是作为该数据的部分存储的,它是从数据检索过程本身产生的。
这便是,在数据检索实践中存在着内在的知识。但是,这些知识的出现,或者作为最低限度它们的使用,是以前未曾认识的。再者,使用这些知识的潜力以便建立一个不需要在维护作为整体的系统的完整性中花费大量人力的一个系统,是以前未曾认识的。
到达一个记录所取的路径可认为是导航通过所存储的数据。下面说明用来实现导航的机制。
在本发明的系统中,简单地保持到达一个记录所取的路径的一个记录,便能“反向”导航通过数据库。这一能力是通常所希望的。通常在传统的系统中没有这种能力,而在存在时则包含要应用非常复杂的规则与过程。
在传统的计算中,人们建立一个原型来论证与/或证明所提出的应用。随后,必须在整个工作系统之前编码该原型。通常,编码阶段是最费时与容易出错的。利用本发明,能够在“活的”系统上建立原型(因为对系统的其余部分的完整性没有潜在的后果),并且该原型立即是所要的应用的最终活版本。
这些考虑连同上述的关于记录位置的长处(在ABCLimited雇员电话号码的例子中),与传统的计算技术相比,在效率上得到显著的改进。改进了数据检索的存取时间。极大地改进了应用开发时间,并且在传统系统的维护开销与本发明的系统的几乎完全不存在维护开销之间不存在可以比较之处。
本发明还产生其它优点。这些优点之一便是整个系统只受一个非常小的“核心”程序控制。整个核心程序能保存在传统的计算硬件的处理存储器中(即使有许多用户及使用虚拟的,即页式硬件系统)。现在描述的实施例是在IBM AS400机上实现的。
本发明产生的另一优点涉及该核心程序的更新。如果任何时候考虑要更新核心程序时,多半是使关于以一定记录类型存储的数据能够进行某种新形式的处理,能够非常方便地实现更新的核心程序。在一般情况中,不需要经常更新核心程序。然而,一旦需要更新,可以在不改动应用规则及过程下进行。这是可能的,因为传统上被认为是“应用程序”的是不作为“程序”对待的。它们并不构成核心程序的一部分或者以任何方式改变核心程序。如上所述,传统的应用程序的等价物,按照本发明实际上是作为数据本身的一部分存储的与/或部分地作为包含在检索数据的上下文或导航中的一部分内在地存储的。
极大地避免了文档问题,因为实际上不存在传统意义上的程序。从而,与传统的系统相比,实际上不需要文档。
本发明的系统能够实现逆关系的定义。这是本发明的一种特别有利的特征。
这里所描述的本发明的实施例主要包含一个单一数据库文件,该文件中存储有各种类型的记录。记录具有固定的长度,并且具有一个固定长度的、相对短的关键域。数据通常以存在于数据之间的关系的形式存储。与传统的程序概念观点和使用截然不同,数据处理是利用存储在数据库中的记录完成的。减少了传统配置中固有的严重缺点并能得到其它效益。
对于关键域后面的固定长度记录的其余部分,按照本发明的,存储在数据库内的记录可具有许多不同的数据结构。在一个特定类型的记录内可存在不同的结构。从而,便于按照它们的功能来考虑记录。以下是功能上不同的记录类型关系记录、简单数据记录、选择性记录、菜单记录、代用记录(surrogate record)及事务记录。
虽然功能不同,由于它们都具有相同的固定长度且都具有相同的关键域结构,所以所有这些记录类型可以存储在一个公用的数据库中。
如上所述,数据通常是以关系的形式存储的,并且对应的记录在此称作关系记录。有时存在着要存储的独立数据,而为这一目的使用简单数据记录。选择性记录是给于用来控制数据处理的记录的名字。选择要进行的不同操作是用所谓菜单记录进行的,所谓代用记录是用来存储交叉参照信息的记录。事条记录是用来实现独立检查跟踪的。这一检查跟踪不是系统所存储的用户数据的内在的部分。所有这些类型的记录是存储在同一数据库中的并且它们都具有相同的基本结构。下面描述不同类型的记录的形成与使用。然而首先给出公用记录格式,特别是关键域的说明。
简单地说,用在本发明的这一实施例中记录长度为128字节。其中,28个字节用来构成关键域。关键域可认为是由各长度为四个字节的七个域构成的,各四字节域由作为一个四字节整数存储的九个十进制位构成。如上所述,关键域由数字构成;即它是纯数字的。然而,在大多数实际计算使用中将需要标识字母型或字母数字型数据。在本发明的实施例中,对于字母型或字母数字型与数字值之间的至少大部分翻译,采用了一个独立的查找表。这便是本发明的许多优点从中产生的关键域的不同部分的特殊结构与意义。
上面提到的查找表可认为是,并且在此后称作字典。关键域的各部分的结构和意义与系统用关系的形式存储数据这一事实相关。
从建立一个字典开始已完成了本发明的一种实现。该字典是通过将大量英语及其它基于阿拉伯字符的语言的常用字及专用名输入一个传统的计算机数据库而建立的。将一个数字分配给名字,该数字是与传统数据库中的字相关联存储的。已决定用8个十进制位来记录数字,设定字的最大数目为108个。在分配数字给初始输入的字时,这些字是按字母表序列排列的,并选择了在整个0至108的范围上大致上均匀的数字分布。
在随后的系统开发与操作中,将进入该系统的每一个字加在字典上,当然是如果该字尚未出现在字典中。
在构成要存储的数据项的关键域或索引时,便使用与名字相关联的数字值。
本发明的一个突出特征是采用一个固定长度的关键域,对于用户它可呈现为可变长度的,已决定所生成长度为128个字节的固定长度记录的本发明的一种实现方式。前面28个字节构成该记录的关键域(或索引)。然而,本发明也能用可变长度记录实现。
以下述方式在本发明的这一实施例中完成固定长度的关键域-以数字形式在关键域中存储数据,-使用字典,-在信息上应用数据缩减来构成关键域,以及-通过确定要使用的数据来构成关键域。
采取了这些步骤之后,本创造性概念便能实现进一步的独一无二特征。
现在返回到如何达到这种存储的实践细节,把注意力集中在附图中的图1至3上。回忆一下各记录的长度为128字节,而记录的关键域使用前28个字节。关键域包含标识实体类型、实体属性的数据,实体类型、实体与属性中每一种的实际值是作为一个单独的128字节记录存储的。一个记录的28字节关键域是通过将存储的数据的实体类型、实体与属性的数字值的连接而构成的。各数字值为4个字节长,且由9个十进制位构成。每4个字节能具有2×109个不同的值(允许正与负值)。因此显然选择各9个十进制位4个字节来标识实体类型(同样用于实体及同样用于属性)将满足该系统的全部的应用。实体类型、实体及属性中每一种的数字值是用字典获得的(字典用于构成实际相关记录的关键域)。
在关键域中,分配22个十进制位用来存储正在记录的项的字母数字型(自然语言)描述。这一描述是以数字形式存储的,借此达到同一个固定长度的存储域来存储呈现为可变长度的数据项。图2与3表示用于这一目的的22个十进制位。在本实施例中,决定前五个“字”已足以记录任何项的字母数字描述。作出这一选择并分配了22个十进制位用来存储它们,以下述方式将两者结合在一起顺序地缩减该描述的前五个字的意义。回忆一下,用8个十进制位来唯一地定义字典中的字,对五个字中的每一个所存储的十进制位的个数为第一个字8位(即全部存储)第二个字5位第三个字4位第四个字3位第五个字2位合计22位这便是,数据压缩得到仅仅唯一地标识第一个字的一个存储值;字典中一个以上的字与第二至第五个字解压缩值匹配的可能性逐渐增加。然而,对于根据存储在数据库中的记录的诸如字母数字分类的关键域的功能,所得到的正确结果往往是足够的,可以接受作为一种系统制约。
该系统能够存储2×106实体类型,每一实体类型2×109个实体,及每一实体2×109属性。
各记录的关键域或索引便是这样根据从下述连接的数字值构成的一个唯一的数的实体类型+实体+属性+描述4字节+4字节+4字节+22位本发明的一个特别重要的增强方面产生于只考虑实体类型与属性描述相连接而成的数字值便能得到一个唯一的数这一创见性认识。
即 实体类型数+属性描述数4字节+4字节得出一个唯一的数。这一唯一的数定义该代用数的目的与上下文,但并不定义该代用数本身。此后说明代用数。
附图中的图1至4示出按照本发明的上述实施例构成的记录的例子。这些图示出长度各为4字节的各种记录域。在图4a与4b中示出了最多12个这种域,为了便于参照,将域标记为A至L。域A至G构成关键域,即记录的前28个字节。对于关系记录,域H至L为记录的最后20个字节。对于关键域后面的记录的其余部分,其它类型的记录通常具有不同的数据结构。在每一个域内部,单个的位将依次地称作1至9。这样,记录的第一位称作A1,而记录的最后一位称作L9。这一命名法纯粹是为了参照方便,在本发明的实施例中并无意义。
图1示出按照本发明的实施例的一个关系记录的128字节记录是如何由一个28字节关键域、15字节公用数据及85字节用户数据构成的。
图2示出28字节关键域是如何由各长四个字节的七个域构成的。第一个域包含实体类型数。第二个域包含一个版本号。第三与第四个域分别包含实体数与属性数。域E、F与G包含数字形式的不同类型数据。每一个四字节的域由9个十进制位构成。
域A不止包含实体类型数,具体地说,位A1、A8与A9具有特殊意义。
位A1具有值“0”、“3”、“5”或“8”。值“0”表示该记录包含数据。值“3”表示该记录定义菜单。然而,菜单只是数据的一种特定形式。本发明的实施例中所使用的另一种记录类型为选择性记录(Option record)。选择性记录是用于过程控制的。一个选择性记录能控制其它记录的处理,它们是诸如简单数据、菜单记录或其它选择性记录。为了得到一个选择性记录的位A1的值,将“5”加在表示数据或菜单的值上。从而,位A1中的值“8”表示用于控制菜单处理的一个选择性记录。
前面已指出,域A中包含实体类型以外的数据。详细地说,实体类型数只包括六个十进制位,它们是位A2至A7(含A2与A7),位A8可具有值“0”或“9”。值“0”表示一个实体标识符,而值“9”则表示实体类型内的属性描述与/或属性值,即子实体。
位A9用于表示域E、F及G的第一部分中的标识符的类型。位A9可具有值“0”、“1”、“2”、“3”、“4”、“5”、“7”与“8”中任何一个。不同的值的意义如下0-名称5-不带段标题的正文1-号码6-不用
2-日期 7-未压缩的8字符id3-同义词8-未压缩的10字符id4-带段标题的正文9-不用值“0”表示实体类型标识符,即初始菜单与实体记录。这一值不用于第二级菜单或实体记录。
存储在域B中的版本号包含该数据是公用的还是私有的指示。按照这一设定值,例如,不同的操作员(operator)可以检索一个记录的“同一个域”的不同的值。它也用在多语种应用中,即以不同的语言存储相同的数据。
如上所述,域B存储记录的版本号。如果域B中所存储的值(认为全部9位集体表示一个正常的十进制数)小于000010000,则整个记录的内容对公共存取公开。如果域B中的值大于或等于000010000,则整个记录的内容限制在由域B中存储的值所标识的用户组的成员。从而,可以存储一个记录的99999个版本供不同的用户组存取。
私有数据的概念能以各种方式利用。当人们认为所存储的用户数据的一个用户视图是由多个(但可变数目的)固定长度记录构成,从而用户记录具有可变长度时,这一点具有特殊的优点。可将域B的内容设置为使之表示该记录包含私有的信用控制信息。只有具有适当的用户组的成员资格的人(并具有适当安全级许可证)能够存取包含在该记录中的数据。在关于规则与过程(即等价于传统的程序)的存储中也可以使用公用与私有数据之间的区别。当记录中的一部分数据是供公众使用的而一部分数据是只供私人存取时,这是有意义的。作为域B的使用的一个例子,一个供与该系统一起使用的商业上制备的“应用程序”可将域B的内容设定为表示公用数据。用户可能制备来补充该应用程序的任何扩展可作为私有数据存储。从而,能够安全地实现该应用程序的任何随后的版本,只改写该应用程序中标志为公用数据的部分。用户定义的扩展将不被更新过程所改写,而在传统的系统中则是通常会被改写的。区分私有与公用数据的域B的潜在使用的另一个例子为利用这一区别来标识存储在该记录中的“私有”求助文本。这便是,能够非常容易地实现一个设计成满足特定用户或用户组的求助系统。
如上所述,域C与D分别包含实体数与属性描述数。代用是一种记录类型数。对于一个代用记录,域C的值永远为0,如图4B中所示的记录的情况。这一实现产生于实体类型数与属性数的连接提供一个唯一的数这一认识。为了导航通过数据库,这一唯一的数是与代用数一起使用的,有如下面所说明的。
虽然所有记录都是存储在一个单一的文件中的,可认为关键域是用来标识该文件内的不同数据表的,当然还标识唯一的记录。在这一意义上,可认为域A、B、C与D标识一个特定的表,而域E、F与G则标识表内的记录。事实上,由域E、F与G构成的记录标识符是加上位A9前缀的,A9为该记录标识符的实际部分。
图3示出域E与F连同域G的前四位如何典型地用于存储由某些字母数字型信息的数据压缩构成的22个十进制位的。位G5用作能够区别复制的后缀。位G6、G7与G8用作一个第二后缀。这一记录后缀使得能够以相同的关系类型简单地存储相同记录之间的多种关系。通常设定为省缺值的位G9被设定为值“9”。如果位A9具有值“0”,则域E、F与G(前4位)可包含允许复制的一个压缩的名或一个18位未压缩的数,或者不允许复制的一个22位数。这些不同的可能性是由选择性记录决定的。如果位A9具有值“1”,则域E、F与G(前4位)可在E中存储一个9位数或如上所述的一个18或22位数。从而,如果该记录(从用户观点)能够用数来标识,A9设定为“0”的一个记录将在域E、F与G中包含一个压缩的名。A9设定为“1”的一个记录将包含一个数(18、19或22位)。如果一个记录由一个9位数与一个18位数两者标识,则位A9将设定为“0”且域E、F与G(第一部分)将包含18位。
域E、F与G的前4位只包含前面描述的22位压缩的字母数字型数据,如果记录id是“名”(name),即如果位A9具有值“0”。
一个选择性记录的域E永远为“0”。
与域E一样,域F的内容取决于由位A9控制的记录类型。如果位A9为“0”,则域E与F包含该22位压缩名的前18位。如果位A9具有值“1”,则在域E中存储建立该记录的日期并在域F中存储建立该记录的时间。如果位A9的值为“7”,则域E中存储未压缩的8字符id的前4个字符而域F中则存储后4个字符。
如果一个特定的记录是用数字标识的(位A9=1),则除非域E与G的前面部分包含一个允许复制的18位名或一个22位名,否则域G的前4位为“0”。如果记录是用名标识的,则域G的前4位为该22位压缩的名的最后4位。如果位A9具有值“7”,则域G的前4位将为“0”。如果位A9具有值“8”,则域G的4个字节中的前2个字节为未压缩的名的最后两个字节。
8个字符的未压缩的名与10个字符的未压缩的名之间的差别在于使用8个字符允许存在复制品而采用10个字符禁止存在复制品。但是,复制关系能够用位G6至G8建立。在用来实现本发明的上述实施例的特定计算机(IBMAS400)上,许多目标是用10个字符的名来标识的。
位G5的值通常具有值“1”,但也能用作一个后缀以便允许存在复制品;在采用一个未压缩的8字符ID时,位A9具有值“7”。然而如果所采用的是10字符未压缩ID,则在存储该未压缩的名中,位G5是用作该域的前两个字节部分以存储该未压缩的名的后两个字节。
位G6-G8(含G6与G8)以另一种后缀的方式用来允许相同的两个记录之间的相同类型的多种关系的存储。然而,必要时,位G9能用作一个第三后缀,用于在记录中存储额外的数据。在所描述的实施例中,并未使用第三后缀而位G9已设定为省缺值“9”。
各记录是一种属性的一次重复,即包含一个属性值,它可能跨越若干个域,如果它不是一个关系,最多可利用85个字节。如果它是一个关系,可利用65个字节,另外,加上交叉参照域。位G9可有效地用来扩充在一种属性的一次重复中所能存储的数据量。由于在一个记录中存储了一个交叉参照,该记录中将值“9”赋予了位G9,在对应的记录中便没有必要将位G9设定为值“8”。利用位G5至G8,4×85字节加65字节可用于一个记录的一次重复。
本发明所描述的实施例的进一步增强可利用G9的值“0”至“4”(含“0”与“4”)作为记录上的“标记”或“废弃(overrides)”。这些设施的详细的潜在用途在这里不作详细描述。
在本发明的实现的实施例中,核心程序读取一个给定的关键域的所有记录,即这包括在0至9(含0与9)范围内的位G9的所有的值的一次搜索。从而,所有记录一次定位,即使通常只有一个(G9=“9”)。这改进了处理时间。
下面是基本实体数据的项的一个例子。考虑一个电话号码的存储。将位A9设定为值“0”并且存储在域E、F与G的前面部分中的22位包含“电话号码”,如果有必要复制,则带有供允许复制的后缀用的空间。这是用于实体本身而不是一个子级的项。实体数与属性数两者均为0。即域C与D均为0。
对于关系记录,各记录的用户数据部分存储作为交叉参照的任何相关记录的关键域部分诸如包含与之存在着一个关系的数据的记录。该相关记录的关键的其余部分能从存取过具有该交叉参照的记录的上下文中确定。注意图4a与4b。交叉参照数据是存储在域I、J、K与L中的。域I包含该相关记录的域A的一份拷贝。
域A至G永远是关键域,除了代用记录以外域H至L用于存储交叉参照,在代用记录中域H包含相关记录的代用数。在只记录了一个记录时,例如当存储的是“高度”的实际值而不是存储一个关系时,域H至L(含H与L)用于存储用户数据。否则,域H包含直接与讨论中的记录相关的任何记录的代用品。即图4中所示的两个记录的域H的内容是相同的。可以看出,包含在两个记录的域H中的值实际上是这两个记录中的第一个的实体数(即域C的内容)。
域I至L的内容取决于所存储的是否是一个关系的细节。如果所存储的数据不涉及一个关系,但同时正在记录一个以上的记录,则域I的内容与正在同时写入的另一个记录的域A的内容相同。在这些环境中,域J、K与L的内容分别与另一记录的域J、K与L的内容相同。
域I、J、K与L包含交叉参照;除非该记录为一个代用记录或者此时只记录一个记录。在后面的两种情况中,域I至L包含一部分用户数据。在代用记录的情况中在一个关系中,存储两个记录的代用数。在记录了一个第四记录时,一个代用记录的域J至L包含所写入的第四记录的关键域的一部分(即E至G)。关系记录考虑ABC Ltd的电话号码的存储。为了存储这一信息,在盘上写入三个记录。这三个记录是(1)一个代用记录、(2)电话号码的用户、(3)用户的电话号码。记录2与3实际上是互逆的。
首先写入代用记录。将位A8的值设定为“9”,这将该记录标识为一个代用记录。将实体数写入域C中并将属性数写入域D中。从而,能够构成关键域。
域A的值是已知的。在系统级上选择企业或电话号码作为最基本的(即借助它写入代用记录),这一选择是由一个选择性记录控制的。在本例中域A的值标识实体类型客户。
域B为版本号,它简单地记录该数据是公用的还是私人存取的,或者是一种或另一种语言。
域C为零。
域D存储按照菜单选择的属性描述的压缩形式,即属性描述的代用品,诸如用于讲话的电话号码。这便是,域D的内容实际上是属性的代用数。
域E的内容是正在建立的关系的代用数。
代用数是以下述方式确定的。首先,准备一个抽象的记录关键域,其中将值“9”赋予所有的位E1至E9(含E1与E9)。然后试图在数据库内定位指针。向后读取一个记录来定位这一实体类型与属性组合的上一个代用记录。在域E的值上加“1”,如果不存在前面的代用品,该值将是“1”。这便给出域E的新值,即在写入当前正在准备的记录时所使用的代用数。
域F的值永远是零。
域G的内容与正常实体记录的情况相同。在本发明所描述的实现的情况中,一个代用记录的域G的值为000010019,因为复制代用品是排除在外的。
域A、B与D的连接所提供的数是唯一的。从而,域A、B、D与E的连接所提供的数是唯一的。说明这一点特别重要,代用数只与它所作用的上下文相关。域A、B与D的内容定义该上下文。这便是,关键项包含域A、B、D与代用数(域E)。从而,本发明的实现不受一个9位的代用数的限制。
域H至L包含两个相关的记录的代用数,如果这两个记录中的一个或两个是用代用品标识的话。通常,域H至L不用于这一目的,除非同时写入的是四个记录而不是三个。通常只写入三个记录。但是在各种时间上写入四个记录,例如为了制备菜单。在这一情况中,四个记录是代用记录、属性值记录、属性内的序列号、其中出现属性的菜单名。要写入的第二记录(关系性记录)这里所描述的第二与第三记录实际上可以互相交换而没有任何明显的影响。
域A包含实体类型数(电话号码)。
域B包含版本号。
域C包含实体数,这是实际电话号码的代用品。写入该记录时,确定代用品,然后将其用作标识符。
域D包含属性数。即“用来讲话的电话号码”,这是属性描述的代用品。
按照前一段,要指出,记录过程比这里描述的要复杂得多。对于新的实体或用名标识的独立数据,它包含用字典来交叉检验以及有可能写入新的记录到字典中。
域E、F与G的前一半用于存储压缩的名(即ABCLtd)。域G的后一半用于后缀信息,如上所述。
域H为代用数,它与代用记录的域E的内容相同,从而,域H的值与所有相关记录中的相同(除代用记录外,由于没有必要在该记录内存储该数两次)。
域I具有与相关(即第三)记录的域A相同的值。即带有其前缀与后缀的实体数。
域E的位E6至E9(含E6与E9)设定为等于相关(即第三)记录的位G6至G9。这便是后缀。从而,能够识别是否存在任何复制品。其目的是当存在复制品时知道其关键项。
位E2至E5(含E2与E5)如果不为零则包含相关记录的版本号。这能够确定相关记录的域B的值。即用户组数。(实际上,用户组数通常是域B的实际值)。
位E2至E5(含E2与E5)可全部为“0”,在这一情况中,域B中的值为用户组数,如果位E2至E5中任何一个具有非零值,则位E2至E5包含相关记录的域B的值。这便是,相关记录的位B6至B9(含B6与B9)分别等于位E2至E5的值,而位B1至B5含B1与B5)的值为零。关系的第三记录第三记录以第二记录相同的方式写入,但是反方向的。
从第二与第三记录中可以看出,能够标识代用记录,但在交叉参照中只有相关记录的部分关键项。然而由于上下文,便有可能确定第二(相关)记录的完整关键项。
为了达到这一点,不能利用代用品,因为第二记录的域E、F与域G的前一半未曾记录在交叉参照中(第三记录的域I至L)。
但是,已经通过相关记录的实体记录到达或标识了第三记录(或高级属性值代用品),而实体记录中包含丢失的信息。核心程序中的一个数组中记录实体记录的域E、F与域G的前面部分的内容。核心程序保持高达99级的全部历史过程(使用这一数据代用品)。这便能在系统内进行回溯。采用一个暂时存储文件能跟踪99级以上。
域A至G使用28个字节。另外65个字节用于用户数据(由于我们考虑的是一个关系的存储)。通常,15个字节分配给公用数据(其中包含一个事务数,不利用AS400相对记录号设施)。域H的4个字节包含代用品数。包含交叉参照信息的其余16个字节是存储在域I至L中的。
所描述的配置的优点在于,如果ABC Ltd.改变了其名称,第三记录的关键将不改变电话号码。当然第二记录是要改变的。
从而,本发明的系统提供多级数据记录,这与必须删除所有子级并重新输入所有相关数据的系统不同。在本发明中,有可能简单地“移动”不再有效的子级;并且所有下面的级也“自动地”移动;因为代用数并不改变。属性值从一种实体类型与属性描述移动到另一种。反之,如果不再有效的子级是要重写而不是“移动”,则代用数将会改变。
如果正在改变从实体类型数、属性数及版本号的连接所构成的整个值,上一段中所描述的配置便不能工作;因为可能已经用该唯一的数发布了所使用的代用数。
本发明所达到的性能增益是该系统在任何一个时间只读取非常少的记录。这对于用户效率是非常有利的。总的说来,该系统与大多数传统的系统相反,只使用简单的小步骤,在传统的系统中要执行的处理步骤的数目能花用充分长的时间而使用户不能集中注意力。就虚拟系统计算机硬件而言,本发明使用非常少的分页。选择性记录传统上以计算机程序编码的规则与过程在本发明中是与数据一起存储的。这已经利用记录方便地实现,这些记录中的关键域中的4字节实体类型数是留出空白的。为了便于引用,这些记录可称作选择性记录。选择性记录可用来调整数据检索的路径。这便是,一个选择性记录的内容能用于响应一个特定的输入来确定存取哪些记录。这可用来在系统内实现“相对”安全性。“相对”一词在这里并不意味任何对安全性的潜在损害,事实上恰恰相反。相对安全性是经常想要的,但在传统的系统中很少达到。它是将不同的安全级分解,尤其是动态地分配给系统的单个用户的能力。这可以是按照正在使用的应用变化的一种安全级。当然,在选择性记录中分配一位能为任何特定的功能分配10种安全级。存储了许多安全码来控制许多不同功能的安全性。
选择性记录用来定义用在一个特定的表中的有效记录标识符。选择性记录用来确定显示数据的方式。选择性记录用来控制分配代用数。选择性记录用来控制作用在相继的记录之间的间隔数。即,代用记录的间隔设定为“1”,而正文的段标题或短名的间隔设定为“10000”。
正文是用代用品标识的,然后用文档中的段标题序列数或段数,然后用前五个字。正文是一种记录类型(结构)而不是功能。正文是存储在其初始输入时分配的代用数所标识的序列中的。结果,能够改变序列数或字,同时保持该正文的唯一标识。
应指出,正文是集成在数据库中的而不是独立处理的。
参照数可用来为批处理设定优先级。
所有这些类型的设施都是由选择性记录控制的。一个选择性记录的关键域可以为实体类型、实体与属性设定一省缺值。其目的为减少所需的选择性记录的数目。然而地址的选择性记录具有为实体类型设定的一省缺值,但对于属性则是特异的。
一个菜单记录用于指定要使用的是哪一省缺值及哪些选择性记录。
位A1的值加上“5”标识该选择性记录是与数据还是与菜单有关。
位A2至A7(含A2与A7)存储实体类型数,但其省缺设定值为零。
在本发明所描述的实现中不使用位A8,因此将其设定为“0”或“9”。这永远与使用它的数据记录中的相同。
位A9设定为值“1”,因为该记录是用一个选择性数标识的。
域B包含版本号。它可以是零,并且是由一个选择性记录确定的。虽然是一种通用设施,私有与公用数据之间的区别对于选择性记录特别有用,由于它能为不同的用户编码不同的规则(例如在一张电子表格的一个单一“单元”内)。这一设施也能用来标识一个选择性记录的一个用户版本,并且如果找到这一用户版本,便用它来取代其公用版本。
域C包含实体数,对于一个选择性记录,它通常为零。
域D包含属性数。对于一个选择性记录,域D的值为零,除非该表需要特殊的特征,在这一情况中,它们通常涉及一种特定的属性。例如,地址的选择性记录内用邮政编码标识的地址。
域E与F的值都是零。
域G包含选择性记录的号码,利用位G1至G5(含G1与G5)。在本发明的所描述的实现中不允许复制选择性记录,从而G6至8分配相应的值“001”。位G9分配值“9”。
选择性记录不包含交叉参照域。从而,可以得到85个字节来存储用户数据。通过写入一个第二记录可将其扩充到170个字节,在第二记录中位G9的值设定为“8”而不是“9”。从而,这是不需要重构整个数据库便能作出显著改变的一个例子。
选择性记录能与特定的应用相关联。对于这种使用,将一个应用数作为关键域的一部分方便地存储在域C中。
可以认为选择性记录是一个过滤器,它控制着对该选择性记录所作用的表的存取。选择性记录的使用。
选择性记录可以只用于限制对视图的存取,即排除编辑。从而,如果要求安全性存取来实现地址改变,则要提供另一个选择性记录来使这一功能得以实施。
选择性记录可用来标识一个出口程序。此外,选择性记录能利用出口程序控制本发明的系统读取不是用本发明的系统记录的数据文件。
选择性记录可用来实现对用户安全级的动态改变。
在各记录的公用数据区内分配了三个字符作为记录标识符。这三个字符中的每一个可分配A至N或“0”至9(含A、V、0与9)范围内的一个字符或一定的特殊字符。这便是容许的标识符的总数为403个。然而,这并不限制标识符的总数在六万四千种记录类型上因为标识符与记录的特定结构相关,比如名。这些是记录类型,即属性值类型。在标题实体下的标识符总数是6万4千个。类似地,在标题属性下的可能表项的总数是6万4千个,其中每一个可重复十亿次。
在增加新记录时,选择性记录定义三个字符记录类型码。
通常,检索的是一个完整的表。这便是,检索所有记录(服从安全性)而不只是由一个选择性记录所定义的相同记录类型的记录。
对于数据库内的一个单一的表可存在许多选择性记录。从而,在一个单一的表中允许不同的记录类型。
在一个选择性记录内,有一个字节控制存储在使用该选择性记录加在数据库中的记录中的名的长度。从而,尽管传统上改变或允许使用一个25个字符名长度比24个字符名长度的开销高得多;利用本发明,只须在将数据写到盘上时使用一个不同的选择性记录即可。名长度是写入的记录的公用数据区的一部分。
选择性记录也可用于实现提交控制。这一方面,选择性记录能用于设置事务界限。具体地,一个选择性记录可存储提交控制的开始序列而另一个选择性记录可控制提交控制过程的完成。在传统的配置中,如果不仔细考虑插入点两侧上的提交控制过程步骤上的后果,便不可能在一个提交控制过程内插入额外步骤。然而,利用本发明的配置能够避免考虑这些后果。
选择性记录用于控制要同时检索的记录的数目。选择性记录内的一个字符用于这一目的,从而很容易地在0至9(含0与9)的范围内控制要显示的记录的数目,其中0可以是高的而不是低的。
选择性记录可用于控制段标题与段正文。即,它们可用于显示长的或短的名(任何长度或256个字符)。
选择性记录可用于定义是否将出现一个长名。
一般地讲,显示器屏幕上的一行相当于一个记录。在这一配置中,一个长名是每记录一行而名可以是一万行长。
选择性记录可用来控制处理,例如在拒绝对要求的信息的存取时向用户提示一条消息。类似地,选择性记录用于控制处理流程。例如使用户返回到一张菜单或返回到主相关实体记录。
能够用选择性记录达到的处理控制是极为灵活的。例如,这样的选择性记录实现起来非常直观,在输入一个电话号码时该记录标识该电话号码的拥有者,将处理切换到一张菜单,以便选择该拥有者的其它属性供调查。
一个选择性记录可包含用来存取另一个表的下一个选择性记录的号码。
菜单记录也包含选择性记录号码。将这一号码加在正在使用的选择性记录中的数上便得出处理中所使用的实际数。
事务处理可用来实现布尔逻辑。例如,考虑包括5项的一个表。如果显示控制字符设定为值“1”,处理便搜索一个单一的记录。这时,控制事务处理的选择性记录便规定找到或找不到该记录时要采取什么行动。从而,能够设置选择性记录作为数据库内的决策者。
作为一个例子考虑在一个定货系统中的价格更新。想要实现依赖时间的定价。这能够利用加上日期与时间标记的关键域来实现,即将域E设定为日期并将域F设定为时间。日期的第9位用来检验日期是否正确地存储。域F的第一位用来检验时间记录的准确性。将选择性记录设置成向后读取该表直到定位了与当前日期与时间比较时具有有效的关键域的一个记录为止。使用本系统,能够在输入一个新的价格时容易地实现价格期限。即在时间上向后读取,有效地找出以交易的日期以前最近的日期与时间记录的价格。这是与传统的系统相反的,在传统的系统中通常给定该价格一个有效日期范围(从一个日期到另一个日期)。这种系统的困难之处在于如果交易日期越出了记录在数据库中的价格的日期范围应施行什么处理。然而,在按照本发明的实现中,的确需要编码一个期满日期,因为每当输入一个新的价格时原来的价格便立即变成多余与无效的了。所有以后的交易便立即在该新的价格上进行。同样,能够“编码”折扣、市场区域等。
需要指出的重要事情是所有这些“处理”都是在数据库自身内部编码和进行的。处理既不存储在传统意义上的“程序”中,也不受其控制。例如,只是写入一个额外的记录到数据库中指明实行何种新的折扣而已。这避免了传统的系统中的主要缺点之一,在传统的系统中通常需要建立一个复制的数据库(编码新的价格),导致将数据库的两个拷贝维护成互相一致的困难,直到复制品取代原来的数据库而使价格改变生效为止。
选择性记录用于以类似于错误捕捉的方式控制处理。这便是,在响应一个用户查询没有找到记录或找到一个以上的记录时系统的应答是受一个选择性记录控制的。进一步的处理也能受选择性记录控制。例如,如果响应一个查询未检索到所选择的数据项,选择性记录可提供用户实际上将该数据增加到数据库中的选择余地。类似地,能将选择性记录设定为在检索到了一个所请求的数据项时自动地前进到或者不前进到下一处理阶段。例如,如果输入一个地址,通知用户实际上已在数据库内定位了该地址可能并无多大用处。进行到处理的下一阶段检索出相关的姓名并将其提交给用户用于检验可能更有用处。事实上,与菜单一起使用选择性记录这一概念引导到建立过程的概念。取决于正在独立地完成的各步骤的需求,过程执行若干顺序的处理步骤。这可以认为是“一个项”的菜单的一种形式,它们具有在它们的每一个之间自动前进的能力。
公用数据区格式与其它记录相同。
如上所述,在选择性记录内,一位控制显示或存取的记录的数目。如果该位具有值“1”且该选择性记录指定自动前进,这时该选择性记录便变成了一个过程。
过程可用来强加数据录入。例如,如果正在使用每次存取一个记录的一个菜单,便可用一个选择性记录来检验所指定的记录是否存在,如果没有定位,它便促使输入该值。
省缺选择性记录中将与实体类型、实体及属性相关的各域的值设定为零。然而,有可能实现不同级上的省缺,在这一情况中,这些域内的值可以不全为零。例如,如果属性不是空白的,则属性数不是零。
域L包含选择性记录号。菜单为了存取本发明的数据库中的记录,必须指定实体类型数与属性数。所进行的实际处理通常涉及使用一个选择性记录,它包括使用由菜单记录存取的一个选择性记录号。菜单记录也能编码成指示该选择是否作为在实体或属性级上的一种省缺值。选择性记录的位A1具有值“5”或更高。这便是,为了形成一个选择性记录,将“5”加在正在由选择性记录存取或控制的记录的类型的位A1的值上。记录类型码,上面提到的三个字符记录类型码,以字母“F”起始。这三个字符记录类型码是数据库内的各记录内的公用数据的一部分。作为该码的第一字符的字母“F”指示要使用的是哪一种数据结构。
对于与应用相关的菜单记录,域C的值为应用号。对于一个与应用无关的菜单,域C的值为零。对应的选择性记录确定菜单记录应具有哪种类型。
菜单记录由位A1具有值“2”或“3”来标识。值“2”表示菜单记录是用于控制到达当前位置的路径的,而值“3”则表示菜单是用于在选择或找到一个记录后控制路径的。
除了位A1的值以外,菜单记录的关键域是与前面对其它记录类型一般性的描述的相同方式构成的。例如,菜单名是作为实体类型编码的。
菜单记录的公用数据区具有与任何正常记录类型相同的格式。
位于记录的公用数据区中的三个字符记录类型码具有这样一种格式,其中第一字符是出口程序名的一部分。例如,关于出口程序,三个字符的记录类型码的第一字符与程序名的第四字符相同。利用这种命名法,所有出口程序都具有第一字符为E的一个名(表示Erros,给予本发明的系统的名称),后面跟随着两个字符的版本号。从而,如果想要增加一种不同记录数据结构,不需要改变核心程序的主体,只要附加一个出口程序或输入一个现有的出口程序即可。事务概要为各个事务写入一个事务记录。事务记录的实体类型数设定为零。因为它是一个数据记录,位A1具有值“0”。位A8为“0”。因为它是一个数字,位A9具有值“1”。
事务数是通过将域D的所有位设定为值“9”,然后向后读取直到定位了上一个事务数为止而生成的。然后在上一个事务数上加上值“1”,从而形成新的事务数。这一过程与上面关于代用数的生成的描述相同。
通常,一个事务记录可存储诸如用户号、公司、部门、日期与时间、应用号等细节。事务概要的使用能够容易地实现一个“取消”设施。导航与浏览设施人们可浏览或航行通过数据库,在实体类型、实体与属性之间移动。利用关键域,尤其是属性的域I至L,人们能标识实体类型与标识符。存储在域I中的值标识实体类型。这便是,它标识相关记录的域A的值,与该属性的交叉参照域中具有值“9”相比,只是在相关记录中位A8设定为“0”。相关记录的版本号能从位I2至I5的观察中确定。如果所有这些位具有值“0”,则相关记录的域B包含用户号。然而,如果位E2至E5不全为零,则相关记录的位B1至B5为零,而位B6至B9分别具有位E2至E5的值。
从而,确定了相关记录的域A与B的值。
相关记录的实体数与属性数,即域C与D之值,为零。这便是这样,因为正在考虑的是数据树的起始点(或顶)。
通常,在属性记录与相关记录之间域E与F的值保持不变。然而,域J的最后4位给出相关记录的域G的最后4位,尽管这通常意味着没有改变。
从而,相关记录的整个关键域已从上下文中构成。再者,这种构成一个相关记录的关键域的过程能用在向前或向后的方向中。
只利用属性便能得到更多的信息。例如,考虑“消息”与“接收的消息”之间的差别,前者简单地列出所有消息,而后者只列出发送给讨论中的特定用户的那些消息。上下文作为一个特定查询的结果,只能存取一个特定的上下文中的数据。从而,在观察一个特定记录的内容时,便知道了存储在该记录中的信息的上下文。再者,信息永远不会超出上下文。应用结构一个应用可认为是对整个数据库的一个过滤器。例如,人们可能希望将数据库的一个子集分配给发票处理。一个应用允许访问与发票处理相关的记录、过程等。
应用是一种实体类型。这在附图中的图5a与5b中所示的语义网络中示出。
一个菜单过滤一个应用中的各实体类型所能得到的属性。从而,只需要存储属性一次。
如果想要访问所有属性,则必须使用一个与应用无关的菜单(即不过滤)。这是与“编码”一个应用程序内所需要的属性的传统方法相反的。总的概念是将处理与“编码的程序”分离,并将处理作为实际数据存储的一部分。
应用的一个例子用附图中图6中所示语义网络表示。该应用是“安全性”,其中可得到实体类型“应用”。该实体类型的一种属性是“授权给”。这又是与将安全性编码在各应用内的传统配置相反的。
操作员只能使用他能访问的应用,因为他具有作为一个用户的适当属性,即数据与规则认为是基本上相同的。从而,一个用户以他导航通过数据相同的方式导航通过规则。
该系统内还可得到一个起动应用。这一应用使人们能改变起动过程而不用改变核心程序。属性“授权的应用”列出能用来运行的应用。列出了这些应用之后,人们便开始导航通过数据库。
利用这一技术,嵌套的应用便能容易地实现,并且安全检查可以包含在各级上。
类似地,有可能编码一个新的文档建立应用。这一应用中可包含过程来要求诸如作者姓名等数据。文件只需要一个文件(或数据库)。各记录的关键域是唯一的,因此不需要建立一个以上的文件。然而,为了操作的原因,可能希望将数据库分裂成若干不同的文件。例如,为了将用户数据与公用数据分开,可能希望进行这种分裂。类似地,为了将应用定义数据与该应用作用的数据分开,可能希望进行这种分裂。从而,为了分发的目的,人们能改变应用而不用改写该应用作用的用户数据。因此,第三方的“软件”能以直接相似于传统的系统的方式利用本发明的系统来实现。
希望建立一个以上文件的另一组环境是希望清除或存档数据。在数据中包括消息或文献时这可能特别适用。
希望建立一个以上文件的另一实例是用户数据具有特定的行业或类型时,例如涉及美术的数据库。
有可能希望建立一个以上文件的另一个实例是要存储涉及诸如计算机终端及可以通过这些终端访问该计算机的操作员等的表的配置数据时。
在这里所描述的发明的实施例中,一共使用了七种不同的文件。这些文件中包括(1)字典(2)用户数据(3)私有数据(4)公用应用数据(诸如国家列表)(5)公用应用数据;特定的(艺术史)不是一般的(6)应用定义(包含辞典)(7)配置文件(8)消息正文文件(9)事务概要该系统的唯一其它部分便是核心程序,它包含少于一兆字节的指令。辞典一个重要的特征便是辞典,它与字典文件不同。辞典构成主数据库的一部分,并且“辞典”是一种实体类型。与只包含单个的字的字典不同,辞典中包含短语(任何语言的)。用来定义数据库的一个应用的结构的每一个术语都必须首先进入辞典中。作为这一过程的一部分,分配一个代用数。
整个系统中用作标识符的每一个字都必须包含在字典中。然而,辞典中并不必要包含整个字典。
辞典是术语的中央仓库。定义数据库的结构的每一个术语都必须包含在辞典中。从而,为了增加一个新的实体类型,首先必须将该实体类型名放在辞典中。附图中的图7中所示的语义网络示出了这一点。
随后,便能访问辞典来发现该特定的名是否是一个实体类型。
辞典强制使用标准的字与短语。从而,位G5可以允许复制,但它们将各有一个不同的代用数。
作为字典与辞典之间的区别的一个实例字典中只存储字“red”一次。而辞典中字“red”可能存储若干次,例如第一次出现作为一种颜色而作为第二个实例则关于政治。从而,能查询辞典来检索出字“red”的潜在意义的一张清单。
辞典允许人们找出系统中关于字“red”有哪些其它知识。
在所有事务处理中并不都使用辞典。例如,考虑属性描述“isa”。虽然短语“isa”有可能从辞典中检索到;紧接着导航通过数据库,因为处理是从初始的辞典查找通过实体类型到实体的。“辞典”是一种实体类型而“实体类型”则在辞典中。多个用户组一个系统上有可能容纳多个用户组。人们可以为私有用户数据建立一个独立的文件,并且可以方便地增加一个新的用户组。在搜索记录中,核心程序总是寻找用户组号。
一个用户组的成员能向另一个用户组的成员发送消息。
使用用户组号作为关键域的一部分,便达到了内在的安全性。不能做到属于不同的用户组的数据之间的交叉访问。从而,防止对其它组的数据或者反过来是非常直观的,因为这是有关的记录的关键域的一部分。核心程序结构(1)“请求处理”程序。主操作接口。(2)存取数据库的主程序。总控制程序。它进行其它程序的所有调用。(3)“数据库更新”程序,它还提供与用户的文本处理接口。(4)出口程序ERROS或用户定义的,诸如数学/打印/不同的屏幕显示。出口程序出口程序方便地采用下述命名约定,其中一部分上面已提到过。出口程序的第一个字符永远是字符E(表示ERROS,关于本发明的系统所使用的名)。第二个字符指明该程序的发行号。第三个字符标识程序的修改。第四个字符是这一出口程序所处理的记录类型的三个字符记录标识符的第一个字符。出口程序名的第五个字符指明该程序的版本号。这一字符可以分配A至Z范围内(含A与Z)的任何字符或0至9(含0与9)范围内的任何数字或某些特殊字符。出口程序名的第六至第十字符标识用户组号。这可以是零,指出任何用户组都能利用它。
用户特定的选择性记录识别应使用该程序的哪一版本,及对于一个特定的用户组,该程序是否是他们自己的用户组的或者该选择性记录所调用的程序是否是一个公用版本。
这一命名约定能够容易地避免混淆同一程序的不同版本,并且每一个节点都能为各用户组定义要使用的是该程序的哪一版本。其中可包含诸如不同屏幕图画这样的简单选择或包含更深奥的需求。
出口程序可包含在一个程序库中。给予该程序库的名最好采用下述命名约定。库名的第一个字符为字符E。第二个字符标识发行号。第三个字符标识修改。第四个字符标识修改级。这一命名约定对某些计算机硬件类型特别有用。例如,IBM AS400机一张库清单,其中各任务具有一张相关的库清单。
按照本发明的系统的一个主要优点是只需小量的存储器常驻代码(核心程序)。这一优点来自这样的事实,核心程序是充分小的,它永远能够常驻在诸如IBM AS400这样的机器上的内存中。结果,极大地避免了对程序分页的需求。求助系统通过将求助文件指定为一个实体类型,便方便地实现了一个联机求助设施。从而,以一个实体类型“求助”、一个实体“业务”与一种属性“电话号码”,便能构成“业务”与“电话号码”之间的关系的一个代用记录,该记录中包含这一组合的一个描述。由于在不同的上下文中考虑时,实体类型变成了实体,为了实现求助系统,只需核心程序非常少的处理即可。求助正文是为一个特定的实体类型存储的,而不是为各单个实体存储的。
求助菜单不必要是应用特定的。
从而,求助系统的使用与对数据库上任何其它类型的记录的数据的访问相同。以前面所描述的相同方式导航通过相关记录。
上述联机求助系统完全避免了建立一个完全独立的联机求助数据库及相关的程序组的传统方法。
上面给出的本发明的特定描述是在1993年10月4日提交的英国专利申请9320404.8号中所提出的。从该日期起已实现及试验了各种修改。这些修改中值得一提的是一个实施例,其中上述选择性记录在功能上已与上述菜单记录合并。原理保持不变,但利用一个单一的记录类型来替代以前的两个记录类型。如上所述,存在着代用记录来记录代用数,它们可以认为是本系统的主要内部标识符。然而附加数据也能存储在代用记录中。这些附加数据应与该代用品所涉及的记录的内容相关,并且最好与相关记录的内容一起显示。
从1993年10月起,已经独立测试了本发明的初始实现。这些测试计算出开发一个新的应用(即“程序”组)的效率与传统的编程技术相比提高了500%以上。测试同时报告了完成的应用的操作速度中相同数量级的提高。
权利要求
1.一种数据存储与检索的方法,包括构成具有一个关键域的记录,该关键域为至少两个标识符的数字连接。
2.权利要求1中所提出的一种方法,其中该关键域包含一个实体类型标识符及一个属性标识符。
3.权利要求2中所提出的一种方法,其中该关键域是至少三个标识符的一个数字连接,包含权利要求2中所指定的那些标识符及一个实体标识符。
4.前述任一权利要求中所提出的一种方法,其中该关键域部分表示该记录的非关键域部分的结构。
5.前述任一权利要求中所提出的一种方法,其中该数字值是从一张字与/或短语表中得出的,表中的各项已预先赋予一个数字值。
6.前述任一权利要求中所提出的一种方法,其中某些记录存储数据而其它记录则存储数据间的关系的细节。
7.前述任一权利要求中所提出的一种方法,其中某些记录存储数据而其它记录则控制数据处理。
8.前述任一权利要求中所提出的一种方法,其中一项信息的存储包括构成与记录三个记录,各个记录中包含能够识别其它两个记录的标识符。
9.前述任一权利要求中所提出的一种方法,其中该关键域中包含一个从字母数字型描述导出的数,该数是从一张字表中导出的,在该字表中已为表中的各项预先赋予了一个数字值,在第一个字之后,该字母数字型描述中的字是赋予递减的有效位数的。
10.一种数据存储与检索系统,包括构成具有一个关键域的记录的装置,该关键域是至少两个标识符的一个数字连接。
全文摘要
数据存储与检索的方法与系统,包括构成具有一个关键域的记录,该关键域是至少两个标识符的数字连接。关键域最好包含一个实体类型标识符及一个属性标识符,再包含一个实体标识符更好,其中实体类型是通用的,诸如“公司”,实体是特定的,诸如ABC Limited,而属性则为诸如“电话号码”。该数字值最好从字与/或短语表中得出,表中各项都事先分配有一个数字值。最好某些记录存储数据而其它记录存储数据之间的关系的细节。有利地,某些记录存储数据而其它记录控制数据处理。
文档编号G06F17/30GK1132564SQ9419366
公开日1996年10月2日 申请日期1994年10月4日 优先权日1993年10月4日
发明者罗伯特·迪克逊 申请人:罗伯特·迪克逊
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1