CN1298525A - 用于安全类型属性匹配的方法和*** - Google Patents

用于安全类型属性匹配的方法和*** Download PDF

Info

Publication number
CN1298525A
CN1298525A CN99805495A CN99805495A CN1298525A CN 1298525 A CN1298525 A CN 1298525A CN 99805495 A CN99805495 A CN 99805495A CN 99805495 A CN99805495 A CN 99805495A CN 1298525 A CN1298525 A CN 1298525A
Authority
CN
China
Prior art keywords
subclauses
clauses
template
database
type
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
Application number
CN99805495A
Other languages
English (en)
Inventor
R·谢夫勒
K·C·R·C·阿诺德
J·H·瓦尔多
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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
Priority claimed from US09/044,954 external-priority patent/US5988426A/en
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of CN1298525A publication Critical patent/CN1298525A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • H04L12/427Loop networks with decentralised control
    • H04L12/433Loop networks with decentralised control with asynchronous transmission, e.g. token ring, register insertion
    • 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/289Object oriented databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种数据库***,其中一个或多个条目数据库存储了多个条目。每个条目具有给定的类型,该类型定义了条目的字段。每个字段包含或识别带相关属性或数据的对象。每个条目的类型可以进一步以方法的形式定义行为。作为另一子类型的条目类型继承了它的超级类型的字段和行为,并且包含新增的字段并/或定义新的或修改的行为。条目可以以JavaTM编程语言表达为。数据库***可进一步采用搜索引擎,允许在数据库内对条目查询。在一个实现方案中,查询包括读取操作、提取操作和通知操作。每个条目请求包括指示操作类型的命令和作为条目对象的模板,条目对象包含设定为必须精确匹配的特定值的一些或全部字段。模板条目的其他字段可以定义为通配符,其数值无关紧要。搜索引擎可以进一步配置为创建一个索引,用于高速缓冲被查询公共定义的特性的条目索引。即,搜索引擎可以检测用法的模式并且创建指向具有接收模板共同定义的属性的条目索引,这些属性由查询规定在一个实施例中,数据库还可对一组属性存储和操作。此外,将属性与条目字段相关允许***取得类型安全的属性匹配。

Description

