專利名稱:用于安全類型屬性匹配的方法和系統(tǒng)的制作方法
相關(guān)申請(qǐng)本申請(qǐng)是1997年11月17日提交的美國(guó)專利申請(qǐng)No.08/971,529的延續(xù)部分,它作為參考文獻(xiàn)包含在文本中。
現(xiàn)引證下列美國(guó)專利申請(qǐng)作為本申請(qǐng)依據(jù)并歸并于本申請(qǐng)中。
1998年2月26日申請(qǐng)的發(fā)明名稱為“分布式計(jì)算系統(tǒng)”(“DistributedComputing System”)的臨時(shí)美國(guó)專利申請(qǐng)U.S.Ser.No.:60/076,048。
上述相同日期申請(qǐng)的發(fā)明名稱為“用于租用存儲(chǔ)的方法和系統(tǒng)”(“Methodand System for Leasing Storage”)(標(biāo)注有代理人案卷號(hào)No.:06502.0011-01000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,923。
上述相同日期申請(qǐng)的發(fā)明名稱為“分布式系統(tǒng)中用于委派證租用的方法、裝置和產(chǎn)品”(“Method,Apparatus,and Product for Leasing of DelegationCertificates in a Distributed System”)(標(biāo)注有代理人案卷號(hào)No.:06502.0011-02000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,838。
上述相同日期申請(qǐng)的發(fā)明名稱為“分布式系統(tǒng)中用于團(tuán)體會(huì)員資格租用的方法、裝置和產(chǎn)品”(“Method,Apparatus,and Product for Leasing of GroupMembership in a Distributed System”)(標(biāo)注有代理人案卷號(hào)No.:06502.0011-03000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,834。
上述相同日期申請(qǐng)的發(fā)明名稱為“故障檢測(cè)的租用”(“Leasing forFailure Detection”)(標(biāo)注有代理人案卷號(hào)No.:06502.0011-04000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,916。
上述相同日期申請(qǐng)的發(fā)明名稱為“基于事件的系統(tǒng)中用于傳輸行為的方法”(“Method for Transporting Behavior in Event Based System”)(標(biāo)注有代理人案卷號(hào)No.:06502.0054-00000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,933。
上述相同日期申請(qǐng)的發(fā)明名稱為“分布式系統(tǒng)中對(duì)象的延遲重組和事件通知的遠(yuǎn)程裝載”(“Deferred Reconstruction of Objects and Remote Loadingfor Event Notification in a Distributed System”)(標(biāo)注有代理人案卷號(hào)No.:06502.0062-01000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,919。
上述相同日期申請(qǐng)的發(fā)明名稱為“用于遠(yuǎn)程方法啟用的方法和裝置”(“Methods and Apparatus for Remote Method Invocation”)(標(biāo)注有代理人案卷號(hào)No.:06502.0102-00000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,938。
上述相同日期申請(qǐng)的發(fā)明名稱為“用于確定性散列識(shí)別遠(yuǎn)程方法的方法和系統(tǒng)”(“Method and System for Deterministic Hashes to identify RemoteMethods”)(標(biāo)注有代理人案卷號(hào)No.:06502.0103-00000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/045,652。
上述相同日期申請(qǐng)的發(fā)明名稱為“用于確定分布式系統(tǒng)內(nèi)遠(yuǎn)程對(duì)象狀態(tài)的方法和裝置”(標(biāo)注有代理人案卷號(hào)No.:06502.0104-00000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,790。
上述相同日期申請(qǐng)的發(fā)明名稱為“分布式系統(tǒng)中用于執(zhí)行與遠(yuǎn)程過(guò)程調(diào)用相關(guān)聯(lián)的處理的可下載智能代理”(“Downloadable Smart Proxies forPerforming Processing Associated with a Remote Procedure Call in aDistributed System”)(標(biāo)注有代理人案卷號(hào)No.:06502.0105-00000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,930。
上述相同日期申請(qǐng)的發(fā)明名稱為“遠(yuǎn)程方法的掛起和繼續(xù)”(“Suspensionand Continuation of Remote Methods”)(標(biāo)注有代理人案卷號(hào)No.:06502.0106-00000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,917。
上述相同日期申請(qǐng)的發(fā)明名稱為“數(shù)據(jù)庫(kù)中用于多入口以及多模板匹配的方法和系統(tǒng)”(“Method and System for Multi-Entry and Multi-TemplateMatching in a Database”)(標(biāo)注有代理人案卷號(hào)No.:06502.0107-00000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,835。
上述相同日期申請(qǐng)的發(fā)明名稱為“數(shù)據(jù)庫(kù)中用于原地修改的方法和系統(tǒng)”(“Method and System for In-Place Modifications in a Database”)(標(biāo)注有代理人案卷號(hào)No.:06502.0108)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,839。
上述相同日期申請(qǐng)的發(fā)明名稱為“分布式系統(tǒng)中動(dòng)態(tài)查詢業(yè)務(wù)”(“DynamicLookup Service in a Distributed System”)(標(biāo)注有代理人案卷號(hào)No.:06502.0110-00000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,931。
上述相同日期申請(qǐng)的發(fā)明名稱為“分布式系統(tǒng)中提供可下載代碼用于與一設(shè)備通信的裝置和方法”(“Apparatus and Method for Providing DownloadableCode for Use in Communicating with a Device in a Distributed System”)(標(biāo)注有代理人案卷號(hào)No.:06502.0112-00000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,939。
上述相同日期申請(qǐng)的發(fā)明名稱為“便于訪問(wèn)查詢服務(wù)的方法和系統(tǒng)”)(標(biāo)注有代理人案卷號(hào)No.:06502.0113-00000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,826。
上述相同日期申請(qǐng)的發(fā)明名稱為“分布式系統(tǒng)中用于動(dòng)態(tài)驗(yàn)證信息的裝置和方法”(“Apparatus and Method for Dynamically Verifying Informationin a Distributed System”)(標(biāo)注有代理人案卷號(hào)No.:06502.0114-00000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,932。
1998年2月26日申請(qǐng)的發(fā)明名稱為“用于網(wǎng)絡(luò)上動(dòng)態(tài)分布式計(jì)算的方法和裝置”(“Method and Apparatus for Dynamic Distributed Computing Overa Network”)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/030,840。
上述相同日期申請(qǐng)的發(fā)明名稱為“永久性共享存儲(chǔ)空間的交互式設(shè)計(jì)工具”(“An Interactive Design Tool for Persistent Shared Memory Spaces”)(標(biāo)注有代理人案卷號(hào)No.:06502.0116-00000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,936。
上述相同日期申請(qǐng)的發(fā)明名稱為“基于多形態(tài)令牌的控制”(“PolymorphicToken-Based Control”)(標(biāo)注有代理人案卷號(hào)No.:06502.0117-00000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,934。
上述相同日期申請(qǐng)的發(fā)明名稱為“基于堆棧的訪問(wèn)控制”(“Stack-BasedAccess Control”)(標(biāo)注有代理人案卷號(hào)No.:06502.0118-00000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,915。
上述相同日期申請(qǐng)的發(fā)明名稱為“基于堆棧的安全要求”(“Stack-BasedSecurity Requirements”)(標(biāo)注有代理人案卷號(hào)No.:06502.0119-00000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,944。
上述相同日期申請(qǐng)的發(fā)明名稱為“安全要求的按方法指定”(“Per-MethodDesignation of Security Requirements”)(標(biāo)注有代理人案卷號(hào)No.:06502.0120-00000)的美國(guó)專利申請(qǐng)U.S.Ser.No.:09/044,837。
發(fā)明領(lǐng)字段本發(fā)明涉及數(shù)據(jù)庫(kù)系統(tǒng),特別涉及數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)的條目存儲(chǔ)。本發(fā)明還涉及用于數(shù)據(jù)庫(kù)系統(tǒng)的查詢匹配的方法學(xué)。
背景技術(shù):
數(shù)據(jù)庫(kù)系統(tǒng)在今日社會(huì)中擔(dān)負(fù)著越來(lái)越重要的角色。典型數(shù)據(jù)庫(kù)系統(tǒng)存儲(chǔ)的數(shù)據(jù)量正在緩慢增長(zhǎng),并且對(duì)數(shù)據(jù)進(jìn)行快速和靈活的訪問(wèn)通常是關(guān)鍵的。但是設(shè)計(jì)數(shù)據(jù)庫(kù)系統(tǒng)優(yōu)化運(yùn)行的工作是困難的。
數(shù)據(jù)庫(kù)設(shè)計(jì)中特別重要的考慮是存儲(chǔ)數(shù)據(jù)從而可以用于各種應(yīng)用并且可以快速和方便地改變使用方式。進(jìn)一步的需求是在不明顯影響數(shù)據(jù)庫(kù)系統(tǒng)其他部分的前提下增加其他的數(shù)據(jù)類型或分類。
遺憾的是,在許多數(shù)據(jù)庫(kù)系統(tǒng)中改變對(duì)數(shù)據(jù)的使用和組織方式并且允許新增的數(shù)據(jù)類型和分類特別困難。修改可能引發(fā)數(shù)據(jù)庫(kù)系統(tǒng)程序和其他單元的一連串變化,因此實(shí)現(xiàn)的代價(jià)可能超出意外。因此數(shù)據(jù)處理一直趨向于局限在舊的數(shù)據(jù)結(jié)構(gòu)中。此外,數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)者總是在設(shè)計(jì)的兩個(gè)方面之間作出眾多的折衷考慮,由此導(dǎo)致設(shè)計(jì)優(yōu)化程度的降低。
為了作進(jìn)一步的闡述,通常利用精確的類型完成數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)的信息存儲(chǔ);即存儲(chǔ)在數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)的記錄一般具有一定數(shù)量和類型的字段,例如關(guān)系數(shù)據(jù)庫(kù)關(guān)系中的元組。每個(gè)字段可以定義為存儲(chǔ)特定類型的數(shù)據(jù),例如串?dāng)?shù)據(jù)、布爾數(shù)據(jù)或所需的一些其他數(shù)據(jù)類型。如果用戶需要在數(shù)據(jù)庫(kù)中查詢信息,則用戶必須查詢精確的記錄類型(即不同類型記錄一般被獨(dú)立搜索)。因此如果搜索者感興趣的數(shù)據(jù)可以是幾個(gè)不同類型中一個(gè)記錄,則搜索者必須預(yù)先知道存在的是哪一個(gè)記錄類型或者有某種明示的方式要求所有類型。搜索者隨后需要明確地查詢所有可能的記錄類型以尋找特別感興趣的記錄。這加劇了與搜索引擎相關(guān)的軟件的復(fù)雜度并且可能限制可維護(hù)的不同記錄類型的數(shù)量。
而且數(shù)據(jù)庫(kù)中記錄內(nèi)的字段一般不引用其他記錄。這減少了單個(gè)記錄一般保存的信息量和類型。因此數(shù)據(jù)庫(kù)受到無(wú)法存儲(chǔ)和操作作為記錄組的記錄的限制。
此外,典型數(shù)據(jù)庫(kù)內(nèi)的記錄通常與實(shí)際數(shù)據(jù)本身中分離的特性不相關(guān)。例如,當(dāng)找到數(shù)據(jù)時(shí),沒(méi)有一種方式使行為與隨記錄類型改變的記錄相關(guān),因此使得程序可以使用實(shí)現(xiàn)記錄類型特定結(jié)果的單個(gè)方式下匹配返回的各種記錄。
考慮到數(shù)據(jù)庫(kù)系統(tǒng)的另一方面,數(shù)據(jù)庫(kù)中定義屬性或性質(zhì)的通常方式是利用簡(jiǎn)單的一組<名稱,數(shù)值>對(duì),數(shù)值局限于串或者任意類型(類型“任何”)。沒(méi)有辦法來(lái)限制這些<名稱,數(shù)值>對(duì)的類型,因此并不強(qiáng)制特定的名稱必須具有特定類型的數(shù)值。例如在假想打印機(jī)中,“速度”屬性代表打印機(jī)每分鐘可以打印的頁(yè)數(shù),應(yīng)該強(qiáng)制為整數(shù)以保證用戶不會(huì)設(shè)定為其他值,例如“大約10ppm”或者“8-10”。如果數(shù)值可以是任何類型的對(duì)象,則存在同樣的問(wèn)題。在該情況下,用戶可以將屬性設(shè)定為整數(shù)對(duì)象而代替串對(duì)象,但是仍然無(wú)法避免另一用戶在應(yīng)該設(shè)定為整數(shù)的屬性內(nèi)不正確地存儲(chǔ)串對(duì)象。
而且先前的系統(tǒng)沒(méi)有強(qiáng)化規(guī)定不同屬性之間的關(guān)系(即如果且只是在另一屬性存在時(shí)才存在一個(gè)屬性)。例如,對(duì)于打印機(jī)給出了三種示意性的屬性分辨率(點(diǎn)/英寸)、速度(頁(yè)/每分鐘)和顏色(黑與白),實(shí)際上許多打印機(jī)可以完成這些屬性不同的組合。例如典型的彩色打印機(jī)可以描述如下黑白顏色下600點(diǎn)/英寸下5頁(yè)/分鐘;黑白顏色下300點(diǎn)/英寸下7頁(yè)/分鐘;彩色下300點(diǎn)/英寸下1頁(yè)/分鐘。
而給定屬性可以具有多個(gè)數(shù)值,有些普通的系統(tǒng)使得屬性可以具有多個(gè)數(shù)值,并且這些系統(tǒng)可以下列方式代表給定屬性速度={1,5,7}分辨率={300,600}顏色={真,假}但是這并不表示屬性對(duì)之間的相互關(guān)系。對(duì)于三種相互關(guān)系沒(méi)有表示形式和規(guī)定{速度1,分辨率300,顏色真值}{速度7,分辨率300,顏色偽值}{速度5,分辨率600,顏色偽值}因此需要提供允許多詞態(tài)條目、條目匹配和操作(包括條目集)的數(shù)據(jù)庫(kù)系統(tǒng),從而可以高效搜索和簡(jiǎn)化軟件實(shí)現(xiàn)方案,這里存在許多不同的類型。進(jìn)一步需要提供一種系統(tǒng),其中條目可以根據(jù)類型定義自己的行為。此外需要在數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)具有類型安全的屬性匹配并強(qiáng)化屬性之間的關(guān)系。
發(fā)明內(nèi)容
上述問(wèn)題由按照本發(fā)明的存儲(chǔ)和搜索數(shù)據(jù)庫(kù)內(nèi)條目的方法和系統(tǒng)解決。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)實(shí)現(xiàn)了數(shù)據(jù)庫(kù)系統(tǒng),其中一個(gè)或多個(gè)入口數(shù)據(jù)庫(kù)存儲(chǔ)了多個(gè)條目。每個(gè)條目具有給定的類型,定義了條目的字段。每個(gè)字段包含或標(biāo)識(shí)帶相關(guān)屬性或數(shù)據(jù)的對(duì)象。每個(gè)條目的類型可以進(jìn)一步以條目要實(shí)現(xiàn)的方法的形式定義行為。作為另一子類型的條目類型繼承了其超級(jí)類型的字段和行為,并且包含新增的字段并/或定義新的或修改的行為。條目可以表達(dá)為JavaTM編程語(yǔ)言的JavaTM類。同樣,在一個(gè)實(shí)現(xiàn)中,每個(gè)字段表示為定義的類。
數(shù)據(jù)庫(kù)系統(tǒng)可進(jìn)一步采用搜索引擎,允許對(duì)數(shù)據(jù)庫(kù)內(nèi)條目查詢。在一個(gè)實(shí)現(xiàn)方案中,查詢包括讀取操作、提取操作和通知操作。每個(gè)條目請(qǐng)求包括指示操作類型的命令和作為條目對(duì)象的模板,條目對(duì)象包含設(shè)定為必須精確匹配的特定值的一些或全部字段。模板條目的其他字段可以定義為通配符,其數(shù)值無(wú)關(guān)緊要。多詞態(tài)條目和條目匹配技術(shù)有利于使查詢導(dǎo)致字段模板條目類型或者模板條目子類型相同的條目的匹配。這使得可以高效搜索并簡(jiǎn)化搜索引擎實(shí)現(xiàn)方案。而且搜索引擎無(wú)需意識(shí)到所有可能存在的子類型。最后,由于每個(gè)條目具有相關(guān)的類,所以條目可以通過(guò)支持一種或多種方法定義其自己的行為。特定條目的方法可以被程序調(diào)用以實(shí)現(xiàn)諸如等價(jià)檢查之類的各種功能。
搜索引擎可以進(jìn)一步配置為創(chuàng)建具有被查詢公共定義的特性的條目索引。即,搜索引擎可以檢測(cè)用法的模式并且創(chuàng)建指向具有接收模板共同定義的屬性的條目索引。這樣,可以加快條目搜索。
此外,搜索引擎可以進(jìn)一步配置為在單個(gè)記錄內(nèi)存儲(chǔ)一組條目。這些條目組可以利用模板組匹配。
在一個(gè)實(shí)現(xiàn)方案中,使屬性與條目字段相關(guān)使得采用條目匹配和條目組匹配的數(shù)據(jù)庫(kù)系統(tǒng)可以實(shí)現(xiàn)安全類型的屬性匹配。類型安全屬性匹配使得數(shù)據(jù)庫(kù)系統(tǒng)可以檢測(cè)屬性類型并強(qiáng)化不同類型屬性之間的關(guān)系。
附圖簡(jiǎn)述
圖1為采用按照本發(fā)明的數(shù)據(jù)庫(kù)系統(tǒng)的分布式計(jì)算機(jī)系統(tǒng);圖2為按照本發(fā)明的多個(gè)客戶機(jī)和多個(gè)條目數(shù)據(jù)庫(kù)之間示意性通信的示意圖;
圖3為幾個(gè)條目的示意圖,每個(gè)包括按照本發(fā)明的特定類型的字段。圖3進(jìn)一步示出了另一條目子類型的條目;圖4為按照本發(fā)明的數(shù)據(jù)庫(kù)系統(tǒng)支持的各種操作的示意圖;圖5為按照本發(fā)明的示意性模板條目的示意圖;圖6為示出了在特定條目數(shù)據(jù)庫(kù)內(nèi)搜索條目以響應(yīng)按照本發(fā)明的讀取請(qǐng)求或提取請(qǐng)求的方法實(shí)現(xiàn)的流程圖;圖7為按照本發(fā)明的數(shù)據(jù)庫(kù)系統(tǒng)的功能框圖;圖8為流程圖,它示出了搜索方法學(xué)的實(shí)現(xiàn)以處理按照本發(fā)明的通知請(qǐng)求;圖9A和9B示出了按照本發(fā)明的索引方法學(xué)的實(shí)現(xiàn)方案;圖10為示出幾個(gè)多條目的示意圖,每個(gè)多條目包括包含條目的字段;圖11為按照本發(fā)明的數(shù)據(jù)庫(kù)系統(tǒng)支持的各種多條目操作的示意圖;圖12為按照本發(fā)明的示意性多模板的示意圖;圖13為搜索按照本發(fā)明的多條目數(shù)據(jù)庫(kù)的方法的流程圖;圖14為按照本發(fā)明的多條目搜索實(shí)例有關(guān)的數(shù)據(jù)庫(kù)系統(tǒng)的功能圖;圖15為搜索方法學(xué)的本發(fā)明實(shí)現(xiàn)方案以處理多個(gè)條目通知請(qǐng)求的流程圖;圖16為按照本發(fā)明的數(shù)據(jù)庫(kù)內(nèi)各種修改數(shù)據(jù)庫(kù)內(nèi)條目和多條目的操作的示意圖;圖17為按照本發(fā)明的單個(gè)條目修改操作步驟的流程圖;圖18為按照本發(fā)明的多條目加入操作步驟的流程圖;圖19為按照本發(fā)明的多條目修改/刪除操作的流程圖;以及圖20為按照本發(fā)明的用于修改操作的通知操作的流程圖。
雖然本發(fā)明易于修改和采用各種形式,但是以下將借助實(shí)施例作詳細(xì)描述。應(yīng)該理解的是,附圖和說(shuō)明書(shū)對(duì)本發(fā)明并無(wú)限定作用,本發(fā)明的精神和范圍由所附權(quán)利要求限定。
實(shí)施發(fā)明的較佳方式按照本發(fā)明的方法和系統(tǒng)存儲(chǔ)和搜索數(shù)據(jù)庫(kù)內(nèi)的條目。每個(gè)條目是定義類型字段的給定類型,并且每個(gè)字段包含或識(shí)別給定類型對(duì)象。這些條目可以JavaTM編程語(yǔ)言的JavaTM類表示。此外,按照本發(fā)明的方法和系統(tǒng)也可以在數(shù)據(jù)庫(kù)內(nèi)存儲(chǔ)和搜索條目組。通常,這些搜索利用模板組完成。
在一個(gè)實(shí)現(xiàn)方案中,屬性與條目字段相關(guān)。這種關(guān)聯(lián)允許安全類型屬性匹配并且強(qiáng)化規(guī)定不同屬性類型之間的關(guān)系。
分布式系統(tǒng)參見(jiàn)附圖,圖1為分布式系統(tǒng)100的示意圖,其中可以采用按照本發(fā)明的多詞態(tài)條目、條目匹配和條目操作。圖1示出了由網(wǎng)絡(luò)105互連的多個(gè)計(jì)算機(jī)系統(tǒng)101-103。網(wǎng)絡(luò)105例如是局字段網(wǎng)(LAN)、廣字段網(wǎng)(WAN)或者因特網(wǎng)。每種計(jì)算機(jī)系統(tǒng)包括存儲(chǔ)器和微處理器,例如示意性的計(jì)算機(jī)系統(tǒng)101的存儲(chǔ)器120和CPU122。存儲(chǔ)器120代表各種類型可能的存儲(chǔ)器,例如硬盤(pán)存儲(chǔ)器、軟盤(pán)存儲(chǔ)器和動(dòng)態(tài)隨機(jī)存儲(chǔ)器(DRAM)。以一個(gè)或多個(gè)CD ROM或軟盤(pán)(其他存儲(chǔ)介質(zhì))為例的安裝介質(zhì)126進(jìn)一步表示為與計(jì)算機(jī)系統(tǒng)101相關(guān)。安裝介質(zhì)126通??梢源鎯?chǔ)實(shí)現(xiàn)搜索引擎部分和下述數(shù)據(jù)庫(kù)其他方面的代碼和/或數(shù)據(jù)并且可以用來(lái)在特定計(jì)算機(jī)內(nèi)部安裝代碼和/或數(shù)據(jù)。值得指出的是,在其他實(shí)施例中,按照本發(fā)明的數(shù)據(jù)庫(kù)系統(tǒng)可以在單個(gè)無(wú)網(wǎng)絡(luò)的計(jì)算機(jī)系統(tǒng)內(nèi)實(shí)現(xiàn)。
如下所述,計(jì)算機(jī)系統(tǒng)100實(shí)現(xiàn)了數(shù)據(jù)庫(kù)系統(tǒng),其中利用面向?qū)ο蠹夹g(shù)來(lái)存儲(chǔ)可能的類型或子類型條目。該數(shù)據(jù)庫(kù)也可以存儲(chǔ)稱為多條目的條目組,在單個(gè)條目實(shí)現(xiàn)方案之后將對(duì)此描述。數(shù)據(jù)庫(kù)的條目可以僅僅存儲(chǔ)在計(jì)算機(jī)系統(tǒng)101的存儲(chǔ)器122內(nèi)部或者可以跨幾個(gè)不同系統(tǒng)的存儲(chǔ)器(例如存儲(chǔ)器122和計(jì)算機(jī)系統(tǒng)102和103的類似存儲(chǔ)器)分布。每個(gè)條目是定義了條目字段的給定類型。每個(gè)字段包含或識(shí)別字段屬性或數(shù)據(jù)相關(guān)的對(duì)象。每個(gè)條目的類型可以進(jìn)一步以方法的形式定義行為。作為另一子類型的條目類型繼承了超級(jí)類型的所有字段和行為并且包含新增的字段和/或定義新/修改的行為。
數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)一步采用以軟件實(shí)現(xiàn)的搜索引擎,允許以數(shù)據(jù)庫(kù)內(nèi)的條目(或者下面的多條目)為基礎(chǔ)進(jìn)行查詢。在實(shí)現(xiàn)方案中,每個(gè)查詢包括定義給定條目關(guān)鍵字段的數(shù)值(或?qū)傩?的模板,給定條目必須匹配模板的對(duì)應(yīng)字段從而成功匹配。模板條目的其他字段可以定義為通配符,其數(shù)值無(wú)關(guān)緊要。計(jì)算機(jī)系統(tǒng)100采用的多詞態(tài)條目和條目匹配技術(shù)有利于使查詢導(dǎo)致與模板條目相同或是模板條目子類型條目的條目匹配。以下借助圖2-9描述多詞態(tài)條目和條目匹配技術(shù)的其他細(xì)節(jié)。
圖2為客戶機(jī)對(duì)(或用戶)202和204字段多個(gè)條目數(shù)據(jù)庫(kù)206-208之間通信流程圖。每個(gè)條目數(shù)據(jù)庫(kù)206-208可以跨分布式系統(tǒng)100的一個(gè)或多個(gè)存儲(chǔ)器子系統(tǒng)分布。每個(gè)客戶機(jī)202和204配置為產(chǎn)生提供給一個(gè)或多個(gè)條目數(shù)據(jù)庫(kù)206-208的查詢??蛻魴C(jī)202和204可以進(jìn)一步配置為如下所述在條目數(shù)據(jù)庫(kù)206-208內(nèi)存儲(chǔ)(寫(xiě)入)條目。圖2示出了事件捕捉器210,其功能將在下面描述。
條目匹配和操作圖3為可以存儲(chǔ)在條目數(shù)據(jù)庫(kù)206-208內(nèi)的多個(gè)示意性條目。在一個(gè)實(shí)現(xiàn)方案中,每個(gè)條目是用JavaTM編程語(yǔ)言的JavaTM類表示的對(duì)象類型組。在KenArnold、James Gosling的JavaTM編程語(yǔ)言(Addison-Wesley,1996)中描述了JavaTM編程語(yǔ)言,它作為參考文獻(xiàn)包含在本文中。JavaTM是太陽(yáng)微系統(tǒng)股份公司在美國(guó)和其他國(guó)家的注冊(cè)商標(biāo)。但是應(yīng)該理解的是,在其他實(shí)施例中條目可以在其他編程語(yǔ)言的類中被定義。
圖3的條目1包括一組由條目1的類類型定義的4個(gè)字段(字段A、字段B、字段C和字段D)。條目2包括一組由條目2的類類型定義的5個(gè)字段(字段A、字段B、字段C、字段D和字段E)。值得注意的是,由于條目2除了其他字段之外還包含了字段條目1相同的字段類型,所以條目2是條目1類型的子類。
條目3包括一組由條目3的類類型定義的4個(gè)字段(字段W、字段X、字段Y和字段Z)。值得注意的是,雖然條目1和3的每個(gè)包含了4個(gè)字段,但是由于他們的字段類型是不相同的,所以他們代表不同的類型。
眾多其他類型和子類型可以根據(jù)特定應(yīng)用或數(shù)據(jù)庫(kù)的需要進(jìn)一步與數(shù)據(jù)庫(kù)系統(tǒng)相關(guān)。此外值得注意的是,條目可以是子類型的子類型。為了示例起見(jiàn),下列代碼示出了在JavaTM編程語(yǔ)言中定義的具體的示意條目購(gòu)書(shū)的“請(qǐng)求出價(jià)”對(duì)象<pre listing-type="program-listing"><![CDATA[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.]]></pre>
“完整的”請(qǐng)求出價(jià)包括ISBN<pre listing-type="program-listing"><![CDATA[public class FullRFB extends a RFB { public String isbn;\\ The ISBN field.}]]></pre>參見(jiàn)圖3,條目的每個(gè)字段配置為存儲(chǔ)指向或識(shí)別類型對(duì)象的數(shù)值。這些類型對(duì)象的每一個(gè)同樣表達(dá)為JavaTM類。例如條目1的字段A包含了識(shí)別對(duì)象310的數(shù)值,而條目1的字段B識(shí)別對(duì)象312。同樣,條目2的字段A識(shí)別對(duì)象314,而字段B識(shí)別對(duì)象316,等等。值得注意的是,由于條目2為條目1的子類,所以對(duì)于圖3的示意性條目,字段條目1的字段A相關(guān)的對(duì)象310由字段條目2的字段A相關(guān)的對(duì)象314的同一類類型表示。但是與對(duì)象310和314的每一個(gè)相關(guān)的屬性或數(shù)據(jù)可以不同。進(jìn)一步需要指出的是,各種條目的字段識(shí)別的對(duì)象可以根據(jù)所定義類型的需要包含整數(shù)數(shù)據(jù)、布爾數(shù)據(jù)、串?dāng)?shù)據(jù)或其他數(shù)據(jù)類型。而且主要進(jìn)一步指出的是,由于每個(gè)字段與類型對(duì)象相關(guān),所以方法可以得到支持并且經(jīng)外部刺激選擇啟用以根據(jù)需要完成對(duì)數(shù)據(jù)的操作。同樣,每個(gè)條目類型如下所述可以支持一種或多種方法。
參見(jiàn)圖2,如上所述,條目數(shù)據(jù)庫(kù)206、207和208中的每一個(gè)可以存儲(chǔ)子類的各種類型的許多條目。一個(gè)條目可以經(jīng)客戶啟用的寫(xiě)入操作存儲(chǔ)在給定條目數(shù)據(jù)庫(kù)206-208內(nèi)。條目可以經(jīng)安裝介質(zhì)(例如圖1的安裝介質(zhì)1)另外提供給條目數(shù)據(jù)庫(kù)。
幾種另外的操作進(jìn)一步得到如同4所示系統(tǒng)的支持。特別是,除了寫(xiě)入操作意外,客戶或用戶可以啟動(dòng)“讀取”操作、“提取”操作或“通知”操作。
讀取、提取和通知操作被用來(lái)查詢特定的條目數(shù)據(jù)庫(kù)以確定帶某些特定特性的條目是否寫(xiě)入條目數(shù)據(jù)庫(kù),并且如果是,則導(dǎo)致具體的行動(dòng)。在一個(gè)特定實(shí)現(xiàn)方案中,這些查詢通過(guò)采用作為定義條目類型(字段操作有關(guān))的操作請(qǐng)求部分的模板進(jìn)行。可以啟動(dòng)讀取操作以讀取匹配相關(guān)模板的條目數(shù)據(jù)庫(kù)內(nèi)的條目。提取操作與讀取類似;但是提取操作將從條目數(shù)據(jù)庫(kù)中去除匹配模板的條目。最后,通知操作在匹配相關(guān)模板的特定條目數(shù)據(jù)庫(kù)的將來(lái)輸入條目中注冊(cè)興趣。當(dāng)匹配條目到達(dá)時(shí),通知客戶或具體的事件捕捉器。以下將描述有關(guān)這些操作的細(xì)節(jié)。
圖5示出了示意性模板。通常,模板定義了其字段可以具有數(shù)值(對(duì)象引用)或“通配符”的特定條目類型。當(dāng)將條目數(shù)據(jù)庫(kù)內(nèi)的特定條目考慮為對(duì)模板的潛在匹配時(shí),條目具體字段(即不對(duì)應(yīng)模板的通配符字段)的屬性必須精確匹配模板對(duì)應(yīng)字段定義的屬性(或者落在可能的屬性范圍內(nèi))。對(duì)應(yīng)模板“通配符”字段的條目的字段可以具有任何屬性并且不影響匹配輸入(即模板內(nèi)的通配符匹配條目同一字段的任何數(shù)值)。在一個(gè)實(shí)現(xiàn)方案中,通配符借助空引用值定義。如下所述,匹配模板的條目類型可以是模板類型的子類型。因此將子類型定義的特定條目的所有字段考慮為通配符。這使得模板可以匹配任何子類型的條目。值得指出的是,無(wú)通配符的條目可以進(jìn)一步是有效模板。
圖6為示出了在特定條目數(shù)據(jù)庫(kù)內(nèi)搜索條目以響應(yīng)按照本發(fā)明的讀取請(qǐng)求或提取請(qǐng)求的方法的流程圖。如上所述,讀取請(qǐng)求可以由客戶(或用戶)啟動(dòng)以讀取匹配給定模板的條目。提取請(qǐng)求可以被啟動(dòng)以從條目數(shù)據(jù)庫(kù)去除匹配給定模板的的條目。
(1)條目匹配的方法以下結(jié)合圖7描述圖6所示步驟,圖7示出了采用圖6搜索方法學(xué)的數(shù)據(jù)庫(kù)系統(tǒng)的功能。圖7的功能單元可以通過(guò)與圖1的一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)101-103相關(guān)的軟件與硬件的組合實(shí)現(xiàn)。在步驟602中,由用戶702向數(shù)據(jù)庫(kù)管理器704提供讀取或提取請(qǐng)求。給定的請(qǐng)求包括特定的模板,圖7示出了示意性的模板706。數(shù)據(jù)庫(kù)管理器704的搜索引擎708隨后在步驟604中搜索條目數(shù)據(jù)庫(kù)710以確定模板的匹配類型或子類型是否駐留在條目數(shù)據(jù)庫(kù)710中。如果條目數(shù)據(jù)庫(kù)710內(nèi)沒(méi)有與模板同一類型或子類型的條目(步驟606),則數(shù)據(jù)庫(kù)管理器704在步驟608中向用戶702返回空值。
如果搜索引擎708確定匹配模板類型或子類型的條目數(shù)據(jù)庫(kù)內(nèi)有一個(gè)或多個(gè)條目,則它將(同一類型或子類型的)選定條目的字段與未指定為通配符的模板706的對(duì)應(yīng)字段比較(步驟610)。搜索引擎708舍棄對(duì)應(yīng)模板通配符字段的選定條目的任何字段(步驟612)。在特定的實(shí)現(xiàn)方案中,搜索引擎708確定與條目的每個(gè)非通配符字段相關(guān)的屬性或數(shù)據(jù)是否與對(duì)應(yīng)的模板條目的屬性或數(shù)據(jù)精確匹配。如果不是通配符的任何字段的屬性并不精確匹配模板的屬性,則確定沒(méi)有條目匹配。指定注意的是,在其他實(shí)施例中,模板字段可以定義對(duì)應(yīng)字段的數(shù)據(jù)必須導(dǎo)致匹配的數(shù)值范圍(而不是要求精確匹配)。
(2)實(shí)例在圖7所示的實(shí)例中,模板706的字段C定義為通配符。因此當(dāng)搜索引擎708搜索匹配條目的條目數(shù)據(jù)庫(kù)710時(shí),搜索引擎首先確定任何條目是否駐留在作為模板706的類型或子類型的條目數(shù)據(jù)庫(kù)710內(nèi)。條目1和條目2同時(shí)滿足該資格。搜索引擎708隨后選擇其中一個(gè)條目(例如所示為條目2)并且將條目的字段與未定義為通配符的模板的字段進(jìn)行比較。搜索引擎708確定模板每個(gè)非通配符字段是否與條目的每個(gè)對(duì)應(yīng)字段的屬性精確匹配。值得注意的是,由于圖7模板706的字段C被指定為通配符字段,所以條目2的字段C的屬性被舍棄并且不影響比較操作。同樣,模板類型的子類型定義的任何條目的那些字段被舍棄(即即使通配符字段的屬性不匹配,則仍然可能匹配)。如果找到匹配條目(所有非通配符字段匹配),則搜索引擎708根據(jù)請(qǐng)求是讀取請(qǐng)求還是提取請(qǐng)求,從條目數(shù)據(jù)庫(kù)710讀取匹配條目并且提供給用戶,或者從條目數(shù)據(jù)庫(kù)710去除條目。搜索引擎708搜索條目數(shù)據(jù)庫(kù)710直到找到匹配或者直到檢查了所有的條目。如果在搜索了數(shù)據(jù)庫(kù)內(nèi)所有條目之后沒(méi)有找到匹配的條目,則數(shù)據(jù)庫(kù)管理器704向用戶702返回空值(步驟616)。
(3)通知參見(jiàn)圖8,流程圖示出了搜索引擎708實(shí)現(xiàn)的方法學(xué)以處理從按照本發(fā)明的用戶接收的通知請(qǐng)求。如上所述,通知請(qǐng)求可以由用戶發(fā)布以在匹配模板的未來(lái)輸入條目中注冊(cè)興趣。當(dāng)匹配條目到達(dá)時(shí),數(shù)據(jù)庫(kù)管理器根據(jù)需要通知用戶或事件捕捉器(圖2)。當(dāng)用戶啟用通知請(qǐng)求時(shí),定義租借時(shí)間指示數(shù)據(jù)庫(kù)管理器704多長(zhǎng)時(shí)間將注冊(cè)通知。在規(guī)定時(shí)間之后,取消通知注冊(cè)。
因此如圖8所示,當(dāng)數(shù)據(jù)庫(kù)管理器704接收新的通知請(qǐng)求時(shí)(步驟802),監(jiān)視輸入的條目直到注冊(cè)時(shí)間到期(步驟804和806)。如果條目被寫(xiě)入作為模板類型或子類型的條目數(shù)據(jù)庫(kù)710(步驟808),則比較條目字段以確定屬性是否匹配字段模板非通配符字段相關(guān)的屬性(步驟810)。與上述討論類似,舍棄作為通配符或由模板條目子類型定義的輸入條目的字段(步驟812)。如果匹配,則通知用戶或事件捕捉器(捕捉814和816)。新增的輸入條目持續(xù)被監(jiān)視只要注冊(cè)事件未到期。
(4)索引參見(jiàn)圖7,搜索引擎708可以進(jìn)一步配置為創(chuàng)建具有數(shù)據(jù)庫(kù)管理器704接收的查詢共同定義的特性的索引。即,搜索引擎708可以檢測(cè)用法模式并且創(chuàng)建指向具有接收模板共同定義的屬性的條目的索引720。作為實(shí)例,考慮到數(shù)據(jù)庫(kù)管理器704接收查詢請(qǐng)求的情況(每個(gè)請(qǐng)求利用圖7所示模板706的同一類型或子類型的模板)。在這種情況下,搜索引擎708可以檢測(cè)到字段A同樣屬性的值(例如整數(shù)值1000)在眾多請(qǐng)求的每個(gè)模板內(nèi)定義。在一個(gè)實(shí)現(xiàn)方案中,數(shù)據(jù)庫(kù)管理器704配置為檢測(cè)這種由許多請(qǐng)求定義的公共模板用法并創(chuàng)建指向條目數(shù)據(jù)庫(kù)710內(nèi)所有條目的索引720,數(shù)據(jù)庫(kù)710與公共接收模板同一類型或子類型并且具有字段A定義的公共屬性。因此當(dāng)接收帶相似模板的新查詢時(shí)(即再次定義字段A的數(shù)值1000的模板),搜索引擎708可以采用索引720快速定位字段模板匹配的條目子集而無(wú)需搜索數(shù)據(jù)庫(kù)內(nèi)整個(gè)條目集。
圖9A和9B示出了索引方法學(xué)的實(shí)現(xiàn)方案。如圖9A所示,對(duì)應(yīng)特定模板類別的條目的索引可以通過(guò)跟蹤請(qǐng)求模板(步驟910)并確定與模板相關(guān)的模式是否存在(例如以相同屬性或數(shù)值定義的特定非通配符字段)而創(chuàng)建(步驟912)??梢岳绺鶕?jù)在具有類似模板的特定時(shí)間內(nèi)接收預(yù)定數(shù)量的查詢或者根據(jù)接收具有類似模板的查詢的一定百分比作出判斷。當(dāng)搜索引擎708檢測(cè)公共的模板用法模式時(shí),它創(chuàng)建特定模板類別的條目的索引(步驟914)。因此考慮到上述實(shí)例,搜索引擎708可以創(chuàng)建對(duì)同一類型或子類型的條目的索引作為帶數(shù)值為1000的字段A的模板706。
如圖9B所示,如果在步驟920中接收到新的請(qǐng)求,則如果不存在特定模板類別的索引則完成正常搜索(步驟922和924)。如果存在新請(qǐng)求模板的索引類別,則利用索引尋找可能匹配條目的子集并且僅僅比較這些條目。這樣,可以適應(yīng)快速條目搜索。值得注意的是,如果不再檢測(cè)到公共用法,則搜索引擎708可以隨后刪除某些索引。
如上所述,條目類型可以進(jìn)一步定義被外部刺激啟用的方法(例如與數(shù)據(jù)庫(kù)系統(tǒng)相關(guān)的軟件程序)以導(dǎo)致特定的動(dòng)作。這種特定動(dòng)作可能影響駐留在條目中的數(shù)據(jù)。此外,可以采用一種方法進(jìn)行高效的等價(jià)檢查以確定特定條目是否與其他(等價(jià)于模板)等價(jià),即使數(shù)據(jù)形式是不同的。例如存儲(chǔ)解壓縮視頻數(shù)據(jù)的條目可能被視為與另一存儲(chǔ)壓縮形式視頻數(shù)據(jù)的條目等價(jià)??梢蕴峁┮环N方法來(lái)確定這種條目等價(jià),即使實(shí)際存儲(chǔ)的數(shù)據(jù)是不同的(例如可以啟用方法來(lái)確定對(duì)象是否指向與圖像相關(guān)的文件系統(tǒng)內(nèi)的同一路徑名)。
進(jìn)一步指出條目可以存儲(chǔ)在包括條目類的序列化形式和每個(gè)條目字段的特定實(shí)現(xiàn)表示中。模板的序列化形式隨后可以與條目的序列化形式比較。最后注意的是,條目可以由另一條目的字段定義。
多條目和多模板匹配替換實(shí)施例實(shí)現(xiàn)了數(shù)據(jù)庫(kù)內(nèi)項(xiàng)目的操作和匹配,每個(gè)條目定義了條目組。“項(xiàng)目”稱為“多條目”;“多模板”(或者“項(xiàng)目模板”)是用來(lái)指向模板組的項(xiàng)目,被用來(lái)匹配數(shù)據(jù)庫(kù)內(nèi)的項(xiàng)目。該部分將進(jìn)一步,描述多條目與多模板的匹配和涉及多條目和多模板的操作。多條目和多模板的許多行為與前述單個(gè)條目和模板行為類似。
圖10為可以存儲(chǔ)在條目數(shù)據(jù)庫(kù)206-208內(nèi)的多個(gè)示意性多條目的示意圖。在按照本發(fā)明的方法和系統(tǒng)中,每個(gè)多條目是條目組,每個(gè)條目是以JavaTM編程語(yǔ)言的JavaTM類表示的對(duì)象類型組。換句話說(shuō),多條目是條目集合并且沒(méi)有自己的類型。
參見(jiàn)圖10,多條目1包括一個(gè)4單元組(單元A、單元B、單元C和單元D)。而多條目可以是變長(zhǎng)度的,示意性的多條目1包括一個(gè)5單元組(單元E、單元F、單元G、單元H和單元I),并且示例的多條目3包括一個(gè)3單元組(單元J、單元K和單元L)。每個(gè)多條目單元配置為存儲(chǔ)類型化條目。如上所述,每個(gè)類型化條目可以用JavaTM類表示并且條目字段存儲(chǔ)識(shí)別類型化對(duì)象的數(shù)值。例如,多條目1的單元A包含識(shí)別條目1010的數(shù)值,并且多條目1的單元B包含識(shí)別條目1012的數(shù)值。同樣多條目2的單元E包含識(shí)別條目1014的數(shù)值,而多條目2的單元F包含識(shí)別條目1016的數(shù)值,等等。值得注意的是,對(duì)于圖10的示意性多條目,雖然條目可以有同樣的類型,但是與條目字段相關(guān)的屬性或數(shù)據(jù)可以不同。進(jìn)一步指出雖然各種多條目單元識(shí)別的條目具有特定的類型,但是多條目是簡(jiǎn)單的條目組并且本身沒(méi)有特定類型。
由于多條目和多模板剛剛被設(shè)定,所以他們可以利用任何合適的一個(gè)集合形式表示。出于實(shí)例考慮,許多編程語(yǔ)言中合適的表現(xiàn)形式(包括Java編程語(yǔ)言)為數(shù)組,數(shù)組的尺寸由多條目或多模板中的模板數(shù)給定,并且數(shù)組的每個(gè)單元為條目(如果是多條目)或者模板(如果是多模板)。
參見(jiàn)圖2,如上所述,每個(gè)條目數(shù)據(jù)庫(kù)206、207和208可以存儲(chǔ)眾多的多條目。多條目可以通過(guò)客戶啟用的寫(xiě)入操作存儲(chǔ)在給定條目數(shù)據(jù)庫(kù)206-208中。多條目可以經(jīng)安裝介質(zhì)(例如圖1的安裝介質(zhì))另外提供給條目數(shù)據(jù)庫(kù)。與單個(gè)條目操作類似的幾個(gè)新增操作進(jìn)一步得到圖11所示系統(tǒng)的支持。具體而言,除寫(xiě)入操作以外,客戶或用戶還可以啟動(dòng)“讀取”操作、“提取”操作和“通知”操作。
讀取、提取或通知操作以操作單個(gè)條目相同的方式操作多條目。在特定實(shí)現(xiàn)方案中,這些查詢通過(guò)使用作為操作請(qǐng)求一部分的多模板進(jìn)行,操作請(qǐng)求定義了操作感興趣的多條目。與單個(gè)條目實(shí)現(xiàn)方案一樣,讀取操作在匹配給定多模板的數(shù)據(jù)庫(kù)內(nèi)讀取多條目。提取操作完成與讀取操作相同的操作但是從數(shù)據(jù)庫(kù)移去了讀取的多條目。用來(lái)在未來(lái)多條目中注冊(cè)興趣的通知操作在匹配的多條目到達(dá)數(shù)據(jù)庫(kù)內(nèi)時(shí)通知客戶或事件捕捉器。
圖12示出了示意性多模板。通常,多模板定義了特定的多條目,其單元包含了上述定義的模板。圖12所示的多模板1200具有4個(gè)單元W、X、Y和Z,雖然應(yīng)當(dāng)指出的是多模板具有任意數(shù)量的單元,但是在本發(fā)明的示意性實(shí)施例中,多模板1200內(nèi)的每個(gè)單元包括一個(gè)模板1202。
(1)多條目和多模板匹配的方法通常,如果多模板內(nèi)每個(gè)模板在多條目中具有匹配條目,則多模板將匹配多條目。多條目中的每個(gè)條目可以用來(lái)匹配多模板中一個(gè)或多個(gè)模板。例如,多條目中的單個(gè)條目可以匹配多模板中的所有模板,由此創(chuàng)建多條目與多模板之間的匹配。在確定多條目是否與多模板匹配的過(guò)程中,需要將多條目的單個(gè)條目與多模板中的單個(gè)模板進(jìn)行比較。按照前述將單個(gè)條目與單個(gè)模板匹配相同的方式完成多模板中單個(gè)模板與多條目中單個(gè)條目的匹配。
圖13為響應(yīng)讀取請(qǐng)求或提取請(qǐng)求在特定條目數(shù)據(jù)庫(kù)內(nèi)搜索多條目方法的流程圖。以下借助圖14描述圖13所示的步驟,圖14示出了采用圖13搜索方法學(xué)的數(shù)據(jù)庫(kù)系統(tǒng)的功能。圖14的功能單元可以通過(guò)與圖1的一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)101-103相關(guān)的軟件與硬件的組合實(shí)現(xiàn)。在步驟1302中,由用戶702向數(shù)據(jù)庫(kù)管理器704提供讀取或提取請(qǐng)求。給定的請(qǐng)求包括特定的多模板,圖14示出了示意性的多模板1200。數(shù)據(jù)庫(kù)管理器704的搜索引擎708隨后搜索條目數(shù)據(jù)庫(kù)710以確定多模板的匹配多條目是否駐留在條目數(shù)據(jù)庫(kù)710中。
為了搜索條目數(shù)據(jù)庫(kù)710,搜索引擎708在條目數(shù)據(jù)庫(kù)710內(nèi)選擇多條目以同給定的多模板比較(步驟1304)。隨后,為了確定多條目是否匹配特定的多模板,搜索引擎708將多模板中的每個(gè)模板與多條目的條目進(jìn)行比較(步驟1306)。如果對(duì)于多模板存在匹配的條目,則多條目匹配多模板(1308)。多條目中的每個(gè)條目可以用來(lái)匹配多模板中不止一個(gè)的模板。如果確定多模板內(nèi)的每個(gè)模板在多條目中具有匹配條目(步驟1310),則多模板匹配多條目,并且返回多條目(步驟1312)。該過(guò)程持續(xù)直到檢查完數(shù)據(jù)庫(kù)內(nèi)所有的條目。
如果在選定的多條目與操作提供的多模板之間不匹配,則搜索引擎708搜索條目數(shù)據(jù)庫(kù)710內(nèi)其他的多條目(步驟1314)。如果在數(shù)據(jù)庫(kù)內(nèi)沒(méi)有找到匹配多模板的多條目,則返回空值(步驟1316)。如果找到不止一個(gè),則在一個(gè)實(shí)現(xiàn)方案中返回一個(gè)多條目,而在另一實(shí)現(xiàn)方案中返回要求的匹配多條目數(shù)量。如果來(lái)自客戶的初始請(qǐng)求以提取請(qǐng)求形式到達(dá),則從數(shù)據(jù)庫(kù)移去匹配的多條目。但是如果初始請(qǐng)求以讀取請(qǐng)求形式到達(dá),則不從數(shù)據(jù)庫(kù)去除匹配的多條目。
(2)實(shí)例在圖14所示的實(shí)例中,搜索引擎708選擇其中一個(gè)多條目(例如多條目2)并且將多條目的條目與多模板的模板比較。在該實(shí)例中,搜索引擎708接收包含多模板1200的請(qǐng)求。
搜索引擎708確定多模板1200內(nèi)的模板是否匹配條目數(shù)據(jù)庫(kù)710內(nèi)選定的多條目的條目。搜索引擎708將多模板1200的單元W內(nèi)的模板與條目數(shù)據(jù)庫(kù)710內(nèi)多條目2的單元E、F、G、H以及I內(nèi)的條目比較以確定任一條目是否匹配模板。如果搜索引擎708找到與多模板1200的單元W內(nèi)模板的匹配,則它可以試圖尋找與多模板1200的單元X內(nèi)模板的匹配。它將多模板1200單元X的模板與多條目2內(nèi)的每個(gè)條目進(jìn)行比較直到找到匹配。應(yīng)該指出的是,即使單元E、F、G、H和I內(nèi)的每個(gè)條目已經(jīng)與多模板內(nèi)的其他模板進(jìn)行了比較(例如單元W內(nèi)的模板),但是它們也可以與模板再次比較。如果對(duì)于單元X內(nèi)的模板找到了匹配,則搜索引擎708以同樣方式檢查多模板1200內(nèi)其余的模板(單元Y和Z內(nèi)的模板)。由于每個(gè)條目可以與不止一個(gè)模板比較,所以多條目2的單元E內(nèi)的條目例如匹配多模板1200的單元W、X、Y和Z內(nèi)所有的模板。如果多模板1200內(nèi)的每個(gè)模板在多條目2內(nèi)具有匹配的條目,則多條目2匹配多模板1200。
與單個(gè)條目操作一樣,如果找到匹配的多條目,則搜索引擎708根據(jù)請(qǐng)求是讀取請(qǐng)求還是提取請(qǐng)求從條目數(shù)據(jù)庫(kù)710讀取或去除匹配的多條目并且提供給用戶。搜索引擎708繼續(xù)搜索條目數(shù)據(jù)庫(kù)710直到找到匹配或者檢查完所有的多條目。如果在搜索條目數(shù)據(jù)庫(kù)710內(nèi)所有多條目之后未找到匹配的多條目,則數(shù)據(jù)庫(kù)管理器704向用戶702返回空值。
(3)通知參見(jiàn)圖15,流程圖示出了搜索引擎708處理來(lái)自用戶的通知請(qǐng)求的方法。通知操作的工作方式與單個(gè)條目的類似,并且如上所述,由用戶發(fā)布通知請(qǐng)求以在匹配多模板的未來(lái)輸入的多條目中注冊(cè)興趣。當(dāng)匹配的多條目到達(dá)時(shí),數(shù)據(jù)庫(kù)管理器704通知用戶或事件捕捉器(圖2)。當(dāng)用戶啟用通知請(qǐng)求時(shí),指定租借時(shí)間為數(shù)據(jù)庫(kù)管理器704將注冊(cè)通知多長(zhǎng)時(shí)間。在規(guī)定時(shí)間之后,取消通知注冊(cè)。
因此如圖15所示,當(dāng)數(shù)據(jù)庫(kù)管理器704接收新通知請(qǐng)求時(shí)(步驟1502),監(jiān)視輸入的多條目直到注冊(cè)時(shí)間到期(步驟1504和1506)。如果多條目被寫(xiě)入條目數(shù)據(jù)庫(kù)710,則搜索引擎確定多條目是否匹配多模板。與上述討論類似,如果多模板的每個(gè)模板在多條目中具有匹配的條目(步驟1508和1510),則匹配并且通知用戶或時(shí)間捕捉器(步驟1512)。另外輸入的多條目持續(xù)被監(jiān)視只要注冊(cè)時(shí)間未到期(步驟1504)。
原位條目修改替換實(shí)施例另外實(shí)現(xiàn)了數(shù)據(jù)庫(kù)內(nèi)原位修改條目和多條目。按照本發(fā)明,該實(shí)現(xiàn)方案擴(kuò)展到條目/模板和多條目/多模板情況,其中條目字段可以在數(shù)據(jù)庫(kù)內(nèi)原位修改,并且在多條目情況下,多條目?jī)?nèi)的條目可以增加、修改或刪除。術(shù)語(yǔ)“原位”的含義是在數(shù)據(jù)庫(kù)內(nèi)進(jìn)行修改而不從數(shù)據(jù)庫(kù)移去條目或多條目。
按照本發(fā)明該實(shí)現(xiàn)方案的原位修改操作包括“單個(gè)條目修改”、“多條目增加”、“多條目修改/刪除”和“通知”。圖16示出了用戶提供的原位修改和信息以請(qǐng)求修改。單個(gè)修改操作改變了數(shù)據(jù)庫(kù)內(nèi)條目個(gè)別字段內(nèi)的數(shù)值。多條目增加操作將條目加入數(shù)據(jù)庫(kù)內(nèi)的多條目,并且多條目修改/刪除改變或刪除數(shù)據(jù)庫(kù)內(nèi)多條目?jī)?nèi)的條目。相對(duì)原位修改,通知操作通知由于數(shù)據(jù)庫(kù)內(nèi)條目或多條目變化引起的匹配。通常,如圖16所示,操作請(qǐng)求的第一參數(shù)指定了數(shù)據(jù)庫(kù)內(nèi)哪一個(gè)條目或那些多條目被修改,而第二參數(shù)規(guī)定了所作的修改。
(1)單個(gè)條目修改圖17示出了按照本發(fā)明的單個(gè)條目修改操作的流程圖。以下借助圖7描述其結(jié)構(gòu)特點(diǎn)。為了啟用單個(gè)條目修改操作以改變條目中各個(gè)字段的數(shù)值,用戶702作出包括兩個(gè)模板的請(qǐng)求(步驟1700,參見(jiàn)圖16)。第一模板1602用來(lái)識(shí)別待修改的數(shù)據(jù)庫(kù)內(nèi)的條目而第二模板1604用來(lái)修改條目并且識(shí)別作出的修改。由于這兩個(gè)模板通過(guò)識(shí)別和修改在同一條目上操作,所以第二模板1604與第一模板1602的類型或超級(jí)類型相同。在某些實(shí)現(xiàn)方案中,單個(gè)條目修改程序可以包括模板的類型檢查。
首先,搜索引擎708在條目數(shù)據(jù)庫(kù)710內(nèi)搜索匹配從用戶702接收的第一模板1602的條目(步驟1702)。當(dāng)將數(shù)據(jù)庫(kù)內(nèi)條目與第一模板比較時(shí),按照上述單個(gè)條目和模板匹配完成匹配。如果在匹配第一模板1602的條目數(shù)據(jù)庫(kù)710內(nèi)沒(méi)有條目(步驟1704),則搜索引擎將零返回用戶702,表示由于該操作引起的條目數(shù)量的變化(步驟1712)。
如果找到匹配條目,則采用第二模板來(lái)原位修改數(shù)據(jù)庫(kù)內(nèi)的條目,即為修改而不從數(shù)據(jù)庫(kù)移去條目。由于第二模板1604是與第一模板1602相同的類型或者是超級(jí)類型并且第一模板1602是與修改條目相同的類型或超級(jí)類型,因此第二模板1604也與修改的條目相同類型或超級(jí)類型,這樣第二模板1604具有與修改條目相同的字段或子集。為了修改匹配條目,第二模板1604非空字段內(nèi)的數(shù)值被用來(lái)代替條目相應(yīng)字段內(nèi)的數(shù)值(步驟1708)。對(duì)應(yīng)第二模板1604空值或通配符字段的條目的字段值仍然不變。在數(shù)據(jù)庫(kù)內(nèi)條目修改之后,搜索引擎708繼續(xù)搜索更多修改的條目。如果在匹配第一模板1602的數(shù)據(jù)庫(kù)內(nèi)存在更多的條目(步驟1710),則以同樣方式修改這些條目(步驟1708)。在完成之后,搜索引擎708返回代表被操作修改條目數(shù)的數(shù)量(步驟1712)。
(2)多條目增加圖18為按照本發(fā)明的多條目增加操作步驟的流程圖。通常,多條目增加操作將條目加入數(shù)據(jù)庫(kù)內(nèi)規(guī)定的多條目?jī)?nèi)。請(qǐng)求該操作的用戶702向搜索引擎708提供兩個(gè)參數(shù),即多模板1606和多條目1608(參見(jiàn)圖6)。第一個(gè)參數(shù)多模板1606被用來(lái)識(shí)別變化的條目數(shù)據(jù)庫(kù)內(nèi)的多條目;第二個(gè)參數(shù)多條目1608是一組加入識(shí)別的多條目數(shù)據(jù)庫(kù)的條目組。利用上述匹配的多條目/多模板,搜索引擎708在數(shù)據(jù)庫(kù)內(nèi)搜索匹配用戶702給定的多模板1606的多條目(步驟1802)。如果沒(méi)有找到匹配的多條目(步驟1804),搜索引擎708將零返回用戶702以表示加入條目的多條目數(shù)量(步驟1812)。
如果找到多條目(步驟1804),則將用戶702提供的規(guī)定的多條目1608的條目加入在條目數(shù)據(jù)庫(kù)內(nèi)找到的匹配多條目而無(wú)需從條目數(shù)據(jù)庫(kù)710去除匹配的多條目(步驟1808)。在加入數(shù)據(jù)庫(kù)的多條目之后,搜索引擎708繼續(xù)搜索更多變化的多條目。如果在條目數(shù)據(jù)庫(kù)710內(nèi)有更多匹配超過(guò)請(qǐng)求中第一參數(shù)給出的多模板的多條目(步驟1810),則操作請(qǐng)求中多條目的條目以相同方式被加入多條目(步驟1808)。最后,搜索引擎708返回代表加入條目的多條目數(shù)量的數(shù)(步驟1812)。
(3)多條目修改/刪除圖19為按照本發(fā)明的實(shí)現(xiàn)多條目修改/刪除操作方法的流程圖。多條目修改/刪除操作根據(jù)請(qǐng)求中多條目的條目,修改數(shù)據(jù)庫(kù)內(nèi)多條目的條目或者從數(shù)據(jù)庫(kù)的多條目刪除條目。當(dāng)搜索引擎708接收多條目修改/刪除請(qǐng)求時(shí),請(qǐng)求包括兩個(gè)多模板作為兩個(gè)參數(shù),即多模板1610和多模板1612(步驟1900,參見(jiàn)圖16)。多模板1610被用來(lái)識(shí)別被修改或刪除的條目數(shù)據(jù)庫(kù)710內(nèi)的多條目,而用戶702提供的多模板1612規(guī)定了匹配多條目中條目的修改和刪除。
請(qǐng)求中給出的多模板1612包含了與多模板1610相同數(shù)量的模板。而且多模板1612中每個(gè)模板與多模板1610中對(duì)應(yīng)模板的類型或超級(jí)類型相同(即每個(gè)模板(ⅰ)在多模板1612中是與多模板1610中模板(ⅰ)類型或超級(jí)類型相同)。例如,多模板1612中的第一模板與多模板1610內(nèi)第一模板的類型或超級(jí)類型相同,第二模板與對(duì)應(yīng)的第二模板的類型或超級(jí)類型相同,等等。與公共多模板不同,請(qǐng)求參數(shù)的多模板1612中的模板可以是空值,并且這些模板被用來(lái)如下所述指定從多條目中的刪除。
搜索引擎708首先搜索匹配操作請(qǐng)求中第一參數(shù)給出的多模板的多條目(步驟1902)。如果沒(méi)有找到匹配,則返回零,表示多條目的數(shù)量被修改(步驟1914)。
如果在條目數(shù)據(jù)庫(kù)710內(nèi)找到匹配的多條目,則利用來(lái)自操作請(qǐng)求的多模板1612進(jìn)行修改。為了完成修改,對(duì)于多模板1612中非空模板,按照多模板1612中非空模板改變條數(shù)據(jù)庫(kù)710內(nèi)匹配的多條目中對(duì)應(yīng)的條目(步驟1908)。利用上述單個(gè)條目修改完成這種改變,并且修改在條目數(shù)據(jù)庫(kù)710內(nèi)原位進(jìn)行而無(wú)需去除匹配的多條目。例如如果多模板1612的模板(ⅰ)是非空的,則更改的多條目中的條目(ⅰ)利用單個(gè)條目修改,按照多模板1612中的模板(ⅰ)修改(圖17的步驟1708,這里多模板1612中的模板(ⅰ)被用作模板2)。模板(ⅰ)的非空字段值被用來(lái)代替已經(jīng)修改的現(xiàn)有條目的對(duì)應(yīng)字段內(nèi)的值。
對(duì)于給定多模板1612中的每個(gè)空模板,刪除匹配的多條目中對(duì)應(yīng)的條目(即對(duì)于空的多模板1612的模板(ⅰ),刪除修改的多條目中的每個(gè)(ⅰ))(步驟1910)。如果數(shù)據(jù)庫(kù)內(nèi)有更多與多模板1610匹配的多條目,則重復(fù)這些步驟以修改條目數(shù)據(jù)庫(kù)710內(nèi)剩余匹配的多條目(步驟1912)。當(dāng)搜索引擎708完成修改之后,它返回代表被修改多條目數(shù)量的數(shù)(步驟1914)。
但是當(dāng)處理多條目修改/刪除操作時(shí)會(huì)發(fā)生意外情況。在多條目/多模板匹配中,由于多條目中的條目可以用來(lái)匹配不止一個(gè)的多模板中的模板,所以多條目可以匹配多模板并且條目少于多模板包含的模板。如果這種多條目匹配多模板1610并且按照本發(fā)明的修改/刪除操作進(jìn)行修改,則多模板1612中不止一個(gè)的模板將被用來(lái)修改或刪除被修改多條目中的單個(gè)條目。在這種情況下,如果多模板1612中的這種模板(即對(duì)應(yīng)匹配被修改的多條目的條目的多模板的模板)表示刪除操作(即是空的),則刪除被修改的多條目中的條目。否則,如果多模板1612中所有這樣的模板指示修改操作,則所有的模板被用于修改,但是施加修改的順序的決定將是與特定的實(shí)施方案有關(guān)并且對(duì)于修改/刪除操作的總體沒(méi)有任何重要意義。
(4)修改/通知考慮到原位修改,在另一按照本發(fā)明的實(shí)現(xiàn)方案中,用戶可以在數(shù)據(jù)庫(kù)內(nèi)的條目或多條目?jī)?nèi)注冊(cè)興趣并且接收返回用戶或事件捕捉器的通知。在這種實(shí)現(xiàn)方案中,當(dāng)用戶通過(guò)提供模板或多模板在數(shù)據(jù)庫(kù)內(nèi)的條目或多條目中注冊(cè)興趣時(shí),搜索引擎708不監(jiān)視已經(jīng)完成的輸入條目或多條目。當(dāng)實(shí)現(xiàn)原位修改通知時(shí),它監(jiān)視已經(jīng)在數(shù)據(jù)庫(kù)內(nèi)改變或修改的條目或多條目。數(shù)據(jù)庫(kù)內(nèi)修改條目或多條目的監(jiān)視是前面通知操作與涉及原位修改的當(dāng)前通知操作的主要區(qū)別。但是通知的許多基本方面是相同的。
通常,模板1614或多模板1616被用來(lái)在改變條或多條目中注冊(cè)興趣。在原位修改期間改變條目或多條目之后,搜索引擎708檢查以確定改變的條目或多條目是否匹配注冊(cè)的模板或多模板,或者改變的多條目或條目是否匹配模板或多模板。因此通知操作搜索匹配狀態(tài)內(nèi)從匹配到不匹配或者從不匹配到匹配的過(guò)渡。
參見(jiàn)圖20,流程圖示出了搜索引擎708處理用戶的通知請(qǐng)求以監(jiān)視條目或多條目?jī)?nèi)變化的實(shí)現(xiàn)方案。在這種情況下,通知請(qǐng)求可以由用戶發(fā)布以將興趣注冊(cè)在規(guī)定的條目或多條目中從而確定它們是否改變了與提供的模板1614或多模板1616相關(guān)的匹配狀態(tài)。當(dāng)修改條目或多條目時(shí),其匹配狀態(tài)可以從匹配模板1614或多模板1616變?yōu)椴黄ヅ?,或者從不匹配變?yōu)槠ヅ?。?dāng)條目或多條目相對(duì)通知操作請(qǐng)求中的模板1614或多模板1616改變其匹配狀態(tài)時(shí),數(shù)據(jù)庫(kù)管理器704根據(jù)需要通知用戶或事件捕捉器(參見(jiàn)圖2)。當(dāng)用戶調(diào)用通知請(qǐng)求時(shí),租借事件規(guī)定了數(shù)據(jù)庫(kù)管理器70將注冊(cè)通知多長(zhǎng)時(shí)間。在規(guī)定時(shí)間之后,取消通知注冊(cè)。
因此如圖20所示,當(dāng)數(shù)據(jù)庫(kù)管理器704接收新的通知請(qǐng)求時(shí)(捕捉2002),條目或多條目在修改時(shí)被監(jiān)視直到注冊(cè)時(shí)間到期(步驟2004和2006)。如果條目或多條目在條目數(shù)據(jù)庫(kù)710內(nèi)被修改,則搜索引擎708確定條目或多條目是否改變了相對(duì)通知請(qǐng)求中接收的模板1614或多模板1616的匹配狀態(tài)(步驟2008或2010)。搜索引擎708確定修改的條目或多條目是否從匹配模板或多模板變?yōu)椴黄ヅ浠蛘呦喾?。如果發(fā)生了匹配狀態(tài)的過(guò)渡,則通知用戶或時(shí)間捕捉器(步驟2012)。原位修改的新增條目或多條目繼續(xù)被監(jiān)視只要注冊(cè)時(shí)間未到期(步驟2004)。
安全類型屬性匹配按照本發(fā)明的另一實(shí)現(xiàn)方案涉及代表各種表示為對(duì)象的數(shù)據(jù)庫(kù)條目的數(shù)值。在這種實(shí)現(xiàn)方案中,通過(guò)使條目字段屬性相關(guān)并利用條目、多條目及其操作,可以實(shí)現(xiàn)類型安全屬性匹配。類型安全屬性匹配涉及數(shù)據(jù)庫(kù)內(nèi)屬性不同類型的搜索并且允許屬性強(qiáng)烈類型化。它進(jìn)一步允許增強(qiáng)規(guī)定屬性之間的關(guān)系并且允許按類型高效引用和操作屬性。
利用類型安全屬性匹配,可以使屬性和名稱嚴(yán)格地互相關(guān)聯(lián)(即頁(yè)/分鐘屬性僅僅與打印機(jī)相關(guān))以及屬性和它們的值(即頁(yè)/分鐘僅僅與整數(shù)相關(guān))相關(guān)聯(lián)。類型安全屬性匹配允許增強(qiáng)屬性對(duì)與數(shù)值之間的關(guān)系。它還使得類型對(duì)象可以高效搜索而許多不同類型的對(duì)象可以存儲(chǔ)在單個(gè)數(shù)據(jù)庫(kù)內(nèi)。此外,它允許修改僅僅影響數(shù)據(jù)庫(kù)內(nèi)對(duì)象的特定類型,雖然數(shù)據(jù)庫(kù)可以存儲(chǔ)許多不同的對(duì)象類型。
按照本發(fā)明,通過(guò)使屬性與條目字段相關(guān)實(shí)現(xiàn)安全類型的匹配。條目字段內(nèi)存儲(chǔ)的數(shù)值是相關(guān)屬性的數(shù)值。由于一組屬性可以是Java類,所以類提供了組和單個(gè)屬性的強(qiáng)類型定義。例如下列實(shí)例示出了代表典型打印機(jī)的條目,字段代表了打印機(jī)的屬性(頁(yè)/分鐘、分辨率等等)以及代表類別信息的條目,例如名稱、產(chǎn)品數(shù)據(jù)和物理位置<pre listing-type="program-listing"><![CDATA[ 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 inthe above}public class Type implements Entry { String type; // the general type of service String vendor;// vendor of product that implements theservice String model; // model number/name of product String version; // version number of productpublic 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]]></pre>
如上所示,存在字段的嚴(yán)格類型定義和條目,并且這些字段和它們的類型總是與這些條目和類型關(guān)聯(lián)。例如“ppm”或“頁(yè)/分鐘”是“整數(shù)”類型。
利用多條目進(jìn)一步描述項(xiàng)目。利用多條目,典型的打印機(jī)也可以作為一組屬性描述。當(dāng)以這種方式描述典型的打印機(jī)時(shí),可以包括諸如位置、名稱或機(jī)器類型之類的其他方面,每個(gè)方面由多條目中的另一條目表示。上述實(shí)例中的條目組構(gòu)成了代表典型打印機(jī)屬性的示意性多條目。
條目和多條目操作可以用來(lái)搜索和操作屬性的這些類型安全集。這些操作包括提取、通知、讀取、條目修改、多條目加入、多條目修改/刪除和修改通知。應(yīng)該指出的是,可以在按照本發(fā)明的數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)完成其他已知數(shù)據(jù)庫(kù)的操作。
為示意起見(jiàn),假定在數(shù)據(jù)庫(kù)內(nèi)存儲(chǔ)的下列多條目描述兩種不同打印機(jī)的存在。每個(gè)打印機(jī)可以包含與多條目中條目字段相關(guān)的屬性描述的某些性質(zhì)。在該假設(shè)實(shí)例中,第一打印機(jī)具有英文名稱“quick”和德國(guó)名稱“schnell”。如在實(shí)例中所示,它位于建筑物ABC層1的室1202并且具有相關(guān)的打印特性(例如ppm=10,dpi=600等)。這種打印機(jī)可以用下列多條目表示<pre listing-type="program-listing"><![CDATA[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]}]]></pre>
具有英文名稱“slow”并且位于建筑物XYZ層房間101內(nèi)的第二打印機(jī)也具有相關(guān)的打印特性(例如ppm=3,dpi=300等)。第二打印機(jī)可以用多條目表示如下<pre listing-type="program-listing"><![CDATA[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]}]]></pre>現(xiàn)在,假定要求搜索返回條目字段表示的某些屬性的所有打印機(jī)。例如如果用戶尋求位于建筑物“XYZ”內(nèi)的數(shù)據(jù)表示并且是彩色的打印機(jī),搜索中多模板可以表示如下<pre listing-type="program-listing"><![CDATA[Multi-Template 1 = {Location[floor = null, building = "XYZ", room = null], Printer [ppm = null, dpi = null, duplex = null, color= true]}]]></pre>用戶可以調(diào)用將多模板1作為參數(shù)提供的讀取操作。如果作用于包含多條目1和2的數(shù)據(jù)庫(kù),則由于所示多模板1匹配多條目2,所以代表來(lái)自前述實(shí)例的第二打印機(jī)的多條目2將返回。搜索引擎708搜索數(shù)據(jù)庫(kù),旁路不正確的類型項(xiàng)目,并且將存儲(chǔ)在條目字段內(nèi)的數(shù)值與請(qǐng)求模板中的數(shù)值進(jìn)行比較。因此它僅僅返回帶正確屬性值的那些。這種安全類型匹配使得不同類型對(duì)象可以存儲(chǔ)在同一數(shù)據(jù)庫(kù)內(nèi)并且高效搜索。
就采用安全類型屬性匹配的數(shù)據(jù)庫(kù)內(nèi)完成的操作而言,假定在處理某些特性的數(shù)據(jù)庫(kù)內(nèi)表示的所有項(xiàng)上要求類型安全修改。在這種情況下,可以采用條目/多條目修改操作來(lái)修改數(shù)據(jù)庫(kù)內(nèi)的項(xiàng)目。例如假定請(qǐng)求被公式化為將位于任何位置的黑白(彩色=假)打印機(jī)改變?yōu)橐?guī)定的分辨率(例如dpi100)并且去除它們的位置屬性?;仡櫼幌露鄺l目修改/刪除操作提取兩個(gè)參數(shù),確定數(shù)據(jù)庫(kù)內(nèi)哪一個(gè)多條目的多模板將被修改并且多條目專用于改變,這兩個(gè)參數(shù)可以提供用來(lái)代表這些變化。參見(jiàn)前述實(shí)例,多條目修改/刪除操作的第一個(gè)參數(shù)可以用多模板表示如下<pre listing-type="program-listing"><![CDATA[Multi-template 2 = { Location [floor = null, building = null, room = null],Printer[ppm = null, dpi = null, duplex = null, color= false]}]]></pre>不管位置如何該多模板尋找所有的黑白打印機(jī)。最后,為了將所有的多條目修改為具有100dpi分辨率并且去除位置屬性,利用下列請(qǐng)求初始化修改/刪除操作<pre listing-type="program-listing"><![CDATA[Multi-entry modify/delete (Multi-template 2, {null, Printer [ppm = null, dpi= 100, duplex = null, color = null]}}]]></pre>如在多條目修改/刪除操作方法中所述,搜索引擎在匹配多模板2的數(shù)據(jù)庫(kù)內(nèi)定位所有的多條目并且根據(jù)操作中的第二參數(shù)修改它們。來(lái)自上述實(shí)例的多條目1匹配用于操作參數(shù)內(nèi)的多模板2,并且因此多條目1按照操作的第二參數(shù)改變多條目1。該操作刪除位置屬性,用數(shù)值代替100代替dpi并且產(chǎn)生多條目1
<pre listing-type="program-listing"><![CDATA[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]}]]></pre>因此引擎在處理請(qǐng)求類型屬性的數(shù)據(jù)庫(kù)內(nèi)尋找所有的項(xiàng)目并且以安全類型方式修改,因此實(shí)現(xiàn)了類型安全屬性匹配。應(yīng)該指出的是,所示僅僅是示意性質(zhì)的。
對(duì)于本領(lǐng)字段內(nèi)技術(shù)人員來(lái)說(shuō),眾多的修改和變化都是顯而易見(jiàn)的。因此下列權(quán)利要求限定了本發(fā)明的精神和范圍。
權(quán)利要求
1.一種用于數(shù)據(jù)庫(kù)內(nèi)安全類型屬性匹配的方法,數(shù)據(jù)庫(kù)包括多個(gè)條目,每個(gè)條目由類類型定義并且包括多個(gè)類型字段,其特征在于所述方法包括提供類類型模板,模板定義了一組屬性;將模板屬性與一個(gè)或更多的多個(gè)條目的對(duì)應(yīng)字段進(jìn)行比較;根據(jù)比較確定模板是否匹配一個(gè)或更多的多個(gè)條目;以及根據(jù)確定識(shí)別匹配條目。
2.如權(quán)利要求1所述的方法,其特征在于比較步驟包括下列步驟比較模板的同一類類型或超級(jí)類型的條目。
3.如權(quán)利要求1所述的方法,其特征在于進(jìn)一步包括下列步驟修改數(shù)據(jù)庫(kù)以響應(yīng)匹配條目的識(shí)別。
4.如權(quán)利要求3所述的方法,其特征在于提供步驟包括下列步驟提供與第一模的板超級(jí)類型或相同的同一類類型的第二模板,第二模板定義了一組屬性;并且其中所述方法進(jìn)一步包括以下步驟修改匹配條目以反映第二模板的屬性。
5.如權(quán)利要求3所述的方法,其特征在于進(jìn)一步包括下列步驟刪除匹配條目。
6.如權(quán)利要求1所述的方法,其特征在于模板包含匹配對(duì)應(yīng)條目字段內(nèi)任何值的通配符數(shù)值。
7.如權(quán)利要求6所述的方法,其特征在于通配符屬性值為空值。
8.一種用于數(shù)據(jù)庫(kù)內(nèi)安全類型屬性匹配的數(shù)據(jù)處理裝置,數(shù)據(jù)庫(kù)包括多個(gè)條目,每個(gè)條目由類類型定義并且包括多個(gè)類型字段,其特征在于所述裝置包括提供類類型模板的提供單元,模板定義了一組屬性;將模板屬性與一個(gè)或更多的多個(gè)條目的對(duì)應(yīng)字段進(jìn)行比較的比較單元;根據(jù)比較確定模板是否匹配一個(gè)或更多的多個(gè)條目的比較單元;以及根據(jù)確定識(shí)別匹配條目的識(shí)別單元。
9.如權(quán)利要求8所述的裝置,其特征在于比較單元包括比較模板的同一類類型或超級(jí)類型的條目的比較單元。
10.如權(quán)利要求8所述的裝置,其特征在于進(jìn)一步包括修改數(shù)據(jù)庫(kù)以響應(yīng)匹配條目的識(shí)別的修改單元。
11.一種計(jì)算機(jī)程序產(chǎn)品,包含具有計(jì)算機(jī)可讀代碼的計(jì)算機(jī)可讀介質(zhì),用于數(shù)據(jù)庫(kù)內(nèi)安全類型屬性匹配的數(shù)據(jù)處理,數(shù)據(jù)庫(kù)包括多個(gè)條目,每個(gè)條目由類類型定義并且包括多個(gè)類型字段,其特征在于實(shí)現(xiàn)方式包括提供類類型模板,模板定義了一組屬性;將模板屬性與一個(gè)或更多的多個(gè)條目的對(duì)應(yīng)字段進(jìn)行比較;根據(jù)比較確定模板是否匹配一個(gè)或更多的多個(gè)條目;以及根據(jù)確定識(shí)別匹配條目。
12.如權(quán)利要求11所述的方法,其特征在于比較包括比較模板的同一類類型或超級(jí)類型的條目。
13.如權(quán)利要求1所述的方法,其特征在于進(jìn)一步包括修改數(shù)據(jù)庫(kù)以響應(yīng)匹配條目的識(shí)別。
14.一種計(jì)算機(jī)程序產(chǎn)品,包含具有計(jì)算機(jī)可讀代碼的計(jì)算機(jī)可讀介質(zhì),用于數(shù)據(jù)庫(kù)內(nèi)安全類型屬性匹配的數(shù)據(jù)處理,數(shù)據(jù)庫(kù)包括多個(gè)條目,每個(gè)條目由類類型定義并且包括多個(gè)類型字段,其特征在于產(chǎn)品包括提供類類型模板的手段,模板定義了一組屬性;將模板屬性與一個(gè)或更多的多個(gè)條目的對(duì)應(yīng)字段進(jìn)行比較的手段;根據(jù)比較確定模板是否匹配一個(gè)或更多的多個(gè)條目的手段;以及根據(jù)確定識(shí)別匹配條目的手段。
全文摘要
一種數(shù)據(jù)庫(kù)系統(tǒng),其中一個(gè)或多個(gè)條目數(shù)據(jù)庫(kù)存儲(chǔ)了多個(gè)條目。每個(gè)條目具有給定的類型,該類型定義了條目的字段。每個(gè)字段包含或識(shí)別帶相關(guān)屬性或數(shù)據(jù)的對(duì)象。每個(gè)條目的類型可以進(jìn)一步以方法的形式定義行為。作為另一子類型的條目類型繼承了它的超級(jí)類型的字段和行為,并且包含新增的字段并/或定義新的或修改的行為。條目可以以Java
文檔編號(hào)G06F12/00GK1298525SQ99805495
公開(kāi)日2001年6月6日 申請(qǐng)日期1999年2月25日 優(yōu)先權(quán)日1998年2月26日
發(fā)明者R·謝夫勒, K·C·R·C·阿諾德, J·H·瓦爾多 申請(qǐng)人:太陽(yáng)微系統(tǒng)公司