CN1298523A - 数据库中多项目和多模块匹配方法和系统 - Google Patents
数据库中多项目和多模块匹配方法和系统 Download PDFInfo
- Publication number
- CN1298523A CN1298523A CN99805367A CN99805367A CN1298523A CN 1298523 A CN1298523 A CN 1298523A CN 99805367 A CN99805367 A CN 99805367A CN 99805367 A CN99805367 A CN 99805367A CN 1298523 A CN1298523 A CN 1298523A
- Authority
- CN
- China
- Prior art keywords
- template
- database
- project
- item
- request
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/42—Loop networks
- H04L12/427—Loop networks with decentralised control
- H04L12/433—Loop networks with decentralised control with asynchronous transmission, e.g. token ring, register insertion
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
Abstract
一种数据库系统,其中有一个或多个存有大量项目的项目数据库,各项目有一定的类型,由它定义了此项目的字段。各字段包含或认作一个具有相关属性或数据的对象,各项目的类型可进一步用项目能实施的方法格式定义行为,凡是另一个项目类型子类型的项目类型,继承其母类型的全部字段和行为,且包含附加字段和/或定义新的/修改的行为。项目可用JavaTM编程语言表达。数据库系统还采用搜索引擎,它允许在数据库中依据项目来进行查询。在一个实施例中,查询包括读操作,取操作和通知操作。各查询要求包括表明操作类型的命令和模板。模板是一个项目对象,它有项目的某些或全部字段,且设置成能精确匹配的值。该模板的其它字段指定为统配,它的值无关紧要。搜索引擎还进一步配置成能生成索引,用来捕捉具有足够共同指定特征的项目。在一个实施例中,数据库还能存贮用模板集合匹配的项目集合。
Description
有关申请
本申请是1997年11月17日递交的美国申请(U.S.Applicafion)No.08/971,529的部分续展申请,在此,通过引用作为参考。
下列美国专利申请(U.S.patent application)作为基础,在此,通过引用一并作为参考。
临时美国专利申请No.60/076,048,题为“分布式计算机系统”,1998年2月26日申请。
美国专利申请No.09/044,923,题为“租用存贮的方法和系统”,代理律师档案No.06502.0011-01000,并在同一天申请。
美国专利申请No.09/044,838,题为“分布式系统中租用委派证书的方法,设备和产品”,代理律师档案No.06502.0011-02000,并在同一天申请。
美国专利申请No.09/044,834,题为“分布式系统中租用组员资格的方法,设备和产品”,代理律师档案No.06502.0011-03000,并在同一天申请。
美国专利申请No.09/044,916,题为“租用故障检测”,代理律师档案No.06502.0011-04000,并在同一天申请。
美国专利申请No.09/044,933,题为“在基于事件的系统中传送行为的方法”,代理律师档案No.06502.0054-00000,并在同一天申请。
美国专利申请No.09/044,919,题为“分布式系统中延迟重构对象和遥控装载事件通知”,代理律师档案No.06502.0062-01000,并在同一天申请。
美国专利申请No.09/044,938,题为“遥控方法调用的方法和设备”,代理律师档案No.06502.0102-00000,并在同一天申请。
美国专利申请No.09/045,652,题为“识别遥控方法用的确定性散列方法和系统”,代理律师档案No.06502.0103-00000,并在同一天申请。
美国专利申请No.09/044,790,题为“分布式系统中决定遥控对象状态的方法和系统”,代理律师档案No.06502.0104-00000,并在同一天申请。
美国专利申请No.09/044,930,题为“分布式系统中完成有关遥控过程调用处理的可下载灵活代理”,代理律师档案No.06502.0105-00000,并在同一天申请。
美国专利申请No.09/044,917,题为“挂起的继续的遥控方法”,代理律师档案No.06502.0106-00000,并在同一天申请。
美国专利申请No.09/044,839,题为“数据库中原位修改的方法和系统”,代理律师档案No.06502.0108,并在同一天申请。
美国专利申请No.09/044,945,题为“数据库中类型安全属性匹配的方法和系统”,代理律师档案No.06502.0109-00000,并在同一天申请。
美国专利申请No.09/044,931,题为“分布式系统中的动态查找服务”,代理律师档案No.06502.0110-00000,并在同一天申请。
美国专利申请No.09/044,939,题为“提供分布式系统中与设备通讯用,可下载代码的设备和方法”,代理律师档案No.06502.0112-00000,并在同一天申请。
美国专利申请No.09/044,826,题为“简便存取查找服务的方法和系统”,代理律师档案No.06502.0113-00000,并在同一天申请。
美国专利申请No.09/044,932,题为“分布式系统中动态验证信息的设备和方法”,代理律师档案No.06502.0114-00000,并在同一天申请。
美国专利申请No.09/030,840,题为“对网格进行动态分布式计算的方法和设备”,1998年2月26日申请。
美国专利申请No.09/044,936,题为“持久共享存贮空间用的一种交互式设计工具”,代理律师档案No.06502.0116-00000,并在同一天申请。
美国专利申请No.09/044,934,题为“基于多形令牌控制”,代理律师档案No.06502.0118-00000,并在同一天申请。
美国专利申请No.09/044,915,题为“基于堆栈的存取控制”,代理律师档案No.06502.0118-00000,并在同一天申请。
美国专利申请No.09/044,944,题为“基于堆栈的安全要求”,代理律师档案No.06502.0119-00000,并在同一天申请。
美国专利申请No.09/044,837,题为“安全要求的每一方法(Per-Method)设计”,代理律师档案No.06502.0120-00000,并在同一天申请。
发明的背景
发明的领域
本发明涉及数据库系统,尤其涉及数据库系统中的项目存贮,本发明还涉及数据库系统中采用的一套查询匹配方法。
相关技术的描述
当今社会中数据库系统的重要作用与日俱增。典型数据库系统所能存贮的数据量以震惊速率增长,并能提供方便的、灵活的数据存取更为重要。然而,以优化方式完成数据库系统的设计工作极其困难。
数据库设计中尤为重要的考虑是所存数据能广泛适用于各种应用,并且使用方式又能快速、简便地进行改变。通常期望允许追加另外的数据类型或种类,而不十分影响数据库系统的其他部分。
遗憾的是,很难改变用到的,分散在许多数据库的各分路数据,并允许追加数据类型和种类。修改会引起该数据库系统的程序和其它部件一连串的变化反应。因此实现的费用相当昂贵。所以,数据处理还趋向于冰结在老的数据结构中,此外,数据库系统的设计者倾向于在设计的一个方面和设计的另一个方面进行许多复杂的权衡,导致费用比的优化成果设计要少一些。
为进一步详尽阐述,数据库中存贮的信息通常有确切类型,即数据库中存贮的一个记录通常有一定数目和类型的字段,诸如关系数据库的关系中的一个元组。定义每个字段存贮一特定类型的数据,诸如字符串数据,整数数据,布尔数据或其它要求的数据类型。如果一个用户要查看数据库中的信息,该用户必须查看精确的记录类型(即,不同类型的记录一般是独立搜索的),这样,如果搜索者感兴趣的数据可能在几个不同类型记录的任一记录中,则查找者必须预先知道可能存在哪些记录类型,或有哪些明显的途径能询问到全部类型。然后,为了找到感兴趣的特定记录,搜索者必须查遍所有可能的记录类型,这使与搜索引擎相关的软件复杂化,尤其是要限定所能维护的不同记录类型的数目。
再说,数据库一个记录中的字段和其它记录无关。这就减少了单个记录所持信息的种类和数量,从而,数据库局限于不能存贮和操作记录集合的记录。
此外,典型数据库中的一个记录除自身实际数据外常与特征无关,例如,一旦找到数据,但没办法把行为和记录类型发生改变的记录联系起来,因此,允许程序用单一途径对匹配返回的各种记录实现记录类型指定结果。
不管数据库系统的其它方面,在数据库中指定属性或特性的常用方法是用一组简单的“名称,值”对,其中值要不限于字符串,要不为任意类型(“any”类型)无法限定这些“名称,值”对的类型,不能强迫一个特定的名称必须总有一特定类型的一个值。例如,一台理想的打印机,“Speed”属性表示该打印机每分钟能打印几页,应该强制成一个整数,确保用户不会设成别的什么,诸如“大约每分钟10页”或“8到10”,同样问题亦会存在,只是值可能是任意类型的对象。在这种情况下,用户可能设属性为整数对象而不是字符串对象,但仍不可避免另一个用户把字符串对象存入本该整数的属性。
再说,以前的系统在不同属性之间没有强制关系(即,当和仅当另一个属性存在时,这一个属性才存在)。例如,打印机有三个示范性的属性:分辨率(每英寸有多少点),速度(每分钟打印多少页)和彩色(相对于黑白)。事实上,许多打印机能实现这些属性的不同组合,例如一台典型的彩色打印机可能是:
每分钟5页,每英寸600点,黑白;
每分钟7页,每英寸300点,黑白;
每分钟1页,每英寸300点,彩色。
有鉴于给定一个属性可以有多个值,某些常规系统允许属性有多个值,这些系统用下列方式表示该属性为:
speed = {1,5,7}
resikytuib = {300,600}
color = {true,false}
但这并不表明属性对之间的相互关系,明显地,这并不表示和强迫下列三种关系:
{speed:1,resolution:300,color:true};
{speed:7,resolution:300,color:true};
{speed:5,resolution:600,color:false}。
相应地,设想有这样的数据库系统,允许多形项目,包含项目集合的项目匹配和操作,从而允许更有效搜索,并简化存在许多不同类型情况下的软件实施。还想有这样一个系统,项目可按照类型定义它们自己的行为。此外,希望有能在数据库中有类型安全属性匹配且能强制属性间的相互关系。
本发明概要
可以用本发明所述存贮和搜索数据库项目的方法和系统来解决上面提出的问题。在一个实施例中一个计算机系统实施一个数据库系统,其中有一个或多个存贮众多项目的项目数据库。每个项目都有给定的类型,它定义了该项目的字段。每个字段包含或识作一个具有相关属性或数据的对象。每个项目的类型可进一步用配置给项目的实施方法的格式定义行为。作为另一项目子类型的项目类型继承了其母类型的所有字段和行为,并包含附加字段和/或定义新的或修改的行为。项目可以用JavaTM编程语言的JavaTM类来表达。同样,在一个实施例中,每个字段表达成一定的类。
该数据库系统可进一步采用一个搜索引擎。它允许依据数据库的项目进行查询。在一个实施例中,查询包括一个读操作,一个取操作和一个通知操作。每次查询要求包含一个指明操作类型的命令和一个模板。该模板是一个项目对象,它具有某些或全部字段,这些字段被设置成必须能精确匹配的特定值。模板项目的其它字段可以指定成统配(Wildcards),其值是无关紧要的。多形项目和项目匹配技术有利于允许与模板项目类型相同或是模板项目的子类型的项目用匹配来完成查询。这就允许有效搜索和搜索引擎的简化实施。再说,搜索引擎并不要知道所有可能存在的子类型。最后,因为每个项目有一相关类,一个项目可以用可支持的一个或多个方法定义自己的行为。通过程序可恳求一特定项目的方法实施各种功能,诸如等价检验。
该搜索引擎可进一步配置生成一个项目索引。这些项目具有查询共同指定的特征。即,该搜索引擎可检测使用模式,并生成一个索引,该索引指向具有由接收模板共同指定属性的项目,用这种方式能实现加急项目搜索。
此外,搜索引擎可进一步配置成用单个记录存贮项目集合。这些项目集合用模板集合来匹配。在一个实施例中,类似于单项目实施操作,诸如读、取、写和修改等操作都可以对项目集合实行。
附图概述
图1系用按本发明数据库系统的分布式计算机系统框图。
图2为多个客户与多个按本发明的项目数据库之间的通讯示意图。
图3为包含按本发明特定类型字段的几个项目示意图,并示意说明为另一项目子类型的项目。
图4为按本发明数据库系统所支持各种操作的示意图。
图5为按本发明示范性模板项目示意图。
图6为在一个实施例中响应按本发明一个读/取请求时搜索特定项目数据库中项目的流程图。
图7为按本发明数据库系统的功能块示意图。
图8为处理按本发明通知请求时搜索方法的流程图。
图9A和图9B为实施按本发明索引方法的流程图。
图10为几个多项目示意图,其中每个多项目还包含项目字段。
图11为按本发明数据库系统所支持的各种多项目操作示意图。
图12为按本发明的示范性多模板示意图。
图13为按本发明多项目,搜索数据库的方法流程图。
图14为按本发明多项目搜索实例数据库的功能示意图。
图15为按本发明搜索方法处理多项目通知请求的流程图。
图16为在按本发明数据库中的原位上修改项目和多项目的各种操作示意图。
图17为按本发明单项目修改操作流程图。
图18为按本发明多项目追加操作流程图。
图19为按本发明多项目修改/删除操作流程图。
图20为与按本发明原位修改操作一起使用的通知操作流程图。
附图中举例示出了本发明的特定实施例,下面将详细加以描述,随此很容易对本发明作种种修改和变换形式。因此,附图和所作详细描述不能将本发明限定为所揭示的特定形式,相反,应当用所附权利要求的限定来涵盖落入本发明精神实质和范围的所有修改、等价和变换例。
发明的详细描述
按本发明的方法和系统存贮和搜索数据库中的项目。每个项目有给定的类型。项目类型定义字段类型,且每个字段包含或认作给定类型的一个对象。这些项目可以用JavaTM编程语言的JavaTM类来表达。此外,按照本发明的方法和系统还可存贮和搜索数据库中的项目集合。通常,项目集合的搜索是用模板集合来完成的。
分布式系统
现在转向图例,图1中100是一个分布式系统,其中可采用按本发明的多形项目,项目匹配和项目操作。图1表示多个计算机系统101-103经网络105相互联接。图上画的网络105,例如局域网(LAN),广域网(WAN)或互联网,它界于多种其它可能的通信信道之间。每个计算机系统包括一个存贮器和一个微处理器,图例中存贮器120和CPU122都是计算机系统101的。存贮器120代表各种可能类型的存贮器,诸如硬盘、软盘和动态随机存取存贮器(DRAM)。安装媒体126代表一个或多个CD ROM或软盘(或别的存贮媒体),它们和计算机系统101连在一起。一般来说,安装媒体126可存贮代码和/或数据。它完成将要叙述到的搜索引擎部分和该数据库系统的其它方面,并可用来把代码和/或数据装进特定的计算机系统。要注意在另一个实施例中按本发明的数据库系统可在单台,不联网计算机系统中实现。
正如下面会详细叙述计算机系统100实现的数据库系统中将采用面向对象方法来存贮可能类型或子类型的项目。该数据库还可存贮项目集合,所谓多项目,在讲完单项目实施后会讲到。数据库的项目可以单独存在计算机系统101的存贮器122中,亦可分布式地横跨几个不同系统的存贮器,诸如存贮器122和在计算机系统102和103中的类似存贮器。每个项目都有给定的类型,它定义了该项目的字段。每个字段包含或认作一个与属性或数据相关的对象。每个项目的类型可进一步用项目配置实施方法的格式定义行为。当项目类型是另一项目的子类型时,则它继承其母类型的全部字段和行为并包含附加字段和/或定义新的/修改过的行为。
数据库系统还采用一个搜索引擎,它可用软件实现,允许依据数据库中的项目(或多项目,后面会讲到)进行查询。在一个实施例中,每个查询包含一个模板,它给出给定项目关键字段值(或属性)。当这些字段值与模板相应字段匹配时造成一次成功的匹配。模板其它字段可以指定或统配(Wildcards),它的值是无关紧要的。计算机系统100采用的多形项目和项目匹配技术有助于允许查询结果造成与模板项目同类型的项目匹配或是模板项目子类型的项目匹配,附加细节将忽略多形项目和项目匹配技术,下面结合图2-9进一步提供。
图2是一对客户(或用户)202和204和多个项目数据库206-208之间通讯流的示意图。206-208中每个项目数据库可分布式地横穿分布式系统100的一个或多个存贮器子系统,对202和204的每个客户,配置成能向206-208中一个或多个项目数据库提出查询。还可进一步将客户202和204配置成能把项目存(写)入项目数据库206-208,下面将进一步论讨。图2最后说明了事件捕捉程序210,它的功能,后面也会进一步讨论。
项目匹配和操作
图3表示项目数据库206-208中可能存有的多个项目实例。在一个实施例中,每个项目是用JavaTM编程语言的一个JavaTM类表达的对象构成的一个定型组。关于JavaTM编程语言可参照1996.Addisou-Wesley中Ken Amold,JamesGosling所著JavaTM编程语言。JavaTM是Sun微系统公司在美国和其它国家的注册商标,但要明白在另一实施例中,项目也可能定义成其它编程语言的类。
图3中的项目1包括一组四个字段(字段A,字段B,字段C,字段D和字段E),都用项目1的类型来定义。项目2包括一组五个字段(字段A,字段B,字段C,字段D和字段E),都用项目2的类型定义。要注意,项目2是项目1类型的子类型,因为项目2包含了与项目1相同的字段类型,再加上其它字段类型。
项目3包括一组四个字段(字段W,字段X,字段Y和字段Z),用项目3的类型定义。要注意虽然项目1和项目3都包括四个字段,但因字段类型不同,所以它们代表不同类型。
许多其他类型和子类型,随特定应用或数据库的要求可进一步和该数据库发生联系。此外要注意到项目还可能是子类型的子类型。仅作为举例用下列代码说明用JavaTM编程语言定义的项目:
图书购置用的“Request For Bid”对象:
public class RFB implements Entry{
public Integer order number;\\定单号
public String title; \\书名
public Integer count \\数量
}
投标的“Full”请求,即包含ISBN的字段:
public class FullRFB extends a RFB{
public String isbn; \\ISBN字段
}
参照图3,该项目的每个字段被配置成存有指向或识别定型对象的值。每个定型对象可简单地用一个JavaTM类来表达。例如,项目1的字段A包含识别对象310的值,而项目1的字段B包含识别对象312的值。同样,项目2的字段A包含识别对象314的值,而项目2的字段B包含识别对象316的值,等等。要注意图3的项目例中,因为项目2是项目1的子类型,则与项目1字段A有关的对象310用项目2字段A相关对象314的同一类类型来表达。但是对象310和314各自相关的属性或数据可能不同。还要注意到用各项目字段识别的对象根据定义类型可包含整数数据,布尔数据、字符串数据、或别的所需类型数据。更要注意到因为每个字段与一个定型对象有关,所以可随意挑选可支持的方法,并通过外部刺激来完成数据操作。同样,每个项目类型可支持一种或多种方法,后面将会讲到。
回到图2,如前所述,项目数据库206,207和208中的每一个都可能存有大量各种子类型的项目。客户通过一个写操作把项目存入给定的项目数据库206-208,并经安装媒体(即图1的安装媒体126)把项目追加到项目数据库。
系统支持几种追加操作,如图4所示。尤其是除写操作外,客户或用户还可以开始于“读”操作,“取”操作和“通知”操作。
利用读、取和通知操作查询特定的项目数据库确定在项目数据库中是否已写入一个带有某些指定特征的项目,如果写入了就会引起一个特定的动作。在一个具体实施例中通过使用模板做了这些查询。模板是作为操作请求的一部分,它定义了操作感兴趣项目的类型。读操作可以起始于从项目数据库中读一个与有关模板匹配的项目。取操作类似于读操作,但取操作是把与模板相匹配的一个项目从项目数据库中移出。最后,通知操作是要登记即将输入指定项目数据库的、与相关模板相匹配的项目。当匹配项目到达时,则通知客户或指定的事件捕捉程序。下面还将提供每个操作的细节。
图5表示示范性模板。一般说来,一个模板指定一个特定的项目类型,其字段要不有值(参照对象),要不“统配”。当把项目数据库中的一个特定项目考虑成对某模板的可能匹配时,该项目指定字段(不对应模板的统配字段的字段)的属性必须精确地与模板对应字段指定的属性相匹配(或处于可能的属性范围之中)。对应模板“统配”字段的项目字段可以是任何属性,且不影响匹配结果(即模板中的统配可与项目同一字段的任何值都匹配)。在一个实施例中一个统配用一个空参照值来指定。如后所述,与模板相匹配的项目类型可以是该模板类型的子类型。这样,用该子类型定义的特定项目的所有字段都考虑成统配。这使一个模板可以与任何子类型的项目相匹配。要注意没有统配的项目还可以是一个有效模板。
图6表明在一个特定项目数据库内为响应按本发明的一个读请求或一个取请求,搜索项目方法的一种实施流程图。如前所述,一个读请求可起始于一个客户(或用户)读一个与给定模板相匹配的项目。一个取请求可起始于把与给定模板相匹配的项目从项目数据库中移出。
(1)项目匹配方法
图6所示步骤将连同图7一起叙述。图7描述采用图6所示搜索方法的数据库系统的功能。图7的功能组元可通过图1中一个或多个计算机系统101-103有关的软、硬件组合来实施。步骤602期间,用户702向数据库管理程序704提交一个读或取请求。给出的请求包括一个指定的模板,图7中显示了一个示范性模板706,数据库管理程序704的搜索引擎708在步骤604期间相继搜索项目数据库710,确定在项目数据库710中是否存在与模板相匹配的类型或子类型。如果项目数据库中没有项目是模板类型或模板子类型(步骤606),则数据库管理程序704在步骤608期间返回给用户702一个空值。
如果搜索引擎708确定在项目数据库710中有一个或多个项目与模板的类型或子类型相匹配,则将选定项目(与模板同类型或是模板的子类型)的字段与模板706的对应非统配字段作比较(步骤610),搜索引擎708忽略该选定项目中对应模板统配字段的任何字段(步骤612),在一个特殊实施例中,搜索引擎708确定与项目每个非统配字段有关属性或数据是否与对应模板项目的属性或数据精确匹配,如果任何非统配字段的属性跟模板中对应字段属性不精确匹配,则决定该项目不匹配,要注意在另一实施例中模板的一个字段可指定值的一个范围(不要求精确匹配),当对应字段的数据进入此范围时则造成匹配。
(2)举例
在图7所示例中,将模板706的字段C指定为统配。这样,当搜索引擎708为匹配项目而搜索项目数据库710时,搜索引擎708首先确定项目数据库中是否存在是模板706的类型或子类型的任何项目。如图所示,项目1和项目2都满足这个限定。然后,搜索引擎708选定两个项目中的一个(例如,项目2),将它的字段与模板中的非统配字段作比较。搜索引擎708确定对应项目每个对应字段的属性,模板的各个非统配字段是否有精确匹配,要注意因为将图7中模板706的字段C指定为统配字段,则忽略项目2字段C的属性,而不影响比较操作。同样,还忽略用模板类型的子类型定义的任何项目的这些字段(即,虽然统配字段的属性不匹配,但仍可出现匹配),如果找到一个匹配项目(所有非统配字段匹配),则搜索引擎708要不从项目数据库710读该匹配项目,并提交给用户,要不将此项目移出项目数据库710,这完全取决于请求是读请求还是取请求。搜索引擎708搜索项目数据库710直到要不找到一个匹配,要不将全部项目都检验过。如果搜索过数据库中全部项目后没找到匹配项目,则数据库管理程序704给用户702返回一个空值。(步骤616)
(3)通知
转到图8,它表示按本发明搜索引擎708处理来自用户的通知请求所用实施方法的流程图。如前所述,用户发出一个通知请求,想要登记即将取得的,与一个模板相匹配的项目。当取得匹配项目时,数据库管理程序可随意要不通知该用户,要不通知事件捕捉程度(图2)。当用户恳求一个通知请求时,要指定一个租借时间,表明数据库管理程序704只能在多长时间内登记该通知。如果超过指定的租借时间,则取消通知登记。
这样,如图8所示,当数据库管理程序704接受到一个新的通知请求时(步骤802),就开始监视输入项目,直到登记时间满期为止(步骤804和806),如果有一个与模板相同类型或是模板类型的子类型的项目被写入项目数据库710(步骤808),就比较该项目的字段确定这些字段的属性是否与模板非统配字段相关属性相匹配(步骤810)和前面的讨论一样,输入项目的统配字段或用模板项目子类型定义的字段都可被忽略(步骤812),如果出现一个匹配,则通知用户或事件捕捉程度(步骤814和816),只要登记时间不满期,就持续监视追加的输入项目。
(4)索引
回到图7,可进一步把搜索引擎708配置成为数据库管理程序704接受到的查询共同指定具有特征的项目,生成索引。也就是说,搜索引擎708可检测到一个使用模式并生成一个索引720,它指向的项目通常具有由接受模板指定的属性。作为一个实例,考虑这样的情况,数据库管理程序704接受到几个查询请求,每个请求都有各自的模板,它们可以和模板706同类型或是模板706的子类型,如图7所示。在这种情况下,搜索引擎708可检测在多个请求的每个模板中都指定字段A有相同的属性值(如整数值1000)。在一个实施例中,将数据库管理程序配置成能检测许多查询指定用的公共模板并可靠生成一个索引720。这个索引指向项目数据库710中所有与公共接受模板相同类型或是其子类型的,且字段A都有公共属性的项目。从而,当接受到带有一类似模板的新查询时(即,字段A的值也指定为1000的模板),搜索引擎708可利用索引720快速定位与模板相匹配的项目子集,而不需要找遍数据库中整个项目集合。
图9A和9B表示索引方法的实例。如图9A所示,对应特定模板种类的项目索引可以这样生成:跟踪请求模板(步骤910)并确定该模板是否有一个相关模式(即,用相同属性或值指定一个非统配字段(或多个字段)的模板(步骤912))。可以作出这样的决定。例如基于在特定时间内接受具有相似模板的预定查询数目,或基于接受一定比例的,相似模板查询,当搜索引擎708检测到公共模板使用模式时,它为具有特定模板种类的项目生成一个索引(步骤914)。这样,考虑上面的实例,搜索引擎708可以为所有与模板706同类型或是模板706的子类型的,且字段A值为1000的项目生成一个索引。
如图9B所示,如果在步骤920期间接受到一个新的请求,如果对于这特定模板种类,不存在索引则执行一次正常搜索(步骤922和924),如果对应此新请求模板存在索引种类,则利用这个索引,找到有可能匹配项目的子集,且仅需在这子集中进行比较。用这种方式,可实现加急项目搜索。要注意搜索引擎708可随后删除这些索引,只要随意地不再检测到这种共同用法。
如前所述,一个项目类型可进一步定义一种方法,用这种方法在受到外部刺激(例如,与数据库系统有关的处理项目的软件程序)时引起一个特殊动作产生。这种特殊动作可能影响项目内驻留的数据。此外,可能采用一种方法允许有效等价检验,决定一个特定项目是否等价于另一个项目(或等价于一个模板),即使数据格式可能不同。例如,存贮解压视频数据的一个项目可考虑成等价于另一个存贮该视频数据压缩格式的项目。可能提供决定这些项目等价的方法,即使实际存贮的数据并不相同。(如,可以实行一种方法决定是否把对象都归类开图象相关的文件系统中具有相同下划路径名)。
还要注意到可以用一种特殊表示来存贮项目,包括对项目类和每个项目字段采用系列化格式。然后可将系列化格式的模板与系列化格式的项目作比较。最后要注意一个项目还可用另一个项目的字段来指定。
多项目和多模板匹配
另一实施例执行数据库中项的操作和匹配,每个项定义了一个项目集合。这里所谓的项是指“多项目”,“多模板”(或“项模板”)是一个用作模板集合的项,用来与数据库的项目匹配。本节将进一步叙述多项目对多模板的匹配以及涉及多项目和多模板的操作。多项目和多模板的许多行为类似于前面叙述过的单项目和单模板的行为。
图10表示可存入任一项目数据库206-208中的多个示范性多项目例。在按本发明的方法和系统中,每个多项目是一组项目,而每个项目是一定型的对象组,例如可用JavaTM编程语言的JavaTM类来表达。换句话说,一个多项目是一项目集合,自身没有类型。
参照图10,多项目1包括一组四个组元(组元A,组元B,组元C和组元D),鉴于多项目可能有一个可变长度,多项目2包括一组五个组元(组元E,组元F,组元G,组元H,和组元I),多项目3包括一组三个组元(组元J,组元K和组元L),多项目的每个组元配置成能存贮定型的项目。每个定型项目都可用一个JavaTM类来表达,该项目的字段所存贮的值可认作定型对象,例如,多项目1的组元A包含一个值,认作项目1010,多项目1的组元B认作项目1016,依次类推。要注意对图10所示多项目例,虽然所有项目都可能是同一类型,但与该项目字段相关的属性或数据并不相同。还要注意虽然各多项目组元认作的项目有一个指定类型,但多项目只是项目的简单集合,本身没有特定类型。
因为多项目和多模板只是集合,所以用集合的任何合适表示都能表示。仅对实例,用许多编程语言,包括JavaTM编程语言在内,这合适表示就是一个数组。数组大小由多项目的项目数或多模板中的模板数给定。该数组的每个组元是一个项目(多项目情况)或一个模板(多模板情况)。
回到图2,如前所述,每个项目数据库206,207和208可存贮大量多项目。客户用写操作把多项目存入给定的项目数据库206-208,还可通过安装媒体(例如图1中的安装媒体126),将多项目追加到项目数据库,几个追加操作,类似于单项目操作,也受到系统支持,如图11所示。尤其是除写操作外,客户或用户还可起始于“读”操作,“取”操作和“通知”操作。
对多项目运行的读,取,和通知操作,其方式和对单项目运行的读,取和通知操作方式相同。在一个特定的实施例中,用多模板进行了这些查询。多模板是作为操作请求的一部分,它规定了哪些多项目是操作感兴趣的。如同单项目实施例,读操作是读出该数据库中与给定多模板相匹配的那些多项目。同样取操作亦完成了同样功能,只是移走了谈自该数据库的多项目。因有兴趣登记将取得的多项目,所以每当数据库中得到相匹配的多项目时,通知操作通知客户或事件捕捉程序。
图12表示多模板实例。一般说来,一个多模板指定组元包含已定义模板的一个特定多项目。图12所示多模板1200有四个组元W,X,Y和Z,虽说多模板能有任意数的组元,但在本发明的实施例中,多模板1200的每个组元只包括一个模板1202。
(1)多项目和多模板的匹配方法
通常,一个多模板要和一个多项目匹配,只需多模板中的每个模板在多项目中有一个相匹配的项目。多项目中的每个项目能和多模板中不止一个模板相匹配。例如,多项目中的一个单项目能和多模板中的所有模板相匹配,因此在多项目和多模板之间产生一个匹配,在决定一个多项目与一个多模板是否匹配的过程中必须将多项目的单个项目与多模板的单个模板相比较。多项目中单个项目与多模板中单个模板相匹配的方式和前面定义的单项目对单模板的匹配方式相同。
图13是一张流程图,它描述了在特殊项目数据库中为响应一个读请求或一个取请求,搜索多项目所用方法的一个实施例。在图13中所示步骤,将结合图14进行描述。图14描述采用图13搜索方法的数据库系统的功能方面。图14的功能块可用与图1所示一个或多个计算机系统101-103相关的软件、硬件组合来实现。在步骤1302期间,用户702向数据库管理程序704提出一个读请求或一个取请求。给定的请求会包括一个指定的多模板,一个实例如图14所示多模板1200。随后数据库管理程序704的搜索引擎708搜索项目数据库710决定是否有任何与多模板相匹配的多项目驻留在项目数据库710中。
为搜索项目数据库710,搜索引擎708选择项目数据库710中的一个多项目与给定的多模板作比较(步骤1304)。然后,决定该多项目是否与该指定的多模板相匹配,搜索引擎708将该多模板中的每个模板和多项目中的每个项目作比较(步骤1306),如果对多模板中的每个模板都有一个匹配项目,则多项目与多模板相匹配(步骤1308)。多项目中的每一项目能与多模板中不止一个模板相匹配。如果能决定多模板中的每个模板在多项目中都有一个匹配项目(步骤1310),则多模板与多项目相匹配,并返回该多项目(步骤1312),此过程持续到数据库中全部项目都被测验过。
如果选定的多项目与操作提供的多模板之间没能匹配,则搜索引擎708搜索项目数据库710中的别的多项目(步骤1314)。如果在数据库中找不到与多模板相匹配的多项目,则返回一个空值(步骤1316)。如果找到的匹配不止一个,则在一个实施例中返回一个多项目,而在另一个实施例中返回相匹配的多项目数。如果客房的原始请求是取请求,则将相匹配的多项目移出数据库。但是如果原始请求是读请求,则相匹配的多项目不要从数据库中移出。
(2)实例
图14所示实例中,搜索引擎708选择一个多项目(如多项目2),将此多项目的项目与多模板的模板作比较。在此例中,搜索引擎接受一个包括多模板1200的请求。
搜索引擎708决定多模板1200中的模板是否与项目数据库710中选择的多项目的项目相匹配、搜索引擎708将多模板1200的组元W中的模板与项目数据库710中多项目2的组元E,F,G,H,I中的项目作比较,决定这些项目中是否有项目与该模板相匹配。如果搜索引擎708用多模板1200的组元W中的模板找到一个匹配,则它企图找出对应多模板1200的组元X中模板的匹配,它将多模板1200的组元X中的模板再次与多项目2中的每个项目作比较,直到找到一个匹配为止。应注意即使组元E,F,G,H和I中的每个项目都已经和多模板中的其它模板(即组元W中的模板)比较过了,还可能与此模板比较。如果找到对应组元X中模板的一个匹配,则搜索引擎708以同样方式检验多模板1200中余下的模板(在组元Y和Z中的模板)。因为每个项目可以不止与一个模板相比较,例如多项目2的组元E中的项目,它有可能和多模板1200的组元W,X,Y和Z中全部模板相匹配。如果多模板1200中的每个模板在多项目2中都有一个匹配项目,则多项目2与多模板1200相匹配。
与单项目操作一样,如果找到一个匹配的多项目。则搜索引擎708要不从项目数据库710中读一个相匹配的多项目,要不把这相匹配的多项目从项目数据库710中移出,并把相匹配的多项目提供给用户。是否将相匹配的多项目移出项目数据库取决于请求是读请求还是取请求。搜索引擎708连续搜索项目数据库710,直到找到一个匹配,或者检验过所有多项目,一个匹配也没找到。如果搜索项目数据库710中所有多项目后,没找到一个相匹配的多项目,则数据库管理程序704返回一个空值给用户702。
(3)通知
下面转向图15,它是搜索引擎708处理来自用户的一个通知请求所实施一整套方法的流程图。多项目情况下的通知操作与单项目情况类似,如前所述,用户发出一个通知请求是为了有兴趣登记即将到来的,与一个多模板相匹配的多项目。当匹配的多项目到达时,数据库管理程序704可随意地通知用户或者通知一个事件捕捉程序(图2)。当用户恳求一个通知请求时,要指定一个租借时间,它表明数据库管理程序登记该通知的时间有多长。在租借时间满期后,撤消通知登记。
这样,如图15所示,当数据库管理程序704接受到一个新的通知请求(步骤1502)时,就监视输入的多项目,直到登记时间期满(步骤1504和1506)。如果往项目数据库710中写入一个多项目,则搜索引擎708就决定此多项目是否与多模板相匹配。与前面的讨论类似,如果多模板中的每个模板都能在多项目中找到一个相匹配的项目(步骤1508和1510),则发生一次匹配,被通知到用户或事件捕捉程序(步骤1512)。数据库管理程序704持续监视追加输入的多项目,直到登记时间期满为止(步骤1504)。
原位项目修改
另一个实施例还实现了在数据库中按原位就地修改项目和多项目。按照本发明,此实施例是对项目/模板和多项目/多模板情况的一个推广。在此项目的字段能按其在数据库中的原来位置进行修改。在多项目情况,多项目中的字段也可以进行增、删、改。所谓“原位”意味着修改是在数据库中发生,而不必将要修改的项目或多项目从数据库中移出。
按本发明的此实施例进行的原位修改操作包括“单项目修改”、“多项目追加”“多项目修改/删除”和“通知”。图16表示这些原位修改以及用户为修改请求提交的信息。单项目修改操作改变了数据库中某个项目的单个字段的值。多项目追加操作为数据库中已有的某个多项目增加项目,而多项目修改/删除则改变或删除了数据库中多项目的项目,通知操作,相对于原位修改,它是通知因数据库中某个项目或多项目的改变而发生的匹配。通常,如图16所示,操作请求的第一个参数是指定数据库中要进行修改的项目或多项目,而第二个参数指定要进行的修改。
(1)单项目修改
图17是本发明实施单项目修改操作的流程图。在结构方面,亦可参照图7。为了改变一个项目中单个字段值,用户恳求一个单项目修改操作,用户702将请求包括两个模板(步骤1700,图16),第一个模板1602用来识别数据库中要修改的项目,而第二个模板1604用来修改此项目,并识别所做的修改。因为这两个模板操作在同一项目上,既识别又修改,所以第二个模板1604和第一个模板类型相同,或者是第一个模板的子类型。在该实施例中,单项目修改过程可包括模板的类型检验。
首先,搜索引擎从用户702的请求中接受到第一个模板1602(步骤1702),并在项目数据库710中搜索与第一个模板相匹配的项目。当将数据库中的项目和第一个模板相比较时,按时前面讨论的单项目和模板匹配进行匹配。如果数目数据库710中没有与第一个模板1602相匹配的项目(步骤1704),则搜索引擎给用户702返回一个零,表示由于此操作,被改变的项目数(步骤1712)。
如果找到一个匹配项目,就用第二个模板1604按项目在数据库中的原来位置修改此项目,也就是说不要因修改而将此项目移出数据库。因为第二个模板1604与第一个模板1602类型相同,或者是第一个模板的子类型,而第一个模板1602与被修改项目的类型相同或是被修改项目的子类型,所以第二个模板1604与被修改项目的类型亦相同或者也是被修改项目的子类型。为了修改这匹配项目,用第二个模板1604中非空字段的值来替代该项目中对应字段的值(步骤1708)。对应第二个模板1604的空字段或统配(wildcard)字段的值保持不变。搜索引擎708修改了数据库中的一个项目后,继续搜索还要修改的项目。如果数据库中还有与第一个模板1602相匹配的项目(步骤1710),则用同样方式修改这些项目(步骤1708)。根据完成的情况,搜索引擎708返回一个数目,它代表此操作进行后,被修改的项目数(步骤1712)。
(2)多项目追加
图18是按本发明进行多项目追加操作步骤的流程图。通常,多项目追加操作是把项目追加到数据库中指定的多项目中。请求此操作的用户702向搜索引擎708提供两个参数,一个多模板1606和一个多项目1608(参见图16)。第一个参数,多模板1606用来识别项目数据库中要改变的多项目;第二个参数,多项目1608是一项目集合,它将被追加操到项目数据库中已识别的多项目中。采用前面叙述的多项目/多模板匹配,搜索引擎708在数据库中搜索与用户702给出的多模板1606相匹配的多项目(步骤1802)。如果没找到相匹配的多项目(步骤1804),则搜索引擎708返回给用户702一个零,它代表被追加项目的多项目数。
如果找到一个相匹配的多项目(步骤1804),则把用户702提供的多项目1608指定的项目追加到项目数据库710中被找到的、相匹配的多项目中,而不要把相匹配的多项目移出数据库(步骤1808)。搜索引擎708在数据库中追加了一个多项目后,继续搜索还要改变的多项目。如果在项目数据库710中还有更多的多项目能和操作请求中作为第一参数给出的多模板1606相匹配(步骤1818),则将操作请求中多项目1608的项目,以同样方式追加到这些多项目中(步骤1808),最后搜索引擎708返回一个数,表示追加过项目的多项目数(步骤1812)。
(3)多项目修改/删除
图19是按本发明实施多项目修改/删除操作方法的流程图。多项目修改/删除操作按照请求中多项目的项目,要不修改数据库中多项目的项目或者把多项目中的项目从数据库中删除,当搜索引擎708接受一个多项目修改/删除请求,这请求包括两个多模板,一个多模板1610和一个多模板1612,这两个模板是作为请求的参数。(步骤1900,同时参见图16)。用多模板1610识别项目数据库710中要修改的多项目或者已经有项目被删除的多项目,而用户702提供的另一多模板1612指定在一个相匹配的多项目中要修改或被删除的项目。
请求中给出的多模板1612和多模板1610有同样多的模板数。再有,多模板1612中每个单个模板和多模板1610中对应模板有相同类型,或是它的子类型(也就是说,多模板1612中每个模板(ⅰ)和多模板1610中的模板(ⅰ)有相同类型,或是它的子类型)。比如,多模板1612中的第一个模板和多模板1610的第一个模板相同类型,或是它的子类型,1612的第二个模板就和1610的第二个模板同类型或是它的子类型,依次类推。不同于一个公共多模板,作为请求参数的多模板1612中的模板也可以是空值,这些模板将用来表明要从多项目中删除,下面会讲到。
搜索引擎708首先搜索与作为操作请求第一参数给出的多模板相匹配的多项目(步骤1902)。如果没找到匹配,返回一个零,它代表被修改的多项目数(步骤1914)。
如果在项目数据库710中找到一个匹配多项目,则用操作请求中的多模板1612来修改它。为了实现这种修改,按照多模板1612中的非空模板,用多模板1612中的每个非空模板改变项目数据库710中相匹配多项目的对应项目(步骤1908)。用前面讨论过的单项目修改来完成这种改变,修改发生在项目数据库中的原来位置,而不必把匹配的多项目移出数据库。例如,如果多模板1612中的模板(ⅰ)不是空,则按照多模板1612的模板(ⅰ),用单项目修改方法修改被替换多项目中的项目(ⅰ)(图17中的步骤1708,其中多模块1612中的模板(ⅰ)就是模板2)。用模板(ⅰ)的非空字段的值替代现有要修改项目对应字段的值。
对于给定多模板1612中的每个空模板,要删除相匹配多项目中的对应项目(即,对于多模板1612中的每个空模板(ⅰ)删除要修改多项目中的项目(ⅰ)(步骤1910)。如果数据库中还有与多模板1610相匹配的多项目,则重复这些步骤来修改项目数据库中剩余的匹配多项目(步骤1912)当搜索引擎708完成修改时,返回一个代表已被修改的多项目数的数(步骤1914)。
但当处理多项目修改/删除操作时,有这样例外情况发生。在多项目/多模板匹配中,因为多项中的一个项目可以和多模板中不止一个模板相匹配,一个多项目可以匹配一个多模板,所以多项目具有的项目要比多模板具有的模板要少。如果这样一个多项目匹配多模板1610,并按本发明的修改/删除操作进行修改,则多模板1612中不止一个模板将用来修改或删除被修改多项目中的单项目。在这种情况下,多模板1612中的任何这样的模板(即对应与要修改的多项目的项目相匹配的多模板1610的模板的模板)表明一个删除操作(即为空)于是把要修改的多项目中的项目删除。否则,如果多模板1612中所有这样的模板表明修改操作,于是所有的模板都用于修改,修改次序由具有实施例决定,但总体上对修改/删除没多大关系。
(4)修改通知
关于原位修改,在按本发明的另一实施例中,用户能登记数据库中感兴趣的项目或多项目,并接受如前所述返回给用户或事件捕捉程序的通知。在此实施例中,当用户通过提供一个模板或多模板,表达对数据库中的项目或多项目的兴趣时,搜索引擎708不像前面所说的那样去监视输入的项目或多项目。当执行原位修改通知时,搜索引擎708监视数据库中已经被改变或修改的项目或多项目。有关原位修改,前面的通知操作和现在的通知操作之间的主要差别在于监视进入数据库的输入项目还是监视数据库中修改过的项目或多项目。但是通知的许多基本方面保持一样。
通常,模板1614或多模板1616用来登记对改变项目和多项目的兴趣。根据多项目或项目在原位修改期间的改变,搜索引擎708检验决定已改变的项目或多项目与登记的模板或多模板是否相匹配,或者已改变的多项目或项目是否从与模板或多模板相匹配转变到不相匹配。因此,该通知操作搜索匹配状态的转变,可以是从匹配到不匹配,或者从不匹配到匹配。
下面转向图20,它是搜索引擎708处理来自用户的一个通知请求监视已修改项目或多项目的改变所实施一整套方法的流程图。在这种情况下,用户发出通知请求,有兴趣登记数据库中指定的项目或多项目,来决定他们是否改变了相对于所提供模板1614或多模板1616的匹配状态。当一个项目或多项目被修改,它的匹配状态会发生转变,从与模板1614或多模板1616匹配转变到不匹配,或者从不匹配转变到匹配。当一个项目或多项目改变了它相对通知操作请求中的模板1614或多模板1616的匹配状态时,数据库管理程序704可随意通知用户或事件捕捉程序(参见图2)。当用户恳求一个通知请求时,要指定个租借时间,它表明数据库管理程序704将在多长时间内登记该通知。指定时间期满后,撤消通知登记。
这样,如图20所示,当数据库管理程序704受理一个新的通知请求时(步骤2002)在登记期内一直监视被修改的项目或多项目(步骤2004和2006)。如果项目数据库710中一个项目或多项目被修改,则搜索引擎708决定修改过的该项目或多项目是否还与受理通知请求中的模板1614或多模板1616匹配(步骤2008到2010)。搜索引擎708决定被修改的项目或多项目是不转变匹配状态,是从与请求中的模板或多模板匹配到不匹配,还是相反从不匹配到匹配。如果发生了匹配状态的转变,则要通知用户或事件捕捉程序(步骤2012)。在登记期内,已经被修改的追加项目或多项目继续在原位受到监视(步骤2004)。
类型安全属性匹配
按本发明的另一实施例包括属性,它表示数据库项目作为对象所能取的各种值。在此实施例中,通过属性与项目字段相联系,采用项目,多项目以及他们的操作就能实现类型安全匹配。类型安全匹配包含搜索数据库中不同类型属性,并允许属性被牢牢定型。还进一步允许强制属性之间的关系以及用类型有效参照和操作属性。
采用类型安全属性匹配,属性和名称相互严格相关(即,每分钟页数的属性仅与打印机有关)同时属性和他们的值也严格相关(即每分钟的页数仅与整数有关)类型安全属性匹配还允许强制属性对和他们的取值之间的关系,这就有可能在许多不同类型对象都存在单个数据库中时可利用类型来有效搜索对象。此外,虽说在数据库中存有许多不同类型的对象,但允许只对某一类型的对象进行修改。
按照本发明,通过项目字段的相关属性。实现类型安全属性匹配,项目字段内存有的值是该相关属性的值。因为这种情况下,一个项目,一组属性可用JavaTM的一个类来替代,该类将组和单个属性牢固定型。例如,下面举例说明项目表示一般打印机,字段表示打印机属性(即,每分钟的打印页数,分辨率等)以及项目表示更一般的信息,诸如名称,生产日期和物理位置:
public class Printer implement Entry{
Integer ppm; //页数/分钟
Integer dpi; //分辩率点/小时
Boolean duplex; //双面/单面
Boolean color; //彩色/黑白}public class Name implements Entry{
String name; //名称
String description;//描述
String language; //所用语言}public class Type implements Entry {
String type; //类型
String vendor; //卖主
String model; //产品的型号/名称
String version; //产品的版本号}public class Location implements Entry{
Integer floor; //层号
String building; //楼号
String room; 房间号}
可以看出字段和项目严格定型,这些字段和字段类型总是与这些项目和项目类型相关。例如,“ppm”或“每分钟的页数”是“整数”型。
进一步描述用一个多项目实现项。利用一个多项目,典型打印机亦可描述成一组属性集合。用这种方式描述一台典型打印机,附加方面可包括诸如位置、名称或机器类型,每个方面表示成多项目中的一个项目。上例中的项目集合形成一个多项目实例表示一台典型机的属性。
可用项目和多项目操作搜索和操作这些类型安全的属性集合。这些操作包括取、写、通知、读、项目修改、多项目追加、多项目修改/删除和修改通知。应注意按本发明的数据库系统还能完成其他众所周知数据库操作。
为示范起见,假设有两台不同的打印机,用下列数据库中的多项目描述。每台打印机可有用多项目中项目的字段相关属性描述的某些特性。此例中,一台打印机有一个英文名称叫“quick”和一个德国名称“Schnell”都与描述相关,从例中看出,它位于ABC大楼一层1202房间,并有相关的打印特性(如ppm=10,dpi=600等),这样一台打印机用下列多项目表示:Multi-Entry 1 =
{Name [name = "quick",
description = "yadal",
language = "English"],
Name [name = "schnell",
description = "yahdal",
language = "German"],
Location [floor = 1,
building = "ABC",
room = "1202"],Printer [ppm = 10,
dpi = 600,
duplex = true,
color = false]}
第二台打印机,英文名称为“Slow”,位于XYZ大楼2层101房间,亦有相关打印特性(如ppm=3,dpi=300等),该第二台打印机可用下列多项目表示:Multi-Entry 2 ={Name [name = "slow",
description = "yada2",
language = "English"],
Location [floor = 2,
building = "XYZ",
room = "101"],
Printer [ppm = 3,
dpi = 300,
duplex = false,
color = true]}
现在,假设要搜索返回具有项目字段表示的某些属性的所有打印机。例如,如果用户要寻找一台数据库里表示为位于XYZ大楼的彩色打印机、搜索中的多模板表示如下:Multi-Template 1 = {Location [floor = null,
building = "XYZ",
room = null],
Printer [ppm = null,
dpi = null,
duplex = null,
color = true]}
用户可调用多模板1作为参数的读操作。如果作用于包含多项目1和多项目2的数据库,从前例看到,代表第二台打印机的多项目2将被返回,因为在此可看出多模板1与多项目匹配。搜索引擎708搜索这数据库,旁通不正确类型的项,并将项目字段值与请求中的模板值相比较。其结果,仅返回具有正确属性值的多项目。这种类型安全匹配允许不同类型的对象存在同一数据库,并能对这些对象进行有效搜索。
至于采用类型安全属性匹配在数据库中所能完成的操作,假设需要对数据库中所有具有某些特征的项作类型安全修改。一种情况能用项目/多项目修改操作来修改数据库中的项。例如假设格式化后的一个请求为将任何位置的全部黑白(彩色=假)打印机改变到一定分辩率(如dpi 100)并删去位置属性。再调用多项目修改/删除操作取两个参数,一个多模板决定数据库要修改的多项目,一个多项目表明要作的改变,这两个参数能提供这些改变。参照前面的例子,多项目修改/删除操作的第一个参数可用如下的一个多模板表示:Multi-template 2 = { Location [floor = null,
building = null,
room = null],
Printer [ppm = null,
dpi = null,
duplex = null,
color = false]}
这多模板查找所有黑白打印机,而与他们的位置无关。最后为了修改所有多项目具有分辩率为100dpi的特性,并撤消位置属性,该修改/删除操作起始于如下请求。Multi-entry modify/delete(Multi-template 2,
{null,
Printer [ppm = null,
dpi = 100,
duplex = null,
color = null]})搜索引擎708找到数据库中所有与多模板2相匹配的多项目,并根据操作中第二个参数修改它们,类似于在多项目修改/删除操作方法中的讨论。前例中的多项目1与操作参数中用的多模板2相匹配,所以根据操作中的第二个参数来改变多项目1。此操作删除位置属性,用值100替代dpi属性,并给出修改过的多项目1:Multi-Entry 1 =
{Name [name = "quick",
description = "yadal",
language = "English"],
Name [name = "schnell",
description = "yahdal",
languege = "German"],
Printer [ppm = 10,
dpi = 100,
duplex = true,
color = false]}
因此搜索引擎找到数据库中所有具有请求类型的属性的项,并用类型安全方式修改它们,这样实现类型安全属性匹配。要注意这里表示的实例只为了说明的目的。
一旦充分懂得上述揭示,对那些本行业技术熟练的人员,许多变动和修改将会显而易见,下列权利要求被理解为包括所有这种变动和修改。
Claims (23)
1.一种在数据库中搜索项的方法,所述数据库存贮众多项,各个项包含多个项目,其特征在于,所述方法包括:
接受含多模板的请求,所述多模板是由多个模板组成;
将所述多模板和所述数据库中的项比较,决定所述项是否匹配所述多模板;以及
基于所述比较的结果,返回所述项。
2.如权利要求1所述的方法,其特征在于,其中所述比较步骤包括包括下列步骤:
将所述多模板中的各个模板和所述项中的所述项目比较,决定如果各个模板有一个匹配项目,则允许各个项目匹配多于一个模板。
3.如权利要求1所述的方法,其特征在于,还包括下列步骤:
重复所述比较步骤直到找到一个匹配或所述数据库中所有项都被比较过为止。
4.如权利要求3所述的方法,其特征在于,其中所述返回步骤包括下列步骤:
如果找不到匹配,则返回一个空值。
5.如权利要求1所述的方法,其特征在于,其中所述接受步骤还包括下列步骤:
接受对一个以上项的请求。
6.如权利要求5所述的方法,其特征在于,其中所述返回步骤包括下列步骤:
返回一个以上的项。
7.通知一个指定项到达数据库的一种方法,其特征在于,包括下列步骤:
接受请求,为指定项的到达,监视所述数据库,所述请求包括多模块;
根据项的到达,决定所述项是否匹配所述请求中的所述多模板;以及
基于所述决定返回通知。
8.如权利要求7所述的方法,其特征在于,其中所述接受步骤包括下列步骤:
接受包含租借时间的请求,所述租借时间表明所述数据库监视输入项的时间长度。
9.在数据库中搜索项的一种方法,所述数据库存贮众多项,各个项包含多个项目,其特征在于,所述方法包括:
提供包含多模板的请求,所述多模板包括多个模板;以及
基于所述多模板和所述数据库中项目的比较,接受匹配所述多模板的项。
10.如权利要求9所述的方法,其特征在于,其中所述请求包括取或读操作。
11.如权利要求9所述的方法,其特征在于,其中所述接受步骤包括下列步骤:
如果所述数据库不包含匹配所述多模板的项,则接受一个空值。
12.一种搜索数据库中项的方法,所述数据库存贮众多项,各个项包含多个项目,其特征在于,所述方法包括:
提供含有取或读操作和多模板的请求,所述多模板是由多个模板组成;
选择所述数据库的项与所述多模板比较;
通过所述多模板中各个模板与所述项中一个项的项目比较来比较所述多模板和所述数据库的所述项中的所述项中的一项,如果各个模板都有匹配项目,则允许各个项目匹配一个以上的模板;
基于所述比较的结果,返回所述项中的一项或一个空值。
13.如权利要求12所述的方法,其特征在于,还包括:
重复所述选择和比较步骤,直到找到匹配或所述数据库中所有项都被比较过为止。
14.搜索数据库中项的一种数据处理系统,其特征在于,所述系统包括:
CPU;
与CPU相耦合的存贮器,所述存贮器存贮含众多项的数据库,各个项含多个项目;
其中,所述存贮器存有CPU接受请求可执行的搜索程序,所述请求包含多模板,所述多模板四多个模板组成,
将所述多模板和所述数据库中的项比较,决定所述项是否匹配所述所述多模板;以及
基于所述比较的结果,返回所述项。
15.一种具有数据库的数据处理设备,所述数据库存有众多由多个项目组成的项,其特征在于,所述设备包括:
接受部件,配置成接受包含由多个模板组成的多模板的请求;
比较部件,配置成比较所述多模板和所述数据库的一项,决定所述项是否匹配所述多模板,以及
返回部件;配置成基于所述比较的结果返回所述项。
16.如权利要求15所述的设备,其特征在于,其中所述比较部件包括:
比较部件,配置成比较所述多模板中的各个模板和所述项中的所述项目,决定如果各个模板有一个匹配项目,则允许各个项目匹配一个以上的模板。
17.如权利要求15所述的设备,其特征在于,还包括:
重复部件,配置成重复所述比较步骤直到找到匹配或所述数据库中所有项都被比较过为止。
18.一种具有数据库的数据处理设备,所述数据库存贮众多由多个项目组成的项,其特征在于,所述设备包括:
提供部件,配置成提供包含由多个模板组成的多模板的请求,以及
接受部件,配置成基于所述多模板和所述数据库中项目的比较,接受和多模板匹配的项。
19.一种包含计算可读媒体的计算机程序产品,所述媒体具有处理数据库中数据用的具体化的计算机可读代码,其特征在于,所述处理数据库中数据按下列步骤进行:
接受包含由多个模板组成的多模板的请求;
将所述多模板和所述数据库中项比较决定所述项是否匹配所述多模板;以及
基于所述比较的结果,返回所述项。
20.如权利要求19所述的产品,其特征在于,其中所述比较还包括:
将所述多模板中的各个模板和项中项目比较,决定如果各个模板有匹配项目,则允许各个项目匹配一个以上的模板。
21.如权利要求19所述的产品,其特征在于,还包括:
重复所述比较步骤,直到找到匹配或所述数据库中所有项都被比较过为止。
22.一种含计算机可读媒体的计算机程序产品,所述媒体具有用于处理数据库中数据的具体化的计算机可读代码,其特征在于,所述处理数据库中数据按下列步骤进行:
提供包含由多个模板组成的多模板的请求;以及
基于所述多模板和数据库中项目的比较,接受与所述多模板匹配的项。
23.一种含计算机可读媒体的计算机程序产品,所述媒体具有用于处理数据库中数据的具体化的计算机可读代码,所述计算机可读媒体包括:
接受包含由多个模板组成的多模板的请求的装置;
比较所述多模板与数据库的项、决定所述项与所述多模板是否匹配的装置,以及
基于所述比较的结果、返回所述项的装置。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US7604898P | 1998-02-26 | 1998-02-26 | |
US60/076,048 | 1998-02-26 | ||
US09/044,835 | 1998-03-20 | ||
US09/044,835 US6182083B1 (en) | 1997-11-17 | 1998-03-20 | Method and system for multi-entry and multi-template matching in a database |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1298523A true CN1298523A (zh) | 2001-06-06 |
Family
ID=26722048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN99805367A Pending CN1298523A (zh) | 1998-02-26 | 1999-02-25 | 数据库中多项目和多模块匹配方法和系统 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP1057123A1 (zh) |
JP (1) | JP2002505484A (zh) |
KR (1) | KR20010041366A (zh) |
CN (1) | CN1298523A (zh) |
AU (1) | AU2878399A (zh) |
WO (1) | WO1999044157A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100373973C (zh) * | 2004-08-23 | 2008-03-05 | 中兴通讯股份有限公司 | 移动通信系统单板预定义定时器管理方法 |
CN100447780C (zh) * | 2003-10-23 | 2008-12-31 | 微软公司 | 存储和检索在定义类型的数据库存储外的用户定义类型的字段的系统和方法 |
CN101084499B (zh) * | 2004-09-15 | 2010-06-16 | 国际商业机器公司 | 用于搜索和存储数据的系统和方法 |
CN101150545B (zh) * | 2007-10-18 | 2011-04-20 | 中兴通讯股份有限公司 | 一种媒体网关多模块数据配置下的数据分发方法 |
CN102067118A (zh) * | 2008-03-14 | 2011-05-18 | Abb技术有限公司 | 用于存储分别属于包含多个属性的警告或事件消息的数据的方法和装置 |
CN102713834A (zh) * | 2009-11-13 | 2012-10-03 | 起元技术有限责任公司 | 管理记录格式信息 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100882274B1 (ko) * | 2007-11-08 | 2009-02-06 | 아주대학교산학협력단 | 부분 동적 시간 정합을 이용한 이미지 검색 장치 및 방법 |
-
1999
- 1999-02-25 WO PCT/US1999/004146 patent/WO1999044157A1/en not_active Application Discontinuation
- 1999-02-25 JP JP2000533838A patent/JP2002505484A/ja active Pending
- 1999-02-25 EP EP99909614A patent/EP1057123A1/en not_active Withdrawn
- 1999-02-25 AU AU28783/99A patent/AU2878399A/en not_active Abandoned
- 1999-02-25 CN CN99805367A patent/CN1298523A/zh active Pending
- 1999-02-25 KR KR1020007009484A patent/KR20010041366A/ko not_active Application Discontinuation
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100447780C (zh) * | 2003-10-23 | 2008-12-31 | 微软公司 | 存储和检索在定义类型的数据库存储外的用户定义类型的字段的系统和方法 |
CN100373973C (zh) * | 2004-08-23 | 2008-03-05 | 中兴通讯股份有限公司 | 移动通信系统单板预定义定时器管理方法 |
CN101084499B (zh) * | 2004-09-15 | 2010-06-16 | 国际商业机器公司 | 用于搜索和存储数据的系统和方法 |
CN101150545B (zh) * | 2007-10-18 | 2011-04-20 | 中兴通讯股份有限公司 | 一种媒体网关多模块数据配置下的数据分发方法 |
CN102067118A (zh) * | 2008-03-14 | 2011-05-18 | Abb技术有限公司 | 用于存储分别属于包含多个属性的警告或事件消息的数据的方法和装置 |
CN102067118B (zh) * | 2008-03-14 | 2013-11-20 | Abb技术有限公司 | 用于存储分别属于包含多个属性的警告或事件消息的数据的方法和装置 |
CN102713834A (zh) * | 2009-11-13 | 2012-10-03 | 起元技术有限责任公司 | 管理记录格式信息 |
CN102713834B (zh) * | 2009-11-13 | 2016-03-30 | 起元技术有限责任公司 | 管理记录格式信息 |
US10445309B2 (en) | 2009-11-13 | 2019-10-15 | Ab Initio Technology Llc | Managing record format information |
Also Published As
Publication number | Publication date |
---|---|
KR20010041366A (ko) | 2001-05-15 |
EP1057123A1 (en) | 2000-12-06 |
JP2002505484A (ja) | 2002-02-19 |
AU2878399A (en) | 1999-09-15 |
WO1999044157A1 (en) | 1999-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100347696C (zh) | 企业业务过程管理的方法和系统 | |
CN1138222C (zh) | 在线数据库挖掘的方法和设备 | |
US7359897B2 (en) | System and method for document management and retrieval | |
CN1786955A (zh) | 用于管理相互相关的数据对象的方法和系统 | |
CN1392954A (zh) | 缺陷知识库 | |
CN1279440C (zh) | 卸载系统 | |
CN1139885C (zh) | 数据检索装置 | |
CN1759397A (zh) | 对数据的函数应用的结果进行结构化索引 | |
CN101080714A (zh) | 用于由数据库服务器执行文件操作的基础结构 | |
CN1132564A (zh) | 用于数据存储与检索的方法与装置 | |
CN1310824A (zh) | 用于数据仓库的选择聚集层和交叉产品层的方法和装置 | |
CN1327195A (zh) | 用于访问在一个网络上的信息的方法和系统 | |
CN1229749C (zh) | 图像形成系统及图像形成方法 | |
CN101036141A (zh) | 具有持久性、用户可访问的位图值的数据库管理系统 | |
CN1337026A (zh) | 用于表达频道化数据的系统和方法 | |
CN1265207A (zh) | 生成2000年测试例的系统和方法 | |
CN1613047A (zh) | 文件系统外壳 | |
CN1276575A (zh) | 数据库存取系统 | |
CN1677399A (zh) | 分级数据库管理的系统、方法和程序 | |
CN1794645A (zh) | 基于程序行为的入侵检测方法与系统 | |
CN101069181A (zh) | 存储设备和记录介质 | |
CN1866260A (zh) | 向用户可操作设备提供程序的方法和系统 | |
CN1533149A (zh) | 图像处理系统 | |
CN101079940A (zh) | 多功能外设和包括多个多功能外设的信息获取系统 | |
CN1203430C (zh) | 数据管理系统和数据管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C01 | Deemed withdrawal of patent application (patent law 1993) | ||
WD01 | Invention patent application deemed withdrawn after publication |