用于安全类型属性匹配的方法和***
相关申请
本申请是1997年11月17日提交的美国专利申请No.08/971,529的延续部分,它作为参考文献包含在文本中。
现引证下列美国专利申请作为本申请依据并归并于本申请中。
1998年2月26日申请的发明名称为“分布式计算***”(“DistributedComputing System”)的临时美国专利申请U.S.Ser.No.:60/076,048。
上述相同日期申请的发明名称为“用于租用存储的方法和***”(“Methodand System for Leasing Storage”)(标注有代理人案卷号No.:06502.0011-01000)的美国专利申请U.S.Ser.No.:09/044,923。
上述相同日期申请的发明名称为“分布式***中用于委派证租用的方法、装置和产品”(“Method,Apparatus,and Product for Leasing of DelegationCertificates in a Distributed System”)(标注有代理人案卷号No.:06502.0011-02000)的美国专利申请U.S.Ser.No.:09/044,838。
上述相同日期申请的发明名称为“分布式***中用于团体会员资格租用的方法、装置和产品”(“Method,Apparatus,and Product for Leasing of GroupMembership in a Distributed System”)(标注有代理人案卷号No.:06502.0011-03000)的美国专利申请U.S.Ser.No.:09/044,834。
上述相同日期申请的发明名称为“故障检测的租用”(“Leasing forFailure Detection”)(标注有代理人案卷号No.:06502.0011-04000)的美国专利申请U.S.Ser.No.:09/044,916。
上述相同日期申请的发明名称为“基于事件的***中用于传输行为的方法”(“Method for Transporting Behavior in Event Based System”)(标注有代理人案卷号No.:06502.0054-00000)的美国专利申请U.S.Ser.No.:09/044,933。
上述相同日期申请的发明名称为“分布式***中对象的延迟重组和事件通知的远程装载”(“Deferred Reconstruction of Objects and Remote Loadingfor Event Notification in a Distributed System”)(标注有代理人案卷号No.:06502.0062-01000)的美国专利申请U.S.Ser.No.:09/044,919。
上述相同日期申请的发明名称为“用于远程方法启用的方法和装置”(“Methods and Apparatus for Remote Method Invocation”)(标注有代理人案卷号No.:06502.0102-00000)的美国专利申请U.S.Ser.No.:09/044,938。
上述相同日期申请的发明名称为“用于确定性散列识别远程方法的方法和***”(“Method and System for Deterministic Hashes to identify RemoteMethods”)(标注有代理人案卷号No.:06502.0103-00000)的美国专利申请U.S.Ser.No.:09/045,652。
上述相同日期申请的发明名称为“用于确定分布式***内远程对象状态的方法和装置”(标注有代理人案卷号No.:06502.0104-00000)的美国专利申请U.S.Ser.No.:09/044,790。
上述相同日期申请的发明名称为“分布式***中用于执行与远程过程调用相关联的处理的可下载智能代理”(“Downloadable Smart Proxies forPerforming Processing Associated with a Remote Procedure Call in aDistributed System”)(标注有代理人案卷号No.:06502.0105-00000)的美国专利申请U.S.Ser.No.:09/044,930。
上述相同日期申请的发明名称为“远程方法的挂起和继续”(“Suspensionand Continuation of Remote Methods”)(标注有代理人案卷号No.:06502.0106-00000)的美国专利申请U.S.Ser.No.:09/044,917。
上述相同日期申请的发明名称为“数据库中用于多入口以及多模板匹配的方法和***”(“Method and System for Multi-Entry and Multi-TemplateMatching in a Database”)(标注有代理人案卷号No.:06502.0107-00000)的美国专利申请U.S.Ser.No.:09/044,835。
上述相同日期申请的发明名称为“数据库中用于原地修改的方法和***”(“Method and System for In-Place Modifications in a Database”)(标注有代理人案卷号No.:06502.0108)的美国专利申请U.S.Ser.No.:09/044,839。
上述相同日期申请的发明名称为“分布式***中动态查询业务”(“DynamicLookup Service in a Distributed System”)(标注有代理人案卷号No.:06502.0110-00000)的美国专利申请U.S.Ser.No.:09/044,931。
上述相同日期申请的发明名称为“分布式***中提供可下载代码用于与一设备通信的装置和方法”(“Apparatus and Method for Providing DownloadableCode for Use in Communicating with a Device in a Distributed System”)(标注有代理人案卷号No.:06502.0112-00000)的美国专利申请U.S.Ser.No.:09/044,939。
上述相同日期申请的发明名称为“便于访问查询服务的方法和***”)(标注有代理人案卷号No.:06502.0113-00000)的美国专利申请U.S.Ser.No.:09/044,826。
上述相同日期申请的发明名称为“分布式***中用于动态验证信息的装置和方法”(“Apparatus and Method for Dynamically Verifying Informationin a Distributed System”)(标注有代理人案卷号No.:06502.0114-00000)的美国专利申请U.S.Ser.No.:09/044,932。
1998年2月26日申请的发明名称为“用于网络上动态分布式计算的方法和装置”(“Method and Apparatus for Dynamic Distributed Computing Overa Network”)的美国专利申请U.S.Ser.No.:09/030,840。
上述相同日期申请的发明名称为“永久性共享存储空间的交互式设计工具”(“An Interactive Design Tool for Persistent Shared Memory Spaces”)(标注有代理人案卷号No.:06502.0116-00000)的美国专利申请U.S.Ser.No.:09/044,936。
上述相同日期申请的发明名称为“基于多形态令牌的控制”(“PolymorphicToken-Based Control”)(标注有代理人案卷号No.:06502.0117-00000)的美国专利申请U.S.Ser.No.:09/044,934。
上述相同日期申请的发明名称为“基于堆栈的访问控制”(“Stack-BasedAccess Control”)(标注有代理人案卷号No.:06502.0118-00000)的美国专利申请U.S.Ser.No.:09/044,915。
上述相同日期申请的发明名称为“基于堆栈的安全要求”(“Stack-BasedSecurity Requirements”)(标注有代理人案卷号No.:06502.0119-00000)的美国专利申请U.S.Ser.No.:09/044,944。
上述相同日期申请的发明名称为“安全要求的按方法指定”(“Per-MethodDesignation of Security Requirements”)(标注有代理人案卷号No.:06502.0120-00000)的美国专利申请U.S.Ser.No.:09/044,837。
发明领字段
本发明涉及数据库***,特别涉及数据库***内的条目存储。本发明还涉及用于数据库***的查询匹配的方法学。
背景技术
数据库***在今日社会中担负着越来越重要的角色。典型数据库***存储的数据量正在缓慢增长,并且对数据进行快速和灵活的访问通常是关键的。但是设计数据库***优化运行的工作是困难的。
数据库设计中特别重要的考虑是存储数据从而可以用于各种应用并且可以快速和方便地改变使用方式。进一步的需求是在不明显影响数据库***其他部分的前提下增加其他的数据类型或分类。
遗憾的是,在许多数据库***中改变对数据的使用和组织方式并且允许新增的数据类型和分类特别困难。修改可能引发数据库***程序和其他单元的一连串变化,因此实现的代价可能超出意外。因此数据处理一直趋向于局限在旧的数据结构中。此外,数据库***的设计者总是在设计的两个方面之间作出众多的折衷考虑,由此导致设计优化程度的降低。
为了作进一步的阐述,通常利用精确的类型完成数据库***内的信息存储;即存储在数据库***内的记录一般具有一定数量和类型的字段,例如关系数据库关系中的元组。每个字段可以定义为存储特定类型的数据,例如串数据、布尔数据或所需的一些其他数据类型。如果用户需要在数据库中查询信息,则用户必须查询精确的记录类型(即不同类型记录一般被独立搜索)。因此如果搜索者感兴趣的数据可以是几个不同类型中一个记录,则搜索者必须预先知道存在的是哪一个记录类型或者有某种明示的方式要求所有类型。搜索者随后需要明确地查询所有可能的记录类型以寻找特别感兴趣的记录。这加剧了与搜索引擎相关的软件的复杂度并且可能限制可维护的不同记录类型的数量。
而且数据库中记录内的字段一般不引用其他记录。这减少了单个记录一般保存的信息量和类型。因此数据库受到无法存储和操作作为记录组的记录的限制。
此外,典型数据库内的记录通常与实际数据本身中分离的特性不相关。例如,当找到数据时,没有一种方式使行为与随记录类型改变的记录相关,因此使得程序可以使用实现记录类型特定结果的单个方式下匹配返回的各种记录。
考虑到数据库***的另一方面,数据库中定义属性或性质的通常方式是利用简单的一组<名称,数值>对,数值局限于串或者任意类型(类型“任何”)。没有办法来限制这些<名称,数值>对的类型,因此并不强制特定的名称必须具有特定类型的数值。例如在假想打印机中,“速度”属性代表打印机每分钟可以打印的页数,应该强制为整数以保证用户不会设定为其他值,例如“大约10ppm”或者“8-10”。如果数值可以是任何类型的对象,则存在同样的问题。在该情况下,用户可以将属性设定为整数对象而代替串对象,但是仍然无法避免另一用户在应该设定为整数的属性内不正确地存储串对象。
而且先前的***没有强化规定不同属性之间的关系(即如果且只是在另一属性存在时才存在一个属性)。例如,对于打印机给出了三种示意性的属性:分辨率(点/英寸)、速度(页/每分钟)和颜色(黑与白),实际上许多打印机可以完成这些属性不同的组合。例如典型的彩色打印机可以描述如下:
黑白颜色下600点/英寸下5页/分钟;
黑白颜色下300点/英寸下7页/分钟;
彩色下300点/英寸下1页/分钟。
而给定属性可以具有多个数值,有些普通的***使得属性可以具有多个数值,并且这些***可以下列方式代表给定属性:
速度={1,5,7}
分辨率={300,600}
颜色={真,假}
但是这并不表示属性对之间的相互关系。对于三种相互关系没有表示形式和规定:
{速度:1,分辨率:300,颜色:真值}
{速度:7,分辨率:300,颜色:伪值}
{速度:5,分辨率:600,颜色:伪值}
因此需要提供允许多词态条目、条目匹配和操作(包括条目集)的数据库***,从而可以高效搜索和简化软件实现方案,这里存在许多不同的类型。进一步需要提供一种***,其中条目可以根据类型定义自己的行为。此外需要在数据库***内具有类型安全的属性匹配并强化属性之间的关系。
发明内容
上述问题由按照本发明的存储和搜索数据库内条目的方法和***解决。在一个实施例中,计算机***实现了数据库***,其中一个或多个入口数据库存储了多个条目。每个条目具有给定的类型,定义了条目的字段。每个字段包含或标识带相关属性或数据的对象。每个条目的类型可以进一步以条目要实现的方法的形式定义行为。作为另一子类型的条目类型继承了其超级类型的字段和行为,并且包含新增的字段并/或定义新的或修改的行为。条目可以表达为JavaTM编程语言的JavaTM类。同样,在一个实现中,每个字段表示为定义的类。
数据库***可进一步采用搜索引擎,允许对数据库内条目查询。在一个实现方案中,查询包括读取操作、提取操作和通知操作。每个条目请求包括指示操作类型的命令和作为条目对象的模板,条目对象包含设定为必须精确匹配的特定值的一些或全部字段。模板条目的其他字段可以定义为通配符,其数值无关紧要。多词态条目和条目匹配技术有利于使查询导致字段模板条目类型或者模板条目子类型相同的条目的匹配。这使得可以高效搜索并简化搜索引擎实现方案。而且搜索引擎无需意识到所有可能存在的子类型。最后,由于每个条目具有相关的类,所以条目可以通过支持一种或多种方法定义其自己的行为。特定条目的方法可以被程序调用以实现诸如等价检查之类的各种功能。
搜索引擎可以进一步配置为创建具有被查询公共定义的特性的条目索引。即,搜索引擎可以检测用法的模式并且创建指向具有接收模板共同定义的属性的条目索引。这样,可以加快条目搜索。
此外,搜索引擎可以进一步配置为在单个记录内存储一组条目。这些条目组可以利用模板组匹配。
在一个实现方案中,使属性与条目字段相关使得采用条目匹配和条目组匹配的数据库***可以实现安全类型的属性匹配。类型安全属性匹配使得数据库***可以检测属性类型并强化不同类型属性之间的关系。
附图简述
图1为采用按照本发明的数据库***的分布式计算机***;
图2为按照本发明的多个客户机和多个条目数据库之间示意性通信的示意图;
图3为几个条目的示意图,每个包括按照本发明的特定类型的字段。图3进一步示出了另一条目子类型的条目;
图4为按照本发明的数据库***支持的各种操作的示意图;
图5为按照本发明的示意性模板条目的示意图;
图6为示出了在特定条目数据库内搜索条目以响应按照本发明的读取请求或提取请求的方法实现的流程图;
图7为按照本发明的数据库***的功能框图;
图8为流程图,它示出了搜索方法学的实现以处理按照本发明的通知请求;
图9A和9B示出了按照本发明的索引方法学的实现方案;
图10为示出几个多条目的示意图,每个多条目包括包含条目的字段;
图11为按照本发明的数据库***支持的各种多条目操作的示意图;
图12为按照本发明的示意性多模板的示意图;
图13为搜索按照本发明的多条目数据库的方法的流程图;
图14为按照本发明的多条目搜索实例有关的数据库***的功能图;
图15为搜索方法学的本发明实现方案以处理多个条目通知请求的流程图;
图16为按照本发明的数据库内各种修改数据库内条目和多条目的操作的示意图;
图17为按照本发明的单个条目修改操作步骤的流程图;
图18为按照本发明的多条目加入操作步骤的流程图;
图19为按照本发明的多条目修改/删除操作的流程图;以及
图20为按照本发明的用于修改操作的通知操作的流程图。
虽然本发明易于修改和采用各种形式,但是以下将借助实施例作详细描述。应该理解的是,附图和说明书对本发明并无限定作用,本发明的精神和范围由所附权利要求限定。
实施发明的较佳方式
按照本发明的方法和***存储和搜索数据库内的条目。每个条目是定义类型字段的给定类型,并且每个字段包含或识别给定类型对象。这些条目可以JavaTM编程语言的JavaTM类表示。此外,按照本发明的方法和***也可以在数据库内存储和搜索条目组。通常,这些搜索利用模板组完成。
在一个实现方案中,属性与条目字段相关。这种关联允许安全类型属性匹配并且强化规定不同属性类型之间的关系。
分布式***
参见附图,图1为分布式***100的示意图,其中可以采用按照本发明的多词态条目、条目匹配和条目操作。图1示出了由网络105互连的多个计算机***101-103。网络105例如是局字段网(LAN)、广字段网(WAN)或者因特网。每种计算机***包括存储器和微处理器,例如示意性的计算机***101的存储器120和CPU122。存储器120代表各种类型可能的存储器,例如硬盘存储器、软盘存储器和动态随机存储器(DRAM)。以一个或多个CD ROM或软盘(其他存储介质)为例的安装介质126进一步表示为与计算机***101相关。安装介质126通常可以存储实现搜索引擎部分和下述数据库其他方面的代码和/或数据并且可以用来在特定计算机内部安装代码和/或数据。值得指出的是,在其他实施例中,按照本发明的数据库***可以在单个无网络的计算机***内实现。
如下所述,计算机***100实现了数据库***,其中利用面向对象技术来存储可能的类型或子类型条目。该数据库也可以存储称为多条目的条目组,在单个条目实现方案之后将对此描述。数据库的条目可以仅仅存储在计算机***101的存储器122内部或者可以跨几个不同***的存储器(例如存储器122和计算机***102和103的类似存储器)分布。每个条目是定义了条目字段的给定类型。每个字段包含或识别字段属性或数据相关的对象。每个条目的类型可以进一步以方法的形式定义行为。作为另一子类型的条目类型继承了超级类型的所有字段和行为并且包含新增的字段和/或定义新/修改的行为。
数据库***进一步采用以软件实现的搜索引擎,允许以数据库内的条目(或者下面的多条目)为基础进行查询。在实现方案中,每个查询包括定义给定条目关键字段的数值(或属性)的模板,给定条目必须匹配模板的对应字段从而成功匹配。模板条目的其他字段可以定义为通配符,其数值无关紧要。计算机***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类表示的对象类型组。在KenArnold、James Gosling的JavaTM编程语言(Addison-Wesley,1996)中描述了JavaTM编程语言,它作为参考文献包含在本文中。JavaTM是太阳微***股份公司在美国和其他国家的注册商标。但是应该理解的是,在其他实施例中条目可以在其他编程语言的类中被定义。
图3的条目1包括一组由条目1的类类型定义的4个字段(字段A、字段B、字段C和字段D)。条目2包括一组由条目2的类类型定义的5个字段(字段A、字段B、字段C、字段D和字段E)。值得注意的是,由于条目2除了其他字段之外还包含了字段条目1相同的字段类型,所以条目2是条目1类型的子类。
条目3包括一组由条目3的类类型定义的4个字段(字段W、字段X、字段Y和字段Z)。值得注意的是,虽然条目1和3的每个包含了4个字段,但是由于他们的字段类型是不相同的,所以他们代表不同的类型。
众多其他类型和子类型可以根据特定应用或数据库的需要进一步与数据库***相关。此外值得注意的是,条目可以是子类型的子类型。为了示例起见,下列代码示出了在JavaTM编程语言中定义的具体的示意条目:
购书的“请求出价”对象:
public class RFB implements Entry {

