專利名稱:數(shù)據(jù)庫中原位修改的方法和系統(tǒng)的制作方法
有關(guān)申請本申請是1997年11月17日遞交的美國申請(U.S.Applicafion)No.08/971,529的部分續(xù)展申請,在此,通過引用作為參考。
下列美國專利申請(U.S.patent application)作為基礎(chǔ),在此,通過引用一并作為參考。
臨時美國專利申請No.60/076,048,題為“分布式計算機系統(tǒng)”,1998年2月26日申請。
美國專利申請No.09/044,923,題為“租用存貯的方法和系統(tǒng)”,代理律師檔案No.06502.0011-01000,并在同一天申請。
美國專利申請No.09/044,838,題為“分布式系統(tǒng)中租用委派證書的方法,設(shè)備和產(chǎn)品”,代理律師檔案No.06502.0011-02000,并在同一天申請。
美國專利申請No.09/044,834,題為“分布式系統(tǒng)中租用組員資格的方法,設(shè)備和產(chǎn)品”,代理律師檔案No.06502.0011-03000,并在同一天申請。
美國專利申請No.09/044,916,題為“租用故障檢測”,代理律師檔案No.06502.0011-04000,并在同一天申請。
美國專利申請No.09/044,933,題為“在基于事件的系統(tǒng)中傳送行為的方法”,代理律師檔案No.06502.0054-00000,并在同一天申請。
美國專利申請No.09/044,919,題為“分布式系統(tǒng)中延遲重構(gòu)對象和遙控裝載事件通知”,代理律師檔案No.06502.0062-01000,并在同一天申請。
美國專利申請No.09/044,938,題為“遙控方法調(diào)用的方法和設(shè)備”,代理律師檔案No.06502.0102-00000,并在同一天申請。
美國專利申請N0.09/045,652,題為“識別遙控方法用的確定性散列方法和系統(tǒng)”,代理律師檔案No.06502.0103-00000,并在同一天申請。
美國專利申請No.09/044,790,題為“分布式系統(tǒng)中決定遙控對象狀態(tài)的方法和系統(tǒng)”,代理律師檔案No.06502.0104-00000,并在同一天申請。
美國專利申請No.09/044,930,題為“分布式系統(tǒng)中完成有關(guān)遙控過程調(diào)用處理的可下載靈活代理”,代理律師檔案No.06502.0105-00000,并在同一天申請。
美國專利申請No.09/044,917,題為“掛起的繼續(xù)的遙控方法”,代理律師檔案No.06502.0106-00000,并在同一天申請。
美國專利申請No.09/044,835,題為“數(shù)據(jù)庫中多項目和多模板匹配的方法和系統(tǒng)”,代理律師檔案No.06502.0107-00000,并在同一天申請。
美國專利申請No.09/044,945,題為“數(shù)據(jù)庫中類型安全屬性匹配的方法和系統(tǒng)”,代理律師檔案No.06502.0109-00000,并在同一天申請。
美國專利申請No.09/044,931,題為“分布式系統(tǒng)中的動態(tài)查找服務(wù)”,代理律師檔案No.06502.0110-00000,并在同一天申請。
美國專利申請No.09/044,939,題為“提供分布式系統(tǒng)中與設(shè)備通訊用,可下載代碼的設(shè)備和方法”,代理律師檔案No.06502.0112-00000,并在同一天申請。
美國專利申請No.09/044,826,題為“簡便存取查找服務(wù)的方法和系統(tǒng)”,代理律師檔案No.06502.0113-00000,并在同一天申請。
美國專利申請No.09/044,932,題為“分布式系統(tǒng)中動態(tài)驗證信息的設(shè)備和方法”,代理律師檔案No.06502.0114-00000,并在同一天申請。
美國專利申請No.09/030,840,題為“對網(wǎng)格進行動態(tài)分布式計算的方法和設(shè)備”,1998年2月26日申請。
美國專利申請No.09/044,936,題為“持久共享存貯空間用的一種交互式設(shè)計工具”,代理律師檔案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)設(shè)計”,代理律師檔案No.06502.0120-00000,并在同一天申請。
發(fā)明的背景發(fā)明的領(lǐng)域本發(fā)明涉及數(shù)據(jù)庫系統(tǒng),尤其涉及數(shù)據(jù)庫系統(tǒng)中的項目存貯,本發(fā)明還涉及數(shù)據(jù)庫系統(tǒng)中采用的一套查詢匹配方法。
相關(guān)技術(shù)的描述當(dāng)今社會中數(shù)據(jù)庫系統(tǒng)的重要作用與日俱增。典型數(shù)據(jù)庫系統(tǒng)所能存貯的數(shù)據(jù)量以震驚速率增長,并能提供方便的、靈活的數(shù)據(jù)存取更為重要。然而,以優(yōu)化方式完成數(shù)據(jù)庫系統(tǒng)的設(shè)計工作極其困難。
數(shù)據(jù)庫設(shè)計中尤為重要的考慮是所存數(shù)據(jù)能廣泛適用于各種應(yīng)用,并且使用方式又能快速、簡便地進行改變。通常期望允許追加另外的數(shù)據(jù)類型或種類,而不十分影響數(shù)據(jù)庫系統(tǒng)的其他部分。
遺憾的是,很難改變用到的,分散在許多數(shù)據(jù)庫的各分路數(shù)據(jù),并允許追加數(shù)據(jù)類型和種類。修改會引起該數(shù)據(jù)庫系統(tǒng)的程序和其它部件一連串的變化反應(yīng)。因此實現(xiàn)的費用相當(dāng)昂貴。所以,數(shù)據(jù)處理還趨向于冰結(jié)在老的數(shù)據(jù)結(jié)構(gòu)中,此外,數(shù)據(jù)庫系統(tǒng)的設(shè)計者傾向于在設(shè)計的一個方面和設(shè)計的另一個方面進行許多復(fù)雜的權(quán)衡,導(dǎo)致費用比的優(yōu)化成果設(shè)計要少一些。
為進一步詳盡闡述,數(shù)據(jù)庫中存貯的信息通常有確切類型,即數(shù)據(jù)庫中存貯的一個記錄通常有一定數(shù)目和類型的字段,諸如關(guān)系數(shù)據(jù)庫的關(guān)系中的一個元組。定義每個字段存貯一特定類型的數(shù)據(jù),諸如字符串?dāng)?shù)據(jù),整數(shù)數(shù)據(jù),布爾數(shù)據(jù)或其它要求的數(shù)據(jù)類型。如果一個用戶要查看數(shù)據(jù)庫中的信息,該用戶必須查看精確的記錄類型(即,不同類型的記錄一般是獨立搜索的),這樣,如果搜索者感興趣的數(shù)據(jù)可能在幾個不同類型記錄的任一記錄中,則查找者必須預(yù)先知道可能存在哪些記錄類型,或有哪些明顯的途徑能詢問到全部類型。然后,為了找到感興趣的特定記錄,搜索者必須查遍所有可能的記錄類型,這使與搜索引擎相關(guān)的軟件復(fù)雜化,尤其是要限定所能維護的不同記錄類型的數(shù)目。
再說,數(shù)據(jù)庫一個記錄中的字段和其它記錄無關(guān)。這就減少了單個記錄所持信息的種類和數(shù)量,從而,數(shù)據(jù)庫局限于不能存貯和操作記錄集合的記錄。
此外,典型數(shù)據(jù)庫中的一個記錄除自身實際數(shù)據(jù)外常與特征無關(guān),例如,一旦找到數(shù)據(jù),但沒辦法把行為和記錄類型發(fā)生改變的記錄聯(lián)系起來,因此,允許程序用單一途徑對匹配返回的各種記錄實現(xiàn)記錄類型指定結(jié)果。
不管數(shù)據(jù)庫系統(tǒng)的其它方面,在數(shù)據(jù)庫中指定屬性或特性的常用方法是用一組簡單的“名稱,值”對,其中值要不限于字符串,要不為任意類型(“any”類型)無法限定這些“名稱,值”對的類型,不能強迫一個特定的名稱必須總有一特定類型的一個值。例如,一臺理想的打印機,“Speed”屬性表示該打印機每分鐘能打印幾頁,應(yīng)該強制成一個整數(shù),確保用戶不會設(shè)成別的什么,諸如“大約每分鐘10頁”或“8到10”,同樣問題亦會存在,只是值可能是任意類型的對象。在這種情況下,用戶可能設(shè)屬性為整數(shù)對象而不是字符串對象,但仍不可避免另一個用戶把字符串對象存入本該整數(shù)的屬性。
再說,以前的系統(tǒng)在不同屬性之間沒有強制關(guān)系(即,當(dāng)和僅當(dāng)另一個屬性存在時,這一個屬性才存在)。例如,打印機有三個示范性的屬性分辨率(每英寸有多少點),速度(每分鐘打印多少頁)和彩色(相對于黑白)。事實上,許多打印機能實現(xiàn)這些屬性的不同組合,例如一臺典型的彩色打印機可能是每分鐘5頁,每英寸600點,黑白;每分鐘7頁,每英寸300點,黑白;每分鐘1頁,每英寸300點,彩色。
有鑒于給定一個屬性可以有多個值,某些常規(guī)系統(tǒng)允許屬性有多個值,這些系統(tǒng)用下列方式表示該屬性為speed ={1,5,7}resikytuib={300,600}color ={true,false}但這并不表明屬性對之間的相互關(guān)系,明顯地,這并不表示和強迫下列三種關(guān)系{speed:1,resolution:300,color:true};{speed:7,resolution:300,color:true};{speed:5,resolution:600,color:false}。
相應(yīng)地,設(shè)想有這樣的數(shù)據(jù)庫系統(tǒng),允許多形項目,包含項目集合的項目匹配和操作,從而允許更有效搜索,并簡化存在許多不同類型情況下的軟件實施。還想有這樣一個系統(tǒng),項目可按照類型定義它們自己的行為。此外,希望有能在數(shù)據(jù)庫中有類型安全屬性匹配且能強制屬性間的相互關(guān)系。
本發(fā)明概要可以用本發(fā)明所述存貯和搜索數(shù)據(jù)庫項目的方法和系統(tǒng)來解決上面提出的問題。在一個實施例中一個計算機系統(tǒng)實施一個數(shù)據(jù)庫系統(tǒng),其中有一個或多個存貯眾多項目的項目數(shù)據(jù)庫。每個項目都有給定的類型,它定義了該項目的字段。每個字段包含或識作一個具有相關(guān)屬性或數(shù)據(jù)的對象。每個項目的類型可進一步用配置給項目的實施方法的格式定義行為。作為另一項目子類型的項目類型繼承了其母類型的所有字段和行為,并包含附加字段和/或定義新的或修改的行為。項目可以用JavaTM編程語言的JavaTM類來表達。同樣,在一個實施例中,每個字段表達成一定的類。
該數(shù)據(jù)庫系統(tǒng)可進一步采用一個搜索引擎。它允許依據(jù)數(shù)據(jù)庫的項目進行查詢。在一個實施例中,查詢包括一個讀操作,一個取操作和一個通知操作。每次查詢要求包含一個指明操作類型的命令和一個模板。該模板是一個項目對象,它具有某些或全部字段,這些字段被設(shè)置成必須能精確匹配的特定值。模板項目的其它字段可以指定成統(tǒng)配(Wildcards),其值是無關(guān)緊要的。多形項目和項目匹配技術(shù)有利于允許與模板項目類型相同或是模板項目的子類型的項目用匹配來完成查詢。這就允許有效搜索和搜索引擎的簡化實施。再說,搜索引擎并不要知道所有可能存在的子類型。最后,因為每個項目有一相關(guān)類,一個項目可以用可支持的一個或多個方法定義自己的行為。通過程序可懇求一特定項目的方法實施各種功能,諸如等價檢驗。
該搜索引擎可進一步配置生成一個項目索引。這些項目具有查詢共同指定的特征。即,該搜索引擎可檢測使用模式,并生成一個索引,該索引指向具有由接收模板共同指定屬性的項目,用這種方式能實現(xiàn)加急項目搜索。
此外,搜索引擎可進一步配置成用單個記錄存貯項目集合。這些項目集合可用模板集合來匹配。在一個實施例中,搜索引擎可進一步執(zhí)行在數(shù)據(jù)庫中原位修改一個項目或項目集合,而不用將該項目或項目集合移出數(shù)據(jù)庫。
附圖概述
圖1系用按本發(fā)明數(shù)據(jù)庫系統(tǒng)的分布式計算機系統(tǒng)框圖。
圖2為多個客戶與多個按本發(fā)明的項目數(shù)據(jù)庫之間的通訊示意圖。
圖3為包含按本發(fā)明特定類型字段的幾個項目示意圖,并示意說明為另一項目子類型的項目。
圖4為按本發(fā)明數(shù)據(jù)庫系統(tǒng)所支持各種操作的示意圖。
圖5為按本發(fā)明示范性模板項目示意圖。
圖6為在一個實施例中響應(yīng)按本發(fā)明一個讀/取請求時搜索特定項目數(shù)據(jù)庫中項目的流程圖。
圖7為按本發(fā)明數(shù)據(jù)庫系統(tǒng)的功能塊示意圖。
圖8為處理按本發(fā)明通知請求時搜索方法的流程圖。
圖9A和圖9B為實施按本發(fā)明索引方法的流程圖。
圖10為幾個多項目示意圖,其中每個多項目還包含項目字段。
圖11為按本發(fā)明數(shù)據(jù)庫系統(tǒng)所支持的各種多項目操作示意圖。
圖12為按本發(fā)明的示范性多模板示意圖。
圖13為按本發(fā)明多項目,搜索數(shù)據(jù)庫的方法流程圖。
圖14為按本發(fā)明多項目搜索實例數(shù)據(jù)庫的功能示意圖。
圖15為按本發(fā)明搜索方法處理多項目通知請求的流程圖。
圖16為在按本發(fā)明數(shù)據(jù)庫中的原位上修改項目和多項目的各種操作示意圖。
圖17為按本發(fā)明單項目修改操作流程圖。
圖18為按本發(fā)明多項目追加操作流程圖。
圖19為按本發(fā)明多項目修改/刪除操作流程圖。
圖20為與按本發(fā)明原位修改操作一起使用的通知操作流程圖。
附圖中舉例示出了本發(fā)明的特定實施例,下面將詳細加以描述,隨此很容易對本發(fā)明作種種修改和變換形式。因此,附圖和所作詳細描述不能將本發(fā)明限定為所揭示的特定形式,相反,應(yīng)當(dāng)用所附權(quán)利要求的限定來涵蓋落入本發(fā)明精神實質(zhì)和范圍的所有修改、等價和變換例。
發(fā)明的詳細描述按本發(fā)明的方法和系統(tǒng)存貯和搜索數(shù)據(jù)庫中的項目。每個項目有給定的類型。項目類型定義字段類型,且每個字段包含或認作給定類型的一個對象。這些項目可以用JavaTM編程語言的JavaTM類來表達。此外按照本發(fā)明的方法和系統(tǒng)還可存貯和搜索數(shù)據(jù)庫中的項目集合。一般來說,項目集合的搜索是用模板集合來完成的。在一個實施例中對項目或項目集合的操作可以在數(shù)據(jù)庫中原來位置上進行,而不需要把它們移出數(shù)據(jù)庫。
分布式系統(tǒng)現(xiàn)在轉(zhuǎn)向圖例,圖1中100是一個分布式系統(tǒng),其中可采用按本發(fā)明的多形項目,項目匹配和項目操作。圖1表示多個計算機系統(tǒng)101-103經(jīng)網(wǎng)絡(luò)105相互聯(lián)接。圖上畫的網(wǎng)絡(luò)105,例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)或互聯(lián)網(wǎng),它界于多種其它可能的通信信道之間。每個計算機系統(tǒng)包括一個存貯器和一個微處理器,圖例中存貯器120和CPU122都是計算機系統(tǒng)101的。存貯器120代表各種可能類型的存貯器,諸如硬盤、軟盤和動態(tài)隨機存取存貯器(DRAM)。安裝媒體126代表一個或多個CD ROM或軟盤(或別的存貯媒體),它們和計算機系統(tǒng)101連在一起。一般來說,安裝媒體126可存貯代碼和/或數(shù)據(jù)。它完成將要敘述到的搜索引擎部分和該數(shù)據(jù)庫系統(tǒng)的其它方面,并可用來把代碼和/或數(shù)據(jù)裝進特定的計算機系統(tǒng)。要注意在另一個實施例中按本發(fā)明的數(shù)據(jù)庫系統(tǒng)可在單臺,不聯(lián)網(wǎng)計算機系統(tǒng)中實現(xiàn)。
正如下面會詳細敘述計算機系統(tǒng)100實現(xiàn)的數(shù)據(jù)庫系統(tǒng)中將采用面向?qū)ο蠓椒▉泶尜A可能類型或子類型的項目。該數(shù)據(jù)庫還可存貯項目集合,所謂多項目,在講完單項目實施后會講到。數(shù)據(jù)庫的項目可以單獨存在計算機系統(tǒng)101的存貯器122中,亦可分布式地橫跨幾個不同系統(tǒng)的存貯器,諸如存貯器122和在計算機系統(tǒng)102和103中的類似存貯器。每個項目都有給定的類型,它定義了該項目的字段。每個字段包含或認作一個與屬性或數(shù)據(jù)相關(guān)的對象。每個項目的類型可進一步用項目配置實施方法的格式定義行為。當(dāng)項目類型是另一項目的子類型時,則它繼承其母類型的全部字段和行為并包含附加字段和/或定義新的/修改過的行為。
數(shù)據(jù)庫系統(tǒng)還采用一個搜索引擎,它可用軟件實現(xiàn),允許依據(jù)數(shù)據(jù)庫中的項目(或多項目,后面會講到)進行查詢。在一個實施例中,每個查詢包含一個模板,它給出給定項目關(guān)鍵字段值(或?qū)傩?。當(dāng)這些字段值與模板相應(yīng)字段匹配時造成一次成功的匹配。模板其它字段可以指定或統(tǒng)配(Wildcards),它的值是無關(guān)緊要的。計算機系統(tǒng)100采用的多形項目和項目匹配技術(shù)有助于允許查詢結(jié)果造成與模板項目同類型的項目匹配或是模板項目子類型的項目匹配,附加細節(jié)將忽略多形項目和項目匹配技術(shù),下面結(jié)合圖2-9進一步提供。
圖2是一對客戶(或用戶)202和204和多個項目數(shù)據(jù)庫206-208之間通訊流的示意圖。206-208中每個項目數(shù)據(jù)庫可分布式地橫穿分布式系統(tǒng)100的一個或多個存貯器子系統(tǒng),對202和204的每個客戶,配置成能向206-208中一個或多個項目數(shù)據(jù)庫提出查詢。還可進一步將客戶202和204配置成能把項目存(寫)入項目數(shù)據(jù)庫206-208,下面將進一步論討。圖2最后說明了事件捕捉程序210,它的功能,后面也會進一步討論。
項目匹配和操作圖3表示項目數(shù)據(jù)庫206-208中可能存有的多個項目實例。在一個實施例中,每個項目是用JavaTM編程語言的一個JavaTM類表達的對象構(gòu)成的一個定型組。關(guān)于JavaTM編程語言可參照1996.Addisou-Wesley中Ken Amold,JamesGosling所著JavaTM編程語言。JavaTM是Sun微系統(tǒng)公司在美國和其它國家的注冊商標(biāo),但要明白在另一實施例中,項目也可能定義成其它編程語言的類。
圖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都包括四個字段,但因字段類型不同,所以它們代表不同類型。
許多其他類型和子類型,隨特定應(yīng)用或數(shù)據(jù)庫的要求可進一步和該數(shù)據(jù)庫發(fā)生聯(lián)系。此外要注意到項目還可能是子類型的子類型。僅作為舉例用下列代碼說明用JavaTM編程語言定義的項目圖書購置用的“Request For Bid”對象public class RFB implements Entry{public Integer order number;\\定單號public String title;\\書名public Integer count \\數(shù)量}投標(biāo)的“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有關(guān)的對象310用項目2字段A相關(guān)對象314的同一類類型來表達。但是對象310和314各自相關(guān)的屬性或數(shù)據(jù)可能不同。還要注意到用各項目字段識別的對象根據(jù)定義類型可包含整數(shù)數(shù)據(jù),布爾數(shù)據(jù)、字符串?dāng)?shù)據(jù)、或別的所需類型數(shù)據(jù)。更要注意到因為每個字段與一個定型對象有關(guān),所以可隨意挑選可支持的方法,并通過外部刺激來完成數(shù)據(jù)操作。同樣,每個項目類型可支持一種或多種方法,后面將會講到。
回到圖2,如前所述,項目數(shù)據(jù)庫206,207和208中的每一個都可能存有大量各種子類型的項目??蛻敉ㄟ^一個寫操作把項目存入給定的項目數(shù)據(jù)庫206-208,并經(jīng)安裝媒體(即圖1的安裝媒體126)把項目追加到項目數(shù)據(jù)庫。
系統(tǒng)支持幾種追加操作,如圖4所示。尤其是除寫操作外,客戶或用戶還可以開始于“讀”操作,“取”操作和“通知”操作。
利用讀、取和通知操作查詢特定的項目數(shù)據(jù)庫確定在項目數(shù)據(jù)庫中是否已寫入一個帶有某些指定特征的項目,如果寫入了就會引起一個特定的動作。在一個具體實施例中通過使用模板做了這些查詢。模板是作為操作請求的一部分,它定義了操作感興趣項目的類型。讀操作可以起始于從項目數(shù)據(jù)庫中讀一個與有關(guān)模板匹配的項目。取操作類似于讀操作,但取操作是把與模板相匹配的一個項目從項目數(shù)據(jù)庫中移出。最后,通知操作是要登記即將輸入指定項目數(shù)據(jù)庫的、與相關(guān)模板相匹配的項目。當(dāng)匹配項目到達時,則通知客戶或指定的事件捕捉程序。下面還將提供每個操作的細節(jié)。
圖5表示示范性模板。一般說來,一個模板指定一個特定的項目類型,其字段要不有值(參照對象),要不“統(tǒng)配”。當(dāng)把項目數(shù)據(jù)庫中的一個特定項目考慮成對某模板的可能匹配時,該項目指定字段(不對應(yīng)模板的統(tǒng)配字段的字段)的屬性必須精確地與模板對應(yīng)字段指定的屬性相匹配(或處于可能的屬性范圍之中)。對應(yīng)模板“統(tǒng)配”字段的項目字段可以是任何屬性,且不影響匹配結(jié)果(即模板中的統(tǒng)配可與項目同一字段的任何值都匹配)。在一個實施例中一個統(tǒng)配用一個空參照值來指定。如后所述,與模板相匹配的項目類型可以是該模板類型的子類型。這樣,用該子類型定義的特定項目的所有字段都考慮成統(tǒng)配。這使一個模板可以與任何子類型的項目相匹配。要注意沒有統(tǒng)配的項目還可以是一個有效模板。
圖6表明在一個特定項目數(shù)據(jù)庫內(nèi)為響應(yīng)按本發(fā)明的一個讀請求或一個取請求,搜索項目方法的一種實施流程圖。如前所述,一個讀請求可起始于一個客戶(或用戶)讀一個與給定模板相匹配的項目。一個取請求可起始于把與給定模板相匹配的項目從項目數(shù)據(jù)庫中移出。
(1)項目匹配方法圖6所示步驟將連同圖7一起敘述。圖7描述采用圖6所示搜索方法的數(shù)據(jù)庫系統(tǒng)的功能。圖7的功能組元可通過圖1中一個或多個計算機系統(tǒng)101-103有關(guān)的軟、硬件組合來實施。步驟602期間,用戶702向數(shù)據(jù)庫管理程序704提交一個讀或取請求。給出的請求包括一個指定的模板,圖7中顯示了一個示范性模板706,數(shù)據(jù)庫管理程序704的搜索引擎708在步驟604期間相繼搜索項目數(shù)據(jù)庫710,確定在項目數(shù)據(jù)庫710中是否存在與模板相匹配的類型或子類型。如果項目數(shù)據(jù)庫中沒有項目是模板類型或模板子類型(步驟606),則數(shù)據(jù)庫管理程序704在步驟608期間返回給用戶702一個空值。
如果搜索引擎708確定在項目數(shù)據(jù)庫710中有一個或多個項目與模板的類型或子類型相匹配,則將選定項目(與模板同類型或是模板的子類型)的字段與模板706的對應(yīng)非統(tǒng)配字段作比較(步驟610),搜索引擎708忽略該選定項目中對應(yīng)模板統(tǒng)配字段的任何字段(步驟612),在一個特殊實施例中,搜索引擎708確定與項目每個非統(tǒng)配字段有關(guān)屬性或數(shù)據(jù)是否與對應(yīng)模板項目的屬性或數(shù)據(jù)精確匹配,如果任何非統(tǒng)配字段的屬性跟模板中對應(yīng)字段屬性不精確匹配,則決定該項目不匹配,要注意在另一實施例中模板的一個字段可指定值的一個范圍(不要求精確匹配),當(dāng)對應(yīng)字段的數(shù)據(jù)進入此范圍時則造成匹配。
(2)舉例在圖7所示例中,將模板706的字段C指定為統(tǒng)配。這樣,當(dāng)搜索引擎708為匹配項目而搜索項目數(shù)據(jù)庫710時,搜索引擎708首先確定項目數(shù)據(jù)庫中是否存在是模板706的類型或子類型的任何項目。如圖所示,項目1和項目2都滿足這個限定。然后,搜索引擎708選定兩個項目中的一個(例如,項目2),將它的字段與模板中的非統(tǒng)配字段作比較。搜索引擎708確定對應(yīng)項目每個對應(yīng)字段的屬性,模板的各個非統(tǒng)配字段是否有精確匹配,要注意因為將圖7中模板706的字段C指定為統(tǒng)配字段,則忽略項目2字段C的屬性,而不影響比較操作。同樣,還忽略用模板類型的子類型定義的任何項目的這些字段(即,雖然統(tǒng)配字段的屬性不匹配,但仍可出現(xiàn)匹配),如果找到一個匹配項目(所有非統(tǒng)配字段匹配),則搜索引擎708要不從項目數(shù)據(jù)庫710讀該匹配項目,并提交給用戶,要不將此項目移出項目數(shù)據(jù)庫710,這完全取決于請求是讀請求還是取請求。搜索引擎708搜索項目數(shù)據(jù)庫710直到要不找到一個匹配,要不將全部項目都檢驗過。如果搜索過數(shù)據(jù)庫中全部項目后沒找到匹配項目,則數(shù)據(jù)庫管理程序704給用戶702返回一個空值。(步驟616)(3)通知轉(zhuǎn)到圖8,它表示按本發(fā)明搜索引擎708處理來自用戶的通知請求所用實施方法的流程圖。如前所述,用戶發(fā)出一個通知請求,想要登記即將取得的,與一個模板相匹配的項目。當(dāng)取得匹配項目時,數(shù)據(jù)庫管理程序可隨意要不通知該用戶,要不通知事件捕捉程度(圖2)。當(dāng)用戶懇求一個通知請求時,要指定一個租借時間,表明數(shù)據(jù)庫管理程序704只能在多長時間內(nèi)登記該通知。如果超過指定的租借時間,則取消通知登記。
這樣,如圖8所示,當(dāng)數(shù)據(jù)庫管理程序704接受到一個新的通知請求時(步驟802),就開始監(jiān)視輸入項目,直到登記時間滿期為止(步驟804和806),如果有一個與模板相同類型或是模板類型的子類型的項目被寫入項目數(shù)據(jù)庫710(步驟808),就比較該項目的字段確定這些字段的屬性是否與模板非統(tǒng)配字段相關(guān)屬性相匹配(步驟810)和前面的討論一樣,輸入項目的統(tǒng)配字段或用模板項目子類型定義的字段都可被忽略(步驟812),如果出現(xiàn)一個匹配,則通知用戶或事件捕捉程度(步驟814和816),只要登記時間不滿期,就持續(xù)監(jiān)視追加的輸入項目。
(4)索引回到圖7,可進一步把搜索引擎708配置成為數(shù)據(jù)庫管理程序704接受到的查詢共同指定具有特征的項目,生成索引。也就是說,搜索引擎708可檢測到一個使用模式并生成一個索引720,它指向的項目通常具有由接受模板指定的屬性。作為一個實例,考慮這樣的情況,數(shù)據(jù)庫管理程序704接受到幾個查詢請求,每個請求都有各自的模板,它們可以和模板706同類型或是模板706的子類型,如圖7所示。在這種情況下,搜索引擎708可檢測在多個請求的每個模板中都指定字段A有相同的屬性值(如整數(shù)值1000)。在一個實施例中,將數(shù)據(jù)庫管理程序配置成能檢測許多查詢指定用的公共模板并可靠生成一個索引720。這個索引指向項目數(shù)據(jù)庫710中所有與公共接受模板相同類型或是其子類型的,且字段A都有公共屬性的項目。從而,當(dāng)接受到帶有一類似模板的新查詢時(即,字段A的值也指定為1000的模板),搜索引擎708可利用索引720快速定位與模板相匹配的項目子集,而不需要找遍數(shù)據(jù)庫中整個項目集合。
圖9A和9B表示索引方法的實例。如圖9A所示,對應(yīng)特定模板種類的項目索引可以這樣生成跟蹤請求模板(步驟910)并確定該模板是否有一個相關(guān)模式(即,用相同屬性或值指定一個非統(tǒng)配字段(或多個字段)的模板(步驟912))??梢宰鞒鲞@樣的決定。例如基于在特定時間內(nèi)接受具有相似模板的預(yù)定查詢數(shù)目,或基于接受一定比例的,相似模板查詢,當(dāng)搜索引擎708檢測到公共模板使用模式時,它為具有特定模板種類的項目生成一個索引(步驟914)。這樣,考慮上面的實例,搜索引擎708可以為所有與模板706同類型或是模板706的子類型的,且字段A值為1000的項目生成一個索引。
如圖9B所示,如果在步驟920期間接受到一個新的請求,如果對于這特定模板種類,不存在索引則執(zhí)行一次正常搜索(步驟922和924),如果對應(yīng)此新請求模板存在索引種類,則利用這個索引,找到有可能匹配項目的子集,且僅需在這子集中進行比較。用這種方式,可實現(xiàn)加急項目搜索。要注意搜索引擎708可隨后刪除這些索引,只要隨意地不再檢測到這種共同用法。
如前所述,一個項目類型可進一步定義一種方法,用這種方法在受到外部刺激(例如,與數(shù)據(jù)庫系統(tǒng)有關(guān)的處理項目的軟件程序)時引起一個特殊動作產(chǎn)生。這種特殊動作可能影響項目內(nèi)駐留的數(shù)據(jù)。此外,可能采用一種方法允許有效等價檢驗,決定一個特定項目是否等價于另一個項目(或等價于一個模板),即使數(shù)據(jù)格式可能不同。例如,存貯解壓視頻數(shù)據(jù)的一個項目可考慮成等價于另一個存貯該視頻數(shù)據(jù)壓縮格式的項目??赡芴峁Q定這些項目等價的方法,即使實際存貯的數(shù)據(jù)并不相同。(如,可以實行一種方法決定是否把對象都歸類開圖象相關(guān)的文件系統(tǒng)中具有相同下劃路徑名)。
還要注意到可以用一種特殊表示來存貯項目,包括對項目類和每個項目字段采用系列化格式。然后可將系列化格式的模板與系列化格式的項目作比較。最后要注意一個項目還可用另一個項目的字段來指定。
多項目和多模板匹配另一實施例執(zhí)行數(shù)據(jù)庫中項的操作和匹配,每個項定義了一個項目集合。這里所謂的項是指“多項目”,“多模板”(或“項模板”)是一個用作模板集合的項,用來與數(shù)據(jù)庫的項目匹配。本節(jié)將進一步敘述多項目對多模板的匹配以及涉及多項目和多模板的操作。多項目和多模板的許多行為類似于前面敘述過的單項目和單模板的行為。
圖10表示可存入任一項目數(shù)據(jù)庫206-208中的多個示范性多項目例。在按本發(fā)明的方法和系統(tǒng)中,每個多項目是一組項目,而每個項目是一定型的對象組,例如可用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所示多項目例,雖然所有項目都可能是同一類型,但與該項目字段相關(guān)的屬性或數(shù)據(jù)并不相同。還要注意雖然各多項目組元認作的項目有一個指定類型,但多項目只是項目的簡單集合,本身沒有特定類型。
因為多項目和多模板只是集合,所以用集合的任何合適表示都能表示。僅對實例,用許多編程語言,包括JavaTM編程語言在內(nèi),這合適表示就是一個數(shù)組。數(shù)組大小由多項目的項目數(shù)或多模板中的模板數(shù)給定。該數(shù)組的每個組元是一個項目(多項目情況)或一個模板(多模板情況)。
回到圖2,如前所述,每個項目數(shù)據(jù)庫206,207和208可存貯大量多項目??蛻粲脤懖僮靼讯囗椖看嫒虢o定的項目數(shù)據(jù)庫206-208,還可通過安裝媒體(例如圖1中的安裝媒體126),將多項目追加到項目數(shù)據(jù)庫,幾個追加操作,類似于單項目操作,也受到系統(tǒng)支持,如圖11所示。尤其是除寫操作外,客戶或用戶還可起始于“讀”操作,“取”操作和“通知”操作。
對多項目運行的讀,取,和通知操作,其方式和對單項目運行的讀,取和通知操作方式相同。在一個特定的實施例中,用多模板進行了這些查詢。多模板是作為操作請求的一部分,它規(guī)定了哪些多項目是操作感興趣的。如同單項目實施例,讀操作是讀出該數(shù)據(jù)庫中與給定多模板相匹配的那些多項目。同樣取操作亦完成了同樣功能,只是移走了談自該數(shù)據(jù)庫的多項目。因有興趣登記將取得的多項目,所以每當(dāng)數(shù)據(jù)庫中得到相匹配的多項目時,通知操作通知客戶或事件捕捉程序。
圖12表示多模板實例。一般說來,一個多模板指定組元包含已定義模板的一個特定多項目。圖12所示多模板1200有四個組元W,X,Y和Z,雖說多模板能有任意數(shù)的組元,但在本發(fā)明的實施例中,多模板1200的每個組元只包括一個模板1202。
(1)多項目和多模板的匹配方法通常,一個多模板要和一個多項目匹配,只需多模板中的每個模板在多項目中有一個相匹配的項目。多項目中的每個項目能和多模板中不止一個模板相匹配。例如,多項目中的一個單項目能和多模板中的所有模板相匹配,因此在多項目和多模板之間產(chǎn)生一個匹配,在決定一個多項目與一個多模板是否匹配的過程中必須將多項目的單個項目與多模板的單個模板相比較。多項目中單個項目與多模板中單個模板相匹配的方式和前面定義的單項目對單模板的匹配方式相同。
圖13是響應(yīng)該請求或取請求,在特定項目數(shù)據(jù)庫內(nèi)搜索多項目的實施方法流程圖。將結(jié)合圖14敘述圖13的步驟。圖14表明采用圖13搜索方法的數(shù)據(jù)庫系統(tǒng)功能。圖14的功能塊可用與圖1所示一個或多個計算機系統(tǒng)101-103相關(guān)的軟件、硬件組合來實現(xiàn)。在步驟1302期間,用戶702向數(shù)據(jù)庫管理程序704提出一個讀請求或一個取請求。給定的請求會包括一個指定的多模板,一個實例如圖14所示多模板1200。隨后數(shù)據(jù)庫管理程序704的搜索引擎708搜索項目數(shù)據(jù)庫710決定是否有任何與多模板相匹配的多項目駐留在項目數(shù)據(jù)庫710中。
為搜索項目數(shù)據(jù)庫710,搜索引擎708選擇項目數(shù)據(jù)庫710中的一個多項目與給定的多模板作比較(步驟1304)。然后,決定該多項目是否與該指定的多模板相匹配,搜索引擎708將該多模板中的每個模板和多項目中的每個項目作比較(步驟1306),如果對多模板中的每個模板都有一個匹配項目,則多項目與多模板相匹配(步驟1308)。多項目中的每一項目能與多模板中不止一個模板相匹配。如果能決定多模板中的每個模板在多項目中都有一個匹配項目(步驟1310),則多模板與多項目相匹配,并返回該多項目(步驟1312),此過程持續(xù)到數(shù)據(jù)庫中全部項目都被測驗過。
如果選定的多項目與操作提供的多模板之間沒能匹配,則搜索引擎708搜索項目數(shù)據(jù)庫710中的別的多項目(步驟1314)。如果在數(shù)據(jù)庫中找不到與多模板相匹配的多項目,則返回一個空值(步驟1316)。如果找到的匹配不止一個,則在一個實施例中返回一個多項目,而在另一個實施例中返回相匹配的多項目數(shù)。如果客房的原始請求是取請求,則將相匹配的多項目移出數(shù)據(jù)庫。但是如果原始請求是讀請求,則相匹配的多項目不要從數(shù)據(jù)庫中移出。
(2)實例圖14所示實例中,搜索引擎708選擇一個多項目(如多項目2),將此多項目的項目與多模板的模板作比較。在此例中,搜索引擎接受一個包括多模板1200的請求。
搜索引擎708決定多模板1200中的模板是否與項目數(shù)據(jù)庫710中選擇的多項目的項目相匹配、搜索引擎708將多模板1200的組元W中的模板與項目數(shù)據(jù)庫710中多項目2的組元E,F,G,H,I中的項目作比較,決定這些項目中是否有項目與該模板相匹配。如果搜索引擎708用多模板1200的組元W中的模板找到一個匹配,則它企圖找出對應(yīng)多模板1200的組元X中模板的匹配,它將多模板1200的組元X中的模板再次與多項目2中的每個項目作比較,直到找到一個匹配為止。應(yīng)注意即使組元E,F,G,H和I中的每個項目都已經(jīng)和多模板中的其它模板(即組元W中的模板)比較過了,還可能與此模板比較。如果找到對應(yīng)組元X中模板的一個匹配,則搜索引擎708以同樣方式檢驗多模板1200中余下的模板(在組元Y和Z中的模板)。因為每個項目可以不止與一個模板相比較,例如多項目2的組元E中的項目,它有可能和多模板1200的組元W,X,Y和Z中全部模板相匹配。如果多模板1200中的每個模板在多項目2中都有一個匹配項目,則多項目2與多模板1200相匹配。
與單項目操作一樣,如果找到一個匹配的多項目。則搜索引擎708要不從項目數(shù)據(jù)庫710中讀一個相匹配的多項目,要不把這相匹配的多項目從項目數(shù)據(jù)庫710中移出,并把相匹配的多項目提供給用戶。是否將相匹配的多項目移出項目數(shù)據(jù)庫取決于請求是讀請求還是取請求。搜索引擎708連續(xù)搜索項目數(shù)據(jù)庫710,直到找到一個匹配,或者檢驗過所有多項目,一個匹配也沒找到。如果搜索項目數(shù)據(jù)庫710中所有多項目后,沒找到一個相匹配的多項目,則數(shù)據(jù)庫管理程序704返回一個空值給用戶702。
(3)通知下面轉(zhuǎn)向圖15,它是搜索引擎708處理來自用戶的一個通知請求所實施一整套方法的流程圖。多項目情況下的通知操作與單項目情況類似,如前所述,用戶發(fā)出一個通知請求是為了有興趣登記即將到來的,與一個多模板相匹配的多項目。當(dāng)匹配的多項目到達時,數(shù)據(jù)庫管理程序704可隨意地通知用戶或者通知一個事件捕捉程序(圖2)。當(dāng)用戶懇求一個通知請求時,要指定一個租借時間,它表明數(shù)據(jù)庫管理程序登記該通知的時間有多長。在租借時間滿期后,撤消通知登記。
這樣,如圖15所示,當(dāng)數(shù)據(jù)庫管理程序704接受到一個新的通知請求(步驟1502)時,就監(jiān)視輸入的多項目,直到登記時間期滿(步驟1504和1506)。如果往項目數(shù)據(jù)庫710中寫入一個多項目,則搜索引擎708就決定此多項目是否與多模板相匹配。與前面的討論類似,如果多模板中的每個模板都能在多項目中找到一個相匹配的項目(步驟1508和1510),則發(fā)生一次匹配,被通知到用戶或事件捕捉程序(步驟1512)。數(shù)據(jù)庫管理程序704持續(xù)監(jiān)視追加輸入的多項目,直到登記時間期滿為止(步驟1504)。
原位項目修改另一個實施例還實現(xiàn)了在數(shù)據(jù)庫中按原位就地修改項目和多項目。按照本發(fā)明,此實施例是對項目/模板和多項目/多模板情況的一個推廣。在此項目的字段能按其在數(shù)據(jù)庫中的原來位置進行修改。在多項目情況,多項目中的字段也可以進行增、刪、改。所謂“原位”意味著修改是在數(shù)據(jù)庫中發(fā)生,而不必將要修改的項目或多項目從數(shù)據(jù)庫中移出。
按本發(fā)明的此實施例進行的原位修改操作包括“單項目修改”、“多項目追加”“多項目修改/刪除”和“通知”。圖16表示這些原位修改以及用戶為修改請求提交的信息。單項目修改操作改變了數(shù)據(jù)庫中某個項目的單個字段的值。多項目追加操作為數(shù)據(jù)庫中已有的某個多項目增加項目,而多項目修改/刪除則改變或刪除了數(shù)據(jù)庫中多項目的項目,通知操作,相對于原位修改,它是通知因數(shù)據(jù)庫中某個項目或多項目的改變而發(fā)生的匹配。通常,如圖16所示,操作請求的第一個參數(shù)是指定數(shù)據(jù)庫中要進行修改的項目或多項目,而第二個參數(shù)指定要進行的修改。
(1)單項目修改圖17是本發(fā)明實施單項目修改操作的流程圖。在結(jié)構(gòu)方面,亦可參照圖7。為了改變一個項目中單個字段值,用戶懇求一個單項目修改操作,用戶702將請求包括兩個模板(步驟1700,圖16),第一個模板1602用來識別數(shù)據(jù)庫中要修改的項目,而第二個模板1604用來修改此項目,并識別所做的修改。因為這兩個模板操作在同一項目上,既識別又修改,所以第二個模板1604和第一個模板類型相同,或者是第一個模板的子類型。在該實施例中,單項目修改過程可包括模板的類型檢驗。
首先,搜索引擎從用戶702的請求中接受到第一個模板1602(步驟1702),并在項目數(shù)據(jù)庫710中搜索與第一個模板相匹配的項目。當(dāng)將數(shù)據(jù)庫中的項目和第一個模板相比較時,按時前面討論的單項目和模板匹配進行匹配。如果數(shù)目數(shù)據(jù)庫710中沒有與第一個模板1602相匹配的項目(步驟1704),則搜索引擎給用戶702返回一個零,表示由于此操作,被改變的項目數(shù)(步驟1712)。
如果找到一個匹配項目,就用第二個模板1604按項目在數(shù)據(jù)庫中的原來位置修改此項目,也就是說不要因修改而將此項目移出數(shù)據(jù)庫。因為第二個模板1604與第一個模板1602類型相同,或者是第一個模板的子類型,而第一個模板1602與被修改項目的類型相同或是被修改項目的子類型,所以第二個模板1604與被修改項目的類型亦相同或者也是被修改項目的子類型。為了修改這匹配項目,用第二個模板1604中非空字段的值來替代該項目中對應(yīng)字段的值(步驟1708)。對應(yīng)第二個模板1604的空字段或統(tǒng)配(wildcard)字段的值保持不變。搜索引擎708修改了數(shù)據(jù)庫中的一個項目后,繼續(xù)搜索還要修改的項目。如果數(shù)據(jù)庫中還有與第一個模板1602相匹配的項目(步驟1710),則用同樣方式修改這些項目(步驟1708)。根據(jù)完成的情況,搜索引擎708返回一個數(shù)目,它代表此操作進行后,被修改的項目數(shù)(步驟1712)。
(2)多項目追加圖18是按本發(fā)明進行多項目追加操作步驟的流程圖。通常,多項目追加操作是把項目追加到數(shù)據(jù)庫中指定的多項目中。請求此操作的用戶702向搜索引擎708提供兩個參數(shù),一個多模板1606和一個多項目1608(參見圖16)。第一個參數(shù),多模板1606用來識別項目數(shù)據(jù)庫中要改變的多項目;第二個參數(shù),多項目1608是一項目集合,它將被追加操到項目數(shù)據(jù)庫中已識別的多項目中。采用前面敘述的多項目/多模板匹配,搜索引擎708在數(shù)據(jù)庫中搜索與用戶702給出的多模板1606相匹配的多項目(步驟1802)。如果沒找到相匹配的多項目(步驟1804),則搜索引擎708返回給用戶702一個零,它代表被追加項目的多項目數(shù)。
如果找到一個相匹配的多項目(步驟1804),則把用戶702提供的多項目1608指定的項目追加到項目數(shù)據(jù)庫710中被找到的、相匹配的多項目中,而不要把相匹配的多項目移出數(shù)據(jù)庫(步驟1808)。搜索引擎708在數(shù)據(jù)庫中追加了一個多項目后,繼續(xù)搜索還要改變的多項目。如果在項目數(shù)據(jù)庫710中還有更多的多項目能和操作請求中作為第一參數(shù)給出的多模板1606相匹配(步驟1818),則將操作請求中多項目1608的項目,以同樣方式追加到這些多項目中(步驟1808),最后搜索引擎708返回一個數(shù),表示追加過項目的多項目數(shù)(步驟1812)。
(3)多項目修改/刪除圖19是按本發(fā)明實施多項目修改/刪除操作方法的流程圖。多項目修改/刪除操作按照請求中多項目的項目,要不修改數(shù)據(jù)庫中多項目的項目或者把多項目中的項目從數(shù)據(jù)庫中刪除,當(dāng)搜索引擎708接受一個多項目修改/刪除請求,這請求包括兩個多模板,一個多模板1610和一個多模板1612,這兩個模板是作為請求的參數(shù)。(步驟1900,同時參見圖16)。用多模板1610識別項目數(shù)據(jù)庫710中要修改的多項目或者已經(jīng)有項目被刪除的多項目,而用戶702提供的另一多模板1612指定在一個相匹配的多項目中要修改或被刪除的項目。
請求中給出的多模板1612和多模板1610有同樣多的模板數(shù)。再有,多模板1612中每個單個模板和多模板1610中對應(yīng)模板有相同類型,或是它的子類型(也就是說,多模板1612中每個模板(ⅰ)和多模板1610中的模板(ⅰ)有相同類型,或是它的子類型)。比如,多模板1612中的第一個模板和多模板1610的第一個模板相同類型,或是它的子類型,1612的第二個模板就和1610的第二個模板同類型或是它的子類型,依次類推。不同于一個公共多模板,作為請求參數(shù)的多模板1612中的模板也可以是空值,這些模板將用來表明要從多項目中刪除,下面會講到。
搜索引擎708首先搜索與作為操作請求第一參數(shù)給出的多模板相匹配的多項目(步驟1902)。如果沒找到匹配,返回一個零,它代表被修改的多項目數(shù)(步驟1914)。
如果在項目數(shù)據(jù)庫710中找到一個匹配多項目,則用操作請求中的多模板1612來修改它。為了實現(xiàn)這種修改,按照多模板1612中的非空模板,用多模板1612中的每個非空模板改變項目數(shù)據(jù)庫710中相匹配多項目的對應(yīng)項目(步驟1908)。用前面討論過的單項目修改來完成這種改變,修改發(fā)生在項目數(shù)據(jù)庫中的原來位置,而不必把匹配的多項目移出數(shù)據(jù)庫。例如,如果多模板1612中的模板(ⅰ)不是空,則按照多模板1612的模板(ⅰ),用單項目修改方法修改被替換多項目中的項目(ⅰ)(圖17中的步驟1708,其中多模塊1612中的模板(ⅰ)就是模板2)。用模板(ⅰ)的非空字段的值替代現(xiàn)有要修改項目對應(yīng)字段的值。
對于給定多模板1612中的每個空模板,要刪除相匹配多項目中的對應(yīng)項目(即,對于多模板1612中的每個空模板(ⅰ)刪除要修改多項目中的項目(ⅰ)(步驟1910)。如果數(shù)據(jù)庫中還有與多模板1610相匹配的多項目,則重復(fù)這些步驟來修改項目數(shù)據(jù)庫中剩余的匹配多項目(步驟1912)當(dāng)搜索引擎708完成修改時,返回一個代表已被修改的多項目數(shù)的數(shù)(步驟1914)。
但當(dāng)處理多項目修改/刪除操作時,有這樣例外情況發(fā)生。在多項目/多模板匹配中,因為多項中的一個項目可以和多模板中不止一個模板相匹配,一個多項目可以匹配一個多模板,所以多項目具有的項目要比多模板具有的模板要少。如果這樣一個多項目匹配多模板1610,并按本發(fā)明的修改/刪除操作進行修改,則多模板1612中不止一個模板將用來修改或刪除被修改多項目中的單項目。在這種情況下,多模板1612中的任何這樣的模板(即對應(yīng)與要修改的多項目的項目相匹配的多模板1610的模板的模板)表明一個刪除操作(即為空)于是把要修改的多項目中的項目刪除。否則,如果多模板1612中所有這樣的模板表明修改操作,于是所有的模板都用于修改,修改次序由具有實施例決定,但總體上對修改/刪除沒多大關(guān)系。
(4)修改通知關(guān)于原位修改,在按本發(fā)明的另一實施例中,用戶能登記數(shù)據(jù)庫中感興趣的項目或多項目,并接受如前所述返回給用戶或事件捕捉程序的通知。在此實施例中,當(dāng)用戶通過提供一個模板或多模板,表達對數(shù)據(jù)庫中的項目或多項目的興趣時,搜索引擎708不像前面所說的那樣去監(jiān)視輸入的項目或多項目。當(dāng)執(zhí)行原位修改通知時,搜索引擎708監(jiān)視數(shù)據(jù)庫中已經(jīng)被改變或修改的項目或多項目。有關(guān)原位修改,前面的通知操作和現(xiàn)在的通知操作之間的主要差別在于監(jiān)視進入數(shù)據(jù)庫的輸入項目還是監(jiān)視數(shù)據(jù)庫中修改過的項目或多項目。但是通知的許多基本方面保持一樣。
通常,模板1614或多模板1616用來登記對改變項目和多項目的興趣。根據(jù)多項目或項目在原位修改期間的改變,搜索引擎708檢驗決定已改變的項目或多項目與登記的模板或多模板是否相匹配,或者已改變的多項目或項目是否從與模板或多模板相匹配轉(zhuǎn)變到不相匹配。因此,該通知操作搜索匹配狀態(tài)的轉(zhuǎn)變,可以是從匹配到不匹配,或者從不匹配到匹配。
下面轉(zhuǎn)向圖20,它是搜索引擎708處理來自用戶的一個通知請求監(jiān)視已修改項目或多項目的改變所實施一整套方法的流程圖。在這種情況下,用戶發(fā)出通知請求,有興趣登記數(shù)據(jù)庫中指定的項目或多項目,來決定他們是否改變了相對于所提供模板1614或多模板1616的匹配狀態(tài)。當(dāng)一個項目或多項目被修改,它的匹配狀態(tài)會發(fā)生轉(zhuǎn)變,從與模板1614或多模板1616匹配轉(zhuǎn)變到不匹配,或者從不匹配轉(zhuǎn)變到匹配。當(dāng)一個項目或多項目改變了它相對通知操作請求中的模板1614或多模板1616的匹配狀態(tài)時,數(shù)據(jù)庫管理程序704可隨意通知用戶或事件捕捉程序(參見圖2)。當(dāng)用戶懇求一個通知請求時,要指定個租借時間,它表明數(shù)據(jù)庫管理程序704將在多長時間內(nèi)登記該通知。指定時間期滿后,撤消通知登記。
這樣,如圖20所示,當(dāng)數(shù)據(jù)庫管理程序704受理一個新的通知請求時(步驟2002)在登記期內(nèi)一直監(jiān)視被修改的項目或多項目(步驟2004和2006)。如果項目數(shù)據(jù)庫710中一個項目或多項目被修改,則搜索引擎708決定修改過的該項目或多項目是否還與受理通知請求中的模板1614或多模板1616匹配(步驟2008到2010)。搜索引擎708決定被修改的項目或多項目是不轉(zhuǎn)變匹配狀態(tài),是從與請求中的模板或多模板匹配到不匹配,還是相反從不匹配到匹配。如果發(fā)生了匹配狀態(tài)的轉(zhuǎn)變,則要通知用戶或事件捕捉程序(步驟2012)。在登記期內(nèi),已經(jīng)被修改的追加項目或多項目繼續(xù)在原位受到監(jiān)視(步驟2004)。
類型安全屬性匹配按本發(fā)明的另一實施例包括屬性,它表示數(shù)據(jù)庫項目作為對象所能取的各種值。在此實施例中,通過屬性與項目字段相聯(lián)系,采用項目,多項目以及他們的操作就能實現(xiàn)類型安全匹配。類型安全匹配包含搜索數(shù)據(jù)庫中不同類型屬性,并允許屬性被牢牢定型。還進一步允許強制屬性之間的關(guān)系以及用類型有效參照和操作屬性。
采用類型安全屬性匹配,屬性和名稱相互嚴(yán)格相關(guān)(即,每分鐘頁數(shù)的屬性僅與打印機有關(guān))同時屬性和他們的值也嚴(yán)格相關(guān)(即每分鐘的頁數(shù)僅與整數(shù)有關(guān))類型安全屬性匹配還允許強制屬性對和他們的取值之間的關(guān)系,這就有可能在許多不同類型對象都存在單個數(shù)據(jù)庫中時可利用類型來有效搜索對象。此外,雖說在數(shù)據(jù)庫中存有許多不同類型的對象,但允許只對某一類型的對象進行修改。
按照本發(fā)明,通過項目字段的相關(guān)屬性。實現(xiàn)類型安全屬性匹配,項目字段內(nèi)存有的值是該相關(guān)屬性的值。因為這種情況下,一個項目,一組屬性可用JavaTM的一個類來替代,該類將組和單個屬性牢固定型。例如,下面舉例說明項目表示一般打印機,字段表示打印機屬性(即,每分鐘的打印頁數(shù),分辨率等)以及項目表示更一般的信息,諸如名稱,生產(chǎn)日期和物理位置public class Printer implement Entry {
Integer ppm; //頁數(shù)/分鐘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;//產(chǎn)品的型號/名稱String version; //產(chǎn)品的版本號}public class Location implements Entry{Integer floor; //層號String building; //樓號String room; 房間號}可以看出字段和項目嚴(yán)格定型,這些字段和字段類型總是與這些項目和項目類型相關(guān)。例如,“ppm”或“每分鐘的頁數(shù)”是“整數(shù)”型。
進一步描述用一個多項目實現(xiàn)項。利用一個多項目,典型打印機亦可描述成一組屬性集合。用這種方式描述一臺典型打印機,附加方面可包括諸如位置、名稱或機器類型,每個方面表示成多項目中的一個項目。上例中的項目集合形成一個多項目實例表示一臺典型機的屬性。
可用項目和多項目操作搜索和操作這些類型安全的屬性集合。這些操作包括取、寫、通知、讀、項目修改、多項目追加、多項目修改/刪除和修改通知。應(yīng)注意按本發(fā)明的數(shù)據(jù)庫系統(tǒng)還能完成其他眾所周知數(shù)據(jù)庫操作。
為示范起見,假設(shè)有兩臺不同的打印機,用下列數(shù)據(jù)庫中的多項目描述。每臺打印機可有用多項目中項目的字段相關(guān)屬性描述的某些特性。此例中,一臺打印機有一個英文名稱叫“quick”和一個德國名稱“Schnell”都與描述相關(guān),從例中看出,它位于ABC大樓一層1202房間,并有相關(guān)的打印特性(如ppm=10,dpi=600等),這樣一臺打印機用下列多項目表示Multi-Entry 1 ={Name [name ="quick",description="yada1",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房間,亦有相關(guān)打印特性(如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]}現(xiàn)在,假設(shè)要搜索返回具有項目字段表示的某些屬性的所有打印機。例如,如果用戶要尋找一臺數(shù)據(jù)庫里表示為位于XYZ大樓的彩色打印機、搜索中的多模板表示如下Multi-Template 1 = {Location[floor = null,building = "XYZ",room = null],Printer [ppm = null,dpi= null,duplex = null,color = true]}用戶可調(diào)用多模板1作為參數(shù)的讀操作。如果作用于包含多項目1和多項目2的數(shù)據(jù)庫,從前例看到,代表第二臺打印機的多項目2將被返回,因為在此可看出多模板1與多項目匹配。搜索引擎708搜索這數(shù)據(jù)庫,旁通不正確類型的項,并將項目字段值與請求中的模板值相比較。其結(jié)果,僅返回具有正確屬性值的多項目。這種類型安全匹配允許不同類型的對象存在同一數(shù)據(jù)庫,并能對這些對象進行有效搜索。
至于采用類型安全屬性匹配在數(shù)據(jù)庫中所能完成的操作,假設(shè)需要對數(shù)據(jù)庫中所有具有某些特征的項作類型安全修改。一種情況能用項目/多項目修改操作來修改數(shù)據(jù)庫中的項。例如假設(shè)格式化后的一個請求為將任何位置的全部黑白(彩色=假)打印機改變到一定分辯率(如dpi 100)并刪去位置屬性。再調(diào)用多項目修改/刪除操作取兩個參數(shù),一個多模板決定數(shù)據(jù)庫要修改的多項目,一個多項目表明要作的改變,這兩個參數(shù)能提供這些改變。參照前面的例子,多項目修改/刪除操作的第一個參數(shù)可用如下的一個多模板表示Multi-template 2={ Location [floor = null,building = null,room = null],Printer[ppm = null,dpi = null,duplex = null,color= false]}這多模板查找所有黑白打印機,而與他們的位置無關(guān)。最后為了修改所有多項目具有分辯率為100dpi的特性,并撤消位置屬性,該修改/刪除操作起始于如下請求。Multi-entry modify/delete(Multi-template 2,(null,Printer[ppm = null,dpi= 100,duplex = null,color = null}}]搜索引擎708找到數(shù)據(jù)庫中所有與多模板2相匹配的多項目,并根據(jù)操作中第二個參數(shù)修改它們,類似于在多項目修改/刪除操作方法中的討論。前例中的多項目1與操作參數(shù)中用的多模板2相匹配,所以根據(jù)操作中的第二個參數(shù)來改變多項目1。此操作刪除位置屬性,用值100替代dpi屬性,并給出修改過的多項目1Multi-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}}因此搜索引擎找到數(shù)據(jù)庫中所有具有請求類型的屬性的項,并用類型安全方式修改它們,這樣實現(xiàn)類型安全屬性匹配。要注意這里表示的實例只為了說明的目的。
一旦充分懂得上述揭示,對那些本行業(yè)技術(shù)熟練的人員,許多變動和修改將會顯而易見,下列權(quán)利要求被理解為包括所有這種變動和修改。
權(quán)利要求
1.修改數(shù)據(jù)庫中項目的一種方法,所述數(shù)據(jù)庫存貯許多由類類型組成并包括許多定型字段的項目,其特征在于,所述方法包括下列步驟給出請求,包括相同類型的第一模板和第二模板;查找數(shù)據(jù)庫中與第一模板相匹配的項目;以及在數(shù)據(jù)庫中按原位照所述第二模板的所述字段修改所述相匹配的項目。
2.如權(quán)利要求1中所述的方法,其特征在于,其中所述修改步驟還包括下列步驟用所述第二模板非空字段中的值替代對應(yīng)所述第二模板非空字段的所述匹配項目的每個字段。
3.如權(quán)利要求1所述的方法,其特征在于,還包括下列步驟重復(fù)所述查找和修改步驟,直到在所述數(shù)據(jù)庫中與所述第一模板相匹配的所有項目都被修改為止。
4.如權(quán)利要求3所述的方法,其特征在于,還包括下列步驟返回代表在所述數(shù)據(jù)庫中被修改項目數(shù)的數(shù)。
5.修改數(shù)據(jù)庫中項目的一種方法,所述數(shù)據(jù)庫存有許多項,每個項又包括許多定型的項目,其特征在于,所述方法包括下列步驟給出請求,包括第一多模板和第二多模板,所述第一多模板,在模板數(shù)目和類型上都與所述第二多模板相匹配查找數(shù)據(jù)庫中與所述第一多模板相匹配的項;以及在數(shù)據(jù)庫中根據(jù)請求中受理的所述第二多模板的所述模板按原位修改所述匹配項的所述項目。
6.如權(quán)利要求5所述的方法,其特征在于,其中所述修改步驟包括下列步驟根據(jù)所述第二多模板中所述非空模板修改對應(yīng)所述第二多模板中非空模板的所述匹配項中的每個項目。
7.權(quán)利要求5的所述方法,其特征在于,其中所述修改步驟還包括下列步驟從對應(yīng)所述第二模板中空模板的所述匹配項中刪除每個項目。
8.如權(quán)利要求5所述的方法,其特征在于,還包括下列步驟重復(fù)所述查找和修改步驟,直到所述數(shù)據(jù)庫中所有與所述第一多模板相匹配的項都被修改為止。
9.如權(quán)利要求8所述的方法,其特征在于,還包括下列步驟返回代表所述數(shù)據(jù)庫中被修改項數(shù)目的數(shù)。
10.?dāng)?shù)據(jù)庫中按項的原來位置追加項目的一種方法,所述數(shù)據(jù)庫存有許多項,每個項包括許多定型項目,所述方法包括下列步驟給出包括多模板和項的請求;查找所述數(shù)據(jù)庫中與所述多模板相匹配的項;將所述請求中接受的所述項的所述項目追加到所述數(shù)據(jù)庫的所述匹配項中。
11.如權(quán)利要求10所述的方法,其特征在于,還包括下列步驟重復(fù)所述查找和追加步驟,直到所述數(shù)據(jù)庫中與所述多模板相匹配的全部項都被修改為止。
12.如權(quán)利要求11所述的方法,其特征在于,還包括下列步驟返回代表所述數(shù)據(jù)庫中追加過項目的項數(shù)目的數(shù)。
13.通知匹配狀態(tài)發(fā)生變化的方法,所述匹配狀態(tài)在項目和模板之間隨數(shù)據(jù)庫中所述項目的所述修改而變化,其特征在于,所述方法包括下列步驟接受請求,監(jiān)視數(shù)據(jù)庫匹配狀態(tài)的改變,所述請求包括指定哪些項目要被監(jiān)視的模板;根據(jù)項目的修改,決定所述項目是否改變了相對所述請求中所述模板的匹配狀態(tài);以及返回基于所述決定通知匹配狀態(tài)的改變。
14.如權(quán)利要求13所述的方法,其特征在于,其中所述決定步驟還包括下列步驟決定所述項目是否從匹配所述模板轉(zhuǎn)變到不匹配所述模板。
15.如權(quán)利要求14所述的方法,其特征在于,其中所述決定步驟還包括下列步驟決定所述項目是否從不匹配所述模板轉(zhuǎn)變到匹配所述模板。
16.如權(quán)利要求13所述的方法,其特征在于,其中所述項目是項和所述模板是多模板。
17.如權(quán)利要求13所述的方法,其特征在于,其中所述接受步驟包括下列步驟接受請求,該請求包括租借時間,該租借時間表明所述數(shù)據(jù)庫被監(jiān)視的時間長度。
18.一種數(shù)據(jù)處理設(shè)備,其中有存貯許多項目的數(shù)據(jù)庫,其特征在于,所述數(shù)據(jù)處理設(shè)備包括提供部件,配置成提供包括同一類型的第一和第二模板的請求;查找部件,配置成在所述數(shù)據(jù)庫中查找與所述第一模板相匹配的項目;以及修改部件,配置成在數(shù)據(jù)庫中的原位根據(jù)第二模板的所述字段修改所述匹配項目的所述字段。
19.如權(quán)利要求18所述的設(shè)備,其特征在于,其中所述修改部件包括替代部件,配置成對應(yīng)所述第二模板中的非空字段用所述第二模板的所述非空字段中的值替代所述匹配項目的每個字段。
20.一種數(shù)據(jù)處理設(shè)備,其中有存貯許多包含許多定型項目的項的數(shù)據(jù)庫,其特征在于,所述設(shè)備包括提供部件,配置成提供包含第一和第二多模板的請求,所述第一多模板的模板數(shù)和模板類型都和所述第二多模板的模板相匹配;查找部件,配置成在所述數(shù)據(jù)庫中查找與第一多模板相匹配的項;修改部件,配置成在所述數(shù)據(jù)庫中的原位按照接受請求中所述第二多模板的所述模板修改所述匹配項的所述項目。
21.如權(quán)利要求20的所述設(shè)備,其特征在于,其中所述修改部件包括修改部件,配置成對應(yīng)所述第二多模板中的非空模板,用所述第二多模板中的所述非空模板修改所述匹配項中的每一項目。
22.如權(quán)利要求20的所述設(shè)備,其特征在于,其中所述修改部件包括刪除部件,配置成對應(yīng)所述第二模板中的空模板,從所述匹配項中刪除每個項目。
23.一種數(shù)據(jù)處理設(shè)備,它有存貯許多包含許多定型項目的項的數(shù)據(jù)庫,其特征在于,所述設(shè)備包括提供部件,配置成提供含有多模板和項的請求;查找部件,配置成在所述數(shù)據(jù)庫中查找與所述多模板相匹配的項;以及追加部件,配置成將所述請求中接受的所述項的所述項目追加到所述數(shù)據(jù)庫的所述匹配項中。
24.一種數(shù)據(jù)處理設(shè)備,它有存貯許多包含許多定型項目的項的數(shù)據(jù)庫,其特征在于,所述設(shè)備包括接受部件,配置成接受請求,監(jiān)視數(shù)據(jù)庫在項目和模板之間的匹配狀態(tài)有否改變,所述請求包括指定哪些項目要被監(jiān)視的模板;決定部件,配置成決定由于項目的修改,是否所述項目改變了相對所述請求中所述模板的匹配狀態(tài);以及返回部件,配置成基于所述決定,返回匹配狀態(tài)改變的通知。
25.權(quán)利要求24所述的設(shè)備,其特征在于,其中所述決定部件包括決定部件,配置成決定所述項目是否從匹配所述模板轉(zhuǎn)變到不匹配所述模板。
26.如權(quán)利要求24所述的設(shè)備,其特征在于,其中所述決定部件包括決定部件,配置成決定所述項目是否從不匹配所述模板轉(zhuǎn)變到匹配所述模板。
27.如權(quán)利要求24所述的設(shè)備,其特征在于,其中所述項目是項以及所述模板是多模板。
28.如權(quán)利要求24所述的設(shè)備,其特征在于,其中所述接受部件包括接受部件,配置成接受包含表明所述數(shù)據(jù)庫被監(jiān)視時間長度的租借時間的請求。
29.一種計算機程序產(chǎn)品,包括一種計算機可讀媒體,具有具體處理數(shù)據(jù)庫里數(shù)據(jù)用的計算機可讀代碼,其特征在于,所述處理數(shù)據(jù)庫里數(shù)據(jù)通過下列步驟進行提供請求,包含同一類型的第一和第二模板;查找所述數(shù)據(jù)庫中與所述第一模板相匹配的項目;按照所述第二模板的所述字段,在數(shù)據(jù)庫中的原位修改所述匹配項目的所述字段。
30.如權(quán)利要求29的所述產(chǎn)品,其中所述修改包括用所述第二模板的所述非空字段中的值替代對應(yīng)所述第二模板中非空字段的所述匹配項目的每個字段。
31.一種計算機程序產(chǎn)品,含有一種計算機可讀媒體,具有具體處理數(shù)據(jù)庫數(shù)據(jù)用的計算機可讀代碼,其特征在于,所述處理數(shù)據(jù)庫里數(shù)據(jù)通過下列步驟進行提供含有第一和第二多模板的請求,所述第一多模板的所述模板數(shù)目和所述模板類型都與所述第二多模板的所述模板相匹配;查找所述數(shù)據(jù)庫中與所述第一多模板相匹配的項目;以及按照在請求中接受到的所述第二多模板的所述模板,在所述數(shù)據(jù)庫中的原位修改所述匹配項的所述字段。
32.如權(quán)利要求31所述的產(chǎn)品,其特征在于,其中所述修改包括按照所述第二多模板中所述非空模板,修改對應(yīng)所述第二多模板中非空模板的所述匹配項的每個項目。
33.如權(quán)利要求31所述的產(chǎn)品,其特征在于,其中所述修改包括從對應(yīng)所述第二模板中的空模板的所述匹配項中刪除每個項目。
34.一種計算機程序產(chǎn)品,它包括一種計算機可讀媒體,具有具體處理數(shù)據(jù)庫中數(shù)據(jù)用的計算機可讀代碼,其特征在于,所述處理數(shù)據(jù)庫里數(shù)據(jù)通過下列步驟進行提供包含多模板和項的請求;查找數(shù)據(jù)庫中與所述多模板相匹配的項目;以及將所述請求中接受到的所述項的項目追加到所述數(shù)據(jù)庫中所述匹配項中。
35.一種計算機程序產(chǎn)品,它包括一種計算機可讀媒體,具有具體處理數(shù)據(jù)庫中數(shù)據(jù)用的計算機可讀代碼,其特征在于,所述處理數(shù)據(jù)庫里數(shù)據(jù)通過下列步驟進行接受請求,監(jiān)視數(shù)據(jù)庫中項目和模板之間匹配狀態(tài)的改變,所述請求包括指定哪些項目要被監(jiān)視的模板;根據(jù)項目的修改,決定所述項目是否改變了相對所述請求中所述模板的匹配狀態(tài);以及基于所述決定,返回匹配狀態(tài)改變的通知。
36.如權(quán)利要求35所述的產(chǎn)品,其特征在于,其中所述決定包括決定所述項目是否從匹配所述模板轉(zhuǎn)變到不匹配所述模板。
37.如權(quán)利要求35所述的產(chǎn)品,其特征在于,其中所述決定包括決定所述項目是否從不匹配所述模板轉(zhuǎn)變到匹配所述模板。
38.權(quán)利要求35的所述產(chǎn)品,其特征在于,其中所述項目是項和所述模板是多模板。
39.如權(quán)利要求35所述的產(chǎn)品,其特征在于,其中所述接受包括接受包含表明數(shù)據(jù)庫監(jiān)視時間長度的租借時間的請求。
40.一種計算機程序產(chǎn)品,它包括一種計算機可讀媒體,具有具體處理數(shù)據(jù)庫中數(shù)據(jù)用的計算機可讀代碼,所述計算機可讀媒體包括提供包含同一類型的第一和第二模板的請求的裝置;查找數(shù)據(jù)庫中與所述第一模板相匹配的項目的裝置;以及按照所述第二模板的所述字段,在數(shù)據(jù)庫中原位修改所述匹配項目的字段的裝置。
全文摘要
一種數(shù)據(jù)庫系統(tǒng),其中有或多個存有眾多項目的項目數(shù)據(jù)庫,各項目有給定的類型,它定義了此項目的字段。各字段包含或認作有相關(guān)屬性或數(shù)據(jù)的對象,各項目的類型還用該項目能實施的方法格式定義行為,凡是另一項目子類型的項目類型,繼承其母類型的全部字段和行為,且包含附加字段和/或定義新的/修改過的行為。項目可用Java
文檔編號H04L12/433GK1298524SQ99805368
公開日2001年6月6日 申請日期1999年2月25日 優(yōu)先權(quán)日1998年2月26日
發(fā)明者R·謝夫勒, K·C·R·C·阿諾德, J·H·瓦爾多 申請人:太陽微系統(tǒng)公司