        public Integer order number;\\ The buyer's tracking number for

                                          this order.

        public String  title;    \\    The title of the book.

        public Integer count;     \\   The number of copies desired.
“完整的”请求出价包括ISBN:
public class FullRFB extends a RFB {

         public String isbn;\\  The ISBN field.
}
参见图3,条目的每个字段配置为存储指向或识别类型对象的数值。这些类型对象的每一个同样表达为JavaTM类。例如条目1的字段A包含了识别对象310的数值,而条目1的字段B识别对象312。同样,条目2的字段A识别对象314,而字段B识别对象316,等等。值得注意的是,由于条目2为条目1的子类,所以对于图3的示意性条目,字段条目1的字段A相关的对象310由字段条目2的字段A相关的对象314的同一类类型表示。但是与对象310和314的每一个相关的属性或数据可以不同。进一步需要指出的是,各种条目的字段识别的对象可以根据所定义类型的需要包含整数数据、布尔数据、串数据或其他数据类型。而且主要进一步指出的是,由于每个字段与类型对象相关,所以方法可以得到支持并且经外部刺激选择启用以根据需要完成对数据的操作。同样,每个条目类型如下所述可以支持一种或多种方法。
参见图2,如上所述,条目数据库206、207和208中的每一个可以存储子类的各种类型的许多条目。一个条目可以经客户启用的写入操作存储在给定条目数据库206-208内。条目可以经安装介质(例如图1的安装介质1)另外提供给条目数据库。
几种另外的操作进一步得到如同4所示***的支持。特别是,除了写入操作意外,客户或用户可以启动“读取”操作、“提取”操作或“通知”操作。
读取、提取和通知操作被用来查询特定的条目数据库以确定带某些特定特性的条目是否写入条目数据库,并且如果是,则导致具体的行动。在一个特定实现方案中,这些查询通过采用作为定义条目类型(字段操作有关)的操作请求部分的模板进行。可以启动读取操作以读取匹配相关模板的条目数据库内的条目。提取操作与读取类似;但是提取操作将从条目数据库中去除匹配模板的条目。最后,通知操作在匹配相关模板的特定条目数据库的将来输入条目中注册兴趣。当匹配条目到达时,通知客户或具体的事件捕捉器。以下将描述有关这些操作的细节。
图5示出了示意性模板。通常,模板定义了其字段可以具有数值(对象引用)或“通配符”的特定条目类型。当将条目数据库内的特定条目考虑为对模板的潜在匹配时,条目具体字段(即不对应模板的通配符字段)的属性必须精确匹配模板对应字段定义的属性(或者落在可能的属性范围内)。对应模板“通配符”字段的条目的字段可以具有任何属性并且不影响匹配输入(即模板内的通配符匹配条目同一字段的任何数值)。在一个实现方案中,通配符借助空引用值定义。如下所述,匹配模板的条目类型可以是模板类型的子类型。因此将子类型定义的特定条目的所有字段考虑为通配符。这使得模板可以匹配任何子类型的条目。值得指出的是,无通配符的条目可以进一步是有效模板。
图6为示出了在特定条目数据库内搜索条目以响应按照本发明的读取请求或提取请求的方法的流程图。如上所述,读取请求可以由客户(或用户)启动以读取匹配给定模板的条目。提取请求可以被启动以从条目数据库去除匹配给定模板的的条目。
(1)条目匹配的方法
以下结合图7描述图6所示步骤,图7示出了采用图6搜索方法学的数据库***的功能。图7的功能单元可以通过与图1的一个或多个计算机***101-103相关的软件与硬件的组合实现。在步骤602中,由用户702向数据库管理器704提供读取或提取请求。给定的请求包括特定的模板,图7示出了示意性的模板706。数据库管理器704的搜索引擎708随后在步骤604中搜索条目数据库710以确定模板的匹配类型或子类型是否驻留在条目数据库710中。如果条目数据库710内没有与模板同一类型或子类型的条目(步骤606),则数据库管理器704在步骤608中向用户702返回空值。
如果搜索引擎708确定匹配模板类型或子类型的条目数据库内有一个或多个条目,则它将(同一类型或子类型的)选定条目的字段与未指定为通配符的模板706的对应字段比较(步骤610)。搜索引擎708舍弃对应模板通配符字段的选定条目的任何字段(步骤612)。在特定的实现方案中,搜索引擎708确定与条目的每个非通配符字段相关的属性或数据是否与对应的模板条目的属性或数据精确匹配。如果不是通配符的任何字段的属性并不精确匹配模板的属性,则确定没有条目匹配。指定注意的是,在其他实施例中,模板字段可以定义对应字段的数据必须导致匹配的数值范围(而不是要求精确匹配)。
(2)实例
在图7所示的实例中,模板706的字段C定义为通配符。因此当搜索引擎708搜索匹配条目的条目数据库710时,搜索引擎首先确定任何条目是否驻留在作为模板706的类型或子类型的条目数据库710内。条目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接收查询请求的情况(每个请求利用图7所示模板706的同一类型或子类型的模板)。在这种情况下,搜索引擎708可以检测到字段A同样属性的值(例如整数值1000)在众多请求的每个模板内定义。在一个实现方案中,数据库管理器704配置为检测这种由许多请求定义的公共模板用法并创建指向条目数据库710内所有条目的索引720,数据库710与公共接收模板同一类型或子类型并且具有字段A定义的公共属性。因此当接收带相似模板的新查询时(即再次定义字段A的数值1000的模板),搜索引擎708可以采用索引720快速定位字段模板匹配的条目子集而无需搜索数据库内整个条目集。
图9A和9B示出了索引方法学的实现方案。如图9A所示,对应特定模板类别的条目的索引可以通过跟踪请求模板(步骤910)并确定与模板相关的模式是否存在(例如以相同属性或数值定义的特定非通配符字段)而创建(步骤912)。可以例如根据在具有类似模板的特定时间内接收预定数量的查询或者根据接收具有类似模板的查询的一定百分比作出判断。当搜索引擎708检测公共的模板用法模式时,它创建特定模板类别的条目的索引(步骤914)。因此考虑到上述实例,搜索引擎708可以创建对同一类型或子类型的条目的索引作为带数值为1000的字段A的模板706。
如图9B所示,如果在步骤920中接收到新的请求,则如果不存在特定模板类别的索引则完成正常搜索(步骤922和924)。如果存在新请求模板的索引类别,则利用索引寻找可能匹配条目的子集并且仅仅比较这些条目。这样,可以适应快速条目搜索。值得注意的是,如果不再检测到公共用法,则搜索引擎708可以随后删除某些索引。
如上所述,条目类型可以进一步定义被外部刺激启用的方法(例如与数据库***相关的软件程序)以导致特定的动作。这种特定动作可能影响驻留在条目中的数据。此外,可以采用一种方法进行高效的等价检查以确定特定条目是否与其他(等价于模板)等价,即使数据形式是不同的。例如存储解压缩视频数据的条目可能被视为与另一存储压缩形式视频数据的条目等价。可以提供一种方法来确定这种条目等价,即使实际存储的数据是不同的(例如可以启用方法来确定对象是否指向与图像相关的文件***内的同一路径名)。
进一步指出条目可以存储在包括条目类的序列化形式和每个条目字段的特定实现表示中。模板的序列化形式随后可以与条目的序列化形式比较。最后注意的是,条目可以由另一条目的字段定义。
多条目和多模板匹配
替换实施例实现了数据库内项目的操作和匹配,每个条目定义了条目组。“项目”称为“多条目”;“多模板”(或者“项目模板”)是用来指向模板组的项目,被用来匹配数据库内的项目。该部分将进一步,描述多条目与多模板的匹配和涉及多条目和多模板的操作。多条目和多模板的许多行为与前述单个条目和模板行为类似。
图10为可以存储在条目数据库206-208内的多个示意性多条目的示意图。在按照本发明的方法和***中,每个多条目是条目组,每个条目是以JavaTM编程语言的JavaTM类表示的对象类型组。换句话说,多条目是条目集合并且没有自己的类型。
参见图10,多条目1包括一个4单元组(单元A、单元B、单元C和单元D)。而多条目可以是变长度的,示意性的多条目1包括一个5单元组(单元E、单元F、单元G、单元H和单元I),并且示例的多条目3包括一个3单元组(单元J、单元K和单元L)。每个多条目单元配置为存储类型化条目。如上所述,每个类型化条目可以用JavaTM类表示并且条目字段存储识别类型化对象的数值。例如,多条目1的单元A包含识别条目1010的数值,并且多条目1的单元B包含识别条目1012的数值。同样多条目2的单元E包含识别条目1014的数值,而多条目2的单元F包含识别条目1016的数值,等等。值得注意的是,对于图10的示意性多条目,虽然条目可以有同样的类型,但是与条目字段相关的属性或数据可以不同。进一步指出虽然各种多条目单元识别的条目具有特定的类型,但是多条目是简单的条目组并且本身没有特定类型。
由于多条目和多模板刚刚被设定,所以他们可以利用任何合适的一个集合形式表示。出于实例考虑,许多编程语言中合适的表现形式(包括Java编程语言)为数组,数组的尺寸由多条目或多模板中的模板数给定,并且数组的每个单元为条目(如果是多条目)或者模板(如果是多模板)。
参见图2,如上所述,每个条目数据库206、207和208可以存储众多的多条目。多条目可以通过客户启用的写入操作存储在给定条目数据库206-208中。多条目可以经安装介质(例如图1的安装介质)另外提供给条目数据库。与单个条目操作类似的几个新增操作进一步得到图11所示***的支持。具体而言,除写入操作以外,客户或用户还可以启动“读取”操作、“提取”操作和“通知”操作。
读取、提取或通知操作以操作单个条目相同的方式操作多条目。在特定实现方案中,这些查询通过使用作为操作请求一部分的多模板进行,操作请求定义了操作感兴趣的多条目。与单个条目实现方案一样,读取操作在匹配给定多模板的数据库内读取多条目。提取操作完成与读取操作相同的操作但是从数据库移去了读取的多条目。用来在未来多条目中注册兴趣的通知操作在匹配的多条目到达数据库内时通知客户或事件捕捉器。
图12示出了示意性多模板。通常,多模板定义了特定的多条目,其单元包含了上述定义的模板。图12所示的多模板1200具有4个单元W、X、Y和Z,虽然应当指出的是多模板具有任意数量的单元,但是在本发明的示意性实施例中,多模板1200内的每个单元包括一个模板1202。
(1)多条目和多模板匹配的方法
通常,如果多模板内每个模板在多条目中具有匹配条目,则多模板将匹配多条目。多条目中的每个条目可以用来匹配多模板中一个或多个模板。例如,多条目中的单个条目可以匹配多模板中的所有模板,由此创建多条目与多模板之间的匹配。在确定多条目是否与多模板匹配的过程中,需要将多条目的单个条目与多模板中的单个模板进行比较。按照前述将单个条目与单个模板匹配相同的方式完成多模板中单个模板与多条目中单个条目的匹配。
图13为响应读取请求或提取请求在特定条目数据库内搜索多条目方法的流程图。以下借助图14描述图13所示的步骤,图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)并且将多条目的条目与多模板的模板比较。在该实例中,搜索引擎708接收包含多模板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读取或去除匹配的多条目并且提供给用户。搜索引擎708继续搜索条目数据库710直到找到匹配或者检查完所有的多条目。如果在搜索条目数据库710内所有多条目之后未找到匹配的多条目,则数据库管理器704向用户702返回空值。
(3)通知
参见图15,流程图示出了搜索引擎708处理来自用户的通知请求的方法。通知操作的工作方式与单个条目的类似,并且如上所述,由用户发布通知请求以在匹配多模板的未来输入的多条目中注册兴趣。当匹配的多条目到达时,数据库管理器704通知用户或事件捕捉器(图2)。当用户启用通知请求时,指定租借时间为数据库管理器704将注册通知多长时间。在规定时间之后,取消通知注册。
因此如图15所示,当数据库管理器704接收新通知请求时(步骤1502),监视输入的多条目直到注册时间到期(步骤1504和1506)。如果多条目被写入条目数据库710,则搜索引擎确定多条目是否匹配多模板。与上述讨论类似,如果多模板的每个模板在多条目中具有匹配的条目(步骤1508和1510),则匹配并且通知用户或时间捕捉器(步骤1512)。另外输入的多条目持续被监视只要注册时间未到期(步骤1504)。
原位条目修改
替换实施例另外实现了数据库内原位修改条目和多条目。按照本发明,该实现方案扩展到条目/模板和多条目/多模板情况,其中条目字段可以在数据库内原位修改,并且在多条目情况下,多条目内的条目可以增加、修改或删除。术语“原位”的含义是在数据库内进行修改而不从数据库移去条目或多条目。
按照本发明该实现方案的原位修改操作包括“单个条目修改”、“多条目增加”、“多条目修改/删除”和“通知”。图16示出了用户提供的原位修改和信息以请求修改。单个修改操作改变了数据库内条目个别字段内的数值。多条目增加操作将条目加入数据库内的多条目,并且多条目修改/删除改变或删除数据库内多条目内的条目。相对原位修改,通知操作通知由于数据库内条目或多条目变化引起的匹配。通常,如图16所示,操作请求的第一参数指定了数据库内哪一个条目或那些多条目被修改,而第二参数规定了所作的修改。
(1)单个条目修改
图17示出了按照本发明的单个条目修改操作的流程图。以下借助图7描述其结构特点。为了启用单个条目修改操作以改变条目中各个字段的数值,用户702作出包括两个模板的请求(步骤1700,参见图16)。第一模板1602用来识别待修改的数据库内的条目而第二模板1604用来修改条目并且识别作出的修改。由于这两个模板通过识别和修改在同一条目上操作,所以第二模板1604与第一模板1602的类型或超级类型相同。在某些实现方案中,单个条目修改程序可以包括模板的类型检查。
首先,搜索引擎708在条目数据库710内搜索匹配从用户702接收的第一模板1602的条目(步骤1702)。当将数据库内条目与第一模板比较时,按照上述单个条目和模板匹配完成匹配。如果在匹配第一模板1602的条目数据库710内没有条目(步骤1704),则搜索引擎将零返回用户702,表示由于该操作引起的条目数量的变化(步骤1712)。
如果找到匹配条目,则采用第二模板来原位修改数据库内的条目,即为修改而不从数据库移去条目。由于第二模板1604是与第一模板1602相同的类型或者是超级类型并且第一模板1602是与修改条目相同的类型或超级类型,因此第二模板1604也与修改的条目相同类型或超级类型,这样第二模板1604具有与修改条目相同的字段或子集。为了修改匹配条目,第二模板1604非空字段内的数值被用来代替条目相应字段内的数值(步骤1708)。对应第二模板1604空值或通配符字段的条目的字段值仍然不变。在数据库内条目修改之后,搜索引擎708继续搜索更多修改的条目。如果在匹配第一模板1602的数据库内存在更多的条目(步骤1710),则以同样方式修改这些条目(步骤1708)。在完成之后,搜索引擎708返回代表***作修改条目数的数量(步骤1712)。
(2)多条目增加
图18为按照本发明的多条目增加操作步骤的流程图。通常,多条目增加操作将条目加入数据库内规定的多条目内。请求该操作的用户702向搜索引擎708提供两个参数,即多模板1606和多条目1608(参见图6)。第一个参数多模板1606被用来识别变化的条目数据库内的多条目;第二个参数多条目1608是一组加入识别的多条目数据库的条目组。利用上述匹配的多条目/多模板,搜索引擎708在数据库内搜索匹配用户702给定的多模板1606的多条目(步骤1802)。如果没有找到匹配的多条目(步骤1804),搜索引擎708将零返回用户702以表示加入条目的多条目数量(步骤1812)。
如果找到多条目(步骤1804),则将用户702提供的规定的多条目1608的条目加入在条目数据库内找到的匹配多条目而无需从条目数据库710去除匹配的多条目(步骤1808)。在加入数据库的多条目之后,搜索引擎708继续搜索更多变化的多条目。如果在条目数据库710内有更多匹配超过请求中第一参数给出的多模板的多条目(步骤1810),则操作请求中多条目的条目以相同方式被加入多条目(步骤1808)。最后,搜索引擎708返回代表加入条目的多条目数量的数(步骤1812)。
(3)多条目修改/删除
图19为按照本发明的实现多条目修改/删除操作方法的流程图。多条目修改/删除操作根据请求中多条目的条目,修改数据库内多条目的条目或者从数据库的多条目删除条目。当搜索引擎708接收多条目修改/删除请求时,请求包括两个多模板作为两个参数,即多模板1610和多模板1612(步骤1900,参见图16)。多模板1610被用来识别被修改或删除的条目数据库710内的多条目,而用户702提供的多模板1612规定了匹配多条目中条目的修改和删除。
请求中给出的多模板1612包含了与多模板1610相同数量的模板。而且多模板1612中每个模板与多模板1610中对应模板的类型或超级类型相同(即每个模板(ⅰ)在多模板1612中是与多模板1610中模板(ⅰ)类型或超级类型相同)。例如,多模板1612中的第一模板与多模板1610内第一模板的类型或超级类型相同,第二模板与对应的第二模板的类型或超级类型相同,等等。与公共多模板不同,请求参数的多模板1612中的模板可以是空值,并且这些模板被用来如下所述指定从多条目中的删除。
搜索引擎708首先搜索匹配操作请求中第一参数给出的多模板的多条目(步骤1902)。如果没有找到匹配,则返回零,表示多条目的数量被修改(步骤1914)。
如果在条目数据库710内找到匹配的多条目,则利用来自操作请求的多模板1612进行修改。为了完成修改,对于多模板1612中非空模板,按照多模板1612中非空模板改变条数据库710内匹配的多条目中对应的条目(步骤1908)。利用上述单个条目修改完成这种改变,并且修改在条目数据库710内原位进行而无需去除匹配的多条目。例如如果多模板1612的模板(ⅰ)是非空的,则更改的多条目中的条目(ⅰ)利用单个条目修改,按照多模板1612中的模板(ⅰ)修改(图17的步骤1708,这里多模板1612中的模板(ⅰ)被用作模板2)。模板(ⅰ)的非空字段值被用来代替已经修改的现有条目的对应字段内的值。
对于给定多模板1612中的每个空模板,删除匹配的多条目中对应的条目(即对于空的多模板1612的模板(ⅰ),删除修改的多条目中的每个(ⅰ))(步骤1910)。如果数据库内有更多与多模板1610匹配的多条目,则重复这些步骤以修改条目数据库710内剩余匹配的多条目(步骤1912)。当搜索引擎708完成修改之后,它返回代表被修改多条目数量的数(步骤1914)。
但是当处理多条目修改/删除操作时会发生意外情况。在多条目/多模板匹配中,由于多条目中的条目可以用来匹配不止一个的多模板中的模板,所以多条目可以匹配多模板并且条目少于多模板包含的模板。如果这种多条目匹配多模板1610并且按照本发明的修改/删除操作进行修改,则多模板1612中不止一个的模板将被用来修改或删除被修改多条目中的单个条目。在这种情况下,如果多模板1612中的这种模板(即对应匹配被修改的多条目的条目的多模板的模板)表示删除操作(即是空的),则删除被修改的多条目中的条目。否则,如果多模板1612中所有这样的模板指示修改操作,则所有的模板被用于修改,但是施加修改的顺序的决定将是与特定的实施方案有关并且对于修改/删除操作的总体没有任何重要意义。
(4)修改/通知
考虑到原位修改,在另一按照本发明的实现方案中,用户可以在数据库内的条目或多条目内注册兴趣并且接收返回用户或事件捕捉器的通知。在这种实现方案中,当用户通过提供模板或多模板在数据库内的条目或多条目中注册兴趣时,搜索引擎708不监视已经完成的输入条目或多条目。当实现原位修改通知时,它监视已经在数据库内改变或修改的条目或多条目。数据库内修改条目或多条目的监视是前面通知操作与涉及原位修改的当前通知操作的主要区别。但是通知的许多基本方面是相同的。
通常,模板1614或多模板1616被用来在改变条或多条目中注册兴趣。在原位修改期间改变条目或多条目之后,搜索引擎708检查以确定改变的条目或多条目是否匹配注册的模板或多模板,或者改变的多条目或条目是否匹配模板或多模板。因此通知操作搜索匹配状态内从匹配到不匹配或者从不匹配到匹配的过渡。
参见图20,流程图示出了搜索引擎708处理用户的通知请求以监视条目或多条目内变化的实现方案。在这种情况下,通知请求可以由用户发布以将兴趣注册在规定的条目或多条目中从而确定它们是否改变了与提供的模板1614或多模板1616相关的匹配状态。当修改条目或多条目时,其匹配状态可以从匹配模板1614或多模板1616变为不匹配,或者从不匹配变为匹配。当条目或多条目相对通知操作请求中的模板1614或多模板1616改变其匹配状态时,数据库管理器704根据需要通知用户或事件捕捉器(参见图2)。当用户调用通知请求时,租借事件规定了数据库管理器70将注册通知多长时间。在规定时间之后,取消通知注册。
因此如图20所示,当数据库管理器704接收新的通知请求时(捕捉2002),条目或多条目在修改时被监视直到注册时间到期(步骤2004和2006)。如果条目或多条目在条目数据库710内被修改,则搜索引擎708确定条目或多条目是否改变了相对通知请求中接收的模板1614或多模板1616的匹配状态(步骤2008或2010)。搜索引擎708确定修改的条目或多条目是否从匹配模板或多模板变为不匹配或者相反。如果发生了匹配状态的过渡,则通知用户或时间捕捉器(步骤2012)。原位修改的新增条目或多条目继续被监视只要注册时间未到期(步骤2004)。
安全类型属性匹配
按照本发明的另一实现方案涉及代表各种表示为对象的数据库条目的数值。在这种实现方案中,通过使条目字段属性相关并利用条目、多条目及其操作,可以实现类型安全属性匹配。类型安全属性匹配涉及数据库内属性不同类型的搜索并且允许属性强烈类型化。它进一步允许增强规定属性之间的关系并且允许按类型高效引用和操作属性。
利用类型安全属性匹配,可以使属性和名称严格地互相关联(即页/分钟属性仅仅与打印机相关)以及属性和它们的值(即页/分钟仅仅与整数相关)相关联。类型安全属性匹配允许增强属性对与数值之间的关系。它还使得类型对象可以高效搜索而许多不同类型的对象可以存储在单个数据库内。此外,它允许修改仅仅影响数据库内对象的特定类型,虽然数据库可以存储许多不同的对象类型。
按照本发明,通过使属性与条目字段相关实现安全类型的匹配。条目字段内存储的数值是相关属性的数值。由于一组属性可以是Java类,所以类提供了组和单个属性的强类型定义。例如下列实例示出了代表典型打印机的条目,字段代表了打印机的属性(页/分钟、分辨率等等)以及代表类别信息的条目,例如名称、产品数据和物理位置:
     public class Printer implement Entry {

              Integer ppm;     //  pages per minute

              Integer dpi;     //  resolution in dots per inch

              Boolean duplex;  //   supports two-sided printing

              Boolean color;   //   color or black-only
}
      public class Name implements Entry {

              String name;       // the user-friendly name of the service

              String description;// free-form description of the service

              String language;   // language (e.g.,English,French) used in
the

                                     above
}

        public class Type implements Entry {

              String type;      //  the general type of service

              String vendor;    //  vendor of product that implements the
service

              String model;     //  model number/name of product

              String version;   //  version number of product

        public class Location implements Entry {

              Integer floor;    //  what floor the service is on

              String building;  //  what building it's in

              String room;      //  what room it's in
如上所示,存在字段的严格类型定义和条目,并且这些字段和它们的类型总是与这些条目和类型关联。例如“ppm”或“页/分钟”是“整数”类型。
利用多条目进一步描述项目。利用多条目,典型的打印机也可以作为一组属性描述。当以这种方式描述典型的打印机时,可以包括诸如位置、名称或机器类型之类的其他方面,每个方面由多条目中的另一条目表示。上述实例中的条目组构成了代表典型打印机属性的示意性多条目。
条目和多条目操作可以用来搜索和操作属性的这些类型安全集。这些操作包括提取、通知、读取、条目修改、多条目加入、多条目修改/删除和修改通知。应该指出的是,可以在按照本发明的数据库***内完成其他已知数据库的操作。
为示意起见,假定在数据库内存储的下列多条目描述两种不同打印机的存在。每个打印机可以包含与多条目中条目字段相关的属性描述的某些性质。在该假设实例中,第一打印机具有英文名称“quick”和德国名称“schnell”。如在实例中所示,它位于建筑物ABC层1的室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层房间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的数据库,则由于所示多模板1匹配多条目2,所以代表来自前述实例的第二打印机的多条目2将返回。搜索引擎708搜索数据库,旁路不正确的类型项目,并且将存储在条目字段内的数值与请求模板中的数值进行比较。因此它仅仅返回带正确属性值的那些。这种安全类型匹配使得不同类型对象可以存储在同一数据库内并且高效搜索。
就采用安全类型属性匹配的数据库内完成的操作而言,假定在处理某些特性的数据库内表示的所有项上要求类型安全修改。在这种情况下,可以采用条目/多条目修改操作来修改数据库内的项目。例如假定请求被公式化为将位于任何位置的黑白(彩色=假)打印机改变为规定的分辨率(例如dpi100)并且去除它们的位置属性。回顾一下多条目修改/删除操作提取两个参数,确定数据库内哪一个多条目的多模板将被修改并且多条目专用于改变,这两个参数可以提供用来代表这些变化。参见前述实例,多条目修改/删除操作的第一个参数可以用多模板表示如下:
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]}}
如在多条目修改/删除操作方法中所述,搜索引擎在匹配多模板2的数据库内定位所有的多条目并且根据操作中的第二参数修改它们。来自上述实例的多条目1匹配用于操作参数内的多模板2,并且因此多条目1按照操作的第二参数改变多条目1。该操作删除位置属性,用数值代替100代替dpi并且产生多条目1:
Multi-Entry 1 =

            {Name         [name          =  "quick",

                          description    =  "yadal",

                          language       =  "English"],

            Name          [name          =  "schnell",

                          description    =  "yahdal",

                          language       =  "German"],

            Printer       [ppm           =   10,
                          dpi            =   100,

                          duplex         =   true,

                          color          =   false]}
因此引擎在处理请求类型属性的数据库内寻找所有的项目并且以安全类型方式修改,因此实现了类型安全属性匹配。应该指出的是,所示仅仅是示意性质的。
对于本领字段内技术人员来说,众多的修改和变化都是显而易见的。因此下列权利要求限定了本发明的精神和范围。

Claims (14)

1.一种用于数据库内安全类型属性匹配的方法,数据库包括多个条目,每个条目由类类型定义并且包括多个类型字段,其特征在于所述方法包括:
提供类类型模板,模板定义了一组属性;
将模板属性与一个或更多的多个条目的对应字段进行比较;
根据比较确定模板是否匹配一个或更多的多个条目;以及
根据确定识别匹配条目。
2.如权利要求1所述的方法,其特征在于比较步骤包括下列步骤:
比较模板的同一类类型或超级类型的条目。
3.如权利要求1所述的方法,其特征在于进一步包括下列步骤:
修改数据库以响应匹配条目的识别。
4.如权利要求3所述的方法,其特征在于提供步骤包括下列步骤:
提供与第一模的板超级类型或相同的同一类类型的第二模板,第二模板定义了一组属性;并且其中所述方法进一步包括以下步骤:
修改匹配条目以反映第二模板的属性。
5.如权利要求3所述的方法,其特征在于进一步包括下列步骤:
删除匹配条目。
6.如权利要求1所述的方法,其特征在于模板包含匹配对应条目字段内任何值的通配符数值。
7.如权利要求6所述的方法,其特征在于通配符属性值为空值。
8.一种用于数据库内安全类型属性匹配的数据处理装置,数据库包括多个条目,每个条目由类类型定义并且包括多个类型字段,其特征在于所述装置包括:
提供类类型模板的提供单元,模板定义了一组属性;
将模板属性与一个或更多的多个条目的对应字段进行比较的比较单元;
根据比较确定模板是否匹配一个或更多的多个条目的比较单元;以及
根据确定识别匹配条目的识别单元。
9.如权利要求8所述的装置,其特征在于比较单元包括:
比较模板的同一类类型或超级类型的条目的比较单元。
10.如权利要求8所述的装置,其特征在于进一步包括:
修改数据库以响应匹配条目的识别的修改单元。
11.一种计算机程序产品,包含具有计算机可读代码的计算机可读介质,用于数据库内安全类型属性匹配的数据处理,数据库包括多个条目,每个条目由类类型定义并且包括多个类型字段,其特征在于实现方式包括:
提供类类型模板,模板定义了一组属性;
将模板属性与一个或更多的多个条目的对应字段进行比较;
根据比较确定模板是否匹配一个或更多的多个条目;以及
根据确定识别匹配条目。
12.如权利要求11所述的方法,其特征在于比较包括:
比较模板的同一类类型或超级类型的条目。
13.如权利要求1所述的方法,其特征在于进一步包括:
修改数据库以响应匹配条目的识别。
14.一种计算机程序产品,包含具有计算机可读代码的计算机可读介质,用于数据库内安全类型属性匹配的数据处理,数据库包括多个条目,每个条目由类类型定义并且包括多个类型字段,其特征在于产品包括:
提供类类型模板的手段,模板定义了一组属性;
将模板属性与一个或更多的多个条目的对应字段进行比较的手段;
根据比较确定模板是否匹配一个或更多的多个条目的手段;以及
根据确定识别匹配条目的手段。
CN99805495A 1998-02-26 1999-02-25 用于安全类型属性匹配的方法和*** Pending CN1298525A (zh)

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,954 US5988426A (en) 1996-11-08 1998-03-20 Leakproof vented beverage lid
US09/044,954 1998-03-20

Publications (1)

Publication Number Publication Date
CN1298525A true CN1298525A (zh) 2001-06-06

Family

ID=26722209

Family Applications (1)

Application Number Title Priority Date Filing Date
CN99805495A Pending CN1298525A (zh) 1998-02-26 1999-02-25 用于安全类型属性匹配的方法和***

Country Status (6)

Country Link
EP (1) EP1057124A1 (zh)
JP (1) JP2002505485A (zh)
KR (1) KR20010034516A (zh)
CN (1) CN1298525A (zh)
AU (1) AU2878499A (zh)
WO (1) WO1999044158A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100401294C (zh) * 2005-09-30 2008-07-09 南京大学 基于关系数据库信息技术产品保护轮廓的完整性检查方法
CN100587682C (zh) * 2002-11-20 2010-02-03 Ipg501健康保健有限公司 用于对敏感数据进行安全处理的方法和设备
CN102024183A (zh) * 2009-09-11 2011-04-20 上海宝信软件股份有限公司 企业信息管理***
CN101430687B (zh) * 2007-11-09 2015-11-25 阿里巴巴集团控股有限公司 基于oltp环境的统计表应用方法及***
CN105302827A (zh) * 2014-06-30 2016-02-03 华为技术有限公司 一种事件的搜索方法和设备

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010055927A (ko) * 1999-12-13 2001-07-04 이계철 반복적인 구조를 가지는 전자문서의 입력 방법
US7467136B2 (en) * 2005-10-13 2008-12-16 Kabushiki Kaisha Toshiba System and method for persistent query information retrieval

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100587682C (zh) * 2002-11-20 2010-02-03 Ipg501健康保健有限公司 用于对敏感数据进行安全处理的方法和设备
CN100401294C (zh) * 2005-09-30 2008-07-09 南京大学 基于关系数据库信息技术产品保护轮廓的完整性检查方法
CN101430687B (zh) * 2007-11-09 2015-11-25 阿里巴巴集团控股有限公司 基于oltp环境的统计表应用方法及***
CN102024183A (zh) * 2009-09-11 2011-04-20 上海宝信软件股份有限公司 企业信息管理***
CN105302827A (zh) * 2014-06-30 2016-02-03 华为技术有限公司 一种事件的搜索方法和设备
CN105302827B (zh) * 2014-06-30 2018-11-20 华为技术有限公司 一种事件的搜索方法和设备

Also Published As

Publication number Publication date
JP2002505485A (ja) 2002-02-19
EP1057124A1 (en) 2000-12-06
KR20010034516A (ko) 2001-04-25
AU2878499A (en) 1999-09-15
WO1999044158A1 (en) 1999-09-02

Similar Documents

Publication Publication Date Title
US7359897B2 (en) System and method for document management and retrieval
CN1220953C (zh) 通过多个外部登记从主登记检索明码口令
AU2004258511B2 (en) System and method for electronically managing composite documents
CN1192317C (zh) 用于定位万维网页以及计算机网络文件的***和方法
US8881131B2 (en) Method and apparatus for populating a software catalogue with software knowledge gathering
CN1110166C (zh) 从一个主登记向多个外部登记传播明码口令的***和方法
CN1096166C (zh) 为多个客户机提供口令组合检查的方法和网络***服务器
CN1146178C (zh) 用于数据处理的方法和装置
US8521741B1 (en) Systems and methods for performing integrated searches with actions
CN1392954A (zh) 缺陷知识库
CN1759397A (zh) 对数据的函数应用的结果进行结构化索引
CN1684063A (zh) 根据从属关系或文件类型控制文件的公开
CN1573753A (zh) 数据库对象脚本生成方法和***
CN1035192A (zh) 计算机程序应用许可证管理方法和***
CN1768325A (zh) 公开内容的抽象数据库抽象中的规则应用管理
CN101042706A (zh) 文档搜索设备、文档管理***、文档搜索***和方法
CN1846207A (zh) 类型路径索引
CN1866214A (zh) 安装方法及设备
CN1716249A (zh) 延迟取出用户定义类型的指定成员的***和方法
CN1298525A (zh) 用于安全类型属性匹配的方法和***
CN1571966A (zh) 信息检索方法、信息检索程序、和记录有信息检索程序的计算机可读记录介质
CN1298523A (zh) 数据库中多项目和多模块匹配方法和***
CN1698057A (zh) 用于自动启动工作流进程上的文档的***和方法
CN1726462A (zh) 使用分布式桌面包恢复桌面组件的***和方法
JP2021144565A (ja) 情報処理装置及び情報処理プログラム